On the design of programming languages, a great introduction to the constraints in choosing keywords, and a proposal for new keywords in Java: https://mail.openjdk.java.net/pipermail/amber-spec-experts/2019-January/000945.html
miniblog.
Related Posts
Igalia's post on self-hosting CI runners is a masterclass in build engineering. It shows dealing with weird API constraints, but still finding good designs.
I also learnt that some CI systems use OCR on Apple's installers to automate!
It took me way too long to realise that Arc<Mutex<T>> is basically a way to create multiple &mut T references (with runtime constraints).
This means that you can use plain &T and &mut T in the vast majority of your code. Most code doesn't need to care there's a mutex.
I've really come to appreciate OCaml's notion of generics. It doesn't have subtyping, so e.g. you have an `int list` or an arbitrary `'a list`, but nothing inbetween.
As soon as you add constraints like Java's `List<? as Foo>` it become incredibly hard to produce good errors.
