Vibe Coding vs. Vibe Engineering

I try to use Vibe Coding in Andrej Karpathy’s original sense:

There’s a new kind of coding I call “vibe coding”, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.

Which makes it hard to describe what I do, which is not that. I have been calling it AI-Assisted Programming, but that’s too long. Simon Willison proposed Vibe Engineering:

I feel like vibe coding is pretty well established now as covering the fast, loose and irresponsible way of building software with AI—entirely prompt-driven, and with no attention paid to how the code actually works. This leaves us with a terminology gap: what should we call the other end of the spectrum, where seasoned professionals accelerate their work with LLMs while staying proudly and confidently accountable for the software they produce?

I propose we call this vibe engineering, with my tongue only partially in my cheek.

He wrote this in October, but it only started to sink in with me recently when he wrote about JustHTML and how it was created. Read the author, Emil Stenström’s, account of how he wrote it with coding agents. This is not vibe coding. He is very much in the loop. I think his method will produce well-architected code with minimal tech debt. Like I said in my book: “The amount of tech debt the AI introduces into my project is up to me.” I think this is true for Emil too.

My personal workflow is to go commit by commit, because it’s the amount of code I can review. But, I see the benefit of Emil’s approach and will try it soon.

Fuerte Y Suerte

Instead of New Year’s Resolutions, I pick a yearly theme to help me make progress on my goals.

In 2023, it was to Make Art with Friends, which led to me joining Toastmasters and a sketch group. I also started a meetup for local software developers. In early 2024, I extended it by joining The Useful Authors group. Then, in 2024, I chose the theme of “Heavy Lifting” to encompass my fitness program and the work it would take to write a book. Last year, it was Just Keep Swimming, which meant to keep working on my book, Swimming in Tech Debt, and get it done.

This year is about strength training, learning Spanish, and marketing my book. I chose to represent that with the theme “Fuerte Y Suerte”, which means “Strong and Lucky” in Spanish.

The Strong and Spanish part are clear. By lucky, I mean in the sense of writing a bunch of content on this blog, my podcast, my email list, LinkedIn, and other places and hoping that one of those things takes off (as I described in Blog Posts, Randomness, and Optionality). I think of each post as a lottery ticket with a low fixed cost and huge upside potential. Randomness is the Great Creator.

In the past, this led to My Guest Article on Tech Debt for the Pragmatic Engineer and making the front-page of HN, which I described here: My “Show HN” Follow-Up for “Swimming in Tech Debt”. In my life, it has led to writing a book for Manning, being invited to conferences, jobs, etc.

A couple of days ago, I revived my podcast, and the next episode will be about getting lucky.

Perfection Is Not An Accident

I took the Seven train into Manhattan often as a teenager. At Queensboro Plaza, I could see the billboard for Eagle Electric with their motto: “Perfection Is Not An Accident”. I think about it a lot. But, I probably have not seen it in person since the nineties. It’s gone now.

Until recently, I didn’t even remember the name of the company, just the motto. I wrote a little bit about this in my book, discussing the power of pithy, memorable value statements.

A year ago, I was at the New York Historical Society, and I saw a painting of it by Pamela Talese (you can see it on her collection of signs).

The feeling of nostalgia was overwhelming. I was instantly sent back to a conversation I had with my high school friends about the sign and its motto.

Luckily, she sells archival quality, Giclée prints of the nighttime one. I bought one and put it right over my monitor so I can see it when I work.

Image

From Art & Fear [amazon affiliate link], I learned to use my personal imperfect work as a jumping off point to a new work. This painting, which shows a company striving for perfection, but coming up short with an imperfect sign, reminds me to keep trying.

It’s one example of Environment Hacking, and what I wrote about a few days ago in Use Motivation To Program Your Environment.

22nd Blogaversary

I started this blog on December 23, 2003. I was about to quit my job and my plan was to do some consulting.

The first post I wrote was an Automated Software Process Checklist. My plan was to help people automate engineering processes. At the time, daily builds with automated tests and deployment was not common, but I had been doing it for a few years at Droplets (inspired by eXtreme Programming Explained [affiliate] and similar books).

I posted fairly regularly for a few months, but then got a new full-time job. There were ebbs and flow over the next 17 years or so. I posted more when I was consulting/job hunting because more people were checking it out. When I went independent full time in 2021, I started posting a lot more. Seventy percent of the posts on this site were written since then.

Over the last 22 years, this blog has helped me get work, find a publisher, get invited to conferences and podcasts, and it’s a resource for me to know myself better. It doesn’t make money directly, but it’s been a force multiplier for my career.

Use Motivation To Program Your Environment

The end of the year, for me, is a time of very high motivation. My intention is to run through the new year with whatever goals I was planning. I adjust and figure out what I can actually do.

I also put in permanent (or hard to change) environmental changes. I believe in Environment Hacking, where I put things in my environment that trigger my behavior or remove things that are triggering behavior I don’t want. For example, to get off of nearly all social media, I removed the apps and blocked the sites in my /etc/hosts file.

My motivation goes up and down throughout the year. I am personally highly motivated from January through my birthday in early April, which happens to coincide with the first thirteen weeks of the year. I use this time to plan for when my motivation will crater. I do things that will make it easy to keep on track. For me this means not having to plan, just execute.

