
Growth engineer at @supabase. Making small apps on nights and weekends.
San Francisco, CA
Joined January 2007
- Tweets13.5K
- Following1.7K
- Followers2.6K
- Likes14.5K
Pinned Tweet
✨ Introducing Audioflare ✨
The ultimate open source playground to master @Cloudflare AI Workers.
Audioflare transcribes, summarizes, analyzes, and translates 30-second audio clips into 9 languages.
#buildinpublic
Bay Ballot had 5,317 visitors in its very first week.
It puts 119 Bay Area voter guides' endorsements side by side.
People write in to say it's useful. One local political club emailed asking me to add an endorsement missing from its own website.
It's rewarding to put something out there and have people pick it up and thank you for it.
Try it at bayballot.com
Bay Ballot no longer colors candidates blue and pink.
It puts 118 Bay Area voter guides side by side.
A reader emailed that pink read as Republican, so Democrats Scott Wiener and Connie Chan looked like a D vs R race.
The colors only meant endorsement rank.
Candidates are now violet, amber, teal, and slate.
Solstice now warns you the week before a time zone changes its clocks.
The browser's Intl API already knows every zone's rules, so Solstice checks each zone's UTC offset a day at a time and binary-searches to the minute.
solstice.seanoliver.dev
Sudoclue, my Sudoku app, now lets you share a solve map of each finished puzzle.
Each open cell is shaded by when you filled it: light for early, dark for late. Starting numbers are dots, and no digits appear, so it spoils nothing.
Two people who solve the same daily usually get different maps.
sudoclue.app
My trip planner now shows a booked train as two rows: departure and arrival.
Tap a row and the day map moves to that station. The walk to the hotel now starts from the arrival station.
The phone map is 160 px tall, so the far station is always off screen. A label at the map's edge names it.
I redesigned my trip planner's day view so you edit right where you read. New this week:
- tap a stop to open it, tap any field to edit it in place
- times use the phone's own time picker
- each day's map stays pinned while you scroll that day
- a Plan button opens a drag-and-drop calendar on the day you're viewing
At the risk of appearing a little insane, I've started building a custom trip planner for my wife and I to use with our AI planning agents.
We can each give our agent a token: Muse for her, Claude Code and Muse for me. The agents add stops, bookings, and decisions through a CLI.
We have it pinned to our phones as a live PWA so we can navigate the itinerary and to-do lists, and it works completely offline, too.
I built it because I didn't want our plans in markdown we pass back and forth, or in a Claude artifact that feels temporary.
It's a private Next.js app on Supabase, so there's no link to try. If it holds up on this trip, I'll keep building it for the next ones.
My AI phone agent called Sports Basement today to scout ski demos. He navigated the phone tree, asked six pointed questions, and returned with the essentials: one ski is demoable, one isn’t, and two demo credits can roll into a single purchase.
Voice note: I chose the male voice (Brett) over the female one (Hailey). Unscientific theory: people expect AI to sound female; a male voice reads as “just another caller” and gets treated accordingly. Sample size: one. Brett is now the default.
Bay Ballot added the Californians for Electric Rail voter guide. Someone on Reddit asked for it yesterday. It's in the comparison now, counted the same as the other guides. bayballot.com
Bay Ballot can now pull your ZIP code out of a pasted address.
It puts endorsements from 117 Bay Area voter guides side by side.
With a ZIP, it shows only the contests that can be on your ballot: 88 of 545 in 94301.
It reads the five digits at the end, after dropping the -2531 and a trailing "USA", because keeping every digit would turn "250 Hamilton Ave, Palo Alto, CA 94301-2531" into 25094.
The address never leaves your browser.
Try it with your address at bayballot.com
Sudoclue (running on Capacitor JS) now moves between screens more like a native iPhone app.
I spotted Home showing through each sliding screen in a recording. The browser animates a snapshot of each screen, and the background color was on the page, outside the snapshot.
Play with it yourself at sudoclue.app
Sudoclue now shows a new result card when you finish a puzzle.
It takes the keypad's place, since you're done entering numbers: your time, your best at that level, and how many notes and fixes it took.
Play with it yourself at sudoclue.app
My Sudoku app is now called Sudoclue, with a new icon.
It's going to the App Store, so it needed a name that stands out from every other "Sudoku".
The iPhone app uses CapacitorJS to run the same code as the website, and the first build is on my phone through TestFlight.
The hard part will be making it feel native. I think I'm up for it.
Play with it yourself at sudoclue.app
At the risk of appearing a little insane, I've started building a custom trip planner for my wife and I to use with our AI planning agents.
We can each give our agent a token: Muse for her, Claude Code and Muse for me. The agents add stops, bookings, and decisions through a CLI.
We have it pinned to our phones as a live PWA so we can navigate the itinerary and to-do lists, and it works completely offline, too.
I built it because I didn't want our plans in markdown we pass back and forth, or in a Claude artifact that feels temporary.
It's a private Next.js app on Supabase, so there's no link to try. If it holds up on this trip, I'll keep building it for the next ones.
🚨 New Feature: Pinned Voter Guides 🚨
Many people have a few voter guides they trust most.
Bay Ballot puts endorsements from 126 Bay Area guides side by side. Now you can pin up to 4 of your favorites, and their picks show under every contest.
SF Chronicle and Pissed Off Voters disagree on 5 of the 10 SF propositions.
Pin yours at bayballot.com



















