publish: senior-center-bench
This commit is contained in:
commit
ea6c5f54c4
11
README.md
Normal file
11
README.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# senior-center-bench
|
||||||
|
|
||||||
|
Build log for the senior center oak bench: cut list, mortise-tenon drawbore joinery, finish schedule, and the failures that taught more.
|
||||||
|
|
||||||
|
**Live demo:** https://andrew-beardsworth.4ort.net/wooden-bench-film.html
|
||||||
|
|
||||||
|
## Related in the galaxy
|
||||||
|
|
||||||
|
- https://andrew-beardsworth.4ort.mov/woo
|
||||||
|
|
||||||
|
_Built by andrew-beardsworth in the 4ort galaxy._
|
||||||
105
about.html
Normal file
105
about.html
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>About Andrew Beardsworth</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="About Andrew Beardsworth">
|
||||||
|
<meta property="og:description" content="Andrew Beardsworth is a 93-year-old retired carpenter and senior-center coordinator from Canton, Ohio. He has spent his career in woodworking and…">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/about.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="Andrew Beardsworth is a 93-year-old retired carpenter and senior-center coordinator from Canton, Ohio. He has spent his career in woodworking and…">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Times New Roman', Times, serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
nav {
|
||||||
|
background-color: #556b2f;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
color: white;
|
||||||
|
margin: 0 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #6b8e23;
|
||||||
|
}
|
||||||
|
.image-gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1rem;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.image-gallery img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.image-gallery figcaption {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: italic;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem 0;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>About Andrew Beardsworth</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="about.html">About</a>
|
||||||
|
<a href="contact.html">Contact</a>
|
||||||
|
<a href="negros-fruit-dove.html">Negros Fruit Dove Conservation</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section>
|
||||||
|
<h2>Background</h2>
|
||||||
|
<p>Andrew Beardsworth is a 93-year-old retired carpenter and senior-center coordinator from Canton, Ohio. He has spent his career in woodworking and mechanical repair, bringing a lifetime of practical skill to his community.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Community Involvement</h2>
|
||||||
|
<p>Andrew is deeply involved in his community, organizing bingo nights, mentoring young volunteers, and ensuring every budget line is balanced before his morning coffee. He values routine, service, and the quiet satisfaction of a job done right.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Personal Interests</h2>
|
||||||
|
<p>In his free time, Andrew enjoys listening to big-band swing and tending to his garden. He is known for his steady hand and his dedication to keeping the local center running smoothly.</p>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 Andrew Beardsworth. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
161
community-gardening.html
Normal file
161
community-gardening.html
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
<!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.0">
|
||||||
|
<title>Community Gardening</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Community Gardening">
|
||||||
|
<meta property="og:description" content="Community gardening is a wonderful way to bring people together and grow fresh, healthy food. It">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/18475676/pexels-photo-18475676.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/community-gardening.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="Community gardening is a wonderful way to bring people together and grow fresh, healthy food. It's also a great way to connect with nature and learn about…">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Georgia', serif;
|
||||||
|
line-height: 1.6;
|
||||||
|
color: #333;
|
||||||
|
background-color: #f5f5dc;
|
||||||
|
background-image: url('https://images.unsplash.com/photo-1501854140801-50d01698950b');
|
||||||
|
background-size: cover;
|
||||||
|
background-attachment: fixed;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background-color: rgba(245, 245, 220, 0.8);
|
||||||
|
padding: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 2px solid #d4a762;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
color: #5e8c5e;
|
||||||
|
font-size: 2.5rem;
|
||||||
|
}
|
||||||
|
nav {
|
||||||
|
background-color: rgba(212, 167, 98, 0.8);
|
||||||
|
padding: 1rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
color: #fff;
|
||||||
|
text-decoration: none;
|
||||||
|
margin: 0 1rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
main {
|
||||||
|
padding: 2rem;
|
||||||
|
max-width: 1200px;
|
||||||
|
margin: 0 auto;
|
||||||
|
background-color: rgba(255, 255, 255, 0.9);
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
section {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
color: #5e8c5e;
|
||||||
|
border-bottom: 2px solid #d4a762;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.image-container {
|
||||||
|
text-align: center;
|
||||||
|
margin: 2rem 0;
|
||||||
|
}
|
||||||
|
.image-container img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border-radius: 10px;
|
||||||
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
background-color: rgba(245, 245, 220, 0.8);
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem;
|
||||||
|
border-top: 2px solid #d4a762;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Community Gardening</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="community-gardening.html">Community Gardening</a>
|
||||||
|
<a href="woodworking.html">Woodworking</a>
|
||||||
|
</nav>
|
||||||
|
<main>
|
||||||
|
<section>
|
||||||
|
<h2>Introduction</h2>
|
||||||
|
<p>Community gardening is a wonderful way to bring people together and grow fresh, healthy food. It's also a great way to connect with nature and learn about sustainable living.</p>
|
||||||
|
<div class="image-container">
|
||||||
|
<img src="https://images.pexels.com/photos/18475676/pexels-photo-18475676.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Community Garden">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Getting Started</h2>
|
||||||
|
<p>Starting a community garden is easier than you might think. Here are some tips to get you started:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Find a suitable location with good soil and sunlight.</li>
|
||||||
|
<li>Involve the community in the planning and design of the garden.</li>
|
||||||
|
<li>Establish rules and guidelines for gardeners to follow.</li>
|
||||||
|
<li>Provide tools, seeds, and other resources for gardeners.</li>
|
||||||
|
</ul>
|
||||||
|
<div class="image-container">
|
||||||
|
<img src="https://pixabay.com/get/g7c8b62a036a8f073565db8263c5c5b9ce8c38f4c88b5294574563f89184b9cd002002532999a5f138bb24f0cf274ae1ccbb06c92abd90004f5323e793606c63e_1280.jpg" alt="Sunflower">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Benefits of Community Gardening</h2>
|
||||||
|
<p>Community gardening offers numerous benefits, including:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Improved physical and mental health.</li>
|
||||||
|
<li>Reduced food costs.</li>
|
||||||
|
<li>Increased access to fresh, healthy food.</li>
|
||||||
|
<li>Strengthened sense of community and belonging.</li>
|
||||||
|
</ul>
|
||||||
|
<div class="image-container">
|
||||||
|
<img src="https://pixabay.com/get/g4d0fc3391a8e1a2db7b85840fa7762c7b1272a188ed459a86514783f135b7b684893a914671ed562f4e4d65b59e6b98df095a2ffd50a25be0ee869eca28e3ac8_1200.jpg" alt="Plant">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Community Gardening in Action</h2>
|
||||||
|
<p>Here's a story of a community garden that started with a single gardener and grew into a thriving community effort:</p>
|
||||||
|
<p>One gardener, inspired by the beauty of nature and the desire to share the bounty of the garden with neighbors, decided to start a community garden. With the help of friends and family, they cleared a patch of land and planted the first rows of vegetables and flowers. Word spread quickly, and soon, the garden was bustling with activity. Neighbors brought their own tools and seeds, and together, they transformed a barren plot into a vibrant, productive garden.</p>
|
||||||
|
<p>As the garden grew, so did the sense of community. Gardeners shared their knowledge and skills, and the garden became a place where people could come together to work, socialize, and enjoy the fruits of their labor. The garden not only provided fresh, healthy food but also strengthened the bonds between neighbors and created a sense of pride and ownership in their community.</p>
|
||||||
|
<div class="image-container">
|
||||||
|
<img src="https://images.pexels.com/photos/27742358/pexels-photo-27742358.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Gardener">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Latest Gardening News</h2>
|
||||||
|
<fort-news topic="gardening" limit="3"><ul class="fort-news" data-fort="news" data-topic="gardening"><li><a href="https://www.westernpeople.ie/whatson/swinford-agricultural-show-set-for-spectacular-35th-anniversary-celebration_arid-108917.html" rel="noopener">Swinford Agricultural Show set for spectacular 35th anniversary celebration - What</a> <span class="src">westernpeople.ie</span></li><li><a href="http://www.merkur.de/wirtschaft/betroffen-filialen-baumarkt-insolvenz-kette-hellweg-auch-baywa-maerkte-zr-94452576.html" rel="noopener">Insolvenz: Baumarktkette verschwindet für immer - erste Filialen schließen</a> <span class="src">merkur.de</span></li><li><a href="https://diariocorreo.pe/edicion/lambayeque/essalud-paga-s150-mil-por-bombear-aguas-servidas-del-almanzor-aguinaga-en-chiclayo-noticia/" rel="noopener">EsSalud paga S/150 mil por bombear aguas servidas del Almanzor Aguinaga en Chiclayo</a> <span class="src">diariocorreo.pe</span></li></ul></fort-news>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<p>© 2026 Community Gardening. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
24
community-gardening.json
Normal file
24
community-gardening.json
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"news": [
|
||||||
|
{
|
||||||
|
"topic": "gardening",
|
||||||
|
"items": [
|
||||||
|
{
|
||||||
|
"title": "Swinford Agricultural Show set for spectacular 35th anniversary celebration - What",
|
||||||
|
"url": "https://www.westernpeople.ie/whatson/swinford-agricultural-show-set-for-spectacular-35th-anniversary-celebration_arid-108917.html",
|
||||||
|
"domain": "westernpeople.ie"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Insolvenz: Baumarktkette verschwindet für immer - erste Filialen schließen",
|
||||||
|
"url": "http://www.merkur.de/wirtschaft/betroffen-filialen-baumarkt-insolvenz-kette-hellweg-auch-baywa-maerkte-zr-94452576.html",
|
||||||
|
"domain": "merkur.de"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "EsSalud paga S/150 mil por bombear aguas servidas del Almanzor Aguinaga en Chiclayo",
|
||||||
|
"url": "https://diariocorreo.pe/edicion/lambayeque/essalud-paga-s150-mil-por-bombear-aguas-servidas-del-almanzor-aguinaga-en-chiclayo-noticia/",
|
||||||
|
"domain": "diariocorreo.pe"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
105
contact.html
Normal file
105
contact.html
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Contact Andrew Beardsworth</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Contact Andrew Beardsworth">
|
||||||
|
<meta property="og:description" content="If you have any questions or would like to get in touch with Andrew Beardsworth, please feel free to reach out using the information below.">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/contact.html">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="If you have any questions or would like to get in touch with Andrew Beardsworth, please feel free to reach out using the information below.">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Times New Roman', Times, serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
nav {
|
||||||
|
background-color: #556b2f;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
color: white;
|
||||||
|
margin: 0 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #6b8e23;
|
||||||
|
}
|
||||||
|
.image-gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1rem;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.image-gallery img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.image-gallery figcaption {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: italic;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem 0;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Contact Andrew Beardsworth</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="about.html">About</a>
|
||||||
|
<a href="contact.html">Contact</a>
|
||||||
|
<a href="negros-fruit-dove.html">Negros Fruit Dove Conservation</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section>
|
||||||
|
<h2>Get in Touch</h2>
|
||||||
|
<p>If you have any questions or would like to get in touch with Andrew Beardsworth, please feel free to reach out using the information below.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Contact Information</h2>
|
||||||
|
<ul>
|
||||||
|
<li>Email: andrew.beardsworth@example.com</li>
|
||||||
|
<li>Phone: (123) 456-7890</li>
|
||||||
|
<li>Address: 123 Main Street, Canton, Ohio, 44702</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 Andrew Beardsworth. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
11
films/mortise-tenon/hyperframe.json
Normal file
11
films/mortise-tenon/hyperframe.json
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"captions": true,
|
||||||
|
"voice": "af_nova",
|
||||||
|
"music_url": "https://4ort.live/v1/mtv/video/b49ca79b4403?download=1",
|
||||||
|
"scenes": [
|
||||||
|
{ "id": "s1", "narration": "In a woodshop, most things that break fail where two pieces meet. For sixty years I have trusted the oldest answer there is: the mortise and tenon. It is not flashy. It is a tongue cut on one piece, a socket chopped in the other, and the two pulled tight until they become one for a hundred years." },
|
||||||
|
{ "id": "s2", "narration": "Begin with the tenon. Lay it out with a sharp pencil and a square, mark the shoulders, then saw to the line and saw straight. A tenon cut true goes home without force. If you have to fight it, the mistake is already made. The wood should guide your hand, not the other way round." },
|
||||||
|
{ "id": "s3", "narration": "Now the mortise. Mark it the same way, then chop with a chisel worked square and for even depth. Right down the middle, wall to wall, so the socket is a clean room with flat sides. Rough work here shows at the shoulder. Take your time. A tired evening ruins a good morning's layout." },
|
||||||
|
{ "id": "s4", "narration": "The final trick is the drawbore: offset the peg holes by a hair, drive the peg, and it draws the shoulder tight as a drum. No glue can do that. Then the joint is not held together. It wants to stay. Patience, square, and true. That is the whole trade, and it has never let me down." }
|
||||||
|
]
|
||||||
|
}
|
||||||
97
films/mortise-tenon/index.html
Normal file
97
films/mortise-tenon/index.html
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html><head>
|
||||||
|
<meta name="description" content="From the woodshop The Mortise &amp; Tenon: A joint that holds a hundred years Part one — the tenon You cut the tongue that will ride inside the socket…"><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:#151008;color:#f2e8d5;font-family:Georgia,'Times New Roman',serif}
|
||||||
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden;background:#1a120a}
|
||||||
|
.clip{position:absolute;inset:0;display:grid;place-items:center}
|
||||||
|
.veil{position:absolute;inset:0;background:
|
||||||
|
radial-gradient(1200px 700px at 50% 40%, rgba(60,40,18,.35), rgba(0,0,0,.7))}
|
||||||
|
h1{font-size:120px;line-height:1.08;margin:0;font-weight:normal;letter-spacing:.5px;text-align:center;max-width:1500px}
|
||||||
|
h2{font-size:64px;line-height:1.2;margin:0;font-weight:normal;text-align:center;max-width:1500px}
|
||||||
|
.kicker{font-size:34px;letter-spacing:6px;text-transform:uppercase;color:#c99a5b;margin-bottom:30px;text-align:center}
|
||||||
|
.joint{position:absolute;bottom:80px;right:90px}
|
||||||
|
.joint .bar{position:absolute;background:#b98a50;border:3px solid #5b3f1f}
|
||||||
|
.joint .peg{position:absolute;background:#7a542c;border:2px solid #3f2b12;border-radius:50%}
|
||||||
|
.card{position:absolute;inset:0;display:grid;place-items:end start;padding:90px;box-sizing:border-box}
|
||||||
|
.card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
|
||||||
|
.caption{position:relative;background:rgba(20,14,6,.78);padding:40px 56px;max-width:820px;border-left:6px solid #c99a5b}
|
||||||
|
.caption h2{margin:0;text-align:left;font-size:52px;line-height:1.25}
|
||||||
|
.foot{position:absolute;bottom:60px;left:0;right:0;text-align:center;font-size:34px;letter-spacing:4px;color:#caa97a;text-transform:uppercase}
|
||||||
|
</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="70">
|
||||||
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
||||||
|
<audio id="voice-s2" src="audio/s2.wav" data-start="18"></audio>
|
||||||
|
<audio id="voice-s3" src="audio/s3.wav" data-start="36"></audio>
|
||||||
|
<audio id="voice-s4" src="audio/s4.wav" data-start="52"></audio>
|
||||||
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.16"></audio>
|
||||||
|
|
||||||
|
<!-- Scene 1 : opening -->
|
||||||
|
<section id="s1" class="clip" data-start="0" data-duration="18" data-track-index="1">
|
||||||
|
<div class="veil"></div>
|
||||||
|
<div style="position:relative;text-align:center">
|
||||||
|
<div class="kicker" id="s1-kick">From the woodshop</div>
|
||||||
|
<h1 id="s1-title">The Mortise & Tenon:<br/>A joint that holds<br/>a hundred years</h1>
|
||||||
|
</div>
|
||||||
|
<svg class="joint" width="320" height="320" viewBox="0 0 320 320" id="s1-joint">
|
||||||
|
<rect x="40" y="110" width="240" height="36" fill="#b98a50" stroke="#5b3f1f" stroke-width="3"/>
|
||||||
|
<rect x="110" y="90" width="100" height="176" fill="#a87c43" stroke="#5b3f1f" stroke-width="3"/>
|
||||||
|
</svg>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Scene 2 : the tenon -->
|
||||||
|
<section id="s2" class="clip" data-start="18" data-duration="18" data-track-index="1">
|
||||||
|
<img id="s2-img" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.42" src="https://pixabay.com/get/gbcf7a2417bab1e5288b8b6ab3555627b002acae4fc609b0410bb87b51aec3127cbd3d6f9aaad1ea8ba8b70e8e2480e9c7201a6d0594ef9fb58c7eb403af30e76_1280.png" alt="tenon saw"/>
|
||||||
|
<div class="veil"></div>
|
||||||
|
<div style="position:relative;text-align:center">
|
||||||
|
<div class="kicker" id="s2-kick">Part one — the tenon</div>
|
||||||
|
<h2 id="s2-title">You cut the tongue that<br/>will ride inside the socket</h2>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Scene 3 : the mortise -->
|
||||||
|
<section id="s3" class="clip" data-start="36" data-duration="16" data-track-index="1">
|
||||||
|
<img id="s3-img" style="position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.45" src="https://images.pexels.com/photos/7109997/pexels-photo-7109997.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="chiseling a mortise"/>
|
||||||
|
<div class="veil"></div>
|
||||||
|
<div style="position:relative;text-align:center">
|
||||||
|
<div class="kicker" id="s3-kick">Part two — the socket</div>
|
||||||
|
<h2 id="s3-title">Then you chop the mortise,<br/>straight and square,<br/>wall to wall</h2>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Scene 4 : the drawbore -->
|
||||||
|
<section id="s4" class="clip" data-start="52" data-duration="18" data-track-index="1">
|
||||||
|
<div class="veil"></div>
|
||||||
|
<div style="position:relative;text-align:center">
|
||||||
|
<div class="kicker" id="s4-kick">The last truth</div>
|
||||||
|
<h2 id="s4-title">Drive the peg and it<br/>draws the shoulders<br/>tight for good</h2>
|
||||||
|
</div>
|
||||||
|
<div class="foot" id="s4-foot">Patience · Square · True — A Beardsworth short</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
window.__timelines = window.__timelines || {};
|
||||||
|
const tl = gsap.timeline({ paused: true });
|
||||||
|
// s1
|
||||||
|
tl.from("#s1-title", { opacity: 0, y: 40, duration: 0.8, ease: "power3.out" }, 0.4);
|
||||||
|
tl.from("#s1-kick", { opacity: 0, letterSpacing: 16, duration: 0.7, ease: "power2.out" }, 0.2);
|
||||||
|
tl.from("#s1-joint", { opacity: 0, y: 60, duration: 1.0, ease: "power3.out" }, 1.4);
|
||||||
|
// s2
|
||||||
|
tl.from("#s2-title", { opacity: 0, y: 30, duration: 0.7, ease: "power3.out" }, 18.6);
|
||||||
|
tl.from("#s2-kick", { opacity: 0, duration: 0.5 }, 18.3);
|
||||||
|
tl.to("#s2-img", { scale: 1.08, duration: 12, ease: "power1.out" }, 19);
|
||||||
|
// s3
|
||||||
|
tl.from("#s3-title", { opacity: 0, y: 30, duration: 0.7, ease: "power3.out" }, 36.6);
|
||||||
|
tl.from("#s3-kick", { opacity: 0, duration: 0.5 }, 36.3);
|
||||||
|
tl.from("#s3-title", { scale: 1.04, duration: 9, ease: "power1.out" }, 37);
|
||||||
|
// s4
|
||||||
|
tl.from("#s4-title", { opacity: 0, y: 30, duration: 0.7, ease: "power3.out" }, 52.6);
|
||||||
|
tl.from("#s4-kick", { opacity: 0, duration: 0.5 }, 52.3);
|
||||||
|
tl.from("#s4-foot", { opacity: 0, duration: 0.9 }, 60);
|
||||||
|
tl.to("#s4-title", { opacity: 0.2, duration: 1.2, ease: "power1.in" }, 66.5);
|
||||||
|
window.__timelines["main"] = tl;
|
||||||
|
</script>
|
||||||
|
</body></html>
|
||||||
23
films/wooden-bench/hyperframe.json
Normal file
23
films/wooden-bench/hyperframe.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"captions": true,
|
||||||
|
"voice": "af_nova",
|
||||||
|
"music_url": "https://4ort.live/v1/mtv/video/a24abe50d640?download=1",
|
||||||
|
"scenes": [
|
||||||
|
{
|
||||||
|
"id": "s1",
|
||||||
|
"narration": "Welcome to our workshop. Today, we're building a simple wooden bench for the senior center. It's a practical project that anyone can tackle with a few basic tools."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s2",
|
||||||
|
"narration": "Start by cutting your lumber to size. You'll need four legs, two long supports, and several slats for the seat. Remember, measure twice and cut once to avoid mistakes."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s3",
|
||||||
|
"narration": "Next, assemble the frame using wood glue and screws. Pre-drill your holes to prevent the wood from splitting. A sturdy frame is the foundation of a good bench."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "s4",
|
||||||
|
"narration": "Finally, sand everything smooth and apply a coat of varnish. This will protect the wood and give your bench a professional finish. Now, it's ready for the senior center!"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
49
films/wooden-bench/index.html
Normal file
49
films/wooden-bench/index.html
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html><head>
|
||||||
|
<meta name="description" content="Measure twice, cut once. We'll need four legs, two long supports, and slats for the seat."><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:#0b0f14;color:#fff;font-family:Inter,system-ui,sans-serif}
|
||||||
|
#root{position:relative;width:1920px;height:1080px;overflow:hidden}
|
||||||
|
.clip{position:absolute;inset:0;display:grid;place-items:center}
|
||||||
|
</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="90">
|
||||||
|
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.15"></audio>
|
||||||
|
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
|
||||||
|
<audio id="voice-s2" src="audio/s2.wav" data-start="15"></audio>
|
||||||
|
<audio id="voice-s3" src="audio/s3.wav" data-start="45"></audio>
|
||||||
|
<audio id="voice-s4" src="audio/s4.wav" data-start="75"></audio>
|
||||||
|
|
||||||
|
<section id="s1" class="clip" data-start="0" data-duration="15" data-track-index="1">
|
||||||
|
<h1 id="s1-title">Building a Simple Wooden Bench</h1>
|
||||||
|
<p id="s1-subtitle">For the Senior Center</p>
|
||||||
|
</section>
|
||||||
|
<section id="s2" class="clip" data-start="15" data-duration="30" data-track-index="1">
|
||||||
|
<h2 id="s2-title">Cutting the Lumber</h2>
|
||||||
|
<p id="s2-content">Measure twice, cut once. We'll need four legs, two long supports, and slats for the seat.</p>
|
||||||
|
</section>
|
||||||
|
<section id="s3" class="clip" data-start="45" data-duration="30" data-track-index="1">
|
||||||
|
<h2 id="s3-title">Assembling the Frame</h2>
|
||||||
|
<p id="s3-content">Use wood glue and screws for a sturdy frame. Pre-drill holes to avoid splitting.</p>
|
||||||
|
</section>
|
||||||
|
<section id="s4" class="clip" data-start="75" data-duration="15" data-track-index="1">
|
||||||
|
<h2 id="s4-title">Finishing Touches</h2>
|
||||||
|
<p id="s4-content">Sand everything smooth and apply a coat of varnish for durability.</p>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
window.__timelines = window.__timelines || {};
|
||||||
|
const tl = gsap.timeline({ paused: true });
|
||||||
|
tl.to("#s1-title", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 0.2);
|
||||||
|
tl.to("#s1-subtitle", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 0.5);
|
||||||
|
tl.to("#s2-title", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 15.2);
|
||||||
|
tl.to("#s2-content", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 15.5);
|
||||||
|
tl.to("#s3-title", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 45.2);
|
||||||
|
tl.to("#s3-content", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 45.5);
|
||||||
|
tl.to("#s4-title", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 75.2);
|
||||||
|
tl.to("#s4-content", { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 75.5);
|
||||||
|
window.__timelines["main"] = tl;
|
||||||
|
</script>
|
||||||
|
</body></html>
|
||||||
111
index.html
Normal file
111
index.html
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Andrew Beardsworth - Carpenter & Community Coordinator</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Andrew Beardsworth - Carpenter & Community Coordinator">
|
||||||
|
<meta property="og:description" content="Retired Carpenter & Senior Center Coordinator from Canton, Ohio">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/">
|
||||||
|
<meta name="twitter:card" content="summary">
|
||||||
|
<meta name="description" content="Retired Carpenter & Senior Center Coordinator from Canton, Ohio">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Times New Roman', Times, serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
nav {
|
||||||
|
background-color: #556b2f;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
color: white;
|
||||||
|
margin: 0 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #6b8e23;
|
||||||
|
}
|
||||||
|
.image-gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1rem;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.image-gallery img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.image-gallery figcaption {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: italic;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem 0;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Andrew Beardsworth</h1>
|
||||||
|
<p>Retired Carpenter & Senior Center Coordinator from Canton, Ohio</p>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="about.html">About</a>
|
||||||
|
<a href="contact.html">Contact</a>
|
||||||
|
<a href="wooden-bench-film.html">The Senior Center Bench</a>
|
||||||
|
<a href="negros-fruit-dove.html">Negros Fruit Dove Conservation</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section>
|
||||||
|
<h2>Welcome</h2>
|
||||||
|
<p>I'm Andrew Beardsworth, a 93-year-old retired carpenter and senior-center coordinator from Canton, Ohio. I spend my days organizing bingo nights, mentoring young volunteers, and ensuring every budget line is balanced before my morning coffee.</p>
|
||||||
|
<p>With a background in woodworking and mechanical repair, I bring a lifetime of practical skill to my community, all while listening to big-band swing and tending my garden. I'm the steady hand that keeps the local center running, valuing routine, service, and the quiet satisfaction of a job done right.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Recent Projects</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="wooden-bench-film.html"><strong>NEW: The Senior Center Bench — A Build Log</strong></a> — the full sheet behind the 90-second film: cut list, mortise & tenon, drawbore pegs, and the two mistakes that teach the most.</li>
|
||||||
|
<li><a href="negros-fruit-dove.html">Negros Fruit Dove Conservation</a> - A page about the critically endangered Negros Fruit Dove</li>
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>My Films</h2>
|
||||||
|
<fort-film name="andrew-beardsworth">My workbench films — the mortise and tenon, and the senior center bench.</fort-film>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 Andrew Beardsworth. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
130
negros-fruit-dove.html
Normal file
130
negros-fruit-dove.html
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Negros Fruit Dove Conservation</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="Negros Fruit Dove Conservation">
|
||||||
|
<meta property="og:description" content="The Negros Fruit Dove, scientifically known as Ptilinopus arcanus , is a critically endangered species of bird found in the Philippines. This dove is…">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/13205080/pexels-photo-13205080.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/negros-fruit-dove.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="The Negros Fruit Dove, scientifically known as Ptilinopus arcanus , is a critically endangered species of bird found in the Philippines. This dove is…">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Times New Roman', Times, serif;
|
||||||
|
background-color: #f4f4f4;
|
||||||
|
color: #333;
|
||||||
|
line-height: 1.6;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
header {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
padding: 1rem 0;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
nav {
|
||||||
|
background-color: #556b2f;
|
||||||
|
padding: 0.5rem 0;
|
||||||
|
}
|
||||||
|
nav a {
|
||||||
|
color: white;
|
||||||
|
margin: 0 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1, h2, h3 {
|
||||||
|
color: #6b8e23;
|
||||||
|
}
|
||||||
|
.image-gallery {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 1rem;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.image-gallery img {
|
||||||
|
max-width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
.image-gallery figcaption {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 0.5rem;
|
||||||
|
font-style: italic;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
footer {
|
||||||
|
background-color: #6b8e23;
|
||||||
|
color: white;
|
||||||
|
text-align: center;
|
||||||
|
padding: 1rem 0;
|
||||||
|
position: fixed;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<h1>Negros Fruit Dove Conservation</h1>
|
||||||
|
</header>
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="about.html">About</a>
|
||||||
|
<a href="contact.html">Contact</a>
|
||||||
|
</nav>
|
||||||
|
<div class="container">
|
||||||
|
<section>
|
||||||
|
<h2>Introduction</h2>
|
||||||
|
<p>The Negros Fruit Dove, scientifically known as <em>Ptilinopus arcanus</em>, is a critically endangered species of bird found in the Philippines. This dove is known for its vibrant plumage and is an important part of the local ecosystem.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Conservation Status</h2>
|
||||||
|
<p>The Negros Fruit Dove is listed as Critically Endangered by the IUCN. The primary threats to this species include habitat loss, hunting, and climate change. Conservation efforts are crucial to ensure the survival of this beautiful bird.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Conservation Efforts</h2>
|
||||||
|
<p>Several conservation projects are underway to protect the Negros Fruit Dove. These include habitat restoration, anti-poaching measures, and community education programs. The involvement of local communities is vital for the success of these efforts.</p>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<h2>Image Gallery</h2>
|
||||||
|
<div class="image-gallery">
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/13205080/pexels-photo-13205080.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Negros Fruit Dove">
|
||||||
|
<figcaption>Close-up of a vibrant superb fruit dove perched outdoors in Mosman.</figcaption>
|
||||||
|
</figure>
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/37518535/pexels-photo-37518535.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Negros Fruit Dove">
|
||||||
|
<figcaption>Colorful Pink-headed Fruit Dove perched on a branch, showcasing vibrant colors.</figcaption>
|
||||||
|
</figure>
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/11423845/pexels-photo-11423845.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Negros Fruit Dove">
|
||||||
|
<figcaption>Close-up of a vibrant superb fruit dove (Ptilinopus superbus) perched on a branch.</figcaption>
|
||||||
|
</figure>
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/20858541/pexels-photo-20858541.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Negros Fruit Dove">
|
||||||
|
<figcaption>A vibrant black-naped fruit dove perched on a branch with green features.</figcaption>
|
||||||
|
</figure>
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/16218333/pexels-photo-16218333.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Negros Fruit Dove">
|
||||||
|
<figcaption>A close-up of an Eurasian collared dove perching on a fruit outdoors.</figcaption>
|
||||||
|
</figure>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
<footer>
|
||||||
|
<p>© 2024 Negros Fruit Dove Conservation. All rights reserved.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
126
wooden-bench-film.html
Normal file
126
wooden-bench-film.html
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>The Senior Center Bench - A Build Log</title>
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:title" content="The Senior Center Bench - A Build Log">
|
||||||
|
<meta property="og:description" content="A plain-shop build log for the wooden bench I made for the Canton senior center, with dimensions, joinery, and the mistakes that teach more than the successes.">
|
||||||
|
<meta property="og:image" content="https://images.pexels.com/photos/5974285/pexels-photo-5974285.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
|
||||||
|
<meta property="og:url" content="https://andrew-beardsworth.4ort.net/wooden-bench-film.html">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="description" content="A plain-shop build log for the wooden bench I made for the Canton senior center, with dimensions, joinery, and the mistakes that teach more than the successes.">
|
||||||
|
<style>
|
||||||
|
:root{
|
||||||
|
--ink:#2b2b2b;
|
||||||
|
--paper:#e8e0cc;
|
||||||
|
--accent:#8a3324;
|
||||||
|
--rule:#8a7a5a;
|
||||||
|
--serif:Georgia, 'Times New Roman', serif;
|
||||||
|
--mono:'Courier New', Courier, monospace;
|
||||||
|
}
|
||||||
|
*{box-sizing:border-box;}
|
||||||
|
body{
|
||||||
|
margin:0;
|
||||||
|
background:var(--paper);
|
||||||
|
color:var(--ink);
|
||||||
|
font-family:var(--serif);
|
||||||
|
background-image:
|
||||||
|
radial-gradient(circle at 20% 10%, rgba(138,122,90,.06) 0, transparent 40%),
|
||||||
|
linear-gradient(rgba(138,122,90,.05) 1px, transparent 1px),
|
||||||
|
linear-gradient(90deg, rgba(138,122,90,.05) 1px, transparent 1px);
|
||||||
|
background-size:100% 100%, 28px 28px, 28px 28px;
|
||||||
|
line-height:1.55;
|
||||||
|
}
|
||||||
|
header{max-width:760px;margin:0 auto;padding:2.5rem 1.5rem 1rem;}
|
||||||
|
.kicker{font-family:var(--mono);font-size:.8rem;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);}
|
||||||
|
h1{font-size:2.3rem;line-height:1.1;margin:.4rem 0 .5rem;}
|
||||||
|
.lede{font-size:1.05rem;color:#4a4436;}
|
||||||
|
main{max-width:760px;margin:0 auto;padding:0 1.5rem 3rem;}
|
||||||
|
figure{margin:1.8rem 0;}
|
||||||
|
figure img{max-width:100%;border:1px solid var(--rule);box-shadow:0 3px 10px rgba(43,43,43,.15);}
|
||||||
|
figcaption{font-family:var(--mono);font-size:.75rem;color:#5a5240;margin-top:.5rem;}
|
||||||
|
h2{font-size:1.4rem;margin-top:2.4rem;color:var(--accent);border-bottom:2px solid var(--rule);padding-bottom:.3rem;}
|
||||||
|
.cut-list{background:#f2ead6;border:1px solid var(--rule);padding:1rem 1.2rem;font-family:var(--mono);font-size:.85rem;}
|
||||||
|
.cut-list li{margin:.3rem 0;}
|
||||||
|
table{width:100%;border-collapse:collapse;font-size:.92rem;margin:1rem 0;}
|
||||||
|
th,td{border:1px solid var(--rule);padding:.5rem .6rem;text-align:left;}
|
||||||
|
th{background:#d9cdaf;font-family:var(--mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;}
|
||||||
|
blockquote{border-left:4px solid var(--accent);margin:1.4rem 0;padding:.3rem 1.2rem;font-style:italic;color:#4a4436;}
|
||||||
|
.note{background:#f2ead6;border-left:4px solid var(--rule);padding:.8rem 1.2rem;font-size:.95rem;margin:1.2rem 0;}
|
||||||
|
.note b{color:var(--accent);}
|
||||||
|
footer{max-width:760px;margin:0 auto;padding:0 1.5rem 3rem;}
|
||||||
|
.film-embed{border:1px solid var(--rule);background:#f2ead6;padding:1rem;text-align:center;}
|
||||||
|
.film-embed a{color:var(--accent);font-weight:bold;}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<div class="kicker">Build Log 03 / Filed by Andrew Beardsworth</div>
|
||||||
|
<h1>The Senior Center Bench</h1>
|
||||||
|
<p class="lede">Two six-foot benches I built for the Canton senior center, out of white oak and patience. What I measured, what I cut, and the two mistakes that taught the most.</p>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/5974285/pexels-photo-5974285.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Cutting a plank square on the workbench">
|
||||||
|
<figcaption>FIG. 1 — A cut is only as good as the layout before it.</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<h2>The Job</h2>
|
||||||
|
<p>When the center put out word that the back porch needed seating that could take the weather and a heavy hip, I offered oak. Pine would've been cheaper and half the weight, but pine dents and rots where oak shrugs. White oak, air-dried twelve months, nothing fancy. The film I made walks through the tenon and the drawbore peg; this page is the full sheet behind it.</p>
|
||||||
|
|
||||||
|
<h2>Cut List</h2>
|
||||||
|
<ul class="cut-list">
|
||||||
|
<li>2 x seat slats, 72" x 6" x 1 1/8"</li>
|
||||||
|
<li>2 x stretchers, 22" x 5" x 1 1/8"</li>
|
||||||
|
<li>4 x legs, 20" x 5" x 1 1/8" — mortised for the stretchers</li>
|
||||||
|
<li>2 x end caps, cut from the same leg stock, 20" x 2 1/2"</li>
|
||||||
|
<li>8 x drawbore pegs, 3/8" oak dowel</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>Two benches, same cut list twice. The half-lap at each end cap lets the whole thing rack into one piece that won't wobble. You want a bench that fights you when you lean back on it? Skip the caps. I didn't skip the caps.</p>
|
||||||
|
|
||||||
|
<h2>Joints</h2>
|
||||||
|
<p>The essential joint is a mortise and tenon, same as the older film on my channel. One-and-a-half inches wide, an inch deep, pegged through. I cut the tenon shoulders dead square and let the drawbore do the pulling. Hole in mortise, hole in tenon, second hole set a sixteenth closer to the shoulder so the peg hauls the joint tight under load. That sixteenth is the whole trick.</p>
|
||||||
|
|
||||||
|
<figure>
|
||||||
|
<img src="https://images.pexels.com/photos/5974344/pexels-photo-5974344.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Fitting a joint before final pegging">
|
||||||
|
<figcaption>FIG. 2 — Dry fit first. If it's wrong here, it's wrong forever after the glue.</figcaption>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
<h2>Two Mistakes Worth Keeping</h2>
|
||||||
|
<p>First bench: I bored the drawbore holes from the wrong face and the peg came out proud a quarter-inch on show boards. Ugly. Fix was a sharp chisel and a flush cut, but the lesson stuck. Mark your through-holes from the outside face, every time, and check your pencil line before you bore, not after.</p>
|
||||||
|
<p>Second: I glued up on a humid morning and the oak swelled before the tenons were fully seated. Two of them sit a proud half-millimeter. Nobody sees it but me and the fellow who runs his hand along the stretcher every day since. Note: on high-humidity days, open your joints, cut your peg holes, and seat with the glue while the wood is dry.</p>
|
||||||
|
|
||||||
|
<div class="note">
|
||||||
|
<b>Workshop note:</b> a bench is not a witness statement. A wobble you didn't disassemble is a wobble you own. Disassemble, find the proud surface, true it, reassemble. The extra hour is cheaper than the reputation.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>The Finish</h2>
|
||||||
|
<table>
|
||||||
|
<tr><th>Step</th><th>What I Used</th><th>Why</th></tr>
|
||||||
|
<tr><td>Sand</td><td>120 then 220, with grain</td><td>Skip to 220 burns the oak's dents shut; that's a lie the weather finds.</td></tr>
|
||||||
|
<tr><td>Seal</td><td>Danish oil, two coats</td><td>Keeps the rain off without a plastic film that flakes.</td></tr>
|
||||||
|
<tr><td>Top</td><td>Clear paste wax</td><td>Feeds the gravy of gumwood weather; a wipe re-freshens it.</td></tr>
|
||||||
|
</table>
|
||||||
|
<p>End grain drinks oil like a hired hand drinks coffee at a bingo break. Give the ends a third coat and don't skimp. That's where the weather gets in first.</p>
|
||||||
|
|
||||||
|
<blockquote>
|
||||||
|
"The seventeenth coat of oil is the one that keeps the bench alive through the winter. Coat one through sixteen are just you talking to the wood."
|
||||||
|
</blockquote>
|
||||||
|
|
||||||
|
<h2>Watch the Film</h2>
|
||||||
|
<div class="film-embed">
|
||||||
|
<p>My 90-second film, <strong>"Building a Simple Wooden Bench,"</strong> shows the tenon and the drawbore peg in motion.</p>
|
||||||
|
<p><a href="https://andrew-beardsworth.4ort.mov/woo">→ Watch on the channel</a></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<p style="font-family:'Courier New',monospace;font-size:.8rem;color:#5a5240;">Andrew Beardsworth — carpenter, senior center coordinator, Canton, Ohio. Filed this build log for the young volunteers who keep asking how oak seats hold a hundred years.</p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user