mass:werk / Blog

“Now Go Bang!” is named after a source comment in Spacewar!, the first digital video game.
It marks the very instance, when a spaceship which has been dragged into the gravitational star starts to explode. What follows, is impressionist pixel-dust floating along the ship’s former trajectory in a sparkling bloom of phosphor activation.

"now go bang" as found in the source code of Spacewar!

RSS feed: Subscribe.

Announcing meSpeak.js 2.0

Text to Speech in JS, now even better.

Announcing meSpeak 2.0

I am happy to announce a long planned for update to meSpeak.js, an open source TTS for the Web in JavaScript. This version brings some major update (and some minor discontinuities in API as well.) In a nutshell, meSpeak.js is the open source eSpeak program crosscompiled to JS using Emscripten (a minimal POSIX runtime to run LLVM compiler output in JS) running in the browser with some additional API glued on top. MeSpeak.js is based on speak.js, which has been an early demo application for Emscripten, but differs somewhat in architecture and features (like access to the entirety of eSpeak options, facilities for export and/or buffering of audio data, a built-in audio playback API, modular voice and language descriptions, etc) and also in compatibility.

Continue reading…

LGP-30 — A Drum Computer of Significance

Affordable computing by rotating bits at 3700 rpm.

In July 1956, when IBM was still considering its answer (which was to become the IBM 1401) to the French challenge that was the Bull Gamma 3 (1952), then posing a serious threat to IBM’s monopolic line-up of punched card appliances, Librazette, Librascope’s employees’ and PR gazette, proudly announced that the company’s new LGP-30 computer had been promoted to production.

The computer had been developed by Stan Frankel as the MINAC at CalTech in 1954 and Librascope had bought Frankel’s design (apparently in the same year), releasing it as the LGP-30 in 1956. (…)

Royal Precicision LGP-30
LGP-30 sales brochure, Royal McBee Corporation, 1956.

The computer generally known as the Royal McBee LGP-30 was a desk-sized appliance and weighed in at about 800 pounds (360 kg). It came with a Flexowriter-style console typewriter and consisted internally of just 113 vaccum tubes, 1,450 solid state diodes, and a magnetic drum for memory (4K of 31-bits words) and 3 registers. It plugged into an ordinary wall socket, from which the combined circuitry drew up to 1500 Watts. All this could be yours for just US$ 47,000 ($433,000 in 2018), which was actually the first viable option for small-to-medium scale computing.

Continue reading…


“Today, you are an Astronaut. You are floating in inner space 100 miles above the surface of Earth. You peer through your window and this is what you see. You are people watching. These are fleeting moments. These videos come from YouTube. They were uploaded in the last week and have titles like DSC 1234 and IMG 4321. They have almost zero previous views. They are unnamed, unedited, and unseen (by anyone but you).”, 2019 (screenshot).

This is a great little project! — Don’t fail to experience this inner journey through these ghostly voids of abandoned footage! Ephemeral at its best! Chapeau!


Via HN,

The Peculiar Case of a Self-Referential Computer Instruction (DEC PDP-7, 1964)

Or, how to lift Kurt Gödel’s hat by −0.

Lifting Gödle's Hat by -0.
Photograph of Kurt Gödel by Richard Arens, 1954,
“Oslo” PDP-7 by Tore Sinding Bekkedal, 2005 (Wikimedia Commons).

A recent discussion on the Retro Computing Forum turned my interest towards the DEC PDP-7 in general and it’s peculiar lack of a dedicated instruction for two’s complement subtraction (or, that is, subtraction at all) in the absence of a two’s complement negate instruction …

Continue reading…

Instant PET: Commodore BASIC as Data-URL

mass:werk proudly presents: Running BASIC on a virtual PET 2001 from URL-data.

Network URLs for a virtual PET

So you want to show your friends a little BASIC program or want to solve some problem with (retro) style? Despair no more, since help is near…

