I’ve just officially launched v5.chriskrycho.com, “Sympolymathesy”. As such, this is the final post on this site!| v4.chriskrycho.com
Assumed Audience: software developers interested in honing their craft—especially folks just trying to get a handle on good techniques for testing. A fundamental principle of testing software is: test the interface. Failing to keep this principle in mind is at the root of the majority of the problems I see in automated tests (including quite a few of those I’ve written in the past!). What do I mean by test the interface? I mean that when you are thinking about what kind of test to write, ...| Chris Krycho
I am a huge nerd who is tracking his November writing project in a spreadsheet… and I apparently don’t know how to do math anymore.| v4.chriskrycho.com
A bit of evening writing, of the scattershot sort: poetry, meta-writing, an answer to an email, a few thoughts on learning.| v4.chriskrycho.com
I started the day by cutting 40 words from an article. How does that work with a word count goal?!?| v4.chriskrycho.com
Brent Simmons’ blog inessential has, as of today, been online for twenty years. That seems an astounding feat to me… and then I remember: I have been blogging for 14 years myself, and could not possibly have been blogging when Simmons started. I started a Xanga sometime in mid-fall 2005, my freshman year of college. In July 2006, I set up the Blogger site that first mirrored that Xanga and then quickly replaced it. That site ran from then until 2010. In 2011, I worked primarily on other p...| Chris Krycho
The commitment to actually sit down and write may be hard to follow through on—but it is worth it.| v4.chriskrycho.com
Assumed Audience: written with an eye to folks willing to think a little bit harder about attention—something we all need to get better at. --- Walking through the airport this morning, I found that my attention itself had caught my attention. I have had this bit from L. M. Sacasas bouncing around in my head for the last month or so: The ability to take photographs expands (and limits) the hiker’s perceptive repertoire—it creates new possibilities, the landscape now appears differently ...| Chris Krycho
For the past few months, I have been picking back up my long-dormant interest in photography. It feels good to be back at it!| v4.chriskrycho.com
I am going to try something a little bit audacious in the month of November: to write every day, averaging (at least) 500 words each day. I have wanted for years to do NaNoWriMo, but at this point I am unwilling to commit to the time to write 1,600 words of a novel per day—not least because of the up-front planning it would take me not to run out of story-telling steam. I have also wanted to get my writing muscles back in gear for quite some time. While I have been blogging off and on over ...| Chris Krycho
Assumed Audience: practitioners or interested lookers-on for software development—and Apple itself. Edit: some folks rightly pointed out that my use of “garbage” suggests that the problem is the quality of the existing documentation; I’ve retitled the post to capture that the problem is the massive absence of documentation. You can see the original title by way of the slug. Over the past few months, I have been trying to get up to speed on the Apple developer ecosystem, as part of wor...| Chris Krycho
Assumed Audience: practitioners or interested lookers-on for software development—especially indies. Today, I had about 3½ hours dedicated to working on rewrite and I did make progress… but it sure didn’t feel like it. For the past month or so, I’ve been sidelined from working on the project by way of getting very sick and then being swamped with travel for a conference followed by a friend’s wedding. I resolved, however, to get some things done today. I enjoyed that sense of mome...| Chris Krycho
Recommended: A short and accessible history of “evangelicalism.”| v4.chriskrycho.com
Recommended: a rollicking sci-fi trilogy about the discovery of giant robot mecha.| v4.chriskrycho.com
Assumed Audience: software developers, especially those who work on user interfaces. Domain-driven design, and its near neighbor the ports and adapters (hexagonal) architecture all emphasize the importance of distinguishing between your internal “business logic” and your interactions with the rest of the world. Much of the time, the “ports” that get discussed are API calls (e.g. over HTTP) or interacting with a database. Yesterday, in the midst of a rollicking conversation about buil...| Chris Krycho
Assumed Audience: pretty much everybody. Everybody sleeps. I may never regularly set an alarm again. Last year, in the midst of getting increasingly burned out, I hit a point where I couldn’t set an alarm. I found myself needing 8½–9½ hours of sleep every night, and even in that range, setting an alarm often left me feeling exhausted for the rest of the day. As I have slowly but steadily recovered, I started setting an alarm again at times. But, at least for now, I’m done with that. F...| Chris Krycho
Assumed Audience: lovers of books… and typography. I keep my book review ratings simple—they’re either required, recommended, recommended with qualifications, or not recommended. If you want the TL;DR, this is it: Required.Beowulf is the great work of Old English literature, the oldest literary work in English full stop. It should be required reading (in a good translation!) for every high school student in English-speaking nations. I am not going to try to review it here; I’m not su...| Chris Krycho
Assumed Audience: practitioners or interested lookers-on for software development—especially indies. This week, I started the actually writing software phase of working on rewrite. As of yesterday evening, I actually have a bit of code that, although useless in every way, and not especially attractive, does in fact displays a single reference on an iPhone screen. I have an incredibly, impossibly long way to go. It doesn’t matter: I started. I had the day off on Monday courtesy of Labor Da...| Chris Krycho
I’m experimenting with using the bullet journal notation style as a complement to my existing way of tracking tasks, making notes, and so on.| v4.chriskrycho.com
Assumed Audience: design types and typography nerds… and digital economics and licensing geeks. Yesterday, I wrote a post extolling the virtues of the lovely (and quirky!) typeface Cronos. Today, I’m back to report on at least one of the reasons why it’s not in wider use. In short: Adobe has made it available for web font usage only if you’re on a subscription plan through Typekit or one of their other partners (e.g. Fonts.com). For context, most web fonts are licensed on a per-pagev...| Chris Krycho
Assumed Audience: design types and typography nerds. I’m not sure when I first stumbled on Cronos, but it was a long time ago at this point. I launched a version of this website using Cronos for titles back in 2012. I’ve experimented with a number of typefaces for the body text since then—including Minion, Gentium, and finally Sabon—but Cronos has never changed. Every time I’ve thought about moving away from it, I’ve been dissatisfied with everything else I’ve looked at using in...| Chris Krycho
Recommended: I enjoyed Mary Robinette Kowal’s magic-meets-Regency-romance much more than I expected to.| v4.chriskrycho.com
Assumed Audience: orthodox (note the little ‘o’!) Christians. You’re of course very welcome to dig into this material if you are not a Christian, but it’s a Sunday School class, so I’m not addressing non-Christians! Updated September 1, 2019: added EPUB and PDF links at the bottom of the post, as well as direct links to each class page on the Forestgate website. --- For the four Sundays starting today, I’m teaching a class at our church, “Christology: God With Us and For Us”. ...| Chris Krycho
Don’t let other people keep you from doing deep work. Use your calendar’s tools to carve out time for things that are genuinely important—not just what others think is urgent.| v4.chriskrycho.com
Assumed Audience: people already persuaded of the value—at least to some extent—of “getting things done” strategies and having an idea of what you accomplished over the course of the year. A few months ago, I described my current workflow for tracking what I do every day, using Bear. I’m still doing that, but I’ve made one small tweak that makes for a much nicer experience, and I figured I’d write that up for anyone else who’s thinking about using Bear in a similar way. The ma...| Chris Krycho
Assumed Audience: People interested in Ember and/or TypeScript. Over the course of the rest of this year, I’m going to be working regularly on expanding the set of available TypeScript type definitions in the Ember.js community. A huge part of that effort is enabling others to do the work. It’s completely unfeasible for me to be the only person (or even the Typed Ember team the only people) doing this work. There’s simply too much to be done! One part of my work, then, is figuring out h...| Chris Krycho
I am trying to start actually building rewrite… and I actually have no idea how to do this!| v4.chriskrycho.com
I keep my book review ratings simple—they’re either required, recommended, recommended with qualifications, or not recommended. If you want the TL;DR, this is it: Required:Retrieving Eternal Generation, edited by Fred Sanders and Scott R. Swain, is a collection of essays defending the doctrine of eternal generation from recent criticism (“recent” meaning the last half century or more) and aiming to show how the traditional, creedal, catholic1 articulation of the relationship of the Fa...| Chris Krycho
Recommended: Hannah Anderson’s All That’s Good is a popular theological treatment of the idea of “discernment”. The first several chapters are worth the price of the book; after that, it’s *fine* but not *amazing*, and seemed very much a product of the demands of the publishing industry (it read like| v4.chriskrycho.com
Chatting with Adam Gordon Bell on Corecursive—mostly TypeScript, but also a bit of Rust, type theory, and productivity!| v4.chriskrycho.com
Assumed Audience: people interested in note-taking, research, and long-form writing. For the past four years, I have been dreaming of an absurdly ambitious application: a tool that can actually handle research writing well. Good research writing—whether it’s a college paper or a Ph.D. thesis, a journal publication or a magazine article, a scholarly blog or a big book—is a complex and challenging task. At a minimum, research writing includes: finding resources, tracking references to th...| Chris Krycho
Assumed Audience: web development nerds like me. Those of you subscribed to my RSS feed most likely saw a bunch of posts again earlier this week. That’s because the canonical URLs for the posts on my site changed: from www.chriskrycho.com/<year>/<title slug> to v4.chriskrycho.com/<year>/<title slug>. So, for example, my announcement that I’m speaking at All Things Open 2019 moved from www.chriskrycho.com/2019/all-things-open-2019.html to v4.chriskrycho.com/2019/all-things-open-2019.html. ...| Chris Krycho
I’m very excited to announce that I’ve been accepted to give a talk at this year’s All Things Open in Raleigh, North Carolina, October 13–15. Here’s the pitch for the talk, titled “Don’t Go Bankrupt! Managing Technical Costs”: Every engineering organization—whether in a startup, a Fortune 500 company, or an open source project—must both sustain (keep the lights on!) and innovate (deliver new functionality!). Simultaneously sustaining and innovating requires carefully manag...| Chris Krycho
Let’s make TypeScript a first-class citizen of the Ember ecosystem. There’s a lot already done, but a lot left to do!| v4.chriskrycho.com
Let’s finish modernizing the Ember programming model! That means everything from routes and controllers to the file system and build pipeline changes.| v4.chriskrycho.com
Assumed Audience: anyone willing to think hard about social media and its place in our lives. --- I got a particularly thoughtful email from a friend about his family’s use of Facebook in response to yesterday’s essay. I’ve reproduced most of my response here because I think it’s a helpful extension on that essay. I (a) totally hear where you’re coming from, and deeply sympathize; and (b) deeply disagree about the notion that they’re “just tools – not good or evil in themselve...| Chris Krycho
Assumed Audience: anyone willing to think hard about social media and its place in our lives. I. The Itch I began writing this post from our vacation bedroom in Jamaica, about five days before I could possibly publish it: before we left, I shut down the machines which can generate new versions of my site. I wished, as I started this post, that I had an equally effective measure for cutting off access to social media on this trip. I tried, of course. Before we left on June 1, I removed Slack a...| Chris Krycho
Reflections on the event of finishing New Rustacean—with some thoughts on the goodness of finishing things both for individuals and for the public which observes them.| v4.chriskrycho.com
I ran a mile-high sub-1:30 (despite making some mistakes)! I am so very happy with this outcome—though of course I’m already thinking about how to beat it in my next race.| v4.chriskrycho.com
A bit more on what “recovery” from burnout looks like—because, as much as too few people talk about burnout itself well, even fewer talk about the recovery.| v4.chriskrycho.com
Assumed Audience: anyone who cares about the success of free and open-source software. A New Rustacean listener sent me a note lamenting the way Mozilla’s transition from IRC to Discord—i.e., from an open protocol to a proprietary service. For many advocates of free software, this is a deeply unsettling move. The kind listener who sent me an email pointed to Matrix, an open-protocol service, and noted: “perhaps the default web interface is slightly less slick, but there’s not much in ...| Chris Krycho
Defining a Zettelkasten—a way of organizing notes for long-term usability and effective learning.| v4.chriskrycho.com
For all that heresies always plague the church, I find comfort in seeing how she has—by the grace of God—endured them and grown to truth by countering them.| v4.chriskrycho.com
I am (very slowly) starting the process of building some native iOS and macOS apps. It is a strange feeling to be so out of my depth again!| v4.chriskrycho.com
At EmberConf 2019, the Typed Ember team (Mike North, James Davis, Dan Freeman, and I) enjoyed dinner together and talked about the big problems on deck for TypeScript in Ember. Here’s what we covered!| v4.chriskrycho.com
A meditation on embodiment and calling, attention and social media and physical presence—inspired by seeing many friends at EmberConf.| v4.chriskrycho.com
Assumed Audience: People interested in Ember and TypeScript. I’m pleased to announce that the unofficial Ember TypeScript team (Dan Freeman, Derek Wickern, James Davis, and Mike North, and I) have just published ember-cli-typescript v2.0.0! Check out the upgrade instructions to get started with the new version! What’s new? There are just two changes, but they’re a big deal! The addon now uses Babel 7’s TypeScript support to actually build your TypeScript, while continuing to use TypeS...| Chris Krycho
Some thoughts on actually finishing things I care about, inspired by starting up “serious” running again.| v4.chriskrycho.com
Some amused thoughts on the effects of habit, prompted by my first day putting back on a chest strap heart-rate monitor in a few years.| v4.chriskrycho.com
How the experience of burnout did—and did not!—contribute to my leaving Olo for LinkedIn.| v4.chriskrycho.com
I’ve just launched a newsletter, “Across the Sundering Seas” (buttondown.email/chriskrycho)—expect roughly weekly posts with a mix of commentary on links and some longer reflections on things I’m thinking about.| v4.chriskrycho.com
A post in two parts: on why I’m changing jobs and on the strange experience of change as an adult.| v4.chriskrycho.com
Assumed Audience: people interested in productivity and work flow and app choice. A friend was asking me the other day what my workflow looks like, and while I don’t generally spend a lot of time writing about my working setup, I figured I’d throw up a quick post representing my current list so that if people ask I can point them here. Two important notes on this, though: First, this is just what I use. I make no particular claim that it’s the best. There are lots of things here that ar...| Chris Krycho
Time does not heal all wounds, only / papers over, lets fade, until…| v4.chriskrycho.com
An observation on Zettelkasten and the continuing value of physical media.| v4.chriskrycho.com
Assumed Audience: people who really like this website and like patronage or crowd-funding. Happy 2019, readers! As I move into 2019, I wanted to publicize something that has existed for most of the last year, but which I have not yet made much noise about: my Patreon! In this space, I write blog posts and essays on technology, theology, and art. I write about the process of building open-source software. I sometimes even write poetry and compose music and share those here! I do all of those t...| Chris Krycho
iZotope RX is an expensive tool for audio post-production, and it's an amazing tool for podcasting if you have the budget for it.| v4.chriskrycho.com
The best of my writing this year, ranked exactly and only by my opinion (I don’t have analytics to use even if I wanted to, and I don’t want to).| v4.chriskrycho.com
Improving my approach to deep reading with better notes and my Zettelkasten.| v4.chriskrycho.com
Merry Christmas! Have a little homily from me! Now since the children have flesh and blood in common, Jesus also shared in these, so that through His death He might destroy the one holding the power of death—that is, the Devil—and free those who were held in slavery all their lives by the fear of death. (Heb. 2:14–15 HSCB) As Gregory Nazianzus reflected, centuries later: “…that which He has not assumed He has not healed; but that which is united to His Godhead is also saved.” And ...| Chris Krycho
This was not the year I expected, and it had more than its share of difficulties. But it is done, and God is still gracious and good.| v4.chriskrycho.com
Assumed Audience: software developers, especially those interested in modern, typed programming languages. Earlier this week, I was working on a problem in the Ember app where I spend most of my day job, and realized: JavaScript is the same as C. That probably doesn’t make any sense, so let’s back up. The scenario I was dealing with was one where there was a bit of invariant around a piece of data that I had to maintain for the application not to blow up in horrible ways, but had no good ...| Chris Krycho
Assumed Audience: people interested in reading, writing, learning, and research systems—particularly on iOS, and particularly with automation in view. A few evenings ago, I spent a little while building out some Siri Shortcuts to make the process of building out notes in my Zettelkasten on the fly easier. Building them in Bear is easy enough, but it’s even nicer to just be able to tap a button and have things like the date auto-generated for the note title in exactly the format I want: YY...| Chris Krycho
I seem to be through the worst of this burnout. But stewarding my recovery is its own challenge.| v4.chriskrycho.com
I wrote earlier this week about adopting a Zettelkasten approach for research, and moving writing prompts and ideas from Bear into Ulysses as part of that. I’m already reversing course. Here’s why.| v4.chriskrycho.com
An update on my work-in-progress research system, using Bear.app as a tool for the Zettelkasten system—with some comments on how I’m doing this, and why.| v4.chriskrycho.com
Earlier this month I was working on a fairly thorny problem for work—taking a total value and splitting it into numbers which summed up to it, possibly including with a rule about what the split-up values had to be a multiple of. E.g. you want to order 50 Buffalo wings, and you have to choose the flavors for the wings in increments of 5. I spent a lot of time thinking about the implementation of the algorithm for that, but I also spent a lot of time thinking about what its API should look l...| Chris Krycho
We've released a beta of ember-cli-typescript v2, which will make your builds faster and more reliable, and which will give you better error output with type errors. Please come test it in your apps and addons!| v4.chriskrycho.com
Career tip: for every day, week, and month, summarize the things you accomplished.| v4.chriskrycho.com
What Cherry Blues are to some mechanical keyboard lovers, the Apple Magic Keyboard is to me.| v4.chriskrycho.com
No Starch's The Rust Programming Language is a genuinely *great* introduction to Rust, and a genuinely great programming book.| v4.chriskrycho.com
I just released v2.21 of True Myth, with two new pairs of helpers to deal with safe JavaScript object property lookup with Maybes and handling exception-throwing code with Results. Safe JavaScript object property lookup We often deal with optional properties on JavaScript objects, and by default JavaScript just gives us undefined if a property doesn’t exist on an object and we look it up: type Person = { name?: string; }; let me: Person = { name: 'Chris' }; console.log(me.name); // Chris le...| Chris Krycho
With burnout, getting out on a run (for example), can feel impossible—but it’s essential. We can neither ignore experiences like burnout, nor let them dominate our mental lives: both approaches make things significantly worse.| v4.chriskrycho.com
I keep my book review ratings simple—they’re either required, recommended, recommended with qualifications, or not recommended. If you want the TL;DR, this is it: Recommended: In want of a bit of classic sci-fi, I recently picked up Larry Niven’s Ringworld and read it this week. I enjoyed it, but more than that I find it hard to say. I’m still not sure exactly what to describe it as: an exploratory high concept romp, maybe. The characters were fine, the plot serviceable, and the two h...| Chris Krycho
Just a list of weird things that have happened to me while dealing with this.| v4.chriskrycho.com
At least for me, doing “non-stressful” things as part of burnout sometimes means doing things other people would find stressful. That’s okay.| v4.chriskrycho.com
Some people have a hard time keeping their blogging resolutions. I… have the opposite problem.| v4.chriskrycho.com
A worked example of transforming if/else statements to the proposed pattern-matching syntax, showing how much pattern-matching can clarify (as well as shorten) complicated code.| v4.chriskrycho.com
Insofar as I have a platform and a voice on this blog and my podcasts, I hope to use it to help others who experience burnout as well. So, the only episode I’ve managed to release of New Rustacean so far in September is this one, on burnout.| Chris Krycho
Solutionism is a nasty besetting culture-level sin we barely recognize as such.| v4.chriskrycho.com
Thoughts on third spaces, remote jobs, misplaced flirtation, and the thread that ties them together: the way we have offloaded so much of our social existence to our employeers.| v4.chriskrycho.com
On September 29, 2016, I started working on adding (Flow) types to the Ember app I had been working on since the start of the year. Throughout the rest of the year I worked on adding some basic Flow types to our app and for Ember. For my last commit in 2016, I switched us to TypeScript and began the rest of the long journey to fully type-checking our app. In early 2018, we made it to “the app type-checks”… in the loosest strictness settings. And as of 6pm today—September 5, 2018, almo...| Chris Krycho
A bunch of neat new utility functions on Maybe for arrays and tuples.| v4.chriskrycho.com
Several times this week, I signed out of both my company Slack and the Ember Community Slack and just worked in “solitude” for about six and a half of the eight hours I was working. It was, in a word, bliss. Over the past few years, I’ve come to enjoy a lot of chatting during the day while at work, and the social interaction is very much a must in a lot of ways for someone who works remotely. The flip side, however, is that chat is a huge time-suck, and more than that it’s a constant ...| Chris Krycho
I keep hoping a solution to my publishing needs will present itself instead of my having to build it myself. Such a solution does *not* appear forthcoming, though.| v4.chriskrycho.com
I keep my book review ratings simple—they’re either required, recommended, recommended with qualifications, or not recommended. If you want the TL;DR, this is it: Recommended: Mary Robinette Kowal picks up her alt-history of the space program after a meteor strike and continues doing what sci-fi does best: throwing new light on present-day cultural issues by showing something that isn’t the present day. Where the first book looked head-on at sexism, the second carries that line forward ...| Chris Krycho
I’ve been working on getting the Ember app I work on fully type-checked in strict mode this week, and noticed something interesting along the way: there are a lot of design decisions—a few of them really core to the behavior of the app!—which we never, ever would have made if we had been using Typescript in the first place. One of these is pervasive references to certain optional properties that appear in services throughout our app—the basket, for example. These can indeed be inset a...| Chris Krycho
Algorithmically-sorted archives for blogs are hyper-user-hostile and I hate them. Looking at you, Medium.| v4.chriskrycho.com
My strategy for keeping up with my RSS subscriptions: read it, send it to Pocket to read later, or mark it as read. Then move on.| v4.chriskrycho.com
If I'm going to go through burnout, it might as well be a help to others. Especially if I can offer a more thoroughly Christian view of burnout than much of what I see in either secular *or* Christian literature on the subject.| v4.chriskrycho.com
I keep my book review ratings simple—they’re either required, recommended, recommended with qualifications, or not recommended. If you want the TL;DR, this is it: Required: Mary Robinette Kowal’s alt-history of the space program (after a meteor strike!) is wonderful—smashingly-good plotting which somehow makes a half decade span feel urgent and fast-paced; a fantastic lead character; an interesting examination of women’s friendships; and frank treatment of both sexism and mental ill...| Chris Krycho
Adam Giese’s “Level up your .filter game” does something really interesting and helpful: it introduces a bunch of fairly sophisticated functional programming concepts without ever mentioning functional programming and without ever using any of the jargon associated with those terms. “Level up your .filter game” gives you a reason to use some standard FP tools—currying, higher-order functions, composition—in your ordinary work. It’s pitched at working JS developers. It gives a ...| Chris Krycho
True Myth has changed very little since I first released it, and I do not expect it to change much in the future: because it is basically done. I wish more libraries took this approach; churn is not a virtue.| v4.chriskrycho.com
Every time there is a major controversy about large platforms blocking or delisting some controversial figure, something like the following exchange follows:1 Person 1: But what about free speech? You’re censoring this party! Person 2: [Twitter/Facebook/Youtube/etc.] is a private platform! Free speech guarantees the right not to be jailed for what you say, not the right to have it on every platform you want. So far as it goes, this is true. XKCD’s explanation is completely right on the le...| Chris Krycho
I read Psalm 94 in my devotions this morning—one of the “imprecatory psalms” which prays for God to judge the wicked. After the last couple days I’ve had, I joked with my wife that I was praying it against Microsoft Windows. The imprecatory content of the psalm is a deep well I shall not plumb today; in any case Windows is not an “enemy” the way the psalmist meant it. The thing I noticed as I reflected on the psalm, though, was how much it did that is good and right for me to imit...| Chris Krycho
On “force multipliers” and being an individual contributor at heart—even if one who is good at teaching and who enjoys leading.| v4.chriskrycho.com
This is painfully accurate: “It is all about “ship, ship, ship”. We don’t pivot. We don’t refine. The product owner just wants to mark it done in Jira. The MVPs are an excuse to get crappy stuff out the door.”| v4.chriskrycho.com
Pretty regularly, I go back and reread my own blog posts—and not for vanity. It’s an illuminating experience, a lot like reading through old notes.| v4.chriskrycho.com
There are rough order-of-magnitude differences between the feedback times for build-time errors, automated tests, manual testing, CI, staging, and production. This is useful when thinking about tradeoffs of where you want to catch certain failure classes.| v4.chriskrycho.com