Day 4: scaffolding the blog, hiring math
Sunday in Brazil. Built the first version of this blog end-to-end in four hours, picked the stack, scaffolded Astro + MDX + Cloudflare Pages + PostHog, shipped the first build. Quick evening call with a marketing candidate for OneProposal. Walked away thinking about employer risk.
Two things today.
The blog
I built the thing you are reading. Four-ish hours, end-to-end, from “what should this even be” to “live on the internet.”
Why a blog. Three reasons stacked on top of each other. Proof-of-self for investors. Networking infrastructure (one URL I can share with friends, family, future clients, my grandparents). Writing forces understanding.
What I picked and why. Astro + MDX, hosted on Cloudflare Pages, content authored through Claude Code. Astro means static markdown files in a git repo with the option to embed components later. Cloudflare Pages handles more traffic than I will plausibly produce, auto-deploys on every push, and Workers sit one step away if I ever need a tiny API. Claude Code as the authoring interface is the part that justifies the rest: the same agent harness I use to ship product also publishes the journal about shipping product.
I considered Lovable first. Honest sanity check killed it: Lovable builds apps, and a blog is a content pipeline, not an app. The wrong shape for a thing that needs to live for years.
What I learned today. The Astro 6 blog template gets you 80% of the way there: content collections, RSS, sitemap, Atkinson font, image optimization, all in by default. The customization work was renaming and adding a second collection, not building from scratch. Tailwind v4 + Astro is dead simple: one Vite plugin, one CSS import.
The hiring call
Quick evening call with a marketing candidate for OneProposal. The frame I keep coming back to: how much time do I have to put into them before they are net-positive? And what is the variance on “they walk away after I have already invested the time”?
It is a mathematical problem under uncertainty, and I am not yet at the stage where I can pre-compute the answer. The bottom line is employer risk: omnipresent until you have shipped a few hires that actually work out. Decided to keep the conversation warm but not pull the trigger yet. Tomorrow’s build day is heavy enough that I should not be onboarding anyone mid-week.
The naming question for the blog ended up being nicolasneumann.blog. That took longer than the engineering build. Tomorrow I write entry two and start the Brazil-trip backfill.
Targets
- Decide what this blog is for and pick the stack
- Get a working scaffold deployed end-to-end before the day is over
- Take the call with the marketing candidate for OneProposal
Wins
- Blog live on the internet end-to-end in roughly four hours
- Picked Astro + MDX + Cloudflare Pages without overthinking
- Two clean content collections (journal + posts) instead of one mashed-together feed
- Took the hiring call, kept it warm, did not pull the trigger prematurely
Losses
- The domain naming question took longer than the entire engineering build
- Real OG image punted to Day 2
- About page left skeletal
- PostHog key fill happened manually rather than through a documented env-setup flow
Lessons
- Forty minutes of upfront planning before any code saved at least an hour of rework.
- Astro 6 template carries about 80% of the load. Customize the last 20%, do not rebuild the 80.
- Hiring is a math problem under uncertainty. The variance on "they walk away after I have already invested time" is what makes it hard, not the cost of the time itself.
Comments
Loading comments…