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.
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.
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.
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.
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.
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.
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).
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…
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.
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.
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.
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.
> 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.
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!
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.
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.
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?
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 :)
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.
> 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.
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.
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.
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.
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?
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.
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.
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.
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 " "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.)
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.
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.
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.
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.
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! ;)
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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 :/
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.
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.
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.
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.
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.
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.
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.
[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/
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.
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.
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
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.
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.
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.
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
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...)
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:
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.
> 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.
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"!
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.
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.
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.
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.
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.
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 on my blog, and it does get praise for its design.
The dotted underlines look nice, but I guess the 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 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!
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.
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.
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.
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'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?
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".
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.
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.
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 have a rather large website to manage. Based on Tailwind. There are still some fucking 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.
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.
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...
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.
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.
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.
> 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...
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.
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.
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.
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.
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!)
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!)
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.
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.
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...
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.
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.
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.