functional programming

Functional Programming notes: Recursion

Recursion is a technique that allows us to break down a problem into smaller pieces. This technique allows us to remove some side effects that we perform while writting looping structures and also makes our code more expressive and readable. In this post we will see why is a very present technique in functional programming …

functional programming

Functional programming notes: Side effects

I am currently learning functional programming, and what better to write a series of posts related to that. Learning functional programming is hard for a object oriented programmer. There are a lot of concepts that you have to understand, to make it easier, I decided to publish my notes as small posts that I will …

Android / Testing

Approaching Outside-in TDD on Android (III)

In the previous post, we wrote the acceptance test as a first step and started creating the most external classes of our implementation. In this post, we will finish implementing the system, and will summarize what we have learnt during the process.

Inner loop continuation

To finish the BankAccount class, we need to implement its last public …

Android / Testing

Approaching Outside-in TDD on Android (II)

In the previous post, we introduced the Bank kata. We explained how we are going to implement it in Android, reviewed the different kinds of tests that we use in Outside-in and transformed a user story into a bunch of acceptance criteria.

In this second post, we will focus more on the practical side. We …

Android / Java

Approaching Outside-in TDD on Android (I)

Outside-in Test-Driven Development (TDD) can be a challenge to implement. In this 3-part post series, we would like to share our experiences applying it to Android development and offer some practical tips for doing so yourself.

As Android developers, we have been trying to apply the inside-out TDD style to our daily workflow but we thought …

Android / Development

Keyboard driven development

I learnt how to work with my intelliJ / Android Studio without using my mouse and what I most like is that I spend less time executing the actions that I need, like refactoring, managing files, etc and I am more focus in what is really important, the code.

Don’t let yourself get distracted

What do you …

presentation layer
Android / Architecture

Modeling my presentation layer

After modeling my domain layer here it comes, modeling my presentation layer. The reason for this post is that I saw in many projects that are moving from a legacy codebase to an MVP approach that there are some issues trying to differentiate what belongs to the presentation layer and what belongs to the UI …


Continous integration on Android with travis CI

Testing is trending topic. At least, in my twitter timeline and the guys that I’m used to talk about Android with.┬áThis is a good thing because testing is mandatory in a serious project, but assuming that all of us have tests added we can benefit from this by using it often.

If you are developing using …

sad code
Development / personal

Sad code

I’m pretty sure that you have in the past read some pieces of code that are not well done, or, at least, you had that impression. When you are reading a fragment of code for the first time, it is sometimes hard to understand because you are not the developer who wrote it, maybe you …

main thread
Android / Architecture

Say goodbye to all main thread problems in MVP

Months ago I created a sample project demonstrating clean architecture in Android, you can see it here. One of the main problems when I created this project was the threading, in Android if you do too much work in the Ui thread you have drawing problems and your Ui can seem unresponsive while you keep …