Building a Bullshit Language
How I took Java annotations to their logical extreme by implementing a fully functioning, Turing-complete LISP dialect within them.
Abstract
I have created AnnotationScript, a programming language whose syntax is expressed entirely in Java annotations. Yes, you read that right: Java annotations.
WTF!?
The pandemic lockdowns of 2020 did strange things to people. Some people started learning the guitar. Others decided to get in shape. But not me. I decided to take Java annotations to their logical extreme.
I think annotations are over-used in the Java ecosystem: you can use them for dependency injection, handling HTTP requests, and interacting with databases. You can even use them to generate code in various ways. But for some reason, nobody has actually used them to implement a full-blown, Turing-complete programming language. Until now.
Do you want to know how easy it is to actually implement LISP? Do you want to know how easy it is to recursively implement LISP in the LISP you just implemented? Do you want to know about the weird restrictions that Java annotations have?
You will be amazed. Weirded-out and amazed.
What’s this AnnotationScript language?
You can find it on GitHub!
Deliveries
- J-Fall
7 November 2024
[event] [slides] - RotterdamJUG
27 November 2023
[event] [slides] - Devoxx Belgium
5 October 2023
[event] [slides] [video] - Brabant JUG
6 September 2022
[event] [slides]
Image credits
- annotationscript - by moinart on Fiverr
- architecture-1 - by Jan Ouwens
- architecture-2 - by Jan Ouwens
- background - by Jan Ouwens
- bored - by DreamStudio (Stable Diffusion) with prompt “Nerd behind laptop looking bored. Many Salvador Dali melting clocks.”
- climate-change - by DreamStudio (Stable Diffusion) with prompt “Laptop with image of a coal plant emitting thick black smoke. It’s on a table next to a pile of books and a coffee cup. In the background lush springtime forest”
- code-generator - by DreamStudio (Stable Diffusion) with prompt “Monkey typing at a computer”
- comics-0 - by Jan Ouwens - picture of “Asterix de Galliër” by René Goscinny & Albert Uderzo
- comics-1 - by Jan Ouwens - picture of a stack of comic books with on top: “Asterix de Galliër” by René Goscinny & Albert Uderzo
- comics-2 - by Jan Ouwens - picture of a stack of comic books with on top: “Gilles de Geus - De Spaanse furie” by Hanco Kolk
- comics-3 - by Jan Ouwens
- comics-4 - by Jan Ouwens - picture of two comic books: “Astérix Légionnaire” by René Goscinny & Albert Uderzo, and “Gilles de Geus - De revue” by Hanco Kolk & Peter de Wit
- discoverability - Screenshot from IntelliJ IDEA, taken by Jan Ouwens
- duke-says-no - by Jeff Dinkins for Sun/Oracle - source
- duke-says-yes & duke-says-yes-background - by Jeff Dinkins for Sun/Oracle - source
- environment-1 - by Jan Ouwens
- environment-2 - by Jan Ouwens
- escalation - by DreamStudio (Stable Diffusion) with prompt “A tsunami of snow coming from a mountain, a person running away from it, powdered snow in the air”
- evaluator - by Jan Ouwens
- fun - by dreamstudio (stable diffusion) with prompt “childrens drawing of stick fligure children playing in a school playground with a swing, a slide and a tree”
- hackernews - Screenshot from Hacker News, taken by Jan Ouwens on 2023-09-11
- jan-ouwens - by Riemke Ouwens
- lego-0 - by Jan Ouwens
- lego-1 - by Jan Ouwens
- lego-2 - by Jan Ouwens
- lego-3 - by Jan Ouwens
- lego-4 - Screenshot from my website, taken by Jan Ouwens on 2023-09-30
- lego-5 - Screenshot from Rebrickable, taken by Jan Ouwens on 2023-09-29
- lego-6 - by Jan Ouwens
- lockdown - by DreamStudio (Stable Diffusion) with prompt “fat nerdy person at computer. man cave. messy room with parcels, stacks of books, empty pizza boxes, gadgets”
- meta-evaluator & meta-parser & meta-tokenizer - by Jan Ouwens
- mind-blown-1 - by DreamStudio (Stable Diffusion) with prompt “Person looking at a computer screen, very surprised, wide eyes, open mouth”
- mind-blown-2 - by DreamStudio (Stable Diffusion) with prompt “Person looking at a computer screen, very surprised, wide eyes, open mouth”
- nerd-cred - by DreamStudio (Stable Diffusion) with prompt “Rap music album cover in the style of Eminem, 50ct and notorious BIG. Photograph one face of fat, white, nerdy guy with large beard, messy hair, jewelry and colored glasses. Fish eye lens. Album title “nerd cred” appears next to face”
- paralleljava-0 - by Jan Ouwens
- paralleljava-1 - by Jan Ouwens
- paralleljava-2 - Screenshot from GitHub taken by Jan Ouwens on 2023-09-29
- paralleljava-3 - Screenshot from Todo-Backend taken by Jan Ouwens
- paralleljava-4 - by J-Fall - source
- parser - by Jan Ouwens
- rite-of-passage - by DreamStudio (Stable Diffusion) with prompt “Graduation ceremony. Fat nerdy man with glasses and unkempt beard on stage.”
- stackoverflow - Screenshot from StackOverflow, taken by Jan Ouwens on 2023-09-11
- the-little-schemer - by MIT Press - source
- tokenizer - by Jan Ouwens
- turing-machine - by DreamStudio (Stable Diffusion) with prompt “A sewing machine sewing a long, straight, white ribbon that must not be bundled up”
- vim - by Jan Ouwens
Other credits
- Enterprise Lego model - designed by MiniTrekMocs
Images used in previous iterations
- bored-old - by DALL·E with prompt “photo of a bored white nerd with a neckbeard, sitting at a desk with a computer displaying java code, glancing at an alarm clock while surrounded by melting clocks” (not sure where the neckbeard went 😉)
- code-generator-old - by DALL·E with prompt “pixel art of a monkey typing at a computer”
- fun-old - by DALL·E with prompt “childrens drawing of stick fligure children playing in a school playground with a swing, a slide and a tree”
- lockdown-old - by DALL·E with prompt “photo of a programmer wearing only short pants and no shirt sitting behind a computer in his man cave showing code on the screen, surrounded by amazon packages, books, game controllers and a guitar”
- mind-blown-1-old - by DALL·E with prompt “meme of a person looking very surprised whose head explodes”
- mind-blown-2-old - by DALL·E with prompt “meme of a person looking very surprised”
- nerd-cred-old - by DALL·E with prompt “hip hop album cover with nerds”
- rite-of-passage-old - by DALL·E with prompt “photo of a fat nerd with a spear in attack pose facing an angry male lion on the african savannah”