page = leah blogs
url = https://leahneukirchen.org/blog
2004 / 03 04 05 06 07 08 09 10 11 12
2005 / 01 02 03 04 05 06 07 08 09 10 11 12
2008 / 01 02 03 04 05 06 07 08 09 11 12
2009 / 01 02 03 04 05 07 08 09 12
2010 / 02 03 08 09 10 11 12
2011 / 01 02 04 12
2012 / 02 08 12
2015 / 02 12
2021 / 01

20jan2021 ·

Unfortunately, most of these things are on websites taken down already, so this post will refer to pages on the Internet Archive extensively. [Update 2020-01-16: His son Joe Tilbrook sent me a mail stating that http://qef.com/ is up again.]

Around 2016, I swooped a copy of Caltech qed from USENIX tape 80.1 and tried making it work on modern platforms, with moderate success. Thanks to efforts by Arnold Robbins there is now an QED Archive which also features a copy of 1992 QED from Toronto, which contains contributions by Tom Duff, Robert Pike, Hugh Redelmeier and David Tilbrook. If you want to run it yourself, there is a modernized, UTF-8 aware version available now!

David’s opus magnum was a suite of tools called QEF, quod erat faciendum . Euclid wrote this at the end of geometric constructions, and in a software sense, we want a build system to produce what was to be made . At its time of creation, David was responsible for maintaining a (for the time) large system, essentially a Unix distribution. Tooling was stuck in the era of 1977’s make(1). For the details and basic ideas, see Tilbrook and Place (1986), “Tools for the Maintenance and Installation of a Large Software Distribution” (Huge thanks to Alan Grosskurth for making a copy available.) My favorite footnote is the one about their Prolog prototype of a build system: “Is the cray free? I need to reinstall /bin/true!”

The QEF whitepaper from 1996 explains the system at a more developed state.
What is intriguing is that the whole toolkit is created in classic Unix manner from small tools and little languages . I acquired an evaluation copy of QEF in 2015, but sadly it had no copy of QED included. However, I could read the full manpages for many of his tools.

case the same way, but modulo 5.

24dec2020 ·

— Bo-hohoho-ne (@theonebean) December 20, 2020

23oct2020 ·

I was mostly familiar with the Incompatible Timesharing System (ITS) of MIT (written for a PDP-6, later on a PDP-10), due to its leakage of concepts and culture into Lisp Machines and the GNU project. And of course, Berkeley is known for developments around Unix in the late seventies which then turned into BSD. However, I had only remotely heard of WAITS, the operating system used at the Stanford Artificial Intelligence Laboratory, which first ran on a PDP-6, and later on a PDP-10. Initial development was a based on the standard DEC monitor (“kernel”). [2020-10-26: Rich Anderson points out that it was not based on TOPS-10, but rather a spinoff.]

I think the record-oriented file system of WAITS was actually key to support editing big files in this environment. Other systems at the time did not support this as well: Unix ed loaded the whole file into memory [2020-10-25: as Eric Fisher points out, ed uses a temporary file to keep blocks if the buffer reaches a certain size] and wrote it out again, and Unix consists of many small files not larger than 1000 lines. On ITS, the only bigger files I could find were assembled from other inputs, or mail archives which were only read or appended to, but not modified inside.

c062c7589

01jun2020 ·

11may2020 ·

I have been using Emacs since 2001, any only really learned Vim in 2007. Of course, I did quick admin edit tasks with it before, but in 2007 I had a small job where I had to develop on machines across the ocean, with only

didn’t exist yet), efficient use of Vim was essential. After the summer of 2007, I was fairly familiar with Vim. I still use Emacs for my main editing and programming tasks, but on remote machines and for small edit tasks I primarily use Vim.

For quite some time—as my research will show, March 2016—, I have been annoyed by a directory named

runit,1 `-sh,30996 -c urxvt `-urxvt,30997 `-zsh,30998 `-zsh,31055 `-mkdir,31058 /home/leah/bin/mkdir --help `-pstree,31060 -sap 31058

. I added it in 2013. Even before I added the

flag in 2016.

26apr2020 ·

I wondered if a Forth with fewer than these 5 words can still be complete, and a bit of research turned up a paper by Mikael Patel from 1990. It’s written in Swedish, but we can figure out the essentials from page 4:

# du --apparent-size -shc /opt/texlive/20* 4.9G /opt/texlive/2017 5.5G /opt/texlive/2018 6.2G /opt/texlive/2019 6.2G /opt/texlive/2020

6.6G /opt/texlive/2020

4.2G /opt/texlive/2017 4.7G /opt/texlive/2018 5.3G /opt/texlive/2019 5.3G /opt/texlive/2020 20G total

# jdupes -r -m /opt/texlive/20* Scanning: 729045 files, 53145 items (in 4 specified) 467364 duplicate files (in 208444 sets), occupying 13469 MB

# du -shc /opt/texlive/20{20..17} 5.2G /opt/texlive/2020 672M /opt/texlive/2019 1.5G /opt/texlive/2018 1.1G /opt/texlive/2017 8.4G total
So you can keep around TeX Live 2019 at the cost of 12% it’s original size, and even older versions for less than 25%.

18mar2020 ·

Last Sunday, we had local elections in Bavaria, and somehow I got nerd-sniped into looking at the proportional representation method that is being used now as of 2020, which is the Sainte-Laguë method .

v: 10400 3400 6200 s: 15

v % 0.5 20800 6800 12400f v % 1.5 6933.333 2266.667 4133.333 (v%)'.5+!s 20800 6800 12400 6933.333 2266.667 4133.333 4160 1360 2480 2971.429 971.4286 1771.429 2311.111 755.5556 1377.778 1890.909 618.1818 1127.273 1600 523.0769 953.8462 1386.667 453.3333 826.6667 1223.529 400 729.4118 ...

,/r 20800 6800 12400 6933.333 2266.667 4133.333 4160 1360 2480 2971.429 ...

^,/r 234.4828 251.8519 272 295.6522 323.8095 357.8947 400 427.5862 453.3333 ...

|^,/r 20800 12400 6933.333 6800 4160 4133.333 2971.429 2480 2311.111 2266.667 ...

s#|^,/r 20800 12400 6933.333 6800 4160 4133.333 2971.429 2480 2311.111 2266.667 1890.909 1771.429 1600 1386.667 1377.778

x:681 v%x 7.63583 2.496329 4.552129

v: 9983378 11756412 1007445 1559070 8878524 1419438 1597499 1318396 395847 273557 86275 142051 339665 247453 528617 732056 120877 s: 80 +/s>(#v)^<>,/(v%)'.5+!s 20 23 2 3 18 3 3 3 1 1 0 0 1 0 1 1 0

For funsies (and because I’m pretty bored), we can contrast the new election algorithm with the previous ones. At the 2014 election, the Hare/Niemeyer method was used. Here’s the code, perhaps you can figure it out:

This yields the same result as Sainte-Laguë for this election. There is still a significant difference between these methods: if we compute how many more votes mut would have needed to get a seat, it’s 6220 additional votes with Sainte-Laguë, but 26105 with Hare/Niemeyer!
Until 2010, the d’Hondt method was used. Here, we just have to tweak the

Copyright © 2004–2021 Leah Neukirchen