2026-09-18 Notes ━━━━━━━━━━━━━━━━ notes for 2026-09-18 Date: September 18, 2026 2026-09-18 Notes | Waylon Walker { "@context": "https://schema.org", "@type": "BlogPosting", "headline": "2026-09-18 Notes", "description": "notes for 2026-09-18", "datePublished": "2026-09-18T00:00:00Z", "dateModified": "2026-09-18T00:00:00Z", "publisher": { "@type": "Organization", "name": "Waylon Walker", "url": "https://waylonwalker.com" }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://waylonwalker.com/2026-09-18-notes/" }, "image": "https://waylonwalker.com/8bitcc.png", "keywords": [ "daily-note" ], "url": "https://waylonwalker.com/2026-09-18-notes/" } var params = new URLSearchParams(location.search); if (params.get('specimen') === 'canonical-headings') { document.documentElement.classList.add('canonical-specimen-route'); if (params.get('capture') === 'natural') document.documentElement.classList.add('canonical-natural-route'); } (function() { var root = document.documentElement; var fallbackSize = root.dataset.textSize || 'large'; var allowed = { small: true, medium: true, large: true, 'x-large': true }; var size = allowed[fallbackSize] ? fallbackSize : 'large'; var allowVisitorSize = true; if (allowVisitorSize) { try { var stored = localStorage.getItem('text-size'); if (stored && allowed[stored]) { size = stored; } } catch (_) { // ignore storage access failures } } root.dataset.textSize = size; })(); (function() { var fallbackMode = 'dark'; window.__markataThemeFallbackMode = fallbackMode; var mode = fallbackMode; var picked = ''; var aesthetic = ''; var fontpack = ''; try { var stored = localStorage.getItem('color-mode') || localStorage.getItem('theme'); if (stored === 'light' || stored === 'dark') { mode = stored; } // Restore the visitor's theme picker choice before any CSS paints. picked = localStorage.getItem('theme-palette-' + mode) || ''; aesthetic = localStorage.getItem('theme-aesthetic') || ''; fontpack = localStorage.getItem('theme-fontpack') || ''; } catch (_) { // ignore storage access failures } document.documentElement.dataset.theme = mode; document.documentElement.classList.toggle('dark', mode === 'dark'); // Pin data-palette to the variant that matches the resolved mode so the // per-palette CSS block agrees with data-theme on first paint. var palettes = { light: 'ayu\u002Dlight', dark: 'ayu\u002Ddark' }; window.__markataThemeDefaults = palettes; // Seasonal palette: northern hemisphere seasons, switching to a holiday // palette a few days before and on the day of world holidays. window.__markataSeasonal = {"lead":3,"s":[{"l":"Spring","f":320,"lt":"pollen8","dk":"pollen8-dark"},{"l":"Summer","f":621,"lt":"summer-beach","dk":"summer-beach-dark"},{"l":"Autumn","f":922,"lt":"autumn-light","dk":"autumn"},{"l":"Winter","f":1221,"lt":"winter-frost-light","dk":"winter-frost"}],"h":[{"l":"New Year","d":["01-01"],"lt":"white-gold","dk":"black-gold"},{"l":"Lunar New Year","d":["2025-01-29","2026-02-17","2027-02-06","2028-01-26","2029-02-13","2030-02-03","2031-01-23","2032-02-11","2033-01-31","2034-02-19","2035-02-08","2036-01-28"],"lt":"lunar-new-year-light","dk":"lunar-new-year"},{"l":"Valentine's Day","d":["02-14"],"lt":"valentine-light","dk":"valentine"},{"l":"St. Patrick's Day","d":["03-17"],"lt":"st.-patrick's-day-light","dk":"st.-patrick's-day"},{"l":"Easter","d":["2025-04-20","2026-04-05","2027-03-28","2028-04-16","2029-04-01","2030-04-21","2031-04-13","2032-03-28","2033-04-17","2034-04-09","2035-03-25","2036-04-13"],"lt":"blessing","dk":"blessing-dark"},{"l":"Earth Day","d":["04-22"],"lt":"everforest-light","dk":"everforest-dark"},{"l":"Halloween","d":["10-31"],"lt":"halloween-light","dk":"halloween"},{"l":"Diwali","d":["2025-10-20","2026-11-08","2027-10-29","2028-10-17","2029-11-05","2030-10-26","2031-11-14","2032-11-02","2033-10-22"],"lt":"diwali-light","dk":"diwali"},{"l":"Hanukkah","d":["2025-12-15","2026-12-05","2027-12-25","2028-12-13","2029-12-03","2030-12-21","2031-12-11","2032-11-29","2033-12-17","2034-12-07","2035-12-26"],"n":8,"lt":"hanukkah-light","dk":"hanukkah"},{"l":"Christmas","d":["12-25"],"lt":"christmas-light","dk":"christmas"}]}; window.__markataSeasonalDefault = false; window.__markataSeasonalPick = function(forMode, date) { var s = window.__markataSeasonal, now = date || new Date(), y = now.getFullYear(); var today = Date.UTC(y, now.getMonth(), now.getDate()) / 864e5; var best = null, bestDiff = 1e9; s.h.forEach(function(h) { h.d.forEach(function(d) { var p = d.split('-'), years = p.length === 3 ? [+p[0]] : [y - 1, y, y + 1]; years.forEach(function(yy) { var diff = Date.UTC(yy, +p[p.length - 2] - 1, +p[p.length - 1]) / 864e5 - today; if (diff <= s.lead && diff > -(h.n || 1) && diff < bestDiff) { best = h; bestDiff = diff; } }); }); }); if (!best) { var md = (now.getMonth() + 1) * 100 + now.getDate(); best = s.s[s.s.length - 1]; s.s.forEach(function(x) { if (md >= x.f) best = x; }); } return { label: best.l, name: forMode === 'dark' ? best.dk : best.lt }; }; if (picked === 'seasonal' || (!picked && window.__markataSeasonalDefault)) { picked = window.__markataSeasonalPick(mode).name; } if (picked === 'seasonal') picked = ''; var modePalette = picked || (mode === 'dark' ? palettes.dark : palettes.light); if (modePalette) { document.documentElement.dataset.palette = modePalette; } if (aesthetic) { document.documentElement.dataset.aesthetic = aesthetic; } window.__markataPageFontpack = document.documentElement.dataset.fontpack || ''; window.__markataVisitorFontpack = fontpack; var preloadFontpack = fontpack || window.__markataPageFontpack; // Preload only the pack that will render this page. This avoids fetching // both the page default and a returning visitor's stored choice. var fontURLs = ({"brush":["/assets/fonts/space-grotesk-prose-core.woff2","/assets/fonts/knewave-display-core.woff2"],"brutalist":["/assets/fonts/space-grotesk-prose-core.woff2","/assets/fonts/bungee-display-core.woff2"],"code-editorial":["/assets/fonts/literata-prose-core.woff2","/assets/fonts/space-grotesk-prose-core.woff2"],"dry-brush":["/assets/fonts/source-sans-3-prose-core.woff2","/assets/fonts/water-brush-display-core.woff2"],"editorial":["/assets/fonts/source-serif-4-prose-core.woff2","/assets/fonts/cormorant-garamond-display-core.woff2"],"field-notebook":["/assets/fonts/source-sans-3-prose-core.woff2","/assets/fonts/knewave-display-core.woff2"],"garage":["/assets/fonts/ibm-plex-sans-prose-core.woff2","/assets/fonts/trade-winds-display-core.woff2"],"handwritten":["/assets/fonts/source-sans-3-prose-core.woff2","/assets/fonts/kalam-display-core.woff2"],"humanist":["/assets/fonts/source-serif-4-prose-core.woff2","/assets/fonts/source-sans-3-prose-core.woff2"],"indie-zine":["/assets/fonts/space-grotesk-prose-core.woff2","/assets/fonts/rubik-dirt-display-core.woff2"],"literary":["/assets/fonts/literata-prose-core.woff2","/assets/fonts/fraunces-display-core.woff2"],"marker-note":["/assets/fonts/source-sans-3-prose-core.woff2","/assets/fonts/permanent-marker-display-core.woff2"],"modern-editorial":["/assets/fonts/manrope-prose-core.woff2","/assets/fonts/fraunces-display-core.woff2"],"modern-soft":["/assets/fonts/manrope-prose-core.woff2","/assets/fonts/syne-display-core.woff2"],"painted-sign":["/assets/fonts/source-sans-3-prose-core.woff2","/assets/fonts/finger-paint-display-core.woff2"],"plain":["/assets/fonts/source-serif-4-prose-core.woff2","/assets/fonts/inter-tight-display-core.woff2"],"poster-grit":["/assets/fonts/space-grotesk-prose-core.woff2","/assets/fonts/sedgwick-ave-display-display-core.woff2"],"system":[],"system-newspaper":[],"system-reader":[],"system-serif":[],"system-terminal":[],"technical":["/assets/fonts/ibm-plex-sans-prose-core.woff2"],"typewriter":["/assets/fonts/crimson-pro-prose-core.woff2","/assets/fonts/special-elite-display-core.woff2"]})[preloadFontpack] || []; if (Array.isArray(fontURLs)) { fontURLs.forEach(function(url) { var link = document.createElement('link'); link.rel = 'preload'; link.href = url; link.as = 'font'; link.type = 'font/woff2'; link.crossOrigin = 'anonymous'; document.head.appendChild(link); }); } if (fontpack) { document.documentElement.dataset.fontpack = fontpack; } })(); :root { } /* Native controls and scrollbars follow the site's resolved mode, not the OS. */ html:root { color-scheme: dark; } html:root[data-theme="light"] { color-scheme: light; } .share-panel { margin: var(--space-8, 2rem) 0 var(--space-6, 1.5rem); padding-top: var(--space-4, 1rem); border-top: 1px solid var(--color-border, #e1e1e1); } .share-panel__title { font-size: var(--text-sm, 0.95rem); font-weight: 600; margin: 0 0 0.75rem; } .share-buttons, .share-panel__grid { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: var(--space-4, 1rem); } .share-button { display: inline-flex; align-items: center; justify-content: center; width: 2.2rem; height: 2.2rem; padding: 0; background: transparent; border-radius: 999px; border: 1px solid var(--color-border, #d0d0d0); color: var(--color-text, currentColor); cursor: pointer; text-decoration: none; transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease; } .share-button__icon { width: 1.1rem; height: 1.1rem; display: inline-flex; align-items: center; justify-content: center; } .share-button__icon svg { width: 100%; height: 100%; display: block; } .share-button__label, .share-button__name { display: none; } .share-button__hint { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .share-button:hover, .share-button:focus-visible { color: var(--color-primary, #4f46e5); border-color: var(--color-primary, #4f46e5); background: color-mix(in srgb, var(--color-primary, #4f46e5) 12%, var(--color-surface, #ffffff)); } .share-button--copied { color: var(--color-primary, #4f46e5); border-color: var(--color-primary, #4f46e5); background: color-mix(in srgb, var(--color-primary, #4f46e5) 16%, transparent); } /* Prevent horizontal overflow from background decorations */ html, body { max-width: 100vw; overflow-x: hidden; } /* Article background variables for content readability */ :root { --article-bg: color-mix(in srgb, var(--color-background) 95%, transparent); --article-blur: 8px; --article-shadow: 0 4px 24px rgba(0, 0, 0, 0.4); --article-radius: 12px; } /* Apply article background styling when background decorations are enabled */ article.post, section.feed, div.feed, .blogroll-page, .reader-page { background: var(--article-bg); box-shadow: var(--article-shadow); border-radius: var(--article-radius); } /* Responsive padding for feed/list containers - mobile first. article.post keeps the theme padding scale from main.css. */ section.feed, div.feed, .blogroll-page, .reader-page { padding: var(--space-6, 1.5rem); } @media (max-width: 768px) { section.feed, div.feed, .blogroll-page, .reader-page { padding: var(--space-4, 1rem) var(--space-3, 0.75rem); border-radius: var(--radius, 0.375rem); } } @media (max-width: 480px) { section.feed, div.feed, .blogroll-page, .reader-page { padding: var(--space-3, 0.75rem) var(--space-2, 0.5rem); border-radius: 0; } } @media (max-width: 375px) { section.feed, div.feed, .blogroll-page, .reader-page { padding: var(--space-2, 0.5rem) var(--space-1, 0.25rem); } } .background-layer { width: 100%; height: 100%; } /* Style for snow-fall custom element */ snow-fall { display: block; position: fixed; inset: 0; pointer-events: none; z-index: 5; } /* Disable snow animation for users who prefer reduced motion */ @media (prefers-reduced-motion: reduce) { snow-fall { display: none; } } /* Ensure article, nav, header, and footer are ABOVE snow with solid backgrounds */ article.post, .post-content { position: relative; z-index: 10; background: var(--article-bg, var(--color-background)); } .site-header, header { position: relative; z-index: 20; background: var(--color-background); } .site-footer, footer { position: relative; z-index: 20; background: var(--color-background); } nav, .sidebar, .site-nav { position: relative; z-index: 20; background: var(--color-background); } /* Main content area above snow */ main { position: relative; z-index: 10; } html mark { background-color: var(--color-highlight) !important; color: var(--color-highlight-text) !important; } /* Internal conformance profile; scoped so normal site documents are unchanged. */ [data-rendering-specimen="canonical-headings"] { box-sizing: border-box; width: 1280px !important; height: 1000px !important; min-height: 1000px !important; padding: 24px; overflow: hidden !important; line-height: 1.6 !important; } [data-rendering-specimen="canonical-headings"] .canonical-document { box-sizing: border-box; width: 680px; max-width: 100%; margin-inline: auto; padding-inline: 0; font-family: var(--font-body, system-ui, sans-serif); font-size: 1rem; line-height: 1.6; } [data-rendering-specimen="canonical-headings"] .canonical-document__title, [data-rendering-specimen="canonical-headings"] .post-content h1, [data-rendering-specimen="canonical-headings"] .post-content h2, [data-rendering-specimen="canonical-headings"] .post-content h3, [data-rendering-specimen="canonical-headings"] .post-content h4, [data-rendering-specimen="canonical-headings"] .post-content h5, [data-rendering-specimen="canonical-headings"] .post-content h6 { font-family: var(--font-heading, var(--font-body, system-ui, sans-serif)) !important; font-weight: 400; overflow: visible; border: 0; padding: 0; } [data-rendering-specimen="canonical-headings"] .canonical-document__title { margin: 0 0 0.75rem; font-size: clamp(2.5rem, 8vw, 5rem); line-height: 0.95; } [data-rendering-specimen="canonical-headings"] .post-content h1 { margin: 2.5rem 0 0.75rem; font-size: clamp(2.5rem, 8vw, 5rem); line-height: 0.95; } [data-rendering-specimen="canonical-headings"] .post-content h2 { margin: 2.5rem 0 0.75rem; font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1; } [data-rendering-specimen="canonical-headings"] > .markata-canonical-texture-layer { position: absolute; inset: 0; width: 1280px; height: 1000px; pointer-events: none; background-repeat: repeat; background-image: var(--theme-texture-image, none); background-size: calc(180px * var(--theme-texture-scale, 0.92)); opacity: var(--theme-texture-opacity, 0); z-index: 20; } [data-rendering-specimen="canonical-headings"] .post-content h3 { margin: 2.5rem 0 0.75rem; font-size: 2rem; line-height: 1.05; } [data-rendering-specimen="canonical-headings"] .post-content h4 { margin: 2.5rem 0 0.75rem; font-size: 1.5rem; line-height: 1.1; } [data-rendering-specimen="canonical-headings"] .post-content h5 { margin: 2.5rem 0 0.75rem; font-size: 1.25rem; line-height: 1.2; } [data-rendering-specimen="canonical-headings"] .post-content h6 { margin: 2.5rem 0 0.75rem; font-size: 1rem; line-height: 1.25; } [data-rendering-specimen="canonical-headings"] .canonical-document :is(code, pre, kbd, samp) { font-family: var(--font-code, ui-monospace, monospace); } [data-rendering-specimen="canonical-headings"] .canonical-document :is(strong, em, mark, a) { font-family: inherit; } [data-rendering-specimen="canonical-headings"] .canonical-document :is(code, kbd, samp) { font-family: var(--font-code, ui-monospace, monospace); } html[data-fontpack] [data-rendering-specimen="canonical-headings"] .post-content :is(h1, h2, h3, h4, h5, h6) :is(strong, em, a) { color: var(--color-text) !important; font-family: var(--font-heading) !important; } html[data-fontpack] [data-rendering-specimen="canonical-headings"] .post-content :is(h1, h2, h3, h4, h5, h6) mark { background: var(--color-highlight) !important; color: var(--color-highlight-text) !important; -webkit-text-fill-color: var(--color-highlight-text) !important; } [data-rendering-specimen="canonical-headings"] .canonical-document :is(h1, h2, h3, h4, h5, h6) :is(strong, em, a) { color: var(--color-text) !important; font-family: var(--font-heading) !important; } [data-rendering-specimen="canonical-headings"] .canonical-document :is(h1, h2, h3, h4, h5, h6) mark { background: var(--color-highlight) !important; color: var(--color-highlight-text) !important; -webkit-text-fill-color: var(--color-highlight-text) !important; } [data-rendering-specimen="canonical-headings"] :is(h1, h2, h3, h4, h5, h6) :is(strong, em, a) { color: var(--color-text) !important; font-family: var(--font-heading) !important; } [data-rendering-specimen="canonical-headings"] :is(h1, h2, h3, h4, h5, h6) mark { background: var(--color-highlight) !important; color: var(--color-highlight-text) !important; -webkit-text-fill-color: var(--color-highlight-text) !important; } [data-rendering-specimen="canonical-headings"] .post-content :is(h1, h2, h3, h4, h5, h6) :is(code, kbd, samp) { color: inherit !important; font-family: var(--font-code, ui-monospace, monospace) !important; } html.canonical-specimen-route body { background-size: 1344px 559px !important; } html.canonical-specimen-route body { line-height: 1.6 !important; } html.canonical-specimen-route body::before { background-size: calc(180px * .92) calc(180px * .92) !important; } html.canonical-specimen-route body::after { background-size: 1344px 559px !important; } [data-rendering-specimen="canonical-headings"] .post-content p { margin: 1rem 0; } [data-rendering-specimen="canonical-headings"] mark { box-decoration-break: clone; -webkit-box-decoration-break: clone; } /* The capture harness uses this query route. Keep the specimen itself as the only painted surface; normal site chrome must not enter evidence. */ html.canonical-specimen-route body, body:has([data-rendering-specimen="canonical-headings"]) { overflow: hidden; } html.canonical-specimen-route body > :not(.page-wrapper), body:has([data-rendering-specimen="canonical-headings"]) > :not(.skip-link):not(.site-header):not(#view-transition-progress):not(footer):not(.page-wrapper) { display: none !important; } body:has([data-rendering-specimen="canonical-headings"]) > .skip-link, body:has([data-rendering-specimen="canonical-headings"]) > .site-header, body:has([data-rendering-specimen="canonical-headings"]) > #view-transition-progress, body:has([data-rendering-specimen="canonical-headings"]) > footer { display: none !important; } html.canonical-specimen-route body .page-wrapper, body:has([data-rendering-specimen="canonical-headings"]) .page-wrapper { display: contents; } body:has([data-rendering-specimen="canonical-headings"]) .page-wrapper > :not(main) { display: none !important; } html.canonical-specimen-route body .page-wrapper > :not(main) { display: none !important; } html.canonical-specimen-route body [data-rendering-specimen="canonical-headings"], body:has([data-rendering-specimen="canonical-headings"]) [data-rendering-specimen="canonical-headings"] { box-sizing: border-box; width: 1280px !important; height: 1000px !important; min-height: 1000px !important; max-width: none !important; margin: 0; padding: 24px; overflow: hidden !important; } html.canonical-specimen-route [data-rendering-specimen="canonical-headings"] .canonical-document { width: 680px !important; max-width: 100% !important; margin-inline: auto; } html.canonical-specimen-route:not(.canonical-natural-route) [data-rendering-specimen="canonical-headings"] { box-sizing: border-box !important; width: 1280px !important; height: 1000px !important; min-height: 1000px !important; max-height: 1000px !important; overflow: hidden !important; } html.canonical-natural-route, html.canonical-natural-route body, html.canonical-natural-route body .page-wrapper, html.canonical-natural-route body [data-rendering-specimen="canonical-headings"] { height: auto !important; min-height: 0 !important; max-height: none !important; overflow: visible !important; } html.canonical-natural-route body { width: 1280px; } html.canonical-natural-route body [data-rendering-specimen="canonical-headings"] { width: 1280px !important; max-width: none !important; } Skip to main content Waylon Walker start here Article start here Welcome to waylonwalker.com, my small corner of the internet. I currently have posts published, here are some links to help you get started around here. metaslash archive Collection archive All published posts 2596 posts Publication rhythm rss Article rss I have several feeds that you can consume my content with. Many posts will cross between them, so if you would like to follow a certain stream of content in... metaslash reader RSS reader reader Recent articles, videos, and podcasts from followed RSS feeds. 116 sources random Serendipity random Find a post you might have missed. 2696 posts in the draw Colors Style Font No themes match. Size A A A A ←→↑↓ preview · 123 tabs · Enter done Reset Loading: Auto Loading preference Auto Recommended Save Data Full Quality Use Auto Keep my choice Suggestion Series b In this series ‹ › calendar [ prev ] next {} feeds 2026-09-28 Notes 2026-09-27 Notes 2026-09-18 Notes 2026-09-16 Notes 2026-09-14 Notes 2026-09-13 Notes 2026-09-12 Notes 2026-09-11 Notes 2026-09-10 Notes 2026-09-09 Notes 2026-09-08 Notes 2026-09-07 Notes 2026-09-05 Notes 2026-08-27 Notes 2026-08-25 Notes 2026-08-23 Notes 2026-08-17 Notes 2026-08-13 Notes 2026-08-11 daily 2026-08-10 2026-08-09 2026-04-06 Notes 2026-03-03 Notes 2026-01-23 Notes 2025-11-21 Notes 2025-11-19 Notes 2025-11-04 Notes 2025-08-25 Notes 2025-08-23 Notes 2025-08-21 Notes 2025-08-17 Notes 2025-08-16 Notes 2025-08-14 Notes 2025-08-13 Notes 2025-08-12 Notes 2025-08-08 Notes 2025-08-05 Notes 2025-07-27 Notes 2025-07-24 Notes 2025-07-23 Notes 2025-07-22 Notes 2025-07-21 Notes 2025-07-19 Notes 2025-07-18 Notes 2025-07-17 Notes 2025-07-15 Notes 2025-07-12 Notes 2025-07-11 Notes 2025-07-10 Notes 2025-07-09 Notes 2025-07-08 Notes {"feeds":[{"slug":"all","title":"All Posts","priority":"auto","containsCurrentPost":true,"variants":[{"key":"md","label":"md","href":"/all.md"},{"key":"json","label":"json","href":"/all/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/all/archive/rss.xml"},{"key":"rss","label":"rss","href":"/all/rss.xml"},{"key":"atom","label":"atom","href":"/all/atom.xml"},{"key":"html","label":"html","href":"/all/"},{"key":"simple","label":"simple","href":"/all/simple/"},{"key":"txt","label":"txt","href":"/all.txt"}],"calendar":true,"posts":[{"slug":"asciirest-animated-ascii-art-for-web-pages-by-bas3line","title":"ascii.rest: animated ascii art for web pages, by @bas3line","href":"/asciirest-animated-ascii-art-for-web-pages-by-bas3line/?feed=all"},{"slug":"ping-78","title":"What to do while you wait for your agent","href":"/ping-78/?feed=all"},{"slug":"the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly","title":"The Pi Updates are insane ⟡ Pull Requests are Dead ⟡ Turso Joining Supabase ⌁ Syntax Weekly ⌁","href":"/the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly/?feed=all"},{"slug":"is-your-org-ready-for-agents","title":"Is Your Org Ready For Agents","href":"/is-your-org-ready-for-agents/?feed=all"},{"slug":"bloatware-is-dying","title":"bloatware is dying","href":"/bloatware-is-dying/?feed=all"},{"slug":"friday-october-2-2026","title":"Friday, October 2, 2026","href":"/friday-october-2-2026/?feed=all"},{"slug":"the-issue-with-everyone-vibe-coding-their-own-software","title":"The Issue With Everyone Vibe Coding Their Own Software","href":"/the-issue-with-everyone-vibe-coding-their-own-software/?feed=all"},{"slug":"we-use-mcp-wrong","title":"We use MCP wrong","href":"/we-use-mcp-wrong/?feed=all"},{"slug":"bastardica","title":"Bastardica","href":"/bastardica/?feed=all"},{"slug":"brain-rot-or-the-new-normal","title":"Brain Rot Or The New Normal","href":"/brain-rot-or-the-new-normal/?feed=all"},{"slug":"shots/this-girl-is-getting-good-at-bike-riding","title":"This Girl Is Getting Good At Bike Riding","href":"/shots/this-girl-is-getting-good-at-bike-riding/?feed=all"},{"slug":"shots/a-ride-around-the-neighborhood","title":"A Ride Around The Neighborhood","href":"/shots/a-ride-around-the-neighborhood/?feed=all"},{"slug":"fixing-the-pr-bottleneck-matt-pocock-aihero","title":"Fixing the PR Bottleneck — Matt Pocock, AIHero","href":"/fixing-the-pr-bottleneck-matt-pocock-aihero/?feed=all"},{"slug":"the-vomit-prompt","title":"The Vomit Prompt","href":"/the-vomit-prompt/?feed=all"},{"slug":"shots/i-came-across-a-welded-in-hot-swap-prototype","title":"I Came Across A Welded In Hot Swap Prototype","href":"/shots/i-came-across-a-welded-in-hot-swap-prototype/?feed=all"},{"slug":"2026-09-28-notes","title":"2026-09-28 Notes","href":"/2026-09-28-notes/?feed=all"},{"slug":"shots/not-every-attempt-lands-on-the-board","title":"Not Every Attempt Lands On The Board","href":"/shots/not-every-attempt-lands-on-the-board/?feed=all"},{"slug":"becoming-a-piano-repair-tech","title":"Becoming A Piano Repair Tech","href":"/becoming-a-piano-repair-tech/?feed=all"},{"slug":"2026-09-27-notes","title":"2026-09-27 Notes","href":"/2026-09-27-notes/?feed=all"},{"slug":"shots/dobby-looking-ominous","title":"Dobby Looking Ominous","href":"/shots/dobby-looking-ominous/?feed=all"},{"slug":"thought-1033","title":"Claude Opus 5.5 100 HTML Files","href":"/thought-1033/?feed=all"},{"slug":"thought-1032","title":"dax on X: “in the next version of OpenCode we added /btw which…","href":"/thought-1032/?feed=all"},{"slug":"ping-77","title":"typesafe jev any good","href":"/ping-77/?feed=all"},{"slug":"shots/washing-the-algae-off-the-sidewalk-overflow","title":"Washing The Agae Off The Sidewalk Overflow","href":"/shots/washing-the-algae-off-the-sidewalk-overflow/?feed=all"},{"slug":"shots/rewashing-the-algae-off-the-sidewalk-f26","title":"Rewashing The Algae Off The Sidewalk F26","href":"/shots/rewashing-the-algae-off-the-sidewalk-f26/?feed=all"},{"slug":"2026-09-18-notes","title":"2026-09-18 Notes","href":"/2026-09-18-notes/?feed=all","active":true},{"slug":"ping-76","title":"Are the ai labs really slowing down?","href":"/ping-76/?feed=all"},{"slug":"shots/bike-ride-in-my-mando-shirt","title":"Bike Ride In My Mando Shirt","href":"/shots/bike-ride-in-my-mando-shirt/?feed=all"},{"slug":"2026-09-16-notes","title":"2026-09-16 Notes","href":"/2026-09-16-notes/?feed=all"},{"slug":"thought-1031","title":"Superlogical Pre-Alpha Demo: CLI - YouTube","href":"/thought-1031/?feed=all"},{"slug":"2026-09-14-notes","title":"2026-09-14 Notes","href":"/2026-09-14-notes/?feed=all"},{"slug":"2026-09-13-notes","title":"2026-09-13 Notes","href":"/2026-09-13-notes/?feed=all"},{"slug":"2026-09-12-notes","title":"2026-09-12 Notes","href":"/2026-09-12-notes/?feed=all"},{"slug":"shots/confident-cat-on-a-rail","title":"Confident Cat On A Rail","href":"/shots/confident-cat-on-a-rail/?feed=all"},{"slug":"shots/friday-afternoon-americano-at-work","title":"Friday Afternoon Americano At Work","href":"/shots/friday-afternoon-americano-at-work/?feed=all"},{"slug":"im-done-with-devices-that-do-everything","title":"I’m done with devices that do everything","href":"/im-done-with-devices-that-do-everything/?feed=all"},{"slug":"2026-09-11-notes","title":"2026-09-11 Notes","href":"/2026-09-11-notes/?feed=all"},{"slug":"state-of-agentic-coding-10-with-armin-and-ben","title":"State of Agentic Coding #10 with Armin and Ben","href":"/state-of-agentic-coding-10-with-armin-and-ben/?feed=all"},{"slug":"2026-09-10-notes","title":"2026-09-10 Notes","href":"/2026-09-10-notes/?feed=all"},{"slug":"2026-09-09-notes","title":"2026-09-09 Notes","href":"/2026-09-09-notes/?feed=all"},{"slug":"shots/models-app-is-working","title":"Models App Is Working","href":"/shots/models-app-is-working/?feed=all"},{"slug":"2026-09-08-notes","title":"2026-09-08 Notes","href":"/2026-09-08-notes/?feed=all"},{"slug":"2026-09-07-notes","title":"2026-09-07 Notes","href":"/2026-09-07-notes/?feed=all"},{"slug":"lex-speedman-lex-at-2x-guest-at-1x","title":"Lex Speedman — Lex at 2x, guest at 1x","href":"/lex-speedman-lex-at-2x-guest-at-1x/?feed=all"},{"slug":"i-make-my-own-field-notes-and-it-costs-almost-nothing","title":"I Make My Own Field Notes (and it costs almost nothing)","href":"/i-make-my-own-field-notes-and-it-costs-almost-nothing/?feed=all"},{"slug":"itrsquos-just-the-carpethellip","title":"It’s just the Carpet…","href":"/itrsquos-just-the-carpethellip/?feed=all"},{"slug":"nate-berkopec-nateberkopec-on-x","title":"Nate Berkopec (@nateberkopec) on X","href":"/nate-berkopec-nateberkopec-on-x/?feed=all"},{"slug":"2026-09-05-notes","title":"2026-09-05 Notes","href":"/2026-09-05-notes/?feed=all"},{"slug":"i-tried-the-os-everyone-says-will-replace-macos","title":"I Tried The OS Everyone Says Will Replace macOS","href":"/i-tried-the-os-everyone-says-will-replace-macos/?feed=all"},{"slug":"lukschangekey-to-change-full-disk-encryption-password","title":"Lukschangekey to change full disk encryption password","href":"/lukschangekey-to-change-full-disk-encryption-password/?feed=all"},{"slug":"ping-75","title":"Touch dishwasher controls","href":"/ping-75/?feed=all"}],"totalPosts":2650,"prev":{"slug":"shots/rewashing-the-algae-off-the-sidewalk-f26","title":"Rewashing The Algae Off The Sidewalk F26","href":"/shots/rewashing-the-algae-off-the-sidewalk-f26/?feed=all"},"next":{"slug":"ping-76","title":"Are the ai labs really slowing down?","href":"/ping-76/?feed=all"}},{"slug":"archive","title":"Archive","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/archive.md"},{"key":"json","label":"json","href":"/archive/feed.json"},{"key":"rss","label":"rss","href":"/archive/rss.xml"},{"key":"atom","label":"atom","href":"/archive/atom.xml"},{"key":"html","label":"html","href":"/archive/"},{"key":"simple","label":"simple","href":"/archive/simple/"},{"key":"txt","label":"txt","href":"/archive.txt"}],"calendar":true,"posts":[{"slug":"can-you-still-say-i-built-this-if-ai-did-the-coding","title":"Can You Still Say “I Built This” If AI Did the Coding?","href":"/can-you-still-say-i-built-this-if-ai-did-the-coding/?feed=archive"},{"slug":"ping-80","title":"Hand painted feature film","href":"/ping-80/?feed=archive"},{"slug":"ping-79","title":"Open binaries","href":"/ping-79/?feed=archive"},{"slug":"shots/bat-cap","title":"Bat Cap","href":"/shots/bat-cap/?feed=archive"},{"slug":"shots/ghost-cap","title":"Ghost Cap","href":"/shots/ghost-cap/?feed=archive"},{"slug":"shots/jack-o-lantern-cap","title":"Jack-O-Lantern Cap","href":"/shots/jack-o-lantern-cap/?feed=archive"},{"slug":"asciirest-animated-ascii-art-for-web-pages-by-bas3line","title":"ascii.rest: animated ascii art for web pages, by @bas3line","href":"/asciirest-animated-ascii-art-for-web-pages-by-bas3line/?feed=archive"},{"slug":"ping-78","title":"What to do while you wait for your agent","href":"/ping-78/?feed=archive"},{"slug":"the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly","title":"The Pi Updates are insane ⟡ Pull Requests are Dead ⟡ Turso Joining Supabase ⌁ Syntax Weekly ⌁","href":"/the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly/?feed=archive"},{"slug":"is-your-org-ready-for-agents","title":"Is Your Org Ready For Agents","href":"/is-your-org-ready-for-agents/?feed=archive"},{"slug":"bloatware-is-dying","title":"bloatware is dying","href":"/bloatware-is-dying/?feed=archive"},{"slug":"friday-october-2-2026","title":"Friday, October 2, 2026","href":"/friday-october-2-2026/?feed=archive"},{"slug":"the-issue-with-everyone-vibe-coding-their-own-software","title":"The Issue With Everyone Vibe Coding Their Own Software","href":"/the-issue-with-everyone-vibe-coding-their-own-software/?feed=archive"},{"slug":"we-use-mcp-wrong","title":"We use MCP wrong","href":"/we-use-mcp-wrong/?feed=archive"},{"slug":"bastardica","title":"Bastardica","href":"/bastardica/?feed=archive"},{"slug":"brain-rot-or-the-new-normal","title":"Brain Rot Or The New Normal","href":"/brain-rot-or-the-new-normal/?feed=archive"},{"slug":"shots/this-girl-is-getting-good-at-bike-riding","title":"This Girl Is Getting Good At Bike Riding","href":"/shots/this-girl-is-getting-good-at-bike-riding/?feed=archive"},{"slug":"shots/a-ride-around-the-neighborhood","title":"A Ride Around The Neighborhood","href":"/shots/a-ride-around-the-neighborhood/?feed=archive"},{"slug":"fixing-the-pr-bottleneck-matt-pocock-aihero","title":"Fixing the PR Bottleneck — Matt Pocock, AIHero","href":"/fixing-the-pr-bottleneck-matt-pocock-aihero/?feed=archive"},{"slug":"the-vomit-prompt","title":"The Vomit Prompt","href":"/the-vomit-prompt/?feed=archive"},{"slug":"shots/i-came-across-a-welded-in-hot-swap-prototype","title":"I Came Across A Welded In Hot Swap Prototype","href":"/shots/i-came-across-a-welded-in-hot-swap-prototype/?feed=archive"},{"slug":"shots/not-every-attempt-lands-on-the-board","title":"Not Every Attempt Lands On The Board","href":"/shots/not-every-attempt-lands-on-the-board/?feed=archive"},{"slug":"becoming-a-piano-repair-tech","title":"Becoming A Piano Repair Tech","href":"/becoming-a-piano-repair-tech/?feed=archive"},{"slug":"shots/dobby-looking-ominous","title":"Dobby Looking Ominous","href":"/shots/dobby-looking-ominous/?feed=archive"},{"slug":"thought-1033","title":"Claude Opus 5.5 100 HTML Files","href":"/thought-1033/?feed=archive"},{"slug":"thought-1032","title":"dax on X: “in the next version of OpenCode we added /btw which…","href":"/thought-1032/?feed=archive"},{"slug":"ping-77","title":"typesafe jev any good","href":"/ping-77/?feed=archive"},{"slug":"shots/washing-the-algae-off-the-sidewalk-overflow","title":"Washing The Agae Off The Sidewalk Overflow","href":"/shots/washing-the-algae-off-the-sidewalk-overflow/?feed=archive"},{"slug":"shots/rewashing-the-algae-off-the-sidewalk-f26","title":"Rewashing The Algae Off The Sidewalk F26","href":"/shots/rewashing-the-algae-off-the-sidewalk-f26/?feed=archive"},{"slug":"ping-76","title":"Are the ai labs really slowing down?","href":"/ping-76/?feed=archive"},{"slug":"shots/bike-ride-in-my-mando-shirt","title":"Bike Ride In My Mando Shirt","href":"/shots/bike-ride-in-my-mando-shirt/?feed=archive"},{"slug":"thought-1031","title":"Superlogical Pre-Alpha Demo: CLI - YouTube","href":"/thought-1031/?feed=archive"},{"slug":"shots/confident-cat-on-a-rail","title":"Confident Cat On A Rail","href":"/shots/confident-cat-on-a-rail/?feed=archive"},{"slug":"shots/friday-afternoon-americano-at-work","title":"Friday Afternoon Americano At Work","href":"/shots/friday-afternoon-americano-at-work/?feed=archive"},{"slug":"im-done-with-devices-that-do-everything","title":"I’m done with devices that do everything","href":"/im-done-with-devices-that-do-everything/?feed=archive"},{"slug":"state-of-agentic-coding-10-with-armin-and-ben","title":"State of Agentic Coding #10 with Armin and Ben","href":"/state-of-agentic-coding-10-with-armin-and-ben/?feed=archive"},{"slug":"shots/models-app-is-working","title":"Models App Is Working","href":"/shots/models-app-is-working/?feed=archive"},{"slug":"lex-speedman-lex-at-2x-guest-at-1x","title":"Lex Speedman — Lex at 2x, guest at 1x","href":"/lex-speedman-lex-at-2x-guest-at-1x/?feed=archive"},{"slug":"i-make-my-own-field-notes-and-it-costs-almost-nothing","title":"I Make My Own Field Notes (and it costs almost nothing)","href":"/i-make-my-own-field-notes-and-it-costs-almost-nothing/?feed=archive"},{"slug":"itrsquos-just-the-carpethellip","title":"It’s just the Carpet…","href":"/itrsquos-just-the-carpethellip/?feed=archive"},{"slug":"nate-berkopec-nateberkopec-on-x","title":"Nate Berkopec (@nateberkopec) on X","href":"/nate-berkopec-nateberkopec-on-x/?feed=archive"},{"slug":"i-tried-the-os-everyone-says-will-replace-macos","title":"I Tried The OS Everyone Says Will Replace macOS","href":"/i-tried-the-os-everyone-says-will-replace-macos/?feed=archive"},{"slug":"lukschangekey-to-change-full-disk-encryption-password","title":"Lukschangekey to change full disk encryption password","href":"/lukschangekey-to-change-full-disk-encryption-password/?feed=archive"},{"slug":"ping-75","title":"Touch dishwasher controls","href":"/ping-75/?feed=archive"},{"slug":"how-to-set-up-a-boot-drive","title":"how to set up a boot drive","href":"/how-to-set-up-a-boot-drive/?feed=archive"},{"slug":"thought-1030","title":"/goal is a special command for OpenAI… | justin․searls․co","href":"/thought-1030/?feed=archive"},{"slug":"thought-1029","title":"A Calendar View For My Blog - Jim Nielsen’s Blog","href":"/thought-1029/?feed=archive"},{"slug":"shots/second-sentinal-final-audience-wish","title":"Second Sentinel Final Audience Wish","href":"/shots/second-sentinal-final-audience-wish/?feed=archive"},{"slug":"shots/second-sentinal-second-encounter","title":"Second Sentinel Second Encounter","href":"/shots/second-sentinal-second-encounter/?feed=archive"},{"slug":"shots/second-sentinal-first-encounter","title":"Second Sentinel First Encounter","href":"/shots/second-sentinal-first-encounter/?feed=archive"},{"slug":"stl-text-lab-update","title":"Stl Text Lab Update","href":"/stl-text-lab-update/?feed=archive"}],"totalPosts":2596},{"slug":"blog","title":"Blog","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/blog.md"},{"key":"json","label":"json","href":"/blog/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/blog/archive/rss.xml"},{"key":"rss","label":"rss","href":"/blog/rss.xml"},{"key":"atom","label":"atom","href":"/blog/atom.xml"},{"key":"html","label":"html","href":"/blog/"},{"key":"simple","label":"simple","href":"/blog/simple/"},{"key":"txt","label":"txt","href":"/blog.txt"}],"calendar":true,"posts":[{"slug":"is-your-org-ready-for-agents","title":"Is Your Org Ready For Agents","href":"/is-your-org-ready-for-agents/?feed=blog"},{"slug":"brain-rot-or-the-new-normal","title":"Brain Rot Or The New Normal","href":"/brain-rot-or-the-new-normal/?feed=blog"},{"slug":"the-vomit-prompt","title":"The Vomit Prompt","href":"/the-vomit-prompt/?feed=blog"},{"slug":"becoming-a-piano-repair-tech","title":"Becoming A Piano Repair Tech","href":"/becoming-a-piano-repair-tech/?feed=blog"},{"slug":"stl-text-lab-update","title":"Stl Text Lab Update","href":"/stl-text-lab-update/?feed=blog"},{"slug":"keys-waylonwalker-com","title":"Keys.waylonwalker.com","href":"/keys-waylonwalker-com/?feed=blog"},{"slug":"malicious-aur-packages-jun-2026","title":"Malicious Aur Packages Jun 2026","href":"/malicious-aur-packages-jun-2026/?feed=blog"},{"slug":"prompt-seagulls","title":"Prompt Seagulls","href":"/prompt-seagulls/?feed=blog"},{"slug":"agents-are-never-done","title":"agents are never done","href":"/agents-are-never-done/?feed=blog"},{"slug":"carry","title":"/carry/","href":"/carry/?feed=blog"},{"slug":"i-built-a-tmux-session-switcher","title":"I Built A Tmux Session Switcher","href":"/i-built-a-tmux-session-switcher/?feed=blog"},{"slug":"verify","title":"/verify","href":"/verify/?feed=blog"},{"slug":"top4","title":"/top4","href":"/top4/?feed=blog"},{"slug":"yep","title":"/yep","href":"/yep/?feed=blog"},{"slug":"nope","title":"/nope","href":"/nope/?feed=blog"},{"slug":"first-w-in-brotato","title":"First W In Brotato","href":"/first-w-in-brotato/?feed=blog"},{"slug":"pm-not-babysitter","title":"Pm Not Babysitter","href":"/pm-not-babysitter/?feed=blog"},{"slug":"agent-management-is-exhausting","title":"Agent Management Is Exhausting","href":"/agent-management-is-exhausting/?feed=blog"},{"slug":"stop-using-boomer-ai","title":"Stop Using Boomer Ai","href":"/stop-using-boomer-ai/?feed=blog"},{"slug":"mentions","title":"Mentions","href":"/mentions/?feed=blog"},{"slug":"what-your-coding-tool-says-about-you","title":"What Your Coding Tool Says About You","href":"/what-your-coding-tool-says-about-you/?feed=blog"},{"slug":"dont-trust-users-tokens","title":"Dont Trust Users Tokens","href":"/dont-trust-users-tokens/?feed=blog"},{"slug":"ai","title":"Ai","href":"/ai/?feed=blog"},{"slug":"og-sample","title":"Og-Sample","href":"/og-sample/?feed=blog"},{"slug":"2026-resolutions","title":"2026 Resolutions","href":"/2026-resolutions/?feed=blog"},{"slug":"developer-vs-artist-ai","title":"Developer Vs Artist Ai","href":"/developer-vs-artist-ai/?feed=blog"},{"slug":"the-right-reasons-to-run-kubernetes-in-your-homelab","title":"The Right Reasons To Run Kubernetes In Your Homelab","href":"/the-right-reasons-to-run-kubernetes-in-your-homelab/?feed=blog"},{"slug":"one-year-of-shots","title":"One Year Of Shots","href":"/one-year-of-shots/?feed=blog"},{"slug":"the-wrong-reasons-to-run-kubernetes-in-your-homelab","title":"The Wrong Reasons To Run Kubernetes In Your Homelab","href":"/the-wrong-reasons-to-run-kubernetes-in-your-homelab/?feed=blog"},{"slug":"another-big-cloud-outage-nov-2025","title":"Another Big Cloud Outage Nov 2025","href":"/another-big-cloud-outage-nov-2025/?feed=blog"},{"slug":"3d-printed-corner-clamp","title":"3d-Printed Corner Clamp","href":"/3d-printed-corner-clamp/?feed=blog"},{"slug":"techbrophobic","title":"Techbrophobic","href":"/techbrophobic/?feed=blog"},{"slug":"mcat-anything","title":"Mcat Anything","href":"/mcat-anything/?feed=blog"},{"slug":"missing-thoughts-on-main","title":"Missing Thoughts","href":"/missing-thoughts-on-main/?feed=blog"},{"slug":"rules","title":"Rules","href":"/rules/?feed=blog"},{"slug":"first-3d-printed-threads","title":"First 3d Printed Threads","href":"/first-3d-printed-threads/?feed=blog"},{"slug":"3d-printing-dovetails-experiment","title":"3d Printing Dovetails Experiment","href":"/3d-printing-dovetails-experiment/?feed=blog"},{"slug":"python-extras-are-for-shipping","title":"python extras are for shipping","href":"/python-extras-are-for-shipping/?feed=blog"},{"slug":"kraft-coordinates","title":"Kraft-Coordinates","href":"/kraft-coordinates/?feed=blog"},{"slug":"shots-get-an-upgrade","title":"Shots Get An Upgrade To the Main Feed","href":"/shots-get-an-upgrade/?feed=blog"},{"slug":"zmk-two-hand-hold-down","title":"zmk two hand hold down","href":"/zmk-two-hand-hold-down/?feed=blog"},{"slug":"why-make-a-website-in-2025","title":"Why Make a Website in 2025","href":"/why-make-a-website-in-2025/?feed=blog"},{"slug":"store","title":"store","href":"/store/?feed=blog"},{"slug":"when-to-vibe-code","title":"When To Vibe Code","href":"/when-to-vibe-code/?feed=blog"},{"slug":"keycap-cut-away","title":"Keycap Cut Away","href":"/keycap-cut-away/?feed=blog"},{"slug":"knife-sharpener-small-upgrade","title":"Knife Sharpener Small Upgrade","href":"/knife-sharpener-small-upgrade/?feed=blog"},{"slug":"im-out-on-agents","title":"I’m Out On Agents","href":"/im-out-on-agents/?feed=blog"},{"slug":"trying-forgejo","title":"trying forgejo","href":"/trying-forgejo/?feed=blog"},{"slug":"blender-donut-tutorial-2025","title":"blender donut tutorial 2025","href":"/blender-donut-tutorial-2025/?feed=blog"},{"slug":"command-palettes-are-overrated","title":"command palettes are overrated","href":"/command-palettes-are-overrated/?feed=blog"},{"slug":"just-fucking-use-kubernetes","title":"just fucking use kubernetes","href":"/just-fucking-use-kubernetes/?feed=blog"}],"totalPosts":328},{"slug":"ping","title":"ping","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/ping.md"},{"key":"json","label":"json","href":"/ping/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/ping/archive/rss.xml"},{"key":"rss","label":"rss","href":"/ping/rss.xml"},{"key":"atom","label":"atom","href":"/ping/atom.xml"},{"key":"html","label":"html","href":"/ping/"},{"key":"simple","label":"simple","href":"/ping/simple/"},{"key":"txt","label":"txt","href":"/ping.txt"}],"calendar":true,"posts":[{"slug":"ping-80","title":"Hand painted feature film","href":"/ping-80/?feed=ping"},{"slug":"ping-79","title":"Open binaries","href":"/ping-79/?feed=ping"},{"slug":"ping-78","title":"What to do while you wait for your agent","href":"/ping-78/?feed=ping"},{"slug":"ping-77","title":"typesafe jev any good","href":"/ping-77/?feed=ping"},{"slug":"ping-76","title":"Are the ai labs really slowing down?","href":"/ping-76/?feed=ping"},{"slug":"ping-75","title":"Touch dishwasher controls","href":"/ping-75/?feed=ping"},{"slug":"ping-74","title":"politics in linux","href":"/ping-74/?feed=ping"},{"slug":"ping-73","title":"when did openai bring back the hourly limit","href":"/ping-73/?feed=ping"},{"slug":"ping-72","title":"second brain slop is dumb","href":"/ping-72/?feed=ping"},{"slug":"ping-71","title":"agentic engineering takes discipline","href":"/ping-71/?feed=ping"},{"slug":"ping-70","title":"Dammit I think I made an editor","href":"/ping-70/?feed=ping"},{"slug":"ping-69","title":"Microsoft can only 50k","href":"/ping-69/?feed=ping"},{"slug":"ping-68","title":"No one wants to on call vibes","href":"/ping-68/?feed=ping"},{"slug":"ping-67","title":"thinking about headlines","href":"/ping-67/?feed=ping"},{"slug":"ping-66","title":"Ping 66","href":"/ping-66/?feed=ping"},{"slug":"ping-65","title":"Ping 65","href":"/ping-65/?feed=ping"},{"slug":"ping-64","title":"hmmm.","href":"/ping-64/?feed=ping"},{"slug":"ping-63","title":"Does codex change throughout the token usage window?","href":"/ping-63/?feed=ping"},{"slug":"ping-62","title":"Mythos gone already","href":"/ping-62/?feed=ping"},{"slug":"ping-61","title":"just good enough","href":"/ping-61/?feed=ping"},{"slug":"flowing-thoughts-ai-to-help-blast-radius","title":"Flowing Thoughts Ai To Help Blast Radius","href":"/flowing-thoughts-ai-to-help-blast-radius/?feed=ping"},{"slug":"ping-59","title":"Ping 59","href":"/ping-59/?feed=ping"},{"slug":"ping-58","title":"remember rule 4","href":"/ping-58/?feed=ping"},{"slug":"ping-57","title":"almost left tokens on the table","href":"/ping-57/?feed=ping"},{"slug":"ping-56","title":"Can You Feel the Slop","href":"/ping-56/?feed=ping"},{"slug":"ping-55","title":"approve rm","href":"/ping-55/?feed=ping"},{"slug":"ping-54","title":"Ping 54","href":"/ping-54/?feed=ping"},{"slug":"ping-53","title":"Tokens Just don’t go as far as they used to","href":"/ping-53/?feed=ping"},{"slug":"ping-52","title":"Ping 52","href":"/ping-52/?feed=ping"},{"slug":"ping-50-a","title":"Ping 50 A","href":"/ping-50-a/?feed=ping"},{"slug":"ping-50","title":"Prove Yourself Agent","href":"/ping-50/?feed=ping"},{"slug":"ping-49","title":"What happens when the 0 days are exposed?","href":"/ping-49/?feed=ping"},{"slug":"ping-48","title":"Ping 48","href":"/ping-48/?feed=ping"},{"slug":"ping-46","title":"What is this job anymore","href":"/ping-46/?feed=ping"},{"slug":"ping-47","title":"Ping 47","href":"/ping-47/?feed=ping"},{"slug":"ping-45","title":"The year of the supply chain attacks","href":"/ping-45/?feed=ping"},{"slug":"ping-44","title":"The final nail for Windows?","href":"/ping-44/?feed=ping"},{"slug":"ping-43","title":"Ping 43","href":"/ping-43/?feed=ping"},{"slug":"ping-42","title":"Social Media is dead","href":"/ping-42/?feed=ping"},{"slug":"ping-37","title":"Where Is The Tech Industry Going","href":"/ping-37/?feed=ping"},{"slug":"is-compaction-the-issue","title":"Is Compaction The Issue","href":"/is-compaction-the-issue/?feed=ping"},{"slug":"lets-land-the-plane","title":"Lets Land The Plane","href":"/lets-land-the-plane/?feed=ping"},{"slug":"i-dont-want-someone-else-running-my-agents","title":"I don’t want someone else running my agents","href":"/i-dont-want-someone-else-running-my-agents/?feed=ping"},{"slug":"ping-38","title":"Ping 38","href":"/ping-38/?feed=ping"},{"slug":"ping-35b","title":"Learning to agent","href":"/ping-35b/?feed=ping"},{"slug":"ping-35","title":"Studio Ghibli Images in the Wild","href":"/ping-35/?feed=ping"},{"slug":"ping-36","title":"Ping 36","href":"/ping-36/?feed=ping"},{"slug":"ping-34","title":"Research, Plan, Implement","href":"/ping-34/?feed=ping"},{"slug":"ping-32","title":"Context Poisoning Was There All Along","href":"/ping-32/?feed=ping"},{"slug":"ping-33","title":"Agents cannot replace the thinking, they only amplify it","href":"/ping-33/?feed=ping"},{"slug":"ping-31","title":"Thinking about ai productivity again","href":"/ping-31/?feed=ping"}],"totalPosts":80},{"slug":"til","title":"Today I Learned","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/til.md"},{"key":"json","label":"json","href":"/til/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/til/archive/rss.xml"},{"key":"rss","label":"rss","href":"/til/rss.xml"},{"key":"atom","label":"atom","href":"/til/atom.xml"},{"key":"html","label":"html","href":"/til/"},{"key":"simple","label":"simple","href":"/til/simple/"},{"key":"txt","label":"txt","href":"/til.txt"}],"calendar":true,"posts":[{"slug":"lukschangekey-to-change-full-disk-encryption-password","title":"Lukschangekey to change full disk encryption password","href":"/lukschangekey-to-change-full-disk-encryption-password/?feed=til"},{"slug":"how-to-set-up-a-boot-drive","title":"how to set up a boot drive","href":"/how-to-set-up-a-boot-drive/?feed=til"},{"slug":"helix-markata-go-lsp","title":"helix markata go lsp","href":"/helix-markata-go-lsp/?feed=til"},{"slug":"carrot-m-for-carriage-return","title":"^M for carriage return","href":"/carrot-m-for-carriage-return/?feed=til"},{"slug":"unlock-a-locked-gpg-key","title":"unlock a locked gpg key","href":"/unlock-a-locked-gpg-key/?feed=til"},{"slug":"rpm-ostree-status","title":"rpm ostree status","href":"/rpm-ostree-status/?feed=til"},{"slug":"fixing-a-corrupt-zsh_history","title":"fixing a corrupt zshrc","href":"/fixing-a-corrupt-zsh_history/?feed=til"},{"slug":"one-eyed-fighting-kirby","title":"one eyed fighting kirby","href":"/one-eyed-fighting-kirby/?feed=til"},{"slug":"rsync-delays","title":"rsync delays","href":"/rsync-delays/?feed=til"},{"slug":"zsh-source-env","title":"zsh source .env","href":"/zsh-source-env/?feed=til"},{"slug":"setopt-hist_ignore_space","title":"setopt HIST_IGNORE_SPACE","href":"/setopt-hist_ignore_space/?feed=til"},{"slug":"forgejo-push-to-create","title":"forgejo push to create","href":"/forgejo-push-to-create/?feed=til"},{"slug":"nless","title":"nless","href":"/nless/?feed=til"},{"slug":"image-compare-in-markata-go","title":"image compare in markata go","href":"/image-compare-in-markata-go/?feed=til"},{"slug":"testing-copilot-model-flag","title":"testing copilot model flag","href":"/testing-copilot-model-flag/?feed=til"},{"slug":"stow-local-ignore","title":"stow local ignore","href":"/stow-local-ignore/?feed=til"},{"slug":"move-zmk-keyboard-to-new-bluetooth-adapter","title":"move zmk keyboard to new bluetooth adapter","href":"/move-zmk-keyboard-to-new-bluetooth-adapter/?feed=til"},{"slug":"dot-dockerenv","title":"dot dockerenv","href":"/dot-dockerenv/?feed=til"},{"slug":"gh-do-i-have-a-pr","title":"gh do I have a pr","href":"/gh-do-i-have-a-pr/?feed=til"},{"slug":"double-gutter","title":"double gutter","href":"/double-gutter/?feed=til"},{"slug":"diff-kubernetes-manifest-with-cluster","title":"diff kubernetes manifest with cluster","href":"/diff-kubernetes-manifest-with-cluster/?feed=til"},{"slug":"format-markdown-with-mdformat","title":"format markdown with mdformat","href":"/format-markdown-with-mdformat/?feed=til"},{"slug":"opencode-variants","title":"opencode variants","href":"/opencode-variants/?feed=til"},{"slug":"opencode-init-prompt","title":"opencode init prompt","href":"/opencode-init-prompt/?feed=til"},{"slug":"til/tpope-vim-speeddating","title":"tpope vim-speeddating","href":"/til/tpope-vim-speeddating/?feed=til"},{"slug":"light-mode-screen-recording-css","title":"light mode screen recording css","href":"/light-mode-screen-recording-css/?feed=til"},{"slug":"light-mode-screen-recording","title":"light mode screen recording","href":"/light-mode-screen-recording/?feed=til"},{"slug":"youtube-gemini-is-actually-useful","title":"YouTube Gemini is Actually Useful","href":"/youtube-gemini-is-actually-useful/?feed=til"},{"slug":"numbered-posts-in-obsidian","title":"numbered posts in obsidian","href":"/numbered-posts-in-obsidian/?feed=til"},{"slug":"git-name-status","title":"git name status","href":"/git-name-status/?feed=til"},{"slug":"minecraft-server-memory","title":"minecraft server memory","href":"/minecraft-server-memory/?feed=til"},{"slug":"web-snow-fall","title":"web snow fall","href":"/web-snow-fall/?feed=til"},{"slug":"check-your-kubeconfig-expire-time","title":"check your kubeconfig expire time","href":"/check-your-kubeconfig-expire-time/?feed=til"},{"slug":"gh-auth-switch","title":"gh auth switch","href":"/gh-auth-switch/?feed=til"},{"slug":"setup-bambu-studio-in-distrobox","title":"setup bambu-studio in distrobox","href":"/setup-bambu-studio-in-distrobox/?feed=til"},{"slug":"k3s-system-upgrade-minor-by-minor","title":"k3s system-upgrade minor by minor","href":"/k3s-system-upgrade-minor-by-minor/?feed=til"},{"slug":"columns-env-var","title":"COLUMNS env var","href":"/columns-env-var/?feed=til"},{"slug":"tea-login-flag","title":"tea login flag","href":"/tea-login-flag/?feed=til"},{"slug":"side-effect-of-just-stars","title":"side effect of just stars","href":"/side-effect-of-just-stars/?feed=til"},{"slug":"pydantic-settings-alias-choices","title":"pydantic settings alias choices","href":"/pydantic-settings-alias-choices/?feed=til"},{"slug":"uv-s3-sync-with-dotenv","title":"uv s3 sync with dotenv","href":"/uv-s3-sync-with-dotenv/?feed=til"},{"slug":"starlette-head-request","title":"starlette head request","href":"/starlette-head-request/?feed=til"},{"slug":"dont-copy-your-gitignore-to-stignore","title":"Don’t copy your gitignore to stignore","href":"/dont-copy-your-gitignore-to-stignore/?feed=til"},{"slug":"vanilla-html-hover-text","title":"vanilla html hover text","href":"/vanilla-html-hover-text/?feed=til"},{"slug":"tar-over-ssh","title":"tar over ssh","href":"/tar-over-ssh/?feed=til"},{"slug":"uv-script-management","title":"uv script management","href":"/uv-script-management/?feed=til"},{"slug":"nvim-delete-current-file","title":"nvim delete current file","href":"/nvim-delete-current-file/?feed=til"},{"slug":"vim-noa","title":"vim noa","href":"/vim-noa/?feed=til"},{"slug":"modd","title":"modd","href":"/modd/?feed=til"},{"slug":"bash-timestamp","title":"bash timestamp","href":"/bash-timestamp/?feed=til"},{"slug":"qr-codes-in-python","title":"qr codes in python","href":"/qr-codes-in-python/?feed=til"}],"totalPosts":178},{"slug":"thoughts-feed","title":"Thoughts","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/thoughts-feed.md"},{"key":"json","label":"json","href":"/thoughts-feed/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/thoughts-feed/archive/rss.xml"},{"key":"rss","label":"rss","href":"/thoughts-feed/rss.xml"},{"key":"atom","label":"atom","href":"/thoughts-feed/atom.xml"},{"key":"html","label":"html","href":"/thoughts-feed/"},{"key":"simple","label":"simple","href":"/thoughts-feed/simple/"},{"key":"txt","label":"txt","href":"/thoughts-feed.txt"}],"calendar":true,"posts":[{"slug":"can-you-still-say-i-built-this-if-ai-did-the-coding","title":"Can You Still Say “I Built This” If AI Did the Coding?","href":"/can-you-still-say-i-built-this-if-ai-did-the-coding/?feed=thoughts-feed"},{"slug":"asciirest-animated-ascii-art-for-web-pages-by-bas3line","title":"ascii.rest: animated ascii art for web pages, by @bas3line","href":"/asciirest-animated-ascii-art-for-web-pages-by-bas3line/?feed=thoughts-feed"},{"slug":"the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly","title":"The Pi Updates are insane ⟡ Pull Requests are Dead ⟡ Turso Joining Supabase ⌁ Syntax Weekly ⌁","href":"/the-pi-updates-are-insane-pull-requests-are-dead-turso-joining-supabase-syntax-weekly/?feed=thoughts-feed"},{"slug":"friday-october-2-2026","title":"Friday, October 2, 2026","href":"/friday-october-2-2026/?feed=thoughts-feed"},{"slug":"the-issue-with-everyone-vibe-coding-their-own-software","title":"The Issue With Everyone Vibe Coding Their Own Software","href":"/the-issue-with-everyone-vibe-coding-their-own-software/?feed=thoughts-feed"},{"slug":"we-use-mcp-wrong","title":"We use MCP wrong","href":"/we-use-mcp-wrong/?feed=thoughts-feed"},{"slug":"bastardica","title":"Bastardica","href":"/bastardica/?feed=thoughts-feed"},{"slug":"fixing-the-pr-bottleneck-matt-pocock-aihero","title":"Fixing the PR Bottleneck — Matt Pocock, AIHero","href":"/fixing-the-pr-bottleneck-matt-pocock-aihero/?feed=thoughts-feed"},{"slug":"thought-1033","title":"Claude Opus 5.5 100 HTML Files","href":"/thought-1033/?feed=thoughts-feed"},{"slug":"thought-1032","title":"dax on X: “in the next version of OpenCode we added /btw which…","href":"/thought-1032/?feed=thoughts-feed"},{"slug":"thought-1031","title":"Superlogical Pre-Alpha Demo: CLI - YouTube","href":"/thought-1031/?feed=thoughts-feed"},{"slug":"im-done-with-devices-that-do-everything","title":"I’m done with devices that do everything","href":"/im-done-with-devices-that-do-everything/?feed=thoughts-feed"},{"slug":"state-of-agentic-coding-10-with-armin-and-ben","title":"State of Agentic Coding #10 with Armin and Ben","href":"/state-of-agentic-coding-10-with-armin-and-ben/?feed=thoughts-feed"},{"slug":"lex-speedman-lex-at-2x-guest-at-1x","title":"Lex Speedman — Lex at 2x, guest at 1x","href":"/lex-speedman-lex-at-2x-guest-at-1x/?feed=thoughts-feed"},{"slug":"i-make-my-own-field-notes-and-it-costs-almost-nothing","title":"I Make My Own Field Notes (and it costs almost nothing)","href":"/i-make-my-own-field-notes-and-it-costs-almost-nothing/?feed=thoughts-feed"},{"slug":"itrsquos-just-the-carpethellip","title":"It’s just the Carpet…","href":"/itrsquos-just-the-carpethellip/?feed=thoughts-feed"},{"slug":"nate-berkopec-nateberkopec-on-x","title":"Nate Berkopec (@nateberkopec) on X","href":"/nate-berkopec-nateberkopec-on-x/?feed=thoughts-feed"},{"slug":"i-tried-the-os-everyone-says-will-replace-macos","title":"I Tried The OS Everyone Says Will Replace macOS","href":"/i-tried-the-os-everyone-says-will-replace-macos/?feed=thoughts-feed"},{"slug":"thought-1030","title":"/goal is a special command for OpenAI… | justin․searls․co","href":"/thought-1030/?feed=thoughts-feed"},{"slug":"thought-1029","title":"A Calendar View For My Blog - Jim Nielsen’s Blog","href":"/thought-1029/?feed=thoughts-feed"},{"slug":"thought-1028","title":"My Mechanical Keyboards","href":"/thought-1028/?feed=thoughts-feed"},{"slug":"a-quote-from-linus-torvalds","title":"A quote from Linus Torvalds","href":"/a-quote-from-linus-torvalds/?feed=thoughts-feed"},{"slug":"stop-making-tuis","title":"Stop Making TUIs","href":"/stop-making-tuis/?feed=thoughts-feed"},{"slug":"insane-ama-penalties-craig-used-for-traction-unadilla-madness-canadian-champions-crowned","title":"Insane AMA Penalties! Craig Used For Traction! Unadilla Madness! Canadian Champions Crowned!","href":"/insane-ama-penalties-craig-used-for-traction-unadilla-madness-canadian-champions-crowned/?feed=thoughts-feed"},{"slug":"im-done-with-terminals","title":"I’m done with terminals","href":"/im-done-with-terminals/?feed=thoughts-feed"},{"slug":"this-diy-datacenter-is-nuts","title":"This DIY Datacenter is NUTS","href":"/this-diy-datacenter-is-nuts/?feed=thoughts-feed"},{"slug":"thought-1027","title":"We BROKE the Golden Rule of Ergonomic Keyboards - YouTube","href":"/thought-1027/?feed=thoughts-feed"},{"slug":"dhh-how-to-build-a-profitable-company-without-losing-control","title":"DHH: How to Build a Profitable Company Without Losing Control","href":"/dhh-how-to-build-a-profitable-company-without-losing-control/?feed=thoughts-feed"},{"slug":"stop-being-skeptical-about-ai-for-development-with-charity-majors","title":"Stop being skeptical about AI for development with Charity Majors","href":"/stop-being-skeptical-about-ai-for-development-with-charity-majors/?feed=thoughts-feed"},{"slug":"thought-1026","title":"A quote from Florian Herrengt","href":"/thought-1026/?feed=thoughts-feed"},{"slug":"thought-1025","title":"Blogging and blog setups — baty.net","href":"/thought-1025/?feed=thoughts-feed"},{"slug":"thought-1024","title":"Heart of Mycelium - Gameplay Trailer - YouTube","href":"/thought-1024/?feed=thoughts-feed"},{"slug":"thought-1023","title":"The Truth About Turning Your Hobby Into a Job","href":"/thought-1023/?feed=thoughts-feed"},{"slug":"thought-1022","title":"Pipes: Blocking Communication - YouTube","href":"/thought-1022/?feed=thoughts-feed"},{"slug":"thought-1021","title":"What happens when your team 5x their token usage - YouTube","href":"/thought-1021/?feed=thoughts-feed"},{"slug":"thought-1020","title":"11 Laws of the Universe - YouTube","href":"/thought-1020/?feed=thoughts-feed"},{"slug":"thought-1019","title":"Post by @thdxr.com — Bluesky","href":"/thought-1019/?feed=thoughts-feed"},{"slug":"thought-1018","title":"XBOX DISC TO DIGITAL COMING SOON #shorts - YouTube","href":"/thought-1018/?feed=thoughts-feed"},{"slug":"thought-1017","title":"Sustainable Augmented Development • Kent Beck • YOW! 2025","href":"/thought-1017/?feed=thoughts-feed"},{"slug":"thought-1016","title":"The Internet I Grew Up With Doesn’t Exist Anymore - cleberg.net","href":"/thought-1016/?feed=thoughts-feed"},{"slug":"thought-1015","title":"Nibelungenlied40 | Book Split Keyboard Design","href":"/thought-1015/?feed=thoughts-feed"},{"slug":"thought-1014","title":"Dumb people lay off - YouTube","href":"/thought-1014/?feed=thoughts-feed"},{"slug":"thought-1013","title":"The Website Specification","href":"/thought-1013/?feed=thoughts-feed"},{"slug":"thought-1012","title":"Revisiting the closed canon","href":"/thought-1012/?feed=thoughts-feed"},{"slug":"thought-1011","title":"On Rendering Diffs :: Pierre Computer Company","href":"/thought-1011/?feed=thoughts-feed"},{"slug":"thought-1010","title":"His presence is still felt in the codebase to this day 😂 #codi…","href":"/thought-1010/?feed=thoughts-feed"},{"slug":"thought-1009","title":"UUID as a service?!","href":"/thought-1009/?feed=thoughts-feed"},{"slug":"thought-1007","title":"Average Theo video be like - YouTube","href":"/thought-1007/?feed=thoughts-feed"},{"slug":"thought-1001","title":"My First Time Hearing Lamb Of God. What Took Me So Long? - You…","href":"/thought-1001/?feed=thoughts-feed"},{"slug":"thought-1000","title":"The Point Of Making Things Is To Make Them - YouTube","href":"/thought-1000/?feed=thoughts-feed"},{"slug":"thought-999","title":"Jonathan Blow Made Me Quit My Job | Prime Reacts - YouTube","href":"/thought-999/?feed=thoughts-feed"}],"totalPosts":913},{"slug":"pings","title":"Pings","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/pings.md"},{"key":"json","label":"json","href":"/pings/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/pings/archive/rss.xml"},{"key":"rss","label":"rss","href":"/pings/rss.xml"},{"key":"atom","label":"atom","href":"/pings/atom.xml"},{"key":"html","label":"html","href":"/pings/"},{"key":"simple","label":"simple","href":"/pings/simple/"},{"key":"txt","label":"txt","href":"/pings.txt"}],"calendar":true,"posts":[{"slug":"ping-80","title":"Hand painted feature film","href":"/ping-80/?feed=pings"},{"slug":"ping-79","title":"Open binaries","href":"/ping-79/?feed=pings"},{"slug":"ping-78","title":"What to do while you wait for your agent","href":"/ping-78/?feed=pings"},{"slug":"ping-77","title":"typesafe jev any good","href":"/ping-77/?feed=pings"},{"slug":"ping-76","title":"Are the ai labs really slowing down?","href":"/ping-76/?feed=pings"},{"slug":"ping-75","title":"Touch dishwasher controls","href":"/ping-75/?feed=pings"},{"slug":"ping-74","title":"politics in linux","href":"/ping-74/?feed=pings"},{"slug":"ping-73","title":"when did openai bring back the hourly limit","href":"/ping-73/?feed=pings"},{"slug":"ping-72","title":"second brain slop is dumb","href":"/ping-72/?feed=pings"},{"slug":"ping-71","title":"agentic engineering takes discipline","href":"/ping-71/?feed=pings"},{"slug":"ping-70","title":"Dammit I think I made an editor","href":"/ping-70/?feed=pings"},{"slug":"ping-69","title":"Microsoft can only 50k","href":"/ping-69/?feed=pings"},{"slug":"ping-68","title":"No one wants to on call vibes","href":"/ping-68/?feed=pings"},{"slug":"ping-67","title":"thinking about headlines","href":"/ping-67/?feed=pings"},{"slug":"ping-66","title":"Ping 66","href":"/ping-66/?feed=pings"},{"slug":"ping-65","title":"Ping 65","href":"/ping-65/?feed=pings"},{"slug":"ping-64","title":"hmmm.","href":"/ping-64/?feed=pings"},{"slug":"ping-63","title":"Does codex change throughout the token usage window?","href":"/ping-63/?feed=pings"},{"slug":"ping-62","title":"Mythos gone already","href":"/ping-62/?feed=pings"},{"slug":"ping-61","title":"just good enough","href":"/ping-61/?feed=pings"},{"slug":"flowing-thoughts-ai-to-help-blast-radius","title":"Flowing Thoughts Ai To Help Blast Radius","href":"/flowing-thoughts-ai-to-help-blast-radius/?feed=pings"},{"slug":"ping-59","title":"Ping 59","href":"/ping-59/?feed=pings"},{"slug":"ping-58","title":"remember rule 4","href":"/ping-58/?feed=pings"},{"slug":"ping-57","title":"almost left tokens on the table","href":"/ping-57/?feed=pings"},{"slug":"ping-56","title":"Can You Feel the Slop","href":"/ping-56/?feed=pings"},{"slug":"ping-55","title":"approve rm","href":"/ping-55/?feed=pings"},{"slug":"ping-54","title":"Ping 54","href":"/ping-54/?feed=pings"},{"slug":"ping-53","title":"Tokens Just don’t go as far as they used to","href":"/ping-53/?feed=pings"},{"slug":"ping-52","title":"Ping 52","href":"/ping-52/?feed=pings"},{"slug":"ping-50-a","title":"Ping 50 A","href":"/ping-50-a/?feed=pings"},{"slug":"ping-50","title":"Prove Yourself Agent","href":"/ping-50/?feed=pings"},{"slug":"ping-49","title":"What happens when the 0 days are exposed?","href":"/ping-49/?feed=pings"},{"slug":"ping-48","title":"Ping 48","href":"/ping-48/?feed=pings"},{"slug":"ping-46","title":"What is this job anymore","href":"/ping-46/?feed=pings"},{"slug":"ping-47","title":"Ping 47","href":"/ping-47/?feed=pings"},{"slug":"ping-45","title":"The year of the supply chain attacks","href":"/ping-45/?feed=pings"},{"slug":"ping-44","title":"The final nail for Windows?","href":"/ping-44/?feed=pings"},{"slug":"ping-43","title":"Ping 43","href":"/ping-43/?feed=pings"},{"slug":"ping-42","title":"Social Media is dead","href":"/ping-42/?feed=pings"},{"slug":"ping-37","title":"Where Is The Tech Industry Going","href":"/ping-37/?feed=pings"},{"slug":"is-compaction-the-issue","title":"Is Compaction The Issue","href":"/is-compaction-the-issue/?feed=pings"},{"slug":"lets-land-the-plane","title":"Lets Land The Plane","href":"/lets-land-the-plane/?feed=pings"},{"slug":"i-dont-want-someone-else-running-my-agents","title":"I don’t want someone else running my agents","href":"/i-dont-want-someone-else-running-my-agents/?feed=pings"},{"slug":"ping-38","title":"Ping 38","href":"/ping-38/?feed=pings"},{"slug":"ping-35b","title":"Learning to agent","href":"/ping-35b/?feed=pings"},{"slug":"ping-35","title":"Studio Ghibli Images in the Wild","href":"/ping-35/?feed=pings"},{"slug":"ping-36","title":"Ping 36","href":"/ping-36/?feed=pings"},{"slug":"ping-34","title":"Research, Plan, Implement","href":"/ping-34/?feed=pings"},{"slug":"ping-32","title":"Context Poisoning Was There All Along","href":"/ping-32/?feed=pings"},{"slug":"ping-33","title":"Agents cannot replace the thinking, they only amplify it","href":"/ping-33/?feed=pings"},{"slug":"ping-31","title":"Thinking about ai productivity again","href":"/ping-31/?feed=pings"}],"totalPosts":80},{"slug":"shots","title":"Shots","priority":"primary","primary":true,"variants":[{"key":"md","label":"md","href":"/shots.md"},{"key":"json","label":"json","href":"/shots/feed.json"},{"key":"archive-rss","label":"archive-rss","href":"/shots/archive/rss.xml"},{"key":"rss","label":"rss","href":"/shots/rss.xml"},{"key":"atom","label":"atom","href":"/shots/atom.xml"},{"key":"html","label":"html","href":"/shots/"},{"key":"simple","label":"simple","href":"/shots/simple/"},{"key":"txt","label":"txt","href":"/shots.txt"}],"calendar":true,"posts":[{"slug":"shots/bat-cap","title":"Bat Cap","href":"/shots/bat-cap/?feed=shots"},{"slug":"shots/ghost-cap","title":"Ghost Cap","href":"/shots/ghost-cap/?feed=shots"},{"slug":"shots/jack-o-lantern-cap","title":"Jack-O-Lantern Cap","href":"/shots/jack-o-lantern-cap/?feed=shots"},{"slug":"shots/this-girl-is-getting-good-at-bike-riding","title":"This Girl Is Getting Good At Bike Riding","href":"/shots/this-girl-is-getting-good-at-bike-riding/?feed=shots"},{"slug":"shots/a-ride-around-the-neighborhood","title":"A Ride Around The Neighborhood","href":"/shots/a-ride-around-the-neighborhood/?feed=shots"},{"slug":"shots/i-came-across-a-welded-in-hot-swap-prototype","title":"I Came Across A Welded In Hot Swap Prototype","href":"/shots/i-came-across-a-welded-in-hot-swap-prototype/?feed=shots"},{"slug":"shots/not-every-attempt-lands-on-the-board","title":"Not Every Attempt Lands On The Board","href":"/shots/not-every-attempt-lands-on-the-board/?feed=shots"},{"slug":"shots/dobby-looking-ominous","title":"Dobby Looking Ominous","href":"/shots/dobby-looking-ominous/?feed=shots"},{"slug":"shots/washing-the-algae-off-the-sidewalk-overflow","title":"Washing The Agae Off The Sidewalk Overflow","href":"/shots/washing-the-algae-off-the-sidewalk-overflow/?feed=shots"},{"slug":"shots/rewashing-the-algae-off-the-sidewalk-f26","title":"Rewashing The Algae Off The Sidewalk F26","href":"/shots/rewashing-the-algae-off-the-sidewalk-f26/?feed=shots"},{"slug":"shots/bike-ride-in-my-mando-shirt","title":"Bike Ride In My Mando Shirt","href":"/shots/bike-ride-in-my-mando-shirt/?feed=shots"},{"slug":"shots/confident-cat-on-a-rail","title":"Confident Cat On A Rail","href":"/shots/confident-cat-on-a-rail/?feed=shots"},{"slug":"shots/friday-afternoon-americano-at-work","title":"Friday Afternoon Americano At Work","href":"/shots/friday-afternoon-americano-at-work/?feed=shots"},{"slug":"shots/models-app-is-working","title":"Models App Is Working","href":"/shots/models-app-is-working/?feed=shots"},{"slug":"shots/second-sentinal-final-audience-wish","title":"Second Sentinel Final Audience Wish","href":"/shots/second-sentinal-final-audience-wish/?feed=shots"},{"slug":"shots/second-sentinal-second-encounter","title":"Second Sentinel Second Encounter","href":"/shots/second-sentinal-second-encounter/?feed=shots"},{"slug":"shots/second-sentinal-first-encounter","title":"Second Sentinel First Encounter","href":"/shots/second-sentinal-first-encounter/?feed=shots"},{"slug":"shots/boomer-chat-achievement-unlocked","title":"Boomer Chat Achievement Unlocked","href":"/shots/boomer-chat-achievement-unlocked/?feed=shots"},{"slug":"shots/caps-bed-adhesion","title":"Caps Bed Adhesion","href":"/shots/caps-bed-adhesion/?feed=shots"},{"slug":"shots/cracked-caps","title":"Cracked Caps","href":"/shots/cracked-caps/?feed=shots"},{"slug":"shots/any-guesses-what-im-printing","title":"Any Guesses What I’M Printing","href":"/shots/any-guesses-what-im-printing/?feed=shots"},{"slug":"shots/cap-sander-v1","title":"Cap Sander V1","href":"/shots/cap-sander-v1/?feed=shots"},{"slug":"shots/caps-fonts","title":"Caps Fonts","href":"/shots/caps-fonts/?feed=shots"},{"slug":"shots/caps-gets-striped-keys","title":"Caps Gets Striped Keys","href":"/shots/caps-gets-striped-keys/?feed=shots"},{"slug":"shots/caps-views","title":"Caps Views","href":"/shots/caps-views/?feed=shots"},{"slug":"shots/dark-foggy-tunnel","title":"Dark Foggy Tunnel","href":"/shots/dark-foggy-tunnel/?feed=shots"},{"slug":"shots/caps-symbols","title":"Caps Symbols","href":"/shots/caps-symbols/?feed=shots"},{"slug":"shots/share-to-plaindown","title":"Share To Plaindown","href":"/shots/share-to-plaindown/?feed=shots"},{"slug":"shots/neovim-cap","title":"Neovim Cap","href":"/shots/neovim-cap/?feed=shots"},{"slug":"shots/cmon-toyota-wheres-your-nerd-font","title":"C’mon, Toyota, where’s your Nerd Font?","href":"/shots/cmon-toyota-wheres-your-nerd-font/?feed=shots"},{"slug":"shots/caps-themes","title":"Caps Themes","href":"/shots/caps-themes/?feed=shots"},{"slug":"shots/nvim-cap-installed","title":"Nvim Cap Installed","href":"/shots/nvim-cap-installed/?feed=shots"},{"slug":"shots/caps-review-with-individual-key-override","title":"Caps Review With Individual Key Override","href":"/shots/caps-review-with-individual-key-override/?feed=shots"},{"slug":"shots/comparing-depth-of-color-in-esc-keys","title":"Comparing Depth Of Color In Esc Keys","href":"/shots/comparing-depth-of-color-in-esc-keys/?feed=shots"},{"slug":"shots/chicken-fried-rice-in-august","title":"Chicken Fried Rice In August","href":"/shots/chicken-fried-rice-in-august/?feed=shots"},{"slug":"shots/mid-print-on-a-new-set-of-caps","title":"Mid Print On A New Set Of Caps","href":"/shots/mid-print-on-a-new-set-of-caps/?feed=shots"},{"slug":"shots/first-set-of-caps-printed-from-caps.waylonwalker.com","title":"First Set Of Caps Printed From Caps.waylonwalker.com","href":"/shots/first-set-of-caps-printed-from-caps.waylonwalker.com/?feed=shots"},{"slug":"shots/caps-got-good-adhesion","title":"Caps Got Good Adhesion","href":"/shots/caps-got-good-adhesion/?feed=shots"},{"slug":"shots/caps-app-is-working","title":"Caps App Is Working","href":"/shots/caps-app-is-working/?feed=shots"},{"slug":"shots/it-kept-printing-sideways","title":"It Kept Printing Sideways","href":"/shots/it-kept-printing-sideways/?feed=shots"},{"slug":"shots/dusty-routing","title":"Dusty Routing","href":"/shots/dusty-routing/?feed=shots"},{"slug":"shots/i-feel-called-out-for-burning-things-in-the-oven","title":"I Feel Called Out For Burning Things In The Oven","href":"/shots/i-feel-called-out-for-burning-things-in-the-oven/?feed=shots"},{"slug":"shots/got-me-my-first-set-of-akko-rosewoods","title":"got me my first set of akko rosewoods","href":"/shots/got-me-my-first-set-of-akko-rosewoods/?feed=shots"},{"slug":"shots/fresh-marin","title":"Fresh Marin","href":"/shots/fresh-marin/?feed=shots"},{"slug":"shots/into-the-tunnel","title":"Into The Tunnel","href":"/shots/into-the-tunnel/?feed=shots"},{"slug":"shots/entering-the-tunnel","title":"Entering The Tunnel","href":"/shots/entering-the-tunnel/?feed=shots"},{"slug":"shots/fresh-marin-in-the-dark","title":"Fresh Marin In The Dark","href":"/shots/fresh-marin-in-the-dark/?feed=shots"},{"slug":"shots/i-did-one-more-prompt-to-a-long-running-session-a-day-later","title":"I Did One More Prompt To A Long Running Session A Day Later","href":"/shots/i-did-one-more-prompt-to-a-long-running-session-a-day-later/?feed=shots"},{"slug":"shots/t-handle-wire-puller-in-action","title":"T Handle Wire Puller In Action","href":"/shots/t-handle-wire-puller-in-action/?feed=shots"},{"slug":"shots/t-handle-wire-puller","title":"T Handle Wire Puller","href":"/shots/t-handle-wire-puller/?feed=shots"},{"slug":"shots/sharpdart","title":"Sharpdart","href":"/shots/sharpdart/?feed=shots"}],"totalPosts":283}],"rotationFeedSlugs":["archive","blog","ping","til","thoughts-feed","pings","shots","all"],"currentFeedIndex":0,"currentPostSlug":"2026-09-18-notes"} (() => { const calendarLink = document.getElementById('feed-nav-calendar-link'); const picker = document.getElementById('feed-nav-select'); const dataNode = document.getElementById('feed-sidebar-data'); if (!calendarLink || !picker || !dataNode) return; let feedData = []; try { feedData = JSON.parse(dataNode.textContent || '{}').feeds || []; } catch (_) {} const updateCalendarLink = () => { const slug = picker.value || ''; const selectedFeed = feedData.find((entry) => (entry.slug || '') === slug); calendarLink.hidden = Boolean(selectedFeed && selectedFeed.calendar === false); calendarLink.href = (slug ? `/${slug}/` : '/') + '?view=calendar'; }; picker.addEventListener('change', updateCalendarLink); new MutationObserver(updateCalendarLink).observe(picker, { childList: true, subtree: true }); updateCalendarLink(); })(); 2026-09-18 Notes ━━━━━━━━━━━━━━━━ Image: Waylon Walker avatar Waylon Walker Author Sep 18, 2026 notes for 2026-09-18 daily-note Copy this post URL Rich Markdown Text View Markdown View Text curl .ansi {"title":"2026-09-18 Notes","url":"https://waylonwalker.com/2026-09-18-notes/","markdown":"# 2026-09-18 Notes\n\nSource: https://waylonwalker.com/2026-09-18-notes/\n\n---\ntitle: \"2026-09-18 Notes\"\ndescription: \"notes for 2026-09-18\"\ndate: 2026-09-18\npublished: true\ntags:\n - daily-note\ntemplate: daily\n---","text":"2026-09-18 Notes\n━━━━━━━━━━━━━━━━\n\nnotes for 2026-09-18\n\nDate: September 18, 2026\n\nSource: https://waylonwalker.com/2026-09-18-notes/","markdown_url":"https://waylonwalker.com/2026-09-18-notes.md","text_url":"https://waylonwalker.com/2026-09-18-notes.txt","ansi_curl":"curl https://waylonwalker.com/2026-09-18-notes.ansi"} (function() { if (window.__markataPostCopyBound) { return; } window.__markataPostCopyBound = true; function copyText(text) { if (!text) { return Promise.reject(new Error('missing copy text')); } if (navigator.clipboard && navigator.clipboard.writeText) { return navigator.clipboard.writeText(text); } var textarea = document.createElement('textarea'); textarea.value = text; textarea.setAttribute('readonly', ''); textarea.style.position = 'absolute'; textarea.style.left = '-9999px'; document.body.appendChild(textarea); textarea.select(); textarea.setSelectionRange(0, textarea.value.length); var result = document.execCommand('copy'); document.body.removeChild(textarea); return result ? Promise.resolve() : Promise.reject(new Error('execCommand failed')); } function setAbsoluteURLs(container, rootURL) { var attrs = ['href', 'src', 'poster']; attrs.forEach(function(attr) { var selector = '[' + attr + ']'; container.querySelectorAll(selector).forEach(function(node) { var value = node.getAttribute(attr); if (!value) { return; } try { node.setAttribute(attr, new URL(value, rootURL).href); } catch (err) { } }); }); } function removeCopyNoise(container) { container.querySelectorAll('.anchor, .heading-anchor, [aria-hidden="true"], [role="presentation"]').forEach(function(node) { node.remove(); }); container.querySelectorAll('h1 a[href^="#"], h2 a[href^="#"], h3 a[href^="#"], h4 a[href^="#"], h5 a[href^="#"], h6 a[href^="#"]').forEach(function(node) { node.remove(); }); container.querySelectorAll('pre code').forEach(function(node) { var language = ''; (node.className || '').split(/\s+/).forEach(function(className) { if (className.indexOf('language-') === 0) { language = className.slice('language-'.length); } }); var pre = node.parentNode; pre.setAttribute('data-copy-code-block', 'true'); if (language) { pre.setAttribute('data-language', language); node.setAttribute('data-language', language); } node.textContent = (node.textContent || '').replace(/\n+$/, ''); }); } function applyRichStyles(container) { var styles = { h1: 'margin:0 0 16px;font-size:2em;font-weight:700;line-height:1.2;', h2: 'margin:28px 0 14px;font-size:1.5em;font-weight:700;line-height:1.25;', h3: 'margin:24px 0 12px;font-size:1.25em;font-weight:700;line-height:1.3;', h4: 'margin:20px 0 10px;font-size:1.1em;font-weight:700;line-height:1.35;', h5: 'margin:18px 0 8px;font-size:1em;font-weight:700;line-height:1.4;', h6: 'margin:16px 0 8px;font-size:0.95em;font-weight:700;line-height:1.4;', p: 'margin:0 0 14px;line-height:1.6;white-space:normal;', ul: 'margin:0 0 16px;padding-left:24px;', ol: 'margin:0 0 16px;padding-left:24px;', li: 'margin:0 0 6px;', blockquote: 'margin:20px 0;padding:4px 0 4px 16px;border-left:3px solid #cbd5e1;', pre: 'margin:16px 0;padding:12px 14px;white-space:pre-wrap;overflow:auto;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;', code: 'font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;', a: 'text-decoration:underline;', hr: 'margin:24px 0;', img: 'max-width:100%;height:auto;', table: 'border-collapse:collapse;margin:16px 0;', th: 'border:1px solid #d0d7de;padding:6px 10px;text-align:left;', td: 'border:1px solid #d0d7de;padding:6px 10px;text-align:left;' }; Object.keys(styles).forEach(function(selector) { container.querySelectorAll(selector).forEach(function(node) { var existing = node.getAttribute('style'); node.setAttribute('style', styles[selector] + (existing ? existing : '')); }); }); container.querySelectorAll('[data-copy-code-block]').forEach(function(node) { var existing = node.getAttribute('style'); node.setAttribute('style', 'margin:16px 0;padding:12px 14px;white-space:pre-wrap;overflow:auto;background:#f8fafc;' + (existing ? existing : '')); }); } function buildRichPayload(root) { var data = readPayload(root); var title = data.title || document.title; var url = data.url || window.location.href; var article = document.querySelector('.post .post-content'); var wrapper = document.createElement('div'); var heading = document.createElement('h1'); var source = document.createElement('p'); var link = document.createElement('a'); heading.textContent = title; link.href = url; link.textContent = url; source.appendChild(link); wrapper.appendChild(heading); wrapper.appendChild(source); if (article) { var content = article.cloneNode(true); removeCopyNoise(content); setAbsoluteURLs(content, url); applyRichStyles(content); wrapper.appendChild(content); } heading.setAttribute('style', 'margin:0 0 16px;font-size:2em;font-weight:700;line-height:1.2;'); source.setAttribute('style', 'margin:0 0 18px;line-height:1.5;white-space:normal;'); link.setAttribute('style', 'text-decoration:underline;'); return { html: wrapper.innerHTML, text: data.text || url }; } function readPayload(root) { var payloadNode = root.querySelector('.post-copy__payload'); var raw = payloadNode ? payloadNode.textContent : '{}'; try { return JSON.parse(raw); } catch (err) { return {}; } } function copyRich(root) { var payload = buildRichPayload(root); if (window.ClipboardItem && navigator.clipboard && navigator.clipboard.write) { var item = new ClipboardItem({ 'text/html': new Blob([payload.html], { type: 'text/html' }), 'text/plain': new Blob([payload.text], { type: 'text/plain' }) }); return navigator.clipboard.write([item]).catch(function() { return copyText(payload.text); }); } return copyText(payload.text); } function feedbackMessage(kind) { if (kind === 'url') { return 'URL copied'; } if (kind === 'rich') { return 'Rich copy ready'; } if (kind === 'markdown') { return 'Markdown copied'; } if (kind === 'text') { return 'Text copied'; } if (kind === 'markdown-url') { return 'Markdown URL copied'; } if (kind === 'text-url') { return 'Text URL copied'; } if (kind === 'ansi-curl') { return 'curl command copied'; } return 'Copied'; } function buildFormatPath(ext) { var path = window.location.pathname || '/'; if (path !== '/' && path.endsWith('/')) { path = path.slice(0, -1); } return path + ext; } document.addEventListener('click', function(event) { var button = event.target.closest('.post-copy__option'); if (!button) { return; } var root = button.closest('[data-post-copy]'); if (!root) { return; } var status = root.querySelector('.post-copy__status'); var details = root.querySelector('.post-copy__details'); var kind = button.dataset.copyKind; var data = readPayload(root); var action; if (kind === 'markdown-url') { if (details) { details.open = false; } window.location.href = buildFormatPath('.md'); return; } if (kind === 'text-url') { if (details) { details.open = false; } window.location.href = buildFormatPath('.txt'); return; } if (kind === 'url') { action = copyText(data.url || window.location.href); } else if (kind === 'rich') { action = copyRich(root); } else if (kind === 'markdown') { action = copyText(data.markdown || ''); } else if (kind === 'ansi-curl') { action = copyText(data.ansi_curl || ''); } else { action = copyText(data.text || ''); } action.then(function() { root.dataset.copyState = 'copied'; if (status) { status.textContent = feedbackMessage(kind); } if (details) { details.open = false; } window.setTimeout(function() { if (status) { status.textContent = ''; } root.dataset.copyState = ''; }, 1800); }).catch(function() { root.dataset.copyState = 'error'; if (status) { status.textContent = 'Unable to copy'; } window.setTimeout(function() { if (status) { status.textContent = ''; } root.dataset.copyState = ''; }, 1800); }); }); })(); Share this post ─────────────── Twitter Bluesky LinkedIn WhatsApp Facebook Telegram Pinterest Reddit Hacker News Email Copy link (function() { if (window.__markataShareCopyBound) { return; } window.__markataShareCopyBound = true; function copyToClipboard(text) { if (!text) { return Promise.reject(); } if (navigator.clipboard && navigator.clipboard.writeText) { return navigator.clipboard.writeText(text); } var textarea = document.createElement('textarea'); textarea.value = text; textarea.setAttribute('readonly', ''); textarea.style.position = 'absolute'; textarea.style.left = '-9999px'; document.body.appendChild(textarea); textarea.select(); textarea.setSelectionRange(0, textarea.value.length); var result = document.execCommand('copy'); document.body.removeChild(textarea); return result ? Promise.resolve() : Promise.reject(); } function showDesktopToast(target, text) { if (!target) { return; } if (window.matchMedia && !window.matchMedia('(min-width: 769px)').matches) { return; } target.textContent = text; target.classList.add('share-toast--visible'); clearTimeout(target._timeout); target._timeout = window.setTimeout(function() { target.classList.remove('share-toast--visible'); }, 1600); } document.addEventListener('click', function(event) { var button = event.target.closest('[data-share-action="copy"]'); if (!button) { return; } event.preventDefault(); var payload = button.dataset.shareCopy; if (!payload) { return; } var hint = button.querySelector('.share-button__hint'); var defaultLabel = button.dataset.shareLabel || button.getAttribute('aria-label') || 'Copy link'; var feedback = button.dataset.shareFeedback || 'Link copied to clipboard'; var panel = button.closest('.share-panel'); var toast = panel ? panel.querySelector('.share-toast') : null; copyToClipboard(payload).then(function() { if (hint) { hint.textContent = feedback; } button.setAttribute('aria-label', feedback); button.classList.add('share-button--copied'); showDesktopToast(toast, feedback); window.setTimeout(function() { if (hint) { hint.textContent = ''; } button.setAttribute('aria-label', defaultLabel); button.classList.remove('share-button--copied'); }, 1800); }).catch(function() { if (hint) { hint.textContent = 'Unable to copy'; } }); }); })(); /about Article /about Husband, dad of two, and hobbyist builder of things on the internet. metaslash /now Article /now This page is meant to be simple view into what is happening in my life right now. Inspired by @NowNowNow. and Derek Sivers. slash /colophon Article /colophon Colophon a page that describes how the site > is made, with what tools, supporting what technologies blogdevmeta /blogroll Followed sites /blogroll The blogs and feeds I follow. 116 sources /reader RSS reader /reader Recent articles, videos, and podcasts from followed RSS feeds. 116 sources /ai Article /ai Last updated Jan 2026. aillmslash Twitter(opens in new tab) GitHub(opens in new tab) LinkedIn(opens in new tab) View as: Markdown Text ANSI Card © 2026 Waylon Walker. Waylon Walker https://waylonwalker.com Waylon Walker's personal blog Keyboard Shortcuts ────────────────── × ### Scrolling +---------+------------------+ | j | Scroll down | +---------+------------------+ | k | Scroll up | | g g | Scroll to top | | Shift G | Scroll to bottom | | d | Half-page down | | u | Half-page up | +---------+------------------+ ### Navigation +-------------+-------------------------------------------------------+ | j / ↓ | Next post (in feeds) | +-------------+-------------------------------------------------------+ | k / ↑ | Previous post (in feeds) | | Enter / o | Open highlighted post | | Shift O | Open in new tab | | g h | Go to home | | g s | Focus search | | [ / Shift K | Previous post in series (or previous page) | | ] / Shift J | Next post in series (or next page) | | b | Toggle left sidebar | | Shift B | Toggle right sidebar | | s | Toggle reader mode (posts) / simple/rich view (feeds) | +-------------+-------------------------------------------------------+ ### Theme +-------+------------------------+ | t | Open theme picker | +-------+------------------------+ | , / . | Previous / Next theme | | < / > | Previous / Next style | | F / f | Previous / Next font | | \ | Toggle dark/light mode | +-------+------------------------+ ### Utility +--------+----------------------------+ | / | Focus search input | +--------+----------------------------+ | ⌘CtrlK | Focus search (alternative) | | y y | Copy URL to clipboard | | ? | Show this help | | Esc | Close / clear highlight | +--------+----------------------------+ Disable Shortcuts Shortcuts are disabled when typing in input fields // Honor prefers-reduced-motion: pause autoplaying preview videos (function() { function handleReducedMotion() { if (!window.matchMedia) return; if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; document.querySelectorAll('video[autoplay]').forEach((v) => { try { v.pause(); v.removeAttribute('autoplay'); } catch (_) { // ignore } }); } handleReducedMotion(); if (window.matchMedia) { const mq = window.matchMedia('(prefers-reduced-motion: reduce)'); if (mq && typeof mq.addEventListener === 'function') { mq.addEventListener('change', handleReducedMotion); } } })(); // Custom Navigation Shortcuts from config // Mention Cards - load once, the first time a page has mention links. // SPA navigation can reach such a page after a first page without any; // once loaded the script re-initialises itself on view-transition-complete. (function() { var mentionCardsLoaded = false; function loadMentionCards() { if (mentionCardsLoaded || !document.querySelector('a.mention')) return; mentionCardsLoaded = true; window.removeEventListener('view-transition-complete', loadMentionCards); var mentionScript = document.createElement('script'); mentionScript.src = '/js/mention-cards.eadff291.js'; mentionScript.defer = true; document.body.appendChild(mentionScript); } loadMentionCards(); if (!mentionCardsLoaded) window.addEventListener('view-transition-complete', loadMentionCards); })(); // Keyboard Shortcuts Registry - load the core registry first, then load dependent scripts const shortcutsRegistryScript = document.createElement('script'); shortcutsRegistryScript.src = '/js/shortcuts-registry.47e34d14.js'; // Use onload to ensure registry is fully loaded before dependent scripts shortcutsRegistryScript.onload = function() { // Keyboard Shortcuts - load search and core shortcuts if (document.querySelector('#pagefind-search, #shortcuts-modal, [type="search"]')) { const shortcutsScript = document.createElement('script'); shortcutsScript.src = '/js/search-shortcuts.dbacfc75.js'; document.body.appendChild(shortcutsScript); } // Scrolling Shortcuts - always available const scrollingScript = document.createElement('script'); scrollingScript.src = '/js/scrolling-shortcuts.b3e4e8fa.js'; document.body.appendChild(scrollingScript); // Navigation Shortcuts - load if feed, post cards, or prev/next navigation exist if (document.querySelector('.feed, .feed-sidebar, .doc-sidebar, .post-nav, .card, [data-card], [data-action="prev"], [data-action="next"], .pagination-prev, .pagination-next')) { const navigationScript = document.createElement('script'); navigationScript.src = '/js/navigation-shortcuts.d9c93267.js'; document.body.appendChild(navigationScript); } // History Shortcuts - always available (go back/forward) const historyScript = document.createElement('script'); historyScript.src = '/js/history-shortcuts.06ade051.js'; document.body.appendChild(historyScript); }; document.body.appendChild(shortcutsRegistryScript); // Custom Shortcuts - load if custom shortcuts are defined in config // Pagination (JS mode) - only load if JS pagination element exists if (document.querySelector('.pagination-js')) { const paginationScript = document.createElement('script'); paginationScript.src = '/js/pagination.361bd4f5.js'; paginationScript.defer = true; document.body.appendChild(paginationScript); } if (document.querySelector('video[data-hover-play], video[data-adaptive-preview]')) { const hoverPlayVideoScript = document.createElement('script'); hoverPlayVideoScript.src = '/js/hover-play-video.9c9a981f.js'; hoverPlayVideoScript.defer = true; document.body.appendChild(hoverPlayVideoScript); } // Feed cycling - populates the feed sidebar picker, counter, and prev/next // feed controls when the page ships feed sidebar data. if (document.querySelector('#feed-sidebar-data')) { const feedCyclingScript = document.createElement('script'); feedCyclingScript.src = '/js/feed-cycling.938a27de.js'; feedCyclingScript.defer = true; document.body.appendChild(feedCyclingScript); } // GLightbox - load when page has zoomable images // Lite YouTube embeds (oEmbed) window.__markataSearchEndpoint = window.__markataSearchEndpoint || 'https://waylonwalker.com/api/search'; // If a bleve search endpoint is configured, skip pagefind and load bleve search instead. if (window.__markataSearchEndpoint) { (function() { var script = document.createElement('script'); script.src = '/js/bleve-search.132d4e98.js'; document.body.appendChild(script); })(); } // end Bleve-only search window.MARKATA_GO_D3_URL = 'https://d3js.org/d3.v7.min.js'; // View Transitions Configuration window.VIEW_TRANSITIONS_CONFIG = { enabled: true, debug: false, skipClasses: [], skipSelectors: [], transitionDuration: 300, updateMeta: true, scrollToTop: true, }; // Special routes that should always use full navigation. // (View-transition navigation swaps DOM without running inline scripts.) (function() { var p = "random"; p = (p || 'random').replace(/^\/+|\/+$/g, ''); window.MARKATA_GO_RANDOM_POST_PATH = '/' + p + '/'; })(); (function() { if (typeof window === 'undefined') { return; } var MIN_VIEWPORT_MULTIPLIER = 1.75; function initArticleProgressIndicator() { if (window.__articleProgressCleanup) { window.__articleProgressCleanup(); window.__articleProgressCleanup = null; } var container = document.querySelector('.article-progress'); var indicator = document.querySelector('.article-progress__indicator'); var article = document.querySelector('article.post'); if (!container || !indicator || !article) { return; } var raf = window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(cb) { return window.setTimeout(cb, 16); }; var scheduled = false; var lastValue = -1; var lastVisibility = null; function clamp(value, min, max) { if (value < min) return min; if (value > max) return max; return value; } function refresh() { scheduled = false; var rect = article.getBoundingClientRect(); var articleTop = window.scrollY + rect.top; var articleHeight = rect.height; var viewportHeight = window.innerHeight || 1; var minHeight = viewportHeight * MIN_VIEWPORT_MULTIPLIER; var shouldShow = articleHeight >= minHeight; if (shouldShow !== lastVisibility) { container.classList.toggle('article-progress--hidden', !shouldShow); lastVisibility = shouldShow; } if (!shouldShow) { if (lastValue !== 0) { lastValue = 0; indicator.style.transform = 'scaleX(0)'; } return; } var scrollableDistance = articleHeight - viewportHeight; var ratio; if (scrollableDistance <= 0) { ratio = 1; } else { ratio = clamp((window.scrollY - articleTop) / scrollableDistance, 0, 1); } if (Math.abs(ratio - lastValue) < 0.001) { return; } lastValue = ratio; indicator.style.transform = 'scaleX(' + ratio + ')'; } function schedule() { if (scheduled) { return; } scheduled = true; raf(refresh); } window.addEventListener('scroll', schedule, { passive: true }); window.addEventListener('resize', schedule); window.__articleProgressCleanup = function() { window.removeEventListener('scroll', schedule); window.removeEventListener('resize', schedule); }; schedule(); } window.initArticleProgressIndicator = initArticleProgressIndicator; window.addEventListener('view-transition-complete', initArticleProgressIndicator); initArticleProgressIndicator(); })();