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, and so on.
I'll be launching 2.0 later this summer.
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
<2012 has vanished into the mists of time..