A native app, then React Native
Built the iOS app from scratch in Swift and directed a contract engineer on Android. Then tested my own skepticism of cross-platform tools, built a proof of concept, and led the migration to React Native and Expo.
Each one traces to work I owned, across four companies and thirteen years. Filter by area, read the full story where there is one, or ask the AI interviewer for the details.
Built the iOS app from scratch in Swift and directed a contract engineer on Android. Then tested my own skepticism of cross-platform tools, built a proof of concept, and led the migration to React Native and Expo.
Owned seven Expo upgrades at Everee, including a forced move to Expo Dev Client to keep iOS releases shipping. Then owned four at Nutrien, SDK 53 to 57, across a 60+ module monorepo.
Moved the mobile app onto Expo Application Services and over-the-air updates, then built continuous-deploy workflows to publish and promote releases. Fixes usually reached phones in under 30 minutes instead of a day or two of store review.
Built services in a Spring Boot backend serving 96K+ monthly active users. Architected its roles and permissions system. Worked in PostgreSQL throughout, including a production Postgres 16 upgrade.
Pitched a CircleCI to GitHub Actions migration with a cost analysis, then moved every repository myself. Added tag-triggered deploys and branch protection.
Spearheaded a multi-platform UI component library and a framework for hybrid web and mobile apps. Built an embedded pay card signup flow on the library. Added Storybook and Chromatic to streamline QA.
Led a mobile squad, then a full engineering team. Took tier-2 escalations and on-call for nearly five years. Helped respond to security incidents, then led the team that shipped eight security enhancements.
Diagnosed Jest suites exhausting memory both in CI and on laptops across a large monorepo. Then made worker counts and memory limits adapt to the machine. In CI run history, infrastructure-related test failures fell roughly 93 percent, and median pull-request test time dropped from about 16 minutes to about 5.
Diagnosed and fixed the native crashes that a major Expo and React Native upgrade exposed. They included a first-launch crash traced into the framework’s code-splitting loader and a launch crash on a new major iOS release. Fixed a layout assertion in the shared design system, then the years-old render loop it had been hiding.
Planned, pitched, and executed framework upgrades across a 60+ module, 110+ contributor monorepo. Moved it from Yarn Classic to Yarn 4, then turned on React Compiler across four Expo apps and two Storybook builds. Sequenced React Compiler behind an Expo upgrade when an Expo bug blocked it.
Single-handedly built, documented, and published an iOS and Android SDK so clients could embed InMoment in their own apps. Built the demo apps leadership used to pitch it.
Build my own Claude Code agent skills for code review, verification, and pull request upkeep. Use them on personal projects and in my daily work.
Designed and shipped the AI interview on this site. It is a tool-calling agent that answers only from documents it looks up in my public record. It cites what it read, falls back across models through a gateway, and is checked by an eval suite.
Added Auto model selection to kirocc, a proxy for the Anthropic Messages API. Fixed images dropping out of conversation history. Both merged and shipped in its next release.
Retired our Codecov subscription when the team would not commit to a coverage floor. Moved the budget to GitHub Copilot seats and rolled Copilot out to engineering.
The AI interviewer knows the decisions, trade-offs, and outcomes for every project here. It cites its sources.