The Curious Engineer

All blogs / Software / engineering practice

Sympolymathesy, by Chris Krycho

v5.chriskrycho.com

Learning in public: on theology, technology, ethics, software, politics, art, and more.

Software / engineering practiceJavaScript / TypeScriptEssays / personalMusic

Posts
583 from 3 Apr 2021 to 25 Oct 2026
Posting
weekly (58 in the last year)
Kind
personal blog
Feed
https://v5.chriskrycho.com/feed.xml

2026 40

  1. [journal] 2026 Boulderthon Race Report
  2. [journal] 80/20 Endurance Norwegian Marathon Plan Review
  3. [library] Books That Formed Me Theologically
  4. [notes] Finding where an environment variable came from in fish
  5. [notes] Subvert.fm
  6. [notes] Withering
  7. [notes] Notes on dependencies, peer dependencies, etc.
  8. [notes] Why Post Dorico Tip Videos?
  9. [notes] Always A Mess
  10. [journal] Impressively Capable, Impressively Foolish
  11. [notes] New Book Day
  12. [notes] Keep Going
  13. [notes] Finishing Things
  14. [journal] You Can Rightly Judge Things You Have Not Tried
  15. [photos] Photos: Boston, April 2026
  16. [notes] Asking: Should I Take Notes on This?
  17. [library] turning barges
  18. [notes] On the Rust Book Maintenance
  19. [journal] Collaboratives: A Proposal
  20. [notes] Do Not Despair of Good Work
  21. [notes] Trying a New Approach to Note-Taking on Books
  22. [notes] true-myth.dev
  23. [notes] Experimenting with Pomodoro Timer Durations
  24. [notes] Multitasking
  25. [notes] An Ice Cold Take on CI Config Systems
  26. [notes] Crowd-Sourcing: Metaphors for LLMs and AI
  27. 2026 Boston Marathon Race Report
  28. recovery… is a hopeful act
  29. Humans Are Amazing
  30. Just Let Me Share a Silly Little App with My Friends, Okay?
  31. Noticing, and Solving, Technical Problems in a Codebase
  32. What Happened to February?
  33. Exporting Graphic Slices From Dorico
  34. Three Theses and Their Implications About Software Engineering
  35. The (Unreasonable?) Effectiveness of Writing Down Goals
  36. Thinking About Anything Besides the Big Thing Right Now
  37. creaturehood
  38. Why Not Astro (etc.)?
  39. 2025 in Review: Writing
  40. Computing, Convivially

