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.

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.

RailsGraphQLNext.jsTypeScriptDocker
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.jsExpressJest
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.

SwiftUIKitAVFoundationCoordinators
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/awaitAccessibility
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.

SwiftSwiftUICore DataAVFoundation
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 DJ and electronic music producer first — and a developer by extension of that. When the tools I needed didn't exist, I built them. That's how Detroit-909, MixVault, and Organize By Genre came to life.

Professionally I'm a full-stack and mobile developer based in Vancouver with experience across iOS, React Native, Rails, and Python. I've worked on the Rivian and Bally's Interactive iOS teams, and shipped independent apps used by tens of thousands of people.

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.

02.2018-Present
Independent App Developer
Self — App Store
03.2022-02.2023
iOS Developer
Bally's Interactive
12.2019-12.2020
iOS Developer
Rivian

Skills & Tools

Mobile
SwiftSwiftUIUIKitReact NativeAVFoundationCore DataCombine
Web & Backend
Next.jsTypeScriptRuby on RailsNode.jsGraphQLREST APIsPython
Infrastructure
PostgreSQLDockerVercelGitFirebase
Architecture
MVVMMVCCoordinatorsasync/awaitSwiftLint
Testing
XCTestJest
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.