Skip to content

Latest commit

 

History

History
143 lines (110 loc) · 5.33 KB

portfolio.md

File metadata and controls

143 lines (110 loc) · 5.33 KB
layout title permalink header_alignment gallery_traverse gallery_raywenderlich gallery_zenbreath gallery_hushtime gallery_colorgame
single
Portfolio
/portfolio/
center
url image_path alt
/assets/images/Portfolio/traverse1.jpg
assets/images/Portfolio/traverse1.jpg
Traverse iOS App
url image_path alt
/assets/images/Portfolio/traverse2.jpg
assets/images/Portfolio/traverse2.jpg
Traverse iOS App
url image_path alt
/assets/images/Portfolio/rw-logo.png
assets/images/Portfolio/rw-logo.png
raywenderlich.com, the most popular iOS tutorial site on the Internet
url image_path alt
/assets/images/Portfolio/zenbreath1.jpg
assets/images/Portfolio/zenbreath1.jpg
Zen Breath iOS App
url image_path alt
/assets/images/Portfolio/zenbreath2.jpg
assets/images/Portfolio/zenbreath2.jpg
Zen Breath iOS App
url image_path alt
/assets/images/Portfolio/hushtime1.png
assets/images/Portfolio/hushtime1.png
Hush Time macOS App
url image_path alt
/assets/images/Portfolio/hushtime2.png
assets/images/Portfolio/hushtime2.png
Hush Time macOS App
url image_path alt
/assets/images/Portfolio/colorgame1.png
assets/images/Portfolio/colorgame1.png
Color Game iOS App
url image_path alt
/assets/images/Portfolio/colorgame2.png
assets/images/Portfolio/colorgame2.png
Color Game iOS App
url image_path alt
/assets/images/Portfolio/colorgame3.png
assets/images/Portfolio/colorgame3.png
Color Game iOS App

Traverse: Explore Your World

{% include gallery id="gallery_traverse" %}

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

{% include gallery id="gallery_raywenderlich" %}

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

Zen Breath

{% include gallery id="gallery_zenbreath" %}

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

{% include gallery id="gallery_hushtime" %}

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

{% include gallery id="gallery_colorgame" %}

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