2025 127

  1. 2025 in Review: The Rest of Life
  2. 2025 in Review: Professional
  3. 2025 in Review: Music
  4. “Invalid Email Address” Error in Apple Mail
  5. 2025 in Review: Health and Fitness
  6. A Feed ‘Bug’ I Keep Tripping Over
  7. Friendly Little Wrapper Types
  8. 2025 in Review: Public Speaking
  9. 2025 in Review: Reading
  10. The Late-2025 Void of Great Zero-Based Budgeting Apps
  11. Some of Us Actually Like Coding
  12. Pop-Overs
  13. Sony α7 4K60 and APS-C Crop
  14. Grateful (2025)
  15. Orion 1.0
  16. Bookshop.org Wish List Wish List
  17. True myth 9.3.0
  18. My CDN Subdomain Setup
  19. Espresso from Cinchona at Provision Bread & Bakery
  20. Notes and Work Notes
  21. Symphony No. 1, Mvt. III
  22. Birds
  23. J.R.R. Tolkien: Author of the Century
  24. Robin Sloan’s “Aspire” Zine
  25. Taxiing
  26. Dallas Wall
  27. Illusion
  28. A Good Drink
  29. Reversion to the Mean
  30. Write Good Commit Messages
  31. Writing and Revision Time
  32. Naming Policy: ‘Large Language Models’, Not ‘Artificial Intelligence’
  33. Context and Trust, or: Test Suites Reflect Teams
  34. Software, change, stability, imperfect markets…
  35. True Myth 9.1.0: Standard Schema and More!
  36. Who Wants an Oxide Rack?
  37. isolatedDeclarations and Zod
  38. Jj workshop
  39. CleanShotX: Another Example of a Good ‘Subscription’ Model
  40. Kobo and Instapaper Integration
  41. the way we use language
  42. jj tip: cool revsets and per-repo aliases
  43. Five is the Floor
  44. No Really, That Lens Is Huge
  45. Rain / Beach / Dog
  46. Subscriptions That Respect Users
  47. Downtown Denver Wall
  48. Torn
  49. Using light-dark() Instead of a Sass Mixin for Color Schemes
  50. Platform reality
  51. Some Products Just Aren’t Big Companies
  52. Telling
  53. git commit headers (not log headers)
  54. History and Disposition
  55. 2025 Colfax Marathon Race Report
  56. Infrastructure, Common Goods, and the Future of Open Source Software
  57. Tip: Apple Music Hides Deleted Albums
  58. The Git “Invalid username or password” error
  59. Using mise-en-place for dotfiles
  60. Next: Vanta
  61. Your Real Assumed Audience
  62. Own Your Music
  63. no efficiency… very little scalability
  64. Quoting Dan Moren on Apple’s Software
  65. Claude as a Better Grammarly?
  66. Miyazaki cyberpunk
  67. Sell your RSUs
  68. Marvel’s Missed Musical Opportunity
  69. Userscripts for macOS and iOS
  70. NodeWalker in JavaScript
  71. Lowercase Your Namespaces
  72. The Strangest Thing in Tech (Criticism)?
  73. Watership Down
  74. Downie + Overcast
  75. Show Up!
  76. Quoting jane scharl on poetry
  77. TypeScript Native Port: Some Questions
  78. The First Day of Lent, Commonly Called Ash Wednesday
  79. Yes, Hallucinations are the “Least Dangerous”—Exactly
  80. Cloudflare Worker Responses Require Manual Caching
  81. Why Hover for Domain Registration?
  82. Separation of Concerns
  83. fish tip: Launching $EDITOR to Edit the Current Terminal Command
  84. Axum Handler Errors Need to Implement IntoResponse
  85. How Progress Feels
  86. Indurate
  87. Prototyping/Sketching in Code
  88. Three Horses
  89. Robin sloan is it okay
  90. Options for libc with Rust
  91. Authoring This Site in Obsidian etc.?
  92. Tidy First? A Personal Exercise in Empirical Software Design
  93. Today I Learned: Redirect Emails
  94. Big Packages or Many Dependencies
  95. The twitter:label and twitter:data meta tags
  96. minijinja tip: Template Values Must Round Trip
  97. minijinja tip: What That Custom Function’s Type Error Means
  98. TypeScript 5.8 Checks Runtime Code for Conditional Types!
  99. Re-packaging Existing Content, Transformation, or Both?
  100. One Reason Job Hunting is Exhausting
  101. Snuggle Your Kids
  102. How I Use Freedom to Focus
  103. The Curse of Knowledge and True Myth’s Documentation
  104. Recovery Time as an Indicator of Fitness
  105. A Reasonable Error Printing Utility in TypeScript
  106. Retractions and Revisions: My Review of Real Essentialism
  107. mdBook tip: Redirects and the SUMMARY.md file
  108. jj tip: describe multiple revisions at once
  109. The Essence of Successful Abstractions
  110. Two Quotes and a Question on Software Engineering and AI
  111. Improving jj-gcp with JSON Schema and schemars
  112. A Little Soulver Coffee Calculator
  113. What Distinguishes Newsletters from Blogs?
  114. JavaScript’s Promise.race and Promise.all Are Not “Fair”
  115. Resilience, Robustness, and Competence Envelopes
  116. Against Hard-Wrapping Text Documents
  117. Momentum
  118. An Octopus That Will Not Be Tamed?
  119. jj tip: Squash Changes From Across a Revset
  120. Review: Scout Mindset
  121. Big Picture Planning Makes Little Picture Planning Easier
  122. Inspiration and the Subconscious
  123. This Is Not Your Last Job
  124. A Year of Shipping
  125. “Working Effectively” Instead of “Productivity”
  126. A Structure for Personal Reviews
  127. 2024 in Review

