Fixing freetype in Debian Buster

Starting in Buster, Debian enabled the subpixel hinting functionality in Freetype (commonly known as the “Infinality” patches, though the enabled functionality is a small, more performant subset of the patches actually submitted by Infinality). To no one's greater surprise than my own, this badly broke my font rendering. Here's how I fixed it.

More…

Thinkpad X62 Review

The Thinkpad X62 is a “restomod” of the well-received Lenovo Thinkpad X61 (produced in 2007) with a replacement motherboard and components, and usually a display upgrade, in the original case and keyboard. It's an interesting exercise in combining the lost positive attributes of older hardware (high-quality keyboard, 4:3 screens, comfortable surfaces) with some of the gains from newer hardware (faster components, broader and newer hardware standard support). I've been using one as my primary laptop since 2018, and these are my thoughts about it.

More…

An Interesting Coding Problem

A colleague referred me to an interesting coding brainteaser. The problem statement was (paraphrased) roughly as follows:

Given a list of integers, produce an output list which consists of the product of every integer in the input list except the one at the corresponding index.

For example, given the list [1, 2, 3, 4, 5], the output should be [120, 60, 40, 30, 24].

As a followup, what if you can't use division?

More…

Pelican

I spent the day porting my blog from a hacked-together homegrown static generator using Python and Jinja to Pelican, a free software static generator using Python and Jinja. The result should be at least 90% invisible, which is partially a result of the shared foundations, and partially a testament to good, flexible design on the part of Pelican.

More…

Compile-time Typechecked Sum Types in Java

Java has compile-time typechecked sum types with exhaustive matching built into the base language.

“Of course it doesn't” you say? “Their absence is one of Java's most glaring deficiencies”? Well, kind of. Read on to see what I mean.

More…