<?xml version='1.0' encoding='utf-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' xml:base="https://v5.chriskrycho.com"><title>Sympolymathesy, by Chris Krycho</title>
   <id>https://v5.chriskrycho.com/</id>
   <author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author>
   <link href='https://v5.chriskrycho.com/' />
   <link href='https://v5.chriskrycho.com/feed.xml' rel='self'/>
   <subtitle>Learning in public: on theology, technology, ethics, software, politics, art, and more.</subtitle><rights>copyright Chris Krycho, 2019–2026 under a Creative Commons Attribution 4.0 license</rights>
   <updated>2026-06-03T22:12:41.100-06:00</updated>
   <generator>Eleventy Atom Plugin by Chris Krycho</generator>
   <icon>https://v5.chriskrycho.com/assets/images/favicon.png</icon><entry><id>https://v5.chriskrycho.com/notes/true-myth.dev/</id><title type="html">[notes] true-myth.dev</title><published>2026-06-03T22:10:00.000-06:00</published>
            <updated>2026-06-03T22:10:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/true-myth.dev/'/>
            <summary type="html">Giving this project its own proper home at last!</summary>
            <content type="html">
               <![CDATA[<p><i>Giving this project its own proper home at last!</i></p><p>Took a bit of time this evening and got <a href="https://true-myth.dev">true-myth.dev</a> up and working! It has lived at a <a href="https://js.org">js.org</a> site for many years, and that was wonderful (seriously, much credit to those folks!) but as I’ve slowly pushed this project toward being a bit more<span class="push-double"></span> <span class="pull-double">“</span>professional”, it felt right to give it its own home.</p>
<p>If you’re curious, the docs stack now:</p>
<ul>
<li>Registered at Hover</li>
<li>Code still lives on GitHub (for now)</li>
<li>Build and publish happens on Buildkite (where I expect to move <em>all</em> of True Myth’s CI over the next few weeks)</li>
<li>The docs themselves are published to a Cloudflare Worker</li>
</ul>
<p>(<a href="https://v5.chriskrycho.com/notes/separation-of-concerns/">Separation of concerns!</a>)</p>
<p>The docs site itself is built with <a href="https://vitepress.dev">Vitepress</a>, and I have some in-flight work to make that even better thanks to some great suggestions from users of the library (interactive syntax highlighting with Shiki, type checking all the code, etc.). It’s fun to see this project slowly gain traction!</p>
<p>At no point has True Myth ever seen explosive growth. Just very slow and steady uptake since <a href="https://benmakuh.com">Ben Makuh</a> and I started building it all the way back in September 2017.</p>
<figure><img src="https://cdn.chriskrycho.com/images/true-myth-growth.png" alt title="An npm-stats monthly download stats chart for true-myth from initial release in October 2017 to the present, with slow-but-steady growth uptick over time."><figcaption>True Myth’s slow-but-steady growth curve</figcaption></figure>
<p>There was that funny little dip back in late 2023 (no idea what happened there), and it <em>has</em> seen a pretty significant bit of growth over the past year and a half — likely in part because I started putting significant work into it again — but still: a slow-burn success story!</p>
<p>(A <em>small</em> success, to be clear. If you pull up <a href="https://npm-stat.com/charts.html?package=true-myth&amp;package=zod&amp;from=2017-10-01&amp;to=2026-05-31">the comparison</a> with <a href="https://zod.dev">Zod</a>, True Myth looks like a flat line, even with its recent uptick.)</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20true-myth.dev">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/><category term="open-source software"/><category term="TypeScript"/><category term="True Myth"/></entry><entry><id>https://v5.chriskrycho.com/notes/experimenting-with-pomodoro-timer-durations/</id><title type="html">[notes] Experimenting with Pomodoro Timer Durations</title><published>2026-06-01T08:55:00.000-06:00</published>
            <updated>2026-06-01T08:55:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/experimenting-with-pomodoro-timer-durations/'/>
            <summary type="html">It’s only taken me over a decade to getting around to realizing this was not only an option but a good idea.
</summary>
            <content type="html">
               <![CDATA[<p><i>It’s only taken me over a decade to getting around to realizing this was not only an option but a good idea.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People familiar with at least some of the “getting things done” world, particularly the use of focused work blocks and <a href="https://www.todoist.com/productivity-methods/pomodoro-technique">the pomodoro technique</a>.</p>
<hr/><p>I have used a pomodoro timer to help me stay focused on work off and on for well over a decade now. It was a key part of how I managed to get through working close to full time (sometimes more than full time) while also taking a heavy course load back in the seminary years, and it has remained a key tool in my toolbox for being effective with my working time ever since.</p>
<p>For all that time, I have stuck quite consistently to the classic 25-minute timer duration. It is the default on every app I have ever used,<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup> and it is the recommendation of every write-up I have ever seen on it. Some of them, like <a href="https://www.todoist.com/productivity-methods/pomodoro-technique">the one I linked above</a>, point out that you don’t have to stick with 25 minute blocks. And of course, 25 minutes is a fairly arbitrary amount of time! People can focus for significantly longer than that. From my reading over the years we tend to top out somewhere around <dash-wrap>45&thinsp;&ndash;&thinsp;50</dash-wrap> minutes for many kinds of tasksn before our concentration starts to degrade, even if we’re not aware of it.</p>
<aside>
<p>Yes, we often go long past this in a<span class="push-double"></span> <span class="pull-double">“</span>flow state”. My two observations on that:</p>
<ol>
<li>
<p>It depends on what I am doing. I can be in a true, deep flow state for many hours while composing and lose track of time entirely and never stop making <em>good</em> progress. The same is not true for writing or reviewing a technical brief at work.</p>
</li>
<li>
<p>The <em>perception</em> of flow state is not the same thing as actually being at the same level of effectiveness. Our concentration may in fact be slowly fading without our realizing it.</p>
</li>
</ol>
</aside>
<p>Last week, recognizing that I <em>frequently</em> find myself extending Tadam sessions by a fair bit, I decided to start experimenting. What duration works best? I don’t know yet. So far it <em>seems</em> like I’m landing somewhere in the <dash-wrap>35&thinsp;&ndash;&thinsp;40</dash-wrap> minute range, but we’ll see; it’s early days yet.</p>
<p>In any case: take this as permission to tweak<span class="push-double"></span> <span class="pull-double">“</span>productivity” guidance to yourself. <em>Duh.</em> But sometimes we need the permission!</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I have used <a href="https://tadamapp.com">Tadam</a> for many years and have consistently come back to it. Simple and effective. Highly recommended. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Experimenting%20with%20Pomodoro%20Timer%20Durations">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="working effectively"/></entry><entry><id>https://v5.chriskrycho.com/notes/multitasking/</id><title type="html">[notes] Multitasking</title><published>2026-05-21T20:20:00.000-06:00</published>
            <updated>2026-05-21T20:20:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/multitasking/'/>
            <summary type="html">It’s still terrible for us all.</summary>
            <content type="html">
               <![CDATA[<p><i>It’s still terrible for us all.</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who are open to hearing an experience report from someone “in the wild” of professional software development with “agentic” coding tools. I am not talking <em>here</em> about the ethics or legality of their training, but that doesn’t mean I don’t have carefully-considered opinions about those considerations; that just isn’t that post.</p>
<hr/><p>Multitasking has always been truly terrible for our ability to think clearly and work effectively. <abbr title="large language model">LLM</abbr>-based<span class="push-double"></span> <span class="pull-double">“</span>agents” don’t change that; they just offer one more invitation to distraction and split attention. Ignore the hype that says you must be running a multi-agent swarm: do good work instead.</p>
<hr>
<p><em>Some notes from my journal this morning, lightly expanded, along these same lines, prompted by finding myself as deeply muddled and distracted-feeling as I have been in a long time yesterday — </em></p>
<p>Context switching and <em>ways</em> of working with <abbr>LLM</abbr>s that exacerbate context switching are not helping me be effective at work. Focus, using<span class="push-double"></span> <span class="pull-double">“</span>old-fashioned” techniques like closing other windows, using a pomodoro timer, and explicitly prioritizing goals helps.</p>
<p>On <abbr>LLM</abbr>s: it strikes me that their relatively slow response is part of what makes it so easy to get into context-switching brain-fried mode. That 30-second pause, that 3-minute wait: it makes it <em>so</em> easy to open Slack or go start reading a document. Even if there are some messages that legitimately warrant a response, even if someone is waiting for me to read and comment on the document, that switch is costly. My focus on the problem at hand is gone, and the likelihood that I will just keep switching after that only increases.</p>
<p><em>And, after a morning of making some conscious choices to work the way I know works best:</em></p>
<ol>
<li>
<p>Closing all the other windows besides those expressly necessary for the task I am working on and explicitly single-tasking helps. Of course it does! We all know it does!</p>
</li>
<li>
<p>Multi-window support in Slack leads to too-many-chats-at-once, exacerbating the tendency to split attention.</p>
</li>
</ol>
<p>And: focusing and shipping things and using my brain instead of<span class="push-double"></span> <span class="pull-double">“</span>delegating” to Claude Code or Codex etc. just plain <em>feels</em> better… but it’s also more <em>effective</em>.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Multitasking">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="AI and ML"/><category term="software development"/><category term="working effectively"/></entry><entry><id>https://v5.chriskrycho.com/notes/an-ice-cold-take-on-ci-config-systems/</id><title type="html">[notes] An Ice Cold Take on CI Config Systems</title><published>2026-05-11T07:40:00.000-06:00</published>
            <updated>2026-05-11T07:40:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/an-ice-cold-take-on-ci-config-systems/'/>
            <summary type="html">My opinion on &amp;lt;abbr title=&amp;quot;Yet Another Markup Language&amp;quot;&amp;gt;YAML&amp;lt;/abbr&amp;gt; probably won’t surprise you.
</summary>
            <content type="html">
               <![CDATA[<p><i>My opinion on <abbr title="Yet Another Markup Language">YAML</abbr> probably won’t surprise you.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People familiar at a basic level with <abbr>YAML</abbr> and its use in continuous integration and deployment systems like GitHub Actions.</p>
<hr/><p><abbr title="Yet Another Markup Language">YAML</abbr> pipelines are a pit of failure for <abbr title="continuous integration">CI</abbr>/<abbr title="continuous delivery">CD</abbr> pipelines. They attract people because they seem declarative and the syntax is<span class="push-double"></span> <span class="pull-double">“</span>easy”, and they have become<span class="push-double"></span> <span class="pull-double">“</span>standard”, but everyone ends up encoding subroutines and data flow into them — and <abbr>YAML</abbr> is a terrible programming language!</p>
<hr>
<p>I posted this on social media (<a href="https://bsky.app/profile/chriskrycho.com/post/3mlj5ses4lo2u">Bluesky</a>, <a href="https://mastodon.social/@chriskrycho/116551171174373355">Mastodon</a>, <a href="https://www.linkedin.com/feed/update/urn:li:activity:7459274954757398528/">LinkedIn</a>) and it generated some good discussions. Most of all: what’s the alternative? Nothing <em>super</em> mainstream, but I find <a href="https://pkl-lang.org">Pkl</a> and <a href="https://dhall-lang.org">Dhall</a> both quite interesting, and both of them can spit out <abbr>YAML</abbr>, <abbr title="JavaScript object notation">JSON</abbr>, etc., which means you can use them <em>with</em> your existing <abbr>CI</abbr> system if you so desire. That doesn’t address the other problems with most of today’s <abbr>CI</abbr> systems, but it’s a good step and adopting one of them <em>does</em> address many of the problems of <abbr>YAML</abbr> while maintaining many of the benefits of a more declarative/limited language.</p>
<p>Other things to read about that suggest interesting alternatives in the <abbr>CI</abbr> space itself:</p>
<ul>
<li>Alexey Kladov’s <a href="https://matklad.github.io/2023/12/24/ci-dream.html"><abbr>CI</abbr> Dream</a> and <a href="https://matklad.github.io/2026/02/06/ci-in-a-box.html"><abbr>CI</abbr> in a Box</a> posts</li>
<li>Gregory Szorc’s <a href="https://gregoryszorc.com/blog/2021/04/07/modern-ci-is-too-complex-and-misdirected/">Modern <abbr>CI</abbr> is Too Complicated and Misdirected</a></li>
<li><a href="https://www.rwx.com"><span class="all-smcp">RWX</span></a>, which <em>uses</em> <abbr>YAML</abbr> but with some better/more sensible primitives than most of the major <abbr>CI</abbr> providers</li>
<li><a href="https://simon.peytonjones.org/build-systems-a-la-carte-theory-and-practice/">Build Systems à la Carte</a>, arguably <em>the</em> canonical paper on the subject</li>
</ul>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20An%20Ice%20Cold%20Take%20on%20CI%20Config%20Systems">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/></entry><entry><id>https://v5.chriskrycho.com/notes/crowd-sourcing-metaphors-for-llms-and-ai/</id><title type="html">[notes] Crowd-Sourcing: Metaphors for LLMs and AI</title><published>2026-04-27T07:04:00.000-06:00</published>
            <updated>2026-04-27T07:04:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/crowd-sourcing-metaphors-for-llms-and-ai/'/>
            <summary type="html">Help me make this essay as robust as it can be!
</summary>
            <content type="html">
               <![CDATA[<p><i>Help me make this essay as robust as it can be!
</i></p><p>Posting this as a form of crowd-sourcing for an essay I’m working on — </p>
<p>What are the main<span class="push-double"></span> <span class="pull-double">“</span>metaphors” you see deployed around LLMs and AI?</p>
<p>Here’s my list so far: intelligence, learning, training, thinking, reasoning, chat, agent, assistant, model, generative, skill, context, vision, memory, personality, constitution, engineering, prompt, alignment, collaboration, knowledge</p>
<p>(Note that<span class="push-double"></span> <span class="pull-double">“</span>metaphor” doesn’t — necessarily — mean it’s wrong.)</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Crowd-Sourcing%3A%20Metaphors%20for%20LLMs%20and%20AI">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="AI and ML"/><category term="writing"/></entry><entry><id>https://v5.chriskrycho.com/journal/2026-boston-marathon-race-report/</id><title type="html">[journal] 2026 Boston Marathon Race Report</title><published>2026-04-21T21:11:00.000-06:00</published>
            <updated>2026-04-21T22:13:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2026-boston-marathon-race-report/'/>
            <summary type="html">I did it, and I did it &amp;lt;em&amp;gt;fast&amp;lt;/em&amp;gt;!
</summary>
            <content type="html">
               <![CDATA[<p><i>I did it, and I did it <em>fast</em>!
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People interested in endurance running (or endurance sports more generally), or who just like to hear what I am up to as a runner.</p>
<hr/><p>I ran the Boston Marathon yesterday! It went great! Apparently my body likes sea level and going downhill! The race went <em>fast</em> on multiple levels.</p>
<h2 id="the-short-version" tabindex="-1"><a class="header-anchor" href="#the-short-version">The short version</a></h2>
<p>It was a blur of cheering and noise and being continually astonished at how fast I was going, the miles ticking away unbelievably quickly from the sheer energy of the crowds and the other runners, a brief annoying stop at a port-a-john, and a finish time that was almost 4 full minutes faster than I thought I could conceivably do going into this.</p>
<p>As usual, you can find the activity <a href="https://www.strava.com/activities/18186433635">on Strava</a> if you like!</p>
<p>By the numbers:</p>
<ul>
<li>Official time: 2:51:04 (6:32/mile)</li>
<li>2,431 / 5,775 among men <dash-wrap>18&thinsp;&ndash;&thinsp;39</dash-wrap></li>
<li>3,046 / 16,449 among men</li>
<li>3,207 / 29,297 overall</li>
</ul>
<p>I’m usually a top <dash-wrap>1&thinsp;&ndash;&thinsp;2</dash-wrap>% finisher… in much smaller local marathons. (For scale: Denver Colfax and Boulderthon had less than 10% as many marathoners last year as this year’s field at Boston. So the numbers check out.) Part of the great fun of this — and part of what makes it crazy — is being in a race where there are <em>thousands</em> of people who are as fast or faster than me, not a dozen or two.</p>
<p>When I go into a race, I always have a range of expectations for how it might go, from <em>on a perfect day…</em> through <em>my best guess</em> to <em>something will have gone wrong if I can’t hit this</em>. Every so often, I surprise myself and blow past the top of that spectrum. Yesterday was such a day. My<span class="push-double"></span> <span class="pull-double">“</span>if it’s a perfect day” number was somewhere in the vicinity of 2:55:00. Coming in 4 minutes faster than that with a force toilet stop along the way means I had deeply underestimated how my fitness would combine with sea level, but in a good way.</p>
<p>Back in October, I had such a terrible disc herniation in my lower back that I couldn’t get off the floor the next morning and had to go to the ER. I could barely walk for weeks, couldn’t really run for a couple months. I wasn’t sure if I would even make it here. Multiple times along the way I was pretty sure I wouldn’t. And yet, by the grace of God, a lot of support from my wife and daughters, a lot of good planning on the part of my coach, and a <em>lot</em> of a hard work, I got here, and it went so well. I’m profoundly grateful, and I’m really proud of how hard I worked along the way: not just at running, but at <abbr title="physical therapy">PT</abbr> and Pilates and cross-training, too.</p>
<p>And now, onward. My next race is running a leg of the Denver Colfax Marathon Relay with some friends in just about four weeks. After that… we’ll see! Yesterday’s time should have solidly qualified me for the 2027 Boston, Chicago, and <abbr title="New York City">NYC</abbr> Marathons, so hopefully I’ll be running at least one of those next year.</p>
<h2 id="a-deep-dive" tabindex="-1"><a class="header-anchor" href="#a-deep-dive">A deep dive</a></h2>
<p>This is long. It’s primarily for me, to remember! But you’re welcome to read along.</p>
<h3 id="build" tabindex="-1"><a class="header-anchor" href="#build">Build</a></h3>
<p>The build back to this started in earnest in December — after spending October and November trying to work through enough <abbr>PT</abbr> and pain treatment that I could sleep through the night, stand, and walk (much less run) without agonizing nerve pain. But start again I did, however painfully and slowly. I had to ease back in with walk-runs. I spent a lot of time running slower than I’ve run since coming back after a bout of Covid in early 2022.</p>
<p>I decided, given how dicey this was, to hire <a href="https://www.svccoaching.com">a coach</a> to help me build back in coordination with <abbr>PT</abbr>. It was a very good call! It turned out this build required a lot of adaptation and flexibility, and having a coach rather than a pre-baked plan helped a ton eith that.</p>
<p>I was feeling pretty decent as I came out of December — not <em>good</em>, but on track. Then I came down with this year’s variant of norovirus, and I felt awful for a week. It took me another two weeks after that before I could run for more than thirty minutes without having to stop and go to the bathroom mid-run. I kept at it even so, and by February training was back to normal. Slow, but normal. Normal felt good! From that point I was able to do a fairly steady, normal build.</p>
<p>Until three weeks out from the race, when I got sick with some nasty head cold that took ten days to go away, and which I couldn’t run through. Once I finally cleared it, I got in one last long workout run 11 days before the race and then tapered for the race. It was weird to be doing a<span class="push-double"></span> <span class="pull-double">“</span>taper” after having been almost entirely off for ten days, but it worked well enough. The race results are suggestive: that close, I might have been able to gain a little more by not being off for those days, but I definitely didn’t lose anything I had built by that point. That last big workout was after the point I would normally have started tapering, but it was low risk because I hadn’t hit a functional overreaching point as one often does in a build and instead was fresh. I judged — correctly, as it proved — that the fitness from it would show up right around race day.</p>
<p>The last hiccup was a minor hip adductor strain on my last interval session, exactly a week before the race. I went out for what was supposed to be a fun <a href="https://en.wikipedia.org/wiki/Fartlek">fartlek</a>-style workout, and on the very first interval, my left adductor pulled a bit. I worked through it the rest of that run, and then kept it loose and mobile but didn’t overdo it the rest of the week, and hoped it would clear up. Happily, it did: by Friday it was most of the way gone, and the last few niggles disappeared over the weekend.</p>
<p>It was, suffice it to say, a very strange build. I never felt like I had meaningful momentum for longer than a few weeks at a stretch. I came into the race much less sure of what my pace would be as a result — mostly, as I kept telling people who asked, just happy to have made it there at all.</p>
<h3 id="race-weekend" tabindex="-1"><a class="header-anchor" href="#race-weekend">Race weekend</a></h3>
<p>I flew into Boston midday Saturday and used the expo and packet pickup time as a super easy run to loosen up after the plane flight. I then discovered that my hotel room didn’t have a minifridge or a toaster or anything. It just meant I wasn’t going to be eating cereal and toast (much less a fried egg!) like usual on race morning.<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup> I did my usual shakeout run Sunday morning, then picked up some coffee, a cup of overnight oats, and a little egg sandwich on an English muffin. After that I walked over to <a href="https://www.cotcboston.org">Church of the Cross</a>, an Anglican congregation that meets a mile or so from downtown Boston. Along the way: a bagel… with about a third of the cream cheese they had put on it. After church: three hours chatting with a friend over another bagel, this one with avocado and turkey.</p>
<p>On the way back, I improvised and picked up some muffins from Trader Joe’s for race morning. Then I walked to a restaurant that looked good, only to realize that they had nothing that wasn’t going to sit <em>much</em> too heavily for race day. I made my way back to the place I’d had dinner on Saturday evening, and ended up ordering a burger and some fries. It was a good burger, but it also ended up being a good reminder that a good burger really isn’t what you want the night before a race. I also pondered a bit the fact that between the shakeout and walking around the city so much, I had put 10 miles and about 20,000 steps on my legs. Whoops.</p>
<p>Then I headed back to my hotel, made sure everything was prepped for the morning, took a melatonin, and drifted quickly off to sleep.</p>
<p>I woke up at about 5:45, had my breakfast — somewhat bemused at what I had scrounged, but it got the job done just fine. After that, I walked down to get in line for the buses to the start area.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/boston-marathon/1-bus-lines.jpeg" alt><figcaption>waiting in line for the bus</figcaption></figure>
<figure><img src="https://cdn.chriskrycho.com/images/2026/boston-marathon/2-bus-loading.jpeg" alt><figcaption>just one tiny subset of the long line of buses we boarded</figcaption></figure>
<p>The ride took about 45 minutes. I enjoyed chatting with my seat-mate — a doctor from Washington State who has run Boston a few times — about everything from running (of course) to our careers. Along the way, I made sure to finish fueling up — a <span class="all-smcp">KIND</span> bar and the rest of my Skratch Labs Hydration mix.</p>
<p>Then it was out of the buses and onto the Hopkinton Middle and High School fields for the wait for the start of the race.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/boston-marathon/3-tent.jpeg" alt><figcaption>one of the tents on the fields where we waited</figcaption></figure>
<p>We waited there for the better part of an hour — all to the good, with enough time to hydrate a bit more, hit the port-a-johns again, and then walk/jog down the three quarters of a mile to the start line. Unlike your average regional race, there really wasn’t much room to warm up for this. I did what I could, as did lots of the folks around me, but it wasn’t like we had room to jog for a mile and do some strides. More like: do a bunch of high knees, A- and B-skips, and butt-kicks while making my way down to the starting area, and then finding enough room to run up and down the last little hill before we all filed into the corrals.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/boston-marathon/4-start-area.jpeg" alt><figcaption>one of the tents on the fields where we waited</figcaption></figure>
<h3 id="the-race" tabindex="-1"><a class="header-anchor" href="#the-race">The race</a></h3>
<p>If you’ve run a major marathon, you don’t need me to tell you that it’s a completely different experience from even decently-large regional marathons. If you haven’t, it’s hard to put into words just how different it is. There were few steps that weren’t to the sound of cheering, sometimes deafening — Wellesley and the finish line were both almost painfully loud. Equally novel: to run a race where I ran not a single step where I wasn’t in the midst of thousands of other people moving just as fast as I was. These past few years, I have been fast enough that in smaller races like Colfax, the field spreads out and I spend a lot of it in a fairly solitary way. (The <a href="https://v5.chriskrycho.com/journal/2024-longview-half-marathon-race-report/">Longview Half</a> in 2024 was <em>really</em> solitary, running entirely alone out in front after the first mile or so!) The spectators provide a lot of energy, and the fellow runners at least as much. It’s quite the <dash-wrap>1&thinsp;&ndash;&thinsp;2</dash-wrap> punch of energy!</p>
<p>One interesting consequence of that was that the miles ticked away unbelievably quickly. Boston has hydration at every mile, and I kept being amazed that another mile was already gone. Some small part of that was how fast I was moving — but I’ve run that fast and faster before. I was running Denver Colfax that fast last year, but it didn’t <em>feel</em> anywhere near as fast there as it did in Boston. Boston was just a blur — an exciting, memorable blur, but a blur.</p>
<p>I felt great from the start, but I was <em>flying</em>. Even accounting for sea level and the big downhill the course starts with, I was moving <dash-wrap>20&thinsp;&ndash;&thinsp;30</dash-wrap> seconds faster per mile than I had planned. But I was paying close attention to my perceived exertion and carefully watching my heart rate as well to act as a<span class="push-double"></span> <span class="pull-double">“</span>limiter”, because I knew that the energy of the crowd around me would make it easy to be pulled along at the pace of the folks around me. And so it was! I kept reminding myself to run my own race — slowing down and <em>not</em> chasing the folks I started with, but also not worrying when I ended up surging through a pack at other times. I had a few concerning moments in the first few miles with my legs feeling a little sluggish and tired — I suspect from the too-many-miles of walking I had done on Sunday. I ignored them, though, figuring it would go away if I just kept going, and soon enough it did.</p>
<p>Things were going swimmingly up through the next few miles. My fueling was on track, and I kept it that way all race. (In fact, I hit every gel right on time except for one, which I got to a kilometer late because the kilometers were ticking off so fast mentally! But then right back on track.) My legs were loose and happy, and I was running faster than I had believed possible. Then, right around mile marker 10, my gut started telling me about the previous evening’s hamburger. <em>Dang it!</em></p>
<p>I managed to slow down just a bit, work through it, and pick back up the pace after a couple minutes. Then it hit again, a little worse, at around the half marathon mark. Both times, I thought I might be clear of it after working through it, but as I came through mile marker 19, it came back with a vengeance. I’ve done this enough that I knew I had to stop or risk having a very bad time later in the race — so I veered off to the next port-a-john station, happy to see that there were four of them and betting I’d be able to hop straight into one. Alas: no, I got there right as the door closed on the last one and I waited… and waited… and waited. It felt like an eternity, because the race was running behind me. Once one of the toilets finally opened, I got in and out as fast as I could and got back on the course. All told I lost about 2½ minutes. (Yes, that means I’d have PR’d if it weren’t for that. <em>Drat!</em>) It was frustrating, but it was also definitely the right call: I had no issues the rest of the race.</p>
<p>Notably, this came right in the midst of the infamous hills in Newton — the ones that culminate in<span class="push-double"></span> <span class="pull-double">“</span>Heartbreak Hill” — but happily, I was able to just roll through them other than that bathroom stop. I have years of experience running big hills in Colorado, and I went into them explicitly aiming <em>not</em> to<span class="push-double"></span> <span class="pull-double">“</span>press” through them. It’s really easy to try to hold one’s <em>pace</em> instead of holding one’s <em>power output</em> or <em>effort level</em> when hitting a hill, but it’s deeply counterproductive in most situations. The exception: I gather it’s a useful tactical move in a competitive racing situation to be able to throw down as a challenge. I haven’t found myself in that spot, though: I am always just racing myself.</p>
<p>The last 10K felt intense, but in a very good way. I was hurting, I knew I could hold on, and I did. My perceived exertion was steadily climbing, and my <abbr title="heart rate">HR</abbr> was steadily climbing to match it, but both of them felt <em>right</em> for this point in the race. I kept my pace consistent through the last mile, and had enough juice left in the tank — just barely — to kick hard for the final stretch.</p>
<p>That pacing is what I am proudest of, in fact: I <em>did</em> hold myself back early on, and therefore <em>did</em> have enough left to finish with the exact same kinds of lap times in the home stretch that I started out with. Boston is a famously difficult course to run (gap-adjusted) even splits on. But — excepting the bathroom stop — that’s exactly what I did.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/boston-marathon/5-finish.jpeg" alt><figcaption>after finishing</figcaption></figure>
<p>I’m really, <em>really</em> happy with this one. I am proud of the work I did in 2025 to qualify for Boston, and even prouder of the work I did to get back to full health so I could use that spot in a way I’m proud of. I am happy to be back in good health, and pleasantly surprised at just how fast I was able to go. Lord willing, I will be staying healthy this time: my Pilates routine is becoming, in the best way, <em>routine</em>.</p>
<p>And hey, as I said at the top, I (presumably) qualified for Boston 2027 as well as the other 2027 <abbr title="United States (of America)">US</abbr> Major Marathons! Now for a week of rest and easing back into things, and then: onward.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>A mild annoyance, and if I do this again I’d find a different hotel, but it got the job done. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202026%20Boston%20Marathon%20Race%20Report">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="running"/><category term="health"/><category term="fitness"/></entry><entry><id>https://v5.chriskrycho.com/library/the-examined-run/recovery-is-a-hopeful-act/</id><title type="html">[library] recovery… is a hopeful act</title><published>2026-03-28T13:53:00.000-06:00</published>
            <updated>2026-03-28T13:53:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/library/the-examined-run/recovery-is-a-hopeful-act/'/>
            <summary type="html">…and resilience is a virtue I have been building all-too uncomfortably these past five months.
</summary>
            <content type="html">
               <![CDATA[<p><i>…and resilience is a virtue I have been building all-too uncomfortably these past five months.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> Talks about endurance sports and virtues, but in a way that I trust and hope will be friendly to people who have never run a mile in their lives and think “huh?” if I say “virtue ethics”.</p>
<hr/><p>Two quotes from <a href="https://sabrinalittle.com">Sabrina B. Little</a><span class="push-single"></span><span class="pull-single">’</span>s <cite>The Examined Run: Why Good People Make Better Runners</cite> that caught my attention on my run today — because they spoke so directly to my own experience of recovery and learning resilience as I have slowly rebuilt my body after a horrible disc herniation last October:</p>
<figure class="quotation">
<blockquote>
<p>In my year of return from injury, I learned a lot about resilience&thinsp;&mdash;&thinsp;the virtue of recovery. I learned that small exercises make a big difference, and that bouncing back is a considered choice. I learned that recovery, like all forms of training, is a hopeful act.… Substantial hopes provide us with mental resolve, help us not to lose heart, and enable us to<span class="push-double"></span> <span class="pull-double">“</span>maintain effective agency in the face of fluctuations in evidence” [quoting Nancy Snow]. Maintaining agency is important. It means we continue to <em>choose</em> and to <em>act</em> in light of the possibility of renewal, even if we lack visible evidence of progress.</p>
<p>In my injury recovery, I also learned that patients wear sneakers, not slippers. If I could just stay patient&thinsp;&mdash;&thinsp;<em>actively</em> patient, the kind of patient that would diligently perform the exercises I was prescribed by my doctor&thinsp;&mdash;&thinsp;I might become the athlete I was before the injury. I might become an even better athlete. The resilience I gained in my process of renewal would make me a stronger, more adaptable athlete, and this would pay off&thinsp;&mdash;&thinsp;both in the process of training and within competitions.</p>
</blockquote>
<figcaption>&thinsp;&mdash;&thinsp;Sabrina B. Little, <cite><a href="https://bookshop.org/a/21126/9780197678695">The Examined Run: Why Good People Make Better Runners</a></cite>, p. 119</figcaption>
</figure>
<figure class="quotation">
<blockquote>
<p>I should confess that resilience is a virtue you never <em>really</em> want the occasion to develop. This is because having the opportunity to develop resilience means that something has gone wrong, or you are broken in some way and in need of repair. It means you enter an uneasy space, having to figure out if you are indeed fixable. Not all broken things are. Ask Humpty Dumpty.</p>
<p>Resilience is the virtue of recovery.</p>
</blockquote>
<figcaption>&thinsp;&mdash;&thinsp;<em>ibid.</em>, pp. <dash-wrap>125&thinsp;&ndash;&thinsp;126</dash-wrap></figcaption>
</figure>
<p>I admit, she’s right: I really would have preferred <em>not</em> to have to develop this particular virtue. But standing here today, I am (strangely enough?) grateful for so severe an injury in October that it sent me to the hospital, because it forced me to take much more seriously the kinds of changes to my habits that would make me healthy in the long term. I have been saying — humorously, but truthfully — that I am going to do Pilates every day for the rest of my life. Getting around to more of that kind of work had been sort of vaguely aspirational before this injury. Now it is just my baseline.</p>
<p>But the idea that recovery specifically and training in general is <em>hopeful</em>: now that one I am going to be chewing on for a good, long time. I had never really put it in those terms, but it’s exactly right. You set out training for your first 5K, or for your first marathon, <em>hoping</em> that your work will yield certain results: the ability to finish at all, a shot at a <abbr title="personal record">PR</abbr>, or if you’re Sabrina Little possibly a World Champion title. But even if you’re Sabrina Little, and certainly if you’re someone like me, there is no guarantee. You can plateau in your training when you hoped to improve. You can twist-and-lift just so and throw out your back and blow up your training season. You can get so sick the morning of the race that you cannot get out of bed. You can have life circumstances that intervene such that you have to give up racing for a few years. (All of those have happened to me!)</p>
<p>Training is an act therefore not of absolute confidence, but of hope.</p>
<p>You keep at it — or get back at it after setbacks — because, in spite of them, you keep <em>hoping</em>. The hopes change over the years, but hope itself does not.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20recovery%E2%80%A6%20is%20a%20hopeful%20act">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="running"/><category term="virtue"/><category term="quotes"/><category term="reading notes"/><link rel='enclosure' href='https://cdn.chriskrycho.com/images/books/examined-run.jpg'/>
               <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdn.chriskrycho.com/images/books/examined-run.jpg"/></entry><entry><id>https://v5.chriskrycho.com/journal/humans-are-amazing/</id><title type="html">[journal] Humans Are Amazing</title><published>2026-03-27T09:35:00.000-06:00</published>
            <updated>2026-03-27T09:35:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/journal/humans-are-amazing/'/>
            <summary type="html">We took a family ski trip and it provoked no little astonishment.
</summary>
            <content type="html">
               <![CDATA[<p><i>We took a family ski trip and it provoked no little astonishment.
</i></p><p>These past two days, my family and I went skiing at <a href="https://skiloveland.com">Loveland Ski Area</a> in central Colorado, a few hours from our home. My daughters — one in particular! — have been begging to go for a few years, and we finally made it work schedule-wise and financially this year. It was a great trip, and I came away from it thinking about just how incredible human beings are.</p>
<p>Elayne is almost 14, Katherine almost 12, and neither had ever been skiing before. In fact, neither had even put on skis before Wednesday morning, shortly before their lessons began. By the end of the first day, though, they were fairly comfortable going down the<span class="push-double"></span> <span class="pull-double">“</span>bunny slope” and confident riders of a ski lift. (Credit to Loveland’s ski school instructors!)</p>
<p>Yesterday, instead of doing more lessons, we just spent the morning hanging out on the bunny slope together.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/skiing-with-girls.jpeg" alt><figcaption>riding the bunny slope lift with Elayne and Katherine</figcaption></figure>
<p>When we started, neither had successfully gotten off the ski lift without falling. On our second run, I encouraged them to try not to fall when getting off — nothing more than that encouragement — and they succeeded. By an hour in, they were ready to (indeed, asked to) do a ride on the lift and run on the bunny slope by themselves. Both of them did the steep side of the bunny slope before the morning was out. One of them spent a couple hours after lunch by herself — the other was sufficiently tuckered out that she just read instead, which was also fine.</p>
<p>This is amazing! We take it for granted because people do this kind of thing all the time, but it’s amazing. They went from never having done the activity at all to being able to do it comfortably and with a basic level of competence in a handful of hours.</p>
<p>I grew up skiing; I think I was 5 years old the first time I went. For the first many years I was skiing, we went one or two days a year as a family, and sometimes also a day trip with church friends. When I was in high school, we were able to up that to going <dash-wrap>4&thinsp;&ndash;&thinsp;5</dash-wrap> days each year. Add that all up, and by the time I left for college, I had skied well under 40 days total. After leaving for college, I skied only a few more times. Even if we assume that I was skiing all day on every one of those days, that’s around 300 hours in my life before yesterday. In that time, spread out over the course of years, I was able to grow into a reasonably competent skier. By those late high school and college-era trips, I was confidently skiing black and double black runs — deep bowls, steep slopes of moguls, chases through trees.</p>
<p>This kind of skill development should be stunning. We take it for granted because it is just how human beings <em>are</em>. It is what we do, all the time. But a few hundred hours scattered across a decade and a half being sufficient to develop that kind of skill is remarkable, in the sense that it is worth remarking upon. Both for how little time it is, relatively speaking, and for the fact that our bodies and minds can remember across those spans of time. You don’t come back to the mountain having lost all the skills you built the previous year. Indeed: you have to warm up a bit and remind yourself of what you know, but you still know it. The skills are somehow all still there, waiting to be reengaged and then built upon further.</p>
<p>Even more amazingly, this holds across decades of time away.</p>
<figure><img src="https://cdn.chriskrycho.com/images/2026/skiing-selfie.jpeg" alt><figcaption>riding the lift solo on Wednesday morning</figcaption></figure>
<p>When I strapped on the skis on Wednesday, I had skied exactly twice since graduating college almost seventeen years ago: once seven years ago, and once eight years before that. It took me a few hours to get my legs back under me (and the terrible conditions weren’t helping!) but by late morning, I was skiing decently-difficult blue runs and even cutting down a black bowl at the very top of the mountain. By late yesterday, I was back to cutting down mogully blues while dodging the trees and rocks sticking out of the ground from the too-thin snow cover. Not as good as I was in late high school, but not that far off, either. If I ski a few days next season, I expect to have it all back.<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup></p>
<p>Human beings are amazing creatures.<span class="push-double"></span> <span class="pull-double">“</span>You never forget how to ride a bike” is a truism that we think little of, when in fact it should stun us. We should marvel more at what we can do — at how quickly and well we can learn new things, and at how we can remember them at the remove of even decades.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>It will be <em>different</em> than it was back then, because I am older. That comes with a host of changes. My body is less resilient in some ways; it requires greater care. But it is also stronger in many ways, from 15 years of running and now a growing foundation of core strength. My mind, meanwhile, is a <em>far</em> greater asset now than it was back then. I have learned to be a student of the sports I engage in, for one. For another, those years of running have helped me learn how to attend to my body well.</p>
<p>I realized yesterday that my boots don’t fit well, and could articulate exactly how. It took me only a little bit of study to understand <em>how</em> my boots aren’t serving me well. I will need a good bootfitter to help me fix that, but I am also very confident it is fixable. Looking back, I suspect that I had these kinds of problems off and on the entire time I was growing up. Some years, no doubt, the rentals fit just right; others, not so much. But I did not have the bodily self-awareness to articulate any of that back then, and now I do. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Humans%20Are%20Amazing">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="learning"/><category term="health"/><category term="fitness"/></entry><entry><id>https://v5.chriskrycho.com/notes/just-let-me-share-a-silly-little-app-with-my-friends-okay/</id><title type="html">[notes] Just Let Me Share a Silly Little App with My Friends, Okay?</title><published>2026-03-19T07:40:00.000-06:00</published>
            <updated>2026-03-19T11:15:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/just-let-me-share-a-silly-little-app-with-my-friends-okay/'/>
            <summary type="html">Having an App Store is fine. &amp;lt;em&amp;gt;Only&amp;lt;/em&amp;gt; having an App Store is not. Or: &amp;lt;strong&amp;gt;the right to install&amp;lt;/strong&amp;gt;.
</summary>
            <content type="html">
               <![CDATA[<p><i>Having an App Store is fine. <em>Only</em> having an App Store is not. Or: <strong>the right to install</strong>.
</i></p><p>I was joking with my wife about a silly app idea that would be for her and her alone — an inside joke — and I was frustrated all over again about how difficult it is to get an app onto an iPhone. The App Store has many good things going for it. (I’m not just saying that: I really think that as a default, it is a better model for many less-technically-minded folks.) But the single biggest thing I have against it is that it is the <em>only</em> way to get software onto your iPhone without jumping through weird hoops: distributing software to friends and family via TestFlight is a hack, and a bad one, and it shouldn’t be necessary in the first place.</p>
<p>We spend inordinate amounts of money on these extraordinarily powerful little computers. We ought to be able to put whatever software on them we want. They ought to be ours. They <em>are</em> ours.</p>
<p>Lots of us out here are enthusiastic about <a href="https://www.robinsloan.com">Robin Sloan</a><span class="push-single"></span><span class="pull-single">’</span>s <a href="https://www.robinsloan.com/notes/home-cooked-app/">home-cooked <dash-wrap>meal – style</dash-wrap> apps</a>. It would be a lot easier to be enthusiastic about them in practice and not just in principle if distributing them to our friends and family were easier.</p>
<p>My friends know I’m a native apps snob. (I tell them!) But the reality is that for distribution, the web wins by a mile. It’s not <em>quite</em> true that no one can stop you from publishing something on the web. Doing something bad enough (or live in a place censorious enough) and your internet provider and hosting options may disappear — and that is in some cases a very good thing. But the difference between the open web and the App Store (or Play Store) is not miles. It’s light years.</p>
<p>If there are any Congresspeople out there reading this — or anyone adjacent to them — , the single most valuable bill you could pass when it comes to breaking the monopsonistic grips Apple and Google have is also a very simple one: a <em>right to install</em>. When people buy hardware, they should have the right to put on it whatever software they want. Hardware vendors should be able to make things secure, but they shouldn’t be able to block you from putting your own apps or even your own operating system on a device. It’s yours, not theirs. And sure, let the vendors be explicit in their Terms of Service that if you put a new <abbr title="operating system">OS</abbr> on the device, that voids the warranty. But don’t let them <em>stop</em> people from installing their own software.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Just%20Let%20Me%20Share%20a%20Silly%20Little%20App%20with%20My%20Friends%2C%20Okay%3F">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="Apple"/><category term="software development"/></entry><entry><id>https://v5.chriskrycho.com/journal/noticing-and-solving-technical-problems-in-a-codebase/</id><title type="html">[journal] Noticing, and Solving, Technical Problems in a Codebase</title><published>2026-03-17T20:24:00.000-06:00</published>
            <updated>2026-03-17T20:24:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/journal/noticing-and-solving-technical-problems-in-a-codebase/'/>
            <summary type="html">And a requisite aside about large language models.</summary>
            <content type="html">
               <![CDATA[<p><i>And a requisite aside about large language models.</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> Software developers interested in the long-term health of their codebases.</p>
<hr/><p>There comes a point when you first notice that a given technical choice is not working particularly well. Maybe it is within minutes of making it; maybe it takes months or years to show up as a problem. When it happens, you should immediately note it — probably literally write it down — , and then see whether it keeps showing up. If it catches your attention again as a point of friction or pain, note that. If you hit it a third time, stop and figure out what you need to do to get rid of that friction.</p>
<p>Why change it, if it’s<span class="push-double"></span> <span class="pull-double">“</span>just” friction? Because friction compounds. It makes it that much harder to work in that part of the codebase. And if that spot where there is friction becomes (or has become) load-bearing, the longer you wait to change it, the harder it gets to change. When you have found making a change in a given area hard a handful of times, it’s unlikely that it’s going to get <em>easier</em> to change over the life of the codebase.</p>
<p>Why three times? Well, it’s a heuristic: not a commandment, but a good guide. Noticing it once or even twice is a hint that there <em>may</em> be something worth changing. But if you hit something twice in a year and never hit it again… it’s probably fine. If you hit something three times in <em>any</em> span of time, you’re probably going to hit it again. Maybe the number for one particular problem is five. Maybe the number for another is just two, because it’s so obviously painful. Three is a decent rule of thumb.</p>
<p>If you don’t stop at three, or five, or <em>sometime</em> early, you’ll find yourself years down the line paying literally orders of magnitude more to fix it. Yes, sometimes you can afford that. But imagine how much better (and indeed how much more profitable) it would be to spend that time on making your software do more for the people who use it instead of cleaning up messes you left for yourself!</p>
<hr>
<p><strong>Addendum:</strong> a few <abbr title="large language model">LLM</abbr>-related notes here — </p>
<ol>
<li>
<p>The inability to <em>notice</em> the friction because making changes is so<span class="push-double"></span> <span class="pull-double">“</span>cheap” with <abbr>LLM</abbr>s is one reason I have concerns about the long-term maintainability of many of these codebases! The counter-argument is that it <em>is</em> cheap, but I think this underestimates just how hard these things can become over time — most especially in those load-bearing situations. I just spent a good part of a week chasing down one of the <em>simplest</em> ones of these in Vanta’s  codebase, and the existence of <abbr>LLM</abbr>s made a few parts of it easier… but not most of it.</p>
</li>
<li>
<p><abbr>LLM</abbr>s are incredibly effective at pattern-matching, which means that they will absolutely reflect the state of your code. If your codebase has even a few examples of a particular pattern, it becomes much more likely that <abbr>LLM</abbr>s will reproduce it. This falls naturally out of how these systems work. I sometimes joke/not-joke that particular parts of the Vanta codebase basically act as<span class="push-double"></span> <span class="pull-double">“</span>context poisoning” for <abbr>LLM</abbr>s, because the existence of those patterns in the codebase has a much larger effect on what the <abbr>LLM</abbr>s generate than all of our lint rules and <code>AGENTS.md</code> files combined do.</p>
</li>
<li>
<p>That goes double for architectural questions. <abbr>LLM</abbr>s have observably made significant strides in local correctness over the past few years. They continue not to have good taste or judgment, and will happily spit out massive amounts of (mostly, apparently) working code that add up to a classic big ball of mud.</p>
</li>
<li>
<p>A fundamental rule of automation <a href="https://v5.chriskrycho.com/elsewhere/substrate-engineering/#:~:text=And%20when%20you%20put%20those%20factors%20together%2C%20it%20has%20a%20result%20that%20might%20be%20counterintuitive:%20The%20better%20LLMs%20get%E2%80%89%E2%80%89%E2%80%94%E2%80%89%E2%80%89the%20more%20they%20boost%20velocity%20by%20generating%20working%20code%E2%80%89%E2%80%89%E2%80%94%E2%80%89%E2%80%89the%20harder%20it%20will%20be%20notice%20when%20they%20get%20things%20wrong.">as applied to <abbr>LLM</abbr>s</a>: The better <abbr>LLM</abbr>s get — the more they boost velocity by generating working code — the harder it will be notice when they get things wrong.</p>
</li>
</ol>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Noticing%2C%20and%20Solving%2C%20Technical%20Problems%20in%20a%20Codebase">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/></entry><entry><id>https://v5.chriskrycho.com/notes/what-happened-to-february/</id><title type="html">[notes] What Happened to February?</title><published>2026-03-11T07:15:00.000-06:00</published>
            <updated>2026-03-11T07:15:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/what-happened-to-february/'/>
            <summary type="html">Work. So much work!</summary>
            <content type="html">
               <![CDATA[<p><i>Work. So much work!</i></p><p>I just realized, on posting that bit about slices in Dorico, that I hadn’t written <em>anything</em> in February. I missed it, but then I barely got to any of my side projects in February. <a href="https://www.vanta.com">Vanta</a><span class="push-single"></span><span class="pull-single">’</span>s fiscal year starts on February 1, which means a lot of other things happen then as well:</p>
<ul>
<li>The annual Company Kick-Off is always the first week of February — this year, in Las Vegas, so I was traveling that whole first week.</li>
<li>The first quarter ramp-up into the new year’s priorities happens then.</li>
<li>This year, we had some internal leadership changes that led to a few of us spending a bunch of time on updates to our annual plans.</li>
</ul>
<p>As a bonus, we had a long-standing developer experience challenge get much worse as we tipped over some internal scaling issues, and that in turn led to creating an entirely new project that I have been running at the same time as trying to do all of that <em>other</em> work.</p>
<p>The result: a February so busy at work that I barely composed, did no public writing whatsoever, and managed — just — to hang onto my workout routine. Gladly, it seems to be slowing down a touch here in March (phew!), and I’m hoping to have more time and space and mental energy to write again more regularly.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20What%20Happened%20to%20February%3F">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="site meta"/><category term="writing"/></entry><entry><id>https://v5.chriskrycho.com/notes/exporting-graphic-slices-from-dorico/</id><title type="html">[notes] Exporting Graphic Slices From Dorico</title><published>2026-03-11T06:55:00.000-06:00</published>
            <updated>2026-03-11T06:55:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/exporting-graphic-slices-from-dorico/'/>
            <summary type="html">One of those handy features you don’t necessarily appreciate until you find yourself needing it.
</summary>
            <content type="html">
               <![CDATA[<p><i>One of those handy features you don’t necessarily appreciate until you find yourself needing it.
</i></p><p>I just used <a href="https://www.steinberg.net/dorico/">Dorico</a><span class="push-single"></span><span class="pull-single">’</span>s handy <a href="https://www.steinberg.help/r/dorico-pro/6.1/en/dorico/topics/engrave_mode/engrave_mode_graphic_slices_exporting_t.html">Exporting Graphic Slices</a> feature for, I think, the first time, and: what a thoughtful inclusion this is. For one issue of my music newsletter this year (comment on going quarterly some other time — likely the upcoming <dash-wrap>January – March</dash-wrap> issue!), I wanted to illustrate, like so:</p>
<figure><img src="https://cdn.chriskrycho.com/images/very-high-ledger-line.png" alt><figcaption>a very high ledger line</figcaption></figure>
<p>In the past, I might have tried to snag that by using a screenshot utility. Today, I remembered that Dorico has this functionality built in, so I pulled <a href="https://www.steinberg.help/r/dorico-pro/6.1/en/dorico/topics/engrave_mode/engrave_mode_graphic_slices_exporting_t.html">the aforelinked help page</a> and followed the instructions there to snag just this view and export it as a high-quality <abbr title="Portable Network Graphics (image format)">PNG</abbr> — with the ability to be much more precise with what I captured and with a good deal more versatility about what to export and how.</p>
<p>Handy!</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Exporting%20Graphic%20Slices%20From%20Dorico">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="Dorico"/><category term="music"/></entry><entry><id>https://v5.chriskrycho.com/notes/three-theses-and-their-implications-about-software-engineering/</id><title type="html">[notes] Three Theses and Their Implications About Software Engineering</title><published>2026-01-30T18:50:00.000-07:00</published>
            <updated>2026-01-30T18:50:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/notes/three-theses-and-their-implications-about-software-engineering/'/>
            <summary type="html">As a friend and I were discussing the industry at large.</summary>
            <content type="html">
               <![CDATA[<p><i>As a friend and I were discussing the industry at large.</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> A vaguely in-house conversation for folks acquainted with the dynamics of the tech scene.</p>
<hr/><p>Theses:</p>
<ol>
<li>
<p>People are responsible for their own choices and have agency, and the responsibility part is particularly applicable to people who want the right to call themselves<span class="push-double"></span> <span class="pull-double">“</span>engineers”.</p>
</li>
<li>
<p>People are social animals who respond deeply to the norms in their environment,<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup> and who respond very strongly to their direct authority figures.<sup class="footnote-ref"><a href="#fn2" id="fnref2">2</a></sup></p>
</li>
<li>
<p>When something in an engineering organization is deeply broken, it is usually because (2) is undermining (1) in profound ways.</p>
</li>
</ol>
<p>One of the most formative experiences of my career, almost a decade now, was — after years of being profoundly beaten down by previous bosses — having an <abbr title="engineering manager">EM</abbr> more or less yell at me (we were friends and it was in a good way),<span class="push-double"></span> <span class="pull-double">“</span>Stop complaining to me and go change it! You’re an engineer, not a code monkey! That’s why we give you that title! You are actually empowered to go fix things!”<sup class="footnote-ref"><a href="#fn3" id="fnref3">3</a></sup></p>
<p>So many of the folks in the industry at large, perhaps especially in <abbr title="venture capital">VC</abbr>-funded or public co. land, have never had that desperately-needed pep talk/lecture. And too many <abbr>EM</abbr>s think their <abbr title="product manager">PM</abbr>s are their bosses, so they pass that onto their engineers.</p>
<p>And so: my job is to avoid getting upset when I see other engineers having done something less than desirable, not least when I can see that their intent is actually good, and to go fix as many of the underlying problems with (2) that I can so that they have a shot at doing what they should in (1) — and also to tell as many engineers as I can that (1) is in fact their responsibility regardless of what dynamics are in play under (2).</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>This is a better version of the<span class="push-double"></span> <span class="pull-double">“</span>people just respond to incentives” take that I often see floating around. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>I often think of the description of Jesus’ compassion on the crowds as<span class="push-double"></span> <span class="pull-double">“</span>harassed and helpless, like sheep without a shepherd” (Matthew 9:36b). I feel something of that same compassion for a lot of engineers with bad managers. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Bret, on the off chance you happen to read this: <em>Thank you.</em> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Three%20Theses%20and%20Their%20Implications%20About%20Software%20Engineering">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/><category term="engineering"/><category term="from my outbox"/></entry><entry><id>https://v5.chriskrycho.com/notes/the-unreasonable-effectiveneess-of-writing-down-goals/</id><title type="html">[notes] The (Unreasonable?) Effectiveness of Writing Down Goals</title><published>2026-01-29T07:26:00.000-07:00</published>
            <updated>2026-02-01T09:15:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/notes/the-unreasonable-effectiveneess-of-writing-down-goals/'/>
            <summary type="html">I try to do this every day, and I find it astonishing how much it helps me.
</summary>
            <content type="html">
               <![CDATA[<p><i>I try to do this every day, and I find it astonishing how much it helps me.
</i></p><p>I have mentioned before my habit — sometimes stronger, sometimes weaker, but never fully abandoned — of writing down what I want to do on various time scales: day, week, month (or, at work, quarter), year. For my personal goals, I do this in a modified bullet journal form in a <a href="https://www.leuchtturm1917.us/notebook-medium-a5-hardcover-251-numbered-pages-indigo-dotted.html">Leuchtturm1917 A5 dot grid notebook</a>. At work, I <a href="https://v5.chriskrycho.com/journal/writing-down-what-i-do-in-obsidian/">regularly</a> use a tool like <a href="https://obsidian.md">Obsidian</a> or <a href="https://bear.app">Bear</a>. In every case, I find it quite surprising how effective it can be simply to have <em>written down</em> what I want to do.</p>
<p>The first reason is that as long as I’m doing it right, writing down my goals forces me to decide, of the many things I could do, which I <em>will</em> do. Just these three big projects, this year. Just these chunks of those projects, this month. Three times working on each of those this week. This in the morning, that in the evening, today.</p>
<p>The second reason is that writing it down leaves a mark in my mind no less than on paper. It is as if I am making myself a little promise, and the reminder that those dots are there, waiting to be marked off once I have accomplished the goals, lingers in my thoughts throughout the day. Indeed, even as I write these words, I am very aware of the time and my goal of composing some music this morning: I had better stop writing this and get to that if I am going to accomplish that!</p>
<p>The writing is not itself the key. The key is choosing and remembering. Writing is a really great tool for helping myself choose and remember, though.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20The%20(Unreasonable%3F)%20Effectiveness%20of%20Writing%20Down%20Goals">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="writing"/><category term="working effectively"/><category term="note-taking"/></entry><entry><id>https://v5.chriskrycho.com/notes/thinking-about-anything-besides-the-big-thing-right-now/</id><title type="html">[notes] Thinking About Anything Besides the Big Thing Right Now</title><published>2026-01-19T18:13:00.000-07:00</published>
            <updated>2026-01-19T18:13:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/notes/thinking-about-anything-besides-the-big-thing-right-now/'/>
            <summary type="html">Why I don’t write much about &amp;lt;abbr title=&amp;quot;large language model&amp;quot;&amp;gt;LLM&amp;lt;/abbr&amp;gt;s—and don’t expect that to change much in the near future, either.
</summary>
            <content type="html">
               <![CDATA[<p><i>Why I don’t write much about <abbr title="large language model">LLM</abbr>s—and don’t expect that to change much in the near future, either.
</i></p><p>It’s pretty simple, actually — a confluence of the following factors, in no particular order:</p>
<ul>
<li>
<p>They have effectively sucked up all the air in the room, but I still think there are plenty of other interesting things to think and talk about. Software engineering remains a large and wide discipline, and all the vast world beyond software is plenty interesting, too.</p>
</li>
<li>
<p>I have avenues where I <em>am</em> thinking and writing and talking about them. Just not <em>here</em>.</p>
</li>
<li>
<p>They <em>are</em> interesting in various ways, but I don’t usually have anything to say that others are not saying better. I think about them a fair bit at work — it’s literally part of my job to think about them, given where I sit in our org — but little if any of that is ready for public consumption.</p>
</li>
<li>
<p>I do not believe that anyone is obliged — no matter how heated the moment, and no matter how long they have been writing publicly — to comment on any given topic. Do I have thoughts, many of them deeply considered, on <abbr>LLM</abbr>s? Yes. I do. Do I feel obliged to spend more of my time on <em>that</em> topic than on others I find more profitable? I do not.</p>
</li>
</ul>
<p>The running theme here is that I think we are spending far too much of our time and energy on these things culturally. I want to contribute to a culture of thinking about <em>other</em> things — things that are more important, more enduring, more fundamental.</p>
<p>I recognize this post itself contributes to the problem named here. I write it so that if (or when!) it comes up again in the future, I can simply point to this and move on! In the meantime, you can expect to hear relatively little from me on this front, and much more on other things. Go read other folks — the enthusiasts and the critics and the (few) folks walking a careful line in between — and let me know when you find real gems along the way.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Thinking%20About%20Anything%20Besides%20the%20Big%20Thing%20Right%20Now">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="writing"/><category term="site meta"/><category term="AI and ML"/><category term="software development"/></entry><entry><id>https://v5.chriskrycho.com/library/time-to-keep/creaturehood/</id><title type="html">[library] creaturehood</title><published>2026-01-05T07:10:00.000-07:00</published>
            <updated>2026-01-05T07:10:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/library/time-to-keep/creaturehood/'/>
            <summary type="html">‘Human beings are not self-given; they do not “emerge” from something else in a basic way…’
</summary>
            <content type="html">
               <![CDATA[<p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> Theologically-orthodox Christians, or folks interested in things that theologically-orthodox Christians think.</p>
<hr/><figure class="quotation">
<blockquote>
<p>Only God<span class="push-double"></span> <span class="pull-double">“</span>creates” in any substantive way; and the work that comes from God’s hands is always, by definition, some kind of<span class="push-double"></span> <span class="pull-double">“</span>creature.” Obviously, the Christian faith further specifies this creation as somehow being<span class="push-double"></span> <span class="pull-double">“</span>in Christ,” but the basic relationship of creature to Creator is undisturbed by this christological specification. Human beings are somehow<span class="push-double"></span> <span class="pull-double">“</span>made” by someone beyond their scope of action and being. Human beings are not self-given; they do not<span class="push-double"></span> <span class="pull-double">“</span>emerge” from something else in a basic way, even if we adopt evolutionary biological frameworks for explaining the origin of human life. Whether we are talking about atoms or the forces that order them or hold them together, it is not possible to avoid the question of what it means that any of this exists at all. The question of this original existence of all things and of their order is one that goes beyond physics. The Christian affirms that all things, including our very selves,<span class="push-double"></span> <span class="pull-double">“</span>come to be” because of the specific act of the Creator. This relationship to a divine act outside of us and outside of our own times makes our creaturehood something singular, in comparison with other relationships we have with people and things, past and present.</p>
</blockquote>
<figcaption>&thinsp;&mdash;&thinsp;Ephraim Radner, <cite><a href="https://bookshop.org/a/21126/9781481305457">A Time to Keep: Theology, Mortality, and the Shape of a Human Life</a></cite>, p. 7</figcaption>
</figure>
<p>The only thing I would add here is that while creaturehood is indeed <em>undisturbed</em> by being<span class="push-double"></span> <span class="pull-double">“</span>in Christ” — we do remain, always, creatures — , it is certainly <em>changed</em>. Call it<span class="push-double"></span> <span class="pull-double">“</span>theosis” or whatever you like, but being mystically united with the creator makes an awfully big difference in what it is to be a creature.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20creaturehood">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="Ephraim Radner"/><category term="theology"/><category term="scripture"/><link rel='enclosure' href='https://cdn.chriskrycho.com/images/books/time-to-keep.jpg'/>
               <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://cdn.chriskrycho.com/images/books/time-to-keep.jpg"/></entry><entry><id>https://v5.chriskrycho.com/notes/why-not-astro-etc/</id><title type="html">[notes] Why Not Astro (etc.)?</title><published>2026-01-02T10:48:00.000-07:00</published>
            <updated>2026-05-10T17:02:00.000-06:00</updated>
            <link href='https://v5.chriskrycho.com/notes/why-not-astro-etc/'/>
            <summary type="html">A reasonable question I get asked regularly when I mention I’m slowly building my own site generator/engine.
</summary>
            <content type="html">
               <![CDATA[<p><i>A reasonable question I get asked regularly when I mention I’m slowly building my own site generator/engine.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who know what static site generators and website builders in general and specifically tools Astro, 11ty, etc. are.</p>
<hr/><p>Nearly any time I mention my slow but steady progress on building my own tool for building my website, I get questions of the form,<span class="push-double"></span> <span class="pull-double">“</span>Why not <some existing tool>?” Most recently, for example,<span class="push-double"></span> <span class="pull-double">“</span>Why not use Astro?”; in the past,<span class="push-double"></span> <span class="pull-double">“</span>Why move off of 11ty?”; and so on. These are invariably written kindly and from a place of reasonable curiosity, so I don’t begrudge them a bit. Here’s what I wrote in reply to the most recent such email:</some></p>
<p>Astro is great, and is one of the tools I would recommend to other folks who want to build their own <abbr title="content management system">CMS</abbr> or similar. For my part, this somewhat quixotic journey is one I have been slowly walking for a decade. A big part of it is the fact that I simply always find the limits of every other tool, often in part because of its need for generality. One of the wins of building your own tool is that it can be as narrow and specific as make sense for your own purposes, and that’s helpful for me. I also really enjoy having it be written in Rust end-to-end, both because of the performance benefits and because if I’m going to work on a project like this, I would much rather write Rust than <abbr title="JavaScript">JS</abbr>/<abbr title="TypeScript">TS</abbr>.</p>
<hr>
<p>To this I’ll add: I am and have been using 11ty successfully for over 6 years now, and I used Pelican for a similar span before that. I <em>think</em> I’ll probably be able to use my own generator for everything by the end of this year — an exciting prospect. But it obviously hasn’t been a hard blocker for me to be using off-the-shelf tools.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Why%20Not%20Astro%20(etc.)%3F">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/><category term="site meta"/></entry><entry><id>https://v5.chriskrycho.com/essays/computing-convivially/</id><title type="html">[essays] Computing, Convivially</title><published>2026-01-01T10:45:00.000-07:00</published>
            <updated>2026-01-01T10:45:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/essays/computing-convivially/'/>
            <summary type="html">Digital technologies can be terribly destructive, but they can also be gloriously empowering. How do we shape them into tools for conviviality rather than means of domination?
</summary>
            <content type="html">
               <![CDATA[<p><i>Digital technologies can be terribly destructive, but they can also be gloriously empowering. How do we shape them into tools for conviviality rather than means of domination?
</i></p><p><b>A bit of context:</b> I wrote this for a magazine a couple years ago, but it ended up not working out, so I’m publishing it here instead.</p>
<hr/><h2 id="i" tabindex="-1"><a class="header-anchor" href="#i">I</a></h2>
<p>Most of us remember when we taught our children to ride their bicycles, and I am no exception. I also remember many moments teaching my daughters another tool: our family computer. From the moment we started letting our daughters use a computer regularly, we have let them play video games a little — but given them far more time if they will spend it to create.<span class="push-double"></span> <span class="pull-double">“</span>Does sending iMessages full of gibberish count as<span class="push-single"></span> <span class="pull-single">‘</span>creative time’?” is a question we have had to answer perhaps a few too many times as a result. Slowly, but surely, though, the message has stuck.</p>
<p>I took a picture a few years ago of my older daughter, then about ten years old. In the photo, she is sitting at our family iMac: she has headphones on, the GarageBand app open, a <abbr title="musical instrument digital interface">MIDI</abbr> keyboard at hand, and is happily composing a piece for drum kit and strings and her own voice. An hour later, she proudly shared it with us. It was about what you would expect from a talented, but not prodigy-like, ten-year-old. We smiled wholeheartedly at her and found things to praise in that first attempt. I loved how she wanted to follow, even a little, in my footsteps as a composer. Even more, though, I loved that she was learning how to make the computer not only one more means of entertainment, but a tool for bringing the good and beautiful into the world.</p>
<h2 id="ii" tabindex="-1"><a class="header-anchor" href="#ii">II</a></h2>
<p>Ivan Illich, in his 1973 book <cite>Tools for Conviviality</cite>, defined a convivial tool as a<span class="push-double"></span> <span class="pull-double">“</span>responsibly limited tool.” As an example, he offered a bicycle. Nearly anyone can ride a bicycle. Bicycles require no licensure, and no training process. They are easy to borrow and lend, and relatively simple to repair. They are very unlike automobiles, which both enable and demand a radical restructuring of geography. A bicycle extends our reach only so far as we are willing to pedal in the elements. Yet bicycles are also remarkably capable tools which can sharply alter the possibilities for any given person on any given day.</p>
<p>The most convivial tool in my life (besides my own bicycle, anyway) is my Mac. It was easy to learn and has grown with me through the many phases of life since I first got one nearly 20 years ago. Over those years, I have used my computers to learn, write, use social media, compose music, play video games, and build software. Those uses are decidedly mixed: ranging from entertainment and distraction to creative and life-giving work. Social media, for example, has been a great dissipation at times, but also a place I made some of my closest and most enduring friendships. Similarly, video games have filled very different roles in my life: joyful play with my family and mere diversion after a long work day. Yet in the main, my laptop has been a tool, not a toy. Every one of the many seminary papers, blog posts, and essays I have written in the past fifteen years was written on one of my Macs. With these machines, I have composed orchestra music and recorded it with musicians on the far side of an ocean, written church music for our little congregation, even teamed up with a poet-friend who lives in another state to co-create a bit of music for my wife and one of our best friends. Most importantly, I have made my living on these machines for the past 15 years as a wholly self-taught software engineer.</p>
<p>The idea of a<span class="push-double"></span> <span class="pull-double">“</span>home economy” sometimes gets conflated with an agrarian economy, as if it is only available to farmers. One of the few upsides to 2020’s terrible disruption, though, was that many people, and at least some companies, realized much more of their work could be done anywhere. The door to working at home cracked open for many us in the knowledge economy. If some knowledge work certainly falls under the rubric of<span class="push-double"></span> <span class="pull-double">“</span>bullshit jobs”, much of it is also generative and good. (That division goes for all work in a broken world. Nor should it escape our notice that<span class="push-double"></span> <span class="pull-double">“</span>bullshit job” and<span class="push-double"></span> <span class="pull-double">“</span>taskmaster” are metaphorical, if meaningful, for knowledge workers. Both terms were and are quite literal for many agrarian workers.) Even a frustrating job in the knowledge economy can be a step toward a real home economy. It was for me.</p>
<p>In early 2013, my wife and I moved across the country, our 7-month-old first daughter in tow, for me to start a Master of Divinity degree. I was able to persuade my employer to keep me on part-time, working remotely as a contractor. The bookcase in our kitchen I used as makeshift standing desk was not glamorous, but I wrote a lot of code and seminary papers alike there. One day a few years along stands out in my memory. Our first daughter was now deep in the throes of potty training and we had another energetic little girl on our hands as well. My wife looked at me very seriously and told me she was going to lose it if she had to clean another puddle of toddler pee off the floor. Most of the other seminary families would have been stuck in that moment. The dads were always out of the house, either studying or working. I worked at home, though. I sent my wife out to her favorite coffee shop with our younger daughter. For the rest of the day, I alternated between stints of coding and running our toddler to the bathroom… and sometimes, yes, cleaning up puddles off the floor. A home economy indeed.</p>
<p>Speaking at the Library of Congress in 1990, Steve Jobs described how remarkable bicycles are. Humans are far outclassed by many other animals when it comes to our ability to turn energy into motion with our own two feet. Our toolmaking makes us capable of feats we could never manage otherwise, though. A bicycle vaults humans’ energy efficiency far beyond any other animal. The same, Jobs argued, is true of computers. They enable creative work hardly possible before: any group which cares can publish a top-notch magazine, for example. In Jobs’ telling, a computer is like<span class="push-double"></span> <span class="pull-double">“</span>a bicycle for the mind”. The analogy is suggestive. Perhaps computers, like bicycles, can be convivial tools.</p>
<h2 id="iii" tabindex="-1"><a class="header-anchor" href="#iii">III</a></h2>
<p>Jobs’ speech has its roots in an intellectual and practical project Douglas Engelbart launched nearly thirty years earlier with his 1962 report, <cite>Augmenting Human Intellect</cite>. Engelbart outlined a vision of computer programs for note-taking, ready to be adapted to each user, so as to<span class="push-double"></span> <span class="pull-double">“</span>harness your creativity more continuously.” A variety of<span class="push-double"></span> <span class="pull-double">“</span>personal knowledge management” and<span class="push-double"></span> <span class="pull-double">“</span>tools for thought” apps carry on this stream today. Curiously, though,<span class="push-double"></span> <span class="pull-double">“</span>tools for thought” enthusiasts often end up focused on the tools rather than the thinking. I confess: I have indulged in this mistake myself. A folder on this very laptop contains thousands of plain text files, some 1½ million words of notes. I have spent many hours reorganizing them, experimenting with naming schemes,  trying to get the links between them just right, and following interesting trails through them. All my tinkering with that system has not made me a better thinker. No intelligence inheres in interlinked documents. (Else the world wide web would have made geniuses of us all.)</p>
<p>One reason I get sidetracked by tinkering is zeal for the quality of my tools. Another is that tinkering is always easier than actually thinking. I suspect, though, that the impulse is higher with this specific machine. The flexibility, the sheer generality, of computers means they do not focus or direct our use. They are not like a camera, dedicated solely to capturing photographs. This is computers’ greatness, but it is also what makes them easy to misuse. Their programmability can mislead us into believing the hard work of thinking itself is avoidable. Phrases like<span class="push-double"></span> <span class="pull-double">“</span>outboard brain” indicate a failure to understand how thinking works, and why it is — always — work. That goes equally for a notes system made up of plain text files and for large language model chat interfaces. Engelbart’s dream, like Jobs’ word-picture, was of computers as tools allowing us think better; too often we act as if they will do the thinking for us. We treat them like automobiles instead of bicycles. No matter how good our notes system or how fluent our chatbots, though, true understanding is hard-won. We have to pedal.</p>
<p>As with any such imaginative framing, then, the<span class="push-double"></span> <span class="pull-double">“</span>implementation details” matter very much. After all, some of my time spent with my notes system <em>has</em> been illuminating. Writing down ideas and considering how they relate to each other has sharpened, clarified, and expanded my thinking over time. Good tools can provide scaffolding for that kind of work. They can make it easier to use one’s existing notes for reflection and revision. At the end of the day, though, the thinking has to be done in real time by a human. That is what makes pen and paper note-taking so powerful.<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup> A convivial note-taking app would respect that reality — and promise no more.</p>
<h2 id="iv" tabindex="-1"><a class="header-anchor" href="#iv">IV.</a></h2>
<p>In his February 2020 essay <a href="https://www.robinsloan.com/notes/home-cooked-app/">An app can be a home-cooked meal</a>, novelist Robin Sloan describes a tiny video messaging app he built for his own family, with the delightfully silly name BoopSnoop. The app did just enough for Sloan and his family. It had absolutely no need for a monetization strategy, the level of polish of a published app, or even a less silly name for an app store marketing. Sloan concludes the essay by arguing that there is something good about learning to code the way we might learn to cook. Few of us will become Michelin chefs. Many of us can enjoy cooking in its own right, though. Most of us can bless our family and friends and neighbors with food. The same can — should — be true of software.</p>
<p>This is not the only path to convivial computing, though, any more than the goodness of home-cooking rules out the goodness of great restaurants.</p>
<p>The most powerful companies in the world include computer companies. Amazon, Apple, Alphabet (née Google), Meta (née Facebook), Microsoft, and lately Nvidia top the list in America. There are many differences between these companies, but they all operate at nearly inconceivable scales. They have billions of users. Their products have cost billions of dollars to develop over the span of many decades; building competing platforms would take comparable amounts of both money and time. (For all that bicycles make for a pretty good business, it is hard to imagine them dominating our social, political, and even artistic spaces — still less our cultural imaginary — the way those tech giants do.) Does that fact of scale alone make computers un- or even anti-convivial technologies?</p>
<p>Social media is certainly industrial in scale, and most of its harms are directly due to industrializing what should not be: community and conversation. Scale itself is indeed most of the problem there. No one can moderate four billion<span class="push-double"></span> <span class="pull-double">“</span>users” (that is: people). At the same time, Sloan’s BoopSnoop was itself possible only because it built on the foundations laid by those massive corporations. It stood on the shoulders of thousands of corporate software developers and indie open source contributors alike. Likewise, consider how my own little home economy has both benefited from and contributed to mega-corporations — not least in a nearly five year stint at one of them.<sup class="footnote-ref"><a href="#fn2" id="fnref2">2</a></sup></p>
<p>Scale can dehumanize. It can also empower and enable. In the small, we are free to play, to experiment, to learn, to write essays for small magazines, to compose orchestra music, to keep in touch with friends around the world. In the large, we can collaborate on vaccines and antibiotics to defang a pandemic. The sheer generality of computing makes all of these possible. We are responsible to choose how, and when, and where, and even why we use computers. We must use them to magnify rather than diminish our humanity, and we must use them for human ends.</p>
<p>Technological enthusiasts in every age think novel technologies good — often rightly, but not always. The technological skeptics of every age think them bad, often justly — but not always. Computer aficionados have certainly fallen prey to the first temptation often enough. Tech critics have equally often fallen prey to the second. Mostly, the two camps speak past each other. Perhaps the two can have a real meeting of the minds today in the recognition that computing is not all it could be: that convivial computing is possible. Moral hazards around computing are real. So is the potential for the beautiful and good, though. I, for one, am unwilling to let the ills of social media, or the extractive aims of the largest companies in the world, have the final word on what computing is or can be. We must continue to push back against the idea of tools as substitutes for our humanity, must always insist on shaping them into the kinds of things which make us more truly human. But we should also rejoice in the ways they do just that.</p>
<p>These slabs of silicon, and the software that runs on them, can be a help to home economies. They need not be substitutes for thinking; they really can be bicycles for our minds. Convivial computing exists in the world today, and we should all of us encourage it wherever we find it. The next time you use a computer, then, think about what you are about to do. Will you scroll endlessly, feed the trolls, hate-read your political enemies? Or will you build a friendship, create a work of art, cultivate a new skill, share something beautiful: ultimately, glorify God? We get to <em>choose</em> whether our computing is convivial. Every time we make something genuinely good of computers’ capaciousness, we build — just a little more — a life fit for humans, tool-makers that we are.</p>
<h2 id="v" tabindex="-1"><a class="header-anchor" href="#v">V</a></h2>
<p>A month ago,<sup class="footnote-ref"><a href="#fn3" id="fnref3">3</a></sup> my younger daughter asked me to compose a setting for an acrostic poem she wrote — and so I did. Last night, I sat down at the piano with her to practice it: we both played, and she sang. I composed the piece as I always do: sitting at my Mac, with a <abbr>MIDI</abbr> keyboard at hand, entering the notes into one of my favorite pieces of software, listening to playback with samples from some of the best musicians in the world, printing it out at a quality unthinkable for this kind of home project even fifteen years ago. All of this <em>could</em> be done purely by hand, yes, but it was better this way — much better. And when we finished playing through it together, my younger daughter looked up at me, smiled a huge smile, said<span class="push-double"></span> <span class="pull-double">“</span>Thank you, daddy,” and hugged me hard.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Though we should also acknowledge that even writing can be a crutch. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>I worked at LinkedIn, a subsidiary of Microsoft and a behemoth in its own right, January <dash-wrap>2019 – October</dash-wrap> 2023. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Per the context comment at the top, this was<span class="push-double"></span> <span class="pull-double">“</span>a month ago” when I wrote this essay, but that was a couple years ago. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20Computing%2C%20Convivially">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="Big Tech"/><category term="tech criticism"/><category term="technology"/><category term="tools"/><category term="thinking"/><category term="software"/><category term="creativity"/><category term="Robin Sloan"/><category term="Ivan Illich"/><category term="Douglas Engelbart"/><category term="working effectively"/><category term="parenting"/></entry><entry><id>https://v5.chriskrycho.com/journal/2025-in-review/writing/</id><title type="html">[journal] 2025 in Review: Writing</title><published>2025-12-31T17:21:00.000-07:00</published>
            <updated>2025-12-31T17:21:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2025-in-review/writing/'/>
            <summary type="html">Another year of writing a good-sized book‘s worth of words… and also contributing to a major revision of a book.
</summary>
            <content type="html">
               <![CDATA[<p><i>Another year of writing a good-sized book‘s worth of words… and also contributing to a major revision of a book.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who like reading year-in-review summaries. (I always assume that’s mostly just me, a few years in the future!)</p>
<p><b>A bit of context:</b> For many years now, I have made it my habit to write up one of these summaries. In this case, I have tried to make it a bit more digestible by breaking into smaller chunks. All of the posts are available at the <a href="https://v5.chriskrycho.com/journal/2025-in-review/">2025 in Review</a> series page.</p>
<hr/><p>As usual, writing made up a huge part of my work — though not the sort I get paid for — this year. Between an article for <cite>Christianity Today</cite>, my music newsletter, and this site, I ended up writing around 85,000 words all told: no small feat in a year filled with many other responsibilities! I’m always surprised at the end of the year to see just how much writing I have done. At some point I should stop being surprised.</p>
<h2 id="elsewhere" tabindex="-1"><a class="header-anchor" href="#elsewhere">Elsewhere</a></h2>
<p>A few years ago, I set myself a goal of publishing at least one essay each year somewhere <em>not</em> my blog. I managed it again this year: I was published in <cite>Christianity Today</cite>, for their July/August 2025 issue on <abbr title="artificial intelligence">AI</abbr>: <a href="https://www.christianitytoday.com/2025/07/dont-conflate-intelligence-with-value/">Don’t Conflate Intelligence with Value</a>. Being published in a major magazine was a nice milestone, and I was glad to contribute to an area where my fields of expertise overlap such that I have something valuable to say.</p>
<p>My other major publishing win this year is that Carol Nichols and I also finished a major revision pass on <a href="https://doc.rust-lang.org/book/"><cite>The Rust Programming Language</cite> book</a> this year, including <a href="https://doc.rust-lang.org/book/ch17-00-async-await.html">the brand new chapter I wrote introducing <code>async</code> and <code>await</code></a>. The online version is largely up to date with our revisions. Meanwhile, print and <span class="all-smcp">EPUB</span> versions of the new edition will be out in February, with <span class="all-smcp">EPUB</span> actually available in early access now. (If you prefer either of those to the online version, you can buy them from NoStarch <a href="https://nostarch.com/rust-programming-language-3rd-edition">here</a>.) It’s a great feeling to have all that work out in the world, and soon to be out in the world physically.</p>
<h2 id="music-newsletter" tabindex="-1"><a class="header-anchor" href="#music-newsletter">Music newsletter</a></h2>
<p>Another major outlet for my writing this year was <a href="https://newsletter.music.chriskrycho.com/archive/">my music newsletter</a>. I managed to keep up my streak from last year and publish every month. All told, I wrote  21,099 words in the regular issues, with another few hundred words for the short issue where I announced the release of <a href="https://music.chriskrycho.com/works/holy-saturday-2025/"><cite>Holy Saturday&thinsp;&mdash;&thinsp;<abbr title="extended play">EP</abbr></cite></a>. As I mentioned in <a href="https://newsletter.music.chriskrycho.com/archive/december-2025-how-the-year-went/">the year-end issue</a>, having the forcing function of writing monthly was really good for me. If I am going to send something into the world, I want it to be worth reading. That meant I needed to be thinking throughout the month about what to say. It also incentivized me to do the writing sooner than the deadline, because getting it out on time was a near thing several months, and an outright miss once or twice.</p>
<h2 id="the-blog-aka-this-site" tabindex="-1"><a class="header-anchor" href="#the-blog-aka-this-site">The blog (a.k.a this site)</a></h2>
<p>As usual, a good bit of writing here: 63,357 words this year. (Amusingly, that number grew by about 8,150 words from the time I started writing this series to the time I finished it. This is always one of my highest writing times of year.) That’s in line with most<span class="push-double"></span> <span class="pull-double">“</span>normal” years for the past half decade. For comparison:</p>
<table>
  <tr>
    <th scope="row">2020</th>
    <td>60,069</td>
  </tr>
  <tr>
    <th scope="row">2021</th>
    <td>44,442</td>
  </tr>
  <tr>
    <th scope="row">2022</th>
    <td>39,603</td>
  </tr>
  <tr>
    <th scope="row">2023</th>
    <td>55,658</td>
  </tr>
  <tr>
    <th scope="row">2024</th>
    <td>79,885</td>
  </tr>
</table>
<p>This year’s count is very close to the average of the preceding 5 years, so no major surprise here!</p>
<p>The more interesting bit is how dramatically the frequency and volume of my writing shifted when I started my new role at Vanta in April. I published 32,618 of those words, or about 52%, from January through April. What is more, the post-April word count includes the full text of my LambdaConf keynote, <a href="https://v5.chriskrycho.com/elsewhere/infrastructure-common-goods-and-the-future-of-open-source-software/">Infrastructure, Common Goods, and the Future of Open-Source Software</a> (also covered in my <a href="https://v5.chriskrycho.com/journal/2025-in-review/public-speaking/">Public Speaking</a> post). No surprise that my writing dropped off dramatically after April: a full-time job takes a lot of time, and my writing volume prior to that was aimed in part at helping me land a new job.</p>
<p>The posts I published this year I am proudest of:</p>
<ul>
<li><a href="https://v5.chriskrycho.com/notes/working-effectively-instead-of-productivity/"><span class="pull-double">“</span>Working Effectively” Instead of<span class="push-double"></span> <span class="pull-double">“</span>Productivity”</a>: a helpful shift in language as a way of thinking more clearly about what I do.</li>
<li><a href="https://v5.chriskrycho.com/journal/this-is-not-your-last-job/">This Is Not Your Last Job</a>: a call to learn what is professionally interesting to you, regardless of its<span class="push-double"></span> <span class="pull-double">“</span>value” to your current employer.</li>
<li><a href="https://v5.chriskrycho.com/journal/essence-of-successful-abstractions/">The Essence of Successful Abstractions</a>: writing down one of my software design heuristics in a way that I can share with others.</li>
<li><a href="https://v5.chriskrycho.com/notes/big-packages-or-many-dependencies/">Big Packages or Many Dependencies</a>: a foray into a then-hot, now-simmering argument across a number of language ecosystems about using external dependencies.</li>
<li><a href="https://v5.chriskrycho.com/journal/how-progress-feels/">How Progress Feels</a>: on what improvement in a discipline — any discipline! — feels like.</li>
<li><a href="https://v5.chriskrycho.com/journal/own-your-music/">Own Your Music</a>: because you may lose access to your favorite music if you rely on the streaming services.</li>
<li><a href="https://v5.chriskrycho.com/notes/yes-hallucinations-are-the-least-dangerous-exactly/">Yes, Hallucinations are the<span class="push-double"></span> <span class="pull-double">“</span>Least Dangerous” — <em>Exactly</em></a>: on how we ought to think more clearly about the problems with <abbr title="large language model">LLM</abbr>s.</li>
<li><a href="https://v5.chriskrycho.com/journal/mozilla-and-pocket/">Some Products Just Aren’t Big Companies</a>: on Mozilla’s horrific mishandling of their acquisition and slow killing of Pocket.</li>
<li><a href="https://v5.chriskrycho.com/notes/software-change-stability-imperfect-markets.../">Software, change, stability, imperfect markets…</a>: on 1Password as synecdoche for how companies can leave behind their original and most loyal customers when chasing size.</li>
<li><a href="https://v5.chriskrycho.com/journal/context-and-trust/">Context and Trust, or: Test Suites Reflect Teams</a>: responding to a post making what I took to be some pretty bad arguments about automated test suites for software (old-school blogging at its finest!).</li>
<li><a href="https://v5.chriskrycho.com/notes/naming-policy-large-language-models-not-artificial-intelligence/">Naming Policy:<span class="push-single"></span> <span class="pull-single">‘</span>Large Language Models’, Not<span class="push-single"></span> <span class="pull-single">‘</span>Artificial Intelligence’</a>: just what it says on the tin, but also <em>why</em>.</li>
<li><a href="https://v5.chriskrycho.com/notes/reversion-to-the-mean/">Reversion to the Mean</a>: on <abbr>LLM</abbr>s being very poor editors if you have any style of your own.</li>
<li><a href="https://v5.chriskrycho.com/journal/friendly-little-wrapper-types/">Friendly Little Wrapper Types</a>: writing down another one of my software design heuristics.</li>
</ul>
<h2 id="public-theology" tabindex="-1"><a class="header-anchor" href="#public-theology">Public theology?</a></h2>
<p>One notable absence from the <em>blog</em> this year is much writing on theology or ethics. These continue to be major considerations of mine, and I spend a good deal of time talking about them privately. I am in the midst of what seems to be a decade-long transition in my public posture on them, though. I am very happy to write about these issues (see: being published in <cite>Mere Orthodoxy</cite>, <cite>The Gospel Coalition</cite>, and <cite>Christianity Today</cite>) but I find myself very much in flux in how I write about them <em>here</em>. This is a bit ironic, since the early days of my blogging were almost entirely about those themes.</p>
<p>That is actually a big part of <em>why</em> I find myself in flux in this area. I am keenly aware of how much I opined with relatively little knowledge in the late<span class="push-single"></span> <span class="pull-single">’</span>00s and early<span class="push-single"></span> <span class="pull-single">’</span>10s, and am only that much more aware of the limits of my knowledge now. I have some small degree of expertise in theology and ethics by dint of my M.Div., but the emphasis here ought to be on the word<span class="push-double"></span> <span class="pull-double">“</span>small”.  I still read omnivorously, and a great deal of my essay-reading in particular <em>is</em> theology and ethics. I find, though, that where I have enough expertise to dash off a post about programming with some confidence that it will be helpful even if it is<span class="push-double"></span> <span class="pull-double">“</span>thinking out loud” I do <em>not</em> have that confidence about off-the-cuff theological or ethical writing.</p>
<p>I also find this complicated by my very mixed audience! I know that many of my readers are orthodox Christians, but that many are also <em>not</em>, and addressing both parts of that audience <em>well</em> is very difficult. <a href="https://v4.chriskrycho.com/2018/assumed-audiences.html">Assumed Audience</a> headers only go so far. Part of what makes it easier to write for e.g. <cite>Christianity Today</cite> is that I can assume many more shared commitments. On the other hand, I <em>want</em> to do <a href="https://v5.chriskrycho.com/about/#theologian">public theological writing</a> for the good of the church and the world.</p>
<p>Perhaps I should write on these things more, then, despite my sense of just how much I do not know. Expertise is always relative, I can always provide appropriate caveats, and I know from many a conversation at church that I do have things to share for other Christians that are not<span class="push-double"></span> <span class="pull-double">“</span>mainstream” knowledge for them — and I find the same is often true when talking with friends who are <em>not</em> Christians. The trick, I think, is growing some confidence in posting on such things simply by doing it, as well as finding the right<span class="push-double"></span> <span class="pull-double">“</span>register” in which to write about them again.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202025%20in%20Review%3A%20Writing">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="annual reflections"/><category term="writing"/><category term="music"/></entry><entry><id>https://v5.chriskrycho.com/journal/2025-in-review/rest-of-life/</id><title type="html">[journal] 2025 in Review: The Rest of Life</title><published>2025-12-31T16:56:00.000-07:00</published>
            <updated>2025-12-31T16:56:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2025-in-review/rest-of-life/'/>
            <summary type="html">Family, happy hours, parties, parenting, church, middle adulthood.
</summary>
            <content type="html">
               <![CDATA[<p><i>Family, happy hours, parties, parenting, church, middle adulthood.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who like reading year-in-review summaries. (I always assume that’s mostly just me, a few years in the future!)</p>
<p><b>A bit of context:</b> For many years now, I have made it my habit to write up one of these summaries. In this case, I have tried to make it a bit more digestible by breaking into smaller chunks. All of the posts are available at the <a href="https://v5.chriskrycho.com/journal/2025-in-review/">2025 in Review</a> series page.</p>
<hr/><p>Most of life has been fairly ordinary this year, though<span class="push-double"></span> <span class="pull-double">“</span>ordinary” by no means dull or uninteresting. Quite the contrary: with an 8<sup>th</sup> grader and a 6<sup>th</sup> grader, our lives are quite full, and full mostly of joy — though I do not always remember that on the days when parenting is hard and tiresome, as inevitably it sometimes is. It is fun watching our little girls turn into young women, even as this transition comes with its own host of new complications and challenges. (Puberty and adolescence: what a ride! With only more to come!)</p>
<p>We continue to be grateful for dear friends in a healthy — imperfect, but healthy — congregation at Holy Trinity Anglican Church. Just this past Monday, we spent almost four hours out with some of our good friends celebrating Jaimie’s birthday, and it was sheer joy throughout. And as one of them commented afterward, we could have spent another six — we barely touched on so many good things! Good friendships like this are priceless, and the more so to me because I had spent so much of my adult life wondering if I would <em>ever</em> have them in person. Now we have many.</p>
<p>On a related note, this year we started hosting a monthly Happy Hour in our home, to which we have simply invited a bunch of friends and asked people to bring food or drink to share. We did not actually manage to host every month, but simply having it on the calendar meant that we did manage more months than not. More than that, knowing that we <em>were</em> doing it every month meant that missing one month was not the end of the world — whether because we had to cancel, as we did a couple of times, or because guests had to miss, as inevitably people did courtesy of schedule concepts. There’s always the next month!</p>
<p>In December, we went a step further and transformed it into a Fancy Christmas Party — with a dress code: ladies in cocktail dresses, men in at least slacks and a blazer. We said<span class="push-double"></span> <span class="pull-double">“</span>black tie allowed but not required” (because I don’t have a tux; Jaimie has the appropriate getup and would have killed it, of course), and delightfully one of our friends <em>did</em> show up in a tux. Personally, I hope to have acquired a tux by next year just so I can host in it. The party was one of my favorite nights of the whole year and I cannot wait for it to go from<span class="push-double"></span> <span class="pull-double">“</span>one-off” to<span class="push-double"></span> <span class="pull-double">“</span>tradition”.</p>
<p>If you haven’t tried anything like this, you should: the Christmas party required a bit more preparation and cleanup, but the Happy Hour required relatively little and was never especially burdensome.<span class="push-double"></span> <span class="pull-double">“</span>Have a bunch of friends over with good food and drink” is something our culture could use a lot more of — and used to do a lot more of.</p>
<p>Perhaps the most notable thing to me in this<span class="push-double"></span> <span class="pull-double">“</span>everything else” bucket has been realizing the extent to which Jaimie and I are no longer the<span class="push-double"></span> <span class="pull-double">“</span>young people” at church. One of our daughters is about to be in high school, for goodness’ sake: of <em>course</em> we are not the young people! Much as I <a href="https://v5.chriskrycho.com/journal/2025-in-review/professional/#:~:text=Perhaps%20the%20most,this%20age%20bracket!">commented</a> about my role at Vanta, I am increasingly aware as I look around our church that increasingly it is our responsibility not only to participate in the life of the church but to lead.</p>
<p>Nothing brought this home to me more forcefully this year than having a few younger adults in the congregation very distinctly connect with Jaimie and me <em>as</em> an older couple in their lives. None of that was explicit, and as a result it actually took me a bit to recognize what I was seeing, but once I saw it, I could not <em>un</em>-see it. And of course that is true! A decade ago, we were looking at couples a decade ahead of us. The difference is that we’re now in our late 30s, so we can be the couple a decade ahead in life. It is a bit odd to consider that I am only 18 months away from being 40: as much as 30 seemed a big milestone, 40 seems a bigger one — well into middle adulthood.</p>
<p>In so many parts of life, no one really tells you these transitions are coming. We should, though! Again, as I said in the Professional update about the same dynamic in our careers, there is more to say here — I hope to write a little more about this in a dedicated post sometime soon.</p>
<p>In all these areas, though, I am glad to be able to say that we are doing well. Not every year have I been able to say that! But for 2025, I can.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202025%20in%20Review%3A%20The%20Rest%20of%20Life">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="annual reflections"/><category term="parenting"/><category term="family"/><category term="church"/></entry><entry><id>https://v5.chriskrycho.com/journal/2025-in-review/professional/</id><title type="html">[journal] 2025 in Review: Professional</title><published>2025-12-31T16:09:00.000-07:00</published>
            <updated>2025-12-31T16:09:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2025-in-review/professional/'/>
            <summary type="html">Getting things going at Vanta and shipping a lot in my Year of Shipping.
</summary>
            <content type="html">
               <![CDATA[<p><i>Getting things going at Vanta and shipping a lot in my Year of Shipping.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who like reading year-in-review summaries. (I always assume that’s mostly just me, a few years in the future!)</p>
<p><b>A bit of context:</b> For many years now, I have made it my habit to write up one of these summaries. In this case, I have tried to make it a bit more digestible by breaking into smaller chunks. All of the posts are available at the <a href="https://v5.chriskrycho.com/journal/2025-in-review/">2025 in Review</a> series page.</p>
<hr/><p>This year, I had two major areas of<span class="push-double"></span> <span class="pull-double">“</span>professional” work: <a href="https://v5.chriskrycho.com/journal/next-vanta/">joining Vanta</a> in April and my <a href="https://v5.chriskrycho.com/topics/year-of-shipping/">year of shipping</a>. Both of these went pretty well overall.</p>
<p>Joining Vanta was, of course, a big change from what I had spent the preceding year and a half doing, and a big change even from my time at LinkedIn. There’s a huge difference between doing the same basic kind of work at a megacorporation and doing it at a hypergrowth startup. I wrote a bit <a href="https://v5.chriskrycho.com/journal/next-vanta/">about joining Vanta</a> when I started, and I noted that<span class="push-double"></span> <span class="pull-double">“</span>hypergrowth” through the 1,000 employee mark represented<span class="push-double"></span> <span class="pull-double">“</span>a new set of challenges and opportunities” and that has certainly proven out.</p>
<p>Most of my work this year has been focused on making both our codebase and our processes scale. That meant everything from getting into nitty gritty details of our use of TypeScript in the codebase and solving nasty type checking performance problems to leading one of our cross-cutting all-engineering initiatives. I have done all sorts of other things along the way, too, unsurprisingly, from mentoring other engineers, to doing design and architecture sessions with other teams as they tackle rewrites of important parts of the application, to an awful lot of interviews. It has been <em>busy</em>.</p>
<p>Perhaps the most striking part of these first 8 months at Vanta was looking around and realizing that I am not only a leader, but one of the most senior and experienced leaders at the company. I have been writing software professional since some of my colleagues were in elementary and middle school. There comes a point in all of our lives where we find that we are not just grown-ups, but indeed the people on whose shoulders much of the responsibility falls, because there is no one else who is going to solve any given set of problems. Often no one else even has the experience and context to <em>see</em> the problems, still less to figure out how to fix them. That point is one well-taken in general for folks in this age bracket! (More on this some other time soon!)</p>
<p>My<span class="push-double"></span> <span class="pull-double">“</span>year of shipping” went better and further along some axis than I expected at the start of the year, while seeing much less progress than I might’ve hoped to along others. Unsurprising! This was always going to be an area where I was going to do what I could, when I could, and that often meant following my fancy where it led me, given that it had to come in after work and other commitments. Mainly, then, I did a lot of incremental work on <a href="https://true-myth.js.org">True Myth</a>, the library a friend and I wrote now eight years ago for safer and more robust handling of errors, nothing, and as of late last year also synchrony in TypeScript.</p>
<p>Since the start of the year, True Myth releases have included:</p>
<ul>
<li>
<p>a new <code>Task</code> type for fallible asynchronous operations, with full parity for the built-in <code>Promise</code> in JavaScript as well as an <abbr title="application programming interface">API</abbr> for retries that I really like.</p>
</li>
<li>
<p>a <em>bunch</em> of new utilities and tools across the <code>Result</code>, <code>Maybe</code>, and <code>Task</code> types.</p>
</li>
<li>
<p>a brand new documentation site with many fixes for the existing documentation, though there are sadly still a bunch of broken examples — getting that fixed is one of my personal hopes for 2026.</p>
</li>
<li>
<p>a dedicated integration with <a href="https://zod.dev">Zod</a> and out of the box <a href="https://standardschema.dev">Standard Schema</a> integration.</p>
</li>
</ul>
<p>I also published a couple other very small things. The first was a tiny little tool called <code>jj-gcp</code> that I built (and still use off and on) that uses <abbr>LLM</abbr>s to generate a branch name for an anonymous <code>jj</code> branch before pushing it with <code>jj git push</code>. The second was a simple <a href="https://www.barebones.com/products/bbedit/">BBEdit</a> syntax <a href="https://github.com/chriskrycho/bbedit-jj-syntax" title="a tiny little bit of software">definition</a> for <a href="https://www.jj-vcs.dev/latest/">Jujutsu</a> commit messages.</p>
<aside>
<p>Yes, I continue to use Jujutsu as my main version control tool. Every single commit I have written at Vanta has been done with <code>jj</code>, and it has been absolutely invaluable. I do a <em>lot</em> of sets of big cross-cutting refactors that I then split into smaller chunks to land independently, and I use the workflow I described <a href="https://v5.chriskrycho.com/journal/jujutsu-megamerges-and-jj-absorb/">here</a> pretty much constantly. I have plausibly worked more on<span class="push-double"></span> <span class="pull-double">“</span>megamerge” topologies than<span class="push-double"></span> <span class="pull-double">“</span>normal” branch topologies this year!</p>
</aside>
<p>If you want to poke at any of the details, they’re all listed under <a href="https://v5.chriskrycho.com/topics/year-of-shipping">my Year of Shipping topic</a>.</p>
<p>Looking forward, I hope to make 2026 another such year of shipping, though likely with less focus on True Myth and more on other side projects. I have made a <em>lot</em> of progress on getting my extremely bespoke and personal site generator working the way I want, for example, and only have one last yak to shave (I think!)… but it is a very large one. That said, it is also one that I expect to yield dividends for me in a bunch of areas only tangentially related at most to building websites, so I am excited to spend a chunk of the year shaving that last big yak.</p>
<p>In any case, having this explicit goal was good for me this year. Much like my commitment to publishing my music newsletter every month, it was both focusing and motivating for me, because I had publicly committed myself to getting things out into the world.</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202025%20in%20Review%3A%20Professional">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="annual reflections"/><category term="software development"/><category term="career"/></entry><entry><id>https://v5.chriskrycho.com/journal/2025-in-review/music/</id><title type="html">[journal] 2025 in Review: Music</title><published>2025-12-31T12:25:00.000-07:00</published>
            <updated>2025-12-31T12:25:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2025-in-review/music/'/>
            <summary type="html">Symphony progress, an &amp;lt;abbr title=&amp;quot;extended play&amp;quot;&amp;gt;EP&amp;lt;/abbr&amp;gt; release, social media sadness, and more.
</summary>
            <content type="html">
               <![CDATA[<p><i>Symphony progress, an <abbr title="extended play">EP</abbr> release, social media sadness, and more.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who like reading year-in-review summaries. (I always assume that’s mostly just me, a few years in the future!)</p>
<p><b>A bit of context:</b> For many years now, I have made it my habit to write up one of these summaries. In this case, I have tried to make it a bit more digestible by breaking into smaller chunks. All of the posts are available at the <a href="https://v5.chriskrycho.com/journal/2025-in-review/">2025 in Review</a> series page.</p>
<hr/><p>This year I:</p>
<ul>
<li>I composed and published <a href="https://music.chriskrycho.com/works/holy-saturday-2025/"><cite>Holy Saturday</cite></a>, a short chamber work, with versions <a href="https://chriskrycho.bandcamp.com/track/holy-saturday-version-for-piano">for piano</a>; <a href="https://chriskrycho.bandcamp.com/track/holy-saturday-version-for-violin-viola-cello-and-contrabass">for violin, viola, cello, and contrabass</a>; and <a href="https://chriskrycho.bandcamp.com/track/holy-saturday-version-for-chamber-orchestra">for chamber orchestra</a>.</li>
<li>I finished a first draft of the third movement of the symphony I am writing.</li>
<li>I wrote <a href="https://soundcloud.com/chriskrycho/on-the-craft">a tiny bit of music</a> for <a href="https://www.youtube.com/@ChrisKrycho-Music">my music-focused YouTube channel</a>.</li>
</ul>
<p>See <a href="https://newsletter.music.chriskrycho.com/archive/december-2025-how-the-year-went/">the corresponding issue</a> of <a href="https://newsletter.music.chriskrycho.com">my music newsletter</a> for more details and reflection on all of this!</p>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202025%20in%20Review%3A%20Music">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="annual reflections"/><category term="composing"/><category term="music"/></entry><entry><id>https://v5.chriskrycho.com/notes/invalid-email-address-error-in-apple-mail/</id><title type="html">[notes] “Invalid Email Address” Error in Apple Mail</title><published>2025-12-30T11:23:00.000-07:00</published>
            <updated>2025-12-30T11:23:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/notes/invalid-email-address-error-in-apple-mail/'/>
            <summary type="html">Talk about poor &amp;lt;abbr title=&amp;quot;user interface&amp;quot;&amp;gt;UI&amp;lt;/abbr&amp;gt; design!
</summary>
            <content type="html">
               <![CDATA[<p><i>Talk about poor <abbr title="user interface">UI</abbr> design!
</i></p><p>Back in November, I had cause to update my password in Apple Mail on my iPhone,<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup> and ended up seeing a thoroughly inscrutable error:<span class="push-double"></span> <span class="pull-double">“</span>Invalid Email Address”. Seeing as I had not changed the email address used for the account settings, only the password, this made absolutely no sense.</p>
<p>The problem, it turned out, was that I had aliases set up with which I can reply, because I have multiple domains that run through the same email account transparently. The solution was to remove all of the aliases and retain only the main email address for the account, confirm the password change, and then add back the aliases.</p>
<p>This is a terrible error message, and frankly a dumb design (I would just call it a bug, in fact!), But hopefully this explanation and work around will help someone else out there.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I’d also love to have a better email app but for my purposes — using <abbr title="Internet Message Access Protocol">IMAP</abbr> with <a href="https://join.fastmail.com/4dcac080">Fastmail</a> (<em>n.b.</em>: affiliate link) — or <abbr title="JSON Meta Application Protocol">JMAP</abbr> even! — nothing I have tried is better and most are worse. Alas, we find ourselves in a world of stagnant app development. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20%E2%80%9CInvalid%20Email%20Address%E2%80%9D%20Error%20in%20Apple%20Mail">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="Apple"/><category term="software development"/></entry><entry><id>https://v5.chriskrycho.com/journal/2025-in-review/health-and-fitness/</id><title type="html">[journal] 2025 in Review: Health and Fitness</title><published>2025-12-29T12:54:00.000-07:00</published>
            <updated>2025-12-29T12:54:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/journal/2025-in-review/health-and-fitness/'/>
            <summary type="html">A couple of marathons, a bicycle tour, and… passing out and going to the ER. What a year.
</summary>
            <content type="html">
               <![CDATA[<p><i>A couple of marathons, a bicycle tour, and… passing out and going to the ER. What a year.
</i></p><p><b><a href='https://v4.chriskrycho.com/2018/assumed-audiences.html'>Assumed audience</a>:</b> People who like reading year-in-review summaries. (I always assume that’s mostly just me, a few years in the future!)</p>
<p><b>A bit of context:</b> For many years now, I have made it my habit to write up one of these summaries. In this case, I have tried to make it a bit more digestible by breaking into smaller chunks. All of the posts are available at the <a href="https://v5.chriskrycho.com/journal/2025-in-review/">2025 in Review</a> series page.</p>
<hr/><p>This was perhaps the strangest year in memory for me in terms of health and fitness. On the one hand, I spent a big part of the year dealing with ongoing challenges related to a herniated disc. On the other hand, <em>despite</em> those challenges, I ran my first two marathons and they went smashingly well, and I also completed the longest bike rides I have ever done.</p>
<p>Last October, I started lifting weights as part of an effort to avoid injury, and ended up hurting myself quite badly. It turns out that single-leg Romanian dead lifts are best approached very carefully, with someone who knows what they’re doing, and at much lower weights than I used. The resulting herniated disc left me with both acute and chronic problems that affected the rest of last year and much of this year.</p>
<p>My plan at the start of the year was:</p>
<ul>
<li>Run the Denver Colfax Marathon and see what the marathon is like (my<span class="push-single"></span> <span class="pull-single">‘</span>A’ race for the spring).</li>
<li>Participate in the Courage Classic fundraiser cycling tour, riding the long routes if possible.</li>
<li>Run the Indianapolis Monumental Half Marathon event (my<span class="push-single"></span> <span class="pull-single">‘</span>A’ race for the fall).</li>
<li>Stay at my target weight.</li>
</ul>
<p>The injury meant that this did not quite go to plan. The target weight bit I pretty much nailed. The rest of it, well… let’s get into it.</p>
<hr>
<p>All last winter and spring I worked on slowly healing up from the herniated disc — in part by training. My physical therapist and the orthopedic specialist I saw agreed that as long as running was helping and not hurting, I not only could but <em>should</em> keep doing it. Over the course of the late winter and spring, running was great, and my back issues and associated sciatica slowly improved. By March or so, I felt normal, and was turning in training runs that had me hopeful for my marathon debut. When I actually ran the race, it went better than I even hoped. I ran it only 3 seconds per mile slower than I ran the <em>half marathon</em> event at Colfax in 2024, and notably faster than any half marathon pace I had <em>ever</em> run before 2024. There’s a more detailed race report <a href="https://v5.chriskrycho.com/journal/2025-colfax-marathon-race-report/">here</a> if you want more details!</p>
<p>After a breather, I started working on building toward the Courage Classic fundraiser bicycle tour and my fall<span class="push-single"></span> <span class="pull-single">‘</span>A’ race of the Indianapolis Half Marathon. I had <em>so</em> much fun with Colfax that I started mulling on running the Boulderthon Marathon as a<span class="push-single"></span> <span class="pull-single">‘</span>B’ race. And then, the day after a slightly-too-long bike ride to celebrate my birthday — a long ride has become a tradition for me over the past few years — my back flared up badly again. This time, it turned into awful overnight sciatica that meant I was sleeping only about <dash-wrap>5½ – 6</dash-wrap> hours per night throughout much of June and July, which in turn made training quite difficult as fatigue piled up.</p>
<p>I ended up taking some time off as I started getting physical burnout symptoms, and managed to ride the Courage Classic well — doing the 60 net-downhill miles of the 80-mile long on the first day (not doing the climb back up over Vail Pass, because I thought I probably could but would risk exacerbating injury) and the normal “medium” 40-ish-mile course the second day, and it felt great.</p>
<p>I chose at that point not to try to <em>race</em> the Boulderthon Marathon event in the fall, but to leave open the options of running it at an easier pace or of dropping down to the half marathon distance — either way, still aimed at Indianapolis. I started a proper half marathon training plan a week or so later, and things went pretty well for a while.</p>
<p>In the end, I ran the Boulderthon Marathon event, <em>not</em> racing it, but treating it as a very long fitness-builder workout: alternating two kilometers easy, one kilometer at marathon pace. The last few miles I was a little tired, but nothing to write home about — indeed, it was easier than many other workouts I had done. I ended up finishing at 2:54:57, averaging a 6:40/mile pace, which surprised me for how fast it was — I had gone out expecting to finish right around the 3 hour mark — but perceived exertion had felt right and heart rate agreed that I was <em>not</em> over-doing it.</p>
<p>The next week I participated in a race as a pacer for the first time, running with another guy for the lead pace group at the Colorado Springs Half Marathon. Pacing was a <em>blast</em>, and I definitely hope to do more of it in the future. It was really cool having folks at the end tell us that they hit their goals because we were there to run with, or to chase, or to just-barely-hang-onto at the tail end of the race. I have never run with a pacer group when racing — at first because I was just trying to find my own pacing, but then because I have been faster than any available pace groups for a long time (not bragging, just the facts), so I had never really experienced that dynamic. It was quite rewarding, and races are fun to participate in even when not racing, so I expect to do more of this!</p>
<p>However, in the weeks before those two races, I was getting a bunch of nagging fatigue and near-burnout symptoms again, even though I was<span class="push-double"></span> <span class="pull-double">“</span>only” doing a (hard) training build for a half marathon. The two days after the Colorado Springs Half, I felt <em>bad</em>, even though the half had been one of my easier long runs in weeks, and didn’t directly leave me feeling fatigued at all. After talking with Jaimie and various other friends, and considering, I decided to pull the plug and not run Indianapolis after all. A bunch of things about my body were just indicating that I was a bit overcooked and needed to back off.<span class="push-double"></span> <span class="pull-double">“</span>Better to stay healthy and run another year”, I thought.</p>
<p>This proved an <em>extremely</em> providential decision, albeit an ironic one.</p>
<hr>
<p>That very next Saturday, I had to pull our ~55-pound dog away from something nasty in the yard, because her collar was off and my wife couldn’t get the dog away from it. Even though I tried to use my legs rather than my back, I ended up with a classic lift-and-twist motion, and I felt my back <em>pop</em> in a very bad way, and it immediately started tightening back up. I knew this was the herniated disc flaring up again. I tried to walk enough and stay mobile enough to keep it from getting worse, and for the rest of the day, it seemed like it was bad but not terrible.</p>
<p>It got worse, though: the next morning I rolled out of bed — literally rolled, because the pain was pretty bad when I tried to sit up at all — and then tried to carefully stretch and get up off the floor so I could go to the bathroom. The pain was so agonizing that it took me several tries over the course of a few minutes to find a way to lever myself off the floor and walk into the little water closet in our master bathroom. Once I was standing, the pain diminished a ton, which seemed like a positive sign, until I walked into the water closet and flipped on the lights and discovered that the wall was swimming in front of me.<span class="push-double"></span> <span class="pull-double">“</span>That’s weird, doesn’t seem good…” I thought, and then then next thing I knew I was on the ground looking up at the toilet instead of down at it.</p>
<p><a href="https://www.mayoclinic.org/diseases-conditions/vasovagal-syncope/symptoms-causes/syc-20350527">Vasovagal syncope</a> is a reaction — sometimes an overreaction — to certain triggers. Your heart rate and blood pressure drop dramatically, and you can faint as a result. This is what happens when people pass out at the sight of blood, for example. This is why the advice is to put your head between your knees or lie down if you start feeling that way. But vasovagal syncope is also a natural response to overwhelming pain. When I stood up and the pain seemed to drop dramatically, it wasn’t because the pain was gone. It was because the reduced blood flow to my brain meant I wasn’t processing it consciously in the same way, and was indeed short on consciousness in general. I had never passed out before! It was novel! It was not fun. I would not recommend it.</p>
<p>I let out some loud, distressed noises, and — not yet realizing what the underlying mechanics here were — tried to get off the floor again. Jaimie came over, hearing me calling out, and I explained that I had passed out. Again, I found that straightening normally was impossible because excruciating, but that if I levered myself <em>just so</em>, I could get to vertical. But when I got to vertical, I was immediately extremely dizzy and saw the room starting to spin, and said,<span class="push-double"></span> <span class="pull-double">“</span>Nope, I’m going to pass out again if I stay on my feet.” I carefully laid myself down on my back — the one position that only hurt a <em>lot</em> instead of <em>unbearably</em>, and told Jaimie we needed to call 911. Also new to me!</p>
<p>I ended up going to the hospital in an ambulance (also new to me!) and getting my first-ever dose of morphine to deal with the pain (also new to me!) and getting a <abbr title="computed tomography">CT</abbr> scan to make sure I hadn’t fractured part of my spine, which thankfully I had not. Then, with a new prescription of steroids to help address the inflammation around the nerve and advice to cycle ibuprofen and acetaminophen, I was discharged and sent home. Since then, I have been working with a good pain management doctor, several physical therapists, and an orthopedic specialist to get healthy.  I have confirmed via <abbr title="magnetic resonance imaging">MRI</abbr> that there is nothing else abnormal going on — just a worsened version of the same disc herniation from a year ago.</p>
<p>Things are all tracking the right direction, albeit more slowly than I would like. I got to the other side of <em>horrific</em> sciatica that followed the initial injury — I was sleeping only <dash-wrap>4&thinsp;&ndash;&thinsp;5</dash-wrap> hours a night for about a month — courtesy of a central nervous system depressant that I’ll be on for at least a few more months. I am back to running — training, with help from a coach, for a very relaxed time at the Boston Marathon, and holding the whole thing with an open hand because I’d rather be healthy than run it. There’s always another year, as I was telling myself about Indianapolis just before this happened! (I was grateful that I had already reconciled myself to not running Indianapolis when the injury happened.<sup class="footnote-ref"><a href="#fn1" id="fnref1">1</a></sup>) I am able to sit for a few hours at a stretch again, I no longer require pain meds most days or nights, and I am sleeping well. I’m on the mend.</p>
<p>And I’m doing a lot of Pilates, and expect I will be forever, as the only shot I have at not going through this and worse in the future.</p>
<hr>
<p>To wrap this up on a more positive note, a few notes on what I learned about myself as an athlete this year — </p>
<p>One of the big things I took away from the combination of the two marathons was that <em>this</em> is what my body loves. I have known for years that I am much more of a<span class="push-double"></span> <span class="pull-double">“</span>slow twitch”, aerobic runner than a<span class="push-double"></span> <span class="pull-double">“</span>fast twitch”, anaerobic runner. (Even today, I have friends I am minutes per mile faster than in a long race, but who can handily outrun me over short distances.) From the start of running seriously, my body responded very quickly and effectively to aerobic training. Meanwhile,<span class="push-double"></span> <span class="pull-double">“</span>tempo” and speed work have been difficult and the rewards from them have come very slowly. This had long made the half marathon a sweet spot for me, because it is a largely aerobic event, though one that burns an awful lot in the last few miles in particular, and that as a friend put it to me a few days ago<span class="push-double"></span> <span class="pull-double">“</span>still feels like racing” because it has a real speed component.</p>
<p>What is more, shorter distances have always just been brutally painful for me, because they push into speed territory that makes my (very mild) exercise-induced asthma flare up. Everyone hurts during faster races, but the chest pain I get is <em>awful</em>, and it always has been. I had to have an inhaler to be functional in high school football workouts, and while I don’t need one today, I do still get that agonizing, bent-over-and-cannot-continue pain when I am pushing into those ranges today. The workouts where I am likeliest to have to<span class="push-double"></span> <span class="pull-double">“</span>pull the plug” are those where I am running <abbr title="5 kilometer">5K</abbr> pace or faster and it’s cold.</p>
<p>Going into this year’s training, then, I knew that I perform very well aerobically, and that my body has always responded extremely well to aerobic training, and that I have managed to use speed work well <em>enough</em> to turn that aerobic talent into fairly fast (for amateurs!) times in half marathons. I did not know what to expect from the experience of running a marathon by comparison. What I learned is: my body <em>loves</em> marathon training and racing. The whole thing felt like I had finally found what I am best-suited-for in running. A friend got a video of me running by at mile 16 of Colfax, and I was working, but I was working in a comfortable, at-ease way I have never felt in any other context, and having a blast.</p>
<p>I’m hopeful, looking forward, that I’ll be healthy enough to run a race <em>hard</em> again in the fall. In the meantime: onwards, <em>carefully</em>.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<h2 id="footnotes"><a class="header-anchor" href="#footnotes">Notes</a></h2><ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Counterfactuals: it’s possible I would not have gotten injured this way at all if I had <em>not</em> made that decision, of course. I might well have been out on a long run that morning; certainly the timing and dynamics of the issue with the dog would have been completely different. It’s also possible that the <em>letdown</em> from taking a few days off combined with the dog situation to cause the herniation to flare up. But it’s impossible to know, and I am not worried about it, even if I have considered it with some bemusement. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%202025%20in%20Review%3A%20Health%20and%20Fitness">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="annual reflections"/><category term="fitness"/><category term="health"/><category term="running"/></entry><entry><id>https://v5.chriskrycho.com/notes/a-feed-bug-i-keep-tripping-over/</id><title type="html">[notes] A Feed ‘Bug’ I Keep Tripping Over</title><published>2025-12-29T09:32:00.000-07:00</published>
            <updated>2025-12-29T09:51:00.000-07:00</updated>
            <link href='https://v5.chriskrycho.com/notes/a-feed-bug-i-keep-tripping-over/'/>
            <summary type="html">Or, one of the limitations of using version-controlled plain text as a content management system.</summary>
            <content type="html">
               <![CDATA[<p><i>Or, one of the limitations of using version-controlled plain text as a content management system.</i></p><p>A little bit ago, I changed the <abbr title="universal resource locator">URL</abbr> for <a href="https://v5.chriskrycho.com/journal/friendly-little-wrapper-types/">a post</a> I published on Saturday so the <abbr>URL</abbr> would match the title of the post. I renamed the source file, which my static site generator uses to generate the slug automatically, and added a redirect to my <a href="https://render.com">Render</a> config. Unfortunately, I forgot one important step in the rename process: adding a bit of metadata to the renamed post (which I name <code>feedId</code>) to match the original slug so that it would not be treated a new feed entry by subscribers to the feed.</p>
<p>The net was that the same blog post showed up for any of you reading along in feed readers or via email subscription, for which I apologize!</p>
<p>The<span class="push-double"></span> <span class="pull-double">“</span>bug” to which the title of this post refers is really both a limitation of the current implementation of my website and a generally challenging design issue for website generators that use plain text files in a version controlled repository to build the site, rather than a more traditional <abbr title="content management system">CMS</abbr>. In a traditional <abbr>CMS</abbr>, most posts have a unique identifier living in a database — an identifier that is stable regardless of the title or slug of the post. In a well-behaved <abbr>CMS</abbr><span class="push-single"></span><span class="pull-single">’</span>s feed generator that identifier (or one derived from it) is also the identifier for the feed item, which prevents this issue from showing up.</p>
<p>With plain text files on disk as the source of truth, though, no such stable identifier exists, at least by default! This makes it much harder to avoid accidentally doing what I did when renaming a file. I can certainly think of process- or tool-based ways to do it, including making your site generator smart enough to handle everything involved with this kind of rename and only conducting renames using the site generator. (This is probably what I will do with the next version of my site, with a generator I have built from scratch for my own purposes.) With a<span class="push-double"></span> <span class="pull-double">“</span>general-purpose” site generator like <a href="https://www.11ty.dev">the one I currently use</a>, though, this is a pretty difficult problem to solve robustly. I<span class="push-double"></span> <span class="pull-double">“</span>just” have to remember.</p>
<p>This post is thus three things:</p>
<ul>
<li>A <em>mea culpa</em> for my readers.</li>
<li>An explanation of the basics of the underlying issue for other folks out there.</li>
<li>A way of trying to make this problem<span class="push-double"></span> <span class="pull-double">“</span>stick” in my mind a bit better for as long as I am using my current site generator.</li>
</ul>
<hr/><p>
                     Thanks for reading my feed! Thoughts, comments, or questions?
                     <a href="mailto:hello@chriskrycho.com?subject=Re%3A%20A%20Feed%20%E2%80%98Bug%E2%80%99%20I%20Keep%20Tripping%20Over">Shoot me an email</a>!</p>]]>
            </content><author>
   <name>Chris Krycho</name>
   <email>hello@chriskrycho.com</email>
   <uri>https://v5.chriskrycho.com/</uri>
</author><category term="software development"/><category term="web development"/><category term="site meta"/></entry></feed>