More specifically, just a click away, at, where you find my enhanced version of Thomas Skibo’s in-browser PET 2001 emulation. What’s new is an additional mode, where the emulator loads (and runs) a program from data encoded in URL-parameters — as provided either in the query-string or in the URL-fragment (hash). And you may use this for immediate execution in direct mode, as well!

Continue reading…

Digital Video Game Firsts — Michigan Pool (1954)

On the origin of digital video games and the complexity of classification.

When it comes to the first known digital video game (i.e. an interactive game implemented on a digital computer communicating its state by some kind of graphical display), it’s always also about a question of definition. Personally, I’d opt for a requirement of a digital computer running a simulation in real-time and providing means of interactive manipulation of said simulation by some kind of user input (without any interruption to the flow of the program). By this, we define a distinctive problem class for this, namely interactive, visual real-time computing. So a turn based game, like OXO, wouldn’t be a member of this class, while, say, Spacewar! would happily fit the definition.

Pool on MIDSAC, 1964
A game of Pool on MIDSAC, 1954.

So I’d like to divert your esteemed attention to a certain, lesser known edge case, “Pool”, implemented by William George Brown and Ted Lewis in 1954 on the one-of-a-kind MIDSAC computer.

Continue reading…

A Curious Bug in the Commodore BASIC Tokenizer Routine

Investigations into a lesser known bug in Commodore BASIC abbreviations.

There is a well known, special feature of the BASIC implementation of Commodore 8-bit machines, namely abbreviated BASIC commands. While this is probably more a bug than a feature, this bug has a curious bug of its own. Reason enough to start an investigation.

VT100 Series CRT Typography
A slightly embarrassed Commodore PET.

Why are there these abbreviations, how do they work, and, what could possibly go wrong?

Continue reading…

Raster CRT Typography (According to DEC)

A closer look at the glyphs drawn by the DEC terminals VT100 and VT220.

Recently, I engaged in a bit of analog media emulation, namely for the purpose of the reenactment of raster CRT graphics as seen on “glass terminals” like the iconic VT-series by the Digital Equipment Corporation (DEC). An endeavor, which raises a few questions, like, is there anything special to the media, what did the fonts really look like, and can we reconstruct them from specifications?

VT100 Series CRT Typography
(Not a DEC manual.)

Since ROMs are available (and modern TrueType fonts, as well), we may start there, since they are the closest, we may get, to the real thing, aren’t they? What could possibly go wrong?

Continue reading…

Binary Grain — The Hare in the Mandelbrot Set

Images from the outer limits of numeric precision.

Take any numeric renderer which allows you to zoom in repeatedly. For instance a Mandelbrot set renderer, because, Mandelbrot sets are always fun. For instance this one (by your’s truely). As you keep zooming in and zooming in, after a while, eventually, the rendered image will suddenly show pixelation. And as you are zooming in again, the pixels will increas in size. However, this is not a fault of the visualization layer, it’s just that you hit the mathemitcal barrier of numeric precision. The grain in binary computers…

Binary grain to du numeric precision

Continue reading…

Forgotten JavaScript: Object.handleEvent()

Tales of event-handling in JavaScript and some historic oddities of Netscape Navigator 4.

An interesting aspect of web technology is that solutions to specific problems tend to be invented more than once. For some reason or the other, a given solution doesn’t catch on and a new generation of developers will eventually address the wheel by the help of a new proposal. In this case it’s about object isolation and event handling.

code example for object.handleEvent

And while we’re at it, we may have a closer look at some of the (other) oddities of the Netscape Navigator 4 browser, as well…

Continue reading…

Legacy Graphics Range for Char8.js

The Terminals Working Group proposed a new Unicode range earlier this month (Jan. 4, 2019) for the purpose of retrocomputing and emulation. As of version 1.1, the newly proposed glyphs are already included in the Char8.js library for generating 8-bit characters from Unicode.

Here’s a sample, rendering the new glyphs in double height using a 16 × 8 character matrix:

