Living With Legacy Code
summary
Hiccup implements pre-compilation 10–20x faster by turning literal Hiccup vectors into strings, but that forces a raw-string vs escaped distinction (1.0 insecure by default, 2.0 returns raw strings) and hits a Java method instruction limit for large templates. Ring faces a naming choice: keep legacy unnamespaced keys for compatibility or switch to namespaced keys for clarity; websockets are added using a compromise to avoid breaking users. Renaming an artifact group (medley → dev.weave.medley) permanently breaks dependency resolution: artifact group rename breaks dependency resolution.
AI-written summary · about
chapters (8)
- 0:00Introduction and context
- 1:41Origins of Compojure and Ring
- 3:55Hiccup pre-compilation
- 9:16Leaky abstractions in Hiccup
- 14:48Lessons from API delays
- 16:57Evolving the Ring library
- 24:57Artifact naming and Medley
- 31:09Conclusion and takeaways
related talks
01h 01mGuide to Destroying Codebases the Demise of Clever Code
21m50 Shades of Legacy
43mPatterns of Legacy Displacement
28mThe Fellowship of the String
54mThe Future of the Past – Legacy Will Stay With Us
32mClojure, Java 9, and You
48mLegacy, for lack of a better word, is good
01h 11mClean Coders Hate What Happens to Your Code When You Use These Enterprise Programming Tricks
