At work, we regularly hold sessions to show each other new things we’ve discovered that could benefit everyone: terminal tricks, CSS updates, JS libraries… But a few months ago, I went the other way: I showed them how I used to be a webmaster, writing HTML for my little website on GeoCities back in the mid 1990s.

We used to call a “webmaster” someone who was running the server hosting a website. It follows the pattern of how we called an admin managing the mail server a “postmaster,” the same way one running a post office is titled. It quickly became a term used by anyone making a website, even if they didn’t own the server or wasn’t an administrator. That was until web programming became more complex and we switched to “web developer,” while separating titles for different responsibilities, like “web designer,” “site administrator,” etc.

In glamorous grayscale, introducing Retrovibe: Code like it’s 1994 again.

I built a simple VM with DOSBox-X, Retrovibe—made to replicate my bulky beige MS-DOS PC, a Zenith easy PC EZ-2. Like I described in Beige Boxes on OMEGALOGIC: monochrome display, two floppy disc drives, no hard drive. I’d fire up MS-DOS, edit HTML, save it on a floppy I carried with me, and the moment I had access to a PC that could connect to the Internet, upload my files to GeoCities—a popular free web host in time, laid out as neighbourhoods, divided into numbered “residences” with 2 MB of space.

The Zenith easy PC EZ-2. (Photo from Steve’s Old Computer Museum.)
Contents

Stepping into the <time> portal

I started up the virtual PC, plugged in a real physical floppy disc drive via USB-C (yup, that exists—yet doesn’t make data transfers faster). Then, at the A:\> DOS prompt, I typed edit, hit Enter, and…

The MS-DOS Editor

Behold, the Blue Screen of… Editing!

Or, grey… as the computer I’m using only has a monochrome monitor.

The MS-DOS Editor, QBasic, Turbo Pascal, WordPerfect…

They were all silver text on a blue background. It was our “dark mode before dark mode,” using a palette of 16 or 256 colours, designed to be legible, not pretty.

People in 2025 talk about vibe coding with AI. But coding in 1995 had a vibe all its own: hands-on, manual, almost ascetic. No autocorrect, no autocomplete, no syntax highlighting, no folding, no linting, no formatting, no live reload, no browser, no Internet. Documentation was whatever you remembered or had in a printed book. Every line was a shot in the dark, a hope that it’d look right in both Netscape and Internet Explorer.

EDIT.COM was basic—but quirky. It required QBASIC.EXE to run, a leftover dependency from QuickBASIC. That extra baggage was finally dropped in Windows 95 with a minimalist rewrite of the Editor.

All the settings you can change in the Editor.

Despite how lackluster EDIT is, it lets you change the colours—or shades of grey—of the UI and set the width of the tabs!

Editing blues: a visual tour

Writing HTML in 1995 is not like writing HTML in 2025…

Web page written with HTML 3.2.

HTML was commonly written in UPPERCASE, echoing punch-card languages and SQL conventions. DOCTYPE wasn’t required, but recommended, as it helped the browser understand the version of HTML used and how to render it. Indentation? Rare—since every byte mattered, and screen space was tight.

The code was often not indented, as it was frequently written by hand, on low screen resolutions, while every byte of space saved meant something.

There was no CSS. Styling was a mess of attributes scattered across tags like <BODY> and <TABLE>. A lot of those old HTML attributes still work in browsers today (a living fossil record). That’s why CSS was invented: to separate presentation from markup.

Some tags, in hindsight, were pretty cursed:

  • <CENTER> to centre content.
  • <BLINK> to make text flicker (only ever supported in Netscape, and only if you wanted to annoy people).
  • <MARQUEE> for scrolling text, straight out of a Windows 95 screensaver fever dream.

Fonts? Forget it—web fonts didn’t exist yet. You had to wait for HTML 3.2 and the <FONT> tag to change text from Times New Roman to whatever font might be on the user’s computer.

Well, do you like frames? Here you have frames.

Netscape introduced frames in the beta of Netscape 2.0. Now you could split the viewport—menu in one pane, content in another. No more copy-pasting your navbar on every page. But frames broke URLs, were hell for accessibility, and ate memory. Eventually, they fell out of favour, but Internet Explorer introduced <IFRAME>—inline frame—and that lived on as the modern descendant.

With all that being said, it’s time to save my hard work onto a physical floppy disc, or as it’s known today, a ‘save icon’… 💾

*inserting floppy disc*
whirr… chkk-chkk… grrrrkt… grnk-grnk… click… whirr…

Going live! 🚀

Now, floppy in my hand, at a Windows PC, or sometimes a Mac, I test my gracious work done in HTML 2.0…

But let’s not celebrate too quickly. Here come the error popups. JavaScript was also new at the time—actually introduced in 1995, so writing it was something every webmaster had to learn and practice. Browsers did not have any developer tools. In fact, every error your JavaScript had would trigger a blocking popup.

“Error! Error! Error!” 🤖 Netscape Navigator 3 wasn’t made to handle JavaScript errors well, let alone JavaScript from 2025.

If that sounds annoying, it’s because it was. So I’d fix bugs as fast as I could in whatever computer time I could scrounge.

Time to quickly fix any issue I had in my code in the little time I had with that computer.

Now the screeching of the modem dialling up to the Internet fades away like the end of a dream as we flash forward back to the future.

Returned to today’s lesson at work of replicating the experience of a webmaster in 1995, in front of an audience of developers, half in nostalgia, half in curiosity, I upload my files to the Internet.

A community-style free hosting provider, GeoCities, in 1996. (While the service began in 1994, this was the earliest copy of the homepage found in the Internet Archive, which started in 1996.)

GeoCities being long gone, I’m using a spiritual successor: Neocities.

There is no SSH, no FTP, no fancy terminal. Just a web browser, where I select files to upload from a field, and upload my files one by one.

At least, I did it that way for authenticity—because that’s how it was done with GeoCities. There was no fancy drag-and-drop with web browsers back then. Although, today, Neocities lets you simply drag files you want to upload in the browser, and it also has a CLI to let you transfer files from the terminal.

There you have it. The site is up in all its framed and blinking glory, standing in its little corner of cyberspace. 🌐

The Homepage of DOSBOSS, the 1990s Internet embodied into a single piece of art.

I hope this brief presentation gave my coworkers—and you—not just a look at how it used to be done back then, but a sense of how much has changed since. We came from one researcher setting up a server to share documents with links to navigate between them. Back then, we were limited in what we could do, yet those constraits were what made us grow, be creative, and become limitless. ✨


P.S. If you happen to have some VMs of old OSes set up, I invite you to read Retrosurfing for a look at popular websites in the 90s, and how to visit them with the browsers they were made for. Also read Windows 95 on Mac for notes on how I made Windows 95 run in QEMU on macOS to capture some screenshots.

👋 Hi! I'm Rem, a Web developer since 1998, in Japan since 2006. I'm the author of dress.css and Scrollerful. As you can imagine, my experience is varied, including the early days of the Web being a webmaster writing HTML files and scripts in Perl, saved on floppy disks using Notepad, to now being a tech lead for a team, writing CSS with Tailwind or JavaScript for both the backend and frontend in Neovim. I love photography, typography, and colour theory. Strangely enough, my love for print graphic design was what got me into web development. So, yes, I have a few stories to tell and tips to give, and I'm writing some of them, sometimes, here, on RÉMINO Bits.