I’ve become absolutely fascinated with Mawaru Penguindrum’s symbolisms in the last couple of days I just had to analyze what is going on. If you haven’t seen Mawaru Penguindrum then this analysis won’t make any sense. Spoilers ahead.
I’ve always wanted to know how big programs work, and to me the Racket implementation appears big. It’s pretty old and feels clunky. Nevertheless, let’s dive in to see if we can make sense of the code.
A macro is central in any Lisp and must be mastered in order to master the language. However, Racket is in a state of macro chaos - at least in the official documentation. There’s define-syntax-rule, syntax-parse, syntax-case, and so many more. How do we make sense of it? In this tutorial we’ll investigate syntax transformers in Racket so we can get a complete picture.
This is a tough essay to write. Every time I visit hacker news or read anything new about development I get frustrated and annoyed by the ignorance that prevails in software engineering. Why? Because people are not only reinventing the wheel, but making small languages/frameworks to satisfy their domain needs. I say it’s a waste of effort to do so. Do we really need another framework on top of JS to do one thing better? A framework that won’t be composable with other frameworks. It’s another metaphoric monkey-wrench in the machine. And what about languages? "Hey guys I made a new language called Leaf", "Hey folks I’ve made a new language called Loop", "Hey people ..."... All this effort is wasted. Why?
A lot of people like to think they are “non-violent.” Generally, people claim to “abhor” the use of violence, and violence is viewed negatively by most folks. Many fail to differentiate between just and unjust violence. Some especially vain, self-righteous types like to think they have risen above the nasty, violent cultures of their ancestors. They say that “violence isn’t the answer.” They say that “violence doesn’t solve anything.”
They’re wrong. Every one of them relies on violence, every single day.