Photo credit: Niv Singer

Initially released as an alpha during early May 2021, Jetpack’s App Authenticator library is an exciting addition to the ever growing list of security libraries coming from Android’s Jetpack team.

But what is its purpose? In the libraries own words it states the following:

AppAuthenticator is a new library aimed at simplifying verification of app trust based on signing identity.

In slightly plainer English, AppAuthenticator allows developers to query other applications and verify their signing identity against an expected result at runtime. An app's signing identity is the SHA-256 of the keystore used to sign the app and whilst the…


Photo Credit: Jeremy Yap

It’s 2021 and the COVID-19 pandemic is still raging on, causing untold turmoil and meaning “life as we previously knew it” to be a long-forgotten thing of the past. Many of us globally have been forced to reconsider the ways we work, the ways we travel, and even the way we live our daily lives.

However despite this struggle, for developers, there may be a game-changer right around the corner…

The Background

Note: This post focuses on Android Studio and mobile development, but this is applicable for most, if not all of IntelliJ’s IDE products!

I am drawing a lot from personal…


Credit: Dawson Lovell

Hello and welcome to my final post of 2020, a year that has been full of ups and downs, face masks, viruses, and some seriously strange goings-on within an Android project I maintain.

This post is a fun retrospective on an issue faced within the said project, how it was discovered, and the steps taken to ultimately fix it. I hope it’ll serve as a guide on how to approach such an issue (or not) and also provide you with some useful tips to avoid these issues in your own projects.

For the sake of clarity, the views expressed in…


Photo credit: Andrew Buchanan

Disclaimer: In a part of this post, we will look at how to generate a report of our Gradle project’s dependencies with their available upgrades. My experience with this was in an Android multi-module project but it should apply to just about anything that uses Gradle.

The Backstory 📚

At work as part of a new development cycle, I was asked to make a note of my app’s dependencies, their versions, whether an update to them was available and report these to the dev team and the project owners for review.

Wait, hold on. You want this for ALL of the dependencies? 😬


Photo by Karim MANJRA on Unsplash

This is part two of my mini-series on programming finite state machines. If you have yet to check out part one, I highly recommend tackling it before moving on to this part.

In this part, we shall move on to defining and implementing ‘delta hat’, better known as the ‘extended transition function’, a function that takes a DFA and tests whether a sequence of inputs is part of the language the DFA represents.️

☕️️️ Hold on to your delta hats, here comes the mathematics ☕️

Mind your language

First, let me do some housekeeping. Going forward we shall be calling inputs such as…


Source: Pixabay

Recently I have been re-reading some of my notes from my Computer Science degree, in which one particular second-year course immediately caught my attention. The course focused on, amongst other things, finite state machines and their role in theoretical computer science ¹.

It got me thinking “Could I implement these in Kotlin and how might they be useful in the real world?”, a question I immediately felt I had to set out and answer. However, having graduated from university six years ago and with little exposure to ‘finite state machine’ or ‘automata’ theory since, there is a lot to cover…

Ed George

Senior Android Developer @ ASOS

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