In this series of articles, we explore features and techniques which may help developers starting or currently using Kotlin. In it, we compare them with their relevant ones in Java as many of us are moving forward from it.

We also look at the reasons behind some of the features…

This is part of a series of articles. You can find the rest here.

For better or worse, we still require inheritance when developing with Kotlin. However, things are a bit different, mostly for the better. …

This is part of a series of articles. You can find the rest here.

Most of us, who are lucky enough to be able to work with Kotlin often come from other programming languages. The vast majority also come from the beautiful and verbose world of Java.

However, things are…

Photo: me — Product:

Recently, I came across a component that relied on threads. I wanted to test it’s behaviour. However, soon I came across the issues that come with parallelisation (always have to look up how to spell that word).

val scheduler = Scheduler()
var result: String? = null

scheduler.schedule …

When I first started using Mockito, I was amazed at how it manipulates objects for tests. I used annotations to declare mock fields and then either use initMock on the setup method or a MockitoRule, as it was what most online tutorials explain to do.

public void setUp() {…

Part of the 3 peaks challenge, last leg going to Snowdonia

For the last two and a half years, at Moonpig/Photobox, I’ve been part of a great team dedicated to creating mobile solutions, always aiming for code and UI/UX quality. Now, it’s come the time to say goodbye and move on to new frontiers.

I started as part of a (brand…

Android Themes are not very intuitive, and I bet I’m not the only one that has spent a whole evening scratching my head figuring out why something that, on the surface, should be working is not. The documentation is scarce and confusing. Especially regarding style and theme inheritance.

There are…

Intents are an integral part of any app. Thanks to Kotlin, we can now simplify the way we can use them. All driven by Extension Functions. We touched on this back in my post about Extending Resources.

Starting an Activity

Let’s start with the most common case. If we are inside a Context

Loading bars and spinners are so last decade. And for a good reason. They can break the flow of a website or app. Facebook, for instance, started showing a “ghost” of what the content will look like:

The concept provides a smoother transition from the loading state to the actual…

In Java, static factory methods are useful to instantiate a Type when we don’t want to expose what implementation is produced. If we find a better way, or the business requirements change, we can change it internally without affecting the client of our Type.

It’s specially useful when our Type


Software Artisan

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store