CJ Eller

Classical Guitar by Training, Software by Accident

There's a fascinating distinction between economic & biological growth Magma Collective asks in their piece Seeding the Commons (from issue 01 of COMPOST Magazine):

Biological terminology has also been appropriated in our current economic systems: growth is a term that has been contorted into a singular metric of quantity that all too frequently and systematically destroys diversity. Can we reconfigure growth to mean richness in difference? Flourishing interdependent diversity of networks, network protocols and forms of interaction? What does this mean for digital decay, and can the decay of files, applications and networks become some form of compost, or what might be the most dignified form of digital death and rebirth?

I love the idea of biological growth in a web sense. Can't help but think of Candice Millard's description of the growth of Amazonian vines from The River of Doubt: Theodore Roosevelt's Darkest Journey:

With an alacrity that can seem almost human, rain forest vines send out tendrils that reach out delicately to encounter a potential host, then curl to grasp it once it is found. A principal risk of the vine strategy is the danger that the host tree will sway and break the vine so many vine species have adapted by developing slack in the form of elaborate loops, curls, and coils, lending the rain forest the distinctive draping character that Roosevelt could so easily see and admire. Another adaptation to this and other dangers is for the vine simply to abandon its connection to the ground and to derive its water and nutrients entirely in the canopy, becoming an air plant or epiphyte, a category of plant that has generated literally thousands of species, including bromeliads and orchids. After establishing themselves in the canopy, some epiphytes, in their turn, then reverse the entire process, sending aerial roots downward to establish a connection to the forest floor.

How to make a web vines...

Coffee beans sometimes list the flavor notes on the bag. Just the other day I saw a roast at a coffee shop that has notes of a lemon drop — it tasted exactly like that!

But did it?

When I make coffee from beans that just have something like “House Roast” on the label, something strange happens. I cannot make out the taste. The lack of a description leaves my brain not connecting the sensations on my tongue to a flavor.

Words add more to the experience of how coffee tastes then I cared to realize.

This instance is one of a heuristic common to all of us called reification. Social critic Neil Postman defines reification in his essay “Defending Against the Indefensible” as “confusing words for things.” He goes further to describe it as ignoring these three simple notions:

  • that there are things in the world and then there are our names for them
  • that there is no such thing as a real name
  • that a name may or may not suggest the nature of thing named

There always is reification in marketing. As Postman mentions, “because people confuse names with things, advertising is among the most consistently successful enterprises in the world today.” Labelling flavor notes for coffee beans does no harm to anyone. Reification, however, can rear its head in harmful ways if we confuse words for things.

