srodrigo' Post

Lambda Calculus in Clojure (Part 2)

In Part 1, we built a boolean algebra using Church Encoding. In this post, we are going to reuse some of the previous work to build a similar algebra, this time for numerals.

Church numerals

In the algebra we built in the previous post, Church booleans were encoded using higher-order functions. The way Church numerals are represented is similar: given a number n and a function f, the Church numeral of n is the

Read More

Lambda Calculus in Clojure (Part 1)

Lambda Calculus is the smallest programming language. As we saw on my previous post, the only building blocks available are functions, variables and expressions. There are no built-in primitive values or operations. How can we then solve real-world problems using Lambda Calculus?

In this post, we are going to create a set of building blocks, using lambda expressions, to calculate boolean expressions. For this, we are going to use Clojure,

Read More

Falling into Machine Learning

Recently, I rediscovered my passion for Mathematics and Artificial Intelligence, which I used to hate during my degree in Computer Sciences. Lately, I’ve been focused on Software Design, Automated Testing, Microservices, and Functional Programming. I also love learning new programming languages, so I’ve been wondering whether to go deeper into Golang, Scala or Python. But, in the end, all of them are tools; tools for building what kind of things? In my case, my day-to-day

Read More

Lambda Calculus for mortal developers

Lambda Calculus for mortal developers

Lambda Calculus sounds like an arcane term that only functional programming wizards can understand. Nothing could be further from the truth. We use Lambda Calculus everyday when we program. It is the most reducible form of all Functional Programming languages; the primitive building block of Functional Programming.

The atoms of Lambda Calculus

Lambda Calculus is based on three basic building blocks: expressions, variables and functions, which are combined to form other expressions.

Variables are

Read More

Setting up Scala on Android

Scala can be used to build Android applications, as an alternative to Java or Kotlin. Unlike them, setting up an Android project in Scala with SBT is not straightforward, and can give us some headaches to get it right. To show how this can be done, we are going to create new project template using the Android SDK Plugin for SBT.


Required tools

In order to develop Android apps in Scala, you need a minimum set of tools:

Read More

The Rush Age

We live in the rush age. We are literally overwhelmed by the amount of things we have to do, both at work and outside it. We leave work and have a bunch of emails, Facebook notifications, tweets, text messages (among others), waiting for response. Even worse, we are in bed keeping an eye open looking at our mobile phone in case we get a new notification. This is ridiculous.

As software developers, the same thing

Read More

Was it worth writing automated tests?

This post is not about testing techniques. There is plenty of information about this topic out there, and I feel that repeating the same things would be redundant. If you want to learn how to write automated tests properly, go and read Uncle Bob, Martin Fowler, Kent Beck, Sandro Mancuso and some others. They’ve been testing for decades and share their knowledge in books, videos and articles. Go and read/watch them!


So… what is the point?

If I don’t

Read More

MVVM with Data Binding on Android

Now that Google has -finally- started working on a Data Binding engine, it’s time for me to start changing the way I use the Presentation Model pattern.

Why use Presentation Model?

It’s been talked a lot about this pattern, so I’m not going to re-explain the wheel. You can find useful references hereherehere and here. Very briefly, the main motivations to use this pattern are:

  • Moves the presentation logic into specific components.

    Read More

Hi everyone

This is the first post of my blog. I’m a software developer from Valencia (Spain). I almost like all kinds of programming, specially videogames/mobile programming. I’m currently focused on Android. I hope you will enjoy my posts!

Read More