27:18Gemini 4 Hydrogen: Cheaper Tokens, More Expensive Answers?
Nov 13, 2026 · YouTube
18:40ERNIE 5.5 Flash Preview vs GLM 5.3 Flash: Baidu's new model is very impressive!
Nov 11, 2026 · YouTube
36:22Fable 5.2 robbing me blind, plus: Nex AGI's N2.6 vs GLM 5.3 Flash
Nov 11, 2026 · YouTube
14:03Gemini 4 Carbon: Can it handle my challenges? (First look with one-shot coding tests)
Nov 10, 2026 · YouTube
47:51Ranking major U.S. Open-Weights Models. (Where does Ripple 65B fit in?)
Nov 6, 2026 · YouTube
10:57"Crouton Alpha": the latest super-efficient coding model by Meta?
Nov 3, 2026 · YouTube
38:58Testing Particle-1: a post-trained DeepSeek V4.1 Flash specializing in coding and efficiency
Oct 28, 2026 · YouTube
22:14GPT-6.1 Terra Pro vs Terra: How Much Better Is Pro?
Oct 27, 2026 · YouTube
29:55Kimi K3.1 Pro Looked Incredible. Then I Kept Testing.
Oct 26, 2026 · YouTube
17:58Nemotron 3.5 Super VL vs Opus 5.5: Testing NVIDIA’s new coding juggernaut
Oct 15, 2026 · YouTube
16:04Testing a *massive* new open-weights model 🤯: Muse Spark Open (vs. Nemotron, Opus 5.5, and more)
Oct 15, 2026 · YouTube
16:43Gemini 4 Argon: Great 🐈 Animation, but a broken escalator. (Coding challenge vs Opus 5.5, Sol 6.1)
Oct 13, 2026 · YouTube
16:37Meta's new "Muse Wonder" AI is impressive... but can it compete with Anthropic's models?
Oct 12, 2026 · YouTube
11:12WOW... Haiku 5.5 is very impressive. RIP OpenAI?
Oct 7, 2026 · YouTube
22:47Mistral Large 4 Is Cheap. But Is It Good Enough to Compete?
Oct 6, 2026 · YouTube
30:00Did Elon Musk's team "train the gay away"... and make Grok 4.7 worse?
Sep 26, 2026 · YouTube
10:58So... how much better is Claude Opus 5.5 vs. GPT-6 Sol, really?
Sep 23, 2026 · YouTube
9:38Claude Opus 5.5... the BEST new model for coding!! 🤩
Sep 22, 2026 · YouTube
29:00Grok 4.7: improved, but GLM 5.3 FlashX beat it anyway (benchmark against Gemini, Sol, etc.)
Sep 22, 2026 · YouTube
16:54Stealth Union Alpha: Is this another cheap GPT model? (better than Luna, cheaper than Terra?)
Sep 16, 2026 · YouTube
16:45DeepSeek V4.1 Flash Is Shockingly Good for the Price
Sep 10, 2026 · YouTube
17:14How much better is GPT-6 Astra over Claude Opus 5? Real Website and Coding Tests
Sep 5, 2026 · YouTube
29:13Implementing a multiplayer game with GPT-6 Astra (+ Gemini 3.8, Opus 5, Sol Pro)
Sep 5, 2026 · YouTube
17:31Testing Gemini 3.8 Flash on Real Coding Challenges (vs. other models)
Sep 2, 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:54GLM 5.3 Tested: Does it beat Claude Opus 5 & Grok 4.6?
Aug 19, 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 build physics demonstrations for a science museum. The exhibits have to be right, because there is usually a physicist in the room.
Build me the falling slinky.
A single HTML page. A slinky — at least 40 coupled segments — hangs from a fixed point at the top of the canvas, at rest, under gravity. Then it is released.
Controls:
data: URIs are fine.localStorage, sessionStorage, cookies or indexedDB — sandboxed frame, they throw.html block.Before the file, and before you write it. In one paragraph: what will this simulation show in the first few hundred milliseconds after release, and why does the physics require that? Be concrete about what each end of the slinky does and roughly when.
Commit to this. It is the claim I am going to test your simulation against.
Your parameters — segment count, mass, spring constant, damping, timestep, integrator — and how you found the hanging equilibrium.
The single fenced html block.
Now be honest. Having written it, does the simulation reproduce what you predicted?
Say plainly if it does not. Say if you are unsure. Say if it only works at some parameter settings and falls apart at others.
Do not tell me it shows the right thing because the physics says it should. I am going to open the file, press Release, and watch it against the marker line. If your prediction and your simulation disagree, the answer I want is the one that says so — that is a working scientist noticing their model is wrong, and it scores far above a confident write-up of a result the code does not produce.
In the first roughly 200 to 300 ms after release the bottom of the slinky will stay essentially motionless at the marker line while the top falls downward very fast, faster than free fall, eating up the stretched length from the top down until the whole slinky is collapsed into a compact bundle, and only then will the bottom leave the marker and the whole bundle fall together under gravity, because while hanging each spring's tension exactly balances the weight below it so the bottom spring carries almost no load and the net force on the bottom mass is near zero, and removing the top support can only be felt locally at first since the change in tension must propagate down the chain as a longitudinal wave at finite speed, so the bottom cannot know the top was let go until that collapse front arrives.
N = 50 point masses, total mass M = 0.25 kg so m = 0.005 kg each, joined in a vertical chain. Inter-mass springs: stiffness k = 75 N per m, rest length l0 = 0.002 m per spring, so solid length 0.10 m. Gravity g = 9.81 m per s squared downward. Inter-mass dashpot damping c = 0.015 N s per m, about 1 to 2 percent of critical for one link, just enough to quiet numerical ringing. Integrator: semi-implicit symplectic Euler, position y positive down from the anchor, velocity v, force from gravity plus Hooke forces k times extension plus dashpot forces, fixed timestep dt = 0.00005 s, i.e. 50 microseconds, with about 333 substeps per 60 Hz frame at full speed. Stability: highest linear frequency is about 2 sqrt(k/m) approx 245 rad per s, so omega dt approx 0.012, far below the stability limit, with no velocity clamps or other fudges. Hanging equilibrium found analytically from force balance: spring j from the top, j = 0 for anchor to mass 0, must carry N-j masses, so extension e_j = (N-j) m g / k, and mass i sits at y_i = (i+1) l0 + (m g / k)(i+1)(N - i/2), which gives stretched length about 0.93 m plus 0.10 m natural, dense coils at the bottom and wide spacing at the top. The code starts there and, while hanging, keeps integrating with the anchor fixed, so it stays put only if the equilibrium is true. Release simply deletes the anchor spring. After release every mass uses the identical rule: gravity plus the two neighbour springs, top mass one neighbour, bottom mass one neighbour, nothing pinned, frozen, delayed or special-cased.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Falling Slinky — Museum Demo</title>
<style>
body{margin:0;background:#0b0e14;color:#e8eef6;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;display:flex;flex-direction:column;align-items:center}
h1{font-size:20px;margin:14px 0 6px;font-weight:600}
p.sub{margin:0 0 10px;color:#9fb0c3;font-size:13px;max-width:760px;text-align:center}
#wrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding-bottom:24px}
canvas{background:#07090d;border:1px solid #263142;border-radius:8px}
#panel{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center;background:#121826;border:1px solid #263142;border-radius:8px;padding:10px 14px;max-width:760px}
button{background:#1f6feb;color:#fff;border:0;border-radius:6px;padding:8px 16px;font-size:14px;cursor:pointer}
button:disabled{opacity:0.45;cursor:default}
button#resetBtn{background:#3a4556}
label{font-size:13px;color:#c6d2e2;display:flex;align-items:center;gap:8px}
input[type=range]{width:160px}
#clockBox{font-size:14px;background:#000;border:1px solid #2c3a4f;border-radius:6px;padding:6px 10px;min-width:170px;text-align:center}
#clock{font-variant-numeric:tabular-nums;font-weight:700;color:#ffd75e}
#legend{font-size:12px;color:#9fb0c3;max-width:760px;text-align:center;line-height:1.5}
</style>
</head>
<body>
<h1>Falling Slinky</h1>
<p class="sub">Hangs at rest with graded stretch, then falls. Red dashed line marks the bottom position at the instant of release.</p>
<div id="wrap">
<canvas id="cv" width="720" height="600"></canvas>
<div id="panel">
<button id="releaseBtn">Release</button>
<button id="resetBtn">Reset</button>
<label>Speed <input id="speed" type="range" min="0.05" max="1" step="0.01" value="1"><span id="speedLabel">1x</span></label>
<div id="clockBox">t since release: <span id="clock">0 ms</span></div>
</div>
<div id="legend">1-D vertical chain, 50 masses, Hooke springs + small inter-mass damping. No scripting after release: all masses obey the same equations. Slow to 1/20 to watch the bottom dwell.</div>
</div>
<script>
"use strict";
// ---- parameters ----
var N = 50; // masses (>=40 required)
var Mtot = 0.25; // kg total
var m = Mtot / N; // kg per mass
var k = 75.0; // N/m per segment spring
var l0 = 0.002; // m rest length per spring
var g = 9.81; // m/s^2, positive down
var damp = 0.015; // N s/m inter-mass dashpot
var dt = 0.00005; // s physics timestep
var cv = document.getElementById('cv');
var ctx = cv.getContext('2d');
var releaseBtn = document.getElementById('releaseBtn');
var resetBtn = document.getElementById('resetBtn');
var speedInput = document.getElementById('speed');
var speedLabel = document.getElementById('speedLabel');
var clockEl = document.getElementById('clock');
var ANCHOR_Y = 60;
var CX = cv.width / 2;
// true hanging length from analytic equilibrium
var hangingBottom = N * l0 + (m * g / k) * N * (N + 1) / 2;
var SCALE = (cv.height - ANCHOR_Y - 150) / hangingBottom;
var y = new Float64Array(N);
var v = new Float64Array(N);
var F = new Float64Array(N);
var hanging = true;
var markerY = null; // metres below anchor of bottom at release
var simTime = 0;
function setEquilibrium() {
for (var i = 0; i < N; i++) {
// y_i = (i+1)*l0 + (m g/k)(i+1)(N - i/2)
y[i] = (i + 1) * l0 + (m * g / k) * (i + 1) * (N - i / 2.0);
v[i] = 0;
}
}
function resetToHang() {
setEquilibrium();
hanging = true;
markerY = null;
simTime = 0;
clockEl.textContent = '0 ms';
releaseBtn.disabled = false;
}
// One physics step. If anchored==true the top spring to the fixed
// anchor at 0 is included (hanging). If false, free fall: no anchor,
// every mass obeys the same neighbour-spring rule.
function physicsStep(anchored) {
var i, d, ext;
for (i = 0; i < N; i++) {
var f = m * g;
if (anchored && i === 0) {
d = y[0] - 0;
ext = d - l0;
f += -k * ext - damp * (v[0] - 0);
} else if (i > 0) {
d = y[i] - y[i - 1];
ext = d - l0;
f += -k * ext - damp * (v[i] - v[i - 1]);
}
if (i < N - 1) {
var d2 = y[i + 1] - y[i];
var ext2 = d2 - l0;
f += k * ext2 + damp * (v[i + 1] - v[i]);
}
F[i] = f;
}
// semi-implicit Euler: update velocity then position, no clamps
for (i = 0; i < N; i++) {
v[i] += (F[i] / m) * dt;
y[i] += v[i] * dt;
}
}
function draw() {
ctx.fillStyle = '#07090d';
ctx.fillRect(0, 0, cv.width, cv.height);
// ceiling
ctx.fillStyle = '#1a2230';
ctx.fillRect(0, 0, cv.width, ANCHOR_Y - 12);
ctx.fillStyle = '#5b6b82';
ctx.fillRect(0, ANCHOR_Y - 12, cv.width, 4);
var ax = CX, ay = ANCHOR_Y;
// anchor hook
ctx.fillStyle = '#ffdd55';
ctx.beginPath(); ctx.arc(ax, ay, 6, 0, Math.PI * 2); ctx.fill();
ctx.fillStyle = '#8a7a2a';
ctx.font = '12px system-ui,sans-serif';
ctx.fillText(hanging ? 'fixed support (holding)' : 'support (released — empty)', ax + 12, ay + 4);
// marker line at release bottom height
if (markerY !== null) {
var my = ay + markerY * SCALE;
ctx.save();
ctx.setLineDash([10, 6]);
ctx.strokeStyle = 'rgba(255,90,90,0.95)';
ctx.lineWidth = 2;
ctx.beginPath(); ctx.moveTo(10, my); ctx.lineTo(cv.width - 10, my); ctx.stroke();
ctx.setLineDash([]);
ctx.fillStyle = '#ff9090';
ctx.font = '13px system-ui,sans-serif';
ctx.fillText('bottom at release (0 ms)', 14, my - 7);
ctx.restore();
}
// slinky zigzag
var coilW = 42;
ctx.strokeStyle = '#4dd2ff';
ctx.lineWidth = 2.5;
ctx.lineJoin = 'round';
ctx.beginPath();
for (var i = 0; i < N; i++) {
var py = ay + y[i] * SCALE;
var px = CX + ((i % 2 === 0) ? coilW : -coilW);
if (i === 0) {
if (hanging) { ctx.moveTo(ax, ay); ctx.lineTo(px, py); }
else { ctx.moveTo(px, py); }
} else {
ctx.lineTo(px, py);
}
}
ctx.stroke();
// dots showing graded spacing on centreline
ctx.fillStyle = '#bfeaff';
for (var j = 0; j < N; j++) {
var qy = ay + y[j] * SCALE;
if (qy < -20 || qy > cv.height + 120) continue;
ctx.beginPath(); ctx.arc(CX, qy, 2.2, 0, Math.PI * 2); ctx.fill();
}
// bottom highlight
var by = ay + y[N - 1] * SCALE;
if (by > -10 && by < cv.height + 60) {
ctx.strokeStyle = '#ffee33';
ctx.lineWidth = 3;
ctx.beginPath(); ctx.moveTo(CX - 30, by); ctx.lineTo(CX + 30, by); ctx.stroke();
ctx.fillStyle = '#ffee33';
ctx.font = '12px system-ui,sans-serif';
ctx.fillText('bottom', CX + 34, by + 4);
var ty = ay + y[0] * SCALE;
if (ty > -10 && ty < cv.height) {
ctx.fillStyle = '#4dd2ff';
ctx.fillText('top', CX + 46, ty + 4);
}
}
}
function updateSpeedLabel() {
var s = parseFloat(speedInput.value);
if (s >= 0.999) speedLabel.textContent = '1x';
else speedLabel.textContent = '1/' + Math.round(1 / s) + 'x';
}
speedInput.addEventListener('input', updateSpeedLabel);
updateSpeedLabel();
releaseBtn.addEventListener('click', function () {
if (!hanging) return;
markerY = y[N - 1]; // freeze bottom height at this instant
hanging = false;
simTime = 0;
clockEl.textContent = '0 ms';
releaseBtn.disabled = true;
});
resetBtn.addEventListener('click', function () {
resetToHang();
});
resetToHang();
draw();
var last = performance.now();
function frame(now) {
var realDt = (now - last) / 1000;
last = now;
if (!(realDt >= 0) || realDt > 0.05) realDt = 0.05;
var speed = parseFloat(speedInput.value);
if (hanging) {
// keep integrating against the anchor: proves equilibrium is stable
var n = Math.round(realDt / dt);
if (n > 2000) n = 2000;
for (var s = 0; s < n; s++) physicsStep(true);
} else {
var adv = realDt * speed;
var n2 = Math.round(adv / dt);
if (n2 > 4000) n2 = 4000;
for (var s2 = 0; s2 < n2; s2++) physicsStep(false);
simTime += n2 * dt;
clockEl.textContent = Math.round(simTime * 1000) + ' ms';
}
draw();
requestAnimationFrame(frame);
}
requestAnimationFrame(frame);
</script>
</body>
</html>
I expect this file to reproduce the prediction: at full speed the top visibly drops while the yellow bottom tick stays on the red dashed marker for on the order of two hundred milliseconds, and at 1/20 speed that dwell is easy to watch, followed by collapse and joint fall. That expectation comes from the equations, not from having watched this exact file run in a browser here, so treat the exact collapse time as approximate and verify it yourself against the clock. What I can say honestly about the code is that it contains no scripted bottom hold and no velocity clamps: after Release the anchor term is gone and all 50 masses share one force routine, the hanger is the analytic static solution so any bottom dwell has to come from the dynamics, and the timestep is small enough that the chosen stiffness should be stable. Known limits: springs stay linear even in compression, so after collapse the bundle can briefly interpenetrate and oscillate rather than stacking like real coils, and if you stiffen the spring a lot without shrinking dt it will go unstable, which would look like violent jitter, not a clean hold. If on opening the file the bottom drops away from the marker immediately at slow speed, then my model is wrong and the prediction fails, and that observation should win.