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.
Things I’ve built
A full-stack prototype modeling DJ mix workflows — track attribution, timing metadata, and mix validation. Rails API + GraphQL backend, Next.js frontend, Dockerized PostgreSQL.
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.
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.
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.
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.
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.
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.
Skills & Tools
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.