Vancouver, BC — Open to remote

Full-Stack &
Mobile Developer

I build iOS apps and full-stack web products — from published App Store apps to Rails APIs and React Native tools. 8 years of shipping software across mobile, backend, and web.

Scroll
Selected work

Things I’ve built

Full-Stack · Rails · Next.js
MixVault

A full-stack prototype modeling DJ mix workflows — track attribution, timing metadata, and mix validation. Rails API + GraphQL backend, Next.js frontend, Dockerized PostgreSQL.

Ruby on RailsGraphQLNext.jsTypeScriptDockerPostgreSQL
View on GitHub →
React Native · Node.js · Mobile
Nebula

A full-stack mobile productivity app with a random task selector — for when you have too many things to do and can't decide where to start. React Native + TypeScript frontend, Node/Express backend.

React NativeTypeScriptNode.jsExpressREST API
View on GitHub →
iOS · AVFoundation · Published
Detroit-909

A TR-909 drum sampler for iOS — 11 pads with self-recorded samples from real hardware. ~5,000 downloads, 5-star rating, zero crash reports. Previously on the App Store.

SwiftUIKitAVFoundationCoordinatorsUnit Tests
View on GitHub →
iOS · async/await · Published
Anime Quotes

A UIKit app displaying random anime quotes — migrated from Alamofire to async/await, rebuilt with a tab bar, Settings screen, daily quote caching, and typed error handling. Previously on the App Store.

SwiftUIKitasync/awaitCoordinatorsUserDefaults
View on GitHub →
iOS · SwiftUI · Core Data
Fail Hard

A SwiftUI workout logger built for personal use — log workouts by date, track history on a visual calendar grid, and celebrate every save with a victory sound. Core Data persistence throughout.

SwiftUICore DataAVFoundationLazyVGrid
View on GitHub →
Python · CLI · Music Tech
Organize By Genre

A Python CLI tool that reads embedded genre metadata from MP3 and AIFF files and organizes a music library into genre-based folders. Built to solve a real DJ workflow problem.

PythonmutagenTinyTagCLI
View on GitHub →
About

8 years of building,
shipping, and learning

I’m a full-stack and mobile developer based in Vancouver with a background that spans iOS, React Native, Rails, and Python. I’ve built production apps used by thousands of people, worked on Rivian and Bally’s Interactive iOS teams, and shipped independent apps to the App Store.

My time at Rivian introduced me to advanced iOS architecture — Combine, MVVM, Coordinator patterns, and BLE integration — early in my career. At Bally’s I worked on a high-traffic gaming platform where stability and code quality were non-negotiable.

Outside of work I’m a DJ and electronic music producer, which informs a lot of what I build. Detroit-909, MixVault, and Organize By Genre all started because I needed a tool that didn’t exist. That’s usually my best motivation.

2022
iOS Developer
Bally's Interactive
2021
iOS Developer
Rivian
2018–
Independent App Developer
Self — App Store

Skills & Tools

Mobile
SwiftSwiftUIUIKitReact NativeAVFoundationCore DataCombine
Web & Backend
Next.jsTypeScriptRuby on RailsNode.jsGraphQLREST APIsPython
Infrastructure
PostgreSQLDockerVercelGitFirebase
Architecture
MVVMMVCCoordinatorsasync/awaitSwiftLint
Contact

Let’s work together

Open to full-stack and React Native roles in Vancouver or remote. If you’re building something interesting, I’d love to hear about it.