rollcat's website

Posts

Sync vs async work

This is a reflection on PG’s famous essay, “Maker’s Schedule, Manager’s Schedule”. The fact I’m writing this while in the middle of producing a live stream is only a tiny bit ironic.

Read more (3min; ~600 words)

Posted on
Why getopt?

I use getopt almost exclusively in all software that I write by myself, and often insist on using it when collaborating with others, even when the language convention is to use something else.

The reason is simple: getopt is a part of the user interface, and user interfaces should strive to be simple and consistent. As an end user, I find it jarring when, for example, I have to run a script by specifying the interpreter by hand, or when the language-specific extension is a part of the file name. This is an implementation detail which should not concern me - the #! should take care of that for me. Similarly, getopt is over 40 years old, is supported nearly universally, and is easy to understand both for the user and the programmer.

Read more (6min; ~1100 words)

Posted on
Calendars

Observation: most calendar software I regularly use (the default apps on Mac & iOS; World Time Buddy, & some others) is not great when dealing with events that end past midnight. For example, in WTB I can’t select a range outside the 24h period spanning the “home” time zone; Apple’s apps show the event on the next day as if it was scheduled ON that day (which Calendar Timeline doesn’t do); etc.

I consider this an accessibility problem, where accessibility is defined as “making your software accessible to everyone”.

(Permalink)

Posted on
Docker: ls without ls

Quick tip: if you want to inspect the filesystem of a running Docker container, but it doesn’t even include a shell, let alone ls, you can do the following:

docker export some-container | tar -tf -

You can also print out the contents of a single file with tar (omit the leading slash):

docker export some-container | tar -xOf - etc/some/file.txt

(Permalink)

Posted on
Runaway complexity

Last week I had to work on a Django app again. Since Python is a very portable language that works on many different platforms, of course I’ve had to work on that in a Docker container, in a Linux VM in Qemu, on an arm64 Mac running macOS. Also because the official Docker for Desktop app is somewhat annoying, I’ve been giving Lima a try. Also because the standard Django development web server doesn’t offer the best debugging experience, I’ve been running an alternative server through django-extensions.

I’ve counted at least 8 distinct software vendors so far in that paragraph. When I’ve hit a bug that completely killed my productivity, it was far from obvious which one to look at. Let’s take a dive and see what happened.

Read more (6min; ~1300 words)

Posted on
Quick tip: soundproofing your homelab

Quick tip: if your home server happens to be a humble PC tower, rather than a rackmount blade, you can insert a layer of styrofoam or bubble wrap underneath it, to reduce the noise transferred from the fans & hard drives into the floor or the desk.

One day: a fanless server, with all SSDs and no HDDs.

(Permalink)

Posted on
The Old Computer Challenge v2: Conclusion

Today marks the last day of the challenge.

Read more (1min; ~200 words)

Posted on
The Old Computer Challenge v2: Day 4 Summary

Short update on the challenge: all the smart home stuff is so annoying.

Read more (1min; ~200 words)

Posted on
The Old Computer Challenge v2: Days 1&2 Summary

Days 1&2 of The Old Computer Challenge v2! I found that being almost constantly online during the working hours actually takes a lot away from the challenge - I’ve had to make a few adjustments.

Read more (3min; ~500 words)

Posted on
Participating in The Old Computer Challenge (v2)!

I’ve decided to participate in the The Old Computer Challenge v2. In this challenge, we pretend we’re on a 1990s-style modem (metered) connection, so we’re only allowed to be online for one hour a day (except for work).

My partner Alida has decided to join as well.

Check out all posts in this series.

Read more (2min; ~300 words)

Posted on