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 single 760-pixel centered table with a masthead, navigation strip, under-construction banner, a two-column body (main content plus sidebar), and a full-width webring/footer. Layout is done entirely with nested tables, attributes, and <font> tags; the <style> block only carries CSS1-level color, font, and link rules that both browsers can ignore safely. Browser differences are handled by sniffing document.all versus document.layers and using document.write to emit either IE4 <div> markup or NS4 <layer> markup for the animated ticker, with setTimeout driving the same movement logic in both.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Radio Saltmarsh 102.3 FM</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.">
<style type="text/css">
<!--
body { margin: 0px; background-color: #000033; color: #FFFFFF; font-family: Arial, Helvetica, sans-serif; }
a:link { color: #FFFF00; text-decoration: underline; }
a:visited { color: #FF9900; }
td { font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
.small { font-size: 10px; color: #CCCCCC; }
-->
</style>
<script language="JavaScript">
<!--
var isIE = false;
var isNS = false;
if (document.all) { isIE = true; }
else if (document.layers) { isNS = true; }
function writeTicker() {
var msg = "Now on air: The Early Tide with Mags Tallow | Next: Tides & Traffic with Derek Halloway at 09:00 | Radio Saltmarsh 102.3 FM";
if (isIE) {
document.write('<div id="tickerBox" style="position:relative; width:230px; height:18px; background-color:#000000; overflow:hidden; clip:rect(0px 230px 18px 0px);">');
document.write('<div id="tickerText" style="position:absolute; left:230px; top:2px; width:760px;">');
document.write('<nobr><font color="#00FF00" size="2" face="Courier New,Courier"><b>' + msg + '</b></font></nobr>');
document.write('</div></div>');
} else if (isNS) {
document.write('<layer name="tickerBox" width="230" height="18" bgcolor="#000000" clip="0,0,230,18">');
document.write('<layer name="tickerText" left="230" top="2" width="760"><nobr><font color="#00FF00" size="2" face="Courier New,Courier"><b>' + msg + '</b></font></nobr></layer>');
document.write('</layer>');
} else {
document.write('<font color="#00FF00" size="2"><b>Now on air: The Early Tide with Mags Tallow</b></font>');
}
}
var tickerX = 230;
function animateTicker() {
tickerX -= 2;
if (tickerX < -760) { tickerX = 230; }
if (isIE) {
var el = document.all["tickerText"];
if (el) { el.style.left = tickerX + "px"; }
} else if (isNS) {
var box = document.layers["tickerBox"];
if (box) {
if (box.clip) { box.clip.left = 0; box.clip.top = 0; box.clip.right = 230; box.clip.bottom = 18; }
if (box.document && box.document.layers["tickerText"]) {
box.document.layers["tickerText"].left = tickerX;
}
}
}
setTimeout("animateTicker()", 60);
}
//-->
</script>
</head>
<body bgcolor="#000033" text="#FFFFFF" link="#FFFF00" vlink="#FF9900" alink="#FFFFFF" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" onLoad="animateTicker()">
<center>
<table width="760" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
<tr>
<td>
<table width="100%" border="0" cellpadding="8" cellspacing="0" bgcolor="#003366">
<tr>
<td width="70" align="center" valign="middle">
<font color="#FFFFFF" size="6" face="Arial,Helvetica"><b>RS</b></font>
</td>
<td valign="middle">
<font color="#FFFFFF" size="6" face="Arial,Helvetica"><b>RADIO SALTMARSH</b></font><br>
<font color="#FFFF00" size="4" face="Arial,Helvetica"><b>102.3 FM</b></font>
<font color="#FFFFFF" size="2" face="Arial,Helvetica"> broadcasting from a caravan on the east coast</font>
</td>
<td align="right" valign="middle">
<font color="#00FF00" size="2" face="Arial,Helvetica"><b>ON AIR</b></font><br>
<font color="#FFFFFF" size="1" face="Arial,Helvetica">The Early Tide</font>
</td>
</tr>
</table>
<table width="100%" border="0" cellpadding="4" cellspacing="1" bgcolor="#003366">
<tr bgcolor="#006699">
<td align="center"><a href="#schedule"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Schedule</b></font></a></td>
<td align="center"><a href="#presenters"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Presenters</b></font></a></td>
<td align="center"><a href="#guestbook"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Guestbook</b></font></a></td>
<td align="center"><a href="#counter"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Counter</b></font></a></td>
<td align="center"><a href="#webring"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Webring</b></font></a></td>
</tr>
</table>
<table width="100%" border="2" cellpadding="4" cellspacing="0" bordercolor="#000000" bgcolor="#FFFF00">
<tr>
<td align="center">
<font color="#000000" size="2" face="Arial,Helvetica"><b><blink>UNDER CONSTRUCTION</blink></b><br>
This site was last updated 14 March 1998. The guestbook CGI is being mended with a spoon.</font>
</td>
</tr>
</table>
<table width="100%" border="0" cellpadding="10" cellspacing="0">
<tr valign="top">
<td width="62%" bgcolor="#FFFFFF">
<font color="#000000" size="2" face="Arial,Helvetica">
Welcome to Radio Saltmarsh, 102.3 FM. We broadcast from a 1978 Sprite caravan parked behind the dunes at Saltmarsh Gap, on the east coast. The transmitter is a 50-watt rig that reaches from the pier to the petrol station, and sometimes the other way round. If you can hear us, you are probably already a member.
</font>
<br><br>
<a name="schedule"></a>
<font color="#003366" size="4" face="Arial,Helvetica"><b>This week on Radio Saltmarsh</b></font>
<br>
<table width="100%" border="1" cellpadding="3" cellspacing="0" bordercolor="#003366">
<tr bgcolor="#003366">
<td width="18%"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Day</b></font></td>
<td width="16%"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Time</b></font></td>
<td width="36%"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Programme</b></font></td>
<td width="30%"><font color="#FFFFFF" size="2" face="Arial,Helvetica"><b>Presenter</b></font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">06:00</font></td>
<td><font color="#000000" size="2">The Early Tide</font></td>
<td><font color="#000000" size="2">Mags Tallow</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">09:00</font></td>
<td><font color="#000000" size="2">Tides & Traffic</font></td>
<td><font color="#000000" size="2">Derek Halloway</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">12:00</font></td>
<td><font color="#000000" size="2">Lunchtime Drift</font></td>
<td><font color="#000000" size="2">Suki Fen</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">14:00</font></td>
<td><font color="#000000" size="2">Afternoon Shift</font></td>
<td><font color="#000000" size="2">Tommy Brine</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">17:00</font></td>
<td><font color="#000000" size="2">Saltmarsh Sessions</font></td>
<td><font color="#000000" size="2">Mags Tallow</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">19:00</font></td>
<td><font color="#000000" size="2">Night Crossing</font></td>
<td><font color="#000000" size="2">Suki Fen</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Mon-Fri</font></td>
<td><font color="#000000" size="2">22:00</font></td>
<td><font color="#000000" size="2">Closedown (automated)</font></td>
<td><font color="#000000" size="2">The Saltmarsh Tape</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Saturday</font></td>
<td><font color="#000000" size="2">08:00</font></td>
<td><font color="#000000" size="2">Saturday Jumble</font></td>
<td><font color="#000000" size="2">Tommy Brine</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Saturday</font></td>
<td><font color="#000000" size="2">11:00</font></td>
<td><font color="#000000" size="2">Folk from the Fens</font></td>
<td><font color="#000000" size="2">Derek Halloway</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Saturday</font></td>
<td><font color="#000000" size="2">14:00</font></td>
<td><font color="#000000" size="2">Request Hour</font></td>
<td><font color="#000000" size="2">Mags Tallow</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Saturday</font></td>
<td><font color="#000000" size="2">17:00</font></td>
<td><font color="#000000" size="2">Live from the Caravan</font></td>
<td><font color="#000000" size="2">Tommy Brine & guest</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Saturday</font></td>
<td><font color="#000000" size="2">20:00</font></td>
<td><font color="#000000" size="2">Night Crossing (Sat.)</font></td>
<td><font color="#000000" size="2">Suki Fen</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Sunday</font></td>
<td><font color="#000000" size="2">09:00</font></td>
<td><font color="#000000" size="2">Hymns & Harbour</font></td>
<td><font color="#000000" size="2">Rev. Anne Cley</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Sunday</font></td>
<td><font color="#000000" size="2">11:00</font></td>
<td><font color="#000000" size="2">The Brine Report</font></td>
<td><font color="#000000" size="2">Tommy Brine</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Sunday</font></td>
<td><font color="#000000" size="2">14:00</font></td>
<td><font color="#000000" size="2">Jazz on the Marsh</font></td>
<td><font color="#000000" size="2">Suki Fen</font></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><font color="#000000" size="2">Sunday</font></td>
<td><font color="#000000" size="2">17:00</font></td>
<td><font color="#000000" size="2">Week in Review</font></td>
<td><font color="#000000" size="2">Derek Halloway</font></td>
</tr>
<tr bgcolor="#F2F2F2">
<td><font color="#000000" size="2">Sunday</font></td>
<td><font color="#000000" size="2">20:00</font></td>
<td><font color="#000000" size="2">Closedown</font></td>
<td><font color="#000000" size="2">The Saltmarsh Tape</font></td>
</tr>
</table>
<br>
<a name="presenters"></a>
<font color="#003366" size="4" face="Arial,Helvetica"><b>Meet the presenters</b></font>
<br>
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<tr valign="top">
<td width="50%">
<font color="#000000" size="2" face="Arial,Helvetica"><b>Mags Tallow</b> - Breakfast and late afternoon. Has read the shipping forecast so many times she can do it from memory, and sometimes does.</font>
</td>
<td width="50%">
<font color="#000000" size="2" face="Arial,Helvetica"><b>Derek 'Dex' Halloway</b> - Mid-mornings and Sunday review. Former trawlerman; still calls the studio 'the wheelhouse' and the microphone 'the horn'.</font>
</td>
</tr>
<tr valign="top">
<td width="50%">
<font color="#000000" size="2" face="Arial,Helvetica"><b>Suki Fen</b> - Lunchtimes and nights. Plays records found in charity shops and calls it research; once played a flexi-disc that smelled of chip fat.</font>
</td>
<td width="50%">
<font color="#000000" size="2" face="Arial,Helvetica"><b>Tommy Brine</b> - Afternoons and Saturday jumble. Repairs the transmitter with a teaspoon and a prayer; knows which gull is which.</font>
</td>
</tr>
</table>
<br>
<a name="guestbook"></a>
<font color="#003366" size="4" face="Arial,Helvetica"><b>Guestbook</b></font>
<br>
<font color="#000000" size="2" face="Arial,Helvetica">Sign the book. We read every entry, usually during the songs.</font>
<br><br>
<form action="/cgi-bin/guestbook.pl" method="post">
<table border="0" cellpadding="3" cellspacing="0">
<tr>
<td><font color="#000000" size="2" face="Arial,Helvetica">Name</font></td>
<td><input type="text" name="name" size="28"></td>
</tr>
<tr>
<td><font color="#000000" size="2" face="Arial,Helvetica">Email</font></td>
<td><input type="text" name="email" size="28"></td>
</tr>
<tr>
<td valign="top"><font color="#000000" size="2" face="Arial,Helvetica">Message</font></td>
<td><textarea name="message" rows="4" cols="28"></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 color="#000000" size="2" face="Arial,Helvetica"><b>Recent entries</b></font>
<br>
<table width="100%" border="1" cellpadding="3" cellspacing="0" bordercolor="#CCCCCC">
<tr>
<td bgcolor="#F7F7F7"><font color="#000000" size="2" face="Arial,Helvetica">"Heard you in Cromer on a pocket radio. More shanties please." - Pete, 12 Mar 1998</font></td>
</tr>
<tr>
<td bgcolor="#F7F7F7"><font color="#000000" size="2" face="Arial,Helvetica">"My mum says hello. She is 82 and loves the shipping forecast." - L. Marsh, 10 Mar 1998</font></td>
</tr>
</table>
</td>
<td width="38%" bgcolor="#EEEEEE">
<font color="#003366" size="3" face="Arial,Helvetica"><b>Now on air</b></font>
<br><br>
<script language="JavaScript">
<!--
writeTicker();
//-->
</script>
<br><br>
<a name="counter"></a>
<font color="#003366" size="3" face="Arial,Helvetica"><b>Hit counter</b></font>
<br>
<font color="#000000" size="2" face="Arial,Helvetica">You are visitor number</font>
<br>
<table border="0" cellpadding="2" cellspacing="2" bgcolor="#000000">
<tr>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>0</b></font></td>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>0</b></font></td>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>4</b></font></td>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>8</b></font></td>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>3</b></font></td>
<td bgcolor="#000000"><font color="#00FF00" size="3" face="Courier New,Courier"><b>1</b></font></td>
</tr>
</table>
<br>
<font color="#000000" size="1" face="Arial,Helvetica">Counting since 1 March 1998. Reloads count, we know.</font>
<br><br>
<font color="#003366" size="3" face="Arial,Helvetica"><b>Station notes</b></font>
<br>
<font color="#000000" size="2" face="Arial,Helvetica">
The studio is a caravan. The news desk is a breadboard. The weather is whatever the window says. If the signal drops, hit the set with the flat of your hand; it usually comes back.
</font>
<br><br>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="1" height="1" alt="" border="0">
</td>
</tr>
</table>
<a name="webring"></a>
<table width="100%" border="1" cellpadding="6" cellspacing="0" bordercolor="#003366" bgcolor="#003366">
<tr>
<td align="center">
<font color="#FFFFFF" size="2" face="Arial,Helvetica">Radio Saltmarsh is a member of the <b>Coastal Broadcasters Webring</b></font>
<br><br>
<a href="#"><font color="#FFFF00" size="2" face="Arial,Helvetica"><< Previous</font></a>
<a href="#"><font color="#FFFF00" size="2" face="Arial,Helvetica">Random</font></a>
<a href="#"><font color="#FFFF00" size="2" face="Arial,Helvetica">Next >></font></a>
</td>
</tr>
</table>
<table width="100%" border="0" cellpadding="4" cellspacing="0" bgcolor="#000033">
<tr>
<td align="center">
<font color="#CCCCCC" size="1" face="Arial,Helvetica">
Radio Saltmarsh 102.3 FM - a caravan, a rig, and a view of the sea. © 1998.
</font>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</body>
</html>
width, border, cellpadding, cellspacing, bgcolor, align, valign; <center>; <font>; form controls with size, rows, cols; <textarea>; <blink> in NS4 (IE4 simply shows the text); document.write; setTimeout; basic CSS1 from the <style> block such as colors, fonts, and link colors; onLoad; and the HTML 4.0 Transitional doctype.document.all is IE4-only and document.layers is NS4-only, which is exactly why the code branches. IE4 uses style.left with "px" and CSS overflow/clip:rect(); NS4 uses the layer's .left property and the layer clip object. topmargin/leftmargin are IE4 attributes, while marginwidth/marginheight are the NS4 equivalents, so both are included. bordercolor on tables was an IE/NS-era attribute but support and rendering details varied; if ignored, the table still renders with the default border color. <blink> blinks only in Netscape; IE4 shows static text.data: URI spacer is the main anachronism. Data URIs were specified in RFC 2397 in August 1998, but IE4 and NS4 did not reliably support them in img src; in a real 1998 build that would have been a separate 1x1 transparent GIF file. The page is also being viewed in a modern browser, where document.all is still present, so the IE4 branch is the one that actually runs today. The NS4 branch is written to period APIs but cannot be exercised in a modern browser. I also used ©, which is fine for the period, and avoided all listed modern CSS/JS/HTML5 features. One honest uncertainty: NS4 layer clipping via the clip attribute string is easy to get wrong; I therefore set box.clip.left/top/right/bottom in script, which is the more reliable NS4 API, but I have not verified the exact NS4 clip ordering against a real 1998 browser.