BF.
App developer & product builder / Engineering / UX / Design
I build mobile apps for water, roads, farms, and kitchens.
For ten years I've built Android and iOS apps that control hardware or help someone finish a job away from a desk. Outside of work I'm building Buttermade, a shared cookbook app for families.
View work
Get in touch
(01) About
Engineering, product & design
I have built mobile apps for sprinkler controllers, water monitors, turn-by-turn navigation, senior-care tablets, veterinarians on farm calls, and home cooks.
Whatever I am building, I want the person using it to understand it quickly and enjoy using it. I notice the little things that get in someone's way. Sometimes the fix is a clearer screen. Sometimes it is faster, more reliable code, better copy, or one small detail that makes the whole flow feel good.
The path so far
(02) Experience
Full-time and contract roles behind the product work.
2023 - Present
Senior Android Software Engineer · Phyn
As Phyn’s sole Android engineer, I own Android builds and lead the app’s modernization, incrementally replacing its 2019-era React Native app with native Kotlin and Jetpack Compose while existing customers continue using the product.
2020 - 2022
Android Engineer · Rachio
Built Android software for Rachio's connected sprinkler controllers. I led the Android side of the WeatherFlow Tempest integration, which lets a homeowner's own weather station drive rain, wind, and freeze skips, and moved the Android CI from Jenkins to GitHub Actions.
2019 - 2020
Android + iOS Engineer · Viderity Inc.
Primary engineer for the National Science Foundation's Science Zone apps on iOS and Android.
2018 - 2019
Android Engineer · It's Never 2 Late
Built Android tablet software for seniors, including games, video chat, content browsing, and large offline media libraries.
2016 - 2017
Associate Software Engineer, Android · MapQuest
Worked on navigation in the main Android app and built map and geofencing SDKs for Verizon clients.
Toolbox
Android
Kotlin
Java
Swift / SwiftUI
React Native
Expo
Connected devices
Product strategy
Interaction design
Design systems
Selected work
(03) Projects
Native iOS / Product / UX Design
Buttermade
Closed alpha
A private cookbook for families. Scan a handwritten recipe, clean it up, and cook from the same collection together.
It started at Christmas 2025. My mom wanted one place for the recipes she had scattered across paper, Word documents, and photos, so I digitized them and gave the whole family a shared cookbook. That grew into a white-label platform for creators like my sister Melissa, who runs the Design Eat Repeat food blog. Building hers showed me the better product was the one I had made first: a private cookbook for a family.
Swift, SwiftUI, WidgetKit, Supabase, Postgres, Edge Functions, OpenAI, Realtime Voice, WebRTC, On-device Speech
Visit Buttermade
Native iOS / Product / UX Design
Design Eat Repeat
Final design polish
I built a native iOS home for the 15 years of recipes Melissa published at Design Eat Repeat. It carries her cookbook and adds a grocery list, shop, and Inspire Me tool the blog never had, without feed algorithms or ad clutter.
Building against a working food blog and its existing audience exposed the product decisions that later became Buttermade.
Swift, SwiftUI, Core Data, CloudKit, StoreKit
Visit Design Eat Repeat
Instagram
TikTok
React Native / Product / UX Design
Midstate Vet
App Store (Unlisted)
I built this private iOS and Android app for an Upstate New York veterinary clinic, distributed unlisted on the App Store and as a direct Android install. It replaces paper charge sheets with digital billing and time tracking during farm calls.
Midstate Vet replaces the clinic’s paper-to-system handoff with digital charge capture in the field, so billing information stays accurate from the start. Every vet on staff now uses it daily.
React Native, Expo, Expo Router, TypeScript, SQLite, Sentry
Native iOS / Product / UX Design
Pushups for iOS
Shipped, App Store
A pushup tracker built around one idea: log a set in a single tap and get out of the way. Charts, daily goals, streaks, and rewards, with no account required.
The screens stay simple. Hit your daily goal and the streak card animates while a gumball drops into the jar.
Swift, SwiftUI, SwiftData, Swift Charts, Lottie, SpriteKit
Download on the App Store
Native Android / Product / UX Design
Pushups for Android
Built, APK on request
The same tracker, built again for Android in Kotlin and Compose. Same data model, same charts, same daily goal, running on Room instead of SwiftData.
Native is where I do my best work, and I do it on both platforms. Swift Charts and SpriteKit are Apple-only, so I rebuilt the charts and the gumball physics in Compose.
Kotlin, Jetpack Compose, Material 3, Room, Hilt, Gradle
How I build with agents
(04) How I work
I build with coding agents every day, and I give them real work: research, design options, features, refactors, debugging, tests. I still drive the product decisions and design to make sure it solves the user's problem in a way that is both frictionless and delightful to use. An agent will happily produce something that runs and is still wrong for the person using it. One of my jobs is catching that gap: the feature that technically matches the ticket but makes the flow worse, the fix that papers over the actual bug. And some damage doesn't show up in the product at all: a fix can work perfectly and still degrade the architecture, which you only pay for months later, when a requirement changes and the update is suddenly risky, slow, and expensive.
Working this way creates its own problems. Code shows up faster than it can be read carefully, and the pull is always to skim it and fire off another agent before anyone has understood what the last one did or what it was working from. Most of my setup is aimed at that problem: sharper specs, smaller pieces, deliberate limits on how much context an agent carries, a review pass separate from the person who asked for the work, and tests and recordings that catch what a quick read won't. The scaffolding matters more to the output than the choice of model, and the list keeps growing the same way: whenever my own attention becomes the bottleneck, I try to turn that step into something an agent can run.
On Buttermade, a few of those look like this:
01
Recipe scanning
When a scanned recipe card is hard to read, the parser could fill the field with a confident guess, which looks great in a demo and terrible in someone's kitchen. I had an agent prototype a few ways to handle low-confidence fields and shipped the one that flags them and asks the cook instead of guessing.
02
Onboarding
I had an agent sketch several onboarding flows and picked the one that asked the least of a new user. Then I reworked the structure and rewrote every line of copy that sounded like it could belong to any app, because that part an agent won't catch.
03
Parser checks
Clean demo inputs hide the mistakes that look almost right, so I built a set of recipe cards I labeled by hand. The agent runs every parser change against them and traces any failure back to the line that caused it.
(05) Contact
Mobile product development and consulting
I help teams work through difficult Android and iOS product challenges, from UX and architecture decisions through implementation and release.
Available for scoped projects and ongoing part-time engagements.
Assess an existing app
Identify the main UX and engineering problems and recommend practical next steps.
Deliver a defined milestone
Take a feature or modernization effort through implementation and release.
Ongoing product and engineering support
Contribute across product decisions, engineering and delivery on a part-time basis.
LinkedIn