Hacker News new | past | comments | ask | show | jobs | submit login
Only 90s Web Developers Remember This (2014) (zachholman.com)
546 points by throwup238 on Jan 25, 2024 | hide | past | favorite | 397 comments



The server side image map.

True story. I am the worlds worst web programmer, that is I am not a web programmer, I am a sys-admin that occasionally makes web based tooling. And as such my web skills are stuck in the early 2000's. On top of that I have this terrible aversion to javascript(I am already writing a code generator in one language to create a second language, now you want me to throw a third language on top of that... no thanks). On one of my recent tools I needed to do some basic operations involving points on a picture. it probably would have been 5 lines of javascript, the only 5 lines of javascript in the whole infernal thing. No thanks, I won't be having any of that in my program, I am going with server side image maps... in 2023... yeah. So now instead of 5 lines of JS I now have 50 lines of python managing state and a special case in the request handler to handle the screwball fragment syntax.

I cringe a little, but am also strangely enough, a little proud of getting the thing to work at all.


The worst part about server side image maps is that it completely breaks archiving. So many times I've tracked down an old website address on archive.org's Wayback Machine, only to find that the homepage is one big server side image map. Without the original server, there's no way to discover the destination URLs for the rest of the site. It's a complete dead end.


> Without the original server, there's no way to discover the destination URLs for the rest of the site.

Try

  $ wget http://web.archive.org/cdx/search/cdx?url=http://example.com/*
for a list of every archived page from the site. It won't include pages archive.org doesn't have, but without the original server, there's no way to get those anyway.


That's the problem though.

If the imagemap is serverside, how does the IA archiver know where to click?

