Sign in

Chris Krycho

@chriskrycho.com
1.8K followers 140 following 2.9K posts

Anglican Christian. Software engineer, composer, theologian, writer, runner, photographer. Platform engineering at Vanta. Co-author of the Rust book. Previously front-end platform at LinkedIn; Ember TS & Framework teams alum. → chriskrycho.com

PostsRepliesMedia
Chris Krycho @chriskrycho.com · 17/09/2026
I have a new test for ML training, one waaaaaay harder than the “pick all the pictures of a (bridge|truck|etc.)”: Actually find these unread comments in a Google Doc.
The Google Docs unread-comments icon, showing two unread comments.
030
Chris Krycho @chriskrycho.com · 10/09/2026
Aside: this isn’t a new theme for me! I said exactly this in a talk back in 2024! v5.chriskrycho.com/elsewhere/cutt….
Screenshot of text that reads, “Bake the concept of peer dependencies into your language and package tooling. Make it easy for library authors to check their compatibility with a whole array of different versions of a framework, and for application developers to pick one of those supported versions, and for all of this to be automate-able. No ecosystem has really solved this yet. If you get it right, though, it will make it much easier for your ecosystem to evolve over time.”
000
Chris Krycho @chriskrycho.com · 03/09/2026
We rewrote one internal tool to use Rust (instead of TS/Node) as a proof of concept/trial balloon, and yesterday switched over one of our hourly jobs to use it instead of the TS version that it had been using. Over 10× better memory usage and 10–100× improvement in how fast it runs. 🤩
Bar graph showing timing of an hourly pipeline. It shows a relatively steady state, some growing outliers, and then a huge drop to a new steady state baseline.
2245
Chris Krycho @chriskrycho.com · 03/08/2026
New book day is always a good day. I read the Jacobs volume on my Kobo via Libby in July and liked it so much that I had to order a physical copy. Meanwhile I’ve had the Webster volume on my back catalog for ages and—inspired by Jacobs’ strong encouragement to read by Whim—went ahead and snagged it.
Two books sitting next to each other on a table: Alan Jacobs’ The Pleasures of Reading in an Age of Distraction and John Webster’s The Domain of the Word.
130
Chris Krycho @chriskrycho.com · 29/07/2026
Sometimes you just need a good cup of coffee midday. More often when you accidentally forgot to have your normal morning cup. 😆☕️
020
Chris Krycho @chriskrycho.com · 03/07/2026
Definitely still some funky rendering bugs in Golden Gate. Look at how the classic tab text rendering is broken. 🥴
Screenshot of the macOS Terminal app’s settings pane, with most of it dimmed, showing the text rendering for the tabs being misaligned.
000
Chris Krycho @chriskrycho.com · 05/06/2026
Yeah, this (non-dismissible? I cannot tell) “assistant” view that makes it impossible to actually read the paper is totally want I want to see when I open a page for the paper. As we said in middle school a long time ago: NOT! Note to self: redirect from alphaXiv to arXiv. 😮‍💨
Screenshot of an iPad Safari window showing a paper displayed on alphaXiv, with the PDF shrunk to the point of illegibility while a chat-style assistant dominates the UI layout.
210
Chris Krycho @chriskrycho.com · 04/06/2026
A most excellent birthday present from my wife! Looking forward to toasting 39 with this tonight.
Picture of a box of Lagavulin Islay Single Malt Scotch Whiskey—The Distiller’s Edition sitting on a kitchen table; there is a bow on top.
3185
Chris Krycho @chriskrycho.com · 04/06/2026
At no point has True Myth ever seen explosive growth. Just very slow and steady uptake since @benmakuh.com and I started building it all the way back in September 2017.
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.
120
Chris Krycho @chriskrycho.com · 28/05/2026
Had cause to make this just now at work 😂
Astronaut shooting astronaut meme, with the astronaut looking at Earth saying “Backwards compatibility is the hard part?!?” and the astronaut shooting saying “Always has been.”
050
Chris Krycho @chriskrycho.com · 27/05/2026
Seen just now in work Slack. 😂 Is this winning? I think it is.
Screenshot of part of a Slack message; it reads “cc @Chris Krycho for all things code quality”.
190
Chris Krycho @chriskrycho.com · 07/05/2026
This is *wild*. Somebody at Rover is hopefully mashing a rollback button very hard right now. It looks like it’s like it’s using hashed/short strings for the copy instead of fallback text—i18n keys, maybe? 🥴
Screenshot of the Rover.com booking UI showing six-character random strings on every button and field instead of normal copy text.
050
Chris Krycho @chriskrycho.com · 18/02/2026
As is my long habit, I am signing out of social media for Lent. I’ll (presumably!) be back after Easter Sunday. In the meantime, I’ll leave you with the Collect for Ash Wednesday—one of my favorite of the Collects of the whole Christian year. Grace and peace to all of you.
Selection from the 2019 Book of Common Prayer which reads, “Almighty and everlasting God, you hate nothing you have made, and you forgive the sins of all who are penitent: Create and make in us new and contrite hearts, that we, worthily lamenting our sins and acknowledging our wretchedness, may obtain of you, the God of all mercy, perfect remission and forgiveness; through Jesus Christ our Lord, who lives and reigns with you and the Holy Spirit, one God, for ever and ever. Amen.”
071
Chris Krycho @chriskrycho.com · 11/02/2026
Less crappy version of the image here (Datadog happened to be refreshing its view when I snagged the screenshot and I didn’t notice)!
A line chart showing many lines, each representing the time take to type check a package, all decreasing over a one-month span.
250
Chris Krycho @chriskrycho.com · 11/02/2026
Our tsgo adoption at Vanta has been pretty high-impact. Everything is so, so much faster now.
A line chart showing many lines, each representing the time take to type check a package, all decreasing over a one-month span.
3323
Chris Krycho @chriskrycho.com · 27/01/2026
Tell me you were a Windows app first and are don’t know what things are on the Mac without telling me. (It’s the *Menu* Bar.)
A settings label with the text "Show in Status Bar" with an icon showing a Mac Menu Bar.
040
Chris Krycho @chriskrycho.com · 21/01/2026
Listening to the excellent-as-always The Rest is History series on Joan of Arc, and learning a ton from it, but I keep having images like this flash into my mind as they talk through the campaigns…
Screenshot from the Joan of Arc campaign from Age of Empires II
250
Chris Krycho @chriskrycho.com · 12/01/2026
What I *really* want is the stuff the good folks at ersc.io are cooking up for #jjvcs, but that’ll have to wait a bit longer yet.
1100
Chris Krycho @chriskrycho.com · 25/12/2025
Merry Christmas! “Glad tidings of good news,” as a mighty host once declared to a bunch of people on the fringes: for so, it turns out, we must all see ourselves to be. Not mighty, not deserving, but much in need in every way—and by no doing of our own, delivered. Mystery, wonder, glorious hope.
Isaiah 9:2–7 laid out in centered, gray serif type, which reads:

