Lisp in Small Pieces defines a complete interpreter for a scheme, capable of evaluating itself. This is just chapter 1!
Related Posts
I've been experimenting with an 'evaluate up to cursor' mode for my PL project.
I love evaluating self-contained snippets in Lisp, this generalises the idea.
The interpreter remembers the arguments when you run tests, then can re-use them when you say 'eval up to here'.
What do you think?
For hobby projects, I really like software where I can do small features or tweaks. Sometimes I don't have time for anything more substantial.
Website projects are great for this. Are there other areas?
I'm a huge fan of Swift's 'Error Handling Rationale' design document: https://github.com/swiftlang/swift/blob/9315673c003875158852579bd1f33480cdec5461/docs/ErrorHandlingRationale.md#fundamentals
It carefully defines terminology and compares with other languages, so you can understand Swift's position and preference in the design space.