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: https://zeroindexed.com/nix-ejection-problem
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.
Photo Photo
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.
Photo Photo
Printers increasingly speak a standardised protocol, making it feasible to support printers without any drivers at all! https://lwn.net/Articles/857502/
On the different funding and maintainership models in FOSS: https://github.com/readme/unseen-oss
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: https://www.theregister.com/2021/06/16/glibc_gnulib_fsf_copyright/
Adding an argument to a function is a really compelling case for syntactic diffs. Line numbers remain super tricky: mapping overlapping positions spanning multiple lines back to lines isn't quite right yet.
Photo
A little more progress on my syntactic differ: now it only shows lines of things that have changed! Here's a Scheme example. Note that line 16 on the right has moved, but it's actually unchanged. Difftastic understands this :)
Photo
The internet is an incredibly hostile place for unpatched devices. I'd be nervous about booting any older operating system in a VM and getting online. Maybe there's a sufficient age where it's safe again? I'm not sure if an MS-DOS VM would get automatically pwned today.
One thing that bothers me about today's diffs: we often read changes in a format that patch can consume! Diffs are largely read by humans, but we have to mentally parse "@@ -40,7 +40,9 @@". Which line is line 40? Is it the first visible line, or the first changed line?
Photo
My syntactic diff tool basically works! Diffing trees and printing them in a comprehensible way is extremely tricky. I'm hoping to get something I can release once I've hammered out the bugs. WIP code is at
Photo
Showing 181-200 of 345 posts