On Blogging

October 6, 2025 0 min read Kevin Davis
#blogging
Handsome software engineer pondering what to write for a blog post.

“Be quiet, kids! Dad is building his personal brand.” (source: OpenAI Sora)

Coming Late to the Blogging Thing

I’ve been a professional engineer for well over two decades. I’ve seen a lot of fads come and go in that time. Some of them are probably here to stay (welcome, generative AI). Others are long forgotten: Fuzzy logic (Reddit) was the “next big thing” around the time I was finishing my computer engineering degree. If you have never heard of it, that’s ok. (By the way, I am not the original poster in the linked Reddit thread.)

One fad that has turned out to be persistent is the idea that “everyone should blog.” For the longest time I wrote this off as being akin to the “everyone should start a startup” tripe that used to be commonplace on Hacker News, where lots of 19-year-olds strived to ingratiate themselves with Paul Graham by starting go-nowhere companies in their parents’ basements while sharing their sage life advice.1

My reasons for not blogging were, I suspect, similar to those of the majority of engineers who choose not to:

  • My limited time would be better spent elsewhere.
  • Confidentiality obligations prevent me from discussing my professional work in too much detail.
  • Any supposed “personal brand” benefits of blogging are likely to be overstated.
  • Whatever I might write about, there is someone else who would undoubtedly do a better job of it.

Why I Finally Started

Paying my dues.

I have benefited tremendously from others’ blogs over the years when Stack Overflow (or, more recently, generative AI) queries proved fruitless. For instance, it was Kevin Kaichuang Yang’s blog post that set me on my way to multi-GPU model training in Pytorch, back when the official documentation was badly lacking in this area. Mark Volkmann’s “tmux in Cygwin” blog post (sadly no longer there) helped me to do small-scale Linux cluster administration much more efficiently, back in the days before Terraform or Chef or Puppet. Pradeep Loganathan got me past some of my WSL/CUDA hurdles when ChatGPT, Copilot, and Google otherwise could not. There are many more examples.

During that time I’ve also developed quite an extensive set of personal notes on everything from Linux GPU driver upgrades to dynamic time warping algorithms, and I refer to these somewhat regularly. A lot of this knowledge can be safely shared without compromising on my confidentiality obligations to my employer, and it has always felt a bit selfish to be keeping it to myself while benefiting so often from others’ sharing.

Even so, the initial startup hurdles of creating and hosting a static blog site prevented me from doing so for quite a while. I didn’t want to just throw up some Sphinx-generated blog, though some of the best technical bloggers do exactly that. I wish to have some degree of control over the layout and styling. I would therefore spend a few hours learning about CSS and HTML and static site generators, then life would intrude and I’d get sidetracked. By the time I got back into it weeks later, I’d have forgotten most of this.

LLMs to the rescue.

Having a large language model (LLM) companion has been essential to getting me off my duff to finally create something. I can say, “Please create an Astro layout using tailwindcss which has blah blah blah…” and get off to a decent start. Because I had previously learned the basics, I can understand what gets generated well enough to tweak it to my liking without having to resort to tedious LLM conversations: “Darker blue! Slightly larger! To the right! A bit more. Just a bit more…”

I still don’t blindly trust LLMs to generate code where it really matters, but if it happens to create a slight bit of extra styling cruft on a static website that only gets a few billion monthly visits? That’s fine with me.

”Oh come on. You must have an angle.”

Ok, admittedly there is some personal benefit to it. If you are thinking of hiring me, you can look at my personal website to get a fairly decent sense of who I am, how I communicate, and what I might be like to work with. You can then cross me off your list without us having to go through the hassle of an interview. Fine with me. FINE. Who wants to work for your lousy company anyways. It’s a win-win.

”You sold me! How can I get started on my own blog!”

Ok, I am not a web developer, as you can see, so please take my advice with a grain of salt. But if I had to do it all over again, this is what I would do as someone with prior coding experience in other domains:

1. Learn HTML and CSS.

Unless you are content with creating something bare bones or from a template (nothing wrong with either), you’ll need to have some basic understanding of HTML/CSS. The Mozilla Developer Network has some excellent learning material. No need to work through all of the exercises; the goal is to become just proficient enough that you can work effectively with an LLM copilot.

2. Create a simple static website.

Once you know the basics, use your LLM friend to create a simple personal web page. You can track the HTML/CSS source directly in Git for now, and link it to a hosting solution like GitHub Pages or Cloudflare Pages. I chose Cloudflare because I want to have some control over my hosting and domain, and I’m willing to pay a bit for it. I also considered Netlify, but I was scared away from it by some horror stories about people unknowingly racking up huge hosting bills. From glancing at their website just now it seems they may have since addressed this.

3. Use a static site generator.

You can get quite far with hand-edited HTML and CSS, especially with an LLM companion to help you refactor, but eventually you may want to consider learning how to use a static site generator. This allows you to generate the web page content from a series of small, reusable components, and to quickly write blog posts in Markdown or a similar format without needing to worry about styling every time.

The number of options can be overwhelming. I started learning Jekyll, which is what GitHub recommended at the time, but I soon encountered issues because GitHub only supported a very outdated version. I also didn’t want to learn the Ruby programming language for the sole purpose of maintaining a personal blog. Eventually I settled on Astro, and I’ve been very happy with it. The documentation and tutorials are excellent, and there is enough material out there that LLMs are quite familiar with it. I am pretty agnostic though; I likely would have been just as happy using Hugo or one of the other ones.

Closing Thoughts

Will I continue blogging over the long term? I can’t say for sure, but posting has definitely gotten easier as the design has stabilized somewhat.

One potential hazard to blogging is that for the things I understand really well, I sometimes unconsciously assume that everyone else must understand it really well too, and so I tend to focus more on recent learnings of things that I don’t know quite as much about. Rather than putting useful information out into the world, I just might be making everyone dumber. Sorry about that.

Footnotes

Footnotes

  1. The 19-year-olds have since grown up, and the tone now seems to be one of healthy cynicism regarding startup culture and equity.