I Build Things I Never Ship
There is a specific kind of shame that comes with being a builder who does not ship.
You have the skills. You mostly have the time. You have genuinely good ideas, some sitting on your laptop for years.
And yet, when a friend asks what you are working on, you give a vague answer. Because the honest answer would be: “Something nobody will ever see.”
That has been me for a long time. I am writing this to admit it loudly, in the first post of my personal site.
If you are in the same place, this one is for you.
The Quiet Shape of Not Shipping
Not shipping does not look dramatic. There is no moment of failure. No one tells you that you have missed anything. You just keep working.
You work on new features. You refactor the old code because it could be cleaner. You redesign the landing page for the fourth time. You tell yourself that today you are being productive, because you are, in fact, typing code into a file. So the project is moving.
Except it is not moving where it needs to go, which is out into the world.
Paul Graham has a name for this in his article How to Do Great Work. He calls it per-project procrastination and not per-day procrastination.
Per-day procrastination is when you put off a task today. Per-project procrastination is when you put off your project from year to year because the timing is never quite right.
Paul says, “One reason per-project procrastination is so dangerous is that it usually camouflages itself as work. You’re not just sitting around doing nothing; you’re working industriously on something else. So per-project procrastination doesn’t set off the alarms that per-day procrastination does. You’re too busy to notice it.”
When I read that line, I went quiet for a long minute. That was me. That is exactly what I had been doing for years, and I had been calling it “building.”
The Excuses I Kept Giving to Myself
I was not lying to anyone when I did not ship. I had genuine reasons, which seemed right to me at that moment:
The landing page needs more work.
Next month, once the feature is done.
Not this week, client work is crazy.
I need to have a proper audience.
The UI needs to be polished.
Those “genuine reasons” were actually permission slips, handed from me to me, excusing another week of not launching.
The worst part is that each one of those excuses sounds reasonable in isolation. It is only when you zoom out and realise you have been writing those same permission slips for years that the pattern gets uncomfortable.
The Four Reasons I Did Not Ship
If I am being fully honest, there was not one reason I did not ship. There were four, and they took turns.
Procrastination
Every week, I told myself I would work on the launch this weekend. Every weekend, I found something more urgent, or more interesting, or just more pleasant.
This is not the “I’ll do it tomorrow” kind. It is the deeper kind where tomorrow becomes next week, and next week becomes next month, and the project is still 90 percent done.
I once read that one-fifth of adults are chronic procrastinators. I am in good company. It does not make me feel better, though.
Fear of Failure
The fear of failure I’m talking about here is the small and humiliating one.
What if I launched, and nobody cared? What if I posted on X and got three likes from people I already knew? What if the product I was proud of in private turned out to be ordinary in public?
Not launching protects you from all of that. It also guarantees you never find out whether you had something good.
Never Having Shipped Before
When you have never launched anything, the first launch feels enormous. The weight of “my first product” is heavier than the weight of any single feature.
So you keep adding features, hoping the launch will feel lighter if the product is bigger. It does not work that way.
Perfectionism
Perfectionism is the most respectable excuse for not shipping, because it sounds like care.
“I just want it to be really good before I put it out there.” That sounds responsible. It is not.
The truth is, perfectionism is usually fear in a nice shirt. Every extra feature I wrote into a private codebase was a feature that could not get feedback, teach me anything, or find a single user.
What Changed My Thinking
A few things at once.
The first was that Paul Graham line. Once I understood what I had been doing as per-project procrastination, I could not unsee it. The disguise came off. I was not busy building; I was busy avoiding.
The second was the obvious thing everyone is living through.
AI has rewritten the rules of every technical and creative profession in under three years. That includes my profession as well.
I had been freelancing for 12 years, and I assumed that staying in my comfort zone was the careful and responsible move. That assumption no longer holds. Sitting on finished work while the world rearranges itself this fast is not caution anymore. It is the actual risk.
The third reason is simpler and, weirdly, the most important: I got tired.
Tired of calling myself a builder while the evidence said otherwise. Tired of being someone who could ship, but did not. Tired of the knot in my stomach every time I opened the unpublished projects folder on my laptop.
At some point, you have to choose between the story you are telling and the facts on the ground, and I was running out of patience with the story.
So I am going with the facts. And the facts start with a launch.
Finally, I Shipped a Project
I started small, but most importantly, I shipped my first product. It is a Chrome extension called WhatTheCSS.
It inspects the CSS of any element on any site: colors, fonts, contrast, box model. You can edit them live and copy the CSS. You can also extract components to export to CodePen or as an HTML snippet. It is built for developers and designers.

Why did I build WhatTheCSS? Simple! Many of the popular ones make you pay for CSS inspection. It is pretty annoying.
Also, many CSS inspector extensions require you to sign up to access their tool. Plus, they bloat it with features you’ll never use. You also have to deal with their annoying panel that docks itself on one side of the screen, making the width of the website smaller.
With WhatTheCSS, you can inspect and edit CSS live for free, without any signup or login. You can give it a try and let me know your feedback.
Why did I start with this one? It is the one I could finish quickly. Also, I personally use it every single day, which keeps me honest about making it actually good rather than shipping and forgetting.
To the Builder Reading This
If you have a folder of “unpublished projects” like mine, open it this weekend.
Pick the one closest to done. Not to work on a new feature. Not to refactor. Not to redesign the landing page.
But to ship it.
It does not need to be perfect. It does not need to have a huge audience waiting for it. It does not need the copy polished for a fourth round.
It needs to exist somewhere other than your hard drive, where real users can touch it, break it, and tell you what is actually wrong with it. Everything you are doing in private is a rehearsal. At some point, you have to go on stage.
The worst thing that happens if you ship and nobody notices is that you learn something. Whereas if you do not ship, that project folder stays on your laptop, and you’ll regret it many years later, thinking “What if I had shipped it?”
I am going to be writing here on this site about my experiences of shipping, about what is working, and what is breaking.
And if you open “that” folder this weekend, tell me which project you picked. I will be rooting for you.
Subscribe to the newsletter if that sounds useful. I won’t spam your inbox, promise :)