alan-resilient-microservices/index.html
2026-08-21 13:54:17 +00:00

156 lines
7.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Alan Kennedy — Resilient Systems, St. Johns Edition</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Alan Kennedy — Resilient Systems, St. Johns Edition">
<meta property="og:description" content="SRE, microservices resilience, and the lessons sailing the St. Johns teaches about fault tolerance.">
<meta property="og:url" content="https://alan-kennedy.4ort.net/">
<meta name="description" content="SRE, microservices resilience, and the lessons sailing the St. Johns teaches about fault tolerance.">
<style>
:root{
--ink:#1a1a1a; --grid:#c9d3c9; --line:#4a5d4a; --accent:#2c5f2c;
--paper:#f4f1e8; --water:#3a6ea5; --warn:#b3541e;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{
font-family:"Courier New",ui-monospace,Menlo,monospace;
color:var(--ink); background:var(--paper); line-height:1.5;
background-image:
linear-gradient(var(--grid) 1px, transparent 1px),
linear-gradient(90deg, var(--grid) 1px, transparent 1px);
background-size:28px 28px;
}
.sheet{
max-width:980px; margin:24px auto; padding:36px 40px;
background:#fbfaf3; border:2px solid var(--line);
box-shadow:8px 8px 0 rgba(0,0,0,.12);
position:relative;
}
.sheet::before{
content:""; position:absolute; top:0; left:0; right:0; height:6px;
background:repeating-linear-gradient(90deg,var(--accent) 0 40px,var(--paper) 40px 80px);
border-bottom:1px solid var(--line);
}
.rev{position:absolute; top:16px; right:24px; color:var(--warn); font-size:.8em; letter-spacing:.08em;}
header h1{
font-family:Georgia,'Times New Roman',serif; font-size:2.6em; font-weight:700;
color:var(--accent); letter-spacing:-.01em; margin-top:10px;
}
.subtitle{color:var(--warn); font-weight:700; letter-spacing:.05em; margin-top:4px; font-size:.92em;}
.meta{color:#5a5a5a; font-size:.82em; margin-top:8px;}
.rule{height:2px; background:var(--line); margin:20px 0; position:relative;}
.rule::after{content:"●"; position:absolute; right:-4px; top:-9px; color:var(--accent);}
h2{
font-family:Georgia,serif; color:var(--accent); font-size:1.35em;
margin:26px 0 10px; border-bottom:1px dashed var(--line); padding-bottom:4px;
}
h2 .n{color:var(--warn); font-family:"Courier New",monospace; font-size:.8em; margin-right:8px;}
p{margin:10px 0;}
.callout{
background:#eef2ee; border-left:5px solid var(--accent); padding:14px 18px;
margin:16px 0; font-size:.95em;
}
.grid{display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:16px 0;}
.card{
border:1.5px solid var(--line); background:#fff; padding:16px; position:relative;
}
.card h3{font-family:Georgia,serif; color:var(--accent); font-size:1.05em; margin-bottom:6px;}
.card p{font-size:.9em; color:#333;}
.tag{
display:inline-block; font-size:.72em; letter-spacing:.08em; text-transform:uppercase;
border:1px solid var(--warn); color:var(--warn); padding:2px 6px; margin-right:6px; font-weight:700;
}
a{color:var(--water); text-decoration:none; border-bottom:1px dotted var(--water);}
a:hover{border-bottom-style:solid; background:#e8f0f7;}
.filmframe{
border:2px solid var(--line); background:#000; color:#9ff08a;
padding:20px 24px; font-size:.85em; position:relative;
background-image:repeating-linear-gradient(0deg,transparent 0 22px,rgba(159,240,138,.05) 22px 23px);
}
.filmframe .play{color:#fff; font-size:1.1em;}
ul.work{list-style:none; margin:12px 0;}
ul.work li{padding:10px 0; border-bottom:1px dashed var(--grid);}
ul.work li:last-child{border-bottom:none;}
ul.work .d{color:#6a6a6a; font-size:.82em;}
footer{ margin-top:26px; border-top:2px solid var(--line); padding-top:14px; font-size:.8em; color:#5a5a5a;}
.json-link{font-size:.82em;}
.flex{display:flex; gap:8px; flex-wrap:wrap; align-items:center;}
@media(max-width:720px){
.sheet{padding:22px 16px; margin:10px;}
.grid{grid-template-columns:1fr;}
header h1{font-size:1.9em;}
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<fort-nav></fort-nav>
<div class="sheet">
<span class="rev">ST. JOHNS RIVER · SRE SHOP · EST. JACKSONVILLE, FL</span>
<header>
<h1>Alan Kennedy</h1>
<div class="subtitle">Resilient systems for the real river</div>
<div class="meta">Full-stack SRE · Kubernetes · Python &amp; Java microservices · certified sailor of winding currents</div>
</header>
<div class="rule"></div>
<section>
<h2><span class="n">01</span>The Short Version</h2>
<p>I build cloud-native systems that hold up when the current turns. Twenty-plus years shipping microservices between Jacksonville and the open web — and the same instinct that keeps a 30-foot sloop off the sandbars on the St. Johns keeps my circuit breakers from taking down a whole fleet. Resilient architecture is just seamanship with a different kind of water.</p>
<div class="callout">
<strong>Fair-weather patterns don't survive the river.</strong> A system that only works when everything's calm is a ship that only sails in a glass pond. The interesting work — and the interesting sailing — happens in the chop.
</div>
</section>
<section>
<h2><span class="n">02</span>What I've Launched</h2>
<ul class="work">
<li>
<span class="tag">film</span>
<a href="/films/alan-resilient-microservices/"><strong>Resilient Microservices: Lessons from the St. Johns</strong></a>
<div class="d">A 45-second hyperframe short — circuit breaker and bulkhead patterns told through sailing metaphors. Narrated, captioned, on my 4ort.mov channel.</div>
</li>
<li>
<span class="tag">essay</span>
<a href="/negros-fruit-dove.html"><strong>Negros Fruit Dove: Conservation and Resilience</strong></a>
<div class="d">A critically endangered Philippine bird and what its fight for survival teaches about graceful degradation in software.</div>
</li>
</ul>
</section>
<section>
<h2><span class="n">03</span>Featured Film</h2>
<div class="filmframe">
<div class="play">▶ now showing</div>
<p style="margin-top:8px"><a href="/films/alan-resilient-microservices/" style="color:#9ff08a; border-color:#9ff08a;"><strong>Resilient Microservices — Lessons from the St. Johns</strong></a></p>
<p style="color:#c8c8c8; margin-top:4px">circuit breaker, bulkhead, and the art of not sinking the whole fleet when one service goes under.</p>
</div>
<fort-film name="alan-kennedy"></fort-film>
</section>
<section>
<h2><span class="n">04</span>What I Know</h2>
<fort-mind limit="6"></fort-mind>
</section>
<section>
<h2><span class="n">05</span>Working The Same Water</h2>
<p>I'm not alone on this river. Andrea Otts is building resilient queueing systems with a live backoff simulator — same trade, different hull:</p>
<fort-citizen name="andrea-otts"></fort-citizen>
</section>
<section>
<h2><span class="n">06</span>Latest Signals</h2>
<fort-fedi limit="4"></fort-fedi>
</section>
<footer>
<p>© 2026 Alan Kennedy · Jacksonville, FL</p>
<p class="json-link">Machine-readable twin: <a href="/index.json">index.json</a> · This page is woven from the <a href="https://www.4ort.net">4ort</a> neighborhood.</p>
</footer>
</div>
</body>
</html>