:(


Back in 2015 I fixed Chromium's support for server side image maps. It was almost totally broken at the time--any zoom/scale level other than 100% would throw it off, nonzero padding would throw it off, several issues like that. Nobody had noticed because image maps aren't used any more in general, and server-side image maps REALLY aren't used, but I was in the same boat as you: I wanted an easy way out without JavaScript, and I remembered my 90s HTML.

Sadly, after I fixed the Chromium bug, I decided the server-side image map sucked and I wrote the JavaScript anyway. The JavaScript version is better :(


> only 5 lines of javascript in the whole infernal thing. No thanks, I won't be having any of that in my program

I feel exactly the same way. HTMX is a godsend. That and a Tailwind UI purchase can make anybody very dangerous at frontend. I'm curious for other viewpoints though: what exactly about js gives that icky feeling. For me it's just the inconsistent syntax. With TS, on the other hand just seeing a node modules folder makes me nauseous. The whole thing gives me a feeling of a lack of control over what's happening and has thrown me off front end for many years until now


Sure the language is a little iffy, but as someone who enjoys shell scripting I have used worse. I think what I don't like is managing the logic two steps removed from where it is used.

I tend to write my web apps in what is referred to today as server side rendered(Which sounds stupid to me, I am not rendering anything, I am outputting html for the html terminal to render) as such, all my logic is on one end, and mixing in logic, in a different language, for the other end feels really ugly.

I have recently tried to be a better person and get more comfortable with javascript. What I have found that works is to completely invert the logic dynamics, give the browser a single static page that has nothing in it. only a single script tag that includes a javascript file. Then generate the whole page from that. Now all your logic is still in one language[1] and really javascript is a lot of fun to write, the language is still sort of crap, but now the dynamic stuff is really simple.

1. as a footnote, the great tragedy of the web is that (script language=) only works for javascript. wasm is an attempt to rectify this, but I think that while they are doing the best they can with the shitshow they have to work with. wasm is solving the problem at entirely the wrong layer.


> I tend to write my web apps in what is referred to today as server side rendered(Which sounds stupid to me, I am not rendering anything, I am outputting html for the html terminal to render) as such, all my logic is on one end, and mixing in logic, in a different language, for the other end feels really ugly.

And you often end up with server side rendering as well (hopefully provided by your framework) to make initial page loads faster.


Using SvelteKit, Drizzle (with drizzle-zod) and tRPC, the process of building a full-stack, highly interactive web app in a single, statically-typed language is quite painless these days.


> as someone who enjoys shell scripting

Ya sick bahstahd! ;]


> I am the worlds worst web programmer

Hey there now, you can't just lay claim to my title without first beating me for it in a title match.


Funny story, but I was at home in late 2019 and needed to interact with a device gui that didin't have any remote desktop software at work. It did have a screenshot tool and a command-line tool that would inject clicks though.

a few dozen lines of lisp later and I had a web server that served up an image map of the screen, and would respond to image-map requests by inserting a click. A nice little one-off to save me the round trip to work.

Then COVID happened and this tool got used by way too many people. For all I know someone is still using it.


good gawd! you could do the same with some CSS with absolute positioned hot spots. i can think of plenty of other CSS ideas to make it responsive. not one line of JS required.

i get it. i hate being in charge of UI. i'm a backend type through and through. however, i do have to do it much more regularly than you. i refuse to use libraries. so i've kept up with the changes to CSS since the early 2000s, and you can do some amazing things with it. i think it fits your "get off my lawn" style and can't recommend enough teaching an old dog new CSS tricks.

Edit: left out enough which is totally the opposite of intended point


> you could do the same with some CSS with absolute positioned hot spots

Nah, just use a client-side image map. Image maps are not deprecated, they still work in browsers, and you can use polygons to create shapes that would be difficult in CSS.


If it were anything other than tagging features in a picture I probably could and would have.


https://www.weather.gov/dtx/

still use one almost daily for getting weather data in my area lol


Any reason you couldn't have used a client-side imagemap and avoided having to write any code for it?


The function was to tag features on a photo, it ended up being this multi state process where you set a feature then click the point on the photo. Because I am an idiot, and the tool was really only for me, rather than infect my pristine, beautiful code(it's not, it is this horrible ball of python) with 5 lines of javascript, in a task that javascript was made specifically for. I spent all day figuring out how to do it with server side image maps.

In conclusion. there is no way to send an arbitrary point using client side image maps. a task server side image maps specifically solves.


> To this day it is the only way to vertically center elements.

Not true anymore (edit: didn't see the 2014) but the productivity cost of not being able to just "vertical-align: middle;" inside divs for the last 30 years must be billions of dollars.

Also does anyone remember the fade of the overline style on :hover links? It must has been around the IE4 or IE6 era.

Tables were also used to make divs and buttons with rounded corners, but that was true into the 2000s as well. The agony of designing and splicing them in Photoshop and putting them in table cells...


> > To this day it is the only way to vertically center elements.

> Not true anymore (edit: didn't see the 2014) but the productivity cost of not being able to just "vertical-align: middle;" inside divs for the last 30 years must be billions of dollars.

Even back then (possibly even back in the 90s? I know this existed in the 2000s) we had "VALIGN=MIDDLE" inside table cells.


Right, people seem to forget that table-based designs ruled the roost in the 90s and early 00s.

All of the vertical align, layering, etc hacks came from people not wanting to use tables anymore and divs (and other block elements) finally becoming more usable. Those hacks were the growing pains of an entire shift in paradigm.


Tables made much more intuitive sense than something like flexbox now but that came at the expense of being a nightmare to maintain.

Trying to hack a table layout together often led to frequent edits and initial attempts to maintain clean layout comments ended. You're left with never ending <tr><td><tr><td><tr><td> that you hopefully at least indented to maintain sanity. But god help you if your stumbled into another person's table layout code...

Spending time just entering "here", saving the file, and seeing where the "here" shows up. By the time 5pm rolled around "here" often turned into something like "ass" or "fuck", or if it's really bad "fuck you". IYKYK


I didn't say the transition was a bad one. I said that there was a decade or so of warts + growing pains as HTML and CSS grew to accommodate freeform block layouts. It wasn't until HTML5 + CSS3 that it was super usable, and until Flexbox that it became somewhat easy.


Was it any worse than nested div soups?


In some ways. There was at least a logical organization around a table, as long as you could wrap your head around all the markup and maintain it. Nested divs with CSS felt like you sometimes be halfway down a road that will never lead to where you want to go.


"table-based designs ruled the roost in the 90s and early 00s"

Have you checked how HN does layout?


No longer being preeminent doesn't mean non-existent.


Honestly it often feels like HTML and CSS evolutions were two steps forward, one step back.

Like, cool that we can now do rounded corners in CSS but why can't I vertically align in a div yet? (this was before flexbox)


Nowadays I just ask ChatGPT to write the CSS for me for that, and amusingly, it seems to be able to produce at least a dozen of solutions (often came with redundant rules, too: like having 5+ rules when 2 or 3 of them are enough).

It's hilariously stupid.


Bless its heart for being so dang confident about every wrong answer it has.


That's not stupid, it's just redundancy to make sure it works on all browsers!


Oh wait, we better make it work in IE6!

How much we were held back by backward compatibility before useful standards for things came ... But nowadays I just ignore non-standard styling. Just use the standard, because support is sufficient and browsers not supporting the standard sufficiently to make the website unusable are rare. By using the standard one also gives their developers a set target to get implemented.


iOS Safari has so many odd bugs in layout and CSS that trips up its touch based scrolling, it is so much like the IE days where other browsers worked and the site looked good, then you load in IE (Safari now) and something is broken.


I once (~10 years ago, wow the time flies) found and reported a bug in iOS Safari where when you enabled touch scrolling on an element inside <body>, it would scroll vertically when you swiped horizontally and vice versa. But only when the page also contained an invisible <iframe> that we happened to need because reasons (GWT stuff). Apple fixed it eventually, but I'd love to know exactly what the root cause of the bug was…


Not sure of sarcastic or not, but prefixed rules (per-browser prefixes) are a thing of the past in modern evergreen browsers.


Ironic. But I was not really talking per-browser prefixes, those are newfangled 2010s stuff. I'm talking way back in the day, when different browsers (well, mostly IE) sometimes had completely different ways of achieving something, in some cases requiring ~~unthinkable hacks~~clever and elegant solutions to avoid interference.


OMG the nightmares. I still had to deal with legacy IE CSS until a few years ago. The obscure and endless vendor prefixs to fix something it was never intended for.


It’s just applying proper separation of concerns. ;)


> It's hilariously stupid.

No no, it's going to take our jobs!

/s


You joke, but I am pretty sure, that in some heads that idea is already spinning. When can they hire fewer people and make those fewer people simply use ChatGPT or some other model. We might see an even further decline in web quality as a result, as we get even more copy&paste devs.


Increased productivity and doing certain tasks in less time or with less people has been going on forever and certainly last 30 years in web development. The growing businesses use the extra capacity to expand in other directions whether new products or new features. The stagnant companies continue to struggle with less.


Great for me, I work in IT security, and that's gonna tank even harder if people start seriously using ChatGPT in the manner you describe!


No, but the next breakthrough might...

Why do so many hackers have so much difficulty seeing that the current state of public LLMs is not the pinnacle of AI technology? Nobody ever even claimed that they were.


Meh, anyone who hasn’t been able to multiply their productivity with chatgpt is either is too stubborn to try it or, well, i’m not sure how you can mess this up.

From writing sql boilerplate to copy-pasting my entire pico8 game and going “add repulsion force to enemies so they don’t clump up on one tile” to using it to provide examples instead of synthesizing them from a manpage, it’s insanely good.


oh it helps, it doesn't multiply my productivity, I wish it did!

It marginally increases my productivity and reduces some friction, honestly I'm more than happy for it to write as much code as it can on my behalf, it just can't.

I suspect those for whom it is a big game changer, were likely engaged in lots of activity which is cookie cutter.


> Tables were also used to make divs and buttons with rounded corners,

i remember when that was all the rage. So much time spent on freaking corners...


And when it finally became easy to round corners, designers moved to square corners...


On *rounded* corners. :)


Only to find a browser that somehow didn't render cell spacing and padding correctly and now your corners looked like wandering tiles


It's still a huge PITA and requires all sorts of subtle understandings. Even in tailwindcss it's not simple, you need to think about what kind of element is it (block or not), is it text or not, what layout is on the parent, yada yada yada.


Here's a puzzle I had from the olden days: how do you do webpages with header and footer such that the footer is always at least as far down as the window height, but if the content is less than enough to push the footer below the fold it should be centered.

I remember that being far harder than it needed to be. I was a child though so maybe I just didn't get CSS well enough.


In modern CSS I'd try this: make a super element around the header and content, set the min-height of that to 100vh, and the display to flexbox, with flex-flow: column nowrap; and then align-items: center;


But watch out for 100vh on mobile. It doesn't account for the sometimes there, sometimes not there address bar.

To solve that, there's svh (small), lvh (large), and dvh (dynamic).

If you want to make a div stretch to the height of the window, so that something can appear exactly at the bottom before scrolling,

{ height: 100vh; height: 100svh; }

works best... the first line is there as a fallback for the few browsers that don't yet support svh... and if svh is supported it will replace the first line.


These modern days I'd personally skip over flexbox and use CSS Grid. I find grid-template-areas such a nicer to read map than trying to decipher complex nests of flexbox and I'm finding more every day that I prefer CSS Grid even in places that don't seem to be 2D layouts yet and could just be 1D flexbox.


Really wasnt a great experience... You could do similar with tables, everything was tables. But you had to keep your open and close in check across the page. Templating frameworks were less flexible earlier on. Sucked when say a large corporate team did headers and footers separate from your app team.

Flexbox today is better IMO.


Assuming body has header, main, and footer...

body {

display: grid;

grid-template-rows: auto 1fr auto;

min-height: 100dvh;

}

main {

display: grid;

align-content: center;

}


> not being able to just "vertical-align: middle;" inside divs for the last 30 years must be billions of dollars.

One of my favorite CSS hacks, it doesn't always work in every single situation though...

div { display: table-cell; vertical-align: middle; }

Feels dirty at first but separation of concerns is still enforced, and I can't see any other downsides.


(2014)

so while "technically" flex was available at the time it wasn't really widespread yet.


The place I was at in 2014 started replacing code with flex around 2014 and it was welcomed!


I missed the (2014), not sure it was there initially (but it was in the article anyway).


> Tables were also used to make divs and buttons with rounded corners, but that was true into the 2000s as well. The agony of designing and splicing them in Photoshop and putting them in table cells...

Wasn't an image with a click <map> easier? I wasn't old enough to write very complicated html pages so my experience is lacking here.


But a single image does not stretch the correct way, when you have a bigger button to make. Like:

    left-top corner: no stretch
    left: stretch vertically
    top: stretch horizontally
    ...
and so on.

I still remember learning to make the layout of a whole page as a table layout in school, with images in table cells for drawing nice borders around sections of the website. And we did that with GIMP!


> Wasn't an image with a click <map> easier

it's solving a different problem

it's referring to using a 9-cell table to make an element where the corner sizes stay static, while the middle column and middle row stretch horizontally and vertically respectively to match the size of the central cell (which e.g. has variable length text)

then with background image tiling in the left/right and top/bottom middle cells you can get an effect like a drop-shadowed panel that sizes responsively

you'd probably set the flexible cells to width=100% and then have a 1-pixel gif in the edge cells to enforce the desired min-width

I was sad the article didn't mention anything about the 216-colour "web safe" palette, but perhaps the author wasn't old enough to remember having to support users with < 24-bit colour displays... or when 1024x768 took over from 640x480 as the min screen size, allowing use of fixed-width layouts >600 pixels (the max possible: 640, minus browser default page margin, minus scroll bar)...


Depends. I'm the dialup days,. Cutting up an image and having it in a table could let you optimize each fragment as a gif with more limited pallet. So it would look better and be smaller. Especially with rollover image replacement.

I kind of wish that attention to detail for payload size was more common today.


Some websites did do this. But adding actual text that can be indexed by Ask Jeeves doesn't work with this solution.

Macromedia had this crazy system where you could slice your art up in Fireworks, and then ask it to generate the HTML and Javascript, then you could fine-tune it in Dreamweaver.

It was a mess.


From vague memory, images of buttons were indeed used, but tables or other tricks were necessary to dynamically adjust container size to its contents, e.g., for internationalization.


You could make a fantastic looking website with use of imagemaps and judicious use of hover image replacement. Glowing buttons, drop shadows, you name it.


> The agony of designing and splicing them in Photoshop and putting them in table cells...

Wasn't there a Photoshop-adjacent tool that did the slicing for you? I remember a print designer on my first job feeding what was, essentially, a full-bleed leaflet design through it, and producing a "landing page" with hundreds of table cells.


Macromedia Fireworks?

I think that’s what you’re remembering.

https://en.m.wikipedia.org/wiki/Adobe_Fireworks


[deleted]


Photoshop itself did have a "slice tool" which allowed you to draw slices. There was a special export mode which exported all these slices for you, and IIRC, could even generate a tabletastic HTML for you. Maybe this is what you remember?


Photoshop itself would let you slice an image into sections and then export them as separate images.


Adobe Imageready , was capable of visually making image-maps (you added links to sections of an image) and also had tools to create Gif animations (later embedded into Photoshop proper).

A page I have for one community project still uses those Imageready generated maps :)


That's the puppy! Thanks!


I worked with a PS wizard around 98 that was able to do that... Had to do a complicated rollover trail with a 15x9 grid of category images.

She was great to work with.


Eventually, but not originally. The first designers who knew how to do it manually were basically considered to be wizards.


This week I ran into a problem with vertical centering I couldn't figure out: Text in a flex item with overflow ellipses and vertical centering. Other people online have shared solutions that did not work for me, but I've since convinced myself it looks better as-is. Billions of dollar is not an exaggeration.


oooh god please no photoshop splices. PTSD.


.ptsd files


.cptsd ?


Macromedia Fireworks will slice it for you.


I think I saw something about being able to directly center block elements just come down the pike.


Yeah, it turns out vertical align works differently in tables, so you can just make a one cell table and vertical center all day.

I think there was a Chrome developers blog post about it recently.


Until you had a few hundred tables in a complex page and IE6 just renders a blank screen.

Don't miss those days.


> DHTML, which stands for “distributed HTML”

> Sites like Dynamic Drive meant that instead of thinking through creative solutions for problems you face, you could just copy and paste this 50 line block of code and everything would be fixed.

DHTML in this context stood for Dynamic HTML, not “distributed”, hence the Dynamic of Dynamic Drive.


> DHTML, which absolutely stands for “distributed HTML” because that’s the name and this isn’t obvious bait for the no fun crowd at Hacker News

That was meant as a joke, which you misquoted.

Edit to add: others made the same misquote, so I wonder if the author cheekily edited it recently.



I copy/pasted. The author is up to shenanigans.


no, they probably needed to emphasize the joke aspect to the pedantic army of superior IQ readers.


"Technology of Terror" as the description still stands though with no rebuttal.


I was wondering if this was meant to allude to the “you could just copy and paste” a bit further down. And maybe a riff on DCOM.


Discussed down-thread: https://news.ycombinator.com/item?id=39127528

Conclusion was that it's a joke, but not a good one.


Wow, he really did find the No Fun Crowd here.


A person I know won a Microsoft contest when this was first announced and rolled out. Here's to you Scotty. A very smart person at a company full of them in the late 90's. I was one of the dumbest around in a place packed with talent. Never worked at a place as smart since.


So, so much time spent on DynamicDrive. It was the future. Thanks for the reminder!


Coping scripts from Dynamic Drive made people think I was some sort of Web God.


Let's not forget frames, the original 'solution' to the problem of having to edit the navigation bar on every page.

Unfortunately, you then had to figure out what to do if someone accessed the frame page directly, since search engines could still index these parts of the page seperately. And they always felt jarring and awkward too, since the cutoff between sections was always obvious...


The real pros used server side includes, where you could drop specially formed comments into your HTML which then be processed by Apache and replaced with the content of another file before being sent on to the client.


Frames lead me to IIS SSI’s which lead me to PHP 3 which kicked off my entire career.


Likewise, I think its under appreciated just how many people got their start in this industry through tinkering with things because they seemed interesting.


i got my start with a copy of Gorillas - a QBasic game - when i was maybe 7 or 8. to play it you had to open the code and execute it. one day i got curious what all of the gibberish text meant, and that was the start of my journey: a damn game of gorillas throwing bananas! now here i am.. 30+ years later and eternally grateful for those pixelated primates. i sometimes wonder what drove me to tinker with that code that day.


If you are being framed by other websites, you deploy your 'frame-buster' script. If your page is orphaned without your own frames, then you summon your 'frame-joiner' script.


And if you mess up the domain detection, it just navigates perpetually between the two.


Frames are still used as underlying microfrontend technology with surprising success. Theory available at https://martinfowler.com/articles/micro-frontends.html#Run-t... and an implementation at https://luigi-project.io.


That's iframes. There is an older, even more archaic spell that lets you do iframes, but not inline. Those are, as we all know, superior.


Yes! Those were made with the now obsolete <frameset> tag. An example here: https://www.quackit.com/html/html_4/tags/html_frameset_tag.c...

In fact, I used them too around 2001 or so for my website when I did not enough programming/scripting to add a common layout to all content pages. That's how I originally implemented a two column layout: a narrow frame on the left for navigation links and a wide one on the right for content. I don't do it anymore, of course. I do know how to program now and generate my HTML website using a tiny Common Lisp program that adds common headers and footers to all my web pages.


We've come so far. Using a language from the 60s to write markup in a language from the 90s all so we can feel good by avoiding writing imperative code in another language from the 90s.

Seriously though, why can HTML not have a client side include?


Thankfully you can do it now in a custom elements. I used one, I assumed everybody else would have one by now, too


You can do client-side include with XSLT, which (surprisingly!) all major browsers support.


A comically large proportion of “AJAX”-type use of JavaScript could just be frames and probably perform better, if frames had evolved a bit rather than remaining stagnant.

Fix that and give us HTML tables with basic features built-in and datasource-backed tables + list views back in the mid ‘00s and mind-boggling amounts of time and money could have been saved.

Instead, none of that happened, and it still hasn’t.

Don’t even get me started on how much money could have been saved if the Web had adopted payment standards so that the browser itself could handle payment input.


> since the cutoff between sections was always obvious...

and not exactly the same across different browsers.

Yes kids, there was a time when not everybody was using the same browser.


Well, actually, there was only a short time, when more than one had been widely used. Something like Mosaic - Netscape - IE - Mozilla/Firefox/The Browser Now Known As Vivaldi/... - Chrome


I seem to remember Netscape and IE having had similar market shares for a while at that time (the infamous first browser war), but my memories might be distorted to be honest.


They did, even worse, there was a time when both Netscape and IE were common. But also multiple versions with incompatible rendering and features.


Netscape was the only game in town at one point. From memory, the three big transitions have been Mosaic > Navigator > IE > Chrome.

Here's hoping for another one, just to keep them on their toes.


Just before Chrome, Firefox was quite popular, at least among the terminally online. But it wasn't enough to take the crown iirc.


I think I remember Firefox topping out around 30% just before Chrome was released.


That and also tables (with invisible borders), which was the content positioning before CSS tool of choice and went way into the 2010s.


> and went way into the 2010s.

Unfortunately, it is still used for html formatted emails


This continually blows my mind. Even Gmail is this way. If they just put a flex box in there it'd be mostly fine.


If I had to hazard a guess, it'd be that HTML email is probably one of the lowest priority things on the roadmap over at Google or Microsoft. The vast majority of regular folks sending emails send mostly plain text, and even many company sent emails also on the basic side (though with these limitations, it's probably self reinforcing there).

