BF.
Senior Android engineer / Native mobile / Product & design
I build mobile apps for water, roads, farms, and kitchens.
Since 2016 I've built Android apps, mostly for connected hardware and for people who work away from a desk. At Phyn I own the Android app and I'm moving it from React Native to native Kotlin and Jetpack Compose while customers keep using it. I build for iOS too, and outside of work I'm building Buttermade, a shared cookbook app for families.
Phyn: Android owner, leading the move to Kotlin and Compose
Rachio: Android side of the WeatherFlow Tempest integration, CI moved to GitHub Actions
MapQuest: navigation in the main app, plus map and geofencing SDKs
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
I'm Phyn's only Android engineer. I own the app and its builds, and I'm leading its move from a 2019-era React Native app to native Kotlin and Jetpack Compose. The migration is incremental and still in progress, so customers keep using the app while it changes. The app shows leak alerts, freeze warnings and water use from Phyn's smart water devices.
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
Jetpack Compose
Java
Gradle / CI
Swift / SwiftUI
React Native
Expo
Connected devices
Product strategy
Interaction design
Design systems
Selected work
(03) Projects
9:41
Tap an app
Native iOS / Product / UX Design
Buttermade
Private TestFlight beta
A cookbook a family shares. Each recipe keeps a photo of the original card, and anyone in the family can cook from it, save their own version, and see what everyone else has been making.
It started at Christmas 2025, when my mom wanted her recipes in one place instead of spread across index cards, Word documents and phone photos. I built our family a shared cookbook, then spent a while turning it into an app for food creators like my sister Melissa, who runs Design Eat Repeat. Building hers convinced me the family version was the better product, so that's what Buttermade is now.
Swift, SwiftUI, WidgetKit, Supabase, Postgres, Edge Functions, OpenAI, Realtime Voice, WebRTC, On-device Speech
Visit Buttermade
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
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 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
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, and I check that the result solves the user's problem without getting in their way.
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, or the fix that papers over the actual bug. 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, cut into smaller pieces
Deliberate limits on how much context an agent carries
A review pass separate from the person who asked for the work
Tests and recordings that catch what a quick read won't
The scaffolding matters more to the output than the choice of model. 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. Parser changes are graded against them, including a check for answers that are confidently wrong.
04
Release screens
Before a build goes to anyone besides me and Melissa, a script opens 18 key screens with demo recipes on five simulated devices at three text sizes. That comes to about 270 screenshots, and I look at every one myself instead of trusting a summary, because a button pushed off screen at the largest text size is easy to miss.
(05) Contact
Get in touch
I'm always glad to hear about senior Android and mobile engineering roles, especially where the app works with hardware or helps someone get a real job done. LinkedIn is the best way to reach me.
LinkedIn