Kragen Javier Sitaker’s home page

Hi, I’m Kragen. Here is an incomplete list of my web pages.

Software, programming, and system administration

The Tao of Programming, translated by Geoffrey James, is a metaphorical and allusive book on the experience of programming computers. I didn’t write it; I just host it.

The memory models that underlie programming languages is a draft essay on a subject I have rarely seen discussed: the different approaches to representing ontological concepts and the relationships between them with hunks of computer memory, thus enabling us to write programs.

isinstance considered harmful explains how Python’s isinstance violates object-orientation, why that is bad, and when you should do it anyway.

Bytebeat is a genre of ultra-minimalistic algorithmic music in which a single C expression generates the waveform of a tune as a (generally pure) function of time. One of the environments available for playing with it is Pytebeat, which is an interpreter for a C subset that I wrote in Python, mostly on the train on the way to the nightclub where I was going to perform that night. It worked okay, and people danced, but they didn’t invite me back.

Counting Characters in UTF-8 Strings Is Fast describes a debate that was current in 2008 about the right way to handle Unicode strings. I argued that UTF-8 was a perfectly adequate representation.

A paper algorithm notation is a much terser alternative to pseudocode for programming on paper or whiteboards. So far, I find it much quicker to write but slower to read. It’s part of my dev3 repository, a hellbox you can browse on the web or clone with git, which is part of my sw tree, containing software I’ve written. Other hellbox git repositories in there include netbook-misc-devel, aspmisc, and inexorable-mis.

Other things in that sw tree include 81hacks, where I was putting together a DHTML hack a day in order to challenge myself until I stopped; an RPN-interface calculator supporting vector values and infix output; laserboot, an ongoing project to bootstrap self-replicating manufacturing with low-power laser cutting; w32dry, a super minimal Win32 GUI application framework that supports cross-compiling from Linux; peg-bootstrap, a self-compiling PEG; some output from synthgramelodia, a grammar-based stochastic melody generator and synthesizer (which is itself found in aspmisc); laserpoints, a simple DHTML graphics hack; Aikidraw, a simple DHTML painting program; an explorable explanation of the Burrows-Wheeler transform; and many others.

Ur-Scheme is a minimal self-hosting compiler I wrote in 2008 for a subset of the Scheme programming language, targeting i386 assembly. It doesn’t include call/cc or a garbage collector, but it sure is fast. You can clone its source repository with Darcs. Maybe someday I will import it into Git.

Improving my keyboard input on Debian GNU/Linux describes how to use xmodmap, Emacs, and the compose-key facility to get better keyboard input on X-Windows, including on Debian, Ubuntu, Linux Mint, Fedora, and similar systems. It covers workarounds for even fairly old software (circa 2005) but includes advice applicable on current systems (2016). I should probably update it for XKB, because xmodmap is working worse and worse.

Binate: A very compact database query language based on binary relations is an exploration of a database query language design that is terser and has less abstraction overhead than Datalog or SQL. I don’t have a nailed-down spec for it or a usable implementation; Binate is just a thought experiment for now.

I’ve disassembled and analyzed some tiny demoscene demos, including fr-016: bytes and Klappquadrat, and maybe some others. The notes on those pages about QEMU and GDB and whatnot may be useful if you’re doing something similar.

How you should set up a full-disk-encryption passphrase on a laptop explains how to use cryptsetup, how to generate good passphrases, and so on. It’s relatively up-to-date as of 2016. Mounting a whole-disk-encrypted Debian disk on a new computer explains how to use cryptsetup to use the command line to mount LUKS-encrypted disks you’re not booting from, which I usually don’t have to do any more, finding it easier to rely on GUI file managers.

How to Find Security Holes is a very basic introduction to the topic I wrote in 1998. Some of the advice still kind of holds up. I gave up on computer security entirely a few years later, but other people keep referencing this page.

Communications media such as fonts

The “oilpencil” and “pencilitalic” fonts are handwriting-style TrueType fonts I designed; that page explains how.

Alphanumerenglish is a proposal for spelling English phonetically using ASCII characters without, mostly, sacrificing the upppercase/lowercase distinction the way X-SAMPA does.

The Egg of the Phoenix is a draft design — or really working notes for a design — for a time capsule that circumvents the Rosetta Stone problem by including a durable solid-state computer.


I wrote Why Egypt’s popular rebellion is the greatest historical event in a decade, and how Barack Obama missed the boat in early 2011 about the events that later became known as the “Arab Spring”, and which now (in 2016) seem to be turning into World War III.

I wrote How False Rumors Can Cost Lives in 2009 in response to some dangerous paranoid conspiracy theories about the H1N1 North American flu epidemic.


The page you're looking at (last updated 2016-11-30) is kind of a placeholder page, but my old home page was getting way too outdated; I hadn't updated it since 2006. It lists some things this one doesn’t. There are also snapshots of my home page from 1998-03-21, 1997-11-01, and 1997-10-30, and there is an archive of older stuff.