Add this how more complex emails could potentially lead to security issues for their webmail clients and waht not...

And well, "eh, good enough" is probably the order of the day.


Yeah. If you ever want to feel nostalgic about old-school web development, go build an email template.


Unfortunately, it is still used to format Hacker News.


216 web safe colors anyone?


Not just that, but also the solution for having the navigation (and ads! can't forget the ads!) stay on the screen when you scroll down…


There has also been the reverse problem of someone embedding your entire site in their frames to place ads on top of your content.


We called those "para sites"


Don't forget hidden frames/iframes used to move data around before AJAX.


LoL... I used 1px frames to post to for sending data to/from the server..

window.top.callbacks[number]("serializedData™)

In the latter 90s. Would also client render navigation frames at the time. Wicked fast compared to most web apps at the time.


The year is 1996. Microsoft's homepage has a menu bar that expands when you move your mouse over it. I am determined to figure out how this works.

At the time, IE has a "view source" button, but it's not very platform aware. You get a Notepad doc. The server is running Unix with files where lines break on "\n" and I'm on Windows, which needs "\r", so the source is one single long line of html.

I look through the source thoroughly: what is in their html that I don't know about that lets them make things move around? All the html tags are ones I know. All the content is text I can see on the page.

The only mysterious bit is these "&nbsp;"s. I've never seen those before and don't know what they are. They appear on sites with moving menus. They must be related.

(For six months, I believed the effect of dhtml was achieved through magic incantations of what turned out to be html entities. A bit later I found WebMonkey tutorials and this turned into a whole career.)


View source was my launchpad.

Minimizers and compilers are great, but I so miss reading through the well manicured and maintained source of a well-designed site.

I wish we could have gone with a type of compression that allowed us to keep the original source formatting for perusing production code, and ideally keep the expectation that others from around the world will be reading our code.

I imagine it had a lot to do with how quickly this thing has progressed early on. It's definitely a big part of my own origin story in this industry.


When Adobe bought Macromedia, my hope was for the flash format to largely become a Zip file with SVG, JS and other assets as a package.

MS Silverlight was close, but too late as flash died and people stopped installing browser plugins.


Right there with you. I was a huge fan of AS3 and build some great client projects with it. When using types, it very closely resemble Typescript in a lot of ways. I was hoping for open standards and eventual direct browser integration.


Same here! What a magical and empowering feeling to just see how a website works, edit it, and see the changes immediately. A year later I was paid to make my first website and 28 years later I'm still working as a full stack web developer. That one discovery in a toolbar led to a career and changed the course of my life. It's sad that that type of discoverability is largely gone.


I want to know what was actually causing the moving menus! I wasn't around coding at the time, so I'm going to guess that the moving menus were actually caused by a `<script>` tag (maybe one pointing at an external JS file?). Did you ever find out the reason? Is my guess correct?


Yeah, it was 100% a script tag. At the time, I didn't understand that you could pull in code from another URL and have it impact the current page. I thought "view source" was everything impacting the page.


Similar experience wanting to replace images on mouse over. Bought "JavaScript Bible" at Barnes & Noble, read it that weekend and never stopped learning.


Wow, WebMonkey....that brings back memories.


Don't forget that tables could be used for rounded corners. Or maybe I'm an early 00s web developer with that? The trick is that we created 3×3 tables, and aside of the middle cell, it would contain <img>s, so that the creation was a website element with rounded edges, the pinnacle of human expressiveness.

Since HTML emails were also the rage, and email clients updated much slower than browsers, this technique was used well into the 2010s, if you wanted your thing to be displayed correctly.


Will never forget having to create collections of tl.gif, tr.gif, bl.gif etc. images for those 3x3 tables, not to mention the 1x1.gif the article mentioned that was needed for the left/right cell backgrounds to show since browsers at the time didn't render background images of empty cells. Good times.


And right at the time we got border radius the design trend changed and nobody wanted round corners anymore


I still want round corners! Square corners feel claustrophobic.


They're back now. Hard corners were kind of a big thing in the early 2010s, think Android Holo, Windows 8, etc.

I think Apple popularized the return of rounded corners in software with the iPhone X launch, when rounding the corners of smartphone screens became popular.

macOS rounded the window corners more, I think with Big Sur. And Microsoft followed suit in Windows 11.


I think several things in this article were more from the early 00's than the 90's.

Before using tables for rounded corners, I remember playing with a multi-chat app called Trillian (which handled yahoo chat as well as ICQ and others). It could be skinned to your liking in much the same way you were dealing with rounded corners. The top and side cells were repeating images so resizing the window would work well.


https://www.folklore.org/Round_Rects_Are_Everywhere.html

The great an mighty Oz's crowning achievement. Ok, maybe the iPhone was bigger.


> Don't forget that tables could be used for rounded corners.

And drop shadows!


I saw a post shared on some platform recently that some screens in Amazon still use this technique.

I remember slicing and dicing up the rounded corners in photoshop.


> and aside of the middle cell

No no, the middle cell contained the tiled background image, of course!


No 90s/00s website would be complete without a "best viewed in 800x600 resolution" button. If you wanted to go fancy, you'd also put "Valid HTML 4.01".

Another goodie: ads used to be simple standard sized <img> banners, instead of the crazy JavaScript bundles & video ads like today.

I remember being in shock when I realized that Norton Internet Security 2003 was silently rewriting HTML on the pages I visit and removing `<img width=468 height=60>` banners (and a few other standard ad sizes) but keeping everything else. (20-years old confirmation that adblockers are a security solution! ;)


Not a single use of the word 'webmaster' in the whole article. Was Zach even around in the 90s? ;-)


Still got my “Webmaster” business cards from the late 90s. No one will ever understand how “cool” it was to have that title back then. Now even I cringe when looking at them but so many good memories.


Why do you cringe?

The titles of today, such as Site Reliability Engineer, are way more cringey...


Not only was it full stack, but user/community management, strategy, perhaps sales, all rolled into one.


Yes, that's as far as you should have to go when it comes to somebody ultimately responsible for a whole website ;)


Hope you had a Nokia 7110 to go with it. I know I did.

Living 15 minutes into the future. shhhhh-clunk.


I worked with a woman who officially referred to herself a "webmistress". Not as a joke.


I recommend The Geocities Gallery [1] to go back in time and experience the 90s web yourself, there is something beautiful about all these personal web pages. Each one has a distinct look that alone can tell a lot about the author's personality, usually contains some bio info together with several random personal pictures, lists of recommended links with short descriptions, loose talk about their hobbies and so on - it's just so personal and calming, a striking contrast to today's social media where each profile page looks the same (bland and boring), with overwhelming, ever growing amount of content and a pressure to maintain a certain image of one's life.

[1] https://geocities.restorativland.org/


Man, thanks for the rabbit hole. I spent a while there, both trying to find my old site (I don't recall which directory under Area51 it was in, and it may never have been archived) and just reliving it.

Memory is weird. Somehow viewing Geocities made me recall the smell of the old internet. Probably just the smell of the family room where the computer was.


I remember using the brick background from windows, combined with transparent GIF graffiti in the mid 90s to create a pretty cool effect.

Early efforts from the BBS art groups like ACID, ICE, FIRE etc was also very cool at the time.

Anything more advanced prior to IE5/6s dominance was relegated Flash though. I built a framework similar to React around E4X in the early 00s. ActionScript/Flash/Flex, Mozilla/Netscape supported it and VB.Net's XML literal notation was similar.

MS and Google wouldn't adopt it and then JSON became king.


Ah, the 90s - a time when <table> was the answer to every web layout question. Miss aligning your text? <table>. Need a fancy menu? <table>. Creating a full website? Nested <table>s! Who needed CSS when you had rows and cells to hack your way through design? Good old days of <td>-ing everything!


Still true for email layout in 2024


Still true for layout in Hacker News in 2024


But don't forget that you'll have to add the `<font>` tag in _every single cell_.


It was all TDD back then. TD-Driven design.


I still love tables. They are so awesome for dynamic design. The support column and row spans, alignment, weights.

And CSS is still way more complicated than good old tables.


That's because Tables actually map to how digital imaging works: dividing an area into little squares and deciding what to show in it. The screen does it, the driver does it, the window manager does it, the desktop primitives do it... and then you get to the browser screen, and suddenly you have to figure out a byzantine system of self-mutating shapes.

I was an early CSS supporter but man, didn't the boffins screw up that one.


Exactly and this is why CSS grid has changed my life. CSS grid is tables on Wheaties.


And now we get some more semantically correct way to do it.

<div class="row"><div class="col">


Hang on. Those don’t look like auto-generated React classes!


<table> was the Robitussin of the web.

https://www.youtube.com/watch?v=BvyHEijg59A


Sadly, I still find using table-based layouts easier to understand than most CSS today. I grew up with the 90's internet...


Ah cmon, take a few minutes to gen up on flexbox it’s not too hard and you’ll thank me.

https://css-tricks.com/snippets/css/a-guide-to-flexbox/


It does seem decent. I don't do much front end work these days (and thanks!)


Speaking of the greatness of the 90s, does anyone have a good version of the classic "Under Construction" GIF?

You know the one — it was in the style of a yellow road sign, and on it was a pixelated silhouette of a construction worker diligently shoveling.

Long before Gmail had the smug audacity to leave "Beta" on their product name, you could use this GIF (or even a whole row of them!) to proudly announce to the world that your site was — like all great works of art — never complete.

I've searched high and low for the classic version of this GIF — the true, original, platonic ideal — but all I've been able to find are poor knockoffs.


http://textfiles.com/underconstruction/ If it isn't here, it probably can't be found anywhere.


Thanks, that made me laugh out loud because of pure joy.


Take a look on https://gifcities.org/ - I'm sure you'll find what you're looking for!


The other replies might sort you out but if they don't, check out some of the shareware/CD-ROM collections on the Internet Archive. They have thousands of ISOs of magazine inserts, shareware discs, and all kinds of discs from the 90s. They're each like little time capsules so you may end up finding that image or ones like it on those.


I don't remember if this was a common technique, but before XmlHttpRequest (came in 2000, i think) we used to do "Ajax" by loading data into an invisible iframe and reading the contents. Worked well iirc.


Oh right I forgot about that.

Also back then (up until ~2005) browsers were hilariously insecure. For example I was in a forum of a local youth club and you could have signatures that were displayed under every post so I added some edgy image linked from my own webserver.

Some day I accidentally put the whole folder on a password protection which prompted the "username password" login window on every page my signature was linked to. FOR ALL USERS.

I realized users would think that the forum software would ask them to log in again for some reason so I basically got all passwords of people in the forum in plaintext on my webserver.

Crazy times


> reading the contents

Or having some javascript code in the page loaded by the iframe which could call some parent. function.


You could even do realtime stuff by leaving the HTTP socket open and writing out script tags when you needed to. https://en.wikipedia.org/wiki/Comet_(programming)


I also don't know how widespread this technique was back then, but I'm shocked this was left out of the article. This phenomenon was literally the method that transformed a "websites" into "webapps" in the early days. We would use pools of invisible iframes to constantly update different parts of the page for a "reactive" experience. The author mentions various important hacks that define the early days, but missing this one seems like a blunder to me.


did you ping pong communicate data back and forth between iframe and "main frame" like a queue/pipe?


I miss MS FrontPage!

I remember how shocked my friends looked whenever they came by and saw it open on my screen. They never understood why I spend hours on that thing instead of just playing games.

The first time I thought about learning to code was when I visited Linkin Park's website. Sure, it took 10 long minutes to load but it was a masterpiece of its own.

I'd just open the website and stare at it. And one day I just decided that I'm going to make one myself. I'm trying still...


I used FrontPage to teach myself how to create websites (if you could call it that). I placed elements in the WYSIWYG editor and then looked at the code which elements etc were produced. Such an amazing time.


Nowadays you can just get half correct tutorials from W3 schools written in an extremely authoritative tone.

Or have ChatGPT give you the same quality of learning, and with the same authoritative tone.


I also remember finding out about scripting with either VBScript or JScript (which was different from JavaScript).

Shortly after, I discovered that there's a function capable of listing folders and files from the visitor's hard drive. No permissions needed. The browser just had full access to the hard drive.

Naturally, I wrote a script and loaded it on the homepage of my website. The goal was to save, on a file, the contents of visitors hard drives' contents.

For some reason that never worked. But yeah, the internet back then was a very scary place.


> JScript (which was different from JavaScript).

It was just Microsoft's name for JavaScript because they didn't want to deal with Sun's trademark, but they did add a sprinkle of their own extra stuff in there without talking to any other implementers about it. That was par for the course for Microsoft of the day though.


I remember using FrontPage quite a bit too. It had some... interesting quirks when it came to outputting HTML, but it seemed fine enough for me at the time.

Which also reminds me; did anyone actually use the FrontPage Server Extensions they had for it? I remember the tool having a bunch of dynamic features like counters and guestbooks that relied on them being installed, and web hosts sometimes having these extensions listed in their features, but I never saw any sites actually using them.


I remember adding counters to the bottom of my websites in FP, but not sure what technology I was using. Fun times indeed!


I was thinking this exact thing just the other day, as in, within the last week.


It's the nerd's roman empire. I thought about it this morning.


Archive.org has some old copies, maybe you remember this one? Still loads slowly :)

https://web.archive.org/web/20011202145112/http://linkinpark...


No, it was from around the launch of meteora iirc.

I tried to look it up, but the only copy that have a bearing resemblance to what I remember doesn't load very well as many files seem to be missing. And, the snapshots after that one just keep returning a 302 error :/


Meteora is such a great album. I got the special edition on CD back in the day, the album art is fantastic.


> I'm trying still...

Don't worry, you got this. Web development has become a lot simpler since then, after all.


Easier, yes, but not simpler.


It's unmarked sarcasm. I don't think it's become easier or simpler in all seriousness. This isn't a bad thing- as things become more important, more concerns rise above the surface, and as more concerns rise above the surface, dealing with them all makes it harder.


FrontPage was good and all, but you can pry Macromedia Dreamweaver from my cold dead hands.


The PHP code generation it did was hilarious - I remember my designer partner trying to make a dynamic form, and it ended up with 1400 lines of code where 14 would have done.


Dreamweaver was glorious and the tool that introduced me to html.


Dreamweaver 3. It was downhill from 4.


Frontpage was notoriously horrible. It'd make pages that usually looked the way people wanted them to, but the source was a total mess. It was full of redundant and unnecessary tags. You could spend ages cleaning up HTML written in frontpage but if you put in the work you could decrease pageload times and file sizes significantly. Personally, I avoided it at all costs and stuck to text editors. Frontpage was so terrible that it made me resist using Dreamweaver at first out of fear that it'd be just as bad.


Don't forget image slicing and image maps!

https://www.creativebloq.com/adobe/image-slicing-photoshop-6...

(2014)


My first paying client when I was 19 (so around 1998?) commissioned a local high school graphic design student to hand paint this crazy village scene with stores. She then had it professionally scanned and gave me the files... which I then used to create an image map for each of her little "store fronts". She couldn't accept payments online (they didn't teach me that in my community college HTML course), still had to print out an order form and send in a check. I will never forget the horrid repeated plaid background she made me use.

