I’m a designer who builds.
For the last three years that has meant doing whatever it took to get a product into people’s hands. I joined Codifi early, when it spun out of an archaeology firm’s tech team, as its only product designer. Then the to-do list kept growing. I started writing the frontend because waiting on handoffs was too slow. I wrote the docs and the release notes, rebuilt the marketing site, field-tested GPS receivers, sat with crews in the field, and shot and edited the company film.
The way I work: design it, build it, put it in front of a field crew, fix what they tell me, ship again. When I design and code the same feature, the interface shapes the data model and the code keeps the design honest.
Before software I was a pastor for nine years, which was a lot of customer experience and change management in disguise. Before that I published twelve iOS apps in Objective-C. Different titles, same instinct: work out what people need, then make it.
I live in Charleston, Tennessee. The whole story is on the timeline.

What I do
Design
- Product and interaction design, from the first sketch to the shipped screen
- Design systems, and keeping them true across web, mobile and marketing
- Research in the field, standing next to the person doing the work
- Brand, App Store and marketing design
- Film, photography and motion
Engineering
- TypeScript, React and React Native
- Next.js, and static sites like this one
- Maps and geospatial work: Mapbox, Turf, GPS receivers over Bluetooth
- Interfaces for software that has to work with no signal
- Building with AI agents, and writing the docs they need to do it well
Product and people
- Roadmaps, releases and deciding what not to build
- Docs, release notes and training
- Rolling software out to people who liked their old tools
- Listening, which nine years as a pastor taught me
Where I have been
35 countries on six continents, usually with a camera.
All 35 countries
- Australia
- Austria
- Bahamas
- Bolivia
- Brazil
- Cambodia
- Canada
- Colombia
- Croatia
- Czech Republic
- Dominican Republic
- England
- France
- Germany
- Ghana
- Haiti
- Honduras
- Iceland
- Israel
- Italy
- Jordan
- Mexico
- Monaco
- Morocco
- New Zealand
- Romania
- Slovenia
- Spain
- Switzerland
- Thailand
- Turkey
- Ukraine
- United States
- Vatican City
- Venezuela
Remote office
I love to travel, and I like finding somewhere to work from when I get there.

Dubrovnik, Croatia 
Triglav National Park, Slovenia 
A causeway in Florida
Out of office
And sometimes the laptop stays shut.

Gibraltar, 2019 
The Sahara, Morocco, 2019 
Reading, 2020
How this site is built
It is a static site: Next.js, exported to plain files, with no server, no tracking and no component library. The design system is ordinary CSS: one set of tokens, and three grounds (ink, paper, and Codifi’s teal) that re-point those tokens for whatever sits on them.
The name on the home page is real text. The photograph inside it is painted with background-clip: text and a mask, and three CSS variables move it. The photographs in it are two-tone on purpose: that puts a floor under the letters’ contrast, and the build fails if a tone drops below it.
Every photograph is built by a script into AVIF and JPEG at several sizes, with its metadata stripped, because a field photo can carry the location of an archaeological site. The world map on this page is drawn when the site is built, so your browser downloads a picture of a map and not a map library.
Colour contrast is checked by a script on every ground. The site meets WCAG 2.2 AA, works from the keyboard, reflows at 200% zoom, and keeps still if you have asked your system for less motion.
I built it with Claude Code, the way I build most things now: I decide what it should be and review what comes back, and the agent does a lot of the typing. It is set in Mona Sans, Bricolage Grotesque and Newsreader.