Another view at Minard’s famous flow map, AKA “the greatest infographic of all times”
Much has been said about Charles Joseph Minard’s famous flow map titled “Carte Figurative des pertes succesives en hommes de l’Armée Française dans la campagne de Russie 1812-1813” (Paris, 1869) and it is universally praised for its comprehensive depiction of an impressive variety of quantitative data, hence there shouldn’t be much left to add to this. However, as indicated in a previous post, “Observing Minard Observing Napoléon – Observations on textual strategy in infographics by the example of the ‘Greatest Infographic of All Times’.” (2018), Minard’s map may not be what it seems to be at first glance. While we concentrated in this first post mainly on the aesthetic choices and what is actually shown and not shown in the chart and the general context of that sheet, both in presentation and history, we are here going to have a closer look at the very choice of presentation, namely the choice of a flow map and the implications thereof.
Text to Speech in JS, and a curious bug. Also, Safari desktop compatibility.
A curious bug, believed mitigated long ago, crept up again in meSpeak.js (an open source TTS for the Web in JavaScript maintained by me). On each 80th call, the internal eSpeak engine would crash on a round-off by one error. However, that error message never seemed right, as the abort message indicated a size of more than 1.8 GB for a relatively small and static internal file. Also, this didn’t happen on all browsers. A workaround was eventually found, where we would intercept this error, restart the engine, reload all relevant internal files and start over automatically.
However, this stopped working and the bug rose its head of rare, but questionable beauty once again. It doesn’t happen on all browsers, but, for me, it happens at least in current versions of Firefox. Even more, it seems to be a real Heisenbug, since the script exits on an “out of memory” exception on varying points depending on the specific version of the code. In the minimized production version, the code makes it to several debug messages before the final exit, in the unminimized test version, however, it exits on a different point, which renders intercepting that specific error a somewhat impractical endeavor. Also, the exception dosen’t depend on the length of the utterances spoken (thus suggesting that the “out of memory” exception isn’t caused by memory allocation of the actual code, but the result of cascading failures internal to the JS engine), it just happens on each 80th call of the method “speak()”, which triggers a run of the internal eSpeak engine. Which, on the other hand, provides a suitable point of access to an otherwise somewhat cryptic and inaccessible failure mode, namely, simply keeping track of the number of calls and automatically restarting the engine on every 80th call. (Mind that this may cause a small delay, but it’s still better than the script stalling on an uncatchable exception.)
Shout-out to Trent Murgatroyd for reporting the fault and testing!
This had actually been addressed in version 2.0.6, as of a few days ago (2020-04-17), already. But there was another issue, which had passed my radar, namely, the Safari desktop browser muting Web Audio on default. This is now addressed similar to how mobile devices are handled, by attempting to unlock audio on the first mousedown event occuring in the window. (Unlocking requires a direct user interaction. Hence, meSpeak.js must listen for a global user event. However, it neither blocks or consumes the event in any way, nor does it extract any data.) Additionally to this, meSpeak.js now also attempts to resume the audio-context on every call of the method “speak()” prior to playing any audio, in case it’s found in suspended state. (Again, this will be of any effect only, if the call was issued from code triggered by a user event. On the other hand, it doesn’t hurt trying.)
Proudly announcing version 1.1 of the PET 2001 online emulator.
Version 1.1 of the PET 2001 online emulator features a totally revamped mounting and loading mechanism for files. For users this means full access to disk directories and LOADing programs from inside BASIC. For all the nerdy details and some hilarious insights into Commodore IEEE file loading (like, “Where on Earth — uhm, in memory — is the BASIC scondary device address?”) follow the link:
The surprising mechanical store for exchangable fonts of the IBM card punches
Another recap from the days before the blog, this time about IBM card punch equipment. You may already know that some of the card punches featured a built-in printer to represent the data in human readable characters on the very top of a card. But did you also know that the font and character set used for printing were exchangable? Or how these electro-mechanical wonders stored them?
In this mini-series you may not only learn all about the astounding intrinsics (including interactive animations of the decoding mechanism), but, if you’re the lucky owner of such an amazing device, you may even design your own font or character set for your IBM 026, 029 or 129 card punch.
RetroChallenge 2018/04: Writing a proper Atari VCS / 2600 game
There’s a noble challenge, every programmer of self-esteem should obliege to at least once in a lifetime: programming a game for the Atari VCS, also known as “racing the beam”. In case you didn’t know, the Atari VCS (Atari 2600) has no video RAM and every line of raster image has to be composed on the fly. More so, you also have to maintain the vertical composition of the TV image, and there is no operating system, no ROM, just the bare metal machine and a trusty video/sound chip (TIA) to talk to. And there are only 128 bytes of RAM in total, already including the processor stack. To do this properly, it’s 6502 assembler once again, but this time every cycle counts.
Particularly, we do a classic two players console game with a twist. A classic game, like it was 1979, no additional hardware enhancements or fancy bank switching allowed. On the way, we learn about the Atari VCS and its hardware, and how to tackle the programming side of things. Moreover, there’s a tiny sprite editor for the VCS and even a synthesizer app to explore its somewhat unique sound generation. Also, it’s our first RetroChallenge project in color!
RetroChallenge 2017/04: Computer Space for the Commodore PET 2001
In 2017 I had a new toy and it was the 40th anniversary of the Commodore PET 2001, as well. So what may be more appropriate for RetroChallenge 2017 than to port Computer Space this time to the venerable PET? I always deemed it an interesting challenge to port an arcade game to a text only display, using nothing but the available characters. Could we do a free floating space shooter in PETSCII characters only and preserve some of the specific feel and attitude of the original game?
In the end, I (somewhat) succedded with a downloadable game for the PET 2001 (ROM 1 and ROM 2) and a special version for the C64. However, I actually deem the DEC PDP-1 to be the better gaming platform!
Have at least a look at episode 2, where we have a closer look at Computer Space and how early, CPU-less video games worked in general!
RetroChallenge 2016/10: Programming a 60 fps video game for early 1960s hardware.
After all the software archeology on Spacewar! (see below) I was keen to try some programming for the DEC PDP-1 of my own. What about doing my own game? After all, I knew my way pretty well around the PDP-1. So I picked the PDP-1 for the second edition of RetroChallenge 2016 — and managed to write a classic video game running on early 1960s hardware at 60 frames per second!
(No April Fool’s Day Hoax!)
Admittedly, I picked a game, which I knew would fit well the constraints of this particular machine, and I was standing on the shoulders of giants who did Spacewar!, like Steve Russell, Dan Edwards and Peter Samson. More so, the game, I picked, was heavily inspired by Spacewar!, which originated on the PDP-1, so it wasn’t much of a surprise that it should fairly conform to the capabilities of that particular machine. So, closing a never existing circle by a full 360° turn and a somewhat ironic twist in computer history, I ported the very first coin operated video game back to the computer, which inspired it in the first place. Ironically also, because “Computer Space”, despite its cheerful name, doesn’t feature a computer at all, but is rather a complex pattern generator in 74xx-series TTL logic, which we now had to simulate on hardware, which predated its TTL electronics by a decade. And, as a bonus, there’s now a classic single player shooter for the DEC PDP-1. (Eventually, the program ran on the real machine at the CHM.)