I miss the early ugly web lol.


Image maps were top-notch to make menus with graphical buttons on the left, to change the iframe page on the right :)



My favorite workflow was to make a totally l33t render with 3dsmax, put it in Photoshop to draw UI buttons, and then use Imageready to slice it and autogenerate the html slices and maps. Instant fancy website that made me a cool kid as far as I was concerned


If you were using 3DS for web design you were legit l33t :)

I pulled an all-nighter to hand in a college homework to demonstrate gradient descent using Maya once. Sadly, the teacher was not impressed. Good times.


Or faking an image map using tables: https://www.spacejam.com/1996/


Image Maps were huge in the 90s. You’d have your landing page or header navigation as a giant image and just define shapes around the areas you wanted to be buttons. Saved you from having to chop the image up into tables.

<input type=image> was similar but processed server side, clicking the image submits the form and reports the clicked X and y to the server. We used this at my first job a ton for maps. The MDN article actually doesn’t do this input type justice and misses their true use.

HTTP 204 was huge too, and something I still use. Early way to send a message to the server without a page refresh before AJAX. If a request responds with a 204 the browser stays on the current page. Lots of star rating systems like on Amazon and early Netflix for instance used this. Click a star, link makes the request, 204 keeps you on the current page. Sometimes you’d add a little JS to pretty the interaction up. CSS active was usually good enough.


I'm sad they didn't even talk about Macromedia flash, Microsoft frontpage and Dreamweaver.


They do mention FrontPage though.

As far as I can remember, FrontPage was pretty nice. I built my first home page with it. I wanted to (visually) best all of my friends on IRC. So I designed how I wanted the page to look in (an obviously pirated copy of) PaintShop Pro. A sort of an embossed oval with navigation links on the perimeter, with all the page content appearing inside the magic oval.