It reminds me of a story about scholar Alfred Korzybski (this telling is via Wikipedia but I initially heard of the story from Tim O’Reilly’s book WTF?: What’s the Future and Why It’s Up to Us:

One day, Korzybski was giving a lecture to a group of students, and he interrupted the lesson suddenly in order to retrieve a packet of biscuits, wrapped in white paper, from his briefcase. He muttered that he just had to eat something, and he asked the students on the seats in the front row if they would also like a biscuit. A few students took a biscuit. ‘Nice biscuit, don’t you think,’ said Korzybski, while he took a second one. The students were chewing vigorously.

Then he tore the white paper from the biscuits, in order to reveal the original packaging. On it was a big picture of a dog’s head and the words ‘Dog Cookies.’ The students looked at the package, and were shocked. Two of them wanted to vomit, put their hands in front of their mouths, and ran out of the lecture hall to the toilet.

‘You see,’ Korzybski remarked, ‘I have just demonstrated that people don’t just eat food, but also words, and that the taste of the former is often outdone by the taste of the latter.'”

I am exploring Micah Alex's Techo-Futures from Bidar, another piece from the first issue of COMPOST magazine. There's a passage that's worth mentioning:

“Technological projects in rural India always come with a solutionistic gaze. We want to solve everything through technology. It is imperative that we bring the role of technology down a peg and realistically look at what we are introducing and if it can, truly, “solve” anything. It is much more pragmatic to introduce technology as a new way of generating, storing and disseminating cultural practices among many many others and avoid the political glorification of it.”

Context: The Indian government is pushing hard for newer digital transactions and infrastructures without an understanding of all that needs to come before that, including examining their impact on communities’ human rights and privacy.

“The solutionstic gaze” is such a poignant way to put it. Technology doesn't have to solve everything. Knowing how technology can be used in a solution is better than blanketing technology all over a solution. And that means understanding what people need — empathy.

There's a great story from a great talk by Darius Kazemi where he refers to a well-meaning developer asking what their team could build for activists to use. This was the wrong question. From prior experience with activists, Kazemi mentions that if the work was understood from an empathetic lens, the developer would first learn as much as she could from the activists rather than focusing on technology's solutionstic gaze. What are the problems the activists are hoping to solve? It’s not about what you can build with the latest technology but how you can empower people.

Because, as Kazemi mentions, sometimes that means less technology, not more of it.

I always wondered what happened to cron jobs when something like Daylight Savings occur. Do they keep their time or waver with the hour? It seems like the answer depends on what flavor of cron you're using.

In my case, I am using Amazon EventBridge to schedule a Lambda function that publishes to my blog. Typically the posts publish Monday through Friday at 5:00pm EST. So my assumption was that AWS would adapt to the time change. Turns out they don't — posts now go out at 6:00pm instead of 5:00pm.

At first I was alarmed but now I am relived. That extra hour is actually a blessing in disguise. I start a new job next week, and God only knows that a 5:00pm publish time will be harder to hit while acclimating to new responsibilities. An extra hour will be all I need (at least I think...).

This reminds me of last Valentine's Day. I wanted to surprise my wife with some breakfast, so I scheduled the order online for Valentine's Day morning. As soon as I confirmed the order, the application glitched on me and said my order would be ready in 30 minutes! Panicking, I made an excuse to go to the grocery store. This gave me the alibi to grab flowers and goodies along the way to the restaurant — things I didn't get beforehand. I was able to hide everything, heat up breakfast in the morning, and still surprise my wife. All because the application didn't do what I initially wanted.

How curious are these glitches that turn out to be just what you needed.

My wife and I decided (mostly her) to hang up DaVinci horse prints in our home office. Why? Apparently depictions of horses in motion channel a focus on success. She told me about how this reasoning is grounded in Feng Shui. As Wikipedia puts it,

The feng shui practice discusses architecture in terms of “invisible forces” that bind the universe, earth, and humanity together [...]

At first it sounded peculiar, but the thought of inanimate objects truly being animate resonated with something I recently read from George Dyson's Analogia: The Emergence of Technology Beyond Programmable Control. Dyson mentions Samuel Butler, a 19th century writer who wrote, amongst other things, a forward-thinking article called “Darwin Among the Machines.” It raised the possibility of evolution occurring within machines, leading to the dystopian machine takeovers we'd write about almost a decade later. Dyson mentions how this thinking led Butler down a path of everything being animate:

Butler concluded that it was impossible to draw a precise distinction between living and nonliving things, or to give a precise definition of life that would not, sooner or later, include machines. “The only thing of which I am sure,” he argued in 1880, “ is that the distinction between the organic and inorganic is arbitrary; that it is more coherent with our other ideas, and therefore more acceptable, to start with every molecule as a living thing, and then deduce death as the breaking up of an association or corporation than to start with inanimate molecules and smuggle life into them.”

This builds off of feng shui in a way — everything possesses “invisible forces” that binds us together. No distinctions between animate and inanimate objects.

I appreciate how Zach Mandeville channels this thought process into empowering people to build a better web in his piece Sacred Servers (from COMPOST magazine, which I cannot plug enough):

There is no separation. We are all in it together, overlaid and coexistent. And, from my view, to declare a space of ideas and the mind to be necessarily separate from the world is to deny the world the aliveness and agency it holds.


We can give as much as we do now, but to networks and servers that are actually ours. We can share our hopes and memories directly to one another with no central force monitoring and feeding off our words. We can acknowledge the inchoate energy we build beneath our fingers, amplify it through our communities and families, and store it in revered spaces that hold our own generational force. We can use technology that is intentionally small, local, and humble to the natural world.

I am really taken by this piece by Shafali Jain called “Until the Cows Come Home” from issue 01 of COMPOST magazine (which you should take a look at if you haven't already). Shafali is a part of a group called Janastu. I'll let her describe what the group does:

We, at Janastu, build decentralised Community Owned Wi-Fi [COW] mesh networks to provide low-cost last mile internet connectivity in remote areas. We raise questions about technology and different learning mediums for communities, and develop hypermedia annotation tools for archival needs of communities for inclusion of low-semi literates as first-class internet citizens, and not as next billion users.

In the piece, Jain writes about the Aamne Saamne Pi (ASPi) and how it's used in the rural Indian village of Mirzapur.

We have been hacking together more of an unPC: a not-so-personal computer, with a Raspberry Pi core, called the Aamne Saamne Pi. It is a community-owned white box laptop which facilitates the creation, discovery, and re-narration of community expressions. It also enables the use of personal devices as extensions of community-owned network devices. We introduced ASPi to a group of girls in a village called Mirzapur [Uttar Pradesh, India] as a platform to aid in social, decentralised, and divergent self learning. They were called Garima Girls — aged between 16 to 22, they are adversely affected by the pandemic and struggling against the stigma of even owning a phone on account of patriarchy.

Our primary objective was to encourage rural women, students, young women in traditional labor and skill contexts — typically low literate, as well as unconnected or unable to discover or publish useful content on the internet — to find purposeful online communities to actively engage with for their collective needs of skill development and entrepreneurial aspirations. Our engagement was complemented by online sessions and supportive activities to spur coworking spaces, and witness emergent experimentation in rural settings rather than the prescriptive ‘training.’

I was able to find a great video from Janastu demonstrating the ASPi in action.

The important work Shafali and the folks at Janastu are doing challenges the Western conventions I take for granted every day — the always connected, literate web. There are rural & low-semi literate communities that a huge chunk of the web unrightfully leaves off. How to bring them on in an empathetic, empowering way?

I am also fascinated by the idea of personal devices as extensions of community-owned network devices. This is something I don't think about when using the web in the West. The most community-owned network device I can think of is the router at local coffee shops, and even those aren't so much community-owned. There should be more consideration on that part. What do community-owned unPC's look like? I think the not so distant year Zach Mandeville lays out in his COMPOST piece offers such a perspective.

Shafali should rightfully close this post, so here's more from her piece:

In a world driven by stereotypes and discrimination, can technology challenge the biases of our physical world instead of deepening them? Can we imagine a space that reflects and produces the richness of our world’s multiple forms of knowledge? This project is an attempt to subvert the bias of the text heavy internet, break away from western notions of digital technologies impacting society, and come up with alternate vernacular narratives with community-owned devices and mesh networks at its heart.

Something curious happened when I was working on a project that uses Gitlab CI/CD. My project was broken up into a build, deploy, and test stage for a web server hosted on an AWS EC2 instance. Every time it got to the test stage (which ran a CURL command on the web server's IP address to see if the site was up), the CI/CD pipeline would fail. I couldn't make out why this was the case.

Then I took a deeper look at the pipeline and made out why. The deploy and test stage bled into one another. I made it so that the deploy stage simply ran a job to create the resources on AWS needed for the web server. It didn't wait for the creation to finish. That was another part of the test stage. The test stage would wait until the web server was created before it ran the CURL command. But I suspect there might have been some time between the resources being created and the web server being accessible —something i didn't take into account at all.

The problem was that the deploy and test stages blended into each other. It made me think of how being musical is blending measures together to form a beautiful piece of music. You don't want to be rigid. There has to be flow from one passage to the next. But the problem here is that what's musicality in playing classical guitar is disaster in CI/CD pipelines. It made the process all the more messier. Why would you wait for the deploy to be done when you were on the test stage? Rigidity had to save the day, so I added to the deploy stage that it had to wait for the resources to be done in order to move onto the next stage. Then, when onto the test stage, it would only run the CURL command and nothing else — not wait for the resources to be made.

Of course I'm probably off as to why the CURL command didn't work. I can always edit my pipeline code to make it even better. Regardless, this was a curious case to me of how mixing metaphors with programming (oh it's just like music) can collide when applying to the real world, that sometimes the thing that you shy away from in one field is what will help you in another.

Thanks to David Blue, I've discovered a great podcast called Command Line Heroes. Just wanted to note a moment fromthe second episode of the second season that highlights the amazing work of Rear Admiral Grace Hopper. I'll let Saron Yitbarek, host of the podcast, describe her:

[Grace Hopper] was the god mother of independent programming languages. The woman who used compilers so we could use human language instead of mathematical symbols.

This led into a fascinating discussion between Yitbarek and write/musician Claire Evans about compilers as empathy driving machines. Yitbarek begins...

The spirit of the compiler that does all that work, it's motivated by a sense of empathy and understanding.

Claire's got a theory about why Hopper was the woman to deliver that change. It has to do with Hopper's work during World War II.

Enter Evans' theory:

[Hopper] was doing mine sweeping problems, ballistics problems, oceanography problems. She was applying all of these different, diverse disciplines representing all the violent, chaotic, messy realities of the war and translating them into programs to run on the Mark I computer.

She knew how to do that translation between languages. And I don't mean computer languages, I mean like human languages. She understood how to listen to somebody who was presenting a complex problem, try to understand where they were coming from, what the constraints and affordances of their discipline was and then translate that into something that the computer could understand.

This leads to Yitbarek's conclusion:

Compiling as an act of empathy and understanding. I think we can all keep that in mind when we learn new languages, or wonder why something isn't compiling at all. The compiler's job should be to meet your language where it lives.

Grace Hopper knew that once humans could learn to speak programming languages, and once compilers began translating our intentions into machine language, well, it was like opening the floodgates.

I love this strong connection between Hopper, empathy, and how the compiler opened up the possibility of programming languages of all stripes. This reminds me of a recent episode of Screaming with the Cloud where Jess Schalz talks about empathy driven development as a workflow engineer:

Rather than test driven development, I tend to do empathy driven development because that actually guides the design of my product. So, I tend to ask people what problem they're trying to solve, and how that problem makes them feel, and then I can actually address the root of the problem because nine times out of ten in my experience, whatever somebody is actually frustrated with is not necessarily the problem they said they're trying to solve. So, it lets me view their problems in a very human way that I think is very valuable.

Again this idea of meeting people where they are. Empathy keeps popping up in software and for good reason. How can we get more of it?

Even after learning how to read it, sheet music still intimidates me. How do I learn 32 to 64 measures worth of music? Whenever I get overwhelmed by a piece, I return to what I learned from my teachers. Learning a piece lies within sheet music's structure — measure by measure.

It sounds overly simplistic at first, but when you sit down and tell yourself you're going to learn a single measure of music today, things become less overwhelming. Your focus turns on getting a chord just right, on practicing to make a particular passage flow better. One measure turns into another measure which turns into another measure. Before you know it, you can play the entire piece of music.

I've observed myself taking this measure by measure approach into my programming projects. I turn aspects of a project into measures of music I have to learn.

Just today I gave myself a particular task to work on for an AWS project that requires a fix on a Gitlab CI/CD pipeline. I've broken down the fix into a couple of gestures that form a measure within my mind. Do x, see if it does y, if not then add something to a script and try z — that's one measure. Then I work through this like I do with a measure of music. It allows me to see progress, even if it's the only thing I do with programming for the day. Like with music, one measure turns into another.

And before you know it, there's a project ready to be deployed.

Zach Mandeville's rendering of a “not so distant year” from Sacred Servers, a piece from issue 01 of COMPOST Magazine, is so compelling that I have to post the section here in full. Read the rest when you get the chance.

In the spring of a not so distant year, I will return to my hometown to visit the Server Farm. It’s a cheeky title , as the “farm” is just a shed in the center of a garden. In between the rows of community allotments — beans growing up the strings of homemade trellises and tomatoes ripening beneath protective mesh — sits a stark, wooden hut. Its eastern wall displays a calendar against a soft paper-like screen. Its roof is covered in solarpanels reflecting back the sky.

Inside is an eclectic set of computer towers and old laptops. There are bright, plastic bins holding wires and parts, a pegboard of handtools and pamphlets, and a bundle of wires snaking neatly through the machines to a ceiling junction.

This is one of the larger nodes in the town’s network, a condensed form of the town’s cloud. Each node has built up its own personality through the last couple of generations, and this one celebrates the earth and active hands. They’ve set up a tool library in the gathering house next door, and here they host its digital counterpart: a p2p library of downloadable software, schematics, and plans.

Outside is a group of orange-vested children circled around an adult with her hand in the air, holding a spade. It’s the first day of sudo club, a program to keep kids busy during school breaks, where they learn all types of community gardening: from growing a plant from a seedling to installing a mesh repeater on their neighbour’s roofs. It’s a multi-year program of increasing complexity that’s ended up quite popular with the kids. They like the big feast at harvest and leaving funny comments in each others code. It’s rumoured that they’re also using the skills to build their own private network, where they post embarassing memes and talk with fake confidence about drugs.

There’s a café downtown — popular with college freshmen — with homemade lavender shrubs and an ornately decorated Scuttlebutt pub. Here, they can onboard to the town’s social network while they read the “disorientation guide”, with its evocative descriptions of the best local sites, each with its own dumb, regional pun as a web address.

But my favourite node is in the old synagogue by the post office, now the headquarters for our most famous record label. The top floor has the recording studio and a row of flat file cabinets holding every poster of the shows held in town. In the basement is the performance space and server room, a concrete floor with a tower of raspberry pi’s in one corner. This tower, covered in stickers and white-markered tags, holds every album ever made in my town and is the best sync point to the global punk2punk stream: a decentralized, digital, international pop underground.

The label is known for its bravely messy, femme twee sound, but also for creating a tone-based querying language (patched into the punk2punk protocol) that makes it possible to follow a guitarist through the notoriously incestuous band lineups of small-town scenes. Among certain circles, it’s pretty huge.

Each summer, they have a music fest that people come to from all over. On the last night, the label hosts a sleepover in the server room. I will fall asleep beneath the blue glow of our tower, listening to the full sonic history held in its hum. A travelling band plays a droning ambient piece, connecting us to something larger.

Each of these town nodes are small, requiring little more than half a morning’s sun to stay running. They’re more a point of pride than necessity, since the townfolk can connect directly to each other, through personal servers held in all our homes.

In my family’s place, we have a couple servers. One is up by the bay window and hosts a pub, a couple chat servers, and an archive of local comic strips. It connects us to the main town mesh and the greater internet. The other node is at our home’s western wall. It’s on a small altar surrounded by family pictures, placed between a selenite pillar and the St. Christopher’s medal my grandma had clipped to the visor of her car. This server holds the memoir my grandmother wrote, and all the pictures, recipes, sound, and stories we have of her. This node connects to a small, locals-only network, a memorial space created in the air between our houses. I will remember the swell of peace I felt when I uploaded her memoir, knowing it would soon criss-cross over all her favourite places, in the loving mesh that hovers over her old town.

In the not-so-distant future I will have new, inarticulate feelings — moments that feel obvious in the chest, but foolish to say. Like how there’s something in the air here that feels different from anywhere else, a radiance in the radio waves that feels like home.