Real software lives in production, not on localhost. My philosophy is Live on Day One—deploying the first commit before writing the first feature. I document the stack, the strategy, and the reality of shipping.
I’m John. For years, I was stuck in a loop of productive procrastination. I fell into the trap of thinking that just writing code meant I was being productive. But the truth was, I was hiding. I was busy every single day, yet I had absolutely nothing to show for it.
Buying domains
Purchasing the "perfect" domain for a new idea, getting a rush of accomplishment, and then letting it expire a year later without uploading a single file.
Starting new projects
The "New Project" Dopamine. Abandoning a project the moment it got difficult (or boring) just to chase the excitement of a fresh npm init and a new tech stack.
Never deploying to live server
Spending months tweaking pixels in private, terrified to actually deploy, telling myself "it's just not ready yet."
Chasing perfection
Obsessing over minor details and endless refactoring, convinced that if I just got everything perfect, then I could finally launch.
Endless learning
Consuming tutorials and courses without applying them, using "learning" as an excuse to avoid the hard work of building and shipping.
Inverting the Process
To break the loop, I stopped relying on willpower and changed the system. Instead of building in the dark and deploying at the end, I flipped the script. I deploy the empty repository before I write a single line of feature code.
Deploy "init"
The moment the repo is created, it gets connected to the host. The first commit is always a live "Hello World".
No Hiding
If the production URL isn't working, I stop coding features until it is. The live site is the only truth.
Ship Imperfection
I embrace the "Work in Progress" label. A broken site in production is worth infinitely more than a perfect site on localhost.
Current Mission: Project WaaS
Building local business websites as a service using Nuxt, Tailwind CSS, and Cloudflare.