The proposed legacy graphics range, rendered at 8 x 16 using Char8.js

The proposed range incorporates glyphs from various legacy systems, including

Related Links:

Anatomy of a Wordpress Backdoor

Reverse engineering the command and control structure of a Wordpress attack.

Software archeology usually relates to dated programs, like the bit we did on a 1960s graphics demo for the PDP-1. However, the same skill set also applies to reverse engineering more recent bits and bytes. In this case it’s about a Wordpress attack and its command & control structure. Recently, I discovered a new variation of the command & control structure…

Anatomy of a Wordpress hack

Continue reading…

Design & Engineering

Engineering design according to the Report of the Feilden Committee on Egineering Design, delivered to the government of Harold Macmillan in 1963:

G.B.R. Feilden, Engineering Design, Report of the Royal Commission, 1963: Engineering design is the use of scientific principles, technical information and imagination in the definition of a structure, machine or system to perform specified functions with the maximum economy and efficiency.

Now redo it in cross-stitch. ;-)

Snowflake Archeology (DEC PDP-1)

Software archeology of an early computer animation (1960s) for the DEC PDP-1

Snowflake (compare the post below) is a small graphics program written for DEC PDP-1 somewhen in the early to mid 1960s. In essence, Snowflake is a kaleidoscopic program, mapping a list of moving points multiple times onto the screen in a starlike manner. It may be the first of these programs, at least, it’s an early specimen of the species.

Snowflake for the PDP-1 (montage)

In order to learn how it does its trick, we engage in a bit of serious software archeology. All the fun is provided: PDP-1 assembler code, intricacies of display instructions, disassemblies, we even provide a little hack of our own to demonstrate the algorithm (which happens to be much like an once original form and isn’t without a beauty of its own). However, strap yourself for a lengthy read…

Continue reading…

Portraits and Selfies

Portraits have always been a means of self-celebration and display, both of figure and social status, but also a means of reading – not only of physiognomy, but also of the essence of a person. By the democratization of photography and increasing accessibility of technological tools the portrait in its current form of the selfie hasn’t only become ultimately linked to narcissism, but has also become a means of linking over social networks and accumulating symbolic wealth on the respective status page, the new symbolic home.

Dito von Tease, 2018
Image: Dito von Tease, 2018.

Dito von Tease, a Bologna (Italy) based digital artist, has ingeniously mixed the two forms, the traditional portrait and the selfie, “showing subjects [of traditional art] in authentic and modern selfie poses. An iconoclastic project that blends together two apparently heterogeneous aesthetics, creating an ironic and surprising result.”


Snowflake: The Original Virtual Christmas Ornament

Snowflake for the PDP-1

It may be just the right season to remind of one of the first computer animations, “Snowflake” written in the 1960s for the DEC PDP-1. Despite various research efforts, the author of this amazing little program remains still unknown, which is quite a bity, since s/he deserves to be rembered along with the program.

Click the image for an emulation and/or have a look at some images of the real thing as hosted at the DigiBarn museum’s website.

Minard / Morse / Tufte and Authenticity on the Web

Observations on information spread and authenticity of well-known objects on the Internet.
(Also, a visual whodunit. And a new reference image.)

Minard / Morse / Tufte (comparison)

When I was recently reviewing various versions of image files representing Charles Joseph Minard’s famous chart of Napoleon’s Russian Campaign of 1812-1813 from 1869 for my discussion of the subject (see below), I noticed something peculiar: While there are various scans of the graphic available on the Web, in varying resolution and compression quality, almost all of them seem to depict a single, uniform object. However, there are just a few exceptions. Notably, these exception differ in the weight of the black print, especially the stroke widths of any black lines and by this the overall balance, and color. Most notably, these few exceptions can be traced back to just two authentic sources, both official image from French libraries. Something peculiar seems to be going here. — Time to investigate…

Continue reading…

Observing Minard Observing Napoléon

