2016: Pariti, iOS developer
Syncs with the user's bank accounts to provide them with an overview of their financial state. The app shows what is safe to spend each week, and notifies them if their balance is running low.
I initially provided 1 month of holiday cover for the lead developer, but remained for another month working with them to modernise the app architecture. I introduced the Functional Reactive+MVVM pattern to help simplify some complicated user interactions.
Swift, ReactiveKit, MVVM
2016: BankingRight, iOS lead developer
A customer-facing banking product for iOS, Android and the web. I was the lead developer of the iOS app. We built reusable components which could be pieced together to create a complete app for each client. This meant building super-light and reusable ViewControllers, swappable ViewModels, etc, and having extension points for adding additional functionality per-additional client.
- Teaching idiomatic Swift development to an Objective-C focused team.
- Driving adoption of modern iOS best-practices: teaching Functional Reactive programming, how to use MVVM, the use of Swift Generics, Protocol Oriented Programming, Unit Testing.
- Building configurable View Controller components for a whitelabel product (the framework we built was deployed three times during the project, and is to be expanded to other applications).
- Assisted client in interviewing new candidates.
Swift, ReactiveKit, MVVM, Lead Developer
I've been working on a side-project named Tacks for several years and, though it's not faced fame and fortune (yet 😏), it has acted like a workbench on which to prototype and practise different and emerging techniques on the fast-moving and every-changing iOS platform: MVVM, then later MVVM-C (when we realised we needed some way to control navigation), ReactiveCocoa, ReactiveKit (much more handy), Protocol-Oriented Programming, Swift itself, the fastlane toolchain and so on.
I'll be launching 2.0 later this year.
Swift, ReactiveCocoa, ReactiveKit, MVVM
2015: Philips Health
HealthKit app with wearable watch
I joined a small, expert development team (CodeKrafters) hired by Philips to work onsite and re-write the iOS part of a personal healthcare product. The app gathers health information from many data-points provided by the user (as well as from external Bluetooth devices) and offers support and coaching on what changes the user can make to live more healthily. I worked with HealthKit, as well as built a number of detailed bespoke transition animations (used to move between screens). I drove the adoption of the MVVM pattern within the project.
2014: iBeacon proof of concept for Triple
Six week technical proof-of-concept
Sometimes I’m approached to quickly prototype an idea to test viability. In this instance, I was asked to build a proof-of-concept chat client which used (brand-new, at the time) iBeacon technology to both broadcast and detect when other iPhones (with that app installed) were close, so that public, transient conversations could be had between people in a crowd.
The main challenge was getting it to work whilst the app was in the background, as well as implementing a reliable iBeacon stack. I used the ReactiveCocoa framework here to model the Bluetooth interactions declaratively, minimising the amount of application state I would need to juggle, thus simplifying the task and allowing me to successfully deliver the project in a very short timeframe.
I also wrote a simple backend API using Ruby on Rails which powered the chat feature.
Objective-C, ReactiveCocoa, iBeacons, Ruby on Rails
2014: MijnTele2 App for Virtual Affairs
Customer utility app for major Netherlands telecoms operator: Check your spending on calls and text messages, keep tabs on your data usage, and view your invoices.
A beautiful app for streaming music and videos socially from around the web.
- Compelling UI, which was a joy - and a challenge - to build, especially on iOS6
- Synced playlists with API, containing content (music and videos) from many places around the web: YouTube, Soundcloud, Vimeo, etc.
- Written in RubyMotion, which was a requirement of the client.
- Party-jukebox feature, where users could all vote (on their own phones) on the next track to be played at the party.
RubyMotion, Ruby, Objective-C
2012: iSurvey Inventory
For efficiently auditing the contents of a house
I managed this entire project and worked directly with the client, even recording and producing demo videos of the app (with voiceover). iSurvey Inventory is a powerful, widely used iPhone app that allows estate agents to walk around a house and quickly audit it’s contents, recording any damage etc using the camera.
- Fully editable database of pre-added items and metadata.
- Pushes data to server to generate a large (60 pages+) PDF containing the data and photos.
- E-Commerce module for members to purchase ‘credits’ using SagePay on the website.
- Operates both offline and online, syncing with the server so that team members can access the PDFs from the website.
- Server-side code written in PHP using Zend Framework and Propel.
Objective-C, PHP, Zend Framework, Worldpay Checkout
Everything earlier than 2012 has scrolled off the bottom of time itself..