miniblog.

I wrote a non-trivial graph algorithm and it worked first time! I was suspicious until I tried it on a three node graph and was kinda comforted to learn it still had bugs.
I'm not convinced that offering the staging area is a good default for git. It's an abstraction that newcomers have to learn before their first commit. Subversion style "commit every tracked file" isn't as pretty (`git add` is general) but it's the common case.
I'm reading papers about tree diff techniques, to try to improve my structural diff tool. Most papers focus on diffing XML. Their techniques are clever and relevant, but crikey some of the intro quotes really haven't aged well.
Photo
On building intuitions on monads and functors: https://www.jerf.org/iri/post/2958 (Also, TIL that the function type is a functor in Haskell!)
Nix and patching the Linux kernel whilst still tracking upstream packages:
Nix solves the package manager ejection problem
This blog post operates on two levels. On a very direct level, I built a desktop machine with an AMD Radeon RX 5600 XT graphics card and I’ve been fighting a rather annoying interaction with dual monitors on Linux. Here’s how it goes: After some defined period of inactivity, the system tries to standby / suspend / turn off both monitors. Both monitors respond to the DPMS commands and briefly blank. After a few seconds, one of them comes on again, quickly followed by the other one, in an arbitrary order. XFCE “helpfully” detects this as a monitor hotplug event and pops open a display configuration dialog. Stepping away to make a coffee now means periodic flickering and coming back to 5 - 10 XFCE monitor configuration dialogs taking over my screen. Very annoying! Googling around finds this Ubuntu issue from 2018 that seems to describe the same problem, but the documented workaround of amdgpu.dc=0 as a kernel parameter does not work. My graphics card decides to go into a glitchfest and the kernel doesn’t even make it past initrd. That Ubuntu issue links to this upstream Freedesktop issue, which is old enough to get migrated to this new Freedesktop issue, where some kind soul has put together a patch that applies cleanly on recent kernels. My understanding is that the monitor starts polling its inputs when it enters a DPMS mode, and the patch adjusts the timeouts on the driver to ignore the polling pulses instead of treating them as hotplug events. So that’s one level: write a blog post, stuff it with enough keywords that other affected users can find it, tell them to USE THE KERNEL PATCH until a fix is integrated into the mainline. A decent public service, but on its own not interesting. On a second level, I’ve recently been experimenting with NixOS as my daily driver and it rises to this challenge in ways that ArchLinux never could.
Readable tree diffing is a really interesting problem. When do you highlight lists? Do you highlight all the lists enclosing a modified subtree? What about comments? I'm relatively happy with this case, but I think the outermost lists shouldn't be highlighted at all.
Photo
My new diff tool is now sufficiently feature complete that it can diff its own source code! I've found a bunch of new bugs, but that's dogfooding :)
Photo
Butter, an experimental programming language exploring ideas for low level efficiency, has one of the best looking roadmaps I've seen in a long time!
Photo
Smart appliances with internet connections often have all sorts of security issues, privacy issues, etc. They'd be a huge help when daylight savings time occurs though. That almost makes up for it.
Still tinkering with tree diff heuristics. Sometimes it works really well, but other times it's too keen to match up lists.
PhotoPhoto
I'm still trying to find a colour scheme I like for my diff tool. I need two different styles: added code should be more prominent than moved code. ANSI colours are extremely limited, so I tried using green / green background. Using bold and bright green seems to work better.
PhotoPhoto
Printers increasingly speak a standardised protocol, making it feasible to support printers without any drivers at all!
On the different funding and maintainership models in FOSS:
Dependabot takes a probabilistic approach to compatibility: how many other projects failed CI when upgrading? It's neat, but I wonder what the base rate for spurious CI failures is.
Photo
glibc and gnulib are looking at removing the requirement for FSF copyright assignment, following gcc:
Showing 181-195 of 345 posts