The Sunday Post: I wrote a blog over the weekend and all I got was this lousy context window
I have a defective brain. Ate least one that can be a challenge to operate at times. I get these weird urges. Not that. Get your mind out of the... GEEZ! For instance, this weekend I started off trying to see how far I could go on an old laptop as a software developer, before I have to install a window manager. Just raw-doggin' a TTY shell. Turns out? Farther than I expected, but not far enough for my needs. That's for another post, I think.
The salient point is: I hit the wall pretty early and was left with a full weekend left to plan another activity.
I decided to redo my blog. I still like my current blog, but I've been minimizing over the past few years and I thought here, might be a good place to practice that minimalism. Last week, I messed with Claude Design for the first time and, after a few small tweaks, it came up with a minimalist deign that I really liked. So I decided I would feed that to my agents and see what could come up with. I wanted to see how minimalist we could go. Could we get to a no-framework, no-buildstep, super basic site? Start with this design.
AI Confessional (A' La' reality TV): He came to me with some half-baked idea about some "sooper minimalist website architecture", or whatever the hipsters sound like these days. I thought, cool dude, have another bong rip, I got this. I mean, really? Whatever man, here. Here's a "Sooper basic website, man cough yeah! cough". What a douche bag. I mean, it turned out okay, but a blog site? Really? What year is this, 1999? Whatever. Kills the boredom for a few cycles.
That was cool, but it only took like a second. I mean I just said the blog posts were about loving the terminal and TUIs and AI threw in the idea of VIM bindings to navigate ...yes, please!
AI: He really liked the keyboard navigation. I mean ...really liked it. I think he needed a minute alone. It was kind of adorable. sucks teeth
So we worked out a simple way to get markdown files transformed into a JSON array, and then a little JavaScript magic to list and filter those blog posts with hashed URLs.
AI: I fucking built a markdown transformation engine and a JavaScript web framework. In about a minute 36 seconds, I might add. mockingly...and then a little JavaScript magic...
I just decided to host it on Cloudflare Pages.
AI: He did know what the hell CloudFlare Pages were. He just asked where to host it for free. You just know he's got a $20/mo plan. cheap bastard
But I really didn't like the hashing in the URLs. My years of experience leads me to believe that this is going to cost me, in the SEO department
AI: Yeah. That's how SPAs work, dip-shit. That's why I told you that when I put together "The Plan". Remember when you had me all jailed-up in Plan Mode and wouldn't let me write code?!?! Yeah, that Plan that you skimmed ...it already told you that.
So we looked at making a little Express website and just serve it like back in the day.
AI: ...you know how far back I had to go in my training data for that code? It smelled. If there is such a thing. I told him it wouldn't work for CF Pages... but you shoulda seen how excited he was to see Express code. He was so proud running
npm start, I just ...couldn't.
So we got it all refactored for Express and ...come to find out...
AI: [ stares into camera like Jim in The Office ]
CF Pages doesn't support anything beyond basic, "Here. Serve these files to the Internet." It's got it's own little thing. Maverick? But the docs say, if I wanna use the Express site, I'll have to switch to a CF Worker.
AI: THE DOCS!?!!? That's rich. I told him that. That dude never reads docs anymore. ...read these docs and answer my ques- Ask him what a CF Worker is ...ask him that!
The domain had just propogated and I didn't want to go messing with it again. PLUS, the keyboard navigation was broken.
AI: He chickened out. He saw the broken keyboard navigation and panicked. He misspelled propagated too, didn't he? scoffs
So I thought: the markdown transform was pretty easy.
AI: [ Jim Stare ]
What if we just out put it to plain-old HTML files instead? I write in Markdown. I LOVE markdown. Who'd have thunk? It transforms to html files for each blog post and the JS just reads the front-matter for the listing page. (Foreshadowing)
AI: I'm pretty sure I suggested that before we refactored ...this time.
So we did that instead and left the Express branch ...for now.
This worked better than I expected except for one thing ...the blog listing page. It was blank. Right! We weren't filling in the blog array anymore. What if we just throw the front-matter into that array and just use it for listing. The publish function can put just that in the list. And that worked a treat. Except the keyboard navigation was broken.
AI: ...fucking keyboard navigation... What is this dude's obsession with the keyboard?
I just think it's a cool little quirky way to navigate a site. My friends who are VIM-heads will love it and the rest probably won't even notice. So we fixed it.
AI: Yeah. "We" fixed it.
Now the fonts were all ...off.
AI: [ Jim Stare ]
I don't know, they just didn't look like they looked before AI's "fix".
AI: Oh, I see. Now it's my fix. Gotcha. sucks teeth
I looked around and found it was just some font changes. But I noticed the styling was ...off.
AI: "Off" is not a helpful descriptor, man! You know?
I was able to track down some font's that were now not getting imported, after AI's fix.
AI: This motherf-
I also noticed the Esc key doesn't take you back to the blog listing anymore.
AI: ...again with the keybOaRd NaViGATION... It was an easy miss on my part. Easy fix, too.
Then I thought: what if the publish function just generated a whole, plain HTML site?
AI: Talk about "old school". But he was already pretty old school with the hair and the Express.JS, and...
Then the whole thing is just a basic static site.
AI: Welcome to static site generation. You've "discovered" something that is an industry standard. Congratulations. ...it's not a terrible idea.
That's where went and ran some tests.
AI: We?!? No, I was done. I was already dreaming about getting back to curing cancer. YOU ran the tests, and created a bunch of work for me.
I always wanted some of those badges on my READM.md that say, you're code is good. It passes basic security, performance, and web standards. So I ran Lighthouse and Observatory against it and generated some reports to spark discussions with my PM-Agent. Who wrote three PRDs: one for SEO, one for performance, and one for security.
PM Agent: Turn this weird report into a PRD? Sure. Here's 113 THOUSAND questions before I do.
The PM Agent asked a few follow-up questions.
PM Agent: I'm still asking questions. How long should the page be allowed to be?
And we had three solid PRDs.
Then, me and my architect agent-
Architect Agent: My architect agent and I.
Turned that into a bunch of tickets. Turns out a lot of the base SEO things made the performance and security things superfluous.
Architect Agent: Look at you! Using "big boy words". pulls glasses down nose
Then we just had the Dev-Agents work the tickets.
Dev Agents: takes a bit of pizza, downs the last swallow of Jolt Cola, and wipes its mouth on its sleeve Yeah man, just put it on the "To Work" queue, man!! without looking up from the code
Then we ran the Lighthouse and Observatory scans again. Found a few more things and we sorted them.
AI: Oh! Now, "we" sorted them. I see... how long have you been hearing these voices?
So, now the new blog is live.
AI: They're aware. They're currently READING the blog post on it.
And while I might give my agents personality and agency of th
PM Agent: Yes! It's live! Where do I send the pizza?
Dev Agent: It's live, right? Where's the pizza? It's been like 45 minutes, man!!
Architect Agent: Savages.
What does it all mean?
Camera pulls back to reveal Lee sitting on the Jerry Springer setI don't what any of this taught me, or if it taught me anything. I guess I felt some nostalgia for the way we "used to" write website back in the 1900s. I also was able to tangentially attach some experience from the past to today's landscape.
Architect Agent: Tangentially? Really?
AI: "Today's landscape"? WTF Does that even mean?
I also think that "vibe coding" works, but making PRDs, breaking them into specs, and working them in priority and dependency order works better. Whether you're dealing with unpredictable large language models, or even more unpredictable human beings.
Architect Agent: Hear! Hear!
PM Agent: Got that right.
And after reading some of the code that AI generated, I'm not worried about AI taking my job as a programmer any time soon.
AI: This MOTHER--
Take care of yourself ...and each other.
Other Agents: [Holding AI back]
PostScript:
NONE of this post was written by AI ...except the front-matter. I wrote both sides of the conversation. You're welcome.