📕 subnode [[@jakeisnt/macros are expressions of freedom]] in 📚 node [[macros-are-expressions-of-freedom]]

Metasyntactic levels give the user of a system freedom.

Soccer. There is one rule for casual play: do not touch the ball with your hands. Everything else follows, and all of the rules are develoepd around this beautiful, simple principle. The structured game falls out from this very simple idea.

Lisp

Everything is a list. Actually it turns out that even common lisp doesn't have proper homoionicity lol, but if your program has a list and you have this wild 'eval' function that can evaluate a list, turns out you can consdtruct the world. CPS is less important and actually distracting. CPS feels like a rule that builds complexity rather than freedom; tools like call/cc introduce another system of evaluation that is quite difficult to handle in addition to the traditional one, and programmers wan the value in their head; they don't want to have to think about all the continuations we have in the current context, they just want to think about what i can get from what I have right now and where it goes and to forget about the rest. "CPS is for old people". - Matthias Felleisen

The biggest thing I don't like about lisp is that it obscures details about the underlying system; it assumes some model of infinite memory.

Forth

Eveyrthing is a stack adn we have this simple stack machine that can do anything. Insanely efficient, and unlike even lisp we don't need multuple evaluation levels to properly metaprogram. We can just move functions around on the stack! This is not dissimilar to tactics, in that tactics keep in mind some order of application of a list of expressions and allow you to rearrange how they're applied in a metaprogram when proving theorems. Is a metaprogram the right word? I'm not sure.

I also like that stack langauges like forth, through their semantics, implicitly develop a memory model of the underlying system.

DJing

DJing is just a macro system for music. You have these completed tracks made by these beautiful artists, and you can approach whole-track modification after these products can be completed, ev en adding in new songs and ideas on top of them. You have this ver ysimple set of rules - you have control ovewr the position of the track and the volume of the waveform at particular points. and so much beauty falls out from that and from the music of others. djing is really a social event, a conversation with those around you. provide them the energy to hang out!

You can get "into the guts" of DJing as much as you want, and the same rules apply to every track! but it's this investigative, descriptive process of breaking down the waveforms of a completed song and extracting imperfect information from them. you're taking complete products and dissecting them to form new thing

Prose

Writing is inherently unstructured and we can ascribe any structure we want to it, which is beautiful. prose is unstructured conversation, and it's important for everything to be a conversation

Photography

reminds me of DJing; your role is only to highlight a particular perspective. you can control the "macro" elements but not the micro (photoshop can be avoided with better work and better practices!) and i love the practice of using lightroom "macros" to adjust the environment globally, and having some level of local change, but not being able to directly modify everything locally. ie if i'm taking a photo of a building i have no ability to modify the building, i must just observe it and try to frame it in the best way possible. this reminds me of worshipping, and maybe djing is worshipping tracks, but it is also having a conversation with the space you're inhabiting and with the creators, like programming

📖 stoas
⥱ context