A running log on both crafts: level design and the things I build after dark.
✦ PINNEDWhen everyone's portfolio is correct
A layoff wave put thousands of designers on the market running the same good portfolio advice at once, and doing it right stopped being enough to stand out.
2026-07-03✦ PINNEDField notes: how I run my side projects with Claude Code
The workflow that carries an interactive novel, a second brain, a wedding SaaS and a skincare atlas at the same time.
2026-08-18What a camera gets for free
Korean action noir cuts away one beat early and lets you work out what happened, and Hong Kong surveillance stories are about being watched. I tried to write a novel out of both. Pantheon is live with seven chapters free.
2026-08-14Rules for the version of me who's in a hurry
Why the same instinct shows up in four unrelated repos: decide it once, while there's time to think, so the decision isn't made again badly at midnight.
2026-08-13The wedding app, part 3: the gate opened itself
What the wedding companion app had to survive on the day itself: a castle that ate phone signal, a countdown with no snooze, and 130 photos from guests who installed nothing.
2026-07-20The river and the template
Perpetūra's engine is a directed graph in vanilla JS — and the story that refused the 18-chapter template got a river instead.
2026-07-20Writing around the feeling
The unnameable feeling every Perpetūra story chases, and why it takes five different women to carry it.
2026-07-20The machine around the writing
Quality on a one-person fiction studio isn't willpower. It's a machine, and this is what its parts are for.
2026-07-18Two agents, one set of rules
Claude Code and Codex were quietly drifting on the house rules I'd written for them, so Ariadne now generates one instructions file from the other instead of me maintaining both by hand.
2026-07-18Pulling the prose engine out of Perpetūra
A weekend proof-of-concept points Perpetūra's anti-slop linter at a noir story it had never seen, to find out whether the tooling is a portable engine or just Perpetūra with extra steps.
2026-07-14One file, two renderers
Adding a chart card to Folium meant reaching for a chart library, then realizing the exported HTML file would show nothing where the chart should be. Every card type has to run twice.
2026-07-14Why Folium and Tessera's code is now public
Folium and Tessera went source-available this week under PolyForm Noncommercial. A page of screenshots claims; a repo shows. And MIT would hand away a door I want to keep.
2026-07-13A portfolio review that fits in one file
Reviewing a portfolio used to mean a dozen tabs and a thread of emailed screenshots. Folium is the local visual board I built so a whole review lives on one canvas I can hand over as a single file.
2026-07-12Stock Academy: the course I wanted before I started
A ten-module investing course for people with no finance background, with the Swedish tax answers written plainly and the not-advice caveats built into each lesson instead of a footer.
2026-07-12Tessera can bind your letters into a book
Tessera now imposes a series of sealed letters into a home-bindable printed booklet, math-tested and honest about a cheap printer.
2026-07-11Tessera: a letter with no moving parts but you
Tessera is a free tool and an open format for writing letters that arrive decades from now. I built it to outlive every company, server, and person involved, including me.
2026-07-11The best edit lost to the plainest one
Picking a hero portrait for a dark, restrained site meant rejecting the most impressive AI edit for the quietest one, then rebuilding it as an interactive video.
2026-07-10A soundtrack good enough to sell, and wrong for its scene
Generating soundtrack, lyrics, and scene art for Perpetūra with Suno and an image model, and the gap between impressive and usable in context.
2026-07-08Loaning out your brain: the Perpetūra skill suite
How Perpetūra encodes creative intent once so any session writes toward it, and why the post-prose skills keep the series from contradicting itself.
2026-07-05Giving a coding agent a memory
Claude Code forgets everything between sessions. Ariadne is the small engine and plain-markdown vault I built so it stops making me re-explain the project every morning.
2026-07-05Same craft, three genres
The reflexes that carried my open-world work turned into liabilities the moment I moved to co-op and extraction.
2026-07-05SkinAtlas: teaching the copilot manners
A five-insertion prompt change that stops the copilot from playing doctor or reciting your skin history back at you.
2026-07-04The verifier that said yes to a PDF
Two fail-open bugs in SkinAtlas's image verification, and the difference between a check that fails and a check that shrugs.
2026-07-04Three bugs hiding in one small feature
A check-in card feature in SkinAtlas shipped with a design flaw, a serialization trap, and a race condition. Each needed a different kind of fix.
2026-07-04The SEO cluster nobody could see
Ten landing pages, a sitemap, structured data, cross-links. And a robots.txt that blocked the entire site.
2026-07-03Setting as constraint: worldbuilding in two crafts
What level design location work and historical fiction research share, and what happens when research constrains rather than decorates.
2026-07-03Perpetūra: building a route from brief to playable
The skill-chained workflow behind each Perpetūra story: research, scaffolding, prose, and the gates that guard release. Reine's route as the example.
2026-07-03Fit is not the same as contribution
Why senior hires lose motivation when their judgment stops being used, and what has to change on both sides to fix it.
2026-07-03What a studio is actually made of
Culture, recognition, and the invisible things that decide whether a game team holds together or quietly falls apart.
2026-07-03The level design of an interactive novel
Routing a romance story turns out to be the same craft as routing a heist.
2026-07-02Rebuilding this site, part 2: the machinery under the notes
Style as a versioned spec, a glitch system, and how these field notes get made.
2026-07-02Rebuilding this site: from CRA to celestial clockwork
Why the old portfolio had to go, and what the new one is made of.
2026-07-01Red-teaming my own hobby projects
One shared security workflow, periodic agent audits, and the real holes they keep finding.
2026-07-01Writing projects so a different model can pick them up cold
A fresh session has no idea why a file is shaped the way it is. The fix is committing the why to the repo, not to one model's context window.
2026-07-01Stay in your lane
On the cost of departmental silos in game development, and what happens when a lead who reaches across gets told to pull back.
2026-07-01SkinAtlas, part 3: memory that survives the session
A .claude/memory directory synced by pre-commit hook, six project skills, and worktrees for parallel agent sessions.
2026-06-30SkinAtlas, part 2: the atlas grows while I sleep
A resumable batch pipeline, a knowledge base at 2,402 ingredients, and why automated image lookup is wrong 9 times out of 10.
2026-06-29Two writers, one chair
Perpetūra's two-writer drafting loop, pointed at this site's copy. The orchestration is model-agnostic; what stays fixed is where the judgment lives.
2026-06-29SkinAtlas, part 1: explainability over magic
A personal skincare atlas where every claim has to cite an ingredient record, not a vibe.
2026-06-28Leading without a map
What happens when a team has no shared roadmap, and what I learned from building one that nobody committed to.
2026-06-28The wedding app, part 2: forking our wedding into a product
Multi-tenant rebuild, $99 checkout, a security remediation plan, and features waiting to come back.
2026-06-27Loom: where the branching logic lives
One design decision inside Loom I keep thinking was right: the logic that makes prose branch lives inside the prose, not in a scripting layer next to it.
2026-06-27The reel factory: when the marketing threatens to eat the making
Generating social videos and campaign art from the projects themselves, so promotion doesn't cost building time.
2026-06-27The wedding app, part 1: built in 23 days, for one day
A guest companion app for our own wedding: seating search, photo quests, bingo, and a live slideshow on the venue TV.
2026-06-26Loom: the three-day engine
Extracting a general interactive-fiction tool from a specific novel, and letting the novel find its gaps.
2026-06-25The editorial council, one finding at a time
How a multi-model review panel caught me stating my own ending's moral, and what the loop looks like end to end.
2026-06-25Perpetūra, part 3: voice as a spec
A prose style guide precise enough to lint for, a texture target for sentence rhythm, and an editorial council that argues with itself.
2026-06-24Perpetūra, part 2: the content bible
Eight canon documents, a character template, and rules that get promoted from lessons.
2026-06-23Don't pay the expensive model to read logs
The orchestrator's job is judgment, not grep. How I split work between an expensive model and a pile of cheap subagents, and why I still read every diff before I believe it.
2026-06-23Perpetūra, part 1: an interactive novel that hides its machinery
An interactive novel that hides its machinery, and the release train behind three stories in three centuries.
2026-06-22Jubileus, part 3: the night the second brain learned to code
Turning the hub into a Claude Code front end: an autonomy gate, resumable sessions, and a feature I deliberately left unfinished.
2026-06-21Jubileus, part 2: the librarian works nights
Scheduled headless Claude jobs, and the merge rule that lets an agent edit my notes without overwriting me.
2026-06-20Jubileus, part 1: a second brain in a folder
Plain markdown, one MCP server, and a search index I'm allowed to delete.
2026-06-19Level design portfolios: what I actually look for
The advice I keep repeating when I review level designers' portfolios, written down so it's searchable.
2026-06-19The same feature, rebuilt four times: voice in Jubileus
A voice cockpit rebuilt across four speech stacks, each swap forced by one non-negotiable constraint.
2026-06-18Why I keep showing up to game dev meetups
Community events, mentoring, and the case for being findable in the industry you work in.