Current Projects

  • dnb.london

    dnb.london promotes the best Drum and Bass music through mixes, news and interviews.


    As bedroom DJ in my spare time I wanted to run a website that allowed me to share my passion for this genre. I aim to publish new mixes, news and reviews on regular basis.


    I built the site using a static site generator (Jekyll) and host it on Firebase. This simple stack means it’s easy for me to maintain and update with new content which is the most important thing for me.

  • I Should Have Remembered That

    If you’re familiar with language learning you’ll realise that once you’ve nailed the basics of the language your attention quickly shifts to cramming in as many new words as possible. Spaced repition is a great way to maximise you’re ability to learn as many new words as possible.


    When I was learning Italian I found that the existing spaced repition tools felt quite old and clunky. Naturally as an engineer, I decided to see if I could build my own flashcard app.


    The Android app is written in Kotlin using Coroutines, Retrofit, Room, LiveData and other modern app architecture components. Currently, all the data is stored locally using SQLite on the user’s device, in the future I plan to add the ability to access your flashcards across all your devices.

Recent Projects

  • LiveData Extensions

    LiveDataExtensions is a small Android library that I wrote to simplify writing complex LiveData transformations. This library extends the default LiveData library provided by Google and adds the ability to perform maps on multiple LiveData instances together without needing to nest single map statements.


    The library is available on Github with an Apache V2 license.

  • Gym Tracker

    Gym Tracker is an app I built to allow me to track my workouts. At the time I built this, I was powerlifting most days and felt like none of the thousands of existing gym apps met my needs. I wanted something simple and easy to use that made tracking my workout effortless and rewarding.


    I never ended up launching the app as I realised that I could roll it into part of a wider business venture - The Weightlifting Club which I’m actively working on today.


    Like most apps I’ve built recently, it’s written in Kotlin using modern app architecture components like Coroutines and Room. The app uses SQLite for local persistence but will be connected to a remote backend as part of its integration into The Weightlifting Club.

  • Enhanced Adapter

    If you’re familiar with writing modern Android apps you’ll know that there’s a lot of boilerplate code involved when using RecyclerViews.


    EnhancedAdapter is a small Android library that removes this boilerplate code by abstracting it away from you. It also supports observing LiveData and updating the list items automatically without you needing to observe and post updates yourself.


    This library came about after I found myself making the same abstractions in each project I worked on and realised that others would benefit from a library here. It’s available under the Apache V2 License.

Old Projects

  • L Dialogs

    L-Dialogs was an Android library that provided back compatability for the style of dialogs added in Android Lollipop.


    This is my most popular library on Github with close to 600 stars and was my first experience of using Github for open-source projects.

  • 2048 Desktop

    A desktop version of the popular 2048 game that’s written in python. This version of 2048 also has some extra features like support for undoing, saving and loading game state.


    I built this in an evening several years ago on my Christmas break at university to get more familiar with writing python.

  • L Navigation Drawer

    L Navigation Drawer was an Android library that provided back compatability for the style of navigation drawer added in Android Lollipop.


    Like L-Dialogs, this proved to be a really popular library on Github with over 100 stars.