Big Ship, Many Geeks

Article and photos by Tim Bray

The ship is big and white. Really big. It has over a thousand passengers, about half that many staff (and we learn on the bridge tour that it takes only five people to drive), 18 bars, three restaurants, two swimming pools, a casino, a spa, lots of shops -- you get the picture.

Larry Wall and Tom Christiansen on the cruise.

Larry Wall and Tom Christiansen on the cruise. (Click on photos for larger views)

About 10% of the passengers are geeks. Specifically, Perl geeks. This, the first in a planned series of Geek Cruises, is the Perl Whirl -- seven shipboard days and nights from Vancouver up to Alaska and back, with plenteous lectures centering on Perl but branching out into XML, JavaScript, Apache, the Document Object Model, and so on.

  1. Connectivity's poor. You can get Internet access of a sort for $3.95/e-mail or 60 cents a minute. Telephone calls are $7.95/minute (that's not a misprint). Cellphones don't work. Pay phones and Internet cafes in the Alaskan ports of call are mobbed by geeks and boat staffers alike.
  2. The latest Perl (5.6) has real file-handle variables, just like every other programming language in the world. You can open a file and get a scalar variable (with a $ on it) and pass it to a subroutine:
      open($fh, "<foo");
      $l = readline($fh); # like <>
  3. You could, if you wanted, spend your entire time on the cruise ship eating. Weirdly enough, something about being in a boat makes you (well, me, anyhow) hungry all the time.
  4. Perl is making a heroic effort to Do The Right Thing with Unicode, while at the same time allowing people who want to use their primitive native encodings (examples include 11-bit ones-complement Malayalam and US-ASCII) to ignore it. So far, it seems not only to work but have good performance.
  5. They say that cruising is a pastime of the elderly. This is not entirely fair; while many gray hairs are to be seen, there are a substantial number of young people who are not Perl geeks.
  6. Apache 2.0 is introducing new and non-backwards-compatible internal APIs for C-language modules. Much gnashing of teeth is expected.
  7. This ship (the MS Volendam, and MS doesn't stand for anything in Redmond) is part of the Holland America Line, so the officers are (mostly) Dutch, while the bulk of the staff are Filipino and Indonesian. There seem to be some rules in place that divide the jobs between those done by Filipinos and those done by Indonesians. We don't know what they are, but the staff are awfully nice.
  8. Perl 5.6, which seems like generally a very good thing, currently doesn't work in a mod_perl (i.e., Apache) context. This is a big problem for some people.
  9. White snow against blue sky in Glacier Bay

    White snow against blue sky in Glacier Bay.

  10. Alaska's snow-capped mountains shout ecstatic white against the bright-blue sky; no cruise-ship paint will ever approach it. We're told it rains a lot here, but as far as we can tell, this is a pack of lies put out by Alaskans trying to deter cruiser-trash; we see nothing but sunshine and balmy warmth.
  11. On the subject of phenomena that defy conventional wisdom, it should be noted that there is apparently coherent logic, and even real utility, behind Perl's dreaded globs and typeglobs. You want two names for the same datum? No problem! This doesn't mean I'm going anywhere near them.
  12. Whales, bears, and eagles appear obligingly to entertain the geeks; Randal Schwartz's Web-publishing talk is greatly disrupted by a gleaming black whale (an orca I thought, but others say a bowhead), breaching and caracoling gaily down the side of the ship.
  13. The XML dump of the Open Directory (see, 580 meg in size (this week), contains about 275,000 topics whose names add up to about 19 megabytes. With Perl 5.6, on a 64-meg Win98 laptop, you can not only load these into an array and sort it, you can even use them to key a hash (the values are offsets, of course) without totally wiping out Windows. Not half bad at all.
  14. Larry in one of his aggressively-styled tuxedos.

    Larry in one of his aggressively-styled tuxedos.

  15. Pre-cruise, we anticipate conflict between the ship's occasional demands for formal dress at dinner and the geek anti-haberdashery ethos. It turns out that Larry Wall is an avid collector of gaily-colored tuxware (he brought 3), that Tom Christiansen looks good in basic black, Dori Smith (JavaScript goddess) has a nice lineup of long dresses, and that the geeks rise to the occasion with a considerable amount of panache.
  16. Irritatingly, XML::Parser, which brings James Clark's formidable and speedy expat into Perl's ambit, runs slow. Too slow, in fact, to be useful on things like the Open Directory data. For things of that scale, you need to use the good old regexp engine. This should be fixed.
  17. You sit at the same table for dinner each evening in the main restaurant. We were fortunate enough to end up sharing with some amusing linguistics pedants (barbs such as "mere folk etymology!" are hurled freely), so that was fine. I guess if you ended up with weenies, you could eat at one of the many other eateries.
  18. If you think it's nice that brute-force hashing of Open Directory topic names works, but are worried about this scaling as the data keeps growing, there's a trick where you can (in Perl) retrieve the contents of any topic in under a second, with an index that requires only 4 overhead bytes per topic. The implementation is left as an exercise for those readers not fortunate enough to have been along on the cruise.
  19. This must be important or real or something. There's a writer from Wired here, a whiff of saturnine/ursine SanFran style among the geeks and the cruisers.

Pages: 1, 2

Next Pagearrow