4-bit Rules of Computing, Part 5

A software team once changed their version control system's API, removing what they saw as redundant legacy functionality. What they didn't realize was that this particular piece of "technical debt" was actually a load-bearing wall in a customer's factory automation pipeline. The result? A business losing thousands of dollars per hour while the production line stood idle.

In software development, every API endpoint, command-line interface, or file format becomes part of someone's workflow, automation, and daily operations. When Microsoft introduced the Ribbon interface in Office 2007, they broke a promise that millions of users had built their muscle memory around. When a content management system I worked with removed its multimedia MIME-type feature in the name of code cleanup, it left a trail of broken websites and frustrated users in its wake.

We need to carefully balance between necessary changes and breaking changes, which brings me to Rule A: "Fix Mistakes, don't Break Promises". When does a "mistake" become serious enough to justify breaking a "promise"? How do we make necessary changes without leaving our users stranded?

This is the sixth part of my blog series expanding on my 4-bit rules of computing.

Read more…

Password databases: updating master key

It's been five years since I created my Unix password store, encypted with my GPG key pair password-store. That key expired and now I need to update my database to a new master key.

Now is also a good time to clear out the git history. My key has not (to my knowledge) been compromised, so I don't need to remove all instances of passwords encrypted with the old key, but it will be nice to clear out the old history.

Read more…

Control Characters

Have you ever wondered about the Unix terminal control characters: Ctl-C to interrupt a program, or Ctl-D to close the terminal? Do you know what Ctl-L does? Why does your computer beep if you press Ctl-G, but not other control keys?

The answer is that by holding down the Control key and typing a letter, you're sending a “control character” to the computer.

But what are these control characters, and why is there a seemingly random association between letters of the alphabet, and functions of the terminal?

Read more…

GitLab Profile Multi-project Pipeline

I my previous post I relayed setting up a GitLab scheduled profile to add blog posts from this site's RSS feed into my personalised GitLab profile. I discussed setting up a new profile project, creating the README, fetching and parsing the RSS and inserting it into the README, and creating a pipeline to add the changed README back to the profile project. Finally I scheduled the pipeline to run once daily.

Since I don't actually write a post every single day, this mainly runs to no purpose, consuming CI minutes and filling the job logs with pointless runs. It would be better if the pipeline had a job to update the README only after I've actually made a blog post.

Read more…

Personalised GitLab Profile page

On November 22nd, GitLab announced the release of 14.5, in which you can personalise your profile with a README. This README gives you scope to spice up your GitLab profile page quite a bit, for instance you could:

  • Add more details about yourself, beyond what you can fit into GitLab's small biography field
  • Link to other pages, or to projects you would like to feature, turning your profile into a portfolio
  • Include formatting with any of the markup formats which GitLab can understand

This weekend, I decided to turn my personal GitLab profile into something a bit more personalised, and include an automatically updated list of blog posts from this blog's RSS feed.

Read more…

My Favorite Text Editor in the 2020s

For decades, my favorite place to write has been in the venerable text editor / programmer's environment EMACS. It's a superb LISP environment, with a long history, is fantastically hackable, and has a mode for nearly everything.

But for the past three years, I've abandoned it for a new friend, from a most unlikely source: Microsoft's Visual Studio Code. You know, the Flight Simulator company ;-)

This is a big change for me. Why after all of this time have I done this? The simple answer is: it Just Works. It's EMACS' spiritual successor in many ways.

Read more…