Picture by Fabian Grohs on Unshash.com

As we move towards a paperless word, I find an increasing number of invoices come to me through email. This works out great for me, as I can just archive them in my email or online in cloud storage. This means all my invoices are in one place, ready for tax time. I don’t have to worry about scanning a piece of paper, then archiving the piece of paper or destroying it safely.

There is however a minor drawback; one that bothers me endlessly. Why can’t I just see how much I have to pay without: downloading an attachment; leaving…


A few days ago I wrote an article on how to implement form validation using MVVM and data-binding. The idea here wasn’t to teach form validation, MVVM or data-binding, but rather to give a comprehensive example of how MVVM with data-binding can be used for complex requirements. I got a lot of questions from people about how can we have separation of concerns between ViewModel, Model and UI in the case of something like a RecyclerView. The short answer is that it’s possible, though it requires some thinking ahead.

RecyclerView functionality

Like before, while I try to provide a list of techniques…


A simple login form using MVVM with 2-way data-binding (all using Jetpack)

There is a lot of information on the internet on how to do validations and form in Android using MVVM. I’ve however found a lot of these example don’t quite cover the feature set I would like, so I decided to create the example(s) I was seeking.

TL;DR

The issue with incomplete examples is that they result in a lot of developers defaulting to what is familiar and this results in them making decisions that violate the spirit of MVVM. When using the MVVM pattern, if I find myself holding a reference to Activity or Fragment in my ViewModel, I re-evaluate…


As a developer, one of the first obstacles to overcome when starting a new platform is to understand the framework and how your projects are structured. This is followed by understanding how to deploy code and secure code in a test or production environment.

The goal of this article is to get your started as a developer on Ethereum. We will aim to familiarise you with the tools required to setup your development environment and to deploy a smart contract on Ethereum. You don’t need to have an understanding of Solidity or how to write a smart contract at this…


There are 8 areas in app development that I have found are often ignored by designers and developers. This may be because they would rather go with an implementation of convenience, or because they are “micro-interactions” and just not sexy enough for anyone to waste any brain power on when you are pressed for time or you have short deadlines. Some of these may not come across as a surprise to you. This is because Google has been telling us for a while now to not ignore these areas. What is interesting though, is that as I began to list…


There seems to be a lack of information out there about how to publish an Android library written in Kotlin to jCenter. If you search on how to publish an Android library to jCenter, you may have come across this post that claims to have a solution. While that solution probably worked at some point, it currently does not work. However, it does provide an important hint we can use to fix my favourite way to publish a library.

My personal favourite post on how to publish a library in Android is an article on inthecheesefactory.com. If your library is…


When using react.js, do you run webpack-dev-server and find that when you change your files, webpack-dev-server does not automatically rebundle your project? Instead you find yourself having to run webpack -d --watch along with webpack-dev-server in order for changes to your files to be visible?

This seems to be a rather common issue, it even has a bug filed against webpack-dev-server for this issue and the conversation on that bug report started in 2014 and is still going on to this day.

For the maintainers part, they have repeatedly mentioned on this thread that:

The webpack-dev-server doesn’t write to disk…


It’s hard to believe for those who aren’t well versed in movie making, but movies do have a colour palette — just like apps. When done well, the colour palette is seamless and adds to the story, when done badly, it can look garish, distract the audience.

There are a lot of different styles when it comes to choosing a colour palette for a movie. I’m going to limit our discussion to just a few ways cinematographers and directors use colour palettes and hopefully show how this is analogous to building web or mobile apps.

Colour to convey emotions

Building a palette involves selecting a limited range of colours from colour spectrum. If you have a hard time believing that colour can be use to add to a narrative, then consider this screen grab from American Beauty (1999).


We’re talking micro-service style API, and browser side scripting in Kotlin (Kotlin2JS)

Since Kotlin is now an officially supported language for Android, it only stands to reason that people will start to adopt Kotlin faster than Angelina Jolie can adopt children from Africa. Most of us are aware of the fact that we can just drop in Kotlin in to any Java/J2EE project in a rather frictionless manner. However, as was made clear at the Google I/O session on Kotlin, Kotlin can be interpret down to JavaScript and Objective-C as well. This means, you can have an API, web-app, Android app, iOS app and use nothing but Kotlin to get there. …


Developers have a hard time wearing a users hat. We know how much work animations and transitions are, and as such, we are often doing a cost versus benefit analysis in our head when it comes to animations and transitions. We can be forgiven for concluding that transitions don’t add much to the usability of the app.

Usability is not the same as user experience

If you think of apps as simple tools to get a task done, then yes, transitions and animations may not add much to your app. However, we have come a long way since the late 2000’s and app development is now more about…

Ali Muzaffar

A software engineer, an Android, and a ray of hope for your darkest code. Residing in Sydney.

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