FreeStarter packs: vibe coding, website kit, carousel tool & more → Free starter packs →

things i’ve made

Projects

Things I'm building and shipping. Some are finished and live, some only run on my own machine, and the useful lessons usually become posts.

Em on a rollercoaster: building it, shipping it at the top, waiting on the way down, then landing on a comment that says ‘i liked everything except when u said ai!’
the shipping rollercoaster
The Friendfriendfriends landing page: a neon wordmark over a synthwave sunset with palm trees
now building

Friendfriendfriends

One friend of a friend, every Sunday. Friends vouch you in, and each week you get one intro to someone two steps away who's up for the same things. If you both say yes, you swap emails. What I'm building right now.

Join the waitlist →

go and use them

Live

Tarot for Builders: three pulled cards, The Unicorn, The Sushi and The Loading Bar
for builders

Tarot for Builders

A joke tarot deck for people making things. Pull three cards and get a specific, deadpan fate for your morning, afternoon and night. The printable deck is on the way.

Pull a fate →
Em with a wooden staff inside a rainbow crystal shield, with a grumpy cloud, scribbles and a spiky burst firing zigzag arrows at it
for your energy

rainbow 6.5

Our most protective model yet. Paste the comment or thought that's bugging you, and the rainbow shield blocks it and files an incident report. #1 on VibeBench*. *Benchmarks conducted by me.

Activate the shield →
ReadNext suggesting Piranesi by Susanna Clarke, with Start reading this and Shuffle again buttons
for readers

ReadNext

A quiet shelf for everything you meant to read. Keep your books in one place, mark what you're reading, and press "What should I read next?" to let the shelf pick. Saved in your own browser.

Pick my next book →
Screenshot of NudgeCue
for teachers

NudgeCue

Classroom management with avatars, points, random picker, timers, attendance, and reports.

Try NudgeCue →
Screenshot of Ugly Draft Mode
for writers

Ugly Draft Mode

A writing screen with nothing on it to make you feel judged. Word count, dark mode, export when you're done. The first thing I ever built.

Start writing →
Screenshot of Remark Builder
for teachers

Remark Builder

Report card comments for a whole class in one pass. Pick each student's strengths and the areas to work on, set the tone and length, and edit any line you don't like. Six languages.

Try Remark Builder →
The budget planner showing a month of savings, planned spend and fixed expenses
for your money

Budget Planner

Set what you plan to spend each month, then log what you actually spent. Pick your currency, and add it to your phone's home screen to use it like an app. Everything stays in your own browser, so there is nothing to sign up for and nothing sent anywhere.

Open the planner →
The interval timer set to 8 rounds of 30 seconds work and 30 seconds rest
for runners

Interval Timer

Set your rounds, your work time and your rest time, then put the phone away. It beeps between each one and keeps the screen awake. Built for run intervals, fine for holding a pose. Add it to your home screen and it runs like an app.

Start a session →
Hangul Breakdown splitting the syllable 녕 into its initial, medial and final parts
for korean learners

한글hangeul Breakdown

Type Korean and tap any syllable to see how it's built. Every block splits into its initial, medial and final parts, each one named and romanised.

Break down a word →

only on my machine

Built, but not public

not public

The Writing Pipeline

Idea to published post, in stages: transcribe a voice note, draft, edit, check, approve on Discord, commit. It's a folder of instructions rather than an app, and it's what publishes this blog.

in progress

Lesson PPT Generator

Give it a topic and a level, get a lesson PowerPoint back. Separate agents find the images, plan the lesson, build the deck, and check the spelling.

runs locally

Running Log

A personal log for tracking runs over time. Deliberately tiny: a server, HTML sent over the wire, and a JSON file. No client-side JavaScript at all.