Your Program as a Transpiler: Applying Compiler Design to Everyday Programming
summary
Argues that many app problems become compiler problems: parse configs and BPMN, resolve forward/cross references, build an adjacency-list runtime graph, then either interpret or generate code via annotation processors and Quarkus extensions to shift work to build time. Shows this cuts startup work (reflection-based scanning ~2s on his machine vs much lower for co-generated code), reuses Drools/jBPM/Kogito tooling, and recommends move preprocessing to build time and phase-based compilation workflow for clearer, faster systems.
AI-written summary · about
chapters (39)
- 0:00Introduction
- 2:00Motivation
- 5:19Goals
- 5:47Whats a Transpiler
- 7:26Myths about Transpilers
- 9:56Writing a good compiler and writing a good Transpiler
- 10:31What can you solve with compilerlike workflows
- 11:27How to describe a compilerlike workflow
- 13:04BPM
- 15:04Goal
- 15:20Recognize your compilation phase
- 16:32Data transformation pipelines
- 17:20BPMN
- 20:14How does a compiler work
- 21:36What makes a proper compiler
- 22:06Configuration file example
- 22:35Data processing and producer reports
- 22:55Workflow engine
- 23:50Phases vs passes
- 24:21Reading a config file
- 25:28One single pass
- 25:54Evaluation
- 26:31Display
- 27:14Lets Visitors
- 28:05Runtime Representation
- 29:05Generate Code
- 29:42Boot Time Optimization
- 29:58Application Wiring
- 31:34Reflections
- 32:17Annotation Processor
- 33:39Cogito
- 34:26Quercus
- 35:41Code Extension
- 35:52Druce
- 36:43Rule
- 37:59The Submarine
- 38:21Conclusion
- 39:10Links
- 39:42Questions
related talks
34mYour Program as a Transpiler: Applying Compiler Design to Everyday Programming
39mYour Program as a Transpiler
59mPrinciples of Programming Language Translators
44mLet's talk about transpilers
46mCompilers, User Interfaces & the Rest of Us
30mLet's talk about transpilers!
02h 37mA Practical Introduction to Compilation
40mJoy of Meta-Tracing Just-in-Time Compilation: More Than Just a VM Generator