The people who walked in darkness
    have seen a great light;
those who dwelt in a land of deep darkness,
    on them has light shone.
You have multiplied the nation;
    you have increased its joy;
they rejoice before you
    as with joy at the harvest,
    as they are glad when they divide the spoil.
For the yoke of his burden,
    and the staff for his shoulder,
    the rod of his oppressor,
    you have broken as on the day of Midian.
For every boot of the tramping warrior in battle tumult
    and every garment rolled in blood
    will be burned as fuel for the fire.
For to us a child is born,
    to us a son is given;
and the government shall be upon his shoulder,
    and his name shall be called
Wonderful Counselor, Mighty God,
    Everlasting Father, Prince of Peace.
Of the increase of his government and of peace
    there will be no end,
on the throne of David and over his kingdom,
    to establish it and to uphold it
with justice and with righteousness
    from this time forth and forevermore.
The zeal of the LORD of hosts will do this. (ESV)
120
Chris Krycho @chriskrycho.com · 19/12/2025
Things that make no sense in TrainingPeaks: Why can you select multiple laps but it doesn’t actually… select them or let you see their combined data?!?
Screenshot of the lap data and lap selector in the analysis view in TrainingPeaks, showing three laps selected, but only one highlighted, and only that lap’s data shown in the lap data pane.
110
Chris Krycho @chriskrycho.com · 18/12/2025
Excellent @oxide.computer / @bcantrill.bsky.social jokes happening in a private watercooler chat at Vanta right now. (It’s my fault: I started it with “DO WE GET TO BUY AN OXIDE RACK? TELL ME WE DO. PLEASE.” an hour ago.)
170
Chris Krycho @chriskrycho.com · 14/12/2025
Did some dev tools debugging and I don’t know why this is happening, but it sure seems like a problem on the 1Password extension side of things. Bad build? Unclear It’s been acting this way for me for months, though.
Screenshot of a dev tools error view that starts with “Error: LocaleProvider not found in React component tree” and shows a stack trace.
100
Chris Krycho @chriskrycho.com · 10/12/2025
The funny thing to me about the “Increase Contrast” setting on macOS 15 (Sequoia) is… if it *didn’t* turn on these outlines, it would just look a lot more like a normal version of macOS from just a few years ago! Maybe Stephen Lemay can bring some contrast back. 😂
Screenshot of the Settings app on macOS 15.7.1 showing the Accessibility pane with “Increase contrast” enabled, showing outlines around everything but also higher contrast otherwise.
000
Chris Krycho @chriskrycho.com · 06/12/2025
I note that you *may* not see it correctly, because of caching! Here’s what it looks like:
Image that includes the following text: “True Myth 9.3.0
A new inspect method, some bug fixes, and some documentation fixes.
Sym·poly·mathesy
by Chris Krycho“

