Posts for year 2025

tags: #rambling

2025-07-14 23:56

Thoughts on Motivation (derivative)

I read Charity Majors' post about her motivation, and although I'm not even in the same galaxy as she is in terms of accomplishments, it inspired me to write about my own motivation. Charity describes her motivation as living a meaningful life, acting with integrity, and building things of enduring value instead of tearing them down.

I have a much smaller and simpler motivation. The thing that gets me out of bed in the morning is a deep, abiding, and ever-burning rage.

Don't get me wrong. I love the work I do, and I'm generally a happy and satisfied person. The rage is for anyone or anything that wastes peoples' time. We each of us have just this one wild and crazy life, and watching people have to spend it waiting unnecessarily for a Jenkins pipeline to run fills me with enough bitterness to poison an entire aquifer. When I see something that wastes peoples' time due to negligence? Because the person building it didn't care enough to invest a little more effort to save everyone who'd ever use that system? Hatred doesn't even begin to describe it.

A short digression. In high school I read the book The Once and Future King by T. H. White. It's a story about a young Arthur being educated by the wizard Merlyn. Part of this education involves Arthur (known here as the Wart) being transformed into various animals: a hawk, a badger, even an ant. The description of the way the ants think has always resonated with me:

The extraordinary thing was that he could not ask these questions. In order to ask them, he would have had to put them into ant language through his antennae—and he now discovered, with a helpless feeling, that there were no words for the things he wanted to say. There were no words for happiness, for freedom, for liking, nor were there any words for their opposites. He felt like a dumb man trying to shout “Fire!” The nearest he could get to Right or Wrong, even, was to say Done or Not-Done. [...] Later on, the Wart discovered that there were only two qualifications in the language, Done and Not-Done—which applied to all questions of value. If the seeds which the collectors found were sweet, they were Done seeds. If somebody had doctored them with corrosive sublimate, they would have been Not-Done seeds, and that was that.

The ants consider "Not-Done" as the highest apostasy. I share this to get as close as I can to explaining how I feel about things that waste peoples' time. They are "Not-Done", deserving of all the scorn and disdain I can possibly muster, and worthy only of being transformed into things which do not waste time.

I have worked, over and over in my career, to find ways to improve the performance of slow processes. I've managed, mentored, and generally tried to help out and answer questions whenever I can. And it's all out of a sense that our time is the most precious thing we have: and thus, to waste peoples' time, or to allow it to be wasted through carelessness or irresponsibility, is the gravest sin. I've seen systems that burned entire lives worth of wasted time. It's easier than you'd think; a system that wastes four hours per working day for about 700 people has, over the course of a single year, wasted an entire human life. I can easily think of a dozen systems off the top of my head that have serial-killer-level body counts when thought of in this way.

I don't have any delusions that I'm going to change my industry or make a big mark on the world. Mostly I try to go to work every day, to do my job the best I can, and to find every way I can to give people back a little bit of their time that would otherwise be stolen from them by incompetence or negligence. Maybe my example can help some of my colleagues learn to be a little more vigilant about the responsibility they take on when they choose how other people are going to spend their time.

2025-03-30 00:14

Automating Personal Workflows with Autokitteh

I wanted to build some workflow automation for various tasks I do often (like coming across a link that I want to share with my work after writing a little introduction message). I knew it would need to be flexible and customizable, so I wanted something I could run myself and control every aspect of.

After doing lots of investigation (primarily via the awesome-workflow-engines list), I settled on Autokitteh. It has all the features I care about:

  • Self-hosted (no SaaS)
  • Workflows can be defined and managed in plain text (so they can be versioned)
    • This eliminated most of the IFTTT and Zapier clones like Automatisch
  • Workflows can be written in Python
  • Pre-created integrations for services I use (for this purpose, mainly Slack and Todoist)
  • No "open-core" feature paywalls

The thing I liked most about it is how the workflow definitions let you set up integrations and provide them to the workflow code, so you can use the integrations in any way you can imagine instead of just the ways that come predefined. It also allows you to trivially mix and match integrations, so I can (for instance) take a Slack message and create a Todoist task from it just by smushing the two APIs together.

Read on to learn how I set everything up.

Read more…

tags: #emacs | #solved

2025-03-10 13:42

Solved! Terminal Emacs screen tearing/corruption with Unicode characters

I was running into a very strange glitch with terminal Emacs, showing up as all sorts of weird screen tearing and graphical corruption while moving around within and between files.

tl;dr It turns out that I had inadvertently included a Unicode variation selector, which is a zero-width character (so I couldn't see it in the code) but which was throwing Emacs for an absolute loop. Removing that character fixed the problem. Follow along below the fold to learn how I figured it out.

Read more…