Abstracting APIs

Assume you’re developing an XKCD comic browser on Android. The API offers two endpoints: info.0.json, which retrieves the JSON describing the current comic, comicNumber/info.0.json retrieves the JSON describing a specific...

Simple Java Puzzler

My first ever blog post was about Java operators I thought I knew. Ironically, after working with Java daily for the last couple of years, I still find things I...

Builders and Required Params

Ever since Effective Java 2 came out, the builder pattern became a defacto standard for instantiating objects with multiple parameters. NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8) .calories(100) .fat(0) .sodium(35) .carbohydrate(27)...

Creating AndroidDeviceNames

A few days ago, I open sourced AndroidDeviceNames, a tiny Android library that transforms the device model into a user-friendly name. For example, SM-N910W8 becomes Samsung Galaxy Note 4 with...

Sync folders with Python

Manually comparing and synchronizing two folders can be tedious. Add long, confusing and very similar filenames and it’s no fun at all. We recently faced a similar situation at work....