{
"$type": "site.standard.document",
"content": "---\ntitle: \"Livecoder-in-the-club as a system\"\ndescription: \"Using cybernetics and Donella Meadows' leverage points to understand---and improve---the system of code, music and humans in a livecoding gig.\"\ntags:\n - cybernetics\n---\n\nimport Picture from \"@/components/Picture.astro\";\n\n<p class=\"post-subtitle\">\n understanding and intervening in complex flows of software, music and humans\n</p>\n\n<div class=\"hl-para\" markdown=\"1\">\n\nHere in the [School of Cybernetics](https://cybernetics.anu.edu.au/) we are\nbuilding our capability in cybernetics—its histories and\npossibilities—and working out how each of us will contribute to the new\ncybernetics for the 21st Century.\n\nThis blog post, written for a general audience, is part of a content development\nsprint, written in reponse to the task of developing a short (1000 words)\npersuasive argument about the role and value of cybernetics as an approach to\nshape futures through and with technology.\n\n</div>\n\nIf you follow this blog, you'll know that I'm a [livecoder](/livecoding/). I\n_code_ (i.e. write computer programs) to make music in a club setting, with an\naudience that just wants to dance and have a good time[^niche]. If you've never\nseen it before, here's a 10min video of my collaborator\n[Ushini Attanayake](https://ushini.com) and I.\n\n<div style=\"padding:56.25% 0 0 0;position:relative;\">\n <iframe\n src=\"https://player.vimeo.com/video/592452477?color=be2edd\"\n frameborder=\"0\"\n allow=\"autoplay; fullscreen; picture-in-picture\"\n allowfullscreen\n style=\"position:absolute;top:0;left:0;width:100%;height:100%;\"\n title=\"Ushini &amp; Ben live @ ACMC&#039;21\"\n ></iframe>\n</div>\n{/* Script removed during migration */}\n\nBetween the code, the thumping music, the dancing humans, and all the other\nglorious complexities of live entertainment, there's certainly a lot of\ndifferent stuff going on. You might find watching a livecoder in action to be\nentertaining, or impressive, or bewildering, or all of the above. Most of all,\nwhen you see/attend a livecoding gig for the first time, I bet that your initial\nfeeling is one of _what is going on?_\n\nIn this post I'm going to use some ideas from cybernetics to try and help you\nmake sense of a livecoder performing in a club, in part to help you understand\nfor what it _feels like_ I'm doing when I do it. From there I want to think\nabout ways to make livecoding even better, that is, to figure out put on a\nbetter show for the adoring crowds.\n\n[^niche]:\n It's a pretty niche activity, but there's an\n [international community](https://toplap.org) of us, and if you're\n interested then you can\n [follow me on bluesky](https://bsky.app/profile/benswift.me) to hear about\n upcoming gigs.\n\n[Cybernetics](https://www.youtube.com/watch?v=kx79HLLboT8) is all about\nlooking at and reasoning about **systems** with _goals_, interacting with and\nconnected to their _environment_ via perception/action _feedback loops_. These\nsorts of systems exist at all sorts of different scales (big/small, fast/slow,\nold/new, cheap/expensive, etc.) and they're\n[fractal in nature](https://www.goodreads.com/book/show/10698938-the-fractal-organization)---it\ndoesn't matter what level of \"magnification\" you look at, each component of a\nsystem is itself a system of interacting components, and each system is itself a\ncomponent interacting in a larger system. But since that's all pretty abstract,\nlet's return to the example of the livecoder-in-the-club. This is written in the\nfirst person, but other livecoders may have similar understandings of their own\nlivecoder-in-the-club practice.\n\n- I start with a full tank of **brain juice** which allows me to work on tricky\n coding problems. But it's mentally taxing. When I'm happy, rested & in the\n zone, I feel like I've got a full tank, but writing code takes mental energy,\n and so writing the code in the performance drains my brain juice until I'm\n cooked, and then I can't write any more code (or at least will write bad/buggy\n code) until I recharge.\n\n- To write the **code** I tap my fingers on the keys of my keyboard. I use a\n [specialised program](https://emacs.sexy) for this (i.e. I don't write it in\n MS Word) which has a bunch of features to help, like different colours for the\n different parts of the code (e.g. functions vs variable vs numerical parameter\n values), and auto-completion, and inline documentation/help about the\n particular bit of code that I'm working on. This code is also projected onto a\n big screen in the club so that the dancers can look at it (or not).\n\n- As the code runs, it generates **music**. Different parts of the code are\n responsible for different parts of the music, and I try and give the functions\n & variables in my code human-readable names (like `piano`) so that the\n correspondence between the code and the music is clear-ish. The music will\n only be generated if the code is running nicely (i.e. without bugs/errors) and\n is hooked up to the PA system in the club. If I crash the program (or if\n someone unplugs the PA) then the music will stop.\n\n- The people in the club---people dancing, people chilling at the bar, people\n watching the code on the screen---are collectively having an experience which\n (hopefully) is giving them **good vibes**. Obviously this is a _huge_\n oversimplification, and the extent to which any individual is enjoying\n themselves (and therefore contributing positively to the amount of good vibes\n in the room) depends on all sorts of things. But, in a real sense, the\n creation of **good vibes** in the room is the goal of the live coder---or at\n least it's _my_ goal when I perform in this situtation. So I (like any\n performer) feed off the good vibes, replenishing (to some extent) my brain\n juice.\n\nIt's a bit clearer to see in a picture:\n\n<Picture\n file=\"posts/livecoder-in-a-club-system-diagram.webp\"\n alt=\"system diagram for the livecoder-in-a-club system\"\n/>\n\nSo, clearly,\n\n> a livecoder is a machine for turning **brain juice** into **good vibes** (via\n> **code** and **music**)\n\nwhich is a nice way to think about it, and actually is a relatively accurate\npicture of what I _feel_ is going on when I'm performing.\n\nHaving laid out the system, the next question is what cybernetics can\nactually do with it. A few things are worth noticing in this account:\n\n- there are different \"stocks\" (reservoirs of brain juice, code, music and good\n vibes)\n\n- there are various flows between those stocks, and in both directions (e.g. I\n turn brain juice into code by typing at my keyboard, but I also receive\n information about what the code looks like from my laptop screen, via my eyes)\n\n- there's a goal: to put on a good show for the audience to enjoy (to increase\n the stock of good vibes in the room)\n\n- the system includes closed loops, and so is capable of feedback\n\nA key principle of cybernetics is that the structure of the system---what the\nparts are, and how they relate to one another---determines the behaviour of the\nsystem. But anyone can sketch out a (highly contestable) jumble of blobs and\narrows to describe whatever thing they're interested in. What do we gain from\nseeing things in this way?\n\nThis is where another key idea---and person---in cybernetics/systems thinking\ncomes in: Donella Meadows'[^is-meadows-cybernetics]\n[Leverage Points: Places to Intervene in a System](https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/).\nThe key idea is this: once you've mapped out your system, you need to know where\nthe most effective \"intervention points\" to try and implement change? If you're\ngoing to expend energy to make things better, where should you focus that energy\nto get the most _leverage_?\n\nIn the livecoder-in-the-club system, to make changes to the system in service of\nthe the goal (as stated above) of creating maximum good vibes. One obvious\nsolution is to start the gig with a bigger reservoir of brain juice (either by\nhaving a good night's sleep, popping an adderall, or whatever). Or it could be\nto start with a larger code reservoir by starting with a bunch of code\npre-written[^blank-slate-code].\n\nHowever, Meadows' rules for leverage also suggest that some interventions\nprovide more leverage than others[^different-interventions]. For example,\nchanging the flow rates (leverage point #10) is likely to have more impact than\njust changing the sizes of the stocks/buffers (leverage point #11). This implies\nthat changing the rate at which I turn brain juice into code (perhaps having a\nnicer keyboard, perhaps having better code auto-completion support, or perhaps\njust good-ol' _practice_ to improve my coding skills) is likely to be more\nimpactful than starting with a bigger store of brain juice (so, thankfully,\nthere's no need to buy shady adderall on the dark web). Will Larson (who has\nbeen a software engineering leader at Calm, Stripe, Uber, and Digg)\n[has some interesting ideas on systems thinking as applied to software development](https://lethain.com/systems-thinking/)\nthat I'm keen to think more about as well.\n\nFor even greater leverage, there are interventions which are related to\nrestructuring the system itself, for example adding new information flows\n(leverage point #6). The dancers can already see the code, but what if I was\nhooked up to a live [EEG](https://en.wikipedia.org/wiki/Electroencephalography)\nso they could see the current state of my brain juice?[^eeg]. And even higher up\n(in terms of leverage) is changing the goals of the system itself (leverage\npoint #3). Why _do_ people come to a club to dance and have good vibes? What if\ntheir goal was different?\n\n[^eeg]:\n Coming up with a reliable, portable EEG machine which can measure a useful\n biometric signal which corresponds to an individual's perceived current\n level of brain juice is beyond the scope of this blog post.\n\nNow, the thing about leverage is that it doesn't guarantee good or bad outcomes,\nit just means you for a small amount of input you see a large effect in the\noutput. Figuring out where to intervene in the livecoder-in-the-club system is\none thing, figuring out how to intervene so that the changes are positive is a\ndeep challenge. Leverage means that when things go well they go really well, but\nthe opposite is also true (e.g. with margin calls in a bear market). I feel like\nthis is an especially apposite point for programmers, because the cheap leverage\nafforded by software is catnip for programmers, but presents some real dangers.\n(as\n[as Maciej Cegłowski puts so eloquently](https://idlewords.com/talks/sase_panel.htm)).\n\n[^is-meadows-cybernetics]:\n [Donella Meadows](https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/)\n tended to prefer terms like \"systems thinking\" and \"systems change\" rather\n than using the term \"cybernetics\" directly, but she certainly was involved\n with some of the key people & events in the cybernetics story, and her work\n is highly relevant to cybernetic ideas. Plus,\n [Google Books categorises her work under _Computers > Cybernetics_](https://books.google.com.au/books/about/Thinking_in_Systems.html?id=leE8R9pehg4C&redir_esc=y),\n and you _know_ the Big G is never wrong about that stuff.\n\n[^blank-slate-code]:\n This is actually a subtle point in livecoding. I (along with some other\n livecoders) am committed to starting each gig \"from scratch\" with a blank\n code page. However, I've written a lot of library code ahead of time to\n provide me with nice abstractions for making music with code, and I use that\n (hidden---not on the screen) from the very first line of code that I write.\n Thinking about the livecoder-in-the-club system one question that I'm\n pondering is whether that library code constitutes a larger stock of code,\n or whether it's a restructuring (an increase) of the flow rate from code\n into music, or both.\n\n To make things even more complicated, and there's _kindof_ a blurry line\n between where the code ends and the music begins in livecoding (i.e. there's\n the code you see on the screen, which is the code that I'm writing &\n executing \"live\", but there's also a bunch of pre-written code in my\n operating system's audio plumbing just to get the music to come out of the\n speakers properly).\n\n[^different-interventions]:\n There's not enough room in this blog post for a full \"systems change\n analysis\" of the livecoder-in-the-club system according to all 12 leverage\n points, but if you're interested I do recommend you\n [check out that article](https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/)\n as a starting point.\n\nSo what's the point of all this? Obviously the livecoder-in-the-club system\ndescribed above is an oversimplification; it makes certain things easy to see but renders other things\ninvisible, and every aspect of both the components (the things it talks about)\nand their relationships (the connections between them) is contestable. But\nthat's one of the benefits by laying things out like this---we can at least see\nthe things that we're explicitly considering, and we may well need to add new\nthings to the model for consideration (and examine all the new connections and\npotential feedback loops those new things create).\n\nMy main goal here is really just to provide a worked example of how ideas from\ncybernetics and systems thinking can help us move beyond just describing things\nto figuring out where to place our energies to effect change---where we'll get\nthe most leverage. Being the best livecoder I can be is a lifetime goal, just\nlike any other instrumental or artistic practice. I'm keen to keep using the\ntools of cybernetics to push in that direction, and bring the assemblage of\ndancing bodies of the livecoder-in-the-club system with me for the ride :)\n\n## Appendix: Meadows' _12 Places to Intervene in a System_\n\n:::tip\n\nNote: these are taken straight from the\n[Donella Meadows foundation website](https://donellameadows.org/archives/leverage-points-places-to-intervene-in-a-system/).\n\n:::\n\n_(lower numbers = less effective, higher numbers = more effective)_\n\n<ol reversed>\n\n<li>Constants, parameters, numbers (such as subsidies, taxes, standards).</li>\n\n<li>The sizes of buffers and other stabilizing stocks, relative to their flows.</li>\n\n<li>\n The structure of material stocks and flows (such as transport networks, population age\n structures).\n</li>\n\n<li>The lengths of delays, relative to the rate of system change.</li>\n\n<li>\n The strength of negative feedback loops, relative to the impacts they are trying to correct\n against.\n</li>\n\n<li>The gain around driving positive feedback loops.</li>\n\n<li>The structure of information flows (who does and does not have access to information).</li>\n\n<li>The rules of the system (such as incentives, punishments, constraints).</li>\n\n<li>The power to add, change, evolve, or self-organize system structure.</li>\n\n<li>The goals of the system.</li>\n\n<li>\n The mindset or paradigm out of which the system — its goals, structure, rules, delays, parameters\n — arises.\n</li>\n\n<li>The power to transcend paradigms.</li>\n\n</ol>\n",
"createdAt": "2026-05-13T23:14:49.810Z",
"description": "Using cybernetics and Donella Meadows' leverage points to understand---and improve---the system of code, music and humans in a livecoding gig.",
"path": "/blog/2021/11/11/livecoder-in-the-club-as-a-system",
"publishedAt": "2021-11-11T00:00:00.000Z",
"site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
"tags": [
"cybernetics"
],
"textContent": "Using cybernetics and Donella Meadows' leverage points to understand---and improve---the system of code, music and humans in a livecoding gig.",
"title": "Livecoder-in-the-club as a system"
}