Enthusiastic engineer with four years experience architecting modern Android applications, with an expertise in Kotlin, MVVM, RxJava and Dagger. Current areas of interest include state management, architectural design, and Reactive programming with Rx.
Senior Android Developer (Contract)
Feb 2019 — September 2019
Verv Home Energy Assistant
- Implemented bluetooth on-boarding solution for connecting app to IOT device.
- Introduced CI/CD pipeline (Docker/Jenkins), including test support, build deployment, KTLint and automated releases.
- Held technical ownership role for two large cross-platform features, taking responsibility for engineering and business decisions.
- Introduced best practices for Android; Testing, Gradle build configuration, MVVM.
Apr 2017 — Feb 2019
Arsenal (Arsenal F.C.)
- Architected a modern Android project consisting of Kotlin, MVVM, Data Binding, RxJava and Dagger.
- Responsible for the Android application, leading the project through agile methodology while mentoring another developer.
- Solved client requirement for an offline-first architecture using Observer Pattern, Repository Pattern, RxJava data flows and Realm.
- Ensured codebase quality with unit/automation test coverage using Junit, Mockito and Espresso.
- Set up Continuous Integration pipeline including Ktlint, Kotlin doc generation, Fabric for automated release process.
F1TV (Formula 1)
- Architected a modularised OTT streaming app in Kotlin with 5 integrations; F1 for live race data via websocket, 21 video streams from NBC, CSG for authentication, GooglePlay for subscriptions and Skylark for dynamic CMS content.
- Synchronised multiple concurrent live video streams and race data every 100ms, handling delay, entitlement checks and recalibration with minimal user impact. Heavy use of Rx for managing data flow with Flowables and Publishers.
- Created authentication and GooglePlay in-app purchase library, which was consumed by third party app via Maven.
- Built Android/Amazon TV module which shared ViewModels, business logic and data package with the mobile app.
BBC Player (BBC Worldwide)
- Proposed MVP and RxJava architecture improvements, leading to more performant and faster networking solution.
- Migrated project to Kotlin, starting with data objects, eventually using Kotlin for every additional feature or fix.
Feb 2016 — Apr 2017
- Built a cross-platform, location-aware social app for cinema showings using Firebase as a backend.
- Built native group messaging solution, push notifications, video playback, friend system, and social sign in.
Delhaize and AB Click2Shop (Delhaize Group)
- Maintained two of the largest European supermarket apps in a single code base, partitioned with Gradle configurations.
- Pitched addition of Material Design and new SDK components to the client, leading to additional client spend.
- Android: Kotlin, Java, Gradle, RxJava, Live Data, Dagger2, Koin, Retrofit, Realm, Room, Live Data, Extension Functions, Sealed Classes.
- Architecture Patterns: MVVM, MVP, Clean Code, Data-binding, Lifecycle aware view-models, Observer Pattern.
- Integrations: Firebase Database, Firebase Remote Config, Analytics, AWS Lambda, Fabric, Jenkins, Urban Airship.
- Testing: TDD, JUnit, Espresso, Mockito, Mockk.
- Productivity: Jenkins, Docker, GitFlow, GitHub, BitBucket, Dokka, Jira, Confluence, Agile, Scrum, Target Process, Slack