Some months ago, I talked a little about computer science education (but only in passing — it wasn’t the focus of the story). I’m going to do it again. Sorry about that. Blame Krista. It shouldn’t be too bad, though — once again it’s not really a big part of the story. Honest. Would I lie to you?
Once upon a time, not everyone had a computer. In those days, when one taught computer science, one needed a place for students to practice what they had been taught. A place to do assignments. A place to eat pizza at 3 AM the night before the assignment was due.
In short, a lab.
When I last took computer science (just after the last ice age) the lab was fairly simple. It consisted of three rooms: one full of 029s, one with a card reader and a line printer that would sometimes fling your deck of cards against the wall and a room full of tables, chairs, crumpled paper and many, many confused-looking undergraduates. Over in the corner was a harried-looking TC (a staff member whose job it was to fix recalcitrant equipment and help the confused-looking undergraduates look less confused) with a never-ending supply of anti-static spray. (Line printers generate unbelievable amounts of static electricity — more than a dryer full of gym socks, even.)
Time passed. Things changed — sometimes (but not always) for the better. Punched cards and all their associated paraphernalia vanished (that’s good). TCs disappeared (that’s bad). Confused-looking undergraduates didn’t change a whole lot (that’s probably inevitable). A couple of generations of lab came and went and in the early 90s, a couple of departments (computer science and electrical engineering) managed to negotiate a significant donation from a major computer company that no longer exists. This donation was to be used to build a new lab — one full of more or less state-of-the-art workstations. Computer science students would use it to (duh) learn computer science. Electrical engineering students would use it to run engineering-type applications (for example). The vendor would get publicity and a large tax write-off. Everyone would win.
Meetings happened. (Lots of meetings. Lots and lots of meetings. I hate meetings.) Eventually we nailed down what we were getting: a moderately powerful central server with ‘enough’ memory and disk, two dozen clients and enough network hardware to glue everything together. The computer company that no longer exists took the order, nodded sagely and went away. The local folks started renovations. The rooms were rewired and painted. Locks were changed. Snazzy new furniture was ordered and delivered. Two unfortunates (um, that would be Ms. Rose and I) pulled a couple hundred meters of RG-8, covering everything in sight with special cable-pulling lube in the process.
The first fly in the ointment was timing: the computer company that no longer exists couldn’t promise to deliver things well in advance of the school year. No problem, though, they could loan us a server; we could plan disk layouts, compile stuff and write tools that we might need. Stuff like that.
The loaner arrived quickly and we set to work. We learned the hardware. We learned Ultrix. We learned Hesiod. We learned arcane license `management` software. We learned a lot of stuff. We did surveys of faculty to determine what software they’d need and we installed it. Ms. Rose wrote an application to bulk create accounts — we knew we’d do that a lot. I compiled a pile of open source software tools (including emacs, of course). Eventually, the server was more or less ready and all we needed was ‘our’ hardware. And the room, of course.
That’s where we hit a large snag. (More than one, actually.) The room wasn’t ready (the rewiring, I think, but I don’t remember exactly) and ‘our’ hardware hadn’t arrived yet. And the start of classes was getting uncomfortably close. There was tension. There were phone calls. There were more meetings. There was finger-pointing. Finally, though, a giant (24 workstations is a lot of boxes) shipment appeared and the room was finished. We were good to go. The only trouble was that it was the afternoon of the Friday before the first day of classes. We had a weekend to install everything. No pressure, but they expected everything to be perfect at 8:30 Monday morning.
Of course, it got worse.
When we opened boxes and assembled the server, we found that they hadn’t sent the right amount of disk.
We had ordered two of the vendor’s newest disk drive to provide ‘enough’ space for twenty-four almost-but-not-completely diskless clients and a bunch of applications with space left over for user files so people could, you know, get some work done. Officially, though, those disk drives were so new, so recently added to the catalog that they weren’t ‘officially’ supported with the server hardware we had ordered. Yet. (They worked of course — that’s why standards are nice — but there was no Official Check Mark in the order book.) Some faceless clerk in the Practical Joke department had looked at the order, decided that since the RZ58 wasn’t ‘officially’ supported, they’d just send RZ57s instead. This wasn’t a problem except for the fact that it meant that a quarter of our disk space was missing. There was no way to configure our lab with the hardware we had available to us. And the chances of getting replacement disk drives before Monday morning was (let me think) zero.
But, like I said, no pressure.
The Officially Supported and Documented configuration was, as I mentioned, almost-but-not-completely diskless clients. The clients had small internal hard drives but they wouldn’t boot from them — they’d boot across the network and load their operating system from the server. They’d use the local drives for temporary file storage and for paging and swapping.
The wrong server disks meant that we couldn’t do that.
Krista asked if I thrive under pressure or if I crumble. Some people would thrive. Some Roses would rise to the challenge. Me? I crumbled, at least for a while. My first instinct was panic: “We’re DOOMED! Aieeee!” I clutched my head and ran around screaming for a while. After sufficient time wallowing in fear and despair, after several incredibly patient looks from Ms. Rose, I calmed down. Was there a way out?
Maybe there was.
The disk drives in the workstations were the key. They were small but they were large enough to boot from. Large enough to hold a small part of the operating system. Once a system had booted from its local drive, it could mount the rest of its operating system from the file server. It could work. It should work. It would work.
The only trouble was that this was completely uncharted territory. Not only was it not documented, the official Word Of God (or at least the vendor) was that it wouldn’t work at all. And this was pre Google (heck, it was pre Alta Vista) so if someone had done it and if they had written down what they did (both pretty big ifs) there was no way to find their notes.
So all we had to do is find a way to do something that there were no procedures for, that wasn’t documented anywhere, that the company that made the hardware and software said couldn’t be done and do it in two days. And do it twenty-four times.
Sure thing. Can do. No problem.
I don`t remember a whole lot of that weekend. I remember being a little punchy in the middle of the night and naming one of the machines after the third most ineffectual member (okay, ‘third’ is probably arguable…) of the Legion of Super-Heroes. I remember about a bazillion false starts. And I remember the moment (I don`t remember when it was, only that it was dark out) when we made it work. It felt good. Eureka moments always feel good.
Then all we had to do was formalize the procedure, work out the kinks and bugs and do it twenty-three more times. Piece of cake.
So when Monday morning rolled around, the lab had two dozen working computers and two very sleep-deprived administrators. But we made it. We were done.
Until they did it to us again the next year.