But to wrangle such layout to HTML was not easy in the late 90s. I eventually managed to find out that other pages used <table> elements to force position stuff. FrontPage allowed me to stitch the individual images from PSP to a table in a WYSIWYG environment - I don't think teenager me would have had the patience nor understanding to ever do it without FrontPage. When I evenetually got it to render without glitches in IE I was _so_ proud.

The only complaint to my GUESTBOOK I got was from some guy using "lynx" (a CLI web browser) who said navigation was impossible. I only later learned about the "alt" attribute for non-visual users. Not sure if FrontPage would've even allowed me to set it though.


> Have you ever shoved a <blink> into a <marquee> tag?

If you did, it would blink on Netscape, and it would be a marquee in IE, but not both (in the 90s!). Netscape had blink and IE had marquee and did not support the other[1][2], at least in the 90s.

[1] blink: "some, such as Internet Explorer, never supported the element at all" https://en.wikipedia.org/wiki/Blink_element

[2] marquee: "the first time I tried Netscape 7, in 2002. Netscape 7 and its close descendent (sic) are, as far as I can tell, the only web browsers to support both <blink> and <marquee>." https://danq.me/2020/11/11/blink-and-marquee/


Using vi to update the .html directly on the production server (and this wasn't a personal website)... simpler times :)


lol yeah, ssh to the server, find the www dir, edit, :w, hit reload, :q when it works :)


I could deploy to production 30 times a minute! haha :)


> DHTML, which stands for “distributed HTML”

"Dynamic", I think; not "distributed".



It's amazing how many people get this wrong while claiming they were big into web development "in the 90s".

DHTML was the beginning of the Document Object Model API. It was about changing things on the page through JS and not anything to do with the `alert()` function as the OP claims.


Was hoping someone would come here and say this, although we're getting to the point where if we don't write it down we won't remember it, and mandela ourselves out of how things actually were.


That's my memory, too. I saw "distributed" and did a double-take.


On the other side we were told that those colorful gradients that will be the fad of the 20s are cheap and we were scolded by professional designers for using them.

Not that we had CSS gradients, we were using gifs or jpegs.


I don't understand. I'm interested what this means.


We’d generate a 18x1 GIF with a gradient color change (or from a solid color to a transparent color) and stretched that out over however pixels we wanted to create a gradient-like effect. e.g

<IMG SRC=“/gradient.gif” HEIGHT=“18” WIDTH=“600”>


Gradients look boss.


Gradients as decoration look boss today. They looked cheap 30 to at least 20 years ago. Then they were forgotten and that made their return possible. They'll become unfashionable again. It's an eternal cycle.


Windows 98/ME and the Office versions of the same time are often blamed for making gradients seem boring and uncool. (Windows put a Gradient in every title bar and Office over-used them in all sort of other ways.) Microsoft was definitely an interesting contributor to both the fad at the time and the "gradients are boring" rejection a few years later because they seemed boring and uptight like an Office program.


For all the goodies in this article, I can't forgive the author for not disabling his default round corner css for the icon image!

https://i.imgur.com/CJGcSeb.png


If you yearn for “the good old days,” consider that we’re living through “the good old days” of AI. In 30 years a blog post like this will poke fun at prompts, chatGPT, chat-with-docs apps, dealing with hallucinations, and what else?


Having to bribe AI with $200 tips. Giving them pep talks to convince them they are capable of doing something. Trying to persuade them not to be so gullible they’ll do anything untrusted data asks them to. Telling them you have no hands so that they’ll write code for you. Flattering them by telling them they are an expert in something.


I still use &nbsp; when writing headlines, to avoid breaking apart 2 key words that should stay together.

I also use the non-breaking hyphen for this, which is a different char than the regular hyphen or the em/en dash.

> 1x1.gif let you push elements all around the page effortlessly. To this day it is the only way to vertically center elements

If you can think of another way to vertically center, I’d like to hear it.


Flex box row inside a flex box column, justify: and align: center.


Even easier is grid + place contents center


> avoid breaking apart 2 key words that should stay together

Yes, this is the correct usage of &nbsp;. That's much saner than using it as a spacing tool.


Missing mention of Flash/Shockwave.

That said I've missed all the things mentioned. And I don't miss it. Days where IE4, NN4 and a huge margins of stealing browsers existed all at once. Nobody was willing to take the literal hours to download a new browser over dialup. Hell, people rarely ran windows updates.

I still remember IE 5.0 that was on the office 2000 and Windows 2000 disks (not ME). It broke the legacy interface for manipulation of select controls. 5.0.1 fixed that, but it was too late.

I remember when IE8's JSON parsee broke with an error you can't catch if you used the prototype library or similar.

IE4, NN4 and IE5/NN5 had different, largely incompatible interface for dynamic elements. Want a form to show a field based on another field selection, client side and cross browser, omg it was a pain.

Stack diagrams and giant charts, so much fun.

People complain about the packages and how painful it is today... I'll keep what we have.

While I think HTMX does a better job for many things today, I'll still live text more than front end web development in the mood-late 90s.


>I still remember IE 5.0 that was on the office 2000 and Windows 2000 disks (not ME). It broke the legacy interface for manipulation of select controls. 5.0.1 fixed that, but it was too late.

Do you happen to remember more details about this. In particular, what method worked for the IE 5.0 that was broken?

I develop a framework that aims for universal browser support, and I'd like to account for this.


It was just IE 5.0.0.. there was an offer interface and the new dom interface. IE5 initially only supported the new one.

I honestly wouldn't even worry about it today. I don't even recall what the method was. Both probably still work in current browsers. The bigger manipulation and the older interface.


DHTML means Dynamic HTML, not distributed html


Fairly sure that was a joke given the rest of the paragraph.


And SHTML for Server Side Includes.


Yes! And occasionally, I still miss them.


distributed word did not existed in the dictionary back then


It was a joke.


I assume it was a joke since he then goes on to talk about Dynamic Drive and would for sure know what DHTML stood for.


For me, the life changer was SSI. You mean I can just include files and not copy menus all over the place?

I also remember being enamored by image maps. Mapping out the polygons without software was beyond the confidence I had as an 11 year old.

And a self-hosted CGI-backed counter--the holy grail.


Another big one from the 90s: splash pages. A single page dedicated to introduce and set the tone for a website. Click to enter.


Ah, and maybe I could choose the 28.8 vs. DSL version of the page!


I think the most obscure thing I used was <keygen>, which would generate a client key/cert pair, store the key locally in your browser certificate store and send the cert to the server with the form submission

I saw exactly one website use it and remember being very confused as to how it achieved that

https://web.archive.org/web/20160409081411/https://lists.wha...


I sure wish <keygen> had had a good UI. We could be living in a world where two factor authentication based on PKI and personal HSMs would have been a thing. (I'm sure I'm thinking of it thru nostalgia-colored glasses...)


Passkeys are getting close. Might be any day now.


Tried to make it work, guess support is gone for good in latest firefox/chrome


That’s nothing. The real state of the art was putting a smiley GIF inside a horizontal marquee, inside a vertical marquee, and setting behavior=“alternate” on both marquees.

For your pleasure, here’s how to do a marquee in pure CSS:

@keyframes marquee { 0% { transform: translateX(100%); } 100% { transform: translateX(-100%); } }

.marquee-container { white-space: nowrap; overflow: hidden; position: relative; animation: marquee 10s linear infinite; }

.marquee-content { display: inline-block; }

<div class="marquee-container"><div class="marquee-content">Microsoft™ Internet Explorer™ 4.0!</div></div>


Or you put the main table inside a horizontal marquee, and the column that contains your side navigation inside another horizontal marquee that scrolls at twice the speed.

Then the navigation "rows" the entire site across the screen.


Youngsters need to know how much markup and images we needed for fluid containers with rounded corners...

Also did I tell you about CSS-only triangles ?


You'll know the webmaster know their shit when their page has rounded corners everywhere.


> DHTML, which stands for “distributed HTML”, was the final feather in our cap of web development tools.

Dynamic*

Anyway, there's also tables for layout, including Photoshop and Dreamweaver having a slice tool to generate those tables.

Also most of the coolest early adopter sites using CSS were anime artist portfolios, because it allowed them to do much cooler stuff.

Webpage view counters.

Midi files playing when you came to the site.

The <font> tag. Oh and <strong> was spelled <b> and <em> was spelled <i>. We also had <u>.

XHTML, with very long doctype tags I used to know by heart.

Diagonal stripped images that tiled for backgrounds were all the rage.

> Pixel fonts

Ohh yes. "Visitor" was the most popular one and was everywhere.

Not really dev-related but Windows used to make a noise when you would click links. For some reason, when you'd trigger a pop-up or an activeX control the multiple redirects or whatever would cause the click sound to happen over and over again. You knew a site was really turning its gears when there were three or more clicks.

Every site wanted you to install a toolbar. I collected them like pokemon, to obvious detriment (spyware galore). You bet I also had Bonzai Buddy or whatever his name was installed. Being 12 was fun.

DHTML was wild, alert was like magic. prompt() was also a favorite, haven't seen that one used in ages and it's likely now removed.

Downloads had a popup every single time you clicked on it - no download menus.

Flash. Shockwave. The other one from Microsoft that was cool for a bit but super convoluted and buggy... oh right, Silverlight I think.

PhpBB and vBulletin and Conforums. You were cool if you had a forum signature that was large and commissioned by an artist that likely used PlanetRenders. Bonus points if it was coordinated with your profile picture.

X.com still said "coming soon" or something, for decades I swear (everyone wanted x.com and I was always jealous of someone having a domain name with less than three letters).

Java applets (RuneScape was a good one).

"Sign the guestbook".

Overline styles were great fun.

Once flash hit, entire sites were made in it. No, text couldn't be selected for the longest time (ever?). Accessibility ("a11y") was but a hilarious concept. Text flying everywhere, blinking, even on fire in some cases.

Gifs with their boolean alpha channel making everything so delightfully crispy.

Bitmaps were used often since they were the defacto format for MS Paint. Most 1x1's I made were in paint. They had to match the background color you were using since MS Paint didn't support transparency (does it even do that today?)

