Thursday, August 16, 2007

The original, original Adventure!

i am just barely old enough to be familiar with the original ADVENTURE.

the source code to the ORIGINAL version has been found! not the Don Woods enhanced version, which looms large in hacker lore and whose source can be found here and which was the basis of early text-based adventures like Zork on the Apple II, but the earlier version (1975-76) that Will Crowther wrote based on the real-life Colossal Cave in kentucky. There’s a corresponding scholarly article in a humanities journal (possibly it has moved here) about the source code.

The source code was found in an archived copy of Crowther’s account at stanford AI lab about a year ago.

It is neat to peruse. it’s in Fortran IV, the total source code is 13K with an additional 19K file of text data (game messages, numbers describing the connectivity graph of the areas in the game, etc.) I couldn’t get it to compile using g77, i assume because of syntactic differences between Fortran 77 and Fortran IV.

It’s our heritage as hackers! I think of it as the equivalent of trying to read Chaucer in the original (which, by the way, is another fascinating exercise i recommend if you haven’t tried it).

UPDATE: Someone has ported the code to compile under g77!

Wednesday, August 15, 2007

Computing history comes alive

So I’ve been reading more about the history of early computers– particularly interesting is The First Computers: History and Architecture (ed. Rojas) because it’s written for a technical audience and describes the hardware/software architecture of early machines (including the Mark I, ENIAC, EDSAC, etc.), early work in what we would now call theoretical CS, etc.
It’s fascinating to read about the architecture of ENIAC, which (from our modern perspective, with an understanding of instruction sets, compilers, and microarchitecture) looks like an incredible collection of hacks. “Programming” it is a tour de force. But truly revealing is reading about the operation of its special-purpose multiply, divide and square-root units, which basically had to inherit techniques of doing those operations such as those that human computers would have been able to do using simple mechanical adding machines. In particular, the square root algorithm is based on the fact that for an integer a, a^2 = sum_{i=1}^{a}(2i-1), playing various tricks with this to hone in on the square root of a fixed-point number.
Which leads me to my other thought…Notwithstanding its name, and unsurprisingly for its time, BASIC is really a language for expressing simple numerical algorithms first, and “general purpose” stuff second. (From the perspective of 1964, what did “general purpose” mean besides “slinging strings”?) At the same time, I recall David Brin’s Salon article bemoaning the loss of simple built-in languages for PC’s that kids could use to start learning how to think about computing.
So here’s my proposal for a homework in a computer history type of class, which would be Good For Today’s Youngsters(tm): research the algorithms used by human computers (and therefore, by the first mechanical and electronic computers) to do numerical tasks like square root, and implement them in an “early high-level” language like BASIC or Fortran. No namby-pamby objects here, no managed memory, none of that crap. If assembly language is like programming on bare metal, then BASIC and Fortran programming are like welding the metal with only cheap goggles and no gloves–it builds character, and would provide a “what must it have been like” insight besides.

Monday, July 16, 2007

Brewster Kahle’s talk on “Universal access to all knowledge”

I love Brewster’s talks and his enthusiasm. Makes me think there are good things going on in the world despite others’ efforts to thwart them.

Question he asks is: In our generation/lifetime, can we provide universal (online) access to all knowledge ever?

Can we put all the world’s text online?

LoC ~26M volumes, costs about $30/book (10c/pg) to do the whole chain
from scanning to putting up on spinning storage w.metadata
=> $800M scans entrie LoC and puts on spinning storage – would require
<100TB in ASCII format.

Audio? biggest cooperation from (eg) Grateful Dead and their tribute
bands! Open audio costs $10/disc – $10/hr (for vinyl or cassettes) =>
2-3M discs = $20-30M to digitize.

Video? archival films and some old films. Eg, govt propaganda/ads, old
classroom documentaries, “social training” videos (“Duck and Cover”),
stuff in the TV archive… $15/video-hour to digitize.

Software? about 50k commercial SW titles ever. Threatened by DMCA, not

Web? lifetime of a page (before change/del) is ~100 days. Wayback
snapshots every ~2mo.

Open Content Alliance building open collections among univesrities, with
support from MS, HP, Adobe, others. Internet Archive datacenters being
setup in Europe to build up their own collections and then swap among
themselves. (Lots of classical recordings that are legal to download in
Europe are blocked to US visitors “due to copyright laws”.)

Opportunity they are looking for help with: front ends for searching,
browsing, etc the Archive. “Can 1 person build a whole search engine
given the underlying infrsatructure of the Internet Archive?” We should
take him up on this challenge in the RoR class and RAD Lab apps!