The “fi” ligature is very obviously not used.
000
Chris Krycho @chriskrycho.com · 27/11/2025
I think it looks really nice!
Screenshot of the website design, with serif and sans-serif text.
010
Chris Krycho @chriskrycho.com · 25/11/2025
Here’s a tiny sample of how that looks in practice:
Code sample that reads, “import type Maybe from 'true-myth/maybe';

const log = (value: unknown) => console.log("The value:", value);
const randomInteger = () => Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);

const finalMaybe = Maybe.of(randomInteger())
  .inspect(log)
  .map((n) => n % randomInteger())
  .inspect(log)
  .andThen((n) => n % 2 === 0 ? Maybe.just(n / 2) : Maybe.nothing())
  .inspect(log);”
100
Chris Krycho @chriskrycho.com · 25/11/2025
@kagi.com Heads up (you probably already know, but just in case)—Orion 1.0 is failing to launch for me with “Update Error! An error occurred while parsing the update feed.” 😬
A macOS error dialog with the Orion browser logo and the message, “Update Error! An error occurred while parsing the update feed.” The button reads “Cancel Update”
100
Chris Krycho @chriskrycho.com · 13/11/2025
Definitely perfectly describing my experience working with the TS compiler APIs here. I feel seen. 😆
000
Chris Krycho @chriskrycho.com · 01/11/2025
One of my favorite pictures from the past year, snapped by a friend, at another friend’s 40th birthday party themed as a millennial prom: dancing with my most excellent wife. Sixteen years married and it’s very good.
A man and a woman dancing romantically in a dark room with brightly colored lights.
0160
Chris Krycho @chriskrycho.com · 31/10/2025
bsky.app/profile/musi... is the post with the embed; note that it *should* look something more like the attached image at this point.
010
Chris Krycho @chriskrycho.com · 24/10/2025
Well this is hilariously broken.
The UC Health website displaying the welcome page for Microsoft IIS server tech.
120
Chris Krycho @chriskrycho.com · 25/08/2025
In concrete terms: define a schema with any of those libraries, use our `parserFor` or `asyncParserFor` functions and associated types, and then use them interchangeably. These screenshots from the blog post capture it well: Standard Schema plus True Myth means you get one clean interface!
010
Chris Krycho @chriskrycho.com · 19/08/2025
…means you just wouldn’t write it the same way. You *can* do that in JS, buuuuut… And those languages often have better affordances for “monadic pipelining”—`do` notation in Haskell, `?` and `await` in Rust for the most common cases, etc. Doing it in JS *works* but is always less elegant.
010
Chris Krycho @chriskrycho.com · 11/08/2025
One of my favorite “did no one think this through at all?” things about Google Docs: these two buttons do the same thing. They’re… completely unlike each other, in position and presentation. Why? Lol. It’s Google Docs!
A screenshot of a Google Docs page with red circles around the buttons for hiding the outline view and hiding the comments view.
110
Chris Krycho @chriskrycho.com · 29/07/2025
Maximum Dad Energy trolling my 13-year-old daughter here.
Screenshot of iMessage conversation. The poster’s daughter asks, “May I pls have Creative time”. The poster responds, “Not with that kind of typing!” His daughter replies, “Okay Daddy. May I please have creative time?” He responds, “Indeed! Correct grammar and punctuation is the way to my heart. 😁”
220
Chris Krycho @chriskrycho.com · 26/07/2025
An “easy” way to think about it is: the cropped version is still higher-resolution than the 6K displays out there, and much higher resolution than a 4K display, whereas the full resolution version is about 25% higher-resolution than an 8K TV. This image is accurate (I just made it)!
Illustration of the relative sizes of HD (1920×1080), 4K (3940×2160), the APS-C crop of a Sony α7R V (6240×4160), 8K (7680×4320), and the full frame size of a Sony α7R V (9504×6336).
110
Chris Krycho @chriskrycho.com · 18/07/2025
Ooooooh! First #JujutsuVCS integration in @kaleidoscope.app dropped in their 6.1 release! #jj
Screenshot showing Kaleidoscope app release notes, with a red box drawn around the following text to emphasize it: “Basic Integration with the Jujutsu (jj) version control system.
• Jujutsu is listed in the Integration window with information how to set up Kaleidoscope as diff and merge tool with jj.
• Changesets opened through jj diff or jj interdiff now show a bit more context.”
020
Chris Krycho @chriskrycho.com · 06/07/2025
I’ve been using RustRover from JetBrains this weekend, and I was reminded that JetBrains is still basically the only company out there that has a subscription model that actually respects its users. So I wrote about it! v5.chriskrycho.com/notes/subscr...
040
Chris Krycho @chriskrycho.com · 03/07/2025
Out today: I’m in Christianity Today’s July/August 2025 issue on intelligence (artificial and human) and the imago dei—
Screenshot of text that reads “Even this is reductive, though. It treats intelligence as a matter of facility. Living beings and humans in particular are not mere task-accomplishing machines. We have greater purposes. Playing games around a table does not “accomplish a task.” Neither does loving someone!