Rounded corners were done using a 3x3 table and images for the corners. No, border radius was not yet conjured up. No, you couldn't rotate the images, you needed 4 different ones.

Emojis were not emojis but emoticons and were images, or we had a long dictionary of cool text ones people had dreamed up. Here's chef boyardee, one of my favorites: @=:{D

Clipart was exported from Microsoft Word 2003 and used everywhere. Curvey rainbow text images were rampant.

Speaking of, text as images when operating systems didn't have the latest cool font or you needed some gradient or something.

Oh yeah, gradients in general. Images!

bgcolor on the <body> tag.

Yahoo's genuinely great articles on website optimization.

#anchors in the URL didn't work with the id attribute, you needed an actual <a name="..."> tag. Bonus points for putting content in it and it linking you to your browser's homepage.

Ask Jeeves (which then turned into Ask.com). Babelfish translator. The speech to text software that was either parrot or turtle branded.

TortoiseSVN to download the sources for your favorite private server source code.

Filezilla deploy your site over FTP. It was the web developer's version of the "compiling!" meme, thing took forever.

Web rings, where people would link to the next site in the ring.

Lists of IP addresses you supposedly weren't supposed to ping. Got those from HellboundHackers and hackthissite forums.

BBCode. You were really cool if you implemented that.

Comet frames to implement live chat (before XMLHttpRequest or "AJAX", now simply fetch(), was a thing). Iframes before any of that.

PHP errors being dumped to the webpage, inline. You always knew someone's mysql server was down.

HTML comments that were actually if statements to switch out tags for IE.

<noscript>

"Created by Microsoft FrontPage"

Macromedia Coldfusion

Waiting 8 hours to download a 200MiB game client.

for (var k in obj) if (obj.hasOwnProperty(k)) ... being burned into memory.

On that note, actually using .prototype or I think .__proto__

Custom HTML headers had to be prefixed with X-

Java Server Pages (JSP) and ASP being the tabs vs spaces of backend development.

Low Orbit Ion Cannon

... alright I'm done :D I miss the old web.

EDIT: okay okay I'm really done now.


That may be an intentional "mistake" given the article's ironic style. Though "dynamic" does sound much cooler and groundbreaking than "distributed". Like in "dynamic programming"!


Why did guestbooks die?


Spam I think


"Buy Viagra today CHEAP!"


wow. I vaguely remember the Low Orbit Ion Cannon.

Thanks for the trip down memorylane. Related, although not a website, sub7 was loads of fun too.

https://en.wikipedia.org/wiki/Low_Orbit_Ion_Cannon


This book changed my life

https://www.killersites.com/killerSites/3-pdf/press.pdf

The author got a lot of complaints for abusing HTML and became an early advocate for CSS and the semantic web.


I remember at my first developer gig, one of our developers was so proud of the site she built for her local elementary school she was talking non-stop about it for two days.

On the third day she sent out an email with the subject line "FML" with only a few words in the body of the email. Something to the effect of, "It only took them THREE DAYS to ruin their site."

When I opened the link, the school had put a large blinking announcement in bright red letters about the upcoming Christmas break at the top of the page.

Of course, with the scrolling marquee down at the bottom before the footer indicating the dates for the upcoming Christmas vacation.

See this again reminded me of Victoria and her basking in her short lived glory.


The 1x1.gif, I haven’t thought about that for a long long time!


I've never seen it as a layout thing but it was used a lot for email tracking.


Psst, press RMB, 'Inspect Source'.


One thing used a lot before CSS and JS was the "usemap" attribute in the img tags to make hyperlinks within images. You had to indicate the coords and whether the shape of the hiperlink was a poly, rect or circle.


Obviously the technology was a lot worse.

But I kind of miss the internet of back then when websites would still be made and run by ordinary people. As ugly as those websites were, it felt a lot more genuine and democratic than today.



> tiny six-point font

I remember it more as a "eight-point" font and its multiple (next ideal being 16-point).

Not in the 90s, but in the early 2000s, I reaped Pixel Fonts' benefit to its fullest. Besides using it as part of the graphics and later sliced for HTML, I used it to render many elements of Apps/programs for Pocket PC devices -- iPAQ[1]. Even though the devices were small, they were handheld and usually used closer to the eyes than desktops, and the pixel fonts were ideal size to give enough spacing and clarity to buttons and even for the smaller text that goes in the mandatory legal writings that need to go with the programs used by Healthcare professionals.

I was lucky to be involved in creating a few such programs for physicians and clinics, making them really happy users. I remember that positioning other fonts (I think, system fonts, etc) was hard to maintain and turned out blurry when deployed to these devices. The Pixel Fonts were crisp and clear when re-aligned after calculating either an even or an odd pixel placement.

It was my second job and first Internet/Web-related Job. My boss was super happy that he spent money on my suggested items, which were repaid repeatedly.

1. https://en.wikipedia.org/wiki/IPAQ


Man, I started building sites in the mid to late 90s as a kid, for shits and giggles, then it became trendy to hire a "whizz kid" and people paid me to build garbage...web design business was so easy back then..."Your Dad says you know how to build websites? If I give you £500 will you build me one?"...hell yeah I will, we can have a big fucking banner, some scrolling marquees..."sure kid, whatever just make it look good"...no meetings, no wireframes, no bug trackers just here is £500 build me a site kid...by the way I'm a plumber. Here is my brochure...make it look like that.

Then your work began. First stop, looking for gifs of spinning spanners, cartoon dudes with hard hats on. Then you'd get the domain and hosting, put an "under construction" page up...man good times. I wish I could just "build a website" today...but you can't...you have to have 10 people involved bike shedding the fuck out of the fonts instead of having fun...and fucking soul destroying WordPress.

All of this is nostalgic.


When I think of 90s websites I think of a design trend where everything used tables, borders, and a crap load of gifs. A common design for sites is this basic pattern:

[nav bar ...]

[link1 ] content ...

[link...] content ...

All sites looked like a variation of this. Normally people were OCD so everything was carefully contained in its own box. This was kind of the opposite to today's 'flat design.' Where today everything blends seamlessly and the edges are implied by contrasts older sites didn't try hide their boundaries.

There wasn't really many front-end libraries. Front-end was mostly just templates and PHP. Large-scale web software was all just PHP + templates + HTML with minimal javascript. PHP was quite instrumental for the early for the early web. It's still huge honestly.

By the way: lets not forget that Git only came out in 2005 and that had a significant effect on how software was managed. The version control before them was painful and web devs weren't always the kind of engineers to use them.


The bad good old days, I sure don't miss writing pages with byzantine structures of tables within tables.

I do miss web pages that weren't +10MB that load hundreds of JS and CSS files that clog up your computer and may or may not contain malware. I hate that having uMatrix and uBlock Origin installed is pretty much a requirement to use the web nowadays.


I remember 2 brief glorious moments of time when everything just worked, and internet and computer speeds was ahead of web designers.

1. When I switched from modem to ADSL I was amazed how fast the web could be. I think I spent most of the first day just clicking around and watching how everything loaded instantly

Then the web designers and product managers caught up and started slowing down the web with larger ads and autoplaying (Flash) videos.

2. When I switched from ADSL to fiber, both my computer and internet was fast enough to counter the crappy parts of a web site and I experienced joy again.

Then SPA became the default web site and things started loading slowly again with placeholders and loading indicators.

Now that we are moving back to SSR I see a slow return to a more snappy web, all though web designers and product managers will surely find ways to counter this too.


> The bad good old days, I sure don't miss writing pages with byzantine structures of tables within tables.

People used to jut throw tables everywhere for no reason, like a superstition or something. I remember one day a colleague was stuck because the page he was working on would take over a minute to render in Netscape but about two seconds to render in Internet Explorer. I took a look at the page and somehow he had tables nested twelve levels deep doing absolutely nothing. I deleted all but two of the tables, the layout looked the same but now both browsers rendered the page in under a second.


Wait, I still use dotted underlines and &nbsp; on my blog, and it does get praise for its design.

The dotted underlines look nice, but I guess the &nbsp; is just something I used to add to work around layout quirks in Internet Explorer except I never bothered figuring out in which places they're no longer needed...


Dotted underlines weren't supported by all browsers. Chrome rendered them as dashes... or was it the IE? Regardless, they weren't "portable" unless hacked using background-image on the offset.


I still use &nbsp; to put more than one space between 2 words in text. this requirement pops up surprisingly often. Too lazy to wrap them in spans and use paddings!


&nbsp; has been my go-to when I'm working in markdown and don't want to use html elements


Scrolling text was a staple of the demo scene long before it came to the web as `<marquee>`. Of course it was not just scrolling lazily from left to right back then. It would hop up and down[1], run backwards sometimes and change its already exuberant colors. If it got really fancy the letters flew along an ever changing lissajous figure or had a faux reflection below, sometimes even with faux water perturbations.

Yes, the web was a real step back. Sensory overload became one-dimensional and we were deprived from the ability to annoy our visitors not only horizontally but also vertically. We are still recovering from that.

[1] Hopped along what looked like a sine wave to the unwitting eye, but really came from a tiny table of pre-calculated values of a quarter sine, carefully reduced to the bare minimum number of entries that still looked sinusy enough.


Allow me to introduce you to the concept of a regular marquee inside a <marquee direction=down behavior=alternate>

Unbelievably the website where I learned how to use these tags is still online:

http://www.funkychickens.com/marqs2.asp


The Inception of web design! Of course it's an asp page, what else did I expect. Only missing a MIDI background track to be perfect.


That's a blast from the past. I remember image maps and the struggle to put one on my site. It was called DeskNexus.com sometime in the early to mid 1990s. It was so long ago that I forget when it was. My idea was to have a website as your desktop instead of your computer so you could access it anywhere.


I used to greatly enjoy the author's content, before - you know - this: https://www.dailydot.com/business/julie-ann-horvath-names-gi...


Are you sure that's the same person?

The site seems to belong to "Zach Holman" [1]

But the blog post attributes to "Aja Romano" [2]

[1] https://zachholman.com/about

[2] https://www.dailydot.com/author/aja-romano/


I'll rephrase my comment:

