Sign in

Matt Dolan has been eating doughnuts and developing with Android since the dark days of v1.6.
Photo by Lagos Techie on Unsplash

As an Android developer, open-source software underpins everything I do. So it only seems fair I commit personal time in October (and throughout the rest of the year) to the open-source community.

For the last few years, I’ve taken part in Hacktoberfest as it helps me focus on my open-source…


Photo by Sven Mieke on Unsplash

Material Design has always specified that top app bars can be positioned at the same elevation as content until that content scrolls, with Material Components for Android providing the app:liftOnScroll attribute.


Photo by Todd Kent on Unsplash

The auto-import functionality of Android Studio is often cluttered, presenting the user with imports for deprecated classes. For example, even though junit.framework.Assert is deprecated, the IDE still provides it as a choice when auto-importing and auto-completing on assertEquals:


Photo by Jeremy Thomas on Unsplash

When I think about MVI, the process boils down to three key concepts:

  • A unidirectional cycle of data — i.e. data flows in one direction
  • Processing of intents is non-blocking
  • The state is immutable — outside of the Model (typically a ViewModel on Android)

Conceptually MVI is not complicated, so…


Image by Dan Nelson from Pixabay

When updating my Android caching library, layercache, with built-in support for the new Jetpack SecurityEncryptedSharedPreferences I started to write unit tests using Robolectric, but soon came across the exception java.security.KeyStoreException: AndroidKeyStore not found.

Usually, shadows come to mind when faced with issues like this, but in this article, we will…


It’s hard to write an app in Android without coming across the need to serialise data using either Parcelable or Serializable. …


This 3-part mini-series talks a little bit about the technical choices I make when building an app, specifically an A-Z app, to go at least some of the way to describe some aspects of what makes a (technically) great app.

  1. UI
  2. Code quality
  3. Architecture

Architecture

It doesn’t matter whether you use…


To protect our apps from man-in-the-middle attacks one of the first things that usually springs to mind is certificate pinning. Indeed, in early 2017 I published an article that discusses implementing SSL Pinning on Android.

At the time little did I know that in late 2017 Google were to announce…


This 3-part mini-series talks a little bit about the technical choices I make when building an app, specifically an A-Z app, to go at least some of the way to describe some aspects of what makes a (technically) great app.

  1. UI
  2. Code quality
  3. Architecture

Code quality

The quality of the code is…


This 3-part mini-series talks a little bit about the technical choices I make when building an app, specifically an A-Z app, to go at least some of the way to describe some aspects of what makes a (technically) great app.

  1. UI
  2. Code quality
  3. Architecture

In mid-2017 my daughter was born…

Matthew Dolan

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