Comparative Macrology

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.