New and Improved

Last update: 20 October 2021

Update Log (covers finer-grained changes)

Blockchain Tools

Fourmilab Blockchain Tools provides a variety of utilities for users, experimenters, and researchers working with blockchain-based cryptocurrencies such as Bitcoin and Ethereum. General-purpose tools for Bitcoin and Ethereum address generation and management include: Tools for analysis of the Bitcoin blockchain (these require access to a full Bitcoin Core node with transaction index) include: Programs are written in the Perl and Python languages, developed and maintained using the Literate Programming methodology.

Floating Point Benchmarks

There are many disadvantages to being a balding geezer. In compensation, if you've managed to survive the second half of the twentieth century and been involved in computing, there's bearing personal witness to what happens when a technological transition goes into full-tilt exponential blow-off mode. I'm talking about Moore's Law—computing power available at constant cost doubling every 18 months or so. When Moore's Law is directly wired to your career and bank account, it's nice to have a little thermometer you can use to see how it's going as the years roll by. This page links to two benchmarks I've used to evaluate computer performance ever since 1980. They focus on things which matter dearly to me—floating point computation speed, evaluation of trigonometric functions, and matrix algebra. If you're interested in text searching or database retrieval speed, you should run screaming from these benchmarks. Hey, they work for me.

New September 2021 updates adds Raku (Perl 6) to the C, C++, Chapel, Ada, Algol 60/68, COBOL, Common Lisp, Erlang, Forth, FORTRAN, FreeBASIC, Go, Haskell, Java, JavaScript, Julia, Lua, Mathematica, Mbasic, Modula2, Pascal, Perl, PHP, PL/I, Prolog, Python, Ruby, Rust, Scala, Simula, Smalltalk, Swift, and Visual Basic (6 and .NET) language implementations of the floating point benchmark, and includes a comparison of the relative performance of these languages.

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.4-14.0.0 (September 2021) updates to the Unicode 14.0.0 standard and the new scripts, characters, and emoji it adds.

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.

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.