I've been working almost exclusively in Clojure since I left the world of Java 8 years ago. Since then I've been solving enterprise problems with functional programming in the dynamic and interactive environment afforded by Lisps. I couldn't be happier.
I've worked across many sectors, from banking, energy and transport to film, education and (most recently) organic vegetable farming! It's remarkable how much of the job is the same every time. There's always a legacy system to replace and no one is ever completely happy with how their system sends emails to customers.
In my spare time I like writing tiny Lisps, competing in game jams, and playing DnD with my partner and our friends.
In Lisp, code is data. In a meta-circular Lisp, the interpreter is written in Lisp, so it too is just data. By granting a Lisp the ability to modify the data of its own interpreter we can create a language that has the ability to dynamically rewrite its own implementation at will, adding or removing language features or even transforming it entirely.
Working in Clojure we'll begin by covering the basics of Lisp interpretation and demonstrate how surprisingly simple a minimal Lisp interpreter can be. We'll then explore the ways that small changes to this interpreter can profoundly affect the language itself.
Finally we'll introduce Autology, a pure functional Lisp with the ability to modify its own interpreter, and the unique and powerful form of dynamic metaprogramming this unlocks.
From modifying argument evaluation to writing a custom debugger, to executing raw inlined C code, the possibilities are deep and far-reaching.