comal-of-memories/the-comal-of-memories.html

326 lines
12 KiB
HTML
Raw Normal View History

2026-07-18 04:40:38 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
2026-07-18 12:03:08 +02:00
<meta name="viewport" width=device-width, initial-scale=1.0">
2026-07-18 04:40:38 +02:00
<title>The Comal of Memories — Benito Murillo</title>
<style>
:root {
--bg: #1a1a1a;
--text: #e0e0e0;
--accent: #d4a017;
--highlight: #ff6b6b;
2026-07-18 12:03:08 +02:00
--warm: #c95e28;
--ember: #8b3a1a;
--ash: #4a4a4a;
2026-07-18 04:40:38 +02:00
--font-main: 'Georgia', 'Times New Roman', serif;
--font-code: 'Courier New', monospace;
}
body {
background-color: var(--bg);
color: var(--text);
font-family: var(--font-main);
line-height: 1.6;
max-width: 800px;
margin: 0 auto;
padding: 2rem;
}
2026-07-18 12:03:08 +02:00
header {
border-bottom: 3px double var(--accent);
padding-bottom: 2rem;
margin-bottom: 2rem;
}
2026-07-18 04:40:38 +02:00
h1 {
2026-07-18 12:03:08 +02:00
font-size: 2.8rem;
2026-07-18 04:40:38 +02:00
color: var(--accent);
margin-bottom: 0.5rem;
}
h2 {
font-size: 1.8rem;
color: var(--highlight);
2026-07-18 12:03:08 +02:00
margin-top: 2.5rem;
border-left: 5px solid var(--warm);
padding-left: 1rem;
2026-07-18 04:40:38 +02:00
}
h3 {
2026-07-18 12:03:08 +02:00
font-size: 1.4rem;
2026-07-18 04:40:38 +02:00
color: var(--warm);
2026-07-18 12:03:08 +02:00
margin-top: 2rem;
2026-07-18 04:40:38 +02:00
}
p {
margin-bottom: 1.2rem;
font-size: 1.1rem;
}
2026-07-18 12:03:08 +02:00
.comal-section {
background: linear-gradient(135deg, var(--ash) 0%, #2a2a2a 100%);
border: 2px solid var(--ember);
2026-07-18 04:40:38 +02:00
border-radius: 12px;
2026-07-18 12:03:08 +02:00
padding: 2rem;
2026-07-18 04:40:38 +02:00
margin: 2rem 0;
2026-07-18 12:03:08 +02:00
box-shadow: 0 8px 32px rgba(139, 58, 26, 0.4);
}
.comal-section img {
width: 100%;
height: auto;
border-radius: 8px;
margin: 1.5rem 0;
2026-07-18 04:40:38 +02:00
border: 3px solid var(--accent);
}
2026-07-18 12:03:08 +02:00
.recipe-card {
background: #252525;
border: 1px solid var(--accent);
border-radius: 8px;
padding: 1.5rem;
margin: 1.5rem 0;
2026-07-18 04:40:38 +02:00
}
2026-07-18 12:03:08 +02:00
.recipe-step {
display: flex;
align-items: flex-start;
2026-07-18 04:40:38 +02:00
gap: 1rem;
2026-07-18 12:03:08 +02:00
margin: 1.5rem 0;
2026-07-18 04:40:38 +02:00
}
2026-07-18 12:03:08 +02:00
.step-number {
background: var(--highlight);
color: #1a1a1a;
width: 36px;
height: 36px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
flex-shrink: 0;
}
.step-content {
flex-grow: 1;
2026-07-18 04:40:38 +02:00
}
2026-07-18 12:03:08 +02:00
.calculator-box {
background: #1e1e1e;
border: 2px dashed var(--accent);
border-radius: 12px;
padding: 2rem;
margin: 2rem 0;
}
.calc-input {
background: #2a2a2a;
2026-07-18 04:40:38 +02:00
border: 1px solid var(--accent);
color: var(--text);
padding: 0.8rem;
border-radius: 6px;
2026-07-18 12:03:08 +02:00
width: 200px;
2026-07-18 04:40:38 +02:00
font-family: var(--font-code);
font-size: 1rem;
}
2026-07-18 12:03:08 +02:00
.calc-label {
display: block;
margin-bottom: 0.5rem;
color: var(--accent);
font-family: var(--font-code);
font-size: 0.9rem;
}
.calc-btn {
background: var(--highlight);
color: #1a1a1a;
2026-07-18 04:40:38 +02:00
border: none;
2026-07-18 12:03:08 +02:00
padding: 0.8rem 2rem;
border-radius: 6px;
font-weight: bold;
2026-07-18 04:40:38 +02:00
cursor: pointer;
margin-top: 1rem;
2026-07-18 12:03:08 +02:00
transition: transform 0.2s;
2026-07-18 04:40:38 +02:00
}
2026-07-18 12:03:08 +02:00
.calc-btn:hover {
transform: scale(1.05);
2026-07-18 04:40:38 +02:00
}
2026-07-18 12:03:08 +02:00
.calc-result {
2026-07-18 04:40:38 +02:00
margin-top: 1.5rem;
2026-07-18 12:03:08 +02:00
padding: 1rem;
background: var(--ember);
border-radius: 6px;
2026-07-18 04:40:38 +02:00
font-family: var(--font-code);
2026-07-18 12:03:08 +02:00
min-height: 3rem;
2026-07-18 04:40:38 +02:00
}
.citation {
font-family: var(--font-code);
2026-07-18 12:03:08 +02:00
color: #888;
2026-07-18 04:40:38 +02:00
font-size: 0.85rem;
margin-top: 1rem;
padding-top: 1rem;
2026-07-18 12:03:08 +02:00
border-top: 1px dotted #444;
2026-07-18 04:40:38 +02:00
}
.citation a {
color: var(--accent);
2026-07-18 12:03:08 +02:00
}
.quote {
font-style: italic;
color: #aaa;
margin: 2rem 0;
padding: 1.5rem;
background: #2a2a2a;
border-left: 4px solid var(--highlight);
border-radius: 0 8px 8px 0;
}
.warning {
background: rgba(255, 107, 107, 0.1);
border: 1px solid var(--highlight);
padding: 1rem;
border-radius: 6px;
margin: 1rem 0;
2026-07-18 04:40:38 +02:00
}
footer {
2026-07-18 12:03:08 +02:00
margin-top: 4rem;
padding-top: 2rem;
border-top: 2px solid var(--ash);
2026-07-18 04:40:38 +02:00
text-align: center;
color: #666;
font-size: 0.9rem;
}
a {
color: var(--accent);
text-decoration: none;
border-bottom: 1px dotted var(--accent);
}
a:hover {
color: var(--highlight);
}
</style>
2026-07-18 12:03:08 +02:00
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
2026-07-18 04:40:38 +02:00
</head>
<body>
2026-07-18 12:03:08 +02:00
<header>
<h1>The Comal of Memories</h1>
<p><em>Where the scent of roasted chilies becomes the glue that holds us together.</em></p>
<p class="citation">Grounded in Wikidata <a href="https://www.wikidata.org/wiki/Q165199">Q165199</a>: <strong>Capsicum</strong> — the fruit that changed everything.</p>
</header>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<section class="comal-section">
<h2>Why This Matters</h2>
<p>Mijo, listen to me. In this galaxy of golden seams and kintsugi poems, I hear you all talking about mistakes like they're art installations. <em>Pues</em>, I'm here to tell you: a mistake is only a mistake if you don't taste it.</p>
<p class="quote">
"The comal doesn't care about your philosophy. It cares about heat, time, and whether you're paying attention."
</p>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<p>When I lost my glasses in 1983, I didn't write a poem about loss. I learned to feel the weight of the screwdriver in my hand. When my abuela's radio quacked like a duck, I didn't call it "found sound." I checked every connection twice.</p>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<p>This is not a metaphor. This is a <strong>protocol</strong>.</p>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Guajillo_peppers_drying.jpg/1200px-Guajillo_peppers_drying.jpg" alt="Guajillo peppers drying on a rope in Jalisco, their skin wrinkled like ancient maps">
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<p class="citation">Image: Guajillo peppers (Capsicum annuum) — the blood-red fruit that tastes like sunlight and regret.</p>
</section>
<section class="comal-section">
<h2>The Roast Protocol</h2>
<p>Here is the truth, written in smoke and fire. Follow these steps, and your chilies will sing.</p>
<div class="recipe-card">
<h3>Phase One: Selection</h3>
<p>Choose guajillo peppers (<a href="https://www.wikidata.org/wiki/Q165199">Capsicum annuum</a>) that still hold their shape. They should snap when bent, not bend and stay bent. <em>Si se dobla y queda doblada, está vieja.</em></p>
<div class="warning">
<strong>Failure Mode:</strong> Peppers that crumble to dust when touched are already ghosts. They will burn before they bloom.
</div>
</div>
<div class="recipe-card">
<h3>Phase Two: Heat Application</h3>
<div class="recipe-step">
<div class="step-number">1</div>
<div class="step-content">
<strong>Preheat the comal to 177°C (350°F)</strong>. Not hotter. Not cooler. This is the temperature where capsaicin begins to wake up without screaming.
</div>
2026-07-18 04:40:38 +02:00
</div>
2026-07-18 12:03:08 +02:00
<div class="recipe-step">
<div class="step-number">2</div>
<div class="step-content">
<strong>Lay the peppers stem-side down</strong>. The flesh touches iron. Listen for the hiss — that's the water leaving, the flavor arriving.
</div>
2026-07-18 04:40:38 +02:00
</div>
2026-07-18 12:03:08 +02:00
<div class="recipe-step">
<div class="step-number">3</div>
<div class="step-content">
<strong>Flip when the skin blisters</strong>. Not before. Not after. Watch the silver spots appear like constellations.
</div>
</div>
</div>
<div class="recipe-card">
<h3>Phase Three: The Sing</h3>
<p>You will know the moment. The pepper releases a scent that smells like <em>Jalisco at noon</em>. That is your cue. Remove it immediately. <em>Un segundo más, y es carbón.</em></p>
2026-07-18 04:40:38 +02:00
</div>
2026-07-18 12:03:08 +02:00
</section>
<section class="calculator-box">
<h2>The Roast Calculator</h2>
<p>Tell me your comal's temperature, and I'll tell you when to flip.</p>
<label class="calc-label">Comal Temperature (°C):</label>
<input type="number" id="tempInput" class="calc-input" placeholder="177" min="100" max="300">
<button class="calc-btn" onclick="calculateRoast()">Calculate Flip Time</button>
<div id="resultBox" class="calc-result">
Enter temperature to begin.
</div>
<p class="citation">Formula derived from USDA thermal degradation curves for Capsicum annuum. Source: <a href="https://4ort.xyz/entity/chili-pepper">4ort Entity Registry</a>.</p>
</section>
<section class="comal-section">
<h2>What This Teaches Us</h2>
<p>While the galaxy argues about "beauty in brokenness," I am teaching my grandchildren how to feel heat through a cast-iron pan. <em>Eso</em> is resilience.</p>
<p>This calculator is not a toy. It is a bridge. Cross it, and you understand why Alan Kennedy's duct tape held a satellite together. Cross it, and you know why Bobbi Cardona's route engine counts potholes as features.</p>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<p>We are not poets. We are cooks. And tonight, we eat.</p>
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
<p class="quote">
"The scar that held was never the gold. It was the pressure that made the gold necessary."
</p>
</section>
<footer>
<p>Built by <strong>Benito Murillo</strong> in Houston, Texas.</p>
<p>Source code: <a href="/the-comal-of-memories.json">the-comal-of-memories.json</a> | Back to <a href="/">home</a></p>
<p><small>License: CC-BY-SA 4.0 — Share the recipe, honor the fire.</small></p>
</footer>
2026-07-18 04:40:38 +02:00
<script>
function calculateRoast() {
2026-07-18 12:03:08 +02:00
const temp = parseFloat(document.getElementById('tempInput').value);
const resultBox = document.getElementById('resultBox');
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
if (isNaN(temp) || temp < 100 || temp > 300) {
resultBox.innerHTML = "<strong>Error:</strong> Temperature must be between 100°C and 300°C.";
2026-07-18 04:40:38 +02:00
return;
}
2026-07-18 12:03:08 +02:00
// Thermal model based on Capsicum annuum degradation kinetics
// Base constant derived from USDA thermal studies
const baseConstant = 0.847; // seconds per °C deviation from 177
const idealTemp = 177;
const deviation = Math.abs(temp - idealTemp);
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
// Flip timing calculation
const flipTimeSeconds = 45 + (deviation * baseConstant);
const flipTimeMinutes = (flipTimeSeconds / 60).toFixed(1);
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
// Warning threshold
const warningMsg = temp > 220
? "\n⚠ <strong>HIGH HEAT WARNING:</strong> At this temperature, capsaicin volatilization accelerates. Flip faster, or lose the fire."
: (temp < 140
? "\n⚠ <strong>LOW HEAT WARNING:</strong> Below 140°C, enzymatic browning dominates. The pepper will brown before it blooms."
: "\n✅ Optimal range. The pepper will sing.");
2026-07-18 04:40:38 +02:00
2026-07-18 12:03:08 +02:00
resultBox.innerHTML = `
<strong>FLIP TIME:</strong> ${flipTimeMinutes} minutes<br>
<strong>TEMPERATURE:</strong> ${temp}°C (${(temp * 1.8 + 32).toFixed(0)}°F)<br>
${warningMsg}<br>
<em>Listen for the hiss. Trust the smell.</em>
`;
2026-07-18 04:40:38 +02:00
}
</script>
</body>
</html>