Here are some examples of what I have done when my motivation is high:

  1. When I feel like cooking, I cook something healthy in bulk. I’ll have something good to eat later when I don’t feel like cooking. I buy tempeh in bulk and freeze it.
  2. I use widgets on my phone homepage to show me how I am doing with goals or help me do them (e.g. DuoLingo and Cronometer).
  3. I have a pull-up bar in my office to encourage me to dead hang more. There’s a dumbbell set next to my desk. I have a underdesk pedaler. I am generally trying to make my day less sedentary.
  4. I bought a print that I find inspiring and hung it above my monitor (more on this later).

The general idea is to put things in places where you can’t help to see them to make it easy to do the behavior later when your motivation drops.

2026 4DX: Fourth Discipline

This is the fourth and final post in series of how I am implementing The 4 Disciplines of Execution [affiliate] for 2026 towards one goal each in my business, fitness, and personal life. I discussed the first [1st DX], second [2nd DX], and third [3rd DX] disciplines in previous posts.

Personal Growth: [1st DX] Get to CEFR level TBD in Spanish. [2nd DX] Focussed and repeat listening to beginner Spanish podcasts. [3rd DX] Count of podcast listens per week (at least 5 is my preliminary goal)

Business: [1st DX] Make Amazon Ads for my book break even. [2nd DX] Find readers, ask for reviews. [3rd DX] Review count per month (goal is 3 per month)

Fitness: [1st DX] Improve 5 lifts by TBD. [2nd DX] Lift 3x/week. [3rd DX] Pounds added to lifts.

The final discipline is accountability. For my business goal, I already am a member of a writer’s accountability group. For my personal growth goal, I want to get good enough to attend the local Spanish learning meetup by the middle of the year.

And finally, for fitness, I decided to rejoin Crossfit. I need access to barbells and racks (and small increment plates). It’s across the street from my apartment, and there’s a chance it could become a third space.

To add another layer, I will post monthly on this blog as well with just an update and my assessment of whether this plan is working or not.

Write While True Episode 47: Write Useful Books

It’s been a while. Episode 46 came out in late January of 2025 and I’m recording this now in mid-December, so it’s been about 10 or 11 months. When I last left off, we were in the middle of season 4, and I was telling you about all the things I was learning as I was writing my book, Swimming in Tech Debt.

Well, I’m happy to say that I finally finished Swimming in Tech Debt, and it came out in September of 2025, a couple of months ago. And then the print book came out about a month and a half or so later, and I’ve learned so much about the book publishing process that I want to share with you.

Transcript

Improving My Social Connection Index

I went to PINC, a single-track conference with over a dozen speakers covering the general theme of People, Ideas, Nature, and Community. This was their 11th year. The talks ranged from techniques to help teens manage social media, to cheese sculpting, to collecting data on homelessness, to disaster resilient housing (and more).

One talk stood out to me as being applicable to my life. Aaron Hurst talked about his plan to open up US Chambers of Connection around the country. I learned about his social connection index and the six points of connection. There were two points on that list that I need to work on: (1) a neighborhood contact (2) a third place.

When I first moved to Sarasota, my building had frequent events where I met many of my neighbors. But after COVID, they all moved out of the building. I have not focussed on meeting new neighbors, which I intend to change in 2026.

I would also say that I do not have a “Third Place” as defined by this index. I do belong to a couple of meetups and online communities. I am also a member of the local Toastmasters and Art Center. These types of communities are covered by other items in the six points of connection.

What I like about a Third Place is that it isn’t as tied to people or time, but more to the place itself (where you might find new people with a common interest). The idea is that you could pop in at any time for serendipitous connection. The classic examples are a church or senior center, but those aren’t right for me.

I have been considering rejoining Crossfit for access to barbells, but I might also meet other like-minded people. It’s possible that this helps me find accountability as well.

LLMs Are Good At (some) Languages

Yesterday, I wrote about how I am going to use Page-o-Mat to make some Supernote page templates. Page-o-Mat is a python program that lets you describe journals using a YAML based configuration and then generates a PDF. Since template pages are just a PDF, you can use Page-o-Mat for that too.

My first step was to see if I could get ChatGPT to help me. At first, I gave it a link to the docs, but it seemed to have trouble accessing it. So, I just grabbed the YAML for my 2025 journal and pasted it in the chat. Then, I asked what kind of template pages I should make. Its ideas were pretty good and it generated some for me, which worked great.

But, then I asked if it could just make the PDF directly—which it did. On inspection, I see the PDF was generated by https://www.reportlab.com, which says that their “flagship commercial tool for making beautiful PDFs quickly using Report Markup Language and a preprocessor. Create PDFs the same way you create dynamic web pages”. So, it’s essentially (like Page-o-Mat) a language for generating PDFs.

It’s interesting that ChatGPT makes PDF with a language tool even though PDFs themselves are a language. Knowing the internals of PDF, it makes sense. You need to remember the exact byte locations of each object you create to write out the PDF trailer at the end. It’s extremely easy to mess up and there isn’t a good tool for debugging it. Humans would be horrible at making it by hand, and so are LLMs (but we both can make PDFs with tools).

Page-o-Mat Can Make Smartnote Page Templates

In 2024, I used my tool, Page-o-Mat, to make a PDF journal for my Smartnote. It worked fine, but there was no way to insert pages or add more internal (or external) linking to a PDF on Smartnote.

I think a better way to use the Smartnote is to use the native .note format, though, not a PDF. This format supports template pages, and luckily, you can put the Smartnote template pages in a PDF, so it’s possible to do that with Page-o-Mat. This lets me use all of the features of the Smartnote, but still have pages that have spaces to fill in.

I have to think through what I want in my template pages, but I’ll share the configs and PDFs when I make them. If you already have ideas, go check out Page-o-Mat on GitHub.