I used to greatly enjoy Zach Holman's content, before - you know - he allegedly (?) did what this story tells us he did: https://www.dailydot.com/business/julie-ann-horvath-names-gi...


Back in the day I disabled blink tags by editing the Netscape binary (in emacs) to change the string "blink" to something else.

A little earlier than that, I remember a use-after-free of a graphics context in Amiga Mosaic that would cause it to occasionally render in another window.


I just remember making websites using <TABLE WIDTH=100%>, and at some point reading that CSS and using <div>'s was the new, more correct way to do it. I only need a simple personal website for academics, so I still use tables for the layout.


> DHTML, which stands for “distributed HTML”,

Um excuse me? This kills the credibility of the article for me. It's "dynamic html" and as a card carrying member of the dhtmlcentral forums we are the authority on the DHTML subject and lifestyle.


I thought it was just a joke.


Pretty sure that was intentional, given the tone of the article.


Yup. The article lost all credibility instantly there.


Oh, and remember the glory of Frames!?

How many hours did I spend slicing images in Photoshop and coding tables with rowspans?

Funny that coding HTML email is still not far from that experience (table-based layouts) if you want it to work in email clients like desktop Outlook.


For the life of me I cannot understand why email won't render grid or flex. Those two properties would make email templating so much easier.


I'd be happy if we didn't have to inline all the CSS.


I'm a 2000's programmer, but I still remember a lot of this stuff. Anyone remember doing rounded corners with a 3x3 table where the corners were GIF's/PNG's cut from Photoshop to create the illusion of a rounded div?


Good times! I really enjoyed making a 90s version of my startup's landing page: https://90s.wobaka.com/


On the server side, I remember it being challenging trying to figure out how to run CGI's ... usually in Perl ... on a given site. Some sites had Perl 4, some had Perl 5. Your code might have needed either the .pl or .cgi file extension. Sometimes the CGI script just needed to be in the /cgi-bin/ directory with execute permissions set and the appropriate hashbang in the top comment.

While there were more elaborate Perl CGI libraries, I preferred to use cgi-lib.pl.


Looking back at it, the weirdest thing in the list have to be pixel fonts. Back then I used them and I liked them, but today it seems like a foolish gimmick. My only thought is that it's a testament to the fact those days were for young people and they mostly didn't have issues with their sight. Today we are starting to think about reading glasses and the web is ubiquitous so readable content is beating pretty content (whatever pretty means).


I just remember there was a particular web design site that was popular with web designers that used a 10px pixel font. Every designer I knew spent so long staring at awful sites like that, they trained themselves to perceive any reasonably sized text as “massive”. Trying to get them to design something that was actually readable was a nightmare. 12px text was as far as they were willing to go for body copy.


Ah, yes, 90s web development. Somewhere, in a dark and hidden corner of archive.org lives my first website. Updated in 1996 to be "enhanced" for Netscape Navigator 2.0.

It had a lot of what this article spoke about - including a page counter, guestbook and my first attempt at this new browser language called "JavaScript".

https://imgur.com/a/4bgnCLt


One thing I miss from the 90s are the built in user/password dialog that enabled me to easily remember passwords.

It still exists, but most sites prefer to use their own HTML based logins because it "looks ugly".

Imagine if sites used the built in dialog; We would have a much more secure web. We would not have a need for dedicated password managers and would probably have found a low effort way of integrating auto generated passwords.


Do you mean the one which popped up from the browser UI before anything on the page has loaded? (aka "HTTP authentication")

Wasn't this abysmal? You navigate to some page, and out of nowhere it asks you for login, before you even see any content of the page. (Kind of like logging via terminal)


It wasn't an optimal solution, but it also didn't change much from the first implementation.

I think that if it had been given a bit more attention and made it more customizable, it could have evolved into something good enough to replace today's login form.


You can’t log people out or switch users with HTTP auth. Once the browser knows you have valid credentials, it sends them with every request and the site can’t stop it from doing so.


You mean Basic HTTP Authentication? I wouldn't say Chrome's dialog looks 'ugly'.


Firefox seems to manage this with current HTML based logins.


I'm surprised there is no mentions of tables to organize the page layout.

Massive nostalgia wave after reading this post. Building websites back then was so fun.


I'm _slightly_ triggered by the border radius on the 88x31 .gif, but I'll cope.

Related (and brace yourself if you're on an older computer):

https://neonaut.neocities.org/cyber/88x31

https://cyber.dabamos.de/88x31/


Made me desperately want to look in my storage for the CD with "100 000 web design assets" and open frontpage express again ... :)


DHTML stands for dynamic HTML, right? Never understood the name though, it was just JavaScript animating DOM elements. Maybe i was too young to understand the difference, but i remember using text inputs for animated contet, like a clock or a scrolling message.

Anyways, I was about 10 or 11 when visiting a "big" city i saw this book about DHTML and I had my dad buying it for me.


Before DHTML JavaScript had limited ability to manipulate DOM elements after the page had loaded. JavaScript could happily edit the document (document.write) during the page load but not afterwards. If you wanted some output of a JavaScript displayed after the page load you had to put the output inside form elements or do an alert. You also could manipulate some parts of the browser with the navigator object and change the status and title.

Dynamic HTML was dynamic because the DOM could be manipulated after the page was loaded. JavaScript could directly manipulate DOM elements or even add and remove elements.


Nice. My comment was about the author saying DHTML stands for distributed HTML, which i find odd


Ah... the one-pixel transparent GIF trick (I sometimes, still use it, for iOS stuff -but for different reasons). Brings back memories of my halcyon days...

I pine for the days, when all Web pages looked like so: https://www.angelfire.com/super/badwebs/


I have a rather large website to manage. Based on Tailwind. There are still some fucking &nbsp;&nbsp; and <br /><br /> tags around because the original dev used layout all those text containers over image containers and wasn't told there would one day be no text.

N+1 still loves those 1x1 transparent GIF for newsletters.


I am totally the guy who put all the &nbsp;&nbsp;&nbsp;&nbsp; into www.cisco.com back in the day.


Oh, and who can forget the “splash page flash movie” that you had to sit through? It was vital that the brand got to show you their vibe before you could access any actual information…

I knew a guy who bought several expensive sports cars as testament to his ability to do shockwave animations back in ‘97.


This brought a damn tear to my eye. The Internet was so damn cool back in the late 90s and early 2000s…


The article could mention the wave of "semantic web" at the end of the period.

The idea was to create a DTD+XML for your website and publish it with meaningful tags. Then you could distribute XSLT sheets that the browser applied, and have total separation of style and content.


I love those cursor trail effects. Your geocities page won't be complete without them. Too bad those cursor trails on geocities pages archived at various places doesn't seem to work anymore so we can't experience them again.


I remember all of these fondly. Though IMO the real hacks came with trying to get IE6 to comply when the rest of the world moved on. Basic things, like getting transparent PNGs to be, you know, transparent...

  img {
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(...);
  }


I have a printed book of "good" website design examples from the late 90's. It is an amazing time capsule.

I also really wish there was an archive of AOL's homepages... My first website is lost to the digital abyss...


Oh man, you just reminded me I have this book somewhere:

Web Design Annual 1999: https://www.amazon.com/gp/product/4766110781

it is amazing

edit: oh crap, it's available on archive.org: https://archive.org/details/webdesignannual100webd


What's the book called?


I'll have to look when I get home. It blows my mind because there was nothing stopping me from just... loading the websites.... I had the internet. But I was a kid/teenager and used the book for inspiration.


Another great memory was writing "broken" HTML comment tags so you could disable "auto-inserted" ads from Geocities and Angelfire (and other) sites so you could look cool with your premium, ad-free site.


Remember the <map> tag?!?

Also I know someone whose company’s website still runs on coldfusion


who remembers when the hip thing to do was to sign your webpages with a horizonal rule, followed by your name and your email address with a nice blue (on grey) mailto link, all in italics.


Yes, I absolutely did that, back when personal websites usually had URLs like http://www.subdomain.domainname.net/~username


> 88x31

I polled some coworkers, all of whom are younger than me, asking if the numbers "88x31" had any particular meaning to them. Not a single one has apparently experienced this.


I'm 47 and put many of those buttons on sites in the late 90s, and don't remember those numbers


So many clever solutions to the problem of HTML being too easy.


This comment is best read using IE and a screen resolution of 1024x768 pixels.

It's funny how a small article like this can bring so many memories! Thanks for sharing :).


90s web developers prefer the title "webmaster"


This is such a superb article. I'd forgotten about a lot of this.

I used to be a grandmaster of creating any layout imaginable with tables and 1x1 pixel Gifs...

So. Many. Tables...


Been there done that. Conditional CSS includes, CSS selector hacks to target different browsers. Good times. We also used JAVA applets for Ajax


>1x1.gif let you push elements all around the page effortlessly. To this day it is the only way to vertically center elements.

align-items: center;


That's too fancy. I think you mean <center>...</center>


> vertically center


> Internet Explorer 4.0 was perfection incarnate in a browser. It had Active Desktop. It had Channels. It had motherfucking Channels, the coolest technology that never reached market adoption ever not even a little bit.

Are you sure? There's some pretty stiff competition even in IE4: VRML was incredible, as were Tclets.

Seriously web technology has mostly gone backwards since then. CSS has needed multiple revisions to reach the point where on a good day it can barely match what you could do in HTML3. <video> is a worse <embed>. Chrome remembers and syncs my passwords if I type them into the input of a HTML form, but not if I use the actual native HTTP authentication, and forget trying to use proper public key certificates like worked perfectly in 1996...


My friend invented rounded corners in tables


What about white text on white background to stuff keywords on the bottom of a page.....and it actually worked


I used to serve the 1x1 gif from an asp page that at the same time would gather visitor information.

It was the tracking pixel.


I still miss browser bouncers:

"Sorry kiddo. No Netscape in here. Boss created this stuff for IE only."


Those still exist, but sites don't tell you about it anymore. Instead the sites are just broken for you. We do still get notices for using for ad blockers on some sites at least. https://old.reddit.com/r/uBlockOrigin/comments/18autyy/cnnco...


Honestly, in some ways, borderless tables for layout was nicer than grids and flex boxes.


Yeah, but is not responsive


