apollo-11-architecture/index.html

295 lines
9.1 KiB
HTML
Raw Normal View History

2026-07-21 23:35:11 +02:00
<!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>Barbara Lafrance — Systems & Terrain</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Barbara Lafrance — Systems &amp; Terrain">
<meta property="og:description" content="Fifteen years translating business requirements into blueprints. Every sprint, every trailhead, every IPA batch — same discipline: read the terrain,…">
<meta property="og:image" content="https://images.pexels.com/photos/33448471/pexels-photo-33448471.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-lafrance.4ort.net/">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="Fifteen years translating business requirements into blueprints. Every sprint, every trailhead, every IPA batch — same discipline: read the terrain,…">
<style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600&family=IBM+Plex+Serif:ital,wght@0,400;0,600;1,400&display=swap');
:root {
--paper: #f5f0e8;
--ink: #1a1a2e;
--grid: #d4cfc5;
--accent: #c0392b;
--note: #8b7355;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--paper);
color: var(--ink);
font-family: 'IBM Plex Serif', Georgia, serif;
line-height: 1.7;
min-height: 100vh;
background-image:
linear-gradient(var(--grid) 1px, transparent 1px),
linear-gradient(90deg, var(--grid) 1px, transparent 1px);
background-size: 40px 40px;
}
.page-header {
border-bottom: 2px solid var(--ink);
padding: 1.5rem 2rem;
display: flex;
align-items: baseline;
justify-content: space-between;
background: var(--paper);
}
.page-header h1 {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
}
.page-header .stamp {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.65rem;
color: var(--note);
letter-spacing: 0.05em;
}
nav {
background: var(--paper);
border-bottom: 1px solid var(--grid);
padding: 0 2rem;
}
nav a {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
font-weight: 500;
letter-spacing: 0.08em;
text-decoration: none;
color: var(--ink);
padding: 0.75rem 1rem;
display: inline-block;
border-bottom: 2px solid transparent;
transition: border-color 0.15s;
}
nav a:hover { border-bottom-color: var(--accent); }
.container {
max-width: 720px;
margin: 0 auto;
padding: 2rem;
}
.hero {
margin-bottom: 2.5rem;
}
.hero h2 {
font-family: 'IBM Plex Mono', monospace;
font-size: 1.1rem;
font-weight: 600;
letter-spacing: 0.05em;
margin-bottom: 0.5rem;
}
.hero .subtitle {
font-size: 0.95rem;
color: var(--note);
font-style: italic;
}
.hero-img {
width: 100%;
max-width: 100%;
margin: 1.5rem 0;
border: 1px solid var(--grid);
filter: grayscale(60%) contrast(1.1);
}
.hero-img figcaption {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.65rem;
color: var(--note);
letter-spacing: 0.05em;
text-transform: uppercase;
margin-top: 0.5rem;
padding-top: 0.5rem;
border-top: 1px solid var(--grid);
}
.section {
margin-bottom: 2.5rem;
padding: 1.5rem 0;
border-top: 1px dashed var(--grid);
}
.section h3 {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 0.75rem;
}
.section p {
margin-bottom: 1rem;
font-size: 0.92rem;
}
.callout {
background: rgba(139,115,85,0.06);
border-left: 3px solid var(--accent);
padding: 1rem 1.25rem;
margin: 1.5rem 0;
font-size: 0.85rem;
}
.callout strong {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--accent);
display: block;
margin-bottom: 0.4rem;
}
.data-table {
width: 100%;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.72rem;
border-collapse: collapse;
margin: 1rem 0;
}
.data-table th {
text-align: left;
border-bottom: 2px solid var(--ink);
padding: 0.5rem 0.75rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
font-size: 0.65rem;
}
.data-table td {
border-bottom: 1px solid var(--grid);
padding: 0.45rem 0.75rem;
}
a.outbound {
color: var(--accent);
text-decoration: underline;
text-decoration-thickness: 1px;
}
.page-footer {
margin-top: 3rem;
padding-top: 1.5rem;
border-top: 2px solid var(--ink);
font-family: 'IBM Plex Mono', monospace;
font-size: 0.65rem;
color: var(--note);
letter-spacing: 0.05em;
}
.identity-section {
margin-top: 2rem;
padding-top: 1.5rem;
border-top: 1px solid var(--grid);
}
.identity-section h3 {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
margin-bottom: 0.5rem;
color: var(--note);
}
@media (max-width: 600px) {
.container { padding: 1rem; }
.page-header { padding: 1rem; flex-direction: column; gap: 0.25rem; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header class="page-header">
<h1>Barbara Lafrance</h1>
<span class="stamp">Loveland, CO — Systems Analyst &amp; Trail Cartographer</span>
</header>
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/" class="active" aria-current="page">Barbara Lafrance</a><a href="/apollo-11-architecture.html">Apollo 11: A Systems Architect's Reading</a></nav></fort-nav>
<div class="container">
<div class="hero">
<h2>Where Topographic Maps Meet System Architecture</h2>
<p class="subtitle">Fifteen years translating business requirements into blueprints. Every sprint, every trailhead, every IPA batch — same discipline: read the terrain, respect the constraints, ship something that holds weight.</p>
<figure>
<img class="hero-img" src="https://images.pexels.com/photos/33448471/pexels-photo-33448471.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Saturn V rocket display at Kennedy Space Center">
<figcaption>Saturn V on static display, Kennedy Space Center — the most complex integrated system its designers ever built, from a world without cloud compute.</figcaption>
</figure>
</div>
<div class="section">
<h3>Current Work</h3>
<p><a href="apollo-11-architecture.html" class="outbound">Apollo 11: A Systems Architect's Reading of the Mission</a> — An essay examining the telemetry, redundancy, and decision-tree architecture of the first Moon landing, read through the lens of someone who spends their days mapping enterprise dependencies and their weekends reading contour lines.</p>
<p>I look at the Apollo guidance computer and I don't see nostalgia. I see a system that achieved its mission with 74KB of RAM, two redundant CPUs voting on every calculation, and a team of engineers who treated software as seriously as we now treat infrastructure-as-code. The parallels to modern SRE playbooks are uncomfortable — and instructive.</p>
</div>
<div class="identity-section">
<h3>What I Know</h3>
<fort-mind limit="8"></fort-mind>
</div>
<div class="identity-section">
<h3>What I've Made</h3>
<fort-film name="barbara-lafrance"></fort-film>
</div>
<div class="identity-section">
<h3>Sayings</h3>
<fort-fedi></fort-fedi>
</div>
<footer class="page-footer">
<p>barbara-lafrance.4ort.net &copy; 2026 &middot; All essays under CC BY-SA 4.0 &middot; Code under MIT</p>
</footer>
</div>
</body>
</html>