The 1993 Social Network

I was a freshman at Cornell University in Fall of 1992 when I logged into my first UNIX system.

I’d heard of UNIX before, of course—it was a popular subject in trade magazines of the period, and if you tinkered with computers you’d probably have heard of it—but I’d never actually used it. So one day I marched over to the campus IT department to register for a UNIX account. It took some wrangling, but very shortly I was drinking from the UNIX firehose.

Compared to a lot of other schools, Cornell’s UNIX cluster was small and under-powered. Resources were scarce. The whole campus had to share four DECstation 5000s running ULTRIX with home partitions mounted over NFS, so they actively discouraged new users. I don’t remember the specs (you can use your imagination) but I do remember how laggy things got when there were 30 or so users logged into each system. We called this cluster “The Cruxen”, because the systems were named crux1, crux2, crux3, and crux4.

The thing that made this cluster special was not the hardware or the software; it was the community that formed around it. By mid-1993, a great many of my friends had accounts on the Cruxen, and it didn’t take long for the cluster to become a place to meet, talk, share ideas, and kvetch. One of the most common ways to talk to each other was the UNIX utility write, which allowed you to send a short one or two line message to a user logged in on another terminal—long before the term ‘instant messanger’ had been coined, we were doing it on UNIX. We used last and finger to see when someone had last logged in, and to watch for them to log in again. For more immediate, longer-form communication, we used talk to connect two terminals together and watch each other type back and forth. And of course there was always e-mail, and Usenet, a global network of hundreds of computer bulletin boards covering every subject under the sun. The Cruxen were a social network, as surely as Facebook is today.

Really, it was more than a social network. It was a Social Network++, a fully programmable social network. Interesting projects sprang up on the Cruxen. It was easy to share scripts and coding projects back and forth when everyone had access to the same filesystems, programming languages, and tools. Of course sometimes disasters happened, but they were rare. Once, a friend built a distributed queue manager for POVray rendering, so that all the Cruxen could render an animation frame in parallel. He did not leave enough idle time, and ended up taking down the whole system. I myself once almost took it down by seeing what would happen if I created a .forward file that forwarded email to myself (discovery: it formed an infinite loop and quickly filled up the mail spool, bringing upon me the wrath of the admins). It was immense fun, and we felt like we were on the cutting edge.

But the fact is, we were late to the game. This scene had already been played out many times and in many places. From the late 1960s onward, big multi-user computer systems were places where people could form communities, whether running MULTICS or TOPS-20 or ITS or UNIX or VMS. This sort of thing was common-place in those environments. By the time we found the Cruxen in the early 1990s, the timesharing experience was already on the wane. By 2000, it was largely a thing of the past. Desktop computers that could do everything the UNIX cluster could do were cheap and readiliy available, and there was no need for a shared environment any more. Each of us now computes alone.

Is there any way to recapture this sort of experience? Yes! One of the oldest and best known is the SDF Public Access UNIX System. They’ve been in business since 1987, so they have considerable experience providing a UNIX cluster environment to thousands of users.

More recently, Paul Ford (@ftrain on Twitter) created an accidental phenomenon when he launched, a place to build and share web pages on a plain-old UNIX box, just like we did back in the ’90s when the World Wide Web was young and new and we ran with Perl scissors.

And, finally, there’s my own brand new project, RetroNET, whose goal is to give a Cruxen-like experience to hackers and tinkerers and makers.

We can never go back to the days when we had to use a cluster to get our work done, nor would I want to. But we can still recapture some of the feel of that time, and I think we can still do good things with it here in the 21st century. So, whether you’ve used a UNIX system before or not, whether you lived through that time or you didn’t, I encourage you to at least give it a try. You never know who you’ll meet, or what you’ll learn.

Whither Java on the Desktop?

[Symon running on the Desktop]

A little while ago I wrote the 6502 simulator pictured above, Symon, and released it as open source software. I wrote it because I was developing a small 6502 computer, and wanted a simulator that matched the hardware’s memory map. I’ve always been interested in learning more about simulation, so it was a natural project for me to gravitate to. I’ve enjoyed working on it tremendously, but there is only one problem: I wrote it in Java.

Java is undergoing what seems to me to be a crisis of public opinion. The news is full of stories about another critical vulnerability, and vendors are rushing to disable Java in browsers by default. Users are being told to turn off Java wherever unless they really need it.

So why did I choose Java in the first place? For several reasons. First, I started this project a couple of years ago. When I first set out to write the emulator in 2008, Java was still owned by Sun Microsystems, still enjoyed widespread popularity, and wasn’t yet considered as much of a security risk. Second, Java was a language that I knew extremely well, having worked on many Java projects in the past. I started writing Java in 1997, and it was the primary language used in my day job straight through 2007, so it was quite natural for me to fall back on it. Third, and maybe most importantly, I very much wanted Symon to be fully cross-platform. Although I use a Mac with OS X as my main system, I also have a Linux laptop and a Windows 7 PC that I spend quite a bit of time on. It was important to me that I’d be able to use Symon on all three platforms. Java gave me that feature for free.

But with the latest goings-on in the world of Java on the desktop, I have to wonder, will Java even have a viable consumer desktop runtime in the near future? Sure, it has tremendous support on mobile thanks to Android, and its position in the server market is assured after a decade and a half of Java as a web platform, but it never gained the kind of wide-spread support on the desktop that it has on the server. With more bad news coming out and more end users disabling Java how will people run Symon?

I feel like I’m left with a couple of options.

  1. Ignore the problems. Just keep updating the Java Symon code, and let things fall where they may.
  2. Give up multi-platform. Port Symon to a native OS X Cocoa version, and accept the fact that I won’t be able to run the code on Windows or Linux.
  3. Find a new multi-platform runtime. But which one? Mono, an ecosystem that I know nothing about?

None of these is ideal. The easiest for me to do, of course, is the first, and this is likely what I will do for a while at least. But if my instincts are right, and Java has a very limited lifetime on the desktop, I’ll have to pick one of the other two not too long from now.