Portfolio
Traverse: Explore Your World


Traverse lets you collect your runs, cycles, and explorations on the world map. Tracking a new area reveals it on the map and lets you know where you still need to explore. Fully written in Swift.
Uses the following:
- CoreGraphics for masking unexplored areas
- MapKit for the world map
- Strava API for syncing activities
- CoreLocation for activity tracking
- In-App Purchases for monetization
raywenderlich.com

I write for raywenderlich.com, the most popular iOS tutorial site on the Internet.
Zen Breath


An iOS client for a blog named Zen Habits. Written in Objective-C and published to the iOS App Store.
Uses the following:
- Core Data to store posts
- Cocapods for third-party dependencies
- In-App Purchases and Google AdMob for monetization
- Google Analytics to provide user insights
Hush Time


A macOS app written in Swift. Select the apps you’d like to close, choose a duration for your focused block of time, and hit Start.
Uses the following:
- AppleScript to close apps
- An NSOpenPanel to select a list of apps
- Simple reactive concepts to manage the current state
SwiftCron
An open-sourced cron expression parser library written in Swift. Cron expressions are a highly flexible means of scheduling tasks to run periodically at fixed times, dates, or intervals.
SwiftCron is 90% covered by unit tests and works anywhere Swift works, including Linux.
Uses the following:
- Heavy use of the Apple’s date and time APIs for parsing cron expressions
- Cocoapods, Carthage, and Swift Package Manager for installation
- Travis CI and Codecov for automated builds and testing
Color Game



An iOS game demonstrating the Stroop Effect written in Swift. The name of a color flashes on the screen, printed in a different color (e.g. the word “Green”, but colored “Red”). The user taps a button corresponding to the color of the word (Red). The rounds get faster with each win, so stay sharp.
Uses the following:
- A CAShapeLayer and UIBezierPath to animate the ‘time remaining’ ring
- Consumable In App Purchases and iAd video adverts for monetisation