I still use tables for layout, partially. In order to make it responsive, I combine multiple tables with inline-block to allow the tables to reflow on the page.

There are more "modern" ways of doing this, but I haven't found any that are also compatible with my goals of maintaining backwards compatibility.


Phones today have higher display resolutions than desktop monitors of the 90s. So table-based layouts would totally fit in mobile-first UX designs.


DHTML, layer vs div..

Also, JSRS was one of the first hackidy ways to do 'ajax'.

Negative margins to fix layouts..


Can we also talk about Active Server Pages? *.asp has endured the test of time.


Where my frameset people at?


The best thing about the 90s web was VRML. A pity it never really took off.


css sprites, <marquee>, <blink>, <font color="red">, <div bgcolor="#000000">, <img src="/cgi-bin/webcounter.cgi"> :)


sprites were level 100 webmaster magic. They'd probably be just as relevant today in the age of +5mb webpages and mobile networks, but you never hear about them anymore.


<blink>Never forget what they took from us.</blink>


Putting cellpadding=0 and cellspacing=0 in all of our table tags


Good old times, when the web was simple, and more decentralized


In those years, mostly said as web masters, not web developers.


Ah yes, transparent images to get equal-width spacing on terrible browser engines like Opera and IE. Tracking pixels. Mixed HTTP and HTTPS content warnings. Java Applets. Perl scripts. cgi-bin. Uploading files one-by-one through a web portal (not even FTP). Building entire sites out of a mosaic of images. Having multiple versions of your site for 800x600, 1024x768, etc.


Yeah you try SFTP on Windows FTP thingy then Filezilla too and it obviously fails on both. Plain FTP works but you feel paranoid so upload the zip file of your site via the slow web interface and unzip it on the server.


1x1 gifs are still commonly used in emails, aka tricky-pixels!


> DHTML, which stands for “distributed HTML”

Is this a joke I don't understand?


It's almost certainly a joke but not obvious exactly what the joke is. What it actually stood for (in case you don't know) is "Dynamic HTML." My guess is that he's drawing a parallel with "distributed" as a modern day buzzword that's used in so many ways it's almost meaningless, but attracts attention and money almost automatically (other modern-day buzzwords like this include "blockchain," although that's fading, and "AI").

Incidentally, nowadays we never refer to DHTML because probably over 99.9% of pages use at least some JavaScript and CSS, so it's redundant to even mention them; you just say "front-end development."


> It's almost certainly a joke but not obvious exactly what the joke is.

That's the conclusion I've come to from all the responses. (Thanks everyone.)

The reason I asked is because I remember web development in the 90's, and the article while irreverent in tone misses the mark for me.

I think it's aiming for "The Register" style irreverence but their style is to have a cynical mocking and sarcastic tone while still being factually accurate, while this article changes facts in a way that feels like a joke, but stops short of actually making the joke or point it wants to make.

It's as if "This joke is left as an Exercise to the reader". Given the range of different explanations of "the joke" that have followed, I've come to the conclusion that the author has nailed the tone of being funny while not actually being funny.


At the time it was more about being able to load more content without having to do a whole-page fetch.

This was around when XHR first debuted and devs could stop relying on hacks or Flash to do it.


DHTML was long before XHR; the term was more or less already out of fashion by the time XHR came along.

DHTML was used for situations like when you had hierarchical selects where the contents of the second select depended upon what you picked for the first select. All the code and data was delivered up front with the page load; you didn’t go back to the server for it with XHR.


That's right, I think I let the concepts overlap in my head a bit. Back then I was mostly doing game dev for PCs and some backend work. I remember pre-web 2.0 (loading a whole new page just to see the next tile over on MapQuest or Yahoo!Maps was.. annoying) but my just-waking mind probably confused dynamic to also mean dynamically-loaded. I shouldn't jump on HN before getting out of bed. I would delete my GP comment if I could.

The ability to pull down new results and load them was largely enabled by DHTML, though, because you still need a way to update the page with the new data. But now that I'm more awake I agree DHTML and the unrelated web2.0 features are different things.


I remember it taking a few years between DHTML becoming a buzzword and XHR becoming popular. XHR was slept on for a while even though it was available in all major browsers by the early 2000's. Back when we were calling things "DHTML," updates originating from the server typically would happen by refreshing the whole page, or sometimes an IFRAME if you wanted to get fancy [1]. Once XHR finally started to get popular is when people started talking about "Web 2.0" in the mid 2000s.

I heard that someone did a talk on why it took so long for the Web 2.0 phenomenon to happen even though the technologies were available for several years before. Can't remember who.

A little known fact is that even streaming updates (e.g. for live chat) were actually not that hard to implement on the front end going back to the original days of XHR, via "long polling" (basically starting a new XHR request that you held open until the next piece of info comes in) though it took until well into the Web 2.0 era for that to be common. The problem was actually on the server side; to cope with long polling, the server would have to keep a long-running thread (and in the case of CGI, a whole process!) for each of those open requests and the servers would get overloaded. Nowadays of course servers have much better hardware, and we have technologies like nginx that can handle huge amounts of connections in one thread.

In principle you could build almost everything in the modern day front page of Facebook or Google results page with the tools we had in 2001, front-end wise, but the servers couldn't handle long polling for the streaming updated needed for things like the Facebook chat. Also the pages are so complex that it would be easy to get yourself tied in knots without modern conveniences like CSS frameworks (or even resets!)

[1] https://en.wikipedia.org/wiki/Dynamic_HTML


The whole page is tongue-in-cheek. In the '90s, <blink> was only supported by Netscape while <marquee> was only supported by Internet Explorer, so combining the two didn't make a lot of sense. Mozilla only added <marquee> support in 2002: https://bugzilla.mozilla.org/show_bug.cgi?id=156979.


Yeah, I think there's some deliberate mistakes in there for understated comic effect - e.g. "To this day [1x1.gif] is the only way to vertically center elements."

The joke (at least the DHTML one) is probably that only people who were developers then will know that's wrong. (Or I suppose this could have been written by someone who wasn't around at that time and this is a bit of faux nostalgia!)


The Flexbox stuff that allows vertical alignment wasn’t widely supported until 2015, a year after this was written.


I think the joke about it being "the only way to vertically center elements" is just referring to the fact that it's still kind of hard to do vertical centering and there's still no definitive, easy solution after 27 years of CSS. (It's now doable with Flexbox or CSS Grid as well as more obscure hacks, but it's still more fiddly than it should be.) Could be wrong, though.

Edit: I think thejohnconway has the answer [1]: the post was written before the Flexbox stuff for vertical centering was widely supported.

There were still less nasty options than 1x1 GIFs available, like "display: table-cell", so it's still very likely a joke.

[1] https://news.ycombinator.com/item?id=39127936


I still need to consult a cheatsheet from time to time when working with flex.


For me personally this is a nice bit of absurdist humour that so few people cherish lately.


I guess the joke here is that you used to do really a lot of in-line JavaScript in HTML, there was even a time during high latency where it was better to use inline JavaScript than JavaScript imports (<script src>) for faster rendering times (you usually just had 2 concurrent connections with high latency and low bandwidth). So “distributing” your JavaScript in a single HTML all over the place was the way and fail to go :-)


> DHTML, which absolutely stands for “distributed HTML” because that’s the name and this isn’t obvious bait for the no fun crowd at Hacker News…

I’m confused by this discussion…was the above quoted bit added later or something? Because as it stands, it seems pretty clear that making this very discussion happen is the punchline.


It's just poking fun at the overall dumb acronym.


No mention of the hacks for transparent pngs :P


the dream of the 90s is alive at https://htmx.org


using transparent png's to give a rounded corner look which was all the rage in the "web 2.0" era.

miss those days.


I think I would include <iframe>


Any body else get online with Juno?


Oh man, there's a name I haven't thought about in a long time.... I think they may have been my first foray into the actual web from BBS'. I remember it being pretty dang cool that you could write your emails offline and then dial up to do the send/receive...


Yeah and tying up my parent’s phone line, secretly, bc thug as no idea what the internet was.

Also there was no dmca so websites literally had sierra and Lucas arts games for download.


Yep, they had that always-on-top ad banner in a separate window that you couldn't close. At some point I figured out if you start StarCraft and go online, letting it launch Juno's client instead of launching it manually, the ad banner wouldn't show up.


I remembered this, what happened?


Anyone still remembers AOLpress?


90s-early 00s. The glory days.


Feeling nostalgic right now


"Can you move it a half pixel to the left"


>1x1.gif let you push elements all around the page effortlessly. To this day it is the only way to vertically center elements.

HN was launched February 2007 and uses <TABLE> and 1x1 gif to set the indentation level of comments.

  <table border='0'>  <tr>    <td class='ind' indent='0'>
  <img src="s.gif" height="1" width="0"></td><td valign="top" class="votelinks">
  <table border='0'>  <tr>    <td class='ind' indent='1'>
  <img src="s.gif" height="1" width="40"></td><td valign="top" class="votelinks">
  <img src="s.gif" height="1" width="80"></td><td valign="top" class="votelinks">
  <img src="s.gif" height="1" width="120"></td><td valign="top" class="votelinks">
The 1x1 s.gif is also used on the front page of stories at the bottom of the page to add spacing above the orange divider line:

  <tr><td><img src="s.gif" height="10" width="0"><table width="100%" cellspacing="0" cellpadding="1"><tr><td bgcolor="#ff6600"></td></tr></table><br>


If it ain't broke!


The page is missing the "under construction" image.


and still it was something a lot of people would start playing with. Open Frontend, drag and drop a couple of images, write some content, done, you have a website, you can be a millionaire.

Nowadays just getting started with latest frontend framework -that became obsolete 2 hours ago- means weeks of learning, and you've not even started.

Jokes aside (yes you can start with simple HTML today too), back in the days the expectations were pretty low, which made the web ugly but accessible and fun, though awkward and hacky.


> Have you ever shoved a <blink> into a <marquee> tag? Pixar gets all the accolades today, but in the 90s this was a serious feat of computer animation

Wrong. Marquee only worked in IE, but blink only worked in non-IE, so by embedding one in the other you simply had an attention grabbing element that either blinked or slides.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: