I'm a senior freelance iOS developer, based in Amsterdam, available to work remotely or onsite from any location in the world. I’m currently available from July 2018 onwards.
Specialities: I have a particular focus on Functional Reactive Swift (RxSwift and ReactiveCocoa), the architectural patterns they enable, as well as Realm & Core Data, CoreLocation, refactoring, simplifying and modernising old codebases, and teaching.
2017/8: Vhi Health Assistant, iOS Lead Developer
Vhi Health Assistant uses a video connection to connect patients face-to-face with an online doctor (pay as you go using Stripe), and so reliability, privacy and security were of paramount concern.
I built and led a team of six iOS developers. The entire management and development team was remote, distributed across 10 countries. Vhi had no prior mobile presence, yet starting this new project from scratch we were able to make two major releases during the year, to an audience of now tens of thousands of active users. It’s currently rated #1 in the “Medical” category of the Ireland iTunes App Store (June 2018).
Swift, RxSwift, MVVM, OpenTok, Stripe
2017: Tacks, (personal side-project)
Pinpoint the places you want to come back to. Tacks can quickly drop a pin by the places you find, allowing you to retrace your steps later.
I've been working on this app for several years and, though it's not faced fame and fortune (yet 😏), it has acted as a workbench on which to prototype and practise different and emerging techniques on the fast-moving and every-changing iOS platform, which I've then been able to use in my client projects. MVVM, then later MVVM-Coordinator (when we realised we needed some way to control navigation), ReactiveCocoa, ReactiveKit (much more handy), Protocol-Oriented Programming, Swift itself, the fastlane toolchain, automated UI testing and so on.
Swift, RxSwift, MVVM
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 one month of holiday cover for the lead developer, but remained for another month working with them to modernise the app architecture. I introduced and taught 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
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.
Objective-C, HealthKit, MVVM
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
Projects prior to 2012
Zonica: Share The Match (iPhone)
For socially predicting football scores
Zonica: Enjoy Publishing magazine platform (iPad)
For publishing fullscreen magazine content on iPad
Zonica: Audi Concierge (iPad)
An enterprise-only app for Audi to use at car expo events
Gospelware: GCSEPod (iPhone)
For school children in the UK to browse GCSEPod's educational content (to help their with revision).
Walton Robinson Lettings (iPhone) - no longer available
To browse Walton Robinson's property listings
NYCCompass (iPhone) - no longer available
Stud-Lets (iPhone) - no longer available
My first app 😇 - For browsing the student properties listed by Stud-Lets