So as not to bury the lede, I'll get to my point: Semantic Versioning is a meta-API, and maintainers who are cavalier about violating it can't be trusted to created stable contracts. I've lost patience for breaking changes making their way to my code bases without the maintainers incrementing the major version of their projects, especially in language ecosystems where Semantic Versioning is expected, and in such cases I'm going to begin exploring alternative options so I can ban such libraries from my projects---personal and professional---altogether.
I'm pleased to announce the initial, beta release of xhotplug, a small utility for automatically responding to X11 montor attach/detach events.
I make it a rule to choose my tools carefully and to invest the time to learn them deeply. QEMU has been one of those tools that I've wanted to learn how to use for a long time, but was always a bit intimidated. I actually had been able to use it indirectly via libvirt, but it felt like I was cheating my rule by using one tool to manage another. Despite my vague sense of guilt, things continued this way until I read a recent(ish) introductory post on QEMU by Drew DeVault. The article is well written (as per usual for DeVault), and you'd do well to read it before continuing here. The point is that it was the kick in the pants I needed to finally roll up my sleeves and learn some QEMU.
I love you; you complete me.
I first came to Vim by recommendation. I was looking for a good Python
IDE (at the time I was new to the language) and one recommendation was
to use Vim with a variety of plugins added on top. That Vim could do a
lot of the things I thought only an IDE could do came as a bit of a
shock. I spent a summer as an intern using Emacs at a Unix terminal, but
didn't have enough curiosity at the time to use it any differently from
notepad.exe. I spent that summer wishing I had automatic features for
completion, indentation, and all the things that made me appreciate
the IDE's I used in college. How naive I was!
This week I dealt with a problem that had been bugging me. I noticed that the time a took to start a new Zsh terminal session went from essentially instant to around 4 seconds 1. I take some pride in running a lightweight system, so the thought of having to wait a few seconds for my terminal emulator to display a prompt feels like a personal affront. My system wasn't just behaving badly, it was challenging me by way of insult.
Accepting the challenge laid before me, I took to my favorite search
engine to see what tools were available to help me understand what was
suddenly performing so poorly. Oh, okay. This post says that Zsh
includes a script profiler. All I need to do is turn it on in my
.zshrc file, like so: