Copyright Term and the Public Domain in the United States. (Via anarchaia.)
Interactive fiction has come to the iPhone with a great port of the Frotz Z-Machine player. It's free. To solve the problem of getting IF game files to the phone, Craig built an Internet-powered game file browser directly into the application. Very nice.
I don't mean to spoil anything by saying this out loud, but I wonder if this technically violates Apple's terms of service, which forbids language interpreters. I would presume that it would especially forbid interpreters that can evaluate code off of an arbitrary website. Of course, the definition of "interpreter" is debatably fuzzy, as any data-driven app could be considered an interpreter of the data. But Frotz is a straightforward example of an interpreter of code, and if the terms of service forbids interpreters for security reasons (Apple doesn't yet trust their own app sandboxing, or just doesn't trust app authors to do their own sandboxing), those concerns would apply to Frotz.
Static publishing doesn't scale?
The Movable Type installation for this site is starting to get a bit difficult to maintain, to the point that I can no longer publish pages from the web interface. Dreamhost, perhaps specifically targeting MT installations, or perhaps not, has their web servers configured to kill the publishing process before it can complete. The background process that publishes new articles every morning still gets the job done, so it's clearly just the web server that's giving up early.
Unfortunately, this means approving comments is nearly impossible now. I still receive the comments by email, so by all means continue to post if you're so inclined. Comments posted to my continuously popular article on disabling shuffle and repeat modes on an iPhone always make my day. I just can't promise they'll all make it to the site. I've removed the "chatter" box from the sidebar, at least temporarily. That doesn't help with publishing, unfortunately, but should make the overall experience less disappointing.
I used to think it crazy that people would dynamically generate pages from the database on every request when the content changes almost never, with no caching layer, just because PHP made it easy to do. It turns out it is static page generation that doesn't scale, at least within a web UI and on 1990's architecture. I'll come up with something new next time I get a chance, which at this rate will be 2009 at the earliest.
Mac 101: Pressing F5 in a text field. I hadn't known.
Rock-a-fire Explosion 4ever! Vintage Showbiz Pizza robots reprogrammed to perform contemporary rock songs, some with new recordings by the original Rock-a-fire vocalists, with videos uploaded to YouTube. Awesome.
Somewhere I still have my Rock-a-fire Explosion LP, which I listened to endlessly on an old record player purchased at a yard sale when I was a kid.
The 100 Most Common English Words. I got 38.
The Tombs of Asciiroth, a slick old-school arcade adventure game you can play in your browser, offline with Google Gears, or as an Adobe Air app.
Introducing Cologo
Cologo is a web-based tool for learning about and experimenting with computer programming. You write programs using Google Spreadsheets, and run them using a "gadget" inserted directly on the spreadsheet. Cologo runs entirely in a web browser, with no software to download.
Multiple people can work together on a Cologo program over the web simultaneously using the collaborative features of Google Spreadsheets. The gadget updates in real time as you and others make changes to the spreadsheet, allowing you to see the results of the changes immediately. You can share and publish your finished programs as read-only spreadsheets with the Cologo gadget on it, so others can see the program running and read the code. You can also embed the gadget for a program on a web page, or in any gadget container such as iGoogle, MySpace or Orkut.
A Cologo spreadsheet can include code, data and documentation all on one sheet. Cologo identifies which regions of the sheet represent code using a simple layout syntax that allows for procedure definitions to appear anywhere on a sheet, even alongside tables of data. You can also use text formatting to highlight the source code without affecting how the program works.
Cologo is an implementation of Logo, a programming language created in 1967 for educational use. Cologo is largely based on Berkeley Logo, a thorough implementation of Logo developed at UC Berkeley by Brian Harvey and his students. Brian Harvey is the author of an excellent series of books entitled Computer Science Logo Style, which uses Berkeley Logo to illustrate computer science concepts. The complete text of these books is available on the Berkeley Logo website. This initial release of Cologo implements a subset of Berkeley Logo that works with many of the examples in these books, with minor changes to syntax.
Logo is often associated with "turtle graphics," a mechanism for drawing pictures using procedures. Cologo includes a turtle graphics system. The turtle graphics feature works with Firefox, Safari and Opera. (It should also work with Internet Explorer using an HTML canvas plugin, though I haven't tested this yet.) The book Turtle Geometry by Harold Abelson and Andrea diSessa explores mathematical concepts using turtles, and many of the examples in this book can be ported to Cologo. (Be careful to avoid infinite loops, which Cologo doesn't quite handle well yet. If you're entering a procedure that loops indefinitely, include a wait 1 statement in each iteration to enable Cologo's "stop" button.)
The main goal for this initial release (version 0.1) is to validate the concepts of writing a computer program in a spreadsheet, and collaborating with others on a program using Google Spreadsheets. If these concepts prove successful, future versions may include more language features, performance improvements, and more sophisticated interaction with Google Spreadsheets. Eventually I hope to add a way for Cologo programs to modify their own spreadsheets, such as for storing data or making self-modifying programs.
See the Cologo website for a live demonstration, the code for the demo, and instructions on getting started. I'll be adding more documentation as time allows, though to be honest I've already spent too many evenings and weekends on this and I think I'm going to take a break. :)
Please give it a try, and let me know what you think. If you'd like to get involved, consider joining the Cologo Google Group. I'm especially interested in hearing from teachers that might want to try using Cologo in a classroom setting.
Alan Kay on How We Teach Computing, and other things.