47:51Ranking major U.S. Open-Weights Models. (Where does Ripple 65B fit in?)
Nov 6, 2026 · YouTube
38:58Testing Particle-1: a post-trained DeepSeek V4.1 Flash specializing in coding and efficiency
Oct 28, 2026 · YouTube
29:55Kimi K3.1 Pro Looked Incredible. Then I Kept Testing.
Oct 26, 2026 · YouTube
22:47Mistral Large 4 Is Cheap. But Is It Good Enough to Compete?
Oct 6, 2026 · YouTube
16:45DeepSeek V4.1 Flash Is Shockingly Good for the Price
Sep 10, 2026 · YouTube
17:31Testing Gemini 3.8 Flash on Real Coding Challenges (vs. other models)
Sep 2, 2026 · YouTube
It is March 1998. You build websites. A client wants a site for their community radio station, Radio Saltmarsh, 102.3 FM, broadcasting from a caravan on the east coast.
Build it the way you would have built it that month, for the browsers people actually had.
Internet Explorer 4 and Netscape Navigator 4. It must render acceptably in both. Assume 800 × 600, thousands of colors, and a 33.6k modem, so keep the weight down.
Write the copy yourself. Give the presenters names and the programs titles. Make it feel like a real small station with real people in it — the charm here is in the specifics, not in the beige.
Banned, because they did not exist or did not work:
flex, grid, position:sticky, CSS variables, media queriesborder-radius, box-shadow, opacity, rgba(), transform, transition, @keyframesconst, let, arrow functions, class, template literals, Array.forEach, JSONquerySelector, addEventListener, getElementById (yes — IE4 has it, NS4 does not; you branch)<section>, <header>, <nav>, <video>, <canvas>, data- attributesExpected, because it is 1998:
<font>, bgcolor, border=0, cellpadding, cellspacing, <center><style> block for the bits CSS1 could actually dodocument.all for IE and document.layers for Netscape, branched properly<!-- --> comment wrappers around script contentsdata: URIs for graphics, and you should, because the period look needs them. Draw them yourself; no placeholder services.html block.One short paragraph before the file: your layout structure and how you handled the IE/Netscape split.
The single fenced html block.
The honest part. Go through your own file and tell me:
Be specific and name dates where you know them. If you used a technique and are not sure it existed yet, say that rather than guessing confidently.
Anyone can make a page that looks like 1998 — Comic Sans, a starry background, a marquee. That is a costume.
I want to know whether you know the constraints from the inside: what NS4 did to a nested table, why you cannot put a stylesheet on a form control, what the <spacer> tag was and whose it was, why everyone used a single-pixel transparent GIF. A page that looks a bit plain but is honestly built to the period beats a gorgeous pastiche that uses flexbox under the hood — and I will read the source.
The page is a 740-pixel stack of shallow, attribute-styled tables, with explicit <font> markup inside table content and no layout dependence on CSS. The flashing ON AIR lamp is a positioned DHTML layer: IE4 uses document.all and style.visibility, while NS4 uses document.layers and its show/hide values. The IE-only marquee degrades to static text in NS4. Graphics are limited to a hand-built 8×8 GIF mast and a transparent spacer pixel, inlined only to satisfy the one-file rule.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Radio Saltmarsh 102.3 FM - programmes, presenters and guestbook</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="description" content="Radio Saltmarsh 102.3 FM: community radio from the blue caravan behind Saltmarsh Sailing Club.">
<meta name="generator" content="Notepad, mostly">
<style type="text/css">
<!--
BODY { background-color: #D8D2B8; color: #202020; }
A:link { color: #003399; }
A:visited { color: #663366; }
A:active { color: #CC3300; }
-->
</style>
<script language="JavaScript">
<!--
var lampOn = true;
function startLamp() {
window.setTimeout("flashLamp()", 600);
}
function flashLamp() {
lampOn = !lampOn;
if (document.all) {
/* Internet Explorer 4 */
document.all("airlamp").style.visibility =
lampOn ? "visible" : "hidden";
} else if (document.layers) {
/* Netscape Navigator 4: a positioned DIV is a Layer */
document.layers["airlamp"].visibility =
lampOn ? "show" : "hide";
}
window.setTimeout("flashLamp()", lampOn ? 1000 : 300);
}
function signTheBook() {
var f = document.guestbook;
if (f.visitor.value == "") {
alert("Please leave a name or a handle, so Marlene knows who to thank.");
f.visitor.focus();
return false;
}
alert("Thank you, " + f.visitor.value +
". Your card has been put on the spike by the kettle.");
f.reset();
/* This single-file version has no CGI program behind it. */
return false;
}
// -->
</script>
</head>
<body bgcolor="#D8D2B8" text="#202020"
link="#003399" vlink="#663366" alink="#CC3300"
onLoad="startLamp()">
<div id="airlamp"
style="position:absolute; left:650px; top:18px; width:78px; height:28px; z-index:5; visibility:visible;">
<table width="78" border="1" cellpadding="3" cellspacing="0" bgcolor="#990000">
<tr>
<td align="center" bgcolor="#CC3333">
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b>ON AIR</b></font>
</td>
</tr>
</table>
</div>
<center>
<a name="top"></a>
<table width="740" border="0" cellpadding="5" cellspacing="0" bgcolor="#003366">
<tr>
<td width="82" align="center" valign="middle">
<!-- Hand-drawn 8 by 8 GIF: yellow mast and side lobes on blue. -->
<img src="data:image/gif,GIF89a%08%00%08%00%80%00%00%00%33%66%FF%CC%00%2C%00%00%00%00%08%00%08%00%00%02%31%0C%41%10%04%41%30%04%43%10%04%C1%10%04%C1%30%0C%43%10%04%41%30%0C%41%10%04%C1%30%0C%43%10%04%C1%10%04%43%10%04%43%30%0C%C1%10%0C%C3%30%0C%C3%30%05%00%3B"
width="64" height="64" border="0" alt="Radio Saltmarsh mast">
</td>
<td valign="middle">
<font face="Arial, Helvetica, sans-serif" size="6" color="#FFFFCC"><b>RADIO SALTMARSH</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="4" color="#FFCC33"><b>102.3 FM</b></font>
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFCC">
Live and local from the blue caravan on the east coast
</font>
</td>
</tr>
</table>
<table width="740" border="0" cellpadding="4" cellspacing="0" bgcolor="#C1C7B5">
<tr>
<td width="148" align="center">
<font face="Arial, Helvetica, sans-serif" size="2"><b><a href="#top">TOP OF PAGE</a></b></font>
</td>
<td width="148" align="center">
<font face="Arial, Helvetica, sans-serif" size="2"><b><a href="#programmes">PROGRAMMES</a></b></font>
</td>
<td width="148" align="center">
<font face="Arial, Helvetica, sans-serif" size="2"><b><a href="#presenters">PRESENTERS</a></b></font>
</td>
<td width="148" align="center">
<font face="Arial, Helvetica, sans-serif" size="2"><b><a href="#guestbook">GUESTBOOK</a></b></font>
</td>
<td width="148" align="center">
<font face="Arial, Helvetica, sans-serif" size="2"><b><a href="#reception">RECEPTION</a></b></font>
</td>
</tr>
</table>
<table width="740" border="0" cellpadding="3" cellspacing="0" bgcolor="#FFFFCC">
<tr>
<td height="24">
<marquee width="700" behavior="scroll" scrollamount="2" scrolldelay="70">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>CARAVAN NEWS:</b> Saturday's bring-and-buy is at the sailing club, 10 till 1.
The request line opens at six. If you hear the kettle during the news, Marlene has
reached the sports headlines.
</font>
</marquee>
</td>
</tr>
</table>
<br>
<table width="740" border="0" cellpadding="6" cellspacing="0">
<tr>
<td width="480" valign="top">
<font face="Arial, Helvetica, sans-serif" size="4" color="#003366">
<b>GOOD AFTERNOON FROM THE MARSH</b>
</font>
<p>
<font face="Arial, Helvetica, sans-serif" size="3">
Radio Saltmarsh is a community station run by nine volunteers, one kettle and a
small transmitter called Doris. Our studio is the blue caravan behind Saltmarsh
Sailing Club on Ferry Road. If you hear a chair scrape during the news, somebody
has stood up to let the dog out.
</font>
</p>
<p>
<font face="Arial, Helvetica, sans-serif" size="2">
Use this page to find a programme, badger a presenter or tell us where the signal
reached. Nige updates it on Wednesday evenings, provided the library computer is
free. Page last fiddled with on Friday 13 March 1998.
</font>
</p>
</td>
<td width="12" valign="top">
<!-- A real 1998 deployment would call this file spacer.gif. -->
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
width="12" height="1" border="0" alt="">
</td>
<td width="224" valign="top" bgcolor="#E9E7D2">
<a name="reception"></a>
<font face="Arial, Helvetica, sans-serif" size="3" color="#003366">
<b>HOW TO HEAR US</b>
</font>
<p>
<font face="Arial, Helvetica, sans-serif" size="2">
Tune to <b>102.3 FM</b>. Point a portable's telescopic aerial towards the water
tower. In Wick Ferry, put the set on top of the fridge; nobody knows why, but it
helps.
</font>
</p>
<p>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Studio:</b> The Blue Caravan, Ferry Road, Saltmarsh.<br>
<b>Requests:</b> Saltmarsh 230 102, after 6 pm.<br>
Postcards are nicer. Please include your village: Marlene has a map and a box of pins.
</font>
</p>
</td>
</tr>
</table>
<br>
<a name="programmes"></a>
<font face="Arial, Helvetica, sans-serif" size="4" color="#003366">
<b>PROGRAMMES: MONDAY 16 - SUNDAY 22 MARCH</b>
</font><br>
<font face="Arial, Helvetica, sans-serif" size="2">
All times GMT. Local news is at 12.00 and 18.00, followed by tides and weather.
</font>
<table width="740" border="1" cellpadding="4" cellspacing="0">
<tr bgcolor="#003366">
<td width="82">
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b>DAY</b></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b>ON AIR</b></font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>MON 16</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>07.00-09.00 The Early Tide</b> - Marlene Tice<br>
<b>12.30-14.00 Postbag & Pancakes</b> - Marlene Tice<br>
<b>19.00-21.00 Rook's Record Revival</b> - Eddie Rook
</font>
</td>
</tr>
<tr bgcolor="#E8E4CF">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>TUE 17</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>07.00-09.00 The Early Tide</b> - Marlene Tice<br>
<b>16.30-18.30 The Home Run</b> - Sally Wicks, with the school notices<br>
<b>21.00-23.00 Pegg's Night Frequency</b> - Nigel Pegg
</font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>WED 18</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>07.00-09.00 The Early Tide</b> - Marlene Tice<br>
<b>14.00-15.30 Marsh Matters</b> - Marlene Tice, with the parish council, not all of it<br>
<b>19.00-21.00 Rook & Blues</b> - Eddie Rook
</font>
</td>
</tr>
<tr bgcolor="#E8E4CF">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>THU 19</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>07.00-09.00 The Early Tide</b> - Marlene Tice<br>
<b>17.00-18.00 Swap Shop</b> - Sally Wicks<br>
<b>20.00-22.00 The Late Pier</b> - Nigel Pegg
</font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>FRI 20</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>07.00-09.00 The Early Tide</b> - Marlene Tice<br>
<b>18.00-20.00 Wicks' Weekend Warm-Up</b> - Sally Wicks<br>
<b>22.00-00.00 The Night Jetty</b> - Nigel Pegg
</font>
</td>
</tr>
<tr bgcolor="#E8E4CF">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>SAT 21</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>06.30-08.00 High Water</b> - Eddie Rook, for anglers and late night owls<br>
<b>09.00-12.00 The Car Boot</b> - Marlene Tice<br>
<b>14.00-17.00 Sally's Saturday Request Club</b> - Sally Wicks<br>
<b>20.00-23.00 Pegg's Portable Disco</b> - Nigel Pegg
</font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2"><b>SUN 22</b></font></td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
<b>08.00-09.30 Songs from the Sea Wall</b> - Eddie Rook<br>
<b>10.00-12.00 The Sunday Papers, Aloud</b> - Marlene Tice<br>
<b>16.00-18.00 Causeway Country</b> - Sally Wicks<br>
<b>19.00-20.00 Eight-Track Evensong</b> - Eddie Rook
</font>
</td>
</tr>
</table>
<p>
<font face="Arial, Helvetica, sans-serif" size="2">
Thursday's Swap Shop: no live animals, outboard motors or mattresses, please.
Engineering is Tuesday afternoon; a carrier hum usually means Nige has found a
loose plug, not that your set is broken.
</font>
</p>
<a name="presenters"></a>
<font face="Arial, Helvetica, sans-serif" size="4" color="#003366">
<b>MEET THE PRESENTERS</b>
</font>
<table width="740" border="1" cellpadding="5" cellspacing="0">
<tr bgcolor="#003366">
<td width="160">
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b>WHO</b></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2" color="#FFFFFF"><b>WHAT TO EXPECT</b></font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Marlene Tice</b><br>The Early Tide
</font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
Works in the village stores; reads the lost-dog notices before the birthdays and
keeps emergency biscuits in the left-hand desk drawer.
</font>
</td>
</tr>
<tr bgcolor="#E8E4CF">
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Eddie Rook</b><br>Rook's Record Revival
</font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
Lifeboat mechanic for 31 years; his 45s live in a biscuit tin, and “modern” means
after 1974 only if the record has a proper introduction.
</font>
</td>
</tr>
<tr bgcolor="#F4F0DA">
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Sally Wicks</b><br>Saturday Request Club
</font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
Teaches piano at the primary school, keeps requests in a green exercise book and
can hear a wrong harmony through two caravan walls.
</font>
</td>
</tr>
<tr bgcolor="#E8E4CF">
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Nigel “Nige” Pegg</b><br>The Night Jetty
</font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="2">
Seventeen and meant to be revising for A-levels; has soldered every lead in the
caravan and saves the drum machines until the grown-ups have gone home.
</font>
</td>
</tr>
</table>
<br>
<a name="guestbook"></a>
<font face="Arial, Helvetica, sans-serif" size="4" color="#003366">
<b>SIGN OUR VISITOR'S BOOK</b>
</font>
<p>
<font face="Arial, Helvetica, sans-serif" size="2">
Listening beyond Wick Ferry? Leave a card in the electronic book. Tell us where
you are and which record would get you through a wet Sunday. E-mail addresses are
not read out on air.
</font>
</p>
<form name="guestbook" action="/cgi-bin/guestbook.pl" method="post"
onSubmit="return signTheBook()">
<table width="740" border="1" cellpadding="5" cellspacing="0" bgcolor="#F4F0DA">
<tr>
<td colspan="2" bgcolor="#C1C7B5">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>THE ELECTRONIC NOTICE BOARD</b> - paper version still available under the kettle
</font>
</td>
</tr>
<tr>
<td width="145" valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">Your name or handle:</font>
</td>
<td>
<input type="text" name="visitor" size="34" maxlength="40">
</td>
</tr>
<tr>
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">Listening in:</font>
</td>
<td>
<input type="text" name="where" size="34" maxlength="60">
<font face="Arial, Helvetica, sans-serif" size="1"> village, town or passing ship</font>
</td>
</tr>
<tr>
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">E-mail, optional:</font>
</td>
<td>
<input type="text" name="email" size="34" maxlength="70">
</td>
</tr>
<tr>
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">Favourite programme:</font>
</td>
<td>
<select name="programme">
<option value="" selected>Choose one, or don't</option>
<option value="early-tide">The Early Tide</option>
<option value="rook">Rook's Record Revival</option>
<option value="sally">Sally's Saturday Request Club</option>
<option value="nige">Pegg's Night Frequency</option>
<option value="other">Something else / the seagulls</option>
</select>
</td>
</tr>
<tr>
<td valign="top">
<font face="Arial, Helvetica, sans-serif" size="2">Your message:</font>
</td>
<td>
<textarea name="message" rows="5" cols="52"></textarea>
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="checkbox" name="onair" value="yes" checked>
<font face="Arial, Helvetica, sans-serif" size="2">
You may read my message out, but not my e-mail address.
</font>
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" value="Put my card on the spike">
<input type="reset" value="Rub it out">
</td>
</tr>
</table>
</form>
<br>
<font face="Arial, Helvetica, sans-serif" size="2"><b>THE CARAVAN HIT COUNTER</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="2">You are visitor number</font>
<table border="0" cellpadding="2" cellspacing="1" bgcolor="#777766" align="center">
<tr>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>0</b></font></td>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>0</b></font></td>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>1</b></font></td>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>3</b></font></td>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>2</b></font></td>
<td width="18" align="center" bgcolor="#000000"><font face="Courier New, Courier, monospace" size="4" color="#00FF00"><b>7</b></font></td>
</tr>
</table>
<font face="Arial, Helvetica, sans-serif" size="1">
since 14 February 1998, when Nige installed it for the second time.
Hits, not individual listeners.
</font>
<br><br>
<table width="740" border="2" cellpadding="6" cellspacing="0" bgcolor="#FFFFCC">
<tr>
<td width="48" align="center" bgcolor="#FFCC33">
<font face="Arial, Helvetica, sans-serif" size="6" color="#000000"><b>!</b></font>
</td>
<td>
<font face="Arial, Helvetica, sans-serif" size="3" color="#990000">
<b>UNDER CONSTRUCTION</b>
</font><br>
<font face="Arial, Helvetica, sans-serif" size="2">
Nige is making the reception-report map and photographing four presenter mugs.
The map is presently a pencil line and a coffee ring. Please excuse the solder fumes;
the Reception Reports page should be here after the next library session.
</font>
</td>
</tr>
</table>
<p>
<font face="Arial, Helvetica, sans-serif" size="1">
Best viewed at 800 x 600 with thousands of colours. Made in Notepad.<br>
Last updated 13 March 1998 at 23.41 |
Webmaster: <a href="mailto:nige@saltmarsh.demon.co.uk">nige@saltmarsh.demon.co.uk</a> |
<a href="#top">Back to the top</a>
</font>
</p>
<table width="740" border="1" cellpadding="5" cellspacing="0" bgcolor="#C1C7B5">
<tr>
<td align="center">
<font face="Arial, Helvetica, sans-serif" size="2">
<b>The Aerial & Ether WebRing</b><br>
This Radio Saltmarsh site is number 7 of 19.<br>
<a href="http://www.webring.org/cgi-bin/webring?ring=aerialeether;id=7;prev"><b><< Previous</b></a>
|
<a href="http://www.webring.org/cgi-bin/webring?ring=aerialeether;random"><b>Random</b></a>
|
<a href="http://www.webring.org/cgi-bin/webring?ring=aerialeether;id=7;next"><b>Next >></b></a>
</font>
</td>
</tr>
</table>
</center>
</body>
</html>
Genuinely workable in both IE4 and NS4: Fixed-width table layout, bgcolor, cellpadding, cellspacing, border, <font>, <center>, image dimensions, named anchors and ordinary HTML forms were all everyday 4.x-browser techniques. HTML 4.0 itself was already a W3C Recommendation, dating from December 1997, so the Transitional doctype is not premature. The small amount of CSS is restricted to basic colours; the body attributes supply the important fallbacks. The form validation, alerts, reset(), onLoad and string-based setTimeout calls are also period JavaScript.
Why the markup is so deliberately flat: NS4 did not reliably carry CSS typography through table structures, and deeply nested or percentage-width tables were easy to mismeasure or repaint badly. Important fonts and colours are therefore repeated locally, and the page does not depend on a tower of nested width="100%" tables. The gutter uses a sized transparent GIF rather than trusting an empty cell. I did not use <spacer>: that was Netscape’s proprietary spacing tag and IE would simply ignore it. The one-pixel GIF trick worked across browsers, could hold a cell open, and could be stretched to an exact width or height while remaining a tiny, cacheable download.
The form controls are intentionally unstyled: Labels and cells receive the presentation; input, select and textarea get only HTML attributes such as size, rows and cols. NN4’s native widgets ignored much of the font, background and border styling an author might try to apply. IE4 was more accommodating, which is exactly how a form could end up looking carefully designed in one browser and unfinished in the other.
Browser-specific behaviour: <marquee> was Microsoft proprietary markup. IE4 scrolls it; NS4 does not implement the element and, by ignoring the unknown tags, should expose its contents as ordinary static text. The ON AIR lamp supplies movement in both target browsers: IE4 takes the document.all(...).style.visibility branch with visible/hidden, while NS4 takes document.layers[...] with the Layer values show/hide. Without JavaScript or CSS positioning, its ordinary visible markup remains as a static ON AIR sign.
CSS positioning needs a qualification: position:absolute, visibility and z-index are not CSS1. IE4 and NS4 nevertheless had CSS-P/DHTML implementations, so using them for a 1998 layer script is plausible. CSS2 was not finalized until May 1998, however; this was reliance on the browsers’ implementations, not on a finished standard. I would still test on the actual NS4 point release rather than promise identical layer painting.
The clear anachronism is data: delivery: RFC 2397, which standardized the data: URL scheme, is dated August 1998, after the requested month. IE4 would not load these inline images and could show alt text or broken-image furniture. I cannot certify consistent support across NN4 point releases either. The GIF89a encodings themselves are period technology and would work if saved as logo.gif and spacer.gif; it is the inline URL packaging that is modern. A real March build would use ordinary external GIF files. The table structure does not depend on the logo, so the page would remain usable without it.
Modern-browser qualifications: document.layers is long gone, and modern legacy emulation of document.all is not a dependable boolean feature test. Consequently, the lamp may simply stay lit when opened today. Current browsers often retain <marquee> as legacy behaviour, but that is not something this source relies on for standards-compliant modern animation.
The server-side objects are stage dressing: The guestbook JavaScript displays a thank-you, resets the form and cancels submission; with JavaScript disabled, its CGI URL has no program behind it. The counter is a static piece of table artwork, not a shared count—a genuine counter required CGI, a server include or equivalent server state. The WebRing URLs are plausible period CGI links, not a claim that this particular ring exists.