Developer diary · Part 0

A layoff, three side projects, and one app running at five frames per second

Let's skip the suspense.

This story doesn't start with an idea.

It starts with a phone call that ended three and a half years in a single day.

No lessons on how it should be done.
No guide to surviving a layoff.
Just how it went.

🧊 February

February 2026. A reorg. I'd spent the months before it on the bench, and that was the finish line.

Three years inside one system isn't only a salary.

It's a habit.

You know where things are.
You know who to ask.
You know what good looks like here.

Then it's gone, and you find out that part of your confidence was never yours. It belonged to the system.

(And one detail I underrated at the time: those three years I worked almost entirely without AI. By hand. In 2026 that turned out to matter.)

🎤 Interviewing is a separate profession

I hadn't sat on this side of the table since 2022.

I'd been on the other one. I ran interviews — not many, but I ran them. My own were internal: moving from one project to the next.

Turns out that doesn't help at all.

Knowing how to evaluate and knowing how to be evaluated are two different skills. I knew exactly what a good answer looks like.

And I had completely forgotten how to give one.

Three years is precisely long enough for the market to become a different market, the job to become a different job, and interviews to stay exactly what they have always been: a separate discipline you prepare for separately.

I hadn't prepared.

What followed was a month of chaos.

I was trying to work out not what to do in general, but what to do right now. I was buying myself runway, so I could look for the right job instead of grabbing the first one. In my spare hours I drove for Uber — in a straight fight for survival, that bought me the extra weeks.

I'm not going to pretend I spent that month productively.

Then something simple landed.

I had nothing to show.

Not because I hadn't done anything.
Not because I'd done it badly.
Just because everything I'd built for three years sits behind an NDA — and in an interview you can describe that only in the words that describe nothing.

So I needed something I could open and show.

🧪 Something to show

What began was an entertaining period of looking for things worth building, or fixing.

(I was ready to fix a lot in those days. At one point, in much the same spirit, I nearly turned my PS5 into a brick — but that one has its own story, and the lesson stuck.)

First came config-driven-testimonials. An immodest project if there ever was one: a configurable template for testimonials from former colleagues, filled with real ones from the past seven years. A testing ground where I worked out how to publish my own package to NPM and automate the whole pipeline.

One dependency. That one has a single dependency of its own — zod. There is nothing in there to rot, and nothing that can be pulled out from under it. Five months on, that is still the part I am quietly pleased about.

For a while, people were even using it.

One dependency, WCAG 2.2 AAA, Lighthouse 100/100 — and twenty versions, because of course I couldn't ship it clean the first time. Weekly downloads: zero. The spike was real, though.
One dependency, WCAG 2.2 AAA, Lighthouse 100/100 — and twenty versions, because of course I couldn't ship it clean the first time. Weekly downloads: zero. The spike was real, though.

And that's where I learned the first thing that came in useful twice.

In side projects, finishing isn't the only skill. Stopping at the right moment is the other one.

I got it to a reasonable state and moved on.

Second came PlayShelf. It started as a take-home assignment and then outgrew itself.

The spec was dry. The name, the styling and the logo turned up while I was working — that's usually how it goes. Good ideas arrive while your hands are busy, not while you sit and hunt for the perfect one. Drop in a placeholder and keep moving. The palette I aimed squarely at their nostalgia.

But the façade wasn't the interesting part.

Inside was the starred exercise: make neighbouring browser tabs talk to each other. With no backend. At all.

About thirty per cent of my time went not into code but into design — working out with Claude how the thing should behave, and how to make it a pleasure rather than a chore.

I put noticeably more into it than I was asked for, and I didn't compromise with myself once.

A take-home assignment doesn't have to be beautiful.

This one was.

See if you can guess the company from the catalogue. I never signed an NDA with them.
See if you can guess the company from the catalogue. I never signed an NDA with them.

It went nowhere. A week and a half in, the company froze hiring.

So I applied the same rule a second time, and went back to the mysterious world of sending out résumés.

🐭 Forms, again

If you applied for anything in 2026, you know.

Company.
City.
Dates.
Stack.
A paragraph about what you did there.

The same six fields. The tenth form of the day.
The same six fields. The tenth form of the day.

Then the next form asks for the same things. In a different order. In a different field. With a different character limit.

You're a blind mouse in a maze, running into the same corners — except they've been moved slightly since last time.

(If the sight of a WordPress admin panel gives you a small flicker of dread, you know the exact feeling.)

The logical move is to automate it.

I didn't.

I'd already had text about me come back with hallucinations in it. Not mistakes — confidently written untruth. Checking every letter of my own résumé after a machine took longer than filling the form in by hand.

So I decided not to automate, but to accelerate.

What I needed was a thing holding prepared pieces of text, where one click puts any of them on the clipboard.

And none of the bloody fonts and background colours.

That's it. No AI. No magic. Text I wrote myself, exactly as I wrote it.

⚡ The Wunderwaffe that ran at five frames per second

I'm a React developer. So I thought: why not take Electron and build a real macOS app out of React?

I barely planned at all — I didn't know yet what I wanted. This needed feeling out, not designing. A proof of concept that would tell me what I'd actually use.

That's how SlotPaste appeared. A very simple app with a very weak name 🙂

A board. Blocks on it. Each block holds a piece of text. Click, and it's on your clipboard. Tabs for different contexts. The prototype came together in about a week.

Not all of that week was spent wisely. I seriously tried collision algorithms borrowed from gamedev to keep text blocks from collapsing into each other. They never properly worked.

But that wasn't the main fiasco.

In dev mode, in the browser, everything flew.

The built app ran at five frames per second and weighed over two hundred megabytes.

Five.

🔌 Engineer honesty moment

There was a fork here, and the temptation was obvious: dig into optimisation and prove that I could.

I reminded myself of three things.

One, this project exists for the experience.
Two, it is time to start using it, not only writing it.
Three, in the browser it already works.

So I cut Electron off. Completely.

What was left is a PWA. Just a wrapper, so the thing lives in its own window.

It is all primitive.

And it works.

SlotPaste, April 2026. The board is my job application, taken apart into fields.
SlotPaste, April 2026. The board is my job application, taken apart into fields.

🎯 Time passed

Here's the funny part.

One of the first forms I filled in with the working prototype led to a job. The first month is behind me.

You'd think the tool had done its job and could retire — the reason it existed was gone.

I use it every day.

Some things at work I have automated properly by now; the project starts with one click. Other things still live in blocks: console commands I type ten times a day, and small rituals like the prompt "refresh the working rules in .idea/CLAUDE.md".

SlotPaste, September 2026. Same app, different problems.
SlotPaste, September 2026. Same app, different problems.

That is the only test that means anything for a side project.

Not stars.
Not claps.
Just: do you use it yourself, when nobody is watching?

🆕 And a couple of days ago

I was waiting for my son to finish practice, and started poking at domains out of boredom.

And found one free. Six letters. .com.

jpaste — because it is about just pasting.

Funny how the market turned out: in 2026 you can simply take a six-letter .com. Not buy it from someone, not overpay — it was there.

It's mine now.

And I'd rather not walk this one alone: from a name, an idea and a lopsided prototype to a product I use, and someone else will too.

An idea is cheap on day one.

What makes it real is still opening it on day sixty.

💬 A question

What is the piece of text you have typed by hand more times than you would like to admit?

Mine is caffeinate -di -t 28800.

(And git commit -m " I still type myself, on autopilot. There is text you keep. And there is text your fingers type without you — no app is going to help with that one.)

Share yours 👇

Next time: why I started with a name and a landing page instead of code 😉