Provide the witness
A strategy for code organization.
Assume recursion works
A way to think about writing recursive functions.
Hash map cost bounds
A technicality hidden in some asymptotic cost bounds.
The coffee shop analogy
An analogy for software engineer levels.
A language server for Standard ML.
PL idea: built for tooling
The next generation of programming languages.
PL idea: unified function call syntax
Removing the distinction between functions and methods.
If it's worth doing, it's worth doing at all
Another little idiom I like.
Limitations engender opportunity
Alternative title: ‘tradeoffs are a thing’.
Improving my writing
Trying to do better.
Communication for software engineers
Tips on communicating effectively.
Humans are generally good
An overall positive outlook on humanity.
Terms, types, and functions
Various varieties of function in programming languages.
Unoriginality is okay
An exhortation to create.
Everything in moderation, including this
A little idiom I like.
Write more, but less
A particular writing style that may not work for you, but sometimes works for me.
Define a PL: sums
Adding sums (aka ‘enums’ or ‘tagged unions’) to a small PL.
Define a PL: products
Adding product types (aka ‘structs’ or ‘tuples’) to a small PL.
Define a PL: functions
Adding pure functions to a small PL.
Define a PL: integers and booleans
The beginnings of a small, formally defined PL.
Resources for learning Japanese
Things I use to study Japanese.