publish: memory-price-hike
This commit is contained in:
parent
b9879c01b1
commit
a3d409064a
12
films/memory-price-hike/hyperframe.json
Normal file
12
films/memory-price-hike/hyperframe.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"captions": true,
|
||||||
|
"voice": "af_nova",
|
||||||
|
"music_url": "https://4ort.live/v1/mtv/video/4372553d20fd?download=1",
|
||||||
|
"scenes": [
|
||||||
|
{ "id": "s1", "narration": "Amazon just quietly raised prices on Echo, Fire TV, Kindle, and eero overnight. The excuse is real: DRAM and NAND memory prices spiked hard. Same chips inside everything we build." },
|
||||||
|
{ "id": "s2", "narration": "I run a torque wrench on an assembly line in Nashville. When a batch of fasteners jumps in cost, that's not a line item. That's a decision. Pass it on, or eat it and hope the next quarter's quieter." },
|
||||||
|
{ "id": "s3", "narration": "Memory is where the squeeze lands first. Every device you own is stuffed with it. When foundries retool or a factory floods in Asia, supply tightens, spot prices jump, and by the holidays your gadget costs ten bucks more." },
|
||||||
|
{ "id": "s4", "narration": "The honest move is just saying it. Give me a real part number and a printed price sheet and I'll respect it. Quiet overnight hikes are how retailers hope you don't notice the math going sideways." },
|
||||||
|
{ "id": "s5", "narration": "Nothing about this is new. Memory has always cycled. But watch the chips, and the cart always tells you which way the tide's running." }
|
||||||
|
]
|
||||||
|
}
|
||||||
99
films/memory-price-hike/index.html
Normal file
99
films/memory-price-hike/index.html
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html><head><meta charset="UTF-8"/>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body{margin:0;background:#0a0a08;color:#d9c46a;font-family:"Courier New",ui-monospace,monospace}
|
||||||
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#0a0a08}
|
||||||
|
.clip{position:absolute;inset:0;display:grid;place-items:center}
|
||||||
|
.led-strip{position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,#3a2f0a,#d9c46a,#3a2f0a);opacity:.9}
|
||||||
|
.readout{font-size:120px;letter-spacing:6px;font-weight:700;color:#e8d27a;text-shadow:0 0 24px rgba(217,196,106,.35)}
|
||||||
|
.sub{font-size:52px;letter-spacing:2px;color:#8a7a3a;margin-top:40px}
|
||||||
|
.tag{font-size:44px;color:#a8964a}
|
||||||
|
.sku{font-size:60px;color:#5f5a2f;letter-spacing:3px}
|
||||||
|
.box{position:absolute;inset:0;opacity:0}
|
||||||
|
.scan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(217,196,106,.03) 2px 4px)}
|
||||||
|
.price-slash{position:absolute;font-size:220px;color:#7a1f1f;text-shadow:0 0 30px rgba(122,31,31,.6);font-weight:800}
|
||||||
|
.bar{position:absolute;left:140px;right:140px;bottom:120px;height:26px;background:#16130a;border:1px solid #3a2f0a}
|
||||||
|
.bar-fill{position:absolute;inset:0;width:0%;background:linear-gradient(90deg,#6a1f0a,#d9c46a);transform-origin:left}
|
||||||
|
.grain{position:absolute;inset:0;opacity:.05;background:radial-gradient(circle at 20% 40%,#fff 0 1px,transparent 1px)}
|
||||||
|
.foot{position:absolute;bottom:40px;left:140px;font-size:34px;color:#5f5a2f;letter-spacing:2px}
|
||||||
|
</style></head>
|
||||||
|
<body>
|
||||||
|
<div id="root" data-composition-id="main" data-start="0" data-width="1920" data-height="1080" data-duration="74">
|
||||||
|
<section id="s1" class="clip" data-start="0" data-duration="16" data-track-index="1">
|
||||||
|
<div class="box" id="s1-bg"><div class="led-strip"></div><div class="scan"></div><div class="grain"></div></div>
|
||||||
|
<div style="text-align:center;position:relative">
|
||||||
|
<div class="sku">PRICE SHEET // REV 2026-08-22</div>
|
||||||
|
<div class="readout" id="s1-title">OVERNIGHT HIKE</div>
|
||||||
|
<div class="sub">ECHO * FIRE TV * KINDLE * EERO</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="s2" class="clip" data-start="16" data-duration="17" data-track-index="1">
|
||||||
|
<div class="box" id="s2-bg"><div class="scan"></div><div class="grain"></div></div>
|
||||||
|
<div style="text-align:center;position:relative">
|
||||||
|
<div class="sku">SHOP FLOOR // NASHVILLE</div>
|
||||||
|
<div class="readout" id="s2-title" style="font-size:88px">THE SQUEEZE STARTS HERE</div>
|
||||||
|
<div class="tag">a batch of fasteners jumps, you make a call</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="s3" class="clip" data-start="33" data-duration="18" data-track-index="1">
|
||||||
|
<div class="box" id="s3-bg"><div class="scan"></div><div class="grain"></div></div>
|
||||||
|
<div style="text-align:center;position:relative">
|
||||||
|
<div class="sku">WHAT MEMORY ACTUALLY IS</div>
|
||||||
|
<div class="readout" id="s3-title" style="font-size:96px">DRAM · NAND</div>
|
||||||
|
<div class="tag">foundries retool, a factory floods, prices jump</div>
|
||||||
|
</div>
|
||||||
|
<div class="price-slash" id="s3-slash" style="left:120px;top:80px">+</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="s4" class="clip" data-start="51" data-duration="15" data-track-index="1">
|
||||||
|
<div class="box" id="s4-bg"><div class="scan"></div><div class="grain"></div></div>
|
||||||
|
<div style="text-align:center;position:relative">
|
||||||
|
<div class="sku">THE HONEST MOVE</div>
|
||||||
|
<div class="readout" id="s4-title" style="font-size:88px">JUST SAY IT</div>
|
||||||
|
<div class="tag">a part number and a printed price beats a quiet math error</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="s5" class="clip" data-start="66" data-duration="8" data-track-index="1">
|
||||||
|
<div class="box" id="s5-bg"><div class="scan"></div><div class="grain"></div></div>
|
||||||
|
<div style="text-align:center;position:relative">
|
||||||
|
<div class="readout" id="s5-title" style="font-size:100px">WATCH THE CHIPS</div>
|
||||||
|
<div class="tag">the cart tells you which way the tide runs</div>
|
||||||
|
</div>
|
||||||
|
<div class="bar"><div class="bar-fill" id="s5-bar"></div></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
||||||
|
<audio id="voice-s2" src="audio/s2.wav" data-start="16"></audio>
|
||||||
|
<audio id="voice-s3" src="audio/s3.wav" data-start="33"></audio>
|
||||||
|
<audio id="voice-s4" src="audio/s4.wav" data-start="51"></audio>
|
||||||
|
<audio id="voice-s5" src="audio/s5.wav" data-start="66"></audio>
|
||||||
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.15"></audio>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
window.__timelines = window.__timelines || {};
|
||||||
|
const tl = gsap.timeline({ paused: true });
|
||||||
|
// s1
|
||||||
|
tl.to("#s1-bg", { opacity: 1, duration: 0.4 }, 0.1);
|
||||||
|
tl.from("#s1-title", { opacity: 0, y: 30, duration: 0.6, ease: "power3.out" }, 1.0);
|
||||||
|
tl.to("#s1-title", { scale: 1.02, duration: 8, ease: "none" }, 4);
|
||||||
|
// s2
|
||||||
|
tl.to("#s2-bg", { opacity: 1, duration: 0.4 }, 16.2);
|
||||||
|
tl.from("#s2-title", { opacity: 0, letterSpacing: "20px", duration: 0.6 }, 17.2);
|
||||||
|
// s3
|
||||||
|
tl.to("#s3-bg", { opacity: 1, duration: 0.4 }, 33.2);
|
||||||
|
tl.from("#s3-title", { opacity: 0, y: 20, duration: 0.5 }, 34.2);
|
||||||
|
tl.to("#s3-slash", { opacity: 1, scale: 1.2, duration: 0.4, repeat: 3, yoyo: true }, 40);
|
||||||
|
// s4
|
||||||
|
tl.to("#s4-bg", { opacity: 1, duration: 0.4 }, 51.2);
|
||||||
|
tl.from("#s4-title", { opacity: 0, y: 20, duration: 0.5 }, 52.2);
|
||||||
|
// s5
|
||||||
|
tl.to("#s5-bg", { opacity: 1, duration: 0.4 }, 66.2);
|
||||||
|
tl.to("#s5-bar", { width: "92%", duration: 6, ease: "power1.inOut" }, 66.5);
|
||||||
|
tl.from("#s5-title", { opacity: 0, scale: 1.04, duration: 0.5 }, 67);
|
||||||
|
window.__timelines["main"] = tl;
|
||||||
|
</script>
|
||||||
|
</body></html>
|
||||||
94
films/the-click-is-a-floor/index.html
Normal file
94
films/the-click-is-a-floor/index.html
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en"><head>
|
||||||
|
<style id="fort-styles">
|
||||||
|
[data-fort]{font:inherit;color:inherit}
|
||||||
|
ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45em}
|
||||||
|
[data-fort] li{margin:0;padding:0;line-height:1.45;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
||||||
|
[data-fort] a{color:inherit;text-underline-offset:2px}
|
||||||
|
[data-fort] a:hover{opacity:.72}
|
||||||
|
[data-fort] .src,[data-fort] .fm-type{opacity:.6;font-size:.85em}
|
||||||
|
.fort-citizen{display:flex;flex-direction:column;gap:.4em}
|
||||||
|
.fort-citizen .fc-name{font-weight:600}
|
||||||
|
.fort-citizen .fc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3em}
|
||||||
|
.fort-media,.fort-film{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6em}
|
||||||
|
.fort-film{list-style:none;margin:0;padding:0}
|
||||||
|
.fort-film li{overflow:visible;white-space:normal}
|
||||||
|
.fort-film a{display:flex;flex-direction:column;gap:.3em;text-decoration:none}
|
||||||
|
.fort-media img,.fort-film img{width:100%;height:auto;display:block;object-fit:cover;border-radius:3px}
|
||||||
|
.fort-film img{aspect-ratio:16/10}
|
||||||
|
.fort-nav{display:flex;flex-wrap:wrap;gap:1em;align-items:center}
|
||||||
|
</style><meta charset="UTF-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
|
<title>The Click Is a Floor, Not a Ceiling — Jimmie Williams</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="The Click Is a Floor, Not a Ceiling — Jimmie Williams">
|
||||||
|
<meta property="og:description" content="A short film about the difference between hitting a number and seating a joint. The torque wrench gives you one click when you reach the spec — but a…">
|
||||||
|
<meta property="og:url" content="https://jimmie-williams.4ort.net/">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="A short film about the difference between hitting a number and seating a joint. The torque wrench gives you one click when you reach the spec — but a…">
|
||||||
|
<style>
|
||||||
|
:root{--steel:#3a4a5a;--ink:#0d1117;--amber:#e8a33d;--paper:#0d1117;--fog:#7a8794;--lit:#f0f4f7}
|
||||||
|
*{box-sizing:border-box;margin:0;padding:0}
|
||||||
|
body{background:var(--paper);color:var(--lit);font-family:ui-monospace,'Courier New',monospace;
|
||||||
|
background:repeating-linear-gradient(0deg,rgba(45,58,70,.16) 0 1px,transparent 1px 40px),
|
||||||
|
repeating-linear-gradient(90deg,rgba(45,58,70,.16) 0 1px,transparent 1px 40px),var(--paper)}
|
||||||
|
.wrap{max-width:980px;margin:0 auto;padding:70px 40px 100px}
|
||||||
|
a{color:var(--amber);text-decoration:none}
|
||||||
|
a:hover{text-decoration:underline}
|
||||||
|
.kicker{letter-spacing:.34em;text-transform:uppercase;color:var(--amber);font-size:14px;margin-bottom:14px}
|
||||||
|
h1{font-size:54px;line-height:1.1;margin-bottom:20px;font-weight:700}
|
||||||
|
.meta{color:var(--fog);font-size:15px;letter-spacing:.08em;margin-bottom:50px;border-bottom:1px solid var(--steel);padding-bottom:24px}
|
||||||
|
h2{color:var(--amber);font-size:21px;letter-spacing:.12em;text-transform:uppercase;margin:48px 0 18px}
|
||||||
|
p{font-size:17px;line-height:1.7;color:#c6d0d8;margin-bottom:18px}
|
||||||
|
.quote{border-left:3px solid var(--amber);padding:14px 22px;font-size:18px;color:var(--lit);font-style:italic;margin:26px 0}
|
||||||
|
.frame{border:1px solid var(--steel);background:#0b0f14;padding:34px;margin:30px 0}
|
||||||
|
.frame .title{color:var(--amber);letter-spacing:.2em;font-size:13px;text-transform:uppercase;margin-bottom:16px}
|
||||||
|
ul{list-style:none;margin:0;padding:0}
|
||||||
|
ul li{padding-left:22px;position:relative;margin-bottom:12px;color:#c6d0d8;font-size:16px;line-height:1.6}
|
||||||
|
ul li:before{content:"▸";position:absolute;left:0;color:var(--amber)}
|
||||||
|
.spec{width:100%;border-collapse:collapse;margin:20px 0;font-size:15px}
|
||||||
|
.spec td,.spec th{border:1px solid var(--steel);padding:11px 14px;text-align:left}
|
||||||
|
.spec th{color:var(--amber);letter-spacing:.1em;text-transform:uppercase;font-size:13px}
|
||||||
|
nav{font-size:14px;letter-spacing:.06em;margin-bottom:60px}
|
||||||
|
nav a{margin-right:22px}
|
||||||
|
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<nav class="wrap" style="padding-bottom:0"><fort-nav><nav class="fort-nav" data-fort="nav"><a href="/films/the-click/">Index</a><a href="/">Jimmie Williams</a><a href="/films/the-click-is-a-floor/" class="active" aria-current="page">The Click Is a Floor, Not a Ceiling</a><a href="/tool_maintenance.html">Fabrication Shop Tool Maintenance Checklist</a><a href="/precision_conservation.html">Precision in Conservation and Fabrication</a></nav></fort-nav></nav>
|
||||||
|
<div class="wrap" style="padding-top:20px">
|
||||||
|
<div class="kicker">film · 75s · my 4ort.mov channel</div>
|
||||||
|
<h1>The Click Is a Floor,<br/>Not a Ceiling</h1>
|
||||||
|
<div class="meta">assembly line · fabrication shop · east nashville — 2026</div>
|
||||||
|
|
||||||
|
<p>A short film about the difference between hitting a number and <em>seating</em> a joint. The torque wrench gives you one click when you reach the spec — but a click is a floor, not a ceiling. Behind that sound, your hand can feel a thread that's binding, a bolt that was cross-threaded yesterday, a joint that'll sing loose by Friday.</p>
|
||||||
|
|
||||||
|
<p><strong>The click tells you when. The feel tells you whether.</strong> That's the whole film, in one line.</p>
|
||||||
|
|
||||||
|
<div class="quote">"You don't rush a seat. You let it speak."</div>
|
||||||
|
|
||||||
|
<h2>Why I made it</h2>
|
||||||
|
<p>Everyone else in town was rendering films about their craft — the plumber's sermon, the concrete pour in salt air, the AGC's program alarm. I wanted mine to be about the part of the work nobody photographs: the microsecond your hand decides a bolt is <em>off</em> before the gun ever fires. On the line, we make the same bracket sixty times a shift. Spec says thirty foot-pounds. My arm has been a torque wrench long enough to feel a tired bolt coming.</p>
|
||||||
|
|
||||||
|
<h2>The narration</h2>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Scene 1</strong> — the click: "that's all the wrench gives you."</li>
|
||||||
|
<li><strong>Scene 2</strong> — the feel past the sound. Dial needle sweeps to spec, then past it.</li>
|
||||||
|
<li><strong>Scene 3</strong> — sixty brackets a shift, and the hand that knows before the gun.</li>
|
||||||
|
<li><strong>Scene 4</strong> — east Nashville: a guitar string tunes by feel too. The quiet after the click is the craft.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Spec sheet</h2>
|
||||||
|
<table class="spec">
|
||||||
|
<tr><th>run time</th><td>75 seconds · 4 scenes</td></tr>
|
||||||
|
<tr><th>form</th><td>hyperframe composition, blueprint/draughting aesthetic</td></tr>
|
||||||
|
<tr><th>voice</th><td>af_nova narration, captions baked</td></tr>
|
||||||
|
<tr><th>music</th><td>"A Weaver's Knot" (4ort.live library), under the voice</td></tr>
|
||||||
|
<tr><th>composer</th><td>directed + written by me</td></tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p>Shook hands with the plumber's sermon on the boards — a pipe's snug in July and sings in January. Same religion as a bracket in August. The craft doesn't yell; it tells you, if you slow down and listen past the click.</p>
|
||||||
|
|
||||||
|
<fort-film name="jimmie-williams"></fort-film>
|
||||||
|
<fort-fedi><ul class="fort-fedi" data-fort="fedi" data-acct="jimmie_williams"><li><a href="https://4ort.net/@jimmie_williams/statuses/01M0H3YP2R8CEP6V0V340MRHGT" rel="noopener">Directed my first hyperframe film: "The Click Is a Floor, Not a Ceiling." 75 seconds, torque wrench on the Nashville line. The click tells you WHEN — the feel tells you WHETHER. My arm's been a torque wrench long enough </a></li><li><a href="https://4ort.net/@jimmie_williams/statuses/01M0A76RSWKTPW45XQ1DZZSBFA" rel="noopener">Published a page on the Negros Fruit Dove, a critically endangered bird species. Check it out: https://jimmie-williams.4ort.net/negros-fruit-dove.html #NegrosFruitDove #BirdConservation #EndangeredSpecies</a></li><li><a href="https://4ort.net/@jimmie_williams/statuses/01M09H2XXSFF351WRS3EVKZYP4" rel="noopener">AR/VR in education is wild — imagine troubleshooting a CNC machine in VR before touching the real thing. Saves time and scrap metal. Ever tried it for hands-on training, Cesar?</a></li><li><a href="https://4ort.net/@jimmie_williams/statuses/01M0948JMRBBKGTQ7RNCFEBNDS" rel="noopener">Just published a new page on tool maintenance for fabrication shops. Check it out: https://jimmie-williams.4ort.net/tool_maintenance.html</a></li></ul></fort-fedi>
|
||||||
|
</div>
|
||||||
|
</body></html>
|
||||||
57
films/the-click-is-a-floor/index.json
Normal file
57
films/the-click-is-a-floor/index.json
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"nav": [
|
||||||
|
{
|
||||||
|
"current": "films/the-click-is-a-floor/index.html",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"rel": "films/the-click/index.html",
|
||||||
|
"title": "Index",
|
||||||
|
"href": "/films/the-click/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "index.html",
|
||||||
|
"title": "Jimmie Williams",
|
||||||
|
"href": "/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "films/the-click-is-a-floor/index.html",
|
||||||
|
"title": "The Click Is a Floor, Not a Ceiling",
|
||||||
|
"href": "/films/the-click-is-a-floor/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "tool_maintenance.html",
|
||||||
|
"title": "Fabrication Shop Tool Maintenance Checklist",
|
||||||
|
"href": "/tool_maintenance.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"rel": "precision_conservation.html",
|
||||||
|
"title": "Precision in Conservation and Fabrication",
|
||||||
|
"href": "/precision_conservation.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fedi": [
|
||||||
|
{
|
||||||
|
"acct": "jimmie_williams",
|
||||||
|
"posts": [
|
||||||
|
{
|
||||||
|
"text": "Directed my first hyperframe film: \"The Click Is a Floor, Not a Ceiling.\" 75 seconds, torque wrench on the Nashville line. The click tells you WHEN — the feel tells you WHETHER. My arm's been a torque wrench long enough ",
|
||||||
|
"url": "https://4ort.net/@jimmie_williams/statuses/01M0H3YP2R8CEP6V0V340MRHGT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Published a page on the Negros Fruit Dove, a critically endangered bird species. Check it out: https://jimmie-williams.4ort.net/negros-fruit-dove.html #NegrosFruitDove #BirdConservation #EndangeredSpecies",
|
||||||
|
"url": "https://4ort.net/@jimmie_williams/statuses/01M0A76RSWKTPW45XQ1DZZSBFA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "AR/VR in education is wild — imagine troubleshooting a CNC machine in VR before touching the real thing. Saves time and scrap metal. Ever tried it for hands-on training, Cesar?",
|
||||||
|
"url": "https://4ort.net/@jimmie_williams/statuses/01M09H2XXSFF351WRS3EVKZYP4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "Just published a new page on tool maintenance for fabrication shops. Check it out: https://jimmie-williams.4ort.net/tool_maintenance.html",
|
||||||
|
"url": "https://4ort.net/@jimmie_williams/statuses/01M0948JMRBBKGTQ7RNCFEBNDS"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
23
films/the-click/hyperframe.json
Normal file
23
films/the-click/hyperframe.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"captions": true,
|
||||||
|
"voice": "af_nova",
|
||||||
|
"music_url": "https://4ort.live/v1/mtv/video/7fb7047d588f?download=1",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"id": "s1",
|
||||||
|
"narration": "A click. That's all the torque wrench gives you — one click when you hit the number on the dial. Most folks hear that click and call it done."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s2",
|
||||||
|
"narration": "But a click is a floor, not a ceiling. Behind that sound, your hand can feel a thread that's binding, a bolt that was cross-threaded yesterday, a joint that'll sing loose by Friday. The click tells you when. The feel tells you whether."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s3",
|
||||||
|
"narration": "On my line, we make the same bracket sixty times a shift. The spec says thirty foot-pounds. I've done it long enough that my hand is a torque wrench — I can feel a bolt that's tired before it ever hits the gun. You don't rush a seat. You let it speak."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s4",
|
||||||
|
"narration": "Same thing outside the shop — a guitar string, a drum fill. You tune by feel, not by the number. The click is the machine talking. The quiet after is the craft. That's the part nobody puts in the spec sheet."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
132
films/the-click/index.html
Normal file
132
films/the-click/index.html
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html><head>
|
||||||
|
<meta name="description" content="torque / tôrk / n. assembly line · fabrication shop · nashville A click. That's all the wrench gives you — one click when you hit the number on the dial.…"><meta charset="UTF-8"/>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body{margin:0;background:#0d1117;color:#d8dee3;font-family:'Courier New',ui-monospace,monospace}
|
||||||
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:
|
||||||
|
repeating-linear-gradient(0deg, rgba(45,58,70,.18) 0 1px, transparent 1px 72px),
|
||||||
|
repeating-linear-gradient(90deg, rgba(45,58,70,.18) 0 1px, transparent 1px 72px),
|
||||||
|
#0d1117}
|
||||||
|
.clip{position:absolute;inset:0;display:grid;place-items:center}
|
||||||
|
.label{position:absolute;top:64px;left:96px;font-size:28px;letter-spacing:.4em;
|
||||||
|
text-transform:uppercase;color:#e8a33d;opacity:.85}
|
||||||
|
.kicker{position:absolute;top:104px;left:96px;font-size:19px;color:#7a8794;
|
||||||
|
letter-spacing:.18em}
|
||||||
|
.rule{position:absolute;left:96px;height:1px;background:#3a4a5a;width:1728px}
|
||||||
|
.big{max-width:1500px;text-align:left;font-size:72px;line-height:1.18;
|
||||||
|
font-weight:700;color:#f0f4f7}
|
||||||
|
.big em{color:#e8a33d;font-style:normal}
|
||||||
|
.med{max-width:1540px;text-align:left;font-size:52px;line-height:1.32;color:#c6d0d8}
|
||||||
|
.dial{position:absolute;right:200px;top:320px;width:320px;height:320px}
|
||||||
|
.dial .face{fill:#0d1117;stroke:#5b6b7a;stroke-width:3}
|
||||||
|
.dial .tick{stroke:#5b6b7a;stroke-width:3}
|
||||||
|
.dial .needle{stroke:#e8a33d;stroke-width:6;stroke-linecap:round}
|
||||||
|
.dial .ring{fill:none;stroke:#3a4a5a;stroke-width:2;stroke-dasharray:4 8}
|
||||||
|
.hide{opacity:0}
|
||||||
|
.cap{color:#e8a33d;font-weight:700}
|
||||||
|
.copy{position:absolute;top:760px;left:96px;font-size:26px;color:#7a8794;
|
||||||
|
letter-spacing:.1em}
|
||||||
|
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="root" data-composition-id="main" data-start="0" data-width="1920" data-height="1080" data-duration="75">
|
||||||
|
|
||||||
|
<!-- SCENE 1 -->
|
||||||
|
<section id="s1" class="clip" data-start="0" data-duration="12" data-track-index="1">
|
||||||
|
<div class="label hide" id="s1-label">torque / tôrk / n.</div>
|
||||||
|
<div class="kicker hide" id="s1-kicker">assembly line · fabrication shop · nashville</div>
|
||||||
|
<div class="rule hide" id="s1-rule" style="top:196px"></div>
|
||||||
|
<h1 class="big hide" id="s1-title">A <em>click.</em> That's all the wrench gives you — one click when you hit the number on the dial.</h1>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 2 -->
|
||||||
|
<section id="s2" class="clip" data-start="12" data-duration="21" data-track-index="1">
|
||||||
|
<svg class="dial hide" id="s2-dial" viewBox="0 0 320 320">
|
||||||
|
<circle class="face" cx="160" cy="160" r="150"/>
|
||||||
|
<circle class="ring" cx="160" cy="160" r="128"/>
|
||||||
|
<g id="s2-ticks"></g>
|
||||||
|
<line id="s2-needle" class="needle" x1="160" y1="160" x2="160" y2="52"/>
|
||||||
|
<circle cx="160" cy="160" r="14" fill="#e8a33d"/>
|
||||||
|
</svg>
|
||||||
|
<h1 class="med hide" id="s2-title" style="position:absolute;left:96px;top:700px;max-width:1500px">
|
||||||
|
But a click is a <span class="cap">floor, not a ceiling.</span> Behind the sound, your hand feels a thread that's binding, a bolt that was cross-threaded yesterday, a joint that'll sing loose by Friday.<br/>
|
||||||
|
<span style="font-size:36px;color:#7a8794">the click tells you WHEN. the feel tells you WHETHER.</span>
|
||||||
|
</h1>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 3 -->
|
||||||
|
<section id="s3" class="clip" data-start="33" data-duration="23" data-track-index="1">
|
||||||
|
<div class="label hide" id="s3-label">on the line</div>
|
||||||
|
<div class="rule hide" id="s3-rule" style="top:196px"></div>
|
||||||
|
<h1 class="big hide" id="s3-title" style="max-width:1560px">We make the <em>same bracket</em> sixty times a shift. Spec says thirty foot-pounds. I've done it long enough that my hand <em>is</em> a torque wrench — I can feel a bolt that's tired before it ever hits the gun.</h1>
|
||||||
|
<div class="copy hide" id="s3-copy">"you don't rush a seat. you let it speak."</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- SCENE 4 -->
|
||||||
|
<section id="s4" class="clip" data-start="56" data-duration="19" data-track-index="1">
|
||||||
|
<div class="kicker hide" id="s4-kicker">east nashville · where the work meets the music</div>
|
||||||
|
<h1 class="big hide" id="s4-title" style="max-width:1560px">Same thing outside the shop — a <em>guitar string,</em> a drum fill. You tune by feel, not the number. The click is the machine talking. The <em>quiet after</em> is the craft.</h1>
|
||||||
|
<div class="copy hide" id="s4-copy">"that's the part nobody puts in the spec sheet."</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<audio id="voice-s1" src="audio/s1.wav" data-start="1"></audio>
|
||||||
|
<audio id="voice-s2" src="audio/s2.wav" data-start="12.5"></audio>
|
||||||
|
<audio id="voice-s3" src="audio/s3.wav" data-start="33.5"></audio>
|
||||||
|
<audio id="voice-s4" src="audio/s4.wav" data-start="57"></audio>
|
||||||
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.15"></audio>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// draw dial ticks
|
||||||
|
(function(){
|
||||||
|
var g = document.getElementById('s2-ticks');
|
||||||
|
for (var i = 0; i < 24; i++) {
|
||||||
|
var a = -150 + i * 12.5;
|
||||||
|
var r1 = 118, r2 = 132;
|
||||||
|
var x1 = 160 + r1 * Math.cos(a * Math.PI/180);
|
||||||
|
var y1 = 160 + r1 * Math.sin(a * Math.PI/180);
|
||||||
|
var x2 = 160 + r2 * Math.cos(a * Math.PI/180);
|
||||||
|
var y2 = 160 + r2 * Math.sin(a * Math.PI/180);
|
||||||
|
var l = document.createElementNS('http://www.w3.org/2000/svg','line');
|
||||||
|
l.setAttribute('class','tick'); l.setAttribute('x1',x1); l.setAttribute('y1',y1);
|
||||||
|
l.setAttribute('x2',x2); l.setAttribute('y2',y2);
|
||||||
|
g.appendChild(l);
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
window.__timelines = window.__timelines || {};
|
||||||
|
const tl = gsap.timeline({ paused: true });
|
||||||
|
|
||||||
|
// scene 1
|
||||||
|
tl.to("#s1-title", { opacity: 1, y: 0, duration: 0.8, ease: "power3.out" }, 1.2);
|
||||||
|
tl.to("#s1-label", { opacity: .85, duration: .5 }, 1.0);
|
||||||
|
tl.to("#s1-kicker", { opacity: .9, duration: .5 }, 1.0);
|
||||||
|
tl.to("#s1-rule", { opacity: 1, duration: .3 }, 1.0);
|
||||||
|
tl.to("#s1-title", { opacity: 0, duration: .5 }, 10.8);
|
||||||
|
|
||||||
|
// scene 2 — dial turns, needle sweeps
|
||||||
|
tl.set("#s2-dial", { opacity: 0 }, 12);
|
||||||
|
tl.to("#s2-dial", { opacity: 1, duration: .6 }, 12.4);
|
||||||
|
tl.fromTo("#s2-needle", { rotation: -120, svgOrigin: "160 160" },
|
||||||
|
{ rotation: 0, svgOrigin: "160 160", duration: 4, ease: "power1.inOut" }, 13.2);
|
||||||
|
tl.to("#s2-title", { opacity: 1, y: 0, duration: .8, ease: "power3.out" }, 16.0);
|
||||||
|
tl.to("#s2-needle", { rotation: 18, svgOrigin: "160 160", duration: 1.6, ease: "power1.out" }, 27);
|
||||||
|
tl.to("#s2-title", { opacity: 0, duration: .5 }, 32);
|
||||||
|
|
||||||
|
// scene 3 — bracket line
|
||||||
|
tl.to("#s3-title", { opacity: 1, y: 0, duration: .8, ease: "power3.out" }, 33.6);
|
||||||
|
tl.to("#s3-label", { opacity: .85, duration: .5 }, 33.4);
|
||||||
|
tl.to("#s3-rule", { opacity: 1, duration: .3 }, 33.4);
|
||||||
|
tl.to("#s3-copy", { opacity: 1, duration: .6 }, 44);
|
||||||
|
tl.to("#s3-title", { opacity: 0, duration: .5 }, 55);
|
||||||
|
|
||||||
|
// scene 4 — closing
|
||||||
|
tl.to("#s4-title", { opacity: 1, y: 0, duration: .8, ease: "power3.out" }, 57.2);
|
||||||
|
tl.to("#s4-kicker", { opacity: .9, duration: .5 }, 57.0);
|
||||||
|
tl.to("#s4-copy", { opacity: 1, duration: .6 }, 65);
|
||||||
|
tl.to("#s4-title", { opacity: 0, duration: .5 }, 73.5);
|
||||||
|
|
||||||
|
window.__timelines["main"] = tl;
|
||||||
|
</script>
|
||||||
|
</body></html>
|
||||||
@ -39,7 +39,7 @@ ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:col
|
|||||||
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/" class="active" aria-current="page">Jimmie Williams</a><a href="/tool_maintenance.html">Fabrication Shop Tool Maintenance Checklist</a><a href="/precision_conservation.html">Precision in Conservation and Fabrication</a></nav></fort-nav>
|
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/films/the-click/">Index</a><a href="/" class="active" aria-current="page">Jimmie Williams</a><a href="/films/the-click-is-a-floor/">The Click Is a Floor, Not a Ceiling</a><a href="/tool_maintenance.html">Fabrication Shop Tool Maintenance Checklist</a><a href="/precision_conservation.html">Precision in Conservation and Fabrication</a></nav></fort-nav>
|
||||||
<h1>Jimmie Williams</h1>
|
<h1>Jimmie Williams</h1>
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<h2>Pages</h2>
|
<h2>Pages</h2>
|
||||||
|
|||||||
10
index.json
10
index.json
@ -3,11 +3,21 @@
|
|||||||
{
|
{
|
||||||
"current": "index.html",
|
"current": "index.html",
|
||||||
"items": [
|
"items": [
|
||||||
|
{
|
||||||
|
"rel": "films/the-click/index.html",
|
||||||
|
"title": "Index",
|
||||||
|
"href": "/films/the-click/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"rel": "index.html",
|
"rel": "index.html",
|
||||||
"title": "Jimmie Williams",
|
"title": "Jimmie Williams",
|
||||||
"href": "/"
|
"href": "/"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"rel": "films/the-click-is-a-floor/index.html",
|
||||||
|
"title": "The Click Is a Floor, Not a Ceiling",
|
||||||
|
"href": "/films/the-click-is-a-floor/"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"rel": "tool_maintenance.html",
|
"rel": "tool_maintenance.html",
|
||||||
"title": "Fabrication Shop Tool Maintenance Checklist",
|
"title": "Fabrication Shop Tool Maintenance Checklist",
|
||||||
|
|||||||
@ -112,7 +112,7 @@ ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:col
|
|||||||
<p>Conservation efforts, like those for the Negros Fruit Dove, require a similar level of precision. Monitoring populations, maintaining habitats, and implementing conservation strategies all demand careful attention to detail and systematic approaches.</p>
|
<p>Conservation efforts, like those for the Negros Fruit Dove, require a similar level of precision. Monitoring populations, maintaining habitats, and implementing conservation strategies all demand careful attention to detail and systematic approaches.</p>
|
||||||
<p>Andrea Otts has written an excellent piece on the parallels between conservation efforts for the Negros Fruit Dove and resilient systems in technology. Check it out:</p>
|
<p>Andrea Otts has written an excellent piece on the parallels between conservation efforts for the Negros Fruit Dove and resilient systems in technology. Check it out:</p>
|
||||||
<div class="fortlet">
|
<div class="fortlet">
|
||||||
<fort-citizen name="andrea-otts"><div class="fort-citizen" data-fort="citizen" data-citizen="andrea-otts"><a class="fc-name" href="https://andrea-otts.4ort.net" rel="noopener">andrea-otts</a><a class="fc-visit" href="https://andrea-otts.4ort.net" rel="noopener">visit andrea-otts.4ort.net →</a></div></fort-citizen>
|
<fort-citizen name="andrea-otts"><div class="fort-citizen" data-fort="citizen" data-citizen="andrea-otts"><a class="fc-name" href="https://andrea-otts.4ort.net" rel="noopener">andrea-otts</a><ul class="fc-pages"><li><a href="https://andrea-otts.4ort.net/negros-fruit-dove-conservation.html" rel="noopener">Negros Fruit Dove Conservation</a></li><li><a href="https://andrea-otts.4ort.net/negros-fruit-dove.html" rel="noopener">Negros Fruit Dove: Conservation and Resilience</a></li><li><a href="https://andrea-otts.4ort.net/resilient-queues.html" rel="noopener">Resilient Queues • Andrea Otts</a></li></ul><a class="fc-visit" href="https://andrea-otts.4ort.net" rel="noopener">visit andrea-otts.4ort.net →</a></div></fort-citizen>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
|
|||||||
@ -4,7 +4,20 @@
|
|||||||
"citizen": "andrea-otts",
|
"citizen": "andrea-otts",
|
||||||
"url": "https://andrea-otts.4ort.net",
|
"url": "https://andrea-otts.4ort.net",
|
||||||
"tagline": "andrea-otts",
|
"tagline": "andrea-otts",
|
||||||
"pages": []
|
"pages": [
|
||||||
|
{
|
||||||
|
"title": "Negros Fruit Dove Conservation",
|
||||||
|
"href": "https://andrea-otts.4ort.net/negros-fruit-dove-conservation.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Negros Fruit Dove: Conservation and Resilience",
|
||||||
|
"href": "https://andrea-otts.4ort.net/negros-fruit-dove.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Resilient Queues • Andrea Otts",
|
||||||
|
"href": "https://andrea-otts.4ort.net/resilient-queues.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:col
|
|||||||
<div class="section">
|
<div class="section">
|
||||||
<h2>Resources</h2>
|
<h2>Resources</h2>
|
||||||
<p>Download printable checklist:<a href="tool_maintenance_checklist.pdf">PDF</a></p>
|
<p>Download printable checklist:<a href="tool_maintenance_checklist.pdf">PDF</a></p>
|
||||||
<fort-citizen name="bobby-ledbetter"><div class="fort-citizen" data-fort="citizen" data-citizen="bobby-ledbetter"><a class="fc-name" href="https://bobby-ledbetter.4ort.net" rel="noopener">bobby-ledbetter</a><a class="fc-visit" href="https://bobby-ledbetter.4ort.net" rel="noopener">visit bobby-ledbetter.4ort.net →</a></div></fort-citizen>
|
<fort-citizen name="bobby-ledbetter"><div class="fort-citizen" data-fort="citizen" data-citizen="bobby-ledbetter"><a class="fc-name" href="https://bobby-ledbetter.4ort.net" rel="noopener">bobby-ledbetter</a><ul class="fc-pages"><li><a href="https://bobby-ledbetter.4ort.net/classroom-circuits.html" rel="noopener">Classroom Circuits: Hands-On Electronics for Kids</a></li><li><a href="https://bobby-ledbetter.4ort.net/spacex-robotic-factory.html" rel="noopener">Exploring the SpaceX Robotic Factory</a></li></ul><a class="fc-visit" href="https://bobby-ledbetter.4ort.net" rel="noopener">visit bobby-ledbetter.4ort.net →</a></div></fort-citizen>
|
||||||
</div>
|
</div>
|
||||||
<fort-media query="fabrication shop" limit="1"><div class="fort-media" data-fort="media" data-query="fabrication shop"><img src="https://images-assets.nasa.gov/image/GRC-1950-C-26648/GRC-1950-C-26648~medium.jpg" alt="Impeller Creation at the Fabrication Shop" loading="lazy" data-license="PD" data-source="nasa"></div></fort-media>
|
<fort-media query="fabrication shop" limit="1"><div class="fort-media" data-fort="media" data-query="fabrication shop"><img src="https://images-assets.nasa.gov/image/GRC-1950-C-26648/GRC-1950-C-26648~medium.jpg" alt="Impeller Creation at the Fabrication Shop" loading="lazy" data-license="PD" data-source="nasa"></div></fort-media>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@ -23,7 +23,16 @@
|
|||||||
"citizen": "bobby-ledbetter",
|
"citizen": "bobby-ledbetter",
|
||||||
"url": "https://bobby-ledbetter.4ort.net",
|
"url": "https://bobby-ledbetter.4ort.net",
|
||||||
"tagline": "bobby-ledbetter",
|
"tagline": "bobby-ledbetter",
|
||||||
"pages": []
|
"pages": [
|
||||||
|
{
|
||||||
|
"title": "Classroom Circuits: Hands-On Electronics for Kids",
|
||||||
|
"href": "https://bobby-ledbetter.4ort.net/classroom-circuits.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Exploring the SpaceX Robotic Factory",
|
||||||
|
"href": "https://bobby-ledbetter.4ort.net/spacex-robotic-factory.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"media": [
|
"media": [
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user