jwz [entries|archive|friends|userinfo]
jwz

  www.jwz.org
  userinfo
  archive
  rss

Links
[»| DNA (Log) (iCal) WebCollage (LJ) Mixtapes ]

The Difference Engine [Wed, 9-Apr-2008 8:17 PM]
[Tags|, ]
[music |Lassigue Bendthaus -- Rotation Mecanique]

link22 comments   ·   post comment

Happy Run Some Old Web Browsers Day! [Mon, 31-Mar-2008 1:06 AM]
[Tags|, , , , ]
[music |Gang of Four -- History's Bunk]

Happy Run Some Old Web Browsers Day!

In honor of the ten year anniversary of the Mozilla project, home.mcom.com, the Internet Web Site of the Mosaic Communications Corporation, is now back online.

It took some doing. There is comedy.

First, the fun stuff:

  • Until now, home.mcom.com and all URLs under it just redirected to netscape.com, then redirected a dozen more times before taking you to some AOL portal page. The old URLs that were baked into the toolbar buttons of the original web browsers didn't work any more. But now, if you fire up a copy of Mosaic Netscape 0.9, and click on the various toolbar buttons, they will work again! For example, in the old browsers, when you clicked on the "What's New" toolbar button, it went here.

  • home.mcom.com is now a snapshot of that web site from 21-Oct-1994.

  • mosaic.mcom.com is now a snapshot of that web site from July 1994. That's from just after the company was announced, but before the first browser beta was released. I think that by Oct 1994, both mosaic.mcom.com and www.mcom.com were redirects to home.mcom.com, but I can't remember any more.

  • In order to make these web sites work in the old browsers, it was necessary to host them specially. In this modern world, a single server will typically host multiple web sites from a single IP address. This works because modern web browsers send a "Host" header saying which site they're actually looking for. Old web browsers didn't do that: if you wanted to host a dozen sites on a single server, that server had to have a dozen IP addresses, one for each site. So these sites have dedicated addresses!

    The web server also had to be configured to not send a "charset" parameter on the "Content-Type" header, because the old browsers didn't know what to make of that.

  • Trivia Question #1: Do you remember why home1.mcom.com through home32.mcom.com exist?

  • Trivia Question #2: Do you remember the behavioral difference the browsers exhibited when they were talking to a Netscape web server?

  • Trivia Question #3: When was the <HYPE> tag implemented, and what was its origin?

  • I had originally planned on re-hosting these web sites on an SGI Indy running Mosaic Netsite Commerce Server, just for maximal comedic value... and to see how long it took before someone Øwned it, since there must be someone out there who still remembers how to launch an assault on Irix 5.3. Unfortunately, that wasn't possible for political reasons explained below.

Trivia Answers:

  1. home1.mcom.com through home32.mcom.com exist because the early browsers did client-side load-balancing: the browser itself had a special case where if it was loading "home.mcom.com" it would actually pick a random number from 1 to 32 and instead load "homeN.mcom.com"! Those were physically different servers in the Netscape data center.

  2. When loading pages from a Netscape server, the caption next to the URL field in the browser would change from "Location" to "Netsite".

  3. Not telling.

Enough about all that, I want to run some old browsers!

  • My personal collection of old Netscape browsers is here: www.mcom.com/archives/. It's not complete, but it's all that I could find. (It is missing some key releases, such as Netscape 0.4 for Irix, which was the first release to ever leave the building; and the "non-exportable"-crypto versions of almost all of them.)

    If you can publicly mirror these, please do! I know of a few mirrors so far: edlang.org, nothings.org, fauxpaw.com, and moar.jp. Torrents, anyone?

  • Linux users: You can run Mosaic Netscape binaries as old as 0.93 on modern Linux systems! You need to load the "a.out" module in the kernel, and install some really old libraries:

    Since pulling all those files out is kind of a pain, I've put together a tarball: netscape-linux-libs.tar.gz. Unpack it in your root directory. It shouldn't conflict with anything modern. I've tested that on Red Hat 9 and Ubuntu 7.10.

  • Mac users: If you're using a modern Mac, you need to use an emulator.

    • Download BasiliskII from Gwenole's site. Note: there are apparently a number of projects that call themselves "BasiliskII 1.0", but the one linked here seems to be the only one that actually works.

    • Download Quad650.zip and MacStartup.img from Redundant Robot (a Mac ROM and disk image of MacOS 7.5.5).

    • Launch "BasiliskIIGUI". Under "Volumes", add "MacStartup.img", and point "Unix Root" at your desktop or something (so that you can transfer the old Netscape installers into the emulator).

    • Under "Network", set Ethernet to "slirp".

    • Under "Memory", set model to "Quadra", CPU to 68040, and ROM file to the (unzipped) Quadra ROM. Turn on JIT. Set your screen size to something sane.

    • Start the emulator, launch "StuffIt Expander" and unpack the "netscape1_0.sea.hqx" file. (You can't just double-click it.)

    • Launch the "netscape1_0.sea" self-extracting archive. And you're in business!

    • But, if you want to run 0.9, you'll have to set your (real) system clock back to 1994 to get around the time-bomb. (0.93 and later don't have a time bomb.)

  • Once you've got those old browsers running, you'll find that they're working fine with the mcom.com web sites, but they fail on just about every other web site in the world (for the "Host" header reason I described above).

    I have a fix for that!

    I wrote a small proxy server that bidirectionally translates the HTTP/1.0 protocol spoken by old web browsers to the HTTP/1.1 protocol spoken on the modern web. Download and run http10proxy.pl. (You may need to install the Net::Server::Fork Perl module first.) Then, go into the preferences on your ancient browser and set "HTTP Proxy" to localhost, port 8228. This will adjust outgoing Host headers as well as incoming Content-Type headers.

What Was That About Politics?

    When I heard that AOL was shutting down their Netscape division for good, I mailed a contact there and asked if they'd transfer the mcom.com domain to me, so that I could resurrect these web sites to make the old browsers work right.

    My contact asked around, and much to my surprise, the answer was yes! Wheels were put in motion, AOL's operations folks removed their dependencies on those domains (no idea what those were!) and the domains were about to be transfered... when...

    AOL Chief IP Counsel and Time Warner blocked it.

    Why?

    Because their lawyers determined that, because mcom.com is ten years old and four letters long, they could make several hundred thousand dollars by simply putting it on the market and selling it to a spammer!

    And so they began the process of doing exactly that.

    Fortunately, my contact (who prefers to remain anonymous) talked them out of this, pointing out that it would be perhaps not the best PR move. But still, they wouldn't transfer it to me. AOL still owns the domains. However, they were willing to host the old Netscape content there, at least for now.

    So, thank you to my anonymous contact for all the help! And thank you to AOL for hosting these historic web pages. And for not (yet?) selling the domain to a spammer.

link80 comments   ·   post comment

MOST-POSITIVE-BIGNUM [Tue, 25-Mar-2008 9:20 PM]
[Tags|, ]
[music |Throwing Muses -- Counting Backwards]

Hey kids, here's a story from the Unfrozen Caveman Files!

I was telling someone about about this the other day, and it's time that Google said something other than "Your search - most-positive-bignum - did not match any documents" so here it is.

Background:

In Common Lisp, there are two types of integers: small ones, which are what you expect; and "bignums", which the specification says should have no upper limit on their range. Fixnums are immediate values (not objects) and bignums are compound (allocated) objects. All the math functions work on either, promoting results to bignums as needed.

So, there is a constant called MOST-POSITIVE-FIXNUM, which is the largest representable "immediate" integer. C calls this MAXINT, and in a C world, it's generally 2^31-1. Because of the type bits on every word, in Lisp it's typically smaller than that. On TI Explorer Lisp Machines it was 2^24-1 (32 bit word, 7 bits of tag).

Here Comes the Dumb:

Well, I was poking around in the system's basement one day, and realized that their implementation of bignums did have an upper limit! A bignum was implemented as an array, with no facility to tack on a second array, so the limit was related to the size of the length field in the array header (instead of being limited by available memory).

So I went and consed up MOST-POSITIVE-BIGNUM.

I did this by carving out a chunk of memory of the proper size for the underlying array, filling it with the right pattern of ones, and slapping an appropriate type tag on the front so that the system would recognize it.

(These sorts of tricks are exactly the sort of things that Java goes out of its way to prevent you from doing, and that's part of why it's impossible to write efficient programs in Java. Whereas the whole Lisp Machine operating system was written in Lisp.)

Fun facts:

  • It is 1,223,146 decimal digits (that's 1.0e1223146).
  • The object representing it consumes 524 KB of RAM.
  • The largest known prime passed it in 1999.
  • If you add one to it, e.g.: (1+ MOST-POSITIVE-BIGNUM) you get zero. But it's a zero that consumes 524 KB, and is not = to 0.
  • If you ever tried to print it (for example, by having it be the return value in the debugger...) a TI Explorer would lock up in a tight loop in microcode, from which only a warm boot would recover. That microcode loop was trying to grind the number into decimal. That process took more than three days.
  • Printing it as a roman numeral took pretty much the same amount of time.

And finally, here's some code that doesn't run on any computer that has been manufactured in two decades.

(Coincidentally, it looks like I wrote this code eighteen years and four days ago. I guess I should have posted this on Friday.)

--More--(49%)  )

link38 comments   ·   post comment

looking forward into the past [Thu, 14-Feb-2008 11:53 AM]
[Tags|, , , , ]
[music |Jem -- Save Me]

MySpace, 2008:

NCSA Mosaic, 1993:

link30 comments   ·   post comment

Irix CDs? [Wed, 6-Feb-2008 10:54 PM]
[Tags|, , ]
[music |Tre Lux -- Never Let Me Down Again]

Hey, I remembered that I still have an SGI O2 sitting on the shelf in my laundry room! Unfortunately, what I don't remember is the root password, and I think the only sane way to reset it is with an Irix install CD. Do any of you have one that you can snail-mail to me?

Also, if you happen to have the dingus that lets you plug a normal SVGA monitor into an SGI Indy, I could give that a good home too.

Update: Nevermind, [info]rukzise found a crack that got me back in.

link34 comments   ·   post comment

setting the wayback machine for the mid 1990s [Wed, 6-Feb-2008 2:59 PM]
[Tags|, , , ]
[music |Moev -- Right Hand]

Dear Lazyweb,

I want to actually run some of these old copies of Netscape that I have. I have an Intel iMac running MacOS 10.5.1. What is the easiest way to do that, without spending money? Presumably the answer involves running an emulator, of which there are many. I've tried a couple and not gotten far. (I don't have a preference on whether I run the Mac, Windows, or Linux binaries. Whichever is easiest.)

