I used to think that macros were just a feature that a language included or lacked. In practice, there’s a huge design space of how macro systems can be implemented.
Baby Steps to a C Compiler
Writing a compiler, and learning a little low-level programming, is a very powerful way of learning more about how computers work.
Recursion, TCO, and You
Recursion is an excellent tool in a developer’s toolbox, yet it is frequently misunderstood. Used correctly, it can give programs that are fast, readable and succinct. Used incorrectly, it can produce some tricky bugs.
Trifle: Lists and CONSequences
Lists are a spectacularly important data type. Even more so for lisp languages, as a lisp program is just a text file with some list literals.