<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Extended Memory on Carl Myers</title><link>https://cmyers.org/blog/</link><description>Recent content in Extended Memory on Carl Myers</description><generator>Hugo</generator><language>en-us</language><copyright>Copyright © 2026, Carl Myers.</copyright><lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://cmyers.org/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Bash on macOS Deadlocks on Any Heredoc Over 512 Bytes</title><link>https://cmyers.org/blog/bash-on-macos-deadlocks-on-any-heredoc-over-512-bytes/</link><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/bash-on-macos-deadlocks-on-any-heredoc-over-512-bytes/</guid><description>&lt;p&gt;I spent an evening convinced my Claude session was on drugs. Turns that normally take thirty seconds were taking five minutes, and turns that normally take five minutes were taking literal hours. Several Claude Code sessions, all crawling. Restarting the client did nothing. It had the exact texture of a bad night on somebody else&amp;rsquo;s infrastructure, so that is where I looked first, but that wasn&amp;rsquo;t it. The actual answer was as surprising as it was infuriating.&lt;/p&gt;</description></item><item><title>Passing It On</title><link>https://cmyers.org/blog/passing-it-on/</link><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/passing-it-on/</guid><description>&lt;p&gt;For years I watched retro repair videos mostly as entertainment. It would be a&#10;long time before I actually tried to fix anything. When I finally did, I&#10;realized that the mechanics of it were all new, but the knowledge about&#10;troubleshooting and figuring out how something worked stayed with me. Things&#10;clicked in a surprising way. The reason is thanks to creators who produce&#10;extremely high quality content like &lt;a href="https://www.youtube.com/@adriansdigitalbasement"&gt;Adrian&amp;rsquo;s Digital&#10;Basement&lt;/a&gt;, &lt;a href="https://www.youtube.com/@ActionRetro"&gt;Action&#10;Retro&lt;/a&gt;, &lt;a href="https://www.youtube.com/@ThisDoesNotCompute"&gt;This Does Not&#10;Compute&lt;/a&gt;,&#10;&lt;a href="https://www.youtube.com/@TronicsFix"&gt;TronicsFix&lt;/a&gt;, and&#10;&lt;a href="https://www.youtube.com/@nanofix"&gt;Nanofix&lt;/a&gt;. YouTube repair videos, crafted by&#10;competent hands, can be equal parts entertaining and educational.&lt;/p&gt;</description></item><item><title>Building a Cross-Machine Memory System for Coding Agents</title><link>https://cmyers.org/blog/building-a-cross-machine-memory-system-for-coding-agents/</link><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/building-a-cross-machine-memory-system-for-coding-agents/</guid><description>&lt;style&gt;&#10;.fileblock{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg-raised);margin:1.75rem 0}&#10;.fileblock&gt;summary{cursor:pointer;list-style:none;padding:.7rem 1rem;font-family:var(--mono);font-size:.85rem;color:var(--text-muted);display:flex;align-items:center;gap:.6rem}&#10;.fileblock&gt;summary::-webkit-details-marker{display:none}&#10;.fileblock&gt;summary::before{content:"\25B8";color:var(--accent)}&#10;.fileblock[open]&gt;summary::before{content:"\25BE"}&#10;.fileblock&gt;summary:hover{color:var(--text)}&#10;.fileblock .fb-meta{margin-left:auto;color:var(--text-faint);font-size:.78rem}&#10;.fileblock .fb-body{border-top:1px solid var(--rule);padding:.25rem 1rem 1rem;position:relative}&#10;.fileblock .fb-body pre{background:var(--bg);max-height:32rem;white-space:pre-wrap;overflow-wrap:anywhere}&#10;@media (min-width:52rem){.fileblock{margin-left:-1.5rem;margin-right:calc(-1*(var(--wrap) - var(--prose) - 3rem))}}&#10;.fb-copy{position:absolute;top:1.5rem;right:1.75rem;z-index:2;font-family:var(--sans);font-size:.75rem;color:var(--text-muted);background:var(--bg-raised);border:1px solid var(--rule-strong);border-radius:3px;padding:.25rem .6rem;cursor:pointer}&#10;.fb-copy:hover{color:var(--accent);border-color:var(--accent)}&#10;&lt;/style&gt;&#10;&lt;p&gt;Claude Code keeps memory per project. You work in a repo for a few weeks, it&#10;accumulates a pile of notes about that repo, and those notes are genuinely&#10;useful. Then you open a different repo and you&amp;rsquo;re talking to an amnesiac again.&lt;/p&gt;</description></item><item><title>Lenovo ThinkPad P72 Setup, and the Sad State of Linux Laptops</title><link>https://cmyers.org/blog/lenovo-thinkpad-p72-setup-and-the-sad-state-of-linux-laptops/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/lenovo-thinkpad-p72-setup-and-the-sad-state-of-linux-laptops/</guid><description>&lt;p&gt;A decade ago I wrote up&#10;&lt;a href="https://cmyers.org/blog/new-system76-oryx-laptop-setup/"&gt;setting up a System76 Oryx Pro&lt;/a&gt;.&#10;Time to play the laptop setup game again - except this time the interesting part&#10;isn&amp;rsquo;t the setup, it&amp;rsquo;s how little the setup has changed and how few good options&#10;there are to set up in the first place.&lt;/p&gt;&#10;&lt;p&gt;My daily driver is now a &lt;strong&gt;Lenovo ThinkPad P72&lt;/strong&gt; mobile workstation, hostname&#10;&lt;code&gt;lasersword&lt;/code&gt;. The specs, for posterity:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;CPU: Intel Xeon E-2176M, 6 cores / 12 threads (Coffee Lake, 2018-era)&lt;/li&gt;&#10;&lt;li&gt;RAM: 128GB, across four SO-DIMM slots&lt;/li&gt;&#10;&lt;li&gt;GPU: NVIDIA Quadro P4200 Mobile (Pascal, 8GB GDDR5)&lt;/li&gt;&#10;&lt;li&gt;OS: Debian 13 (Trixie), running btrfs-on-LUKS full disk encryption&lt;/li&gt;&#10;&lt;li&gt;A 17-inch chassis you could stop a door with, and the best non-Mac keyboard I have ever used&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;That is a seven-plus-year-old machine and I am still using it as my main computer&#10;in 2026, which should tell you something. Some of that is that it&amp;rsquo;s overbuilt -&#10;128GB of RAM in a laptop is absurd and I love it - and some of it is that when I&#10;go shopping for a replacement, I keep failing to find one I actually want to buy.&lt;/p&gt;</description></item><item><title>The Dock Told My Mac to Unplug a Monitor That Was Still Plugged In</title><link>https://cmyers.org/blog/the-dock-told-my-mac-to-unplug-a-monitor-that-was-still-plugged-in/</link><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/the-dock-told-my-mac-to-unplug-a-monitor-that-was-still-plugged-in/</guid><description>&lt;p&gt;I have a CalDigit TS5 Plus. It is a nice dock, genuinely. It was one of the few I could find that does 10GbE and drives two monitors and delivers the full 140W to charge my laptop, all over a single cable. That single-plug convenience is the entire reason you buy a dock like this in the first place. It is also, right now, occasionally taking my whole OS session down with it. I want to be precise about that, because &amp;ldquo;dock problem&amp;rdquo; undersells it: this is not a monitor glitch you shrug off. It is the kind of failure where the machine freezes solid, you lose whatever you were in the middle of, and you reboot. If it catches you mid-demo or mid-screenshare, you also get to explain to a room full of people why your screen just turned into a still photograph of itself. Getting that taken seriously by CalDigit took more pushing than I think it should have, which is the other half of this post.&lt;/p&gt;</description></item><item><title>Ranked Skills</title><link>https://cmyers.org/blog/ranked-skills/</link><pubDate>Sat, 10 Aug 2019 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/ranked-skills/</guid><description>&lt;p&gt;Technical resumes are challenging to produce, and challenging to accurately&#10;interpret. One of the biggest obvious challenges is that candidates are highly&#10;motivated to exaggerate, and interpreters of resumes are highly motivated to&#10;make a quick decision erring on the side of rejection so as to waste a minimal&#10;amount of their precious time. Another big challenge, however, one which I&#10;think might be solved, is the difficulty in communicating exactly what the&#10;resume author means by how skilled they are in a particular technology or&#10;specialty. Even if one were to assume candidates are 100% truthful and resume&#10;readers give 100% effort to read and parse every word of every resume that&#10;comes across their desks, what does &amp;ldquo;Expert at Python&amp;rdquo; or &amp;ldquo;5 years experience&#10;C++&amp;rdquo; really mean? Worse yet, someone says (or writes on their resume) &amp;ldquo;I am 8&#10;/ 10 at Ruby&amp;rdquo; - what does that mean? Eight what? Years? Projects? This&#10;person thinks they know 80% of everything there is to know about Ruby? Or are&#10;in the 80th percentile for Ruby programmers?&lt;/p&gt;</description></item><item><title>Integration Tests Across Repositories</title><link>https://cmyers.org/blog/integration-tests-across-repositories/</link><pubDate>Mon, 03 Oct 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/integration-tests-across-repositories/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; The monorepo-versus-multirepo fight I am dancing&#10;around here never got settled, it just got tooling. The industry split into&#10;two camps that each solved half of this post. If you go monorepo, a&#10;graph-aware build tool - Bazel, Meta&amp;rsquo;s Buck2, Pants - IS the &amp;ldquo;virtual repo&amp;rdquo; I&#10;describe below: one commit pins every version, and the tool rebuilds and&#10;retests only the affected slice of the graph&#10;(&lt;a href="https://sourcegraph.com/blog/monorepo-build-tools"&gt;landscape&lt;/a&gt;). If you stay&#10;multirepo, the language dependency managers grew up: Go modules with&#10;&lt;a href="https://go.dev/ref/mod#minimal-version-selection"&gt;Minimal Version Selection&lt;/a&gt;&#10;(default since Go 1.16, 2021), Cargo, npm workspaces, all lockfile-driven and&#10;reproducible. What still basically does not exist in the open is the specific&#10;thing this post is really about - a manifest that is the &lt;em&gt;authority&lt;/em&gt; across&#10;repositories you do not necessarily own, with a real cross-repo merger. QBT&amp;rsquo;s&#10;answer to that (pins, cumulative versions, the custom merger) is still online&#10;at &lt;a href="https://qbtbuildtool.com"&gt;qbtbuildtool.com&lt;/a&gt; and in the&#10;&lt;a href="https://github.com/TerabyteQbt"&gt;TerabyteQbt org&lt;/a&gt;, and it still holds up&#10;technically. It just never got adoption, which is its own lesson.&lt;/p&gt;</description></item><item><title>Objective Morality and The Moral Landscape</title><link>https://cmyers.org/blog/objective-morality-and-the-moral-landscape/</link><pubDate>Thu, 29 Sep 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/objective-morality-and-the-moral-landscape/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; I&amp;rsquo;m keeping this essay as-is because it&amp;rsquo;s an honest&#10;record of how I argued this in 2016, and I still find the moral-solipsism&#10;parallel genuinely useful. But I&amp;rsquo;d be doing you a disservice to let it stand as&#10;if the argument went unchallenged, because it didn&amp;rsquo;t. Harris&amp;rsquo; core move -&#10;that you can cross the is/ought gap by defining morality as the well-being of&#10;conscious creatures - has taken a decade of serious, and in my view partly&#10;successful, philosophical fire. The sharpest version: physicist Sean Carroll&#10;argued that &amp;ldquo;well-being&amp;rdquo; is doing all the smuggling here, that it&amp;rsquo;s a fuzzy&#10;concept that isn&amp;rsquo;t obviously &lt;em&gt;the&lt;/em&gt; thing morality is about, and that you can&amp;rsquo;t&#10;get there by experiment even in principle&#10;(&lt;a href="https://www.preposterousuniverse.com/blog/2011/01/18/the-moral-landscape/"&gt;Carroll, 2011&lt;/a&gt;).&#10;Harris was confident enough to run&#10;&lt;a href="https://www.samharris.org/blog/the-moral-landscape-challenge"&gt;the Moral Landscape Challenge&lt;/a&gt;&#10;in 2013-14, a $20,000 prize for anyone who could change his mind; the winning&#10;essay by Ryan Born pressed exactly this point - that &amp;ldquo;the well-being of&#10;conscious creatures&amp;rdquo; is not itself a scientific finding and has to be justified&#10;from &lt;em&gt;outside&lt;/em&gt; science - and Harris conceded it was the best rebuttal without&#10;conceding the thesis&#10;(&lt;a href="https://www.samharris.org/blog/clarifying-the-landscape"&gt;Clarifying the Landscape&lt;/a&gt;).&#10;Where I land now: I think the choice of well-being as the axis is a &lt;em&gt;value&#10;choice&lt;/em&gt;, not a scientific one, and my 2016 essay leans on the solipsism analogy&#10;to wave that away a little too smoothly. Read the below as &amp;ldquo;the strongest form&#10;of the case I could make then,&amp;rdquo; not as a settled result. The axioms are&#10;load-bearing, and axioms are exactly where the fight is.&lt;/p&gt;</description></item><item><title>Public Service Announcement: Multi-Step Releases Considered Harmful</title><link>https://cmyers.org/blog/public-service-announcement-multi-step-releases-considered-harmful/</link><pubDate>Tue, 03 May 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/public-service-announcement-multi-step-releases-considered-harmful/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; The thesis holds up completely: a release you&#10;cannot reproduce locally in a single step is a liability, no matter how fancy&#10;the pipeline around it looks. What dated is the villain. In 2016 the offender&#10;was always a Jenkins job full of undocumented parameters running on a special&#10;snowflake slave. The offender today wears different clothes. Now it is a&#10;release that only exists as a &lt;a href="https://github.blog/changelog/2019-11-11-github-actions-is-generally-available/"&gt;GitHub Actions&lt;/a&gt;&#10;workflow (GA&amp;rsquo;d November 2019, and per JetBrains it is now the most-adopted CI&#10;system at roughly a third of orgs, &lt;a href="https://blog.jetbrains.com/teamcity/2025/10/the-state-of-cicd/"&gt;State of CI/CD 2025&lt;/a&gt;),&#10;or a GitLab CI &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;, or a CircleCI config - and only runs green&#10;because of org-level secrets and a runner image that you cannot stand up on&#10;your laptop. Same anti-pattern, new YAML. If the only way to cut a release is&#10;to push a tag and pray to a workflow you cannot execute anywhere else, you&#10;have the exact problem this post is about. The test is unchanged: can you run&#10;it locally? Also, Joel&amp;rsquo;s &lt;a href="https://www.joelonsoftware.com/articles/fog0000000043.html"&gt;single-step-build&lt;/a&gt;&#10;point I cite below turns 26 this year, not 16, and somehow this is still not&#10;universally understood.&lt;/p&gt;</description></item><item><title>What is Engineering Work Product?</title><link>https://cmyers.org/blog/what-is-engineering-work-product/</link><pubDate>Mon, 21 Mar 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/what-is-engineering-work-product/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; The thesis got more true, not less, though not&#10;for the reason I would have guessed. In 2016 the argument for treating your&#10;commit graph as work product rested entirely on a future human, possibly you,&#10;reconstructing intent from it. Now a second reader shows up on nearly every&#10;change: an LLM reviewing a diff, or trying to understand the history before it&#10;edits the code. I assumed sloppy history would cripple it. It mostly does not.&#10;A model that cannot get your intent from a commit message will just read the&#10;code and work it out, which is something it is genuinely good at. What bad&#10;history costs it is tokens and time, not comprehension.&lt;/p&gt;</description></item><item><title>The Importance of Build Reliability</title><link>https://cmyers.org/blog/the-importance-of-build-reliability/</link><pubDate>Thu, 28 Jan 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/the-importance-of-build-reliability/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026 (draft note, needs my sign-off).&lt;/strong&gt; Two things about&#10;this one have aged and need saying up front.&lt;/p&gt;&#10;&lt;p&gt;First, the credit. Reading this back, it sounds like Palantir is where I&#10;learned that unbreakable, reproducible builds change how engineers work. That&#10;is not quite right. Amazon&amp;rsquo;s Brazil build system is where I learned it - it&#10;was the gold standard, the thing that showed me what a build ecosystem &lt;em&gt;could&lt;/em&gt;&#10;be (&lt;a href="https://cmyers.org/blog/amazons-build-system/"&gt;I wrote up how Brazil works here&lt;/a&gt;).&#10;Palantir is where I &lt;em&gt;tried to rebuild that magic&lt;/em&gt; after leaving Amazon, and&#10;where I helped birth &lt;a href="https://qbtbuildtool.com"&gt;QBT&lt;/a&gt; chasing the same goal.&#10;The unbreakable-builds rollout described below was real and it genuinely did&#10;change how people worked there. But it was an attempt to recreate something I&#10;had already seen work, not the place I discovered it. The QBT effort itself&#10;eventually got dropped. So read the Palantir praise below as &amp;ldquo;the tooling was&#10;good and the effect was real,&amp;rdquo; not &amp;ldquo;this is the mountaintop.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Better Debugging Through the Socratic Method</title><link>https://cmyers.org/blog/better-debugging-through-the-socratic-method/</link><pubDate>Wed, 27 Jan 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/better-debugging-through-the-socratic-method/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; Ten years on, the method holds up completely, but&#10;the dialogue has a second participant now, and that changed more than I&#10;expected.&lt;/p&gt;&#10;&lt;p&gt;The bottleneck was never the reasoning, it was stamina. Every &amp;ldquo;how could this&#10;hypothesis be wrong?&amp;rdquo; spawns grunt work: grep a log whose format you half&#10;remember, write a throwaway repro, trace a call into a dependency you have&#10;never read, print a type you assumed you understood. Each step is cheap and&#10;there are a great many of them, and most tough investigations die not because&#10;the engineer ran out of ideas but because they ran out of patience and&#10;settled for &amp;ldquo;eh, probably a flaky cable.&amp;rdquo; An assistant collapses the cost of&#10;those steps hard enough to change which investigations are worth finishing. I&#10;wrote up a real one recently, a phantom monitor-unplug event that froze my&#10;Mac, where I handed over the kernel logs and&#10;&lt;a href="https://cmyers.org/blog/the-dock-told-my-mac-to-unplug-a-monitor-that-was-still-plugged-in/"&gt;worked the problem as a partner&lt;/a&gt;.&#10;The part that used to be an afternoon of squinting at &lt;code&gt;log show&lt;/code&gt; output was&#10;more like twenty minutes of back and forth.&lt;/p&gt;</description></item><item><title>Buildsystem Rundown</title><link>https://cmyers.org/blog/buildsystem-rundown/</link><pubDate>Tue, 26 Jan 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/buildsystem-rundown/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; This one was always a &amp;ldquo;living document&amp;rdquo; - I posted&#10;it half-finished in 2016 with a couple of &lt;code&gt;TODO&lt;/code&gt; sections I swore I&amp;rsquo;d get back&#10;to, and then didn&amp;rsquo;t for a decade. So this is the finished version. The original&#10;tool-by-tool writeups (Make, Ant, Maven, Gradle, QBT) stand as the 2016 period&#10;record with only typos fixed. What&amp;rsquo;s new: I actually wrote the Go and Docker&#10;sections I left stubbed, filled in Bazel, and added a whole section on the&#10;tools that showed up after 2016 - Buck2, Pants v2, Nx, Turborepo - plus a&#10;timeline so you can see the shape of the last fifty years at a glance. The&#10;through-line hasn&amp;rsquo;t changed: the interesting problem is still strict,&#10;reproducible, cross-project dependency management, and it&amp;rsquo;s still mostly solved&#10;only inside company walls.&lt;/p&gt;</description></item><item><title>A Tale of Two Build Systems</title><link>https://cmyers.org/blog/a-tale-of-two-build-systems/</link><pubDate>Wed, 20 Jan 2016 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/a-tale-of-two-build-systems/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; I wrote this in 2016 and the framing has aged&#10;well, but the examples at the end are dated. The Go section in particular:&#10;&lt;a href="https://github.com/tools/godep"&gt;godep&lt;/a&gt; was archived and made read-only in&#10;2026, and Go grew its own real answer. Go modules landed in Go 1.11 (2018)&#10;and became the default in Go 1.16 (February 2021), with&#10;&lt;a href="https://go.dev/ref/mod#minimal-version-selection"&gt;Minimal Version Selection&lt;/a&gt;&#10;as the algorithm that decides which versions you actually build against. That&#10;is closer to &amp;ldquo;the Amazon way&amp;rdquo; than anything godep managed - the versions are&#10;pinned in &lt;code&gt;go.mod&lt;/code&gt;, the build is reproducible, and you upgrade on purpose&#10;instead of getting swept along with tip. So the specific dig at Go below is&#10;obsolete. The broader point is not.&lt;/p&gt;</description></item><item><title>New System76 Oryx Laptop Setup</title><link>https://cmyers.org/blog/new-system76-oryx-laptop-setup/</link><pubDate>Tue, 01 Dec 2015 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/new-system76-oryx-laptop-setup/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; I&amp;rsquo;m keeping this one exactly as it was - it&amp;rsquo;s an&#10;honest snapshot of what setting up a Linux laptop felt like in late 2015, warts&#10;and all. A few things have aged: that &amp;ldquo;Skylake&amp;rdquo; CPU is ancient now; btrfs, which&#10;I hedged on below as &amp;ldquo;almost ready,&amp;rdquo; has been my daily-driver root filesystem&#10;for years (I run btrfs-on-LUKS and wouldn&amp;rsquo;t go back). The NVIDIA situation has&#10;shifted but not resolved - NVIDIA finally&#10;&lt;a href="https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/"&gt;open-sourced their kernel modules in 2022&lt;/a&gt;&#10;and Wayland is now the default on most distros, but &amp;ldquo;does the proprietary blob&#10;cooperate with my compositor this week&amp;rdquo; is still a live question in 2026, which&#10;is depressing. The full-disk-encryption rant below is, if anything, more correct&#10;now than it was then. See the companion post for my current machine and why the&#10;laptop landscape still makes me grumpy.&lt;/p&gt;</description></item><item><title>Telling Computers What To Do</title><link>https://cmyers.org/blog/telling-computers-what-to-do/</link><pubDate>Mon, 04 May 2015 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/telling-computers-what-to-do/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; This post rests on one claim: computers are&#10;deterministic, predictable and reliable, so when they surprise you the fault&#10;and the fix are both yours. I still believe that about the machine. What&#10;changed is that the most common way I tell a computer what to do now is to ask&#10;a large language model, and an LLM is not deterministic by construction. The&#10;same prompt gives different answers on different days. Even pinned to greedy&#10;decoding at temperature zero, production inference still is not reproducible&#10;run to run, because the numerics depend on what else happened to be in the&#10;batch (Horace He and Thinking Machines Lab,&#10;&lt;a href="https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/"&gt;&amp;ldquo;Defeating Nondeterminism in LLM Inference&amp;rdquo;&lt;/a&gt;,&#10;Sept 2025;&#10;&lt;a href="https://simonwillison.net/2025/Sep/11/defeating-nondeterminism/"&gt;Simon Willison&amp;rsquo;s summary&lt;/a&gt;).&#10;So the layer I now spend most of my day talking to is the one piece of the&#10;stack that genuinely does not do what you tell it.&lt;/p&gt;</description></item><item><title>Keep it Simple, Stupid (KISS)</title><link>https://cmyers.org/blog/keep-it-simple-stupid-kiss/</link><pubDate>Sun, 03 May 2015 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/keep-it-simple-stupid-kiss/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; The thesis below aged perfectly. This site is&#10;still static, still simple, still boring, still a pile of markdown I commit&#10;and push. What changed is the plumbing behind it, and that change is itself a&#10;KISS story, because the old setup violated this post&amp;rsquo;s own principle in a way&#10;I did not fully own up to at the time. The 2015 post stands as the period&#10;record. The two takes after it are the reckoning.&lt;/p&gt;</description></item><item><title>Amazon's Build System</title><link>https://cmyers.org/blog/amazons-build-system/</link><pubDate>Wed, 26 Sep 2012 00:00:00 +0000</pubDate><guid>https://cmyers.org/blog/amazons-build-system/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Looking back from 2026.&lt;/strong&gt; I am keeping this one exactly as written, as a&#10;period piece. It describes Amazon&amp;rsquo;s build and deploy systems as they were when&#10;I worked on them between 2006 and 2009, written up in 2012. I have no idea how&#10;much of it still holds, and leaving it alone is the point: it is a snapshot of&#10;what a world-class build system looked like at a company that had solved this&#10;roughly a decade before the rest of the industry admitted it was a problem.&lt;/p&gt;</description></item></channel></rss>