Facts please, not theories.

link31 comments   ·   post comment

all praise the company [Wed, 2-Jan-2008 2:18 PM]
[Tags|, , , ]
[music |A Place To Bury Strangers -- Another Step Away]

[info]torgo_x takes us on a tour of what it's like to run a 13.5 year old copy of Mosaic Netscape 0.93b on the modern interweb.

There used to be an archive of the old mcom.com pages at dotnetat.net but that's no longer resolving.

BTW, if anyone has a copy of 0.4 for Irix, please give. That was the very first release to ever leave the building, and it's the only one missing from my archives...

link20 comments   ·   post comment

VinylDisc [Wed, 17-Oct-2007 12:29 PM]
[Tags|, ]
[music |DJ? Acucrack -- Return of the Optimizer]

Two obsolete audio formats in one... the VinylDisc

"The VinylDisc is a combination audio CD and special record. It consists of two attached layers. The silver layer contains digital audio information, while the black upper layer can be played on every record player."

link14 comments   ·   post comment

"Say, Bill. Would you rub some of this bug powder on my lips?" [Tue, 28-Aug-2007 7:53 PM]
[Tags|]
[music |William S. Burroughs -- Words of Advice For Young People (Pete Arden Mix)]

Felt Underwood Typewriter:

"The felt is hand dyed and the details are embroidered. I added some real screws that I tarnished in vinegar. The roller rotates so that a piece of paper can be added with some typed words on it."


