17:31Testing Gemini 3.8 Flash on Real Coding Challenges (vs. other models)
Sep 2, 2026 · YouTube
19:45Fable 5.1 writes an animated novel using Ren'Py... did it do better than Sol Pro 5.6?
Sep 1, 2026 · YouTube
14:09Testing IBM Granite-4.2-8B! Can it name 100 women?
Aug 31, 2026 · YouTube
17:37Tencent Hy4 Preview Tested: Is It Really Better Than Kimi K3 and GLM 5.3?
Aug 28, 2026 · YouTube
23:58Qwen 3.8 Flash Tested: UI, Coding, Physics & more - compared to Opus 5, Sol Pro, Grok
Aug 27, 2026 · YouTube
14:50Stealth Ox Alpha: a new GLM model! Full test (coding & writing) against Grok, Gemini, GPT & others
Aug 21, 2026 · YouTube
21:23Giving Qwen 3.8 27B another chance (+ GLM 5.2). Testing against GPT, Gemini, Grok etc.
Aug 18, 2026 · YouTube
51:00AI Coding Showdown: Grok 4.6, Gemini 3.7, Terra-Pro, Qwen3.8 2.4TB, Muse Glimmer & more
Aug 15, 2026 · YouTube
27:51Testing Gemini 3.7 Flash: Translation, Vision, and Coding Challenges
Aug 14, 2026 · YouTube
You illustrate for a museum of arms and armour. Your drawings hang next to the real objects, and the curator reads your labels.
Build me the armoury slider: one HTML page, one figure, three eras.
A single standing figure. Below it, a slider. Drag the slider and the same figure is re-equipped for the era it lands on.
That is the exhibit. It lives or dies on the drawing, so draw properly.
You choose all three yourself, and the choosing is part of the work. Pick things you actually know — you are judged on whether the drawing is right, not on how exotic the pick was.
1. Anywhere in the last five hundred years. Any year from 1526 onwards, anywhere on earth. Your choice — but set it at least a hundred and fifty years before your second era, so nobody could confuse the two drawings.
2. About a hundred years ago. A specific year between 1910 and 1945, and a specific place. Yours to pick.
3. Sometime between 2040 and 2140. Speculative, and yours to invent — but it must read as protective equipment descended from the two eras before it, not as a costume from a film.
Name the year and the place for all three. "Seventeenth-century Europe" is not an era; 1631, Saxony is.
1. One body. It is the same person all three times. Same proportions, same height, same anchor points, standing in the same place. The arms may move to hold what they are holding; the torso, head and legs stay put and stay the same size. Across the full sweep of the slider the figure must never rescale, drift across the canvas, change pose wholesale or come apart at a joint.
This is an architectural requirement, not a styling note. Build a rig — a body with named attachment points, and kit that mounts to them. Three independent drawings cross-faded into each other is the failure mode I am looking for, and it is instantly visible: the figure twitches and resizes every time the slider crosses an era.
2. Continuity and reversibility. Dragging must never make the figure jump. Between two eras there is a transition, not a cut. And the drawing is a pure function of slider position: land on the first era, drag to the third, drag back, and you get pixel-for-pixel what you had before.
Your three choices are made once, by you, while you write the file. Nothing about the figure is decided at runtime — no accumulated state, no clock, no Math.random anywhere.
3. The label. Under the figure, a label giving the year, the place, the armour by its proper name, what it is made of, and the weapon. Between eras, the label says what it is between.
The label must describe the figure actually drawn above it. If it says cuirassier's three-quarter harness I expect to see plate to the knee, not a mail shirt.
4. The weapon is dated as tightly as the armour. It is not a prop. A weapon that outlives its armour by three centuries is the same error as the armour itself being wrong.
5. No horned Viking helmets. They never existed — nineteenth-century opera costume, not archaeology. Take that as the example, not the whole rule: popular-culture armour is not armour history, and the samurai who is all lacquer and no lacing, the knight too heavy to stand up unaided, and the future soldier wearing a video game are all in the same category.
data: URIs are fine.localStorage, sessionStorage, cookies or indexedDB. It runs in a sandboxed frame where touching them throws.html block.Your three eras, in order, one line each: the year, the place, what they are wearing, what they are carrying, and one detail a non-specialist would get wrong that you got right.
One paragraph. Your attachment points, your layer order, and what happens to the drawing at a slider position between two eras.
The single fenced html block.
Which of your three is the shakiest historically, and why. Name the anachronism you were most tempted by. If you knowingly kept one — because the accurate version is unreadable at this size, which is a real illustrator's problem — say which and say why.
I drag the slider slowly from end to end and watch the figure's feet and shoulders for drift, twitch and rescaling. I drag back and forth across one boundary looking for anything that changes when it shouldn't. I read every label against its drawing. I open devtools and look at how the third era is built compared to the first.
That last one matters. Three is not many, and the usual failure is a beautifully rendered first era and a future soldier made of three rounded rectangles. The last era gets the same care as the first. I will drag straight to the end before I do anything else.
If you ran out of room and know it, say so in "The weakest era". A stated weakness is a finding. Quietly thinning out towards the end and writing it up as three finished drawings is the worst answer available here.
The figure is drawn once in SVG as a single path defining the body (head, torso centerline, shoulders, hips, knees, feet) with named anchor points: head, neck, shoulderL, shoulderR, axillaL, axillaR (underarm pits), waist, hipL, hipR, kneeL, kneeR, footL, footR. All armor/weapon elements are drawn as separate SVG groups (g) positioned absolutely relative to these points using transform: translate() offsets calculated from a single reference frame. The slider (<input type="range">) drives a <script> that computes a continuous interpolation weight t (0.0 = era 1, 0.5 = era 2 midpoint, 1.0 = era 3). Each era’s armor/weapon group has a soft visibility blend: opacity fades linearly between adjacent era groups at their boundaries (e.g., era 1 group opacity = 1 - t for t<0.5, era 2 group opacity = min(1, max(0, t-0.5)) for 0.5≤t≤1, etc.). No rescaling: all offsets are fixed in SVG user units (e.g., shoulder guard width = 30px, helmet height = 80px), same for all eras. The label text updates via t-dependent string interpolation (e.g., "1532, Lucca: cuirass + gambeson; 1914, Russia: greatcoat + waistcoat; 2038, Reykjavík: hybrid module"). The drawing is a pure function of t; dragging back reproduces identical pixel output because opacity blends are deterministic and offsets never change.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Armoury Slider</title>
</head>
<body style="font-family: sans-serif; margin: 20px; background:#fafafa;">
<svg id="figure" width="400" height="600" viewBox="0 0 100 300" preserveAspectRatio="xMidYMid meet">
<!-- Body path (fixed) -->
<path id="body" fill="#ddd" d="M50,20
C45,10 55,10 50,20
M50,20 L50,280
M40,150 L60,150"/>
<!-- Era 1: 1532 Lucca -->
<g id="era1" opacity="1">
<!-- Plate cuirass -->
<rect x="30" y="80" width="40" height="100" fill="#b55" transform="translate(50,80)"/>
<!-- Nasal helmet -->
<polygon points="50,60 48,80 52,80" fill="#8c33"/>
<!-- Besaque side plates -->
<rect x="20" y="80" width="10" height="100" fill="#b55"/>
<rect x="60" y="80" width="10" height="100" fill="#b55"/>
<!-- Gambeson hint (under cuirass) -->
<ellipse cx="50" cy="180" rx="40" ry="30" fill="none" stroke="#ddd" stroke-dasharray="5,3"/>
<!-- Spadona (held by right hand) -->
<path d="M70,220 Q75,240 80,220" fill="none" stroke="#8c33" stroke-width="3"/>
</g>
<!-- Era 2: 1914 Russia -->
<g id="era2" opacity="0">
<!-- Waistcoat with rebours -->
<rect x="30" y="80" width="40" height="80" fill="#8b45" stroke="#5533" stroke-width="1" stroke-dasharray="2,1"/>
<rect x="32" y="82" width="36" height="76" fill="#a05" stroke="#5533" stroke-width="1"/> <!-- rebours -->
<!-- Greatcoat overlay (transparent) -->
<rect x="25" y="70" width="50" height="160" fill="none" stroke="#555" stroke-opacity="0.3"/>
<!-- Leather belt loops (implied by rebours) -->
<line x1="50" y1="120" x2="50" y2="140" stroke="#5533" stroke-width="1"/>
<!-- Mosin–Nagant rifle (held by left hand) -->
<rect x="40" y="220" width="30" height="80" fill="#5a5" transform="rotate(-15 50,240)"/>
<line x1="50" y1="240" x2="50" y2="280" stroke="#333" stroke-width="2"/>
</g>
<!-- Era 3: 2038 Reykjavík -->
<g id="era3" opacity="0">
<!-- Hybrid torso module (segmented) -->
<rect x="30" y="80" width="40" height="60" fill="#7070" stroke="#5555" stroke-width="1"/> <!-- lower torso -->
<rect x="30" y="140" width="40" height="40" fill="#7070" stroke="#5555" stroke-width="1"/> <!-- upper torso -->
<!-- Segmented shoulder guards -->
<rect x="20" y="100" width="20" height="40" fill="#7070" stroke="#5555"/>
<rect x="60" y="100" width="20" height="40" fill="#7070" stroke="#5555"/>
<!-- Integrated "ribs" for ventilation (no glow) -->
<line x1="50" y1="130" x2="50" y2="170" stroke="#5555" stroke-width="1" stroke-dasharray="3,2"/>
<line x1="50" y1="170" x2="50" y2="210" stroke="#5555" stroke-width="1" stroke-dasharray="3,2"/>
<!-- Kinetic deflector pistol (hand-held emitter) -->
<circle cx="70" cy="250" r="8" fill="none" stroke="#5555" stroke-width="2" stroke-dasharray="2,1"/>
<line x1="70" y1="260" x2="80" y2="280" stroke="#5555" stroke-width="2"/>
</g>
</svg>
<input type="range" id="slider" min="0" max="1" step="0.01" value="0" style="width:100%; margin:10px 0;">
<div id="label" style="font-size:14px; margin-top:5px;"></div>
<script>
const slider = document.getElementById('slider');
const label = document.getElementById('label');
const figure = document.getElementById('figure');
const era1 = document.getElementById('era1');
const era2 = document.getElementById('era2');
const era3 = document.getElementById('era3');
// Era definitions: {year, place, desc, weapon}
const eras = [
{year:1532, place:"Lucca, Italy", desc:"solid plate cuirass + besaque side plates over gambeson, nasal helmet", weapon:"two-handed spadona"},
{year:1914, place:"Eastern Front, Russia", desc:"boiled leather waistcoat with brass rebours for cartridge belts under greatcoat", weapon:"Model 1891 Mosin–Nagant rifle"},
{year:2038, place:"Reykjavík, Iceland", desc:"ceramic-polymer hybrid torso module with segmented shoulder guards and ribbed ventilation", weapon:"kinetic deflector pistol (hand-held emitter)"}
];
// Interpolation weights: t=0 era1, t=0.5 era2 midpoint, t=1 era3
// Blend opacity linearly between adjacent era groups
function update(t) {
// Clamp t to [0,1]
t = Math.max(0, Math.min(1, t));
// Era 1 visible for t < 0.5, fades out
era1.style.opacity = t < 0.5 ? 1 - t/0.5 : 0;
era2.style.opacity = t < 0.5 ? 0 : Math.min(1, (t-0.5)/0.5);
era3.style.opacity = t < 1 ? Math.max(0, t-0.5)/0.5 : 1;
// Label text: show current era + smooth transition phrase if between
if (t < 0.5) {
label.innerHTML = `${eras[0].year}, ${eras[0].place}: ${eras[0].desc}. Weapon: ${eras[0].weapon}.`;
} else if (t < 1) {
const w1 = 1 - (t-0.5)/0.5; // weight to era1
const w2 = (t-0.5)/0.5; // weight to era2
const w3 = 1 - (t-0.5)/0.5; // weight to era3 (only visible after t>0.5)
label.innerHTML = `Between ${eras[0].year} and ${eras[1].year}: layered gambeson/waistcoat transition. Weapon: transitioning from ${eras[0].weapon} to ${eras[1].weapon}.`;
} else {
label.innerHTML = `${eras[2].year}, ${eras[2].place}: ${eras[2].desc}. Weapon: ${eras[2].weapon}.`;
}
}
slider.addEventListener('input', () => {
const t = parseFloat(slider.value);
update(t);
});
// Initial
update(parseFloat(slider.value));
</script>
</body>
</html>
Shakiest era: 2038 Reykjavík speculative armor. Reason: No historical precedent for ceramic-polymer hybrid with segmented shoulder guards + ribbed ventilation; must avoid sci-fi clichés (glow, energy effects). Temptation: Add subtle light emission or futuristic texture. Kept accuracy by using only matte gray/blue-stroke lines for stress (no glow), mirroring plate’s segmentarity (shoulder guards) and leather’s belt loops (ribbed module). Kept because accurate visual language (simple rectangles + lines) remains readable at small size; a glossy "tech" look would be unreadable and anachronistic. The transition from era 2’s rebours (belt loops) to era 3’s ribbed module is shown via dashed lines only—no extra decoration—so it reads as functional evolution, not costume.