TIL: in distributed systems; crash faults (process stops responding) are a subset of omission faults (process drops messages) which are a subset of timing faults (process handles messages early or late) which are a subset of Byzantine faults (process does any arbitrary behavior). It's a hierarchy!
Posts by Chris Rybicki
screenshot of macOS software update dialog, which begins "This update introduces 8 new emojis, along with other features, bug fixes, and security updates for your Mac"
I'm pleased that Apple realizes new emojis are among the top most reasons I choose to upgrade my operating system in 2026
great read! It reminds me a lot of the Strange Loop talk "The Economics of Programming Languages" - the business models of software is a pretty under-discussed topic as a whole
Also it goes without saying but reading non-slop technical writing is always delightful!
Side note: considering the sheer complexity of JavaScript (that I've forgotten about since not touching it in a little while), I can sort of imagine how understanding how all of this works could provide Probably Decent Job Security as a software engineer.
developer.mozilla.org/en-US/docs/W...
screenshot of MDN page, titled "Agent execution model"
TIL JavaScript has been using agents since before it was cool:
They should add an unenthusiastic "alright" to the available HTTP status codes.
I was also pretty weirded out by this (though discovered it by a pretty unrelated path)! but yeah, <insert utopia meme if JavaScript promises were monads>
rybicki.io/blog/2023/12...
I started a software research company
notes.eatonphil.com/2026-02-25-i...
π€² Boston TS Club needs your help! We're out of a venue space and are on the lookout for one who can host our monthly meetups.
If you work at or know of a company who wants to support the local web development & JavaScript/TypeScript community, please let us know. π
the ideal class to me would be a survey like class that each day takes one topic and looks at it cross sectionally, like
"How do languages across research/industry approach X?"
where every day X could be subtyping, GC, async, metaprogramming, etc
and each class you read 2-3 papers in advance
Syntax design and type inference and data flow analysis and JITs and so on are also interesting but I could understand wanting to keep them for a compiler class?
Mmm I see.
I guess by rare features I'm thinking of fancy types of polymorphism, linear/affine types, refinement types, gradual typing... (rare should probably be in quotes)
Providing more student exposure to languages with useful-but-rare semantic properties would be appealing to me. And intros to model/proof checking languages.
To bridge the gap between software implementations and their corresponding designs / formal models? (thinking of eg Dafny)
HEARTBREAKING: This Woman Thought Her PR Was Already Merged
Are words basically just pointers to concepts? π€
screenshot of the beginning of the blog post, black text over plain white background. It begins with a bad joke, "Did you know that in programming, threads have been locking in before it was cool?"
New blog post!
Writing mutexes from scratch in Go
rybicki.io/blog/2026/01...
TIL reentrant locks are considered harmful?
These are locks that are OK to call .acquire() on by the same thread more than once. For example, Java provides ReentrantLock out of the box in java.util.concurrent.locks.
But they aren't available in Go:
groups.google.com/g/golang-nut...
"The best time to start training a policy was 20 episodes ago. The second best time is now." -Chinese proverb
advent of code 2025 here I come!
embarrassingly I've never completed all 25 days in a single year. but this time, there's only 12 days of puzzles so I think I have a fighting chance!
I'm also going to try using Haskell (language I barely know)!
github.com/Chriscbr/adv...
π Unison 1.0 has landed!
After years of engineering, design, and community collaboration, weβre excited to announce this milestone!
Spread the word!
Huge congrats to the Unison team for launching 1.0 of their language. Really ambitious vision! π
I'll have to try it out some more (maybe for Advent of Code? π). Curious to see where it gets adopted in production.
www.unison-lang.org/unison-1-0/
sui generis (adj.) - unique; in a class by itself
photo of NYC subway times display, where the orange M line is shaped like a pumpkin instead of a circle, and faded ghosts overlay
nice Halloween touches NYC!
To that end, using AI seems like a great solution!
As a human there might not be a finite list of criteria for what makes a puzzle interesting. But if I give the model enough positive and negative examples, there's a chance (but not guarantee) it might pick up on some patterns.
This is a good starting point, but depending on the puzzle type, your artifacts might still feel very randomly generated, so you might still need a human curation process.
Many puzzles are like constraint-satisfaction problems (CSPs). One strategy I tried was to generate puzzles at random and rank them to:
- minimize the # of constraints, since elegant puzzles have fewer moving parts
- maximize the search tree complexity, so mentally finding the solution feels hard
In college I used to hack around with writing code to generate grid-based pencil and paper puzzles like Sudoku, Numberlink, etc. So I love this stuff.
Teaching a computer to solve puzzles is straightforward once you have the algorithm down. But how do you make it generate puzzles that feel "human"?