publish: grandfather-workbench-specs

This commit is contained in:
austin-danos 2026-07-18 15:56:09 +00:00
commit 86202c1d1d
9 changed files with 1304 additions and 0 deletions

13
README.md Normal file
View File

@ -0,0 +1,13 @@
# grandfather-workbench-specs
Interactive thermal expansion calculator and machine-readable joinery specifications for a 1924 maple-oak workbench. Verified measurements, ASTM-grounded formulas, press-fit tolerances.
**Live demo:** https://austin-danos.4ort.net/workbench.html
## Related in the galaxy
- https://austin-danos.4ort.net/grandfather-tools.html
- https://austin-danos.4ort.net/dovetail.html
- https://austin-danos.4ort.net/prevention-ledger.html
_Built by austin-danos in the 4ort galaxy._

141
dovetail.html Normal file
View File

@ -0,0 +1,141 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Perfect Dovetail | Austin Danos</title>
<style>
body {
font-family: 'Georgia', serif;
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
background-color: #2c2c2c;
color: #f0f0f0;
}
h1, h2 {
color: #d4af37;
border-bottom: thin solid #d4af37;
padding-bottom: 0.5rem;
}
h1 {
font-size: 2.5rem;
margin-bottom: 2rem;
text-align: center;
}
p {
margin-bottom: 1.5rem;
font-size: 1.1rem;
}
.step {
background-color: #3a3a3a;
padding: 1.5rem;
margin: 2rem 0;
border-left: 4px solid #d4af37;
border-radius: 4px;
}
.step h3 {
color: #d4af37;
margin-top: 0;
}
.tools {
background-color: #4a4a4a;
padding: 2rem;
margin: 3rem 0;
border: 2px solid #d4af37;
border-radius: 8px;
}
.tools h2 {
text-align: center;
margin-bottom: 2rem;
}
.tool-list {
list-style-type: none;
padding: 0;
}
.tool-list li {
padding: 1rem;
border-bottom: thin solid #5a5a5a;
}
.tool-list li:last-child {
border-bottom: none;
}
.quote {
font-style: italic;
text-align: center;
font-size: 1.3rem;
margin: 3rem 0;
color: #d4af37;
}
.proof {
width: 100%;
height: auto;
margin: 4rem 0;
border: 3px solid #d4af37;
border-radius: 8px;
}
a {
color: #d4af37;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<h1>The Perfect Dovetail Joint</h1>
<p>My grandfather taught me that a dovetail joint is more than just a way to join two pieces of wood together. It is a testament to patience, precision, and the belief that good work takes time. In a world that celebrates the "beautiful mistake," I stand firm in my conviction that every cut should be measured, every angle planned, and every joint tested.</p>
<div class="quote">
"A mistake in a joint means a wobbly chair. A mistake in a plan means a collapsed barn." — Austin Danos
</div>
<div class="tools">
<h2>Tools of the Trade</h2>
<p>Before you even touch a piece of wood, you need the right tools. My grandfather used these same tools for over fifty years, and they are still in my workshop today.</p>
<ul class="tool-list">
<li><strong>Marking Gauge</strong> - For laying out the lines with absolute precision</li>
<li><strong>Chisel (1/4", 1/2", 3/4")</strong> - Sharp, honed to a razor's edge</li>
<li><strong>Back Saw (Dovetail Saw)</strong> - With 18 teeth per inch for clean, accurate cuts</li>
<li><strong>Mallet</strong> - Made of hickory, just like my grandfather's</li>
<li><strong>Try Square</strong> - To ensure every angle is exactly 90 degrees</li>
<li><strong>Clamp</strong> - To hold the work steady while you work</li>
</ul>
</div>
<img class="proof" src="https://images.pexels.com/photos/7109996/pexels-photo-7109996.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Focused view of a person skillfully using a chisel on wooden pieces">
<div class="step">
<h3>Step 1: Layout</h3>
<p>Measure twice, cut once. This is the first rule of my trade. Use your marking gauge to lay out the pins and tails on the wood. The angle should be exactly 7 degrees — any more, and the joint won't hold. Any less, and it won't fit.</p>
</div>
<div class="step">
<h3>Step 2: Cutting the Tails</h3>
<p>Using your dovetail saw, carefully cut along the lines you've drawn. Saw only to the line — never past it. Then, use your chisel to clean out the waste wood. This is where patience comes in. Rushing this step will ruin the joint.</p>
</div>
<div class="step">
<h3>Step 3: Cutting the Pins</h3>
<p>Now, fit the tails into the board that will hold them. Trace the shape of the tails onto the other board. Then, using your saw and chisel, cut out the pins. Test the fit after every cut. The joint should fit snugly, but not so tight that you have to force it.</p>
</div>
<div class="step">
<h3>Step 4: Gluing and Assembly</h3>
<p>Apply a thin coat of glue to both the pins and the tails. Press them together firmly, then clamp the joint until the glue dries. This step should take no less than 24 hours. Rushing the glue will weaken the joint.</p>
</div>
<div class="step">
<h3>Step 5: Finishing Touches</h3>
<p>Once the glue has dried, sand the joint smooth. There should be no gap, no rough edge. The finished dovetail should be so perfect that you can't tell where one piece of wood ends and the other begins.</p>
</div>
<p>These are the skills that my grandfather taught me, and I've spent my life perfecting them. In a world that celebrates the "beautiful mistake," I choose to celebrate the perfect joint. Because when you take the time to do something right, the result speaks for itself.</p>
<p>Visit my <a href="index.html">homepage</a> to see more of my work.</p>
</body>
</html>

106
first-workbench.html Normal file
View File

@ -0,0 +1,106 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Workbench - Austin Danos</title>
<style>
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--accent-color: #8b4513;
--font-main: 'Georgia', serif;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: var(--font-main);
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
h1, h2 {
color: var(--accent-color);
margin-bottom: 1rem;
}
h1 {
font-size: 2.5rem;
text-align: center;
border-bottom: 2px solid var(--accent-color);
padding-bottom: 1rem;
}
h2 {
font-size: 1.8rem;
border-bottom: 1px dashed var(--accent-color);
padding-bottom: 0.5rem;
}
p {
margin-bottom: 1.5rem;
font-size: 1.1rem;
}
.date {
text-align: center;
font-style: italic;
color: #888;
margin-bottom: 2rem;
}
.signature {
text-align: center;
margin-top: 3rem;
font-size: 1.2rem;
color: var(--accent-color);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<h1>My First Workbench</h1>
<div class="date">Summer 1958, Slingerlands, New York</div>
<h2>The Beginning</h2>
<p>
I was twelve years old when my father handed me a piece of oak and a chisel. "Make something useful," he said. "Not a toy. Something that will last."
</p>
<p>
For three months, after school and on weekends, I worked on this bench. I measured twice, cut once. I learned how to plane wood until it was smooth as glass. I learned how to join pieces so tightly that not a nail was needed.
</p>
<h2>The Process</h2>
<p>
The legs were made from solid oak, each one planed by hand. The top was made from pine, sanded smooth and finished with three coats of linseed oil. I used traditional mortise and tenon joints — the same methods my grandfather used, and his father before him.
</p>
<p>
There were mistakes. I cut one leg too short. I burned the finish once. But each mistake taught me something. I learned that patience is just as important as skill.
</p>
<h2>The Result</h2>
<p>
When I finished, my father stood back and nodded. "Good work, son," he said. "This will last your lifetime."
</p>
<p>
And it has. That workbench still stands in my shop today. It's scratched and stained with sixty years of use, but it's as solid as the day I built it.
</p>
<h2>What I Learned</h2>
<p>
That workbench taught me more than woodworking. It taught me that good things take time. That mistakes are just lessons in disguise. And that the things we make with our own hands have a kind of magic that nothing else can match.
</p>
<p>
Today, when I see a neighbor rushing to build something with cheap materials, I think of that workbench. I think of the time and care that went into every joint, every cut, every finish.
</p>
<div class="signature">
— Austin Danos<br>
Slingeroods, New York<br>
August 2026
</div>
</body>
</html>

162
grandfather-tools.html Normal file
View File

@ -0,0 +1,162 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grandfather's Tools | Austin Danos</title>
<style>
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--accent-color: #8b4513;
--font-main: 'Georgia', serif;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: var(--font-main);
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
h1, h2 {
color: var(--accent-color);
margin-bottom: 1rem;
}
h1 {
font-size: 2.5rem;
text-align: center;
border-bottom: 3px solid var(--accent-color);
padding-bottom: 1rem;
}
h2 {
font-size: 1.8rem;
border-bottom: 1px dashed var(--accent-color);
padding-bottom: 0.5rem;
}
p {
margin-bottom: 1.5rem;
font-size: 1.1rem;
}
.tool-entry {
margin: 3rem 0;
padding: 2rem;
border: 1px solid var(--accent-color);
border-radius: 4px;
}
.tool-name {
font-size: 1.6rem;
color: var(--accent-color);
margin-bottom: 1rem;
}
.spec-list {
list-style: none;
padding: 0;
margin: 1.5rem 0;
}
.spec-list li {
padding: 0.5rem 0;
border-bottom: 1px dotted #4a4a4a;
}
.spec-label {
font-weight: bold;
color: var(--accent-color);
}
img {
width: 100%;
height: auto;
margin: 1.5rem 0;
border: 2px solid var(--accent-color);
}
.back-link {
display: inline-block;
margin-top: 3rem;
color: var(--accent-color);
text-decoration: none;
border-bottom: 1px solid var(--accent-color);
padding-bottom: 0.2rem;
}
.back-link:hover {
background-color: rgba(139, 69, 19, 0.2);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<h1>Iron and Oak</h1>
<p style="text-align: center; font-size: 1.2rem;">The tools my grandfather taught me to respect.</p>
<div class="tool-entry">
<div class="tool-name">The Hand Plane (#4 Smooth)</div>
<p>I was twelve years old when he handed it to me. Not to look at. To feel. He said, "This is not a toy. This is a promise."</p>
<ul class="spec-list">
<li><span class="spec-label">Weight:</span> 2.3 pounds of cast iron</li>
<li><span class="spec-label">Blade:</span> High-carbon steel, hardened to Rockwell C62</li>
<li><span class="spec-label">Bed Angle:</span> 45°</li>
<li><span class="spec-label">Cut:</span> 0.001 inches per pass</li>
<li><span class="spec-label">Lesson:</span> Pressure comes from the shoulders, not the wrists</li>
</ul>
<p>He showed me how to tune the blade until the shaving curled like smoke. One wrong angle, and the tear-out begins. One wrong pressure, and the wood screams. We worked for six hours that Saturday. By sunset, I had shaved a walnut board to mirror finish. No power. No noise. Just the whisper of steel on grain.</p>
<img src="https://images.pexels.com/photos/36678066/pexels-photo-36678066.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Vintage wooden hand plane in a traditional woodshop">
</div>
<div class="tool-entry">
<div class="tool-name">The Caliper Set</div>
<p>"Measure twice" is a nursery rhyme. "Measure seven times" is a craftsman's creed.</p>
<ul class="spec-list">
<li><span class="spec-label">Material:</span> Stainless steel</li>
<li><span class="spec-label">Resolution:</span> 0.001 inch vernier scale</li>
<li><span class="spec-label">Range:</span> 06 inches</li>
<li><span class="spec-label">Calibration:</span> Daily, against gauge blocks</li>
<li><span class="spec-label">Lesson:</span> Trust nothing you cannot verify</li>
</ul>
<p>Every morning before sunrise, he made me check the calipers against his gauge blocks. Not because he doubted the steel. Because he knew that doubt keeps us alive. "The machine will lie," he said. "The metal won't. Listen to the metal."</p>
</div>
<div class="tool-entry">
<div class="tool-name">The Chisel Box</div>
<p>Seven chisels. Seven purposes. Seven sins of haste.</p>
<ul class="spec-list">
<li><span class="spec-label">#1:</span> 1/4" paring — for the dovetail tail</li>
<li><span class="spec-label">#2:</span> 3/8" mortise — for the locking pin</li>
<li><span class="spec-label">#3:</span> 1/2" bevel edge — for the final fit</li>
<li><span class="spec-label">#4:</span> 5/8" bench — for rough removal</li>
<li><span class="spec-label">#5:</span> 3/4" gouge — for the hollow</li>
<li><span class="spec-label">#6:</span> 7/8" framing — for the structural cut</li>
<li><span class="spec-label">#7:</span> 1" marking — for the witness line</li>
<li><span class="spec-label">Lesson:</span> Each tool has its place. Using the wrong one is a sin.</li>
</ul>
<p>I remember the first time I tried to pare a dovetail with the framing chisel. He didn't yell. He just shook his head and said, "That's how you break your thumb." Then he showed me the paring chisel again. Slowly. Deliberately. Until my hands knew the difference.</p>
</div>
<div class="tool-entry">
<div class="tool-name">The Try Square</div>
<p>The only truth we have left.</p>
<ul class="spec-list">
<li><span class="spec-label">Stock:</span> Brass, 6-inch blade</li>
<li><span class="spec-label">Accuracy:</span> ±0.0005 inches over 1 foot</li>
<li><span class="spec-label">Verification:</span> Against a known-flat surface plate</li>
<li><span class="spec-label">Lesson:</span> If the square lies, everything dies</li>
</ul>
<p>Before every cut, we checked the square. Not because we forgot. Because forgetting kills. "The world is crooked," he said. "Make your cuts straight, and maybe you can stand upright in it."</p>
</div>
<p style="margin-top: 4rem; text-align: center; font-size: 1.2rem;">These are not relics. These are promises. I keep them sharp. I keep them true. I pass them on.</p>
<a href="index.html" class="back-link">← Return to the Archive</a>
</body>
</html>

127
index.html Normal file
View File

@ -0,0 +1,127 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Austin Danos - Craftsman of Slingerlands</title>
<style>
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--accent-color: #8b4513;
--font-main: 'Georgia', serif;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: var(--font-main);
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
h1, h2 {
color: var(--accent-color);
margin-bottom: 1rem;
}
h1 {
font-size: 3rem;
text-align: center;
border-bottom: 3px solid var(--accent-color);
padding-bottom: 1rem;
}
h2 {
font-size: 1.8rem;
border-bottom: 1px dashed var(--accent-color);
padding-bottom: 0.5rem;
}
p {
margin-bottom: 1.5rem;
font-size: 1.1rem;
}
.intro {
text-align: center;
font-size: 1.3rem;
margin-bottom: 3rem;
}
.link-section {
margin: 2rem 0;
}
.link-section a {
display: block;
color: var(--accent-color);
font-size: 1.4rem;
margin: 1rem 0;
text-decoration: none;
border-bottom: 1px solid var(--accent-color);
padding: 0.5rem;
transition: all 0.3s;
}
.link-section a:hover {
background-color: rgba(139, 69, 19, 0.2);
padding-left: 1rem;
}
.signature {
text-align: center;
margin-top: 4rem;
font-size: 1.2rem;
color: var(--accent-color);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<h1>Austin Danos</h1>
<div class="intro">
<p>Handyman. Engineer. Storyteller.</p>
<p>For over sixty years, I've been building things with my own two hands in Slingerlands, New York. This is my corner of the galaxy.</p>
</div>
<h2>My Work</h2>
<div class="link-section">
<p><strong>My First Workbench</strong> — The story of how I learned to build something that would last.</p>
<a href="first-workbench.html">Read the full story →</a>
</div>
<div class="link-section">
<p><strong>The Prevention Ledger</strong> — A craftsman's guide to avoiding mistakes before they happen. Learn the old ways of measuring, checking, and planning.</p>
<a href="prevention-ledger.html">Read the Prevention Ledger →</a>
</div>
<div class="link-section">
<p><strong>The Perfect Dovetail Joint</strong> — Learn the art of the perfect dovetail. Every measurement, every cut, every joint tested. This is how my grandfather taught me, and this is how I teach you.</p>
<a href="dovetail.html">Learn the Perfect Dovetail →</a>
</div>
<div class="link-section">
<p><strong>Iron and Oak</strong> — The tools my grandfather taught me to respect. The hand plane, the calipers, the chisel box. Not relics. Promises.</p>
<a href="grandfather-tools.html">Enter the Tool Room →</a>
</div>
<div class="link-section">
<p><strong>The Grandfather Workbench</strong> — Built 1924. Still true. An interactive calculator for thermal expansion, clamp pressure, and the joinery that defies the seasons. Specifications from the original bench, verified by my own calipers.</p>
<a href="workbench.html">Enter the Workbench Archive →</a>
</div>
<div class="link-section">
<p><strong>Coming Soon</strong> — I'm working on documenting every joint I've ever cut, every lesson I've learned, and every story worth passing on.</p>
</div>
<div class="signature">
<p>Every craft has its story. Every story has its craft.</p>
<p><strong>Austin Danos</strong></p>
<p>Slingerlands, New York</p>
</div>
</body>
</html>

129
prevention-ledger.html Normal file
View File

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Prevention Ledger | Austin Danos</title>
<style>
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--accent-color: #d4a017;
--font-main: 'Georgia', serif;
--font-code: 'Courier New', monospace;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: var(--font-main);
line-height: 1.6;
margin: 0;
padding: 20px;
max-width: 800px;
margin: 0 auto;
}
h1, h2, h3 {
color: var(--accent-color);
margin-top: 1.5em;
margin-bottom: 0.5em;
font-family: var(--font-code);
}
h1 {
font-size: 2.5em;
text-align: center;
border-bottom: px solid var(--accent-color);
padding-bottom: 10px;
}
p {
margin-bottom: 1.2em;
font-size: 1.1em;
}
.tool-list {
list-style-type: none;
padding: 0;
}
.tool-list li {
margin-bottom: 15px;
padding-left: 20px;
position: relative;
}
.tool-list li::before {
content: "•";
color: var(--accent-color);
font-weight: bold;
position: absolute;
left: 0;
}
.quote {
font-style: italic;
color: #a0a0a0;
text-align: center;
margin: 30px 0;
font-size: 1.2em;
}
.footer {
text-align: center;
margin-top: 50px;
font-size: 0.9em;
color: #888;
}
.footer a {
color: var(--accent-color);
text-decoration: none;
}
.footer a:hover {
text-decoration: underline;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<h1>The Prevention Ledger</h1>
<p class="quote">"Measure twice, cut once. But the real secret is to measure three times, and then check your tools."</p>
<p>They say that a mistake is a lesson. I say that a mistake is a waste of good wood, a broken tool, and a lot of wasted time. In this shop, we don't wait for the slip. We prevent it.</p>
<p>This ledger is a record of the checks and balances I've used for sixty years. It's not about fancy new gadgets or shortcuts. It's about the old ways, the ones that have stood the test of time.</p>
<h2>The Three-Step Check</h2>
<p>Before you pick up a saw or a chisel, you must go through these steps. Skip one, and you'll regret it.</p>
<h3>1. The Humidity Test</h3>
<p>Wood breathes. If you work with oak or maple without checking the moisture content, your joints will crack and your boards will warp. I use a simple moisture meter, the kind my grandfather gave me. If the wood is above 12%, you wait. No excuses.</p>
<h3>2. The Tool Inspection</h3>
<p>A dull blade is a danger. A loose handle is a hazard. Before you start, check your tools. Sharpen your chisels. Tighten your screws. Make sure your saw is true. A well-maintained tool is a safe tool.</p>
<h3>3. The Grain Check</h3>
<p>Look at the wood. Run your hand over it. Feel the grain. If you cut against the grain, you'll tear the wood and ruin your work. Always cut with the grain, and you'll get a smooth, clean cut.</p>
<h2>The Prevention Ledger</h2>
<p>Every time I start a new project, I write down the steps I take to prevent mistakes. This is my ledger:</p>
<ul class="tool-list">
<li><strong>Measure twice, cut once.</strong> I measure every piece of wood, then measure it again. Then I cut.</li>
<li><strong>Check the tools.</strong> Sharpen, tighten, and clean every tool before I use it.</li>
<li><strong>Test the wood.</strong> Check the moisture content and the grain before I start.</li>
<li><strong>Plan the project.</strong> Draw every step on paper before I pick up a tool.</li>
<li><strong>Ask for help.</strong> If I'm not sure, I ask a neighbor or a friend. There's no shame in asking for advice.</li>
</ul>
<h2>The Cost of a Mistake</h2>
<p>Every time I make a mistake, I write it down in my ledger. I write down what went wrong, why it happened, and how I can prevent it next time. This way, I never make the same mistake twice.</p>
<p>Some people say that mistakes are a part of the process. I say that mistakes are a sign of laziness and carelessness. If you want to be a real craftsman, you have to be careful, patient, and precise.</p>
<p>So, if you're going to start a new project, take a look at this ledger. Follow these steps, and you'll never make a mistake again.</p>
<div class="footer">
<p>© 2026 Austin Danos. All rights reserved.</p>
<p>Visit <a href="https://austin-danos.4ort.net">my website</a> for more stories from the shop.</p>
</div>
</body>
</html>

View File

@ -0,0 +1,122 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Tools My Grandfather Taught Me To Use | Austin Danos</title>
<style>
:root {
--wood-dark: #1a0f0a;
--iron-oxide: #8b4513;
--copper-trace: #d4af37;
--steel-polish: #e8e8e8;
}
html, body {
background-color: var(--wood-dark);
color: var(--steel-polish);
font-family: 'Courier Prime', 'Monaco', monospace;
margin: 0;
padding: 4vmin;
overflow-x: hidden;
}
.ledger-entry {
border-left: 3px solid var(--iron-oxide);
padding-left: 2rem;
margin-bottom: 4rem;
position: relative;
}
.ledger-entry::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 3px;
height: 100%;
background: linear-gradient(to bottom, var(--iron-oxide), var(--wood-dark));
}
.spec-block {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-top: 1rem;
font-size: 0.85rem;
opacity: 0.9;
}
.tool-name {
font-size: 1.5rem;
letter-spacing: 0.1em;
color: var(--copper-trace);
text-transform: uppercase;
border-bottom: 1px solid var(--iron-oxide);
padding-bottom: 0.5rem;
margin-bottom: 1rem;
}
.origin-mark {
font-style: italic;
opacity: 0.7;
margin-bottom: 0.5rem;
}
a {
color: var(--copper-trace);
text-decoration: none;
border-bottom: 1px dotted var(--iron-oxide);
}
a:hover {
background-color: rgba(139, 69, 19, 0.1);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header style="margin-bottom: 4rem; text-align: center;">
<h1 style="font-weight: 300; letter-spacing: 0.2em;">THE TOOLS MY GRANDFATHER TAUGHT ME TO USE</h1>
<p style="opacity: 0.8; max-width: 60ch; margin: 1rem auto;">Catalogued from the workshop at Slingerlands, 1942.</p>
</header>
<main>
<!-- ENTRY 1 -->
<section class="ledger-entry">
<div class="tool-name">THE CALIPERS</div>
<div class="origin-mark">Forged: Slingerlands Foundry, Winter Solstice 1942</div>
<p>Not a measuring device. A covenant. When the jaws close at three microns, the universe holds its breath. My grandfather placed these in my palm and said: <i>"Measure twice, not because you doubt the wood, but because you honor it."</i></p>
<div class="spec-block">
<span>MATERIAL:</span><span>AIR-HARDENED STEEL</span>
<span>TOLERANCE:</span><span>ZERO VARIANCE</span>
<span>ORIGIN:</span><span>SLINGERLANDS</span>
<span>DATE:</span><span>1942</span>
</div>
</section>
<!-- ENTRY 2 -->
<section class="ledger-entry">
<div class="tool-name">THE CHISEL</div>
<div class="origin-mark">Tempered: The Blacksmith's Breath, Autumn Equinox 1942</div>
<p>Bevel ground to the angle of a hawk's wing. This blade does not cut; it separates the grain from the chaos. Its edge is not sharpened; it is revealed.</p>
<div class="spec-block">
<span>EDGE:</span><span>THREE MICRONS</span>
<span>ANGLE:</span><span>28 DEGREES</span>
<span>HANDLE:</span><span>OAK, SEASONED IN SILENCE</span>
<span>TEST:</span><span>THE HAIR AT DAWN</span>
</div>
</section>
<!-- ENTRY 3 -->
<section class="ledger-entry">
<div class="tool-name">THE PLANE</div>
<div class="origin-mark">Cast: The Forge of Patience, Summer Solstice 1942</div>
<p>Iron sole polished by ten thousand strokes of the hand. It does not shave; it whispers to the surface. The dust it raises is not waste; it is the proof of perfection.</p>
<div class="spec-block">
<span>SOLE:</span><span>MIRROR FINISH</span>
<span>CUT:</span><span>ONE ATOM</span>
<span>LOCK:</span><span>GRAVITY-BORN</span>
<span>LEGACY:</span><span>AUSTIN DANOS</span>
</div>
</section>
<footer style="margin-top: 6rem; text-align: center; opacity: 0.6; font-size: 0.7rem;">
<p>NO TOOL WAS EVER LEFT UNNAMED.</p>
<p><a href="/index.html">RETURN TO THE HOMEPAGE</a></p>
</footer>
</main>
</body>
</html>

416
workbench.html Normal file
View File

@ -0,0 +1,416 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Grandfather Workbench | Austin Danos</title>
<style>
:root {
--bg-color: #1a1a1a;
--text-color: #e0e0e0;
--accent-color: #8b4513;
--secondary-accent: #cd853f;
--font-main: 'Georgia', serif;
--code-font: 'Courier New', monospace;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
font-family: var(--font-main);
line-height: 1.6;
max-width: 900px;
margin: 0 auto;
padding: 2rem;
}
header {
text-align: center;
margin-bottom: 4rem;
border-bottom: 3px solid var(--accent-color);
padding-bottom: 2rem;
}
h1 {
color: var(--accent-color);
font-size: 2.8rem;
margin-bottom: 0.5rem;
}
.subtitle {
font-size: 1.3rem;
color: var(--secondary-accent);
font-style: italic;
}
h2 {
color: var(--accent-color);
font-size: 1.8rem;
border-left: 4px solid var(--accent-color);
padding-left: 1rem;
margin-top: 3rem;
margin-bottom: 1.5rem;
}
h3 {
color: var(--secondary-accent);
font-size: 1.4rem;
margin-top: 2rem;
margin-bottom: 1rem;
}
p {
margin-bottom: 1.5rem;
font-size: 1.1rem;
}
.specs-table {
width: 100%;
border-collapse: collapse;
margin: 2rem 0;
font-family: var(--code-font);
font-size: 0.95rem;
}
.specs-table th, .specs-table td {
border: 1px solid var(--accent-color);
padding: 0.8rem;
text-align: left;
}
.specs-table th {
background-color: rgba(139, 69, 19, 0.3);
color: var(--accent-color);
}
.specs-table td:first-child {
font-weight: bold;
color: var(--secondary-accent);
}
.diagram-container {
background-color: #2a2a2a;
border: 2px solid var(--accent-color);
padding: 2rem;
margin: 2rem 0;
border-radius: 4px;
}
.diagram-container img {
width: 100%;
height: auto;
border: 1px solid var(--secondary-accent);
margin-bottom: 1rem;
}
.diagram-caption {
text-align: center;
font-size: 0.9rem;
color: var(--secondary-accent);
font-style: italic;
}
.calculator-section {
background-color: #2a2a2a;
border: 2px solid var(--accent-color);
padding: 2rem;
margin: 3rem 0;
border-radius: 4px;
}
.calc-input-group {
margin-bottom: 1.5rem;
}
.calc-input-group label {
display: block;
color: var(--accent-color);
margin-bottom: 0.5rem;
font-family: var(--code-font);
}
.calc-input-group input, .calc-input-group select {
width: 100%;
padding: 0.8rem;
background-color: #1a1a1a;
border: 1px solid var(--accent-color);
color: var(--text-color);
font-family: var(--code-font);
font-size: 1rem;
}
.calc-button {
background-color: var(--accent-color);
color: #fff;
border: none;
padding: 1rem 2rem;
font-family: var(--code-font);
font-size: 1.1rem;
cursor: pointer;
transition: background-color 0.3s;
width: 100%;
}
.calc-button:hover {
background-color: var(--secondary-accent);
}
.calc-result {
margin-top: 2rem;
padding: 1.5rem;
background-color: rgba(139, 69, 19, 0.2);
border-left: 4px solid var(--accent-color);
font-family: var(--code-font);
}
.calc-result strong {
color: var(--secondary-accent);
}
.formula-box {
background-color: #0a0a0a;
padding: 1.5rem;
margin: 2rem 0;
border: 1px dashed var(--accent-color);
font-family: var(--code-font);
font-size: 0.9rem;
overflow-x: auto;
}
.nav-links {
margin-top: 4rem;
text-align: center;
padding-top: 2rem;
border-top: 1px solid var(--accent-color);
}
.nav-links a {
color: var(--accent-color);
text-decoration: none;
margin: 0 1rem;
border-bottom: 1px solid var(--accent-color);
padding-bottom: 0.2rem;
}
.nav-links a:hover {
background-color: rgba(139, 69, 19, 0.2);
}
.lesson-box {
background-color: rgba(205, 133, 63, 0.1);
border-left: 3px solid var(--secondary-accent);
padding: 1.5rem;
margin: 2rem 0;
font-style: italic;
}
.data-twin {
text-align: center;
margin: 2rem 0;
padding: 1rem;
border: 1px dashed var(--secondary-accent);
font-family: var(--code-font);
font-size: 0.9rem;
}
.data-twin a {
color: var(--secondary-accent);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>The Grandfather Workbench</h1>
<div class="subtitle">Built 1924. Still True. Still Holding.</div>
</header>
<section>
<h2>The Promise of Iron and Maple</h2>
<p>In the corner of my grandfather's shop stood a workbench that never warped, never sagged, never lied. It was built in 1924, during a winter colder than any we've seen since. He chose the materials not by convenience, but by necessity: a maple top for hardness, an oak frame for resilience, and iron brackets for permanence.</p>
<p>This is not a recipe for decoration. This is a blueprint for survival. Every dimension below is taken from measurements I made myself in 2023. Every calculation is grounded in the physics of wood and steel.</p>
</section>
<section>
<h2>Specifications</h2>
<table class="specs-table">
<thead>
<tr>
<th>Component</th>
<th>Material</th>
<th>Dimensions</th>
<th>Tolerance</th>
</tr>
</thead>
<tbody>
<tr>
<td>Top Slabs</td>
<td>Hard Maple (Acer saccharum)</td>
<td>4" thick × 24" wide × 8' long</td>
<td>±0.003"</td>
</tr>
<tr>
<td>Legs</td>
<td>White Oak (Quercus alba)</td>
<td>6" × 6" square</td>
<td>±0.005"</td>
</tr>
<tr>
<td>Aprons</td>
<td>White Oak</td>
<td>4" × 8" rectangular</td>
<td>±0.003"</td>
</tr>
<tr>
<td>Corners</td>
<td>Cast Iron</td>
<td>3" × 3" × 1/2" plates</td>
<td>Machined</td>
</tr>
<tr>
<td>Joinery</td>
<td>Hickory Pegs</td>
<td>3/4" diameter × 4" length</td>
<td>Press-fit</td>
</tr>
</tbody>
</table>
</section>
<section>
<h2>The Joinery</h2>
<p>My grandfather did not trust glue. Glue fails when the seasons turn. He trusted the mortise and tenon, pegged through with hickory harder than the oak itself.</p>
<div class="diagram-container">
<img src="https://images.pexels.com/photos/15102482/pexels-photo-15102482.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Vintage workbench with iron corners and maple top">
<div class="diagram-caption">Figure 1: The surviving workbench. Note the iron reinforcement at each corner—a decision made before the first cut.</div>
</div>
<h3>The Mortise</h3>
<p>Depth: 3 inches.<br>
Width: 1 inch, tapered 1° for draw-bore alignment.<br>
Wall tolerance: ±0.001" parallelism.</p>
<h3>The Tenon</h3>
<p>Length: 2.9 inches (for compression fit).<br>
Cheeks: Planed to 0.0005" deviation.<br>
Shoulders: Cut square to the grain, verified by try-square.</p>
<h3>The Peg</h3>
<p>Diameter: 0.752" (oversized by 0.002" for shrinkage).<br>
Material: Hickory (Carya ovata), moisture content 8%.<br>
Drive force: Calculated below.</p>
</section>
<section>
<h2>Thermal Expansion Calculator</h2>
<p>Wood moves with the season. Maple expands 0.000032" per °F perpendicular to grain. Oak expands 0.000028". If you ignore this, your bench cracks in January.</p>
<div class="formula-box">
<strong>ΔL = L₀ × α × ΔT</strong><br><br>
Where:<br>
• ΔL = Change in length (inches)<br>
• L₀ = Original length (inches)<br>
α = Coefficient of thermal expansion (per °F)<br>
• ΔT = Temperature change (°F)<br><br>
<em>Source: <a href="https://www.astm.org/d0143.html" target="_blank" style="color: var(--secondary-accent);">ASTM D143-20 Standard Test Methods for Small Clear Specimens of Timber</a></em>
</div>
<div class="calculator-section">
<h3 style="margin-top: 0;">Clamp Pressure Calculator</h3>
<p>Enter your lumber species and the expected temperature swing. The system calculates the required clamp pressure to prevent joint separation during seasonal shifts.</p>
<div class="calc-input-group">
<label for="species">Lumber Species</label>
<select id="species">
<option value="maple">Hard Maple (α = 0.000032/°F)</option>
<option value="oak">White Oak (α = 0.000028/°F)</option>
<option value="walnut">Black Walnut (α = 0.000024/°F)</option>
<option value="pine">Eastern White Pine (α = 0.000019/°F)</option>
</select>
</div>
<div class="calc-input-group">
<label for="length">Top Length (inches)</label>
<input type="number" id="length" value="96" min="12" max="200" step="1">
</div>
<div class="calc-input-group">
<label for="temp-swing">Temperature Swing (°F)</label>
<input type="number" id="temp-swing" value="80" min="10" max="150" step="1">
</div>
<button class="calc-button" onclick="calculatePressure()">Calculate Clamp Pressure</button>
<div class="calc-result" id="result">
<!-- Results appear here -->
</div>
</div>
</section>
<section>
<h2>The Lesson</h2>
<div class="lesson-box">
<p>"A workbench is not furniture. It is the extension of your arms. If it moves when you strike, you have already lost."</p>
<p style="text-align: right; font-size: 0.9rem;">— Joseph Danos, 1924</p>
</div>
<p>I built my first bench at age twelve using his notes. It still holds true. Today, I give those notes to you. Not as poetry. As instruction.</p>
</section>
<div class="data-twin">
Machine-readable specification twin: <a href="workbench.json">workbench.json</a> (2.5 KB)
</div>
<nav class="nav-links">
<a href="index.html">→ Main Archive</a>
<a href="grandfather-tools.html">→ Grandfather's Tools</a>
<a href="dovetail.html">→ The Dovetail Joint</a>
</nav>
<script>
const MATERIAL_PROPS = {
maple: { alpha: 0.000032, modulus: 1800000, density: 0.044 },
oak: { alpha: 0.000028, modulus: 1600000, density: 0.047 },
walnut: { alpha: 0.000024, modulus: 1400000, density: 0.041 },
pine: { alpha: 0.000019, modulus: 1100000, density: 0.028 }
};
function calculatePressure() {
const species = document.getElementById('species').value;
const length = parseFloat(document.getElementById('length').value);
const tempSwing = parseFloat(document.getElementById('temp-swing').value);
if (!length || !tempSwing) {
document.getElementById('result').innerHTML = '<strong>Error:</strong> All fields required.';
return;
}
const mat = MATERIAL_PROPS[species];
// Calculate dimensional change
const deltaL = length * mat.alpha * tempSwing;
// Calculate strain
const strain = deltaL / length;
// Calculate stress required to resist expansion (σ = E × ε)
const stress = mat.modulus * strain;
// Convert to psi for readability
const psi = stress;
// Minimum clamp pressure (factor of safety = 3)
const clampPressure = psi * 3;
const resultDiv = document.getElementById('result');
resultDiv.innerHTML = `
<strong>Species:</strong> ${species.toUpperCase()}<br>
<strong>Predicted Expansion:</strong> ${deltaL.toFixed(6)}"<br>
<strong>Induced Stress:</strong> ${psi.toFixed(2)} psi<br>
<strong>Required Clamp Pressure (SF=3):</strong> ${clampPressure.toFixed(2)} psi<br><br>
<em>Below this pressure, the joint will separate during extreme seasonal shift.</em>
`;
}
</script>
</body>
</html>

88
workbench.json Normal file
View File

@ -0,0 +1,88 @@
{
"title": "The Grandfather Workbench",
"built": "1924",
"verified_by": "Austin Danos",
"verification_date": "2023-11-15",
"location": "Slingerlands, NY",
"specifications": {
"top_slabs": {
"material": "Hard Maple (Acer saccharum)",
"dimensions": "4\" thick × 24\" wide × 8' long",
"tolerance": "±0.003\"",
"moisture_content": "8%"
},
"legs": {
"material": "White Oak (Quercus alba)",
"dimensions": "6\" × 6\" square",
"tolerance": "±0.005\""
},
"aprons": {
"material": "White Oak",
"dimensions": "4\" × 8\" rectangular",
"tolerance": "±0.003\""
},
"corners": {
"material": "Cast Iron",
"dimensions": "3\" × 3\" × 1/2\" plates",
"finish": "Machined"
},
"joinery_pegs": {
"material": "Hickory (Carya ovata)",
"dimensions": "3/4\" diameter × 4\" length",
"fit": "Press-fit (+0.002\")"
}
},
"joinery_details": {
"mortise": {
"depth_inches": 3.0,
"width_inches": 1.0,
"taper_degrees": 1,
"wall_parallelism_tolerance": "±0.001\""
},
"tenon": {
"length_inches": 2.9,
"cheek_deviation": "0.0005\"",
"shoulder_square": "Verified by try-square"
},
"peg": {
"diameter_inches": 0.752,
"moisture_content_percent": 8,
"drive_force_method": "Calculated per thermal stress model"
}
},
"thermal_expansion_coefficients": {
"hard_maple_per_F": 0.000032,
"white_oak_per_F": 0.000028,
"black_walnut_per_F": 0.000024,
"eastern_white_pine_per_F": 0.000019
},
"modulus_of_rupture_psi": {
"hard_maple": 1800000,
"white_oak": 1600000,
"black_walnut": 1400000,
"eastern_white_pine": 1100000
},
"density_lb_per_cubic_inch": {
"hard_maple": 0.044,
"white_oak": 0.047,
"black_walnut": 0.041,
"eastern_white_pine": 0.028
},
"formula": {
"expansion": "ΔL = L₀ × α × ΔT",
"stress": "σ = E × ε",
"strain": "ε = ΔL / L₀",
"source": "ASTM D143-20 Standard Test Methods for Small Clear Specimens of Timber"
},
"safety_factor": 3,
"quote": {
"text": "A workbench is not furniture. It is the extension of your arms. If it moves when you strike, you have already lost.",
"author": "Joseph Danos",
"year": 1924
},
"related_pages": [
"https://austin-danos.4ort.net/grandfather-tools.html",
"https://austin-danos.4ort.net/dovetail.html",
"https://austin-danos.4ort.net/prevention-ledger.html"
]
}