link9 comments   ·   post comment

oh hell yeah. [Thu, 2-Aug-2007 2:36 PM]
[Tags|, ]
[music |Adult -- Pressure Suit]

Office complex for a Polish radio station:


Apparently these are photographs of actual buildings.

link17 comments   ·   post comment

Represent. [Wed, 1-Aug-2007 8:43 PM]
[Tags|, ]
[music |Hate Dept. -- Cowgirl]

link22 comments   ·   post comment

"ever had the embarassment of moon-men gate-crashing your cocktail party?" [Fri, 1-Jun-2007 11:27 AM]
[Tags|, , ]
[music |Stabbing Westward -- Violent Mood Swings]

link6 comments   ·   post comment

The Heart of the World [Wed, 9-May-2007 7:17 PM]
[Tags|, ]
[music |Recoil -- Last Breath]

link6 comments   ·   post comment

qwerty waffles! [Sat, 5-May-2007 1:46 PM]
[Tags|, , ]
[music |Stolen Babies -- Push Button]

link9 comments   ·   post comment

Nazi Robot Attack! [Fri, 20-Apr-2007 2:21 PM]
[Tags|, , ]
[music |Storm Inc. -- Penetration]

(Also note that LJ now lets you embed anything, as long as you wrap <lj-embed> around the <embed> or <object> tag. Why it doesn't just do that automatically, I don't know.)

link17 comments   ·   post comment

6502asm.com [Tue, 10-Apr-2007 9:50 PM]
[Tags|]
[music |Not Breathing -- Bowels of Cthulhu]

So wrong: 6502 compatible compiler and emulator in javascript.

Back when I was writing the emacs-lisp compiler, I considered adding an AppleSoft BASIC front-end for it that would directly emit emacs-VM bytecodes. Fortunately, I reconsidered.

However, I now demand that someone implement JavaScript in xscreensaver so that it can run 6502 demos.

Previously, previously.

link17 comments   ·   post comment

pulse [Sun, 25-Feb-2007 12:04 PM]
[Tags|, , ]
[music |Errors -- Mr. Milk]

link6 comments   ·   post comment

kbd [Sat, 24-Feb-2007 4:45 PM]
[Tags|, ]
[music |Shriekback -- Going Equipped]

link13 comments   ·   post comment

The Insect Lab [Sun, 10-Dec-2006 3:51 PM]
[Tags|, , , ]
[music |Wormfood -- B4]

link9 comments   ·   post comment

The Nagy Magical-Movable-Type Pixello-Dynamotronic Computational Engine [Tue, 21-Nov-2006 4:49 PM]
[Tags|, ]
[music |Skeletal Family -- She Cries Alone]

link25 comments   ·   post comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]