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 centred 720px table stack: a masthead, a two-column main area (schedule and presenters on the left, guestbook/counter/construction notice on the right), then a webring strip. Presentation is mostly old-school attributes — bgcolor, cellpadding, cellspacing, <font>, nested tables and a few 1×1 GIFs — with only a tiny CSS1 <style> block for body colour. The movement is a blinking “ON AIR” box implemented by branching on document.all for IE4 and document.layers for Navigator 4; IE toggles style.visibility, NN4 toggles layer visibility using show/hide. If neither path exists, the box simply stays visible.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Radio Saltmarsh 102.3 FM - East Coast Community Radio</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 a caravan on the east coast. Schedule, presenters, guestbook.">
<meta name="keywords" content="Radio Saltmarsh, community radio, 102.3 FM, east coast, caravan, folk, fishing, tide">
<meta name="generator" content="Hand-coded in Notepad, March 1998">
<style type="text/css">
body { background-color: #EAF6F2; color: #003333; }
</style>
<script language="JavaScript" type="text/javascript">
<!--
var onairVisible = true;
function blinkOnAir() {
var box = null;
if (document.all) {
box = document.all['onairBox'];
if (box) {
if (onairVisible) { box.style.visibility = 'visible'; }
else { box.style.visibility = 'hidden'; }
}
} else if (document.layers) {
box = document.layers['onairBox'];
if (box) {
if (onairVisible) { box.visibility = 'show'; }
else { box.visibility = 'hide'; }
}
}
onairVisible = !onairVisible;
window.setTimeout('blinkOnAir()', 650);
}
// -->
</script>
</head>
<body bgcolor="#EAF6F2" text="#003333" link="#006666" vlink="#664400" alink="#CC3300" marginwidth="0" marginheight="0" topmargin="0" leftmargin="0" onload="blinkOnAir()">
<div id="onairBox" style="position:absolute; left:620px; top:8px; width:130px; height:22px; visibility:visible; z-index:10;">
<font face="Arial, Helvetica, sans-serif" size="2" color="#CC0000"><b><img src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" width="8" height="8" alt="" border="0" hspace="2" vspace="1">ON AIR</b></font>
</div>
<center>
<table width="720" border="0" cellpadding="0" cellspacing="0" bgcolor="#2F6F6B">
<tr><td>
<table width="100%" border="0" cellpadding="12" cellspacing="1" bgcolor="#2F6F6B">
<tr><td bgcolor="#EAF6F2">
<!-- MASTHEAD -->
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="86" align="center" valign="middle" bgcolor="#2F6F6B">
<font face="Arial Black, Arial, Helvetica, sans-serif" size="6" color="#FFFFFF"><b>~</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1" color="#FFFF99"><b>102.3</b></font>
</td>
<td width="12"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="12" height="1" alt="" border="0"></td>
<td valign="middle">
<font face="Arial Black, Arial, Helvetica, sans-serif" size="6" color="#1F4E4A"><b>RADIO SALTMARSH</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="4" color="#CC3300"><b>102.3 FM</b></font>
<font face="Arial, Helvetica, sans-serif" size="2" color="#003333"> broadcasting from a caravan on the east coast</font>
</td>
</tr>
</table>
<hr size="1" width="100%" color="#2F6F6B">
<!-- INTRO -->
<font face="Arial, Helvetica, sans-serif" size="2">
<b>Hello from the marsh.</b> We are a small community station run by people who live here, fish here, paint here and occasionally get stuck here. We play folk, dub, shipping forecasts, swap-shop adverts and whatever the tide brings in.
</font>
<br><br>
<!-- MAIN TWO-COLUMN LAYOUT -->
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="470" valign="top">
<!-- SCHEDULE -->
<font face="Arial, Helvetica, sans-serif" size="3" color="#1F4E4A"><b>This Week on the Saltmarsh</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">All times local. Schedule subject to change when the tide comes in.</font><br><br>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#2F6F6B">
<tr bgcolor="#D9EFE9">
<td><font face="Arial, Helvetica, sans-serif" size="1" color="#1F4E4A"><b>Day</b></font></td>
<td><font face="Arial, Helvetica, sans-serif" size="1" color="#1F4E4A"><b>Morning</b></font></td>
<td><font face="Arial, Helvetica, sans-serif" size="1" color="#1F4E4A"><b>Afternoon</b></font></td>
<td><font face="Arial, Helvetica, sans-serif" size="1" color="#1F4E4A"><b>Evening</b></font></td>
</tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Mon</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Breakfast on the Marshes</b><br>07:00-10:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Swap Shop</b><br>10:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Saltmarsh Soundings</b><br>19:00-21:00<br><i>Rina Okafor</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Tue</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Breakfast on the Marshes</b><br>07:00-10:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Fishing Report & Harbour News</b><br>10:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Folk on the Flats</b><br>20:00-22:00<br><i>Rina Okafor</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Wed</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Breakfast on the Marshes</b><br>07:00-10:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Swap Shop</b><br>10:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Midweek Maritime</b><br>19:00-21:00<br><i>Davey Wren</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Thu</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Breakfast on the Marshes</b><br>07:00-10:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Fishing Report</b><br>10:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Saltmarsh Soundings</b><br>20:00-22:00<br><i>Rina Okafor</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Fri</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Breakfast on the Marshes</b><br>07:00-10:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Swap Shop</b><br>10:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Night Ferry</b><br>22:00-01:00<br><i>Davey Wren</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Sat</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Saturday Car Boot</b><br>08:00-12:00<br><i>Colin "Codge" Tranter</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Coastline Cafe</b><br>12:00-15:00<br><i>Rina Okafor</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Night Ferry</b><br>22:00-01:00<br><i>Davey Wren</i></font></td></tr>
<tr bgcolor="#FFFFFF"><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Sun</b></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Sunday Tide Service</b><br>09:00-11:00<br><i>Mags Pettifer</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>The Long Player</b><br>13:00-15:00<br><i>Davey Wren</i></font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="1"><b>Folk on the Flats</b><br>20:00-22:00<br><i>Rina Okafor</i></font></td></tr>
</table>
<br><br>
<!-- PRESENTERS -->
<font face="Arial, Helvetica, sans-serif" size="3" color="#1F4E4A"><b>Meet the Presenters</b></font><br><br>
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<tr>
<td width="50%" valign="top"><font face="Arial, Helvetica, sans-serif" size="2" color="#CC3300"><b>Mags Pettifer</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">Breakfast on the Marshes. Wakes the coast with tea, tide times and a slightly too loud gull.</font></td>
<td width="50%" valign="top"><font face="Arial, Helvetica, sans-serif" size="2" color="#CC3300"><b>Colin "Codge" Tranter</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">The Swap Shop. Knows which crab pots are missing and which lawnmower you need.</font></td>
</tr>
<tr>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2" color="#CC3300"><b>Rina Okafor</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">Saltmarsh Soundings and Folk on the Flats. Local history, folk records and the occasional gull recorded live.</font></td>
<td valign="top"><font face="Arial, Helvetica, sans-serif" size="2" color="#CC3300"><b>Davey Wren</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">The Night Ferry. Ambient, dub and the shipping forecast read very slowly. Has a coat for every weather.</font></td>
</tr>
</table>
</td>
<td width="10"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="10" height="1" alt="" border="0"></td>
<td valign="top">
<!-- SIDEBAR -->
<table width="100%" border="0" cellpadding="6" cellspacing="1" bgcolor="#2F6F6B">
<tr><td bgcolor="#F7F1D9">
<font face="Arial, Helvetica, sans-serif" size="2" color="#1F4E4A"><b>Guestbook</b></font><br>
<font face="Arial, Helvetica, sans-serif" size="1">Sign in, say hello, tell us what you miss from the coast.</font><br><br>
<form action="/cgi-bin/guestbook.cgi" method="post">
<input type="hidden" name="station" value="Radio Saltmarsh">
<table border="0" cellpadding="1" cellspacing="0">
<tr><td><font face="Arial, Helvetica, sans-serif" size="1">Name:</font></td><td><input type="text" name="name" size="16" maxlength="40"></td></tr>
<tr><td><font face="Arial, Helvetica, sans-serif" size="1">Where:</font></td><td><input type="text" name="where" size="16" maxlength="40"></td></tr>
<tr><td valign="top"><font face="Arial, Helvetica, sans-serif" size="1">Message:</font></td><td><textarea name="message" rows="3" cols="22" wrap="virtual"></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Sign guestbook"> <input type="reset" value="Clear"></td></tr>
</table>
</form>
<font face="Arial, Helvetica, sans-serif" size="1"><a href="/cgi-bin/guestbook.cgi?view">Read the guestbook</a></font>
</td></tr>
</table>
<br>
<!-- UNDER CONSTRUCTION -->
<table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#FFFFCC">
<tr><td>
<font face="Arial, Helvetica, sans-serif" size="1" color="#CC0000"><b>UNDER CONSTRUCTION:</b></font>
<font face="Arial, Helvetica, sans-serif" size="1">The outside-broadcast page is being nailed together. Please mind the wet varnish.</font>
</td></tr>
</table>
<br>
<!-- HIT COUNTER -->
<font face="Arial, Helvetica, sans-serif" size="1">You are visitor number:</font><br>
<table border="0" cellpadding="1" cellspacing="0" bgcolor="#000000">
<tr><td><font face="Courier New, Courier, monospace" size="3" color="#33FF33"><b>001337</b></font></td></tr>
</table>
<font face="Arial, Helvetica, sans-serif" size="1">Visitors since 4 May 1997.<br>Counter by Saltmarsh CGI.</font>
<br><br>
<font face="Arial, Helvetica, sans-serif" size="1"><b>Studio:</b> Caravan 4, Saltmarsh Car Park<br>
<b>Phone:</b> Saltmarsh 221<br>
<b>Email:</b> <a href="mailto:studio@saltmarsh.fm">studio@saltmarsh.fm</a></font>
</td>
</tr>
</table>
<br>
<hr size="1" width="100%" color="#2F6F6B">
<font face="Arial, Helvetica, sans-serif" size="1" color="#003333">Last updated 14 March 1998. Webbed by Davey Wren at 2am. Best viewed at 800x600 with thousands of colours.</font>
</td></tr>
</table>
</td></tr>
</table>
<br>
<!-- WEBRING STRIP -->
<table width="720" border="0" cellpadding="4" cellspacing="0" bgcolor="#1F4E4A">
<tr><td align="center">
<font face="Arial, Helvetica, sans-serif" size="1" color="#FFFFFF"><b>THE EAST COAST COMMUNITY RADIO WEBRING</b><br>
[ <a href="http://www.webring.org/cgi-bin/webring?ring=ecradio&id=17&prev"><font color="#FFFF99">Previous</font></a> ]
[ <a href="http://www.webring.org/cgi-bin/webring?ring=ecradio&id=17&random"><font color="#FFFF99">Random</font></a> ]
[ <a href="http://www.webring.org/cgi-bin/webring?ring=ecradio&id=17&next"><font color="#FFFF99">Next</font></a> ]
[ <a href="http://www.webring.org/cgi-bin/webring?ring=ecradio&id=17&list"><font color="#FFFF99">List all sites</font></a> ]
<br>This site is site 17 of 42. <a href="http://www.webring.org/cgi-bin/webring?ring=ecradio&id=17&home"><font color="#FFFF99">Join the ring</font></a>.
</font>
</td></tr>
</table>
<br>
<font face="Arial, Helvetica, sans-serif" size="1" color="#003333">© 1998 Radio Saltmarsh 102.3 FM. We play what we like, mostly.</font>
</center>
</body>
</html>
Genuinely worked in both IE4 and Navigator 4 in March 1998: table layout, nested tables, bgcolor, cellpadding, cellspacing, border=0, width, valign, align, <center>, <font>, <hr>, <br>, <b>, <i>, basic form controls (input, textarea, submit, reset, action, method, size, maxlength, rows, cols), mailto: links, and plain JavaScript with var, functions, if, onload, and window.setTimeout. The 1×1 transparent GIF trick itself was period-correct and worked in both, though this file embeds it as a data: URI rather than serving a real .gif. Simple CSS1 in a <style> block was supported in both, but Navigator 4’s CSS support was buggy and inheritance was uneven, so I used presentational attributes as the real layout mechanism. Navigator 4 also had known problems with deeply nested tables and percentage widths; this layout keeps nesting shallow and widths simple to avoid the worst of it.
Worked in only one, or was browser-specific: document.all is IE4-only (introduced with IE4 in September 1997); Navigator 4 sees it as undefined and takes the document.layers branch. document.layers is Navigator 4-only (Navigator 4 shipped June 1997); IE4 sees it as undefined and takes the document.all branch. The visibility values differ: IE uses style.visibility = 'visible'/'hidden', Navigator 4 uses layer.visibility = 'show'/'hide'. If I had used the wrong branch, the “ON AIR” box would have stayed static or thrown an error; if JavaScript fails entirely, it remains visible and static. <hr color> is honoured by IE4 but Navigator 4 often ignores it and draws its default grey rule. font face="Arial Black" only appears where that font is installed; Navigator 4 on non-Windows machines may fall back to Arial/Helvetica.
Anachronistic or modern-browser-dependent: the biggest one is data: URIs. The data: URL scheme was standardised in RFC 2397 in August 1998, after March 1998, and neither IE4 nor Navigator 4 supported img src="data:...". In a real 1998 build I would have served the 1×1 GIFs and the little red square from the server. In this file the transparent spacer is non-critical — if the image fails, the table cell widths still hold the layout — and the red square beside “ON AIR” is decorative. The modern browser will render them; the period browsers would have shown nothing or a small broken-image marker. I did not use <spacer> because that was a Netscape-only tag, not an IE tag; the 1×1 GIF plus table cells was the cross-browser compromise. I also did not put CSS on form controls, because Navigator 4’s handling of styled form widgets was unreliable and IE4’s CSS support on controls was limited; the form uses only HTML attributes. The page’s absolute-positioned #onairBox relies on CSS-P; I believe IE4 and Navigator 4 both supported the subset used here, but Navigator 4 implemented it through its layer model rather than modern CSS layout, so if it mis-parsed the style it would show the ON AIR box in normal flow rather than blinking in the corner. Finally, opening this in a modern browser is not a true emulation: modern fonts, anti-aliasing, table rendering and data: URI support all differ from a real 800×600 IE4 or Navigator 4 session.