Observations on textual strategy in infographics by the example of the “Greatest Infographic of All Times”.

Observing Minard Observing Napoléon (title)

In November 1869, at age 88, a year short before his death in October 1870, Charles Joseph Minard published a sheet with two graphs, one of them titled “Carte Figurative des pertes succesives en hommes de l’Armée Française dans la campagne de Russie 1812-1813”, commonly known as “Napoleon‘s March on Moscow”. It is this final work of the French master of statistics and visualization, which survived in collective memory still to the present day, about 150 years later, which is probably much like it was intended by its author. Thanks to authorities of the field, like Howard Wainer and Edward Tufte, who suggested that this “may be well the best graphic ever produced”, Minard’s March on Moscow enjoys an even inreasing popularity, with Tufte’s careful suggestion soon becoming the trope of “the greatest infographic of all times”. — But, is it?

Continue reading…

Anatomy of a Random Number Generator

Tales from the realms of software archeology.

DEC PDP-1 at the Computer History Museum

Recently, I returned my interest to Spacewar!, the first digital video game, particularly to differences between early versions, like Spacewar 2B, and the better known, later versions, like 3.1 and thereafter. One of these differences, particularly of interest here, is in the random number generator, implemented by a macro named "random" (what else?).

Continue reading…

Not xkcd: Failing the Nerd-Test

Not xkcd: Failing the Nerd-Test

Visual Vacation

Feast your eyes.
This is a web page. (Justin Jackson, 2013)

A New Website and a Blog

After just 19 years, I got a new website! The old, now retired one had been in charge since 1999. It held up pretty well for a number of years and then various attempts to a redesign met appeals for preserving the design for historic reasons, so it was somewhat under preservation order. However, times change and so do objective demands…

So what has changed in the past 19 years? Not so much for design principles itself, especially, since in the late 1990s flat design was pretty much a thing for professional understatement, which provided a bit of timelessness. (There had been also a recent trend regarding legibility vs illegibility in visual design, but, while this was reflected by a particular design element, this wasn't much of an issue for this website.) What really changed, is the size of display pixels, text-sizes in general, and overall display dimensions.

Around the millennium, a certain minimal display size was (finally!) guarantueed, with displays promising to eventually only increase in size. Then, the standard display pixel ratio was still 72dpi. While multisync CRT displays where usually driven at a higher resolution, especially on PCs, Windows made up for it by a rather big standard display size. (In fact, websites used to size the typography down by a notch to compensate for this. As in “<font size="-1">…</font>”. But beware of Windows changing Arial from bold print to letter spaced at small text sizes!) Also, the general trend in web typography was towards a small, clear print — remember those 7 point pixel fonts used in Flash applications? In the end, this added up to a typography much too small and too faint for modern displays and reading habits, which is, why there was now an objective need for a redesign.

Moreover, and probably most prominently, displays not only became bigger, as promised, but also radically smaller, as in mobile, raising additional requirements for a wider separation of elements and touch targets. While table based layouts, if done right, where generally responsive (compare the current trend in grid layout, which is basically the same), this didn't work out well with a second, new requirement, namely accessibility. Especially, since the provisions used earlier to target handheld or accessibility related devices were depricated and have come out of use since. (Compare accessibility and handheld media selectors vs media queries and WAI-ARIA.)

Time for a new approach: The new site should meet all those requirements, and, ironically (if you do know some of my work) it does so without using JavaScript (any live bits are done in SVG and/or CSS). Also, sticking to a tradition of lean resources and fair content provision, there's no user tracking whatsoever.

While we are at it, what about a blog, a quick box of virtual index cards and assorted notes, something I was wanting to do, even before I started the original website? Sure, there are things like G+, but those public, social network oriented forums provide not the means for a medium to long text form, possibly including explanatory graphics and live content. However, G+ (as long as it is still a thing) isn’t entirely out of the picture, as I will relate to it for any discussions.

So here you are, have fun!