iNETSCAPE'S UNTOLD WEBSTORIES null (FALSE) 0 i null (FALSE) 0 i2024-02-02 null (FALSE) 0 i null (FALSE) 0 iI mentioned yesterday that during Bloganuary I'd put non-Bloganuary-prompt null (FALSE) 0 ipost ideas onto the backburner, and considered extending my daily streak by null (FALSE) 0 iposting them in February. Here's part of my attempt to do that: null (FALSE) 0 i null (FALSE) 0 iLet's take a trip into the Web of yesteryear, with thanks to our friends at null (FALSE) 0 ithe Internet Archive's WayBack Machine. null (FALSE) 0 i null (FALSE) 0 iThe page we're interested in used to live at null (FALSE) 0 ihttp://www.netscape.com/comprod/columns/webstories/index.html, and promised to null (FALSE) 0 ibe a showcase for best practice in Web development. Back in October 1996, it null (FALSE) 0 ilooked like this: null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page which says "The series is scheduled to debut in November." /2023/11/webstories-1996-10-26.png danq.me 70 i null (FALSE) 0 iThe page is a placeholder for Netscape Webstories (or Web Site Stories, in null (FALSE) 0 isome places). It's part of a digital magazine called Netscape Columns which null (FALSE) 0 ipublished pieces written by Marc Andreeson, Jim Barksdale, and other bigwigs null (FALSE) 0 iin the hugely-influential pre-AOL-acquisition Netscape Communications. null (FALSE) 0 i null (FALSE) 0 iThis new series would showcase best practice in designing and building Web null (FALSE) 0 isites (Yes, we used to write "Web sites" as two words. We also used to null (FALSE) 0 iconsistently capitalise the words Web and Internet. Some of us still do so.), null (FALSE) 0 igiving a voice to the technical folks best-placed to speak on that topic. That null (FALSE) 0 isounds cool! null (FALSE) 0 i null (FALSE) 0 iThose white boxes above and below the paragraph of text aren't missing images, null (FALSE) 0 iby the way: they're horizontal rules, using the little-known size attribute to null (FALSE) 0 ispecify a thickness of
! (In case it's not clear, this blog post is null (FALSE) 0 igoing to be as much about little-known and archaic Web design techniques as it null (FALSE) 0 iis about Netscape's website.) null (FALSE) 0 i null (FALSE) 0 iCertainly you're excited by this new column and you'll come back in November null (FALSE) 0 i1996, right? null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page which says "The series is scheduled to begin in January." /2023/11/webstories-1997-01a.png danq.me 70 i null (FALSE) 0 iOh. The launch has been delayed, I guess. Now it's coming in January. null (FALSE) 0 i null (FALSE) 0 iThe
s look better now their size has been reduced, though, so clearly null (FALSE) 0 isomebody's paying attention to the page. But let's take a moment and look at null (FALSE) 0 ithat page title. If you grew up writing web pages in the modern web, you might null (FALSE) 0 ianticipate that it's coded something like this: null (FALSE) 0 i null (FALSE) 0 iComing Soon null (FALSE) 0 iThere's plenty of other ways to get that same effect. Perhaps you prefer null (FALSE) 0 ifont-feature-settings: 'smcp' in your chosen font; that's perfectly valid. null (FALSE) 0 iMaybe you'd use margin: 0 auto or something to centre it: I won't judge. null (FALSE) 0 i null (FALSE) 0 iBut no, that's not how this works. The actual code for that page title is: null (FALSE) 0 i null (FALSE) 0 i
null (FALSE) 0 i  

null (FALSE) 0 i    COMING null (FALSE) 0 i    SOON null (FALSE) 0 i  

