Whilst meandering on the Web, I ran across a YouTube
video of the BBC 2's Ceefax service. Ceefax was the British version of Teletext, which was, in effect, hundreds of TV channels that displayed text or mosaic graphics. Because this was in the analog TV signal and had to be backwards compatible with 30 year old televisions, the text resolution was quite poor. 24 lines by 40 columns. Mostly it stuck to an eight color palette. Each page had a theme: news, sports, weather, travel. Each page displayed about eighty words of text, and the message changed every 20 to 30 seconds.
Normally these pages had no audio, but, in the late night hours, BBC 2's main channel would mirror the main Ceefax page, and add some rather odd instrumental music accompaniment.
Ceefax is no more, since the analog television signal has been decommissioned in the UK. Long live Ceefax.
Coincidentally, I'd been playing quite a bit with both GNU Serveez and Cairo, and I saw an opportunity to tie both together into a fun project. So I've been writing a client/server to create a Teletext-like service. The server is written using the Serveez server framework. The server pushes rendered text and audio out to the client. The client is written in GTK using Cairo to render authentic-looking bitmapped fonts that can do double-wide, double-tall, double-size, and, most importantly, *blink*!
 |
| Font property test of my Ceefax-like client |
I'm well along now. The only remaining step before declaring it Alpha is to get it to play the Ogg stream for my dodgy instrumental music. For that part, I've been hooking the Ogg Vorbis libraries to the PulseAudio API. I know that GStreamer is the way I'm supposed to do that sort of thing, but, I find that using the raw PulseAudio API much more amenable to the way I think.
As an aside, Gnome has chosen javascript as its official language. I tried it out. I wanted to use it, but, the GTK documentation just isn't there yet. I ended up writing my client in C.
 |
| Font test of my Ceefax-like client |
---
Reading the Teletext specifications lead me to reading all the Videotex specifications. Videotex was a set of standards for a hardware terminal.
The best example of an implementation of Videotex was France's Minitel service, also recently decommissioned, apparently.
I'm amazed by the effort in these old standards, and the wisdom contained therein. Keeping in mind that these standards are over 20 years old now. It is almost hilarious how often we've reinvented the wheel since then.
What fascinated me most about the Videotex standards was the fundamental conceit that there is only stdout and stdin. (Videotex was designed with a modem in mind.) Just as old Unix or Plan 9 believed that everything, including hardware, is a file, Videotex believed that everything was stdout/stdin. Escape sequences would let the server send to the client interspersed text, raster graphics, vector graphics, audio, color palettes, and fonts, all through stdin! These standards pre-date HTTP and HTML by a decade or so. They describe a terminal that is way more interesting that the Platonic ideal of a terminal presented in ECMA-48, which is a specification burdened by trying to cover both terminals and line printers.
But a feature complete Videotex terminal was never implemented as far as I know. Neither was a feature complete ECMA-48 terminal implemented, for that matter.