A Museum of the Internet in the Late 90s

consistent.org was registered in 1999. What was involved in being active on the internet in those days?


Why would you even have wanted to register your own domain? The primary reason was actually for email. There was no highly regarded web email service like Gmail at that time; Yahoo had released web-based email in 1997 but it wasn't very good. So your only real options were to get email from your employer or from your ISP, using a local client. These were unattractive options because of the lock-in and because ISP-provided email was often of poor quality with limited storage. So you really wanted to run your own email. It also helped your image - having your email on your own domain contributed positively to being taken more seriously.

Secondarily, you could also run your own web server. This let you run whatever backend technologies you wanted. ISPs would give you web hosting, but you would be tied into whatever technology stack they felt like deploying, and they would often severely restrict CGI scripts so that you couldn't experiment with new technologies.


To set up your domain, the first thing you had to do was register a name. There was one monopolistic provider called Network Solutions (they later became Verisign), which charged $35 a year. Later, competition was introduced, which led to lower prices and better service and generally made people happy. I have a .org name instead of .com because at that time non-commercial organizations were seen as more reputable than companies trying to peddle things.

Once you registered a name, you needed some DNS servers. Specifically, you needed two, and they were not supposed to be on the same subnet. So we mostly made informal arrangements with friends to provide secondary DNS for each other. We all used BIND for DNS, and edited the zone files by hand in vi or emacs. The format of the files is simple and this was pretty easy to do. For example, the entries for the server you're looking at right now look like this:

    www 7200 IN CNAME all-things-end
    all-things-end IN A

As an aside, it used to be possible to look up the contact information for the owner of a domain in a convenient tool called "whois". This system became less and less well known, but it actually existed until 2018, when the European Union forced it to be shut down with GDPR.

If you want to know more about DNS, there's a great book by Cricket Liu which is still in print.


Internet Service Providers in those days were worse than today in that they cost more and provided much slower connection rates than today, but they were better in that they gave you real IPv4 addresses and didn't block connections. In those days it was still mostly an internet of peers, where the machine under your desk was not qualitatively different from a professional server, just slower and cheaper. Today, largely as a way to achieve price discrimination, ISPs will sell you a connection which blocks all kinds of incoming connections (and outgoing email), and may not even offer you a real public IP address at all, even a temporary one, unless you pay 3x as much for a "business" account. This wasn't the case yet in 1999; in those days there would not have been a market for the second-class client-only connection.


The primary technology server-side (MTA) technology for email in those days was called sendmail. Unlike BIND, it was not easy to configure; it had a rather arcane configuration language (which the designers later attempted to "improve" by auto-generating it from m4 macros instead, which probably tells you everything you need to know).

At the time I was rather good at Sendmail and I thought I liked it, but I think it may have just been Stockholm syndome.

I will quote a very small subset of my last surviving sendmail.cf file, from 2001:

    R$*                     $: $>3 $1               focus hostname

    # If it's going *through* our machine, strip us off:
    R$+ @ $+ < @ $=j . >    $>3 $1 @ $2

    # now check to see what we have
    #R$* < $* . local . >   $@ ok                   Allow local delivery
    R$* < @ $=w >           $@ ok                   Allow local delivery
    R$* < @ $=w . >         $@ ok                   Allow local delivery

    # If it isn't *to* a local machine, see if it's *from* a local machine
    R$*                     $: $(unquote "" $&{client_name} $)
    R$@                     $@ ok                   Null means local
    R$=j                    $@ ok
    R$=j .                  $@ ok
    R$* . local .           $@ ok
    R$* . local             $@ ok

Shortly after that I switched to an alternative piece of software called Postfix instead.


In those days, "interactive" on the web meant a CGI script and form posting. Common Gateway Interface scripts were the hot new thing - they specified a way for the web server to call another program with information about the request, get a result back, and display it on a web page! Writing them in C was very tedious, so we mostly wrote them in Perl, a time-saving new scripting language.

This was not the sort of web-as-a-platform for interactive applications that you're familiar with today; Javascript barely worked and could do things like change the background color when you clicked a button. Web layout meant very careful use of tables. and nothing worked right in IE (some things never change).

As an example of the kinds of things we did, I found an old cgi script from the early 2000s which would run lsof, look for mp3 or other music files, and print out what I was listening to. In those days we didn't worry about the information being used to rob us when we were out of town, because the kind of people who spent time looking at the internet weren't people who would do that.

Individual webpages were located at "/username" or "/~username", and you would also give your friends web hosting if they didn't have their own servers set up. That naming scheme was standard and everybody expected to look for homepages at the corresponding location. So my page, for example, would have been at http://www.consistent.org/terran/. This predated Google Pagerank, so links to another site were not yet a monetizable commodity, to be withheld until payment cleared - we linked to whomever we liked, and most of those sites were small and noncommercial. Also, the www. prefix wasn't standard yet - some sites used web. instead.

White Text on Black

Fashions in whether backgrounds should be white or black have flipped back and forth multiple times since 1999, but back then the choice was a practical one. Monitors were all CRT-based and were mostly not very good; many of them were pretty fuzzy. I bought expensive Sony Trinitron tubes and adjusted the convergence carefully in order to resolve individual pixels, but I was in the minority. White text on black was simply more readable. If the beam spread out, it would look bold, but you could still see it, whereas black text on white would turn into light-grey text on white and become unintelligible.