null (FALSE) 0 i
null (FALSE) 0 iBack when this page was authored, we didn't have CSS (This is a white lie. CSS null (FALSE) 0 iwas first proposed almost at the same time as the Web! Microsoft Internet null (FALSE) 0 iExplorer was first to deliver a partial implementation of the initial null (FALSE) 0 istandard, late in 1996, but Netscape dragged their heels, perhaps in part null (FALSE) 0 ibecause they'd originally backed a competing standard called JavaScript Style null (FALSE) 0 iSheets (JSSS). JSSS had a lot going for it: if it had enjoyed widespread null (FALSE) 0 iadoption, for example, we'd have had the equivalent of CSS variables a full null (FALSE) 0 itwenty years earlier! In any case, back in 1996 you definitely wouldn't want null (FALSE) 0 ito rely on CSS support.). The only styling elements were woven right in null (FALSE) 0 iamongst the semantic elements of a page (Wondering where the text and link null (FALSE) 0 icolours come from? . Yes really, that's where we used to put our null (FALSE) 0 icolours.). It was simple to understand and easy to learn... but it was a total null (FALSE) 0 imess (Personally, I really loved the aesthetic Netscape touted when using null (FALSE) 0 iTimes New Roman (or whatever serif font was available on your computer: null (FALSE) 0 iwebfonts weren't a thing yet) with temporary tweaks to font sizes, and I null (FALSE) 0 icopied it in some of my own sites. If you look back at my 2018 blog post null (FALSE) 0 icelebrating two decades of blogging, where I've got a screenshot of my blog as null (FALSE) 0 iit looked circa 1999, you'll see that I used exactly this technique for the null (FALSE) 0 iordinal suffixes on my post dates! On the same post, you'll see that I null (FALSE) 0 isomewhat replicated the "feel" of it again in my 2011 design, this time using null (FALSE) 0 ia stylesheet.). null (FALSE) 0 i null (FALSE) 0 iAnyway, let's come back in January 1997 and see what this feature looks like null (FALSE) 0 iwhen it's up-and-running. null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page which says "The series is scheduled to begin in the spring." /2023/11/webstories-1997-01b.png danq.me 70 i null (FALSE) 0 iNope, now it's pushed back to "the spring". null (FALSE) 0 i null (FALSE) 0 iUnder Construction pages were all the rage back in the nineties. Everybody had null (FALSE) 0 ione (or several), usually adorned with one or more of about a thousand null (FALSE) 0 idifferent animated GIFs for that purpose. (There's a whole section of null (FALSE) 0 iCameron's World dedicated to "under construction" banners, and that's a null (FALSE) 0 ibeautiful thing!) null (FALSE) 0 i null (FALSE) 0 gRotating animated "under construction" banner. /2023/11/mamagnolia_acresunderconstruction1.gif danq.me 70 i null (FALSE) 0 iBuilding "in public" was an act of commitment, a statement of intent, and an null (FALSE) 0 iact of acceptance of the incompleteness of a digital garden. They're sort-of null (FALSE) 0 icoming back into fashion in the interpersonal Web, with the "garden and null (FALSE) 0 istream" metaphor (The idea of "garden and stream" is that you publish early null (FALSE) 0 iand often, refining as you go, in your garden, which can act as an extension null (FALSE) 0 iof whatever notetaking system you use already, but publish mostly "finished" null (FALSE) 0 icontent to your (chronological) stream. I see an increasing number of IndieWeb null (FALSE) 0 ibloggers going down this route, but I'm not convinced that it's for me.) null (FALSE) 0 itaking root. This isn't anything new, of course - Mark Bernstein touched on null (FALSE) 0 ithe concepts in 1998 - but it's not something that I can ever see returning to null (FALSE) 0 ithe "serious" modern corporate Web: but if you've seen a genuine, non-ironic null (FALSE) 0 i"under construction" page published to a non-root page of a company's website null (FALSE) 0 iwithin the last decade, please let me know! null (FALSE) 0 i null (FALSE) 0 gUnder construction banner with an animated yellow-and-black tape banner between two "men at work" signs. /2023/11/HoHollywoodBungalow4907imgsourcesunderconstruction1.gif danq.me 70 i null (FALSE) 0 iRSS doesn't exist yet (although here's a fun fact: the very first version of null (FALSE) 0 iRSS came out of Netscape!). We're just going to have to bookmark the page and null (FALSE) 0 icheck back later in the year, I guess... null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page identical to the previous version but with a search box ("To search the Netscape Columns, type a word or phrase here:") beneath. /2023/11/webstories-1997-02.png danq.me 70 i null (FALSE) 0 iOkay, so February clearly isn't Spring, but they've updated the page... to add null (FALSE) 0 ia search form. null (FALSE) 0 i null (FALSE) 0 iIt's a genuine
tag, too, not one of those old-fashioned tags null (FALSE) 0 iyou'd still sometimes find even as late as 1997. Interestingly, it specifies null (FALSE) 0 ienctype="application/x-www-form-urlencoded". Today's developers probably don't null (FALSE) 0 ithink about the enctype attribute except when they're doing a form that null (FALSE) 0 ihandles file uploads and they know they need to switch it to null (FALSE) 0 ienctype="multipart/form-data", (or their framework does this automatically for null (FALSE) 0 ithem!). null (FALSE) 0 i null (FALSE) 0 iBut these aren't the only options, and some older browsers at this time still null (FALSE) 0 idefaulted to enctype="text/plain".  So long as you're using a POST and not GET null (FALSE) 0 imethod, the distinction is mostly academic, but if your backend CGI program null (FALSE) 0 ianticipates that special characters will come-in encoded, back then you'd be null (FALSE) 0 iwise to specify that you wanted URL-encoding or you might get a nasty surprise null (FALSE) 0 iwhen somebody turns up using LMB or something equally-exotic. null (FALSE) 0 i null (FALSE) 0 iAnyway, let's come back in June. The content must surely be up by now: null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page which says "The series is scheduled to begin in August." /2023/11/webstories-1997-06.png danq.me 70 i null (FALSE) 0 iOh come on! Now we're waiting until August? null (FALSE) 0 i null (FALSE) 0 iAt least the page isn't abandoned. Somebody's coming back and editing it from null (FALSE) 0 itime to time to let us know about the still-ongoing series of delays. And null (FALSE) 0 ithat's not a trivial task: this isn't a CMS. They're probably editing the null (FALSE) 0 i.html file itself in their favourite text editor, then putting the appropriate null (FALSE) 0 ifile:// address into their copy of Netscape Navigator (and maybe other null (FALSE) 0 ibrowsers) to test it, then uploading the file - probably using FTP - to the null (FALSE) 0 iwebserver... all the while thanking their lucky stars that they've only got null (FALSE) 0 ithe one page they need to change. null (FALSE) 0 i null (FALSE) 0 iWe didn't have scripting languages like PHP yet, you see (Another white lie. null (FALSE) 0 iPHP was released way back in 1995 and even the very first version supported null (FALSE) 0 isomething a lot like server-side includes, using the syntax . But it was a little computationally-intensive to run null (FALSE) 0 iwilly-nilly.). We didn't really have static site generators. Most servers null (FALSE) 0 ididn't implement server-side includes. So if you had to make a change to every null (FALSE) 0 ipage on a site, for example editing the main navigation menu, you'd probably null (FALSE) 0 ihave to open and edit dozens or even hundreds of pages. Little wonder that null (FALSE) 0 iframesets caught on, despite their (many) faults, with their ability to render null (FALSE) 0 iyour navigation separately from your page content. null (FALSE) 0 i null (FALSE) 0 iOkay, let's come back in August I guess: null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: a Coming Soon page which says "The series is scheduled to begin in the spring." Again. /2023/11/webstories-1997-10-08.png danq.me 70 i null (FALSE) 0 iNow we're told that we're to come back... in the Spring again? That could mean null (FALSE) 0 iSpring 1998, I suppose... or it could just be that somebody accidentally null (FALSE) 0 ire-uploaded an old copy of the page. null (FALSE) 0 i null (FALSE) 0 iHey: the footer's gone too? This is clearly a partial re-upload: somebody null (FALSE) 0 irealised they were accidentally overwriting the page with the previous-but-one null (FALSE) 0 iversion, hit "cancel" in their FTP client (or yanked the cable out of the null (FALSE) 0 iwall), and assumed that they'd successfully stopped the upload before any null (FALSE) 0 idamage was done. null (FALSE) 0 i null (FALSE) 0 iThey had not. null (FALSE) 0 i null (FALSE) 0 IScreenshot of a Windows 95 dialog box, asking "Are you sure you want to delete index.html?" The cursor hovers over the "Yes" button. /2023/11/win95-are-you-sure-delete-indexhtml.png danq.me 70 i null (FALSE) 0 iI didn't mention that top menu, did I? It looks like it's a series of links, null (FALSE) 0 istyled to look like flat buttons, right? But you know that's not possible null (FALSE) 0 ibecause you can't rely on having the right fonts available: plus you'd have to null (FALSE) 0 ido some trickery to lay it out, at which point you'd struggle to null (FALSE) 0 iensure that the menu was the same width as the banner above it. So how did null (FALSE) 0 ithey do it? null (FALSE) 0 i null (FALSE) 0 iThe menu is what's known as a client-side imagemap. Here's what the code looks null (FALSE) 0 ilike: null (FALSE) 0 i null (FALSE) 0 i null (FALSE) 0 i   null (FALSE) 0 i null (FALSE) 0 i   null (FALSE) 0 i   null (FALSE) 0 i   null (FALSE) 0 i   null (FALSE) 0 i   null (FALSE) 0 i null (FALSE) 0 iThe image (which specifies border=0 because back then the default behaviour null (FALSE) 0 ifor graphical browser was to put a thick border around images within null (FALSE) 0 ihyperlinks) says usemap="#maintopmap" to cross-reference the below it, null (FALSE) 0 iwhich defines rectangular areas on the image and where they link to, if you null (FALSE) 0 iclick them! This ingenious and popular approach meant that you could transmit null (FALSE) 0 ia single image - saving on HTTP round-trips, which were relatively null (FALSE) 0 itime-consuming before widespread adoption of HTTP/1.1's persistent connections null (FALSE) 0 i- along with a little metadata to indicate which pixels linked to which pages. null (FALSE) 0 i null (FALSE) 0 iThe ismap attribute is provided as a fallback for browsers that didn't yet null (FALSE) 0 isupport client-side image maps but did support server-side image maps: there null (FALSE) 0 iwere a few! When you put ismap on an image within a hyperlink, then when the null (FALSE) 0 iimage is clicked on the href has appended to it a query parameter of the form null (FALSE) 0 i?123,456, where those digits refer to the horizontal and vertical coordinates, null (FALSE) 0 ifrom the top-left, of the pixel that was clicked on! These could then be null (FALSE) 0 idecoded by the webserver via a .map file or handled by a CGI program. null (FALSE) 0 iServer-side image maps were sometimes used where client-side maps were null (FALSE) 0 iundesirable, e.g. when you want to record the actual coordinates picked in a null (FALSE) 0 ispot-the-ball competition or where you don't want to reveal in advance which null (FALSE) 0 ihotspot leads to what destination, but mostly they were just used as a null (FALSE) 0 ifallback. (Server-side imagemaps are enjoying a bit of a renaissance on .onion null (FALSE) 0 iservices, whose visitors often keep JavaScript disabled, to make image-based null (FALSE) 0 iCAPTCHAs. Simply show the visitor an image and describe the bit you want them null (FALSE) 0 ito click on, e.g. "the blue pentagon with one side missing", then compare the null (FALSE) 0 icoordinates of the pixel they click on to the knowledge of the right answer. null (FALSE) 0 iHighly-inaccessible, of course, but innovative from a purely-technical null (FALSE) 0 iperspective.) null (FALSE) 0 i null (FALSE) 0 iBoth client-side and server-side image maps still function in every modern web null (FALSE) 0 ibrowser, but I've not seen them used in the wild for a long time, not least null (FALSE) 0 ibecause they're hard (maybe impossible?) to make accessible and they can't null (FALSE) 0 icope with images being resized, but also because nowadays if you really wanted null (FALSE) 0 ito make an navigation "image" you'd probably cut it into a series of smaller null (FALSE) 0 iimages and make each its own link. null (FALSE) 0 i null (FALSE) 0 iAnyway, let's come back in October 1997 and see if they've fixed their null (FALSE) 0 inow-incomplete page: null (FALSE) 0 i null (FALSE) 0 IScreenshot from Netscape Columns: Web Site Stories: the Coming Soon page is now laid out in two columns, but the expected launch date has been removed. /2023/11/webstories-1997-10-10.png danq.me 70 i null (FALSE) 0 iOh, they have! From the look of things, they've re-written the page from null (FALSE) 0 iscratch, replacing the version that got scrambled by that other employee. null (FALSE) 0 iThey've swapped out the banner and menu for a new design, replaced the footer, null (FALSE) 0 iand now the content's laid out in a pair of columns. null (FALSE) 0 i null (FALSE) 0 iThere's still no reliable CSS, so you're not looking at columns: (no null (FALSE) 0 iimplementations until 2014) nor at display: flex (2010) here. What you're null (FALSE) 0 ilooking at is... a fixed-width
with a single row and three columns! null (FALSE) 0 iYes: three - the middle column is only 10 pixels wide and provides the "gap" null (FALSE) 0 ibetween the two columns of text. (Nowadays, use of tables for layout - or, null (FALSE) 0 iindeed, for anything other than tabular data - is very-much frowned upon: it's null (FALSE) 0 ioften bad for accessibility and responsive design. But back before we had the null (FALSE) 0 ifeatures granted to us by the modern Web, it was literally the only way to get null (FALSE) 0 icontent to appear side-by-side on a page, and designers got incredibly null (FALSE) 0 icreative about how they misused tables to lay out content, especially as null (FALSE) 0 ibrowsers became more-sophisticated and began to support cells that spanned null (FALSE) 0 imultiple rows or columns, tables "nested" within one another, and background null (FALSE) 0 iimages.) null (FALSE) 0 i null (FALSE) 0 iThis wasn't Netscape's only option, though. Did you ever hear of the null (FALSE) 0 i tag? It was the closest thing the early Web had to a null (FALSE) 0 isemantically-sound, progressively-enhanced multi-column layout! The author of null (FALSE) 0 ithis page could have written this: null (FALSE) 0 i null (FALSE) 0 i null (FALSE) 0 i  

null (FALSE) 0 i    Want to create the best possible web site? Join us as we explore the newest null (FALSE) 0 i    technologies, discover the coolest tricks, and learn the best secrets for null (FALSE) 0 i    designing, building, and maintaining successful web sites. null (FALSE) 0 i  

null (FALSE) 0 i  

null (FALSE) 0 i    Members of the Netscape web site team, recognized designers, and technical null (FALSE) 0 i    experts will share their insights and experiences in Web Site Stories.  null (FALSE) 0 i  

null (FALSE) 0 i
null (FALSE) 0 iThat would have given them the exact same effect, but with less code and it null (FALSE) 0 iwould have degraded gracefully. Browsers ignore tags they don't understand, so null (FALSE) 0 ia browser without support for would have simply rendered the two null (FALSE) 0 iparagraphs one after the other. Genius! null (FALSE) 0 i null (FALSE) 0 iSo why didn't they? Probably because only ever worked in Netscape null (FALSE) 0 iNavigator. null (FALSE) 0 i null (FALSE) 0 iIntroduced in 1996 for version 3.0, this feature was absolutely characteristic null (FALSE) 0 iof the First Browser War. The two "superpowers", Netscape and Microsoft, both null (FALSE) 0 iengaged in unilateral changes to the HTML specification, adding new features null (FALSE) 0 iand launching them without announcement in order to try to get the upper hand null (FALSE) 0 iover the other. Both sides would often refuse to implement one-another's new null (FALSE) 0 itags unless they were forced to by widespread adoption by page authors, null (FALSE) 0 iinstead promoting their own competing mechanisms (It was a horrible time to be null (FALSE) 0 ia web developer: having to make hacky workarounds in order to make use of the null (FALSE) 0 ilatest features but still support the widest array of browsers. But I'd still null (FALSE) 0 itake that over the horrors of rendering engine monoculture!). null (FALSE) 0 i null (FALSE) 0 iBetween adding this new language feature to their browser and writing this null (FALSE) 0 ipage, Netscape's market share had fallen from around 80% to around 55%, and null (FALSE) 0 imost of their losses were picked up by IE. Using would have made null (FALSE) 0 itheir page look worse in Microsoft's hot up-and-coming browser, which wouldn't null (FALSE) 0 ihave helped them persuade more people to download a copy of Navigator and null (FALSE) 0 icertainly wouldn't be a good image on a soon-to-launch (any day now!) page null (FALSE) 0 iabout best-practice on the Web! So Netscape's authors opted for the dominant, null (FALSE) 0 icross-platform solution on this page (Or maybe they didn't even think about it null (FALSE) 0 iand just copy-pasted from somewhere else on their site. I'm speculating.). null (FALSE) 0 i null (FALSE) 0 iAnyway, let's fast-forward a bit and see this project finally leave its "under null (FALSE) 0 iconstruction" phase and launch! null (FALSE) 0 i null (FALSE) 0 IScreenshot showing the homepage of Netscape Columns from 15 February 1998; the first recorded copy NOT to have a header link to the Webstories / Web Site Stories page. /2023/11/webstories-root-1998-02-15.png danq.me 70 i null (FALSE) 0 iOh. It's gone. null (FALSE) 0 i null (FALSE) 0 iSometime between October 1997 and February 1998 the long promised "Web Site null (FALSE) 0 iStories" section of Netscape Columns quietly disappeared from the website. null (FALSE) 0 iPresumably, it never published a single article, instead remaining a perpetual null (FALSE) 0 i"Coming Soon" page right up until the day it was deleted. null (FALSE) 0 i null (FALSE) 0 iI'm not sure if there's a better metaphor for Netscape's general demeanour in null (FALSE) 0 i1998 - the year in which they finally ceased to be the dominant market leader null (FALSE) 0 iin web browsers - than the quiet deletion of a page about how Netscape null (FALSE) 0 icustomers are making the best of the Web. This page might not have been null (FALSE) 0 iimportant, or significant, or even completed, but its disappearance may null (FALSE) 0 irepresent Netscape's refocus on trying to stay relevant in the face of null (FALSE) 0 iexistential threat. null (FALSE) 0 i null (FALSE) 0 iOf course, Microsoft won the First Browser War. They did so by pouring a null (FALSE) 0 ifortune's worth of developer effort into staying technologically one-step null (FALSE) 0 iahead, refusing to adopt standards proposed by their rival, and their null (FALSE) 0 iunprecedented decision to give away their browser for free (This turned out to null (FALSE) 0 ibe the master-stroke: not only did it partially-extricate Microsoft from their null (FALSE) 0 iagreement with Spyglass Inc., who licensed their browser engine to Microsoft null (FALSE) 0 iin exchange for a percentage of sales value, but once Microsoft started null (FALSE) 0 ibundling Internet Explorer with Windows it meant that virtually every computer null (FALSE) 0 icame with their browser factory-installed! This strategy kept Microsoft on top null (FALSE) 0 iuntil Firefox and Google Chrome kicked-off the Second Browser War in the early null (FALSE) 0 i2010s. But that's another story.). null (FALSE) 0 i null (FALSE) 0 iLINKS null (FALSE) 0 i null (FALSE) 0 1My blog post from yesterday, Reflecting on Bloganuary /posts/reflecting-on-bloganuary danq.me 70 hMy blog posts that contributed to Bloganuary 2024 URL:https://danq.me/tag/bloganuary-2024/ (FALSE) 0 hMy blog stats page showing my streak of consecutive daily posts URL:https://danq.me/stats/#longest-streak (FALSE) 0 hThe WayBack Machine, from the Internet Archive URL:https://web.archive.org/ (FALSE) 0 i=> +3 null (FALSE) 0 hHåkon W Lie's original proposal for Cascading Style Sheets for HTML, written in 1994 and archived by the W3C URL:https://www.w3.org/People/howcome/p/cascade.html (FALSE) 0 hChuck Musciano's examination of JavaScript Style Sheets and how they differ from Cascading Style Sheets, written back when it was unclear which technology would come to dominate. URL:http://sunsite.uakom.sk/sunworldonline/swol-04-1997/swol-04-webmaster.html (FALSE) 0 hMy blog post, "20 Years of Blogging", published 2018 URL:https://danq.me/2018/10/08/20-years-of-blogging/ (FALSE) 0 hTextFiles.com's collection of nearly a thousand "Under Construction" GIFs previously features on Geocities websites URL:http://textfiles.com/underconstruction/ (FALSE) 0 hCameron's World URL:https://www.cameronsworld.net/ (FALSE) 0 hMark Bernstein's article, "Hypertext Gardens: Delightful Vistas" URL:http://www.eastgate.com/garden/Enter.html (FALSE) 0 hGeeksforGeeks article about the isindex tag URL:https://www.geeksforgeeks.org/html-isindex-tag/ (FALSE) 0 hLine Mode Browser (LMB) on the World Wide Web Consortium site URL:https://www.w3.org/LineMode/ (FALSE) 0 h2001 Computer World article describing the use of server-side includes URL:https://www.computerworld.com/article/2794418/how-to-use-server-side-includes.html (FALSE) 0 hMDN definition of framesets (which you shouldn't use, by the way) URL:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/frameset (FALSE) 0 hMDN description of client-side imagemaps URL:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map (FALSE) 0 hMDN article about persistent connections URL:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Keep-Alive (FALSE) 0 hDocumentation by Friedrich-Alexander-Universität on the format of server-side imagemap configuration files URL:https://www4.cs.fau.de/Services/Doc/webdocs/webdocs/HTMLdocs/NewHTML/serv-ismap.html (FALSE) 0 hWikipedia article about Tor 'onion services' URL:https://en.wikipedia.org/wiki/Tor_(network)#Onion_services (FALSE) 0 hTutorialspoint article about the multicol HTML tag URL:https://www.tutorialspoint.com/html/html_multicol_tag.htm (FALSE) 0 hCSS Tricks article by Rachel Nabors on the importance of browser diversity (which is very definitely under threat in the 2020s) URL:https://css-tricks.com/the-ecological-impact-of-browser-diversity/ (FALSE) 0 .