Thus, we cannot say what intelligence per se requires of us. Not only does intelligence belong in different measures and wildly differing functions to many kinds of creatures; it is also the wrong starting point for thinking about ethical obligations.

In fact, treating others’ intelligence as the basis of our ethical duties to them is perverse. This would imply that the more intelligent someone is, the deeper the obligation—and vice versa. Unborn infants, people suffering from progressive dementia, and severely mentally handicapped people would require less of us than a brilliant mathematician, scientist, composer, or poet. But our Lord teaches us the opposite: Whatever we have done to the least of his brothers and sisters, we have done to him (Matt. 25:40). Christians treasure and value humans of every capacity, not fixating on things like intellectual giftedness.”
120
Chris Krycho @chriskrycho.com · 01/07/2025
Oh look, Clippy is back, this time in Google Docs, and you can’t turn it off. 😑
Screenshot of a blank Google Docs document with AI suggestions for “Generate document” and “Help me write” along with non-AI “Templates” and “More”.
220
Chris Krycho @chriskrycho.com · 28/04/2025
…mean some paragraphs end up a solid 2–3em narrower than those above or below them. It’s visually jarring and feels like a mistake. I’ve attached the same section of v5.chriskrycho.com/essays/the-l... with and without `text-wrap: pretty`, which I think shows it pretty clearly. The same effect is…
100
Chris Krycho @chriskrycho.com · 05/03/2025
I am signing out of social media for Lent, as I do also during Advent and at least once in mid-summer. If you’d like to keep up with my work in the meantime, see chriskrycho.com – in particular, v5.chriskrycho.com/feed.xml will serve you well. 😉 Grace and peace to all of you! See you in Eastertide!
The First Day of Lent, Commonly Called Ash Wednesday. The Collect. Almighty and everlasting God, who hatest nothing that thou hast made, and dost forgive the sins of all those who are penitent: Create and make in us new and contrite hearts, that we, worthily lamenting our sins and acknowledging our wretchedness, may obtain of thee, the God of all mercy, perfect remission and forgiveness, through Jesus Christ our Lord. Amen.
040
Chris Krycho @chriskrycho.com · 03/03/2025
This is not an unreasonable change, but it is also not a minor release: It’s not backwards compatible! The API of a tool like rustup is its CLI! This should have been a 2.0 release if they were going to do it, and if they didn’t want to make a breaking change release, they shouldn’t have done this.
240
Chris Krycho @chriskrycho.com · 20/02/2025
At a personal/professional level, having gotten to help *ship* this thing, by doing prepping the Book for the Edition and delivering a new (now stable! Go read it!) chapter on #async programming in #rustlang was huge. This is never going to stop being amazing to me.
Screenshot of the landing page for The Rust Programming Language book, featuring its normal text; the authors list includes “and Chris Krycho”, highlighted in yellow.
3210
Chris Krycho @chriskrycho.com · 18/02/2025
A couple weeks ago I discovered the twitter:label1 and twitter:data1 (and the corresponding `2`) meta tags, and wrote up a note about them. Now my post about them is the second hit on DuckDuckGo and is on the first page (whatever that means these days) of Google. Blog things! It’ll help people!
240
Chris Krycho @chriskrycho.com · 11/02/2025
Redesign looks good! One nit: justification is producing some nasty gaps. If you add `hyphens: auto` to the `article` definition, it significantly improves it!
120
Chris Krycho @chriskrycho.com · 06/02/2025
I wish I could make everyone who is tempted to crap on “front-end complexity” really grok this post. The bit in the screenshotted text in particular! (Yes, many apps do things they don’t need to; yes, frameworks could be better; but also, a lot of the complexity actually cannot just be vanished.)
screenshot of text which reads “It’s hard work. It’s not cool. And I am nowhere near mastering it. I totally get it when people have an aversion to it, or think that the methods used today are wild. But mostly the methods are wild because the problem is, too. A straight-line solution to the problems of the front-end would be lovely, but those problems don’t really permit one.”
0196
Chris Krycho @chriskrycho.com · 05/02/2025
Back on January 1, I took this lovely photo shortly after getting up in the morning. Love to live here.
Mountains behind a lake, all very blue, in the early morning, with clouds drifting behind the lake and in front of the mountains.
183
Chris Krycho @chriskrycho.com · 14/01/2025
If you’re trying to do Git things with GitHub: no, it's not just you. www.githubstatus.com
170
Chris Krycho @chriskrycho.com · 07/01/2025
Your cursed intersection of JavaScript and Unicode for the day. You’re welcome.
A JavaScript code sample showing calling a function named try, and passing it a Promise which resolves to 'bwahahaha', producing a new value named `theTask`, and then calling a `match` method on `theTask`. However, the `try` function is italic instead of monospace: it is the Unicode italic characters 't', 'r', and 'y' rather than the normal characters for the same.
130