New and Improved

Last update: 27 October 2019

Update Log (covers finer-grained changes)

Slave Lives

Taking away a person's freedom and confiscating the entire product of their life's work is morally abhorrent. But what about doing it to a large population, just in smaller slices?

Tools for Online Privacy

It seems like wherever you go on the Internet, there's somebody—governments, big tech companies, Internet service providers, and a multitude of nefarious or just annoying actors—trying to snoop on your activity. Here are some tools, accessible to people without extensive technical experience, which allow you to reclaim some of your privacy and protect your communications from eavesdroppers.

Mind Grenade

In the fall of 1969, I made my first foray into digital electronics by designing and building my own version of a random music generator invented by Harry S. Pyle. Fifty years later, it still works. Explore digital design from half a century ago, how this device which looked and sounded like people thought computers ought to worked, and enjoy a modern software emulation that runs inside your Web browser.

Units Calculator

Units Calculator is a Web interface to the GNU Units utility which allows conversion among thousands of physical units, constants, and currencies. Units Calculator may be used to perform complex scientific and engineering calculations involving physical units and guards against common errors due to dimensional incompatibility. Units Calculator is 100% compatible with GNU Units, but as a Web application can be used from any platform with a Web browser. Currency exchange rates and precious metal prices are updated daily. See the Introduction for a tutorial, or proceed directly to the Expert page, which contains a click-to-copy table of common units.

NDOC: The Null Document Processor

From the 1980s, NDOC is a text formatter which produces justified text for monospace devices and requires little or no mark-up in source documents. It can number lines and pages, set text justified, centred, or right-aligned, and format with specified margins, line width, page length, and page heading. Written in portable, if antiquated, C.

ISBNquest: Web-based ISBN Utility

ISBNquest processes International Standard Book Numbers (ISBNs) with a Web-based interface and validates, interconverts formats, inserts proper punctuation, analyses the components of an ISBN, generates a bar code, and looks up the publication on Amazon, showing title, author, publisher, publication date, and other information. A link is composed which credits purchases made through it to an Amazon Associates account.

Bioshock Infinite: Play-through

Having largely ignored video games since the era of Pac-Man, in July 2018, I decided to explore a state of the art video game, the “first-person shooter” Bioshock Infinite. This is a beautiful example of three-dimensional rendering of interactive fiction. This document is my contemporary notes while playing through the game.


Illustrated, can't fail, easy-to-make delicious meals with all natural ingredients and minimal time and work to prepare at home.

Code Is Speech

During the “crypto wars” of the mid-1990s, the slavers tried rolling out a particularly pernicious doctrine under which computer code and, by implication, electronically-mediated communication in all forms, was not considered speech worthy of protection compared to the spoken word or physically printed documents. We thought we'd won, but, as is so often the case, they're back! This time they're trying to use the distribution of files containing instructions for manufacturing firearms and components as a wedge issue, once again arguing that computer files and design documents are not speech. If they win, that wedge will be driven to remove protection for all forms of speech in the form of computer files. We must not let them win this one.

UNUM: Unicode/HTML/Numeric Character Code Converter

Web authors who use characters from other languages, mathematical symbols, fancy punctuation, and other typographic embellishment in their documents often find themselves juggling the Unicode book, an HTML entity reference, and a programmer's calculator to convert back and forth between the various representations. This stand-alone command line Perl program contains complete databases of Unicode characters and character blocks and HTML/XHTML named character references, and permits easy lookup and interconversion among all the formats, including octal, decimal, and hexadecimal numbers. The program works best on a recent version of Perl, such as v5.8.5 or later, but requires no Perl library modules. New version 3.0 (July 2018) updates to the Unicode 11.0.0 standard and the new scripts and characters it adds.

Simulated Annealing: The Travelling Salesman Problem

The travelling salesman problem—finding the shortest itinerary to visit a set of cities— is a classic of combinatorial optimisation: easy to state but hellishly difficult to solve. This page demonstrates the technique of simulated annealing to find near-optimal solutions to this problem.


Lewis Carroll's classic poem from Through the Looking-Glass, 1871.

Nixie Tube Clock

In the bronze age of computing and electronics test equipment, nixie tubes were commonly used for decimal digital displays. This clock, available both in kit form and assembled, combines that vintage technology with digital electronics for a retro look and modern practicality.

Fun with Radiation

Explorations of radiation around the house and in the air with a Geiger counter.

Talkin' 'Bout My Innovation

In the late 1980s, due to the software patent craze, Autodesk was in a mode of patenting everything we could think of in order to build up a portfolio of patents to use defensively if somebody came against us with a (probably) bogus patent. My contribution was a means for computing with physical units which I'd just implemented in a rudimentary form for AutoCAD. Here is the original disclosure of this invention and the U.S. patent was it was granted more than four years later.

UNIVAC Memories

UNIVAC Memories returns to the 1960s and early '70s to explore the room-sized UNIVAC mainframe computers I programmed in those days. Discover million-dollar memory, two and a quarter ton 100 megabyte hard drives, minus zero, and other curiosities from the brash adolescence of the second generation of computers.

Update: November 2017 update adds a Univac Document Archive with hardware and software manuals, product brochures, and related documents from the 1107–1100/80 era.

Fifty Years of Programming and Moore's Law

The occasion of the fiftieth anniversary of the first computer program I wrote provides an opportunity to reflect on progress in computing, Moore's law, which has largely driven it over that period, and where things may be going in the next decade, which I've taken to calling the Roaring Twenties.

Commodore Curiosities

In the late 1980s I became interested in mass market home computers as possible markets for some products I was considering developing. I bought a Commodore 128 and began to experiment with it. I wrote several programs, some of which were published in Commodore user magazines. Here are three of those programs: a customisable key click generator, a moon phase calculator, and a neural network simulator. All programs can be run under the VICE emulator on modern machines.

Marinchip Systems: Documents and Images

In 1977, I founded Marinchip Systems, with the goal of developing personal computing hardware and software that provided the power and convenience afforded by contemporary timesharing systems at a fraction of the price. Starting in 1978, Marinchip delivered the first true 16-bit personal computer on the S-100 bus, based on the Texas Instruments TMS9900 microprocessor. This document is an archive of documents and photos from the Marinchip era, including scanned copies of many of the hardware and software manuals.

ISBNiser: Validate, Convert, and Link to ISBN-10 and ISBN-13 Codes

International Standard Book Numbers (ISBNs) provide a unique identification for each edition of a published book, and are essential when citing works or linking to them on on-line booksellers. This command line utility, implemented in Perl, validates both older ISBN-10 and current ISBN-13 formats, converts between them, and creates links which can be used to order the book from Amazon, optionally crediting the purchase to an Amazon Associates account.