2024 18

  1. TrainingPeaks Virtual and Garmin TacX NEO Bike
  2. Deferred Conflict Resolution in Jujutsu
  3. Why the Jujutsu posts are all about differences from Git
  4. Jujutsu Megamerges and jj absorb
  5. macOS tip: Spell Check with ⌘: and ⌘;
  6. Psychological Benefits of Cool-Downs
  7. The Master and His Emissary: The Divided Brain and the Making of the Western World
  8. Mental State and Perceived Exertion
  9. rust-analyzer version via rust-toolchain.toml
  10. fish shell v4 beta 1
  11. Noteblogging
  12. Publishing to GitHub Pages via GitHub Actions
  13. Byword
  14. Real Essentialism
  15. StaffPlus NY 2024: Substrate Engineering
  16. Weeknote: June 30–July 5, 2024
  17. Seeing Like a Programmer (LambdaConf 2024)
  18. jj init

2023 4

  1. Journal: Next
  2. Whither Gradual Typing?
  3. Fanfare for a new era of american spaceflight live recording
  4. Feeds are Not Fit for Gardening

2021 1

  1. Motel Guest’s Only

Undated 393

  1. Shellcheck
  2. Configure Zed to Use the Project’s rust-analyzer
  3. Corrections: Using Drop Safely, Not For Safety
  4. Fast Forward “Merges” on GitHub
  5. To Throw or Not to Throw in TypeScript?
  6. jj tip: ignore gh-pages by default
  7. Buttondown’s Alternatives Page
  8. Runtime or Types?
  9. Mozi
  10. Read the Code: Using Drop Safely in Rust
  11. Mac App of the Year is… Lightroom?
  12. jj Tip: Rebase All Branches Matching a Revset
  13. Cargo semver checks v0.38.0
  14. Ghost (Instead of Substack)
  15. Implications of Plateauing LLMs
  16. Is Organic Social Media Dead?
  17. 2024 state of rust survey
  18. The Blue Oak Model License
  19. jj v0.24
  20. On cargo install Not Defaulting to --locked
  21. PSA: Default to cargo install --locked
  22. No AI on This Site
  23. Dprint
  24. The DefinitelyTyped dprint Setup
  25. brew services uses launchctl or systemctl
  26. Life Update, Advent 2024
  27. Apple Photos Shared Albums and JPEG XL
  28. React Hooks Are Indeed Not “Functional”
  29. New Tool: jj-gpc
  30. Rust test binary help output
  31. Read the Manual: id
  32. On My Current Writing Output
  33. A Note on Social Media Topics
  34. Read the Manual: lsof
  35. Read the Manual: pbcopy and pbpaste
  36. Read the Manual: uptime
  37. Read the Manual: rm
  38. Foodnoms
  39. Read the Manual: du
  40. I Won! 2024 Longview Half Marathon Race Report
  41. Read the Manual: cd
  42. Programming Language Learning: A Rant
  43. Read the Manual: last
  44. Race Report: 2024 Boulderthon Half Marathon
  45. Read the Manual: less
  46. Read the Manual: open
  47. Time
  48. A Long Kobo/Pocket Backlog
  49. PSA: Do Not Use Blockquotes for Admonitions
  50. Podcasts Are Audio Blogs
  51. Weeknote: July 6–13, 2024
  52. Fast Tools are Wonderful
  53. An Observation on Constructor Syntax
  54. Red Pen
  55. Weeknote: June 22–29, 2024
  56. Pest.rs’ Syntax Tree is Very Low-Level
  57. Weeknote: June 17–21, 2024
  58. Genuine Lowbrow Reading?
  59. Using cargo tree to Explain Dependencies
  60. Denver Colfax Half Marathon 2024 Race Report
  61. Microblogs Without Social Media
  62. How I Currently Use Social Media
  63. Your Talk Slides Should Be Progressive Enhancement
  64. You Have to Type It Out
  65. Async Rust Complexity
  66. Pro Eclecticism: A Rant
  67. Gut Feelings
  68. Garmin Training Status – A Complaint
  69. Being a Fast, Cogent Writer Is Useful
  70. A Sanctus for Epiphany
  71. One Problem With My Kobo Aura ONE
  72. 2023 in Review: The Rest of Life
  73. 2023 in Review: Professional
  74. 2023 in Review: Writing and Speaking
  75. 2023 in Review: Reading
  76. 2023 in Review: Sabbatical Report
  77. 2023 in Review
  78. Difficult
  79. Why Not OpenDoc-Alikes?
  80. Why Not Type-Based Overloading in Rust?
  81. The Wizardry Frontier
  82. Typographical and Musical Scales
  83. Past: Leaving LinkedIn
  84. Now: Sabbatical
  85. Next: Role?
  86. Confronted by Grace
  87. Seven Languages in Seven Weeks
  88. How to Do a TypeScript Conversion
  89. Where DRY Applies
  90. An Observation on Programming Pedagogy
  91. Versioning and Big Binary Blob Art Files
  92. The Good News that God Does Not Change
  93. Theology is not liturgy. But…
  94. Not Loving a Lens
  95. From Mount Muscoco (1)
  96. Autumn (2023)
  97. How do you make a charismatic thing?
  98. Do It the Dumb Way Sometimes
  99. Brain Rewiring in Progress
  100. Subscriptions Update
  101. Unmeasurable Costs and Benefits
  102. Hierarchical systems
  103. Tools for Thought, Not Shortcuts for Thinking
  104. Writing and Prestige-Building—A Reply to Will Larson
  105. Analytics for Sites With Tech-Savvy Audiences
  106. Just Keep Climbing
  107. Stay Curious About Your Tools
  108. the establishment of fellowship
  109. boundary-drawing and system design
  110. Unsafe
  111. Reflections on a Month with BBEdit and Nova
  112. Extended Time Off Report
  113. My Current Mac Stack
  114. Stocks, Flows, Resiliency, and Layoffs
  115. Quitting the Big Five—A Reply to Brad East
  116. Is TypeScript Good?—A Reply to Rach Smith
  117. Je ne sais quoi
  118. Fog and Bird
  119. Trying BBEdit and Nova
  120. On Ember’s New Major Version Cadence
  121. running / patience
  122. Sermon Notes
  123. Sanctification
  124. Writing Tools
  125. Be a quality detector.
  126. Is GitHub Copilot Any Good?
  127. About My Licensing Choices
  128. Did Not Start
  129. dimension change/code review
  130. Competencies
  131. blossoming
  132. spring evening
  133. Questions Posed
  134. Autumn Sunset
  135. Eagle on the Neighbors’ House
  136. ❡ Length: An Observation
  137. Fork Software More
  138. People, Strategy, Execution
  139. Feature Idea: Week-Level Smart Training Plans
  140. Blog-Gardening in Public
  141. Build Yourself Small Tools
  142. Initial Notes on Elicit
  143. Special Null Syntax vs. Types and Functions
  144. Product Idea: Meal Tracking for Athletes
  145. An Orchestra in My Pocket
  146. Generative Work and Productive Puttering
  147. Goal-Setting
  148. 2022 in Review: The Rest of life
  149. old truck
  150. 2022 in Review: Professional
  151. 2022 in Review: Public Speaking
  152. 2022 in Review: Writing
  153. 2022 in Review: Reading
  154. well, dang
  155. OPML Files as… Annotated Bibliographies?
  156. cold (2)
  157. Cold
  158. Patterns for “Smart” Components in Ember
  159. Supernote, Dropbox, and Transmit
  160. A UML Comeback?
  161. Reasoning About Reference Cycles
  162. Journaling, One Day Along
  163. Journaling
  164. John Cook and Brief Notes
  165. A Note on Life Stages
  166. creation, incarnation, art, vocation
  167. Writing Down What I Do—In Obsidian
  168. Dorico Tip: Solo Parts in String Sections
  169. Organizing Many Software Projects
  170. plane wing
  171. necessarily simple abstractions
  172. walking back to the hotel
  173. NYC, Looking Up
  174. Cloud tops
  175. Obsidian
  176. October Sunset
  177. Autumn on the Front Range (2)
  178. Autumn on the Front Range
  179. Inversion
  180. Trade-offs
  181. Marco’s Rule of Software Stacks (Expanded)
  182. Long and Short
  183. The Man from the Future
  184. Garden of the Gods
  185. the possibility of being caught off guard
  186. Open Source
  187. Flow State
  188. What Can I Do With 10 Minutes?
  189. Turning on Some Apple Accessiblity Preferences
  190. Thinking Out Loud on “Trauma”
  191. Some Thoughts on Zig
  192. A Pleasing Symmetry in Rust
  193. The Tamron 35-150mm 𝑓/2–2.8 Di III VXD
  194. The Sony Sonnar T* FE 55mm 𝑓/1.8 ZA
  195. The Sony α7 IV
  196. St. George’s Anglican Church
  197. Conditional Modifiers and Helpers in Ember
  198. Misusing TypeScript Assertion Functions for Fun and Profit
  199. SemVer for TS in Practice
  200. One challenge to the new moral science
  201. On Stationery
  202. A quarter-of-the-year check-in—
  203. Don’t Universalize from Your Own Experiences
  204. Volume
  205. through a small tree
  206. A question of authority
  207. Notes on Exposure Notifications
  208. Eternals
  209. the heart of the life of the Church
  210. Don’t Sprint the First Mile of a Half Marathon
  211. Program modifications at low cost?
  212. Tentative 2022 Reading List
  213. Buy Me a Book
  214. Reading Settings!
  215. Study
  216. 2021 End-of-Year Thoughts
  217. Courage
  218. how to sorrow/pilgrim knowledge
  219. “I cannot not be a creature made and called by God’s love”
  220. Small, Non-Trivial Projects for Learning
  221. 2022 Colfax Half Marathon Plan
  222. Rfc
  223. a moral undertaking
  224. Reading “A Functional Programming Language with Versions”
  225. Ember.js Template Imports: Part 6
  226. Ember.js Template Imports: Part 5
  227. Ember.js Template Imports: Part 4
  228. Ember.js Template Imports: Part 3
  229. Anki and Spaced Repetition
  230. Ember.js Template Imports: Part 2
  231. Ember.js Template Imports: Part 1
  232. …such is God’s mercy
  233. Reading for world-building
  234. Mall Sign
  235. The Sony α7C
  236. From the Visitor Center
  237. Cameras and Attention (Redux)
  238. God Without Measure: Working Papers in Christian Theology – Volume I: God and the Works of God
  239. …revelation disturbs
  240. Spiritual Experiences—Intellectual and Emotional
  241. Theological Anthropology Comes First
  242. What if PageRank Was a Mistake?
  243. Alley sunset
  244. Praising God
  245. MusicXML and Percussion Notation
  246. StaffPad to Dorico via MusicXML? Alas, no.
  247. StaffPad Versions
  248. creation is pure generosity
  249. ‘Life… finds a way.’
  250. Dinosaur National Monument
  251. My Current Photography Setup
  252. Revealed and Stated Preferences
  253. Late Afternoon Lake
  254. Two quotes on creatio ex nihilo
  255. Reread Books!
  256. Miscellaneous Updates
  257. not the imposition of an alien will
  258. exposition precedes disputation
  259. Balloons, of Course
  260. New Mexico Vacation
  261. The Best Brewery I Visited in ABQ
  262. Lone Cactus
  263. Ramen and Ribs
  264. Slow Burn Coffee
  265. Three considerations on reading the Bible
  266. Rio Grande Drainage
  267. Tiny Flowers for Color
  268. “…our enemies, sin, the curse and death, are beaten.”
  269. Progressive Disclosure of Complexity and Typed FP Languages
  270. Dogmatic portrayal of the canon
  271. Introducing “Heuristics for Good Software Design”
  272. Naming and Framing
  273. A Gap in (My Knowledge of) the Developer Productivity Literature
  274. A Useful Approach to Problem-Solving
  275. Scarcities
  276. I Am Not An Original Thinker
  277. A path away from Kant?
  278. Using Classes for Functional Programming
  279. God with us, God for us
  280. Just Write
  281. holiness and jealousy
  282. God as the Holy One and God as Redeemer and Saviour
  283. not primarily morally legislative but soteriological
  284. God is holy as he bends down to us in mercy
  285. Wrapping Up 2020 and Starting 2021
  286. thus… have we made the world
  287. the trap of thinking that we know what's going on here
  288. Understanding args in Glimmer Components
  289. all the difference in the world
  290. the requirement for theological reason
  291. an exercise of fellowship with the saints
  292. Ember Octane is a New Mental Model
  293. Reluctantly Returning to Social Media
  294. We speak in God’s presence
  295. reason is a field of God’s sanctifying work
  296. an exercise of holiness
  297. the unholy science?
  298. Mr. Penumbra’s 24-Hour Bookstore
  299. Notes on Thoughtbot’s “Stop Using 'any'”
  300. Writing Robust TypeScript Libraries
  301. Data Constructors, Part 2: Better TypeScript
  302. God teaches us
  303. Initializing Class Fields in Ember Octane
  304. Finding Holy in the Suburbs
  305. Politics & The Order of Love
  306. Things I Was Wrong About: Types
  307. Autotracking: Elegant DX Via Cutting-Edge CS
  308. A Chalcedonian conceptual grammar for love and justice
  309. All is broken and incomplete, and politics can not heal the rupture.
  310. Data Constructors, Part 1: Understanding by Implementing
  311. Can You Recommend a Book on This?
  312. Async Data and Autotracking in Ember Octane
  313. the mixed moral qualities of any age
  314. Migrating Off of PromiseProxyMixin in Ember Octane
  315. Twitter and Me, Redux
  316. Good theology demands good theologians
  317. The first and last act of theological existence
  318. Polemic is Hard
  319. theological self-criticism
  320. the story of modern theology
  321. Christian Theology’s Place in the University
  322. The Real Aim of Utopias
  323. Perfectionism Without Perfectibility
  324. Please Reply!
  325. On Ending “This Week I Learned”
  326. An anti-culture
  327. Christian astonishment
  328. Good Theologians
  329. Presence
  330. A Git Workflow for Managing Long-Running Upgrades
  331. Sourdough
  332. Building the Slow Way
  333. Reading Habits
  334. Composing a Fanfare for Crew Dragon: Day 8
  335. Composing a Fanfare for Crew Dragon: Day 7
  336. Making Illegal States Unrepresentable—In TypeScript
  337. Composing a Fanfare for Crew Dragon: Day 6
  338. This Week I Learned #5
  339. This Week I Learned #4
  340. Designing an Atomic CSS System
  341. mut (and set) and autotracking in Ember Octane
  342. Composing a Fanfare for Crew Dragon: Day 5
  343. This Week I Learned #3
  344. Composing a Fanfare for Crew Dragon: Day 4 (Part 2)
  345. Composing a Fanfare for Crew Dragon: Day 4 (Part 1)
  346. Composing a Fanfare for Crew Dragon: Day 3
  347. Composing a Fanfare for Crew Dragon: Day 2
  348. Composing a Fanfare for Crew Dragon: Day 1
  349. Follow-Up on Command-Line Finding and Filtering
  350. find, grep, xargs, and newlines and null
  351. This Week I Learned #2
  352. The Infra Engineer’s Blind Spot
  353. This Week I Learned #1
  354. JavaScript Functional Immutable Update Performance
  355. Superscript and Subscript Line Heights
  356. On “Saints”
  357. All places tell stories
  358. Waiting for Communion
  359. The Lost World
  360. Jurassic Park
  361. The Triune Creator’s Relating to Creation
  362. God’s self-commitment to creatures
  363. Scripting Affiliate Links in Alfred
  364. Adding a Reading List Page
  365. How I Publish This Site
  366. Ulysses Publishing With WordPress on Linux
  367. Problematic
  368. Fall-Centered Theological Anthropologies
  369. Tiamat’s Wrath
  370. Please Don’t Just Screenshot Books!
  371. Tell Me Your Priors!
  372. An Atom Feed Apology
  373. Epistemic Status
  374. A Decadal Kind of Change
  375. Adieu to 2019
  376. Dark Matter
  377. Recursion
  378. Writing Implements
  379. Endings and Edges
  380. Red Mars
  381. Decaffeinating
  382. On Remembering Scripture
  383. Some Thoughts on micro.blog
  384. 25,462 Words
  385. A JSON Feed Apology and Explanation
  386. …but Running is Sunlight
  387. Travel is my Kryptonite
  388. Twitter Bots and “Decline”
  389. Writing Requires Reading
  390. Relaunch!
  391. software engineer
  392. composer
  393. runner and cyclist