// recent posts

Computer programming is, fundamentally, about two things:

  • Problem-solving using computers
  • Learning to control complexity while solving these problems

I have a hard time imagining a future where knowing how to solve problems with computers and how to control the complexity of those solutions is less valuable than it is today, so I think it will continue to be a viable career even with the advent of AI tools.

Carson Gross, Yes, and...

Mermaid Diagramming in Jekyll in 2025

This blog is built with Jekyll. I have been using Mermaid Diagrams in documentation at work. I find Mermaid to be a quick and easy way for me to add visual information to a document. If you are not familiar, Mermaid uses “Markdown-inspir...

Taking the Pain Out of PHP Development with Docker Compose

I won’t do PHP for love or money. Since it’s known that I’m a Software Person, friends and relatives will occasionally ask for help with some random issues and I’m always happy to take a swing at it. To take some of the pain out of it, I...

Building Emacs 27.1 on macOS Big Sur

It’s been a while since I posted a Emacs build walk-through, one version of macOS has come and gone and a new major version of Emacs has arrived, let’s get to it.

Not Stupid SSH Tricks: Automatic ssh-add

If you password protect your SSH keys (and you should) and you don’t store those passwords in your macOS keychain or Linux equivalent (slightly paranoid, but not a bad idea), you have to add keys to ssh-agent with ssh-add before using th...

Updated Emacs Open with Line Numbers

Not long ago I shared a Bash function that takes filenames in the form of filename.rb:NNN, where NNN is a line number, opens the file in Emacs, and jumps to that line. This format is commonly used in error messages and the output of test...

Opening Files with Line Numbers in Emacs

Long ago I shared my EmacsClient setup. The short of it was that I always have Emacs running and set $EDITOR in such a way that things like git commit open a new frame in my existing session. I also had a simple Bash alias that let me op...