CJ Eller

Community Manager @ Write.as — Classical guitar by training, Software by accident

Recently I created a script to help me play a wargame called Bandit. The rules of Bandit are simple — log into a level with SSH and find the password for logging into the next level. This can mean everything from searching for a hidden file to cracking a 4-digit code with a script.

This script doesn't help me solve any of Bandit's levels. Rather, I made the script to help me play Bandit — it automates the process of logging into levels and storing level passwords. These were things that tripped me up when initially playing the game. Typos and password mismanagement stalled my progress more times than I'd like to remember. Frustration brought up an interesting question...

Is it the game's fault for this?

Bandit doesn't keep track of your passwords. That's the player's job by design. Think about when you play a card game. You have to follow the rules and enforce them yourself. Some might call this laborious. Most wouldn't call it broken. That's the player's job by design.

But this is where it gets fun. As a player, you have the freedom automate some of those rules and progressions so you can focus on other aspects of the game. Not completely automate a game like digital solitaire, but take parts that are redundant and make them easier to deal with. This is where the Bandit script comes in. It doesn't solve the game for you, just makes logging on and storing passwords easier so you can focus on how to solve the levels.

The script is in no way a complicated project, but I think it echoes a point I keep running into time and time again — contribution happens at the seam of things (which reminds me of this awesome newsletter). The question is how to keep (generously) adding threads where seams are needed. How do you find the seams? How do you add your threads to the seam? How do you maintain seams? These questions are what makes contributing to projects so exciting.

It doesn't take much. Just start with a thread.

The command line mesmerizes me.

I never thought it'd come to that. That single blinking cursor intimidated me more than lines of code ever could. How did the command line grab a hold of me? Let's just say it might have involved some magic.

Before my essay I'd like to refer to a piece that helped me better articulate my fascination (as good writing often does) — Zach Mandeville & Angelica Blevins' rhapsodic introduction to the command line:

Beneath the visual surface of your computer is an old and powerful magic, a silent but quick stream of energy that the computer draws from for power. This magic is hidden but always present, like the sacred well held in the base of a cathedral.

This hidden place has many names: Shell, Terminal, Bash, Zsh, The Command Line. All of these names are correct, but incomplete; accurate to a part, but unable to describe the whole. Like all magical things, there are aspects of the command line always beyond our articulation.

Too, Like so many magical things, the secular world will always try to deform and defang it. Modern tech culture will describe the command line as an obscure productivity tool; something you learn only to impress other tech folk (a meaningless activity) or to become a “power user” (a meaningless phrase). Conventional tech wisdom will tell you that the command line is an intimidating, obscure, imposing place — impossible to learn and dangerous to use. This is only an attempt to hide its true nature: the command line is a place made entirely of our first occult technology, the word.

The command line is pure language, and to exist in it is to practice all the reality-shifting and world manifesting power of metaphor and dialogue. This is a place of empowerment, tangible creativity, and mystic bewilderment. While it can be dangerous, it’s also exceedingly helpful if you know how to listen.

Source: The Map is the Territory

Zach & Angelica get at the intimacy I find in the command line. You type in words and the computer responds in kind. Such a tight feedback loop begins an improvisatory jam session, each musician responding to what the other does. It starts to feel nothing like programming.

And that get's at the other aspect of Zach & Angelica's introduction — the command line's magic of pure language. You never think about how magical the command line is until you realize the things you can do with a couple words — start a server, connect to another computer, scan for open connections in your network, write to a file. The fluff of HTML, CSS, & JavaScript is removed. Publishing a blog post from the command line is more like an incantation than pressing a “Publish” button ever could be.

When paired with the ability to navigate, the command line turns the computer into a mysterious labyrinth. It's no surprise that early, text-based RPG's resemble the command line more than modern day RPG's. The first dungeon crawler was the command line. What's more, this is a dungeon you not only explore but construct yourself, adding new alley ways along with more knowledge of the magic latent within the machine. And that labyrinth can be interconnected with other labyrinths, until you get to a tangled, Borgesian beast — something like the Internet.

All of this isn't to gamify the experience of the command line. The more you use it, this talk starts to feel less like a metaphor and more like a reality. That is why I love the earnestness of Zach & Angelica's writing. The command line is a place of empowerment, tangible creativity, and mystic bewilderment. It reminds me of one of Arthur C. Clarke's Three Laws — a highly advanced technology is indistinguishable from magic.

The command line will continue to enthrall me for that reason.

Have you ever abandoned a habit that you cultivated for a long time?

For me it's music. I played guitar for years, went to school for it, played in bands, and saw myself taking up the life of a professional musician and music teacher. Just when I entered a PhD program for classical guitar, the path soured for me. That decision turned me away from playing the guitar as often as I did.

Now I find myself on the other end of the spectrum. Interacting on the web is all well and good, but I yearn for an analog interface to balance out the digital. Guitar gives me that reprieve to express myself without having to hit “Publish.” You pluck the string and the sound decays — how novel compared to words that seem to stick long after you publish them. (what would a blog post that decayed like a plucked note look like?)

There are some cases where the sound sticks. I recorded a bit of a piece I've been learning from Baroque lutenist/composer Silvius Leopold Weiss, a contemporary of J.S. Bach. Allegedly the two jammed frequently, improvising fugues together — the prospect of which is beyond me.

When you talk with people, overlap is bound to happen. Patterns emerge that connect disparate conversations together. How do you keep track of those connections in a cogent, meaningful way?

It could start with where the conversation happens.

I've been experimenting with using Are.na as a chat room. Conversation is had between text blocks that are exchanged in a channel for a span of time. After the conversation is finished, I use a script that imports the channel from Are.na to a blog post like this.

After having three conversations so far, I noticed that they kept drifting to the topic of tinkering on the web — whether messing with a theme or writing a lightweight web app to interact with your blog. How could I collect each of these instances of tinkering? Are.na's superpower is that a block can be connected to multiple channels. So all I have to do is create a separate channel dedicated to tinkering on the web. Now, if I notice a moment in a past Are.na conversation that highlights the topic, I add it to the topic's channel. Now the text block sits in the middle of a Venn diagram — both part of a chat log and part of a curated selection from conversations I have.

This simple gesture expands the meaning from which I can gather from conversation online. Not that the point of conversation is to ring it of value. The practice is valuable in and of itself, but my default position is often that of the sieve. Morsels of memory remain embedded in my mind but not for long — I soon forget them. And perhaps that is baked in so that I can continue to converse with people about the same things, lest I end up like Borges' Funes. However, I wonder if there is something to extracting a piece of conversation and using it like a theme upon which infinite variations can exist, as a first-class citizen on the web rather than a passing remark. The web already functions like this in many ways, but I think there's always room for purposeful experimentation.

That adage of history rhyming, not repeating — does it work on a smaller, local level? You always hear the phrase when talking about spans of centuries. What about a couple weeks, months, or years? One of my favorite parts about publishing writing on the web is seeing how your thoughts rhyme with others'. It becomes a fruitful game of noticing rhymes and nurturing the environment for new rhymes to occur.

I had written lately about making a single page site for my mother this Mother's Day. It got me thinking about a website more like a DM than a public media object. Brendan Schlagel saw this & noted how it reminded him of a blog post he wrote a couple years ago, “Adding Hidden Layers to Websites via Secret Subdomains” (source). Reading it was a joy, especially to see where our ideas “rhymed.” I particularly gravitated to Brendan's idea of a subdomain that was dedicated to a person:

yourname.brendanschlagel.com — could be either parlor trick or highly useful and innovative networking device! I could, after meeting someone interesting, quickly put together a one-pager with a personalized curated list of articles or other resources, links to more of my work, and other fun things. I could even have a template for this, making it super simple to make a new one for favorite new people I meet.

This got me thinking about how relationships with other people online could be curated differently. Brendan, for instance, has an ongoing blogchain with Tom Critchlow. What if that also lived on Brendan's site as tom.brendanschlagel.com? Maybe that site could also give context as to how the blogchain came about.

The “yourname” subdomain could also serve as a public log for conversation with a particular person. For example, I had a great chat with David Blue for a community project. What if that conversation and others could continue to live on its own subdomain? I played around with this on a simple Next.js Glitch app: david.cjeller.site. This form could be a great place for countless blog chats to live.

What's great about this “yourname” subdomain idea is the flexibility of execution — from networking and blogchains to anything else you could imagine. It reminds me again how online relationships can be filtered through conventions of social media platforms. Brendan's idea brings out a more bespoke web, a weird & wonderful web, a homegrown web. Something more than a video montage of the photos a friend & I are both tagged in on Facebook.

Adding Hypothesis to your blog brings about about the benefit of in-line annotation for your posts — contextual highlights & comments. That power of contextualization can also extend to the texts you quote within your blog.

The usual courtesy of quotation in blogs is adding a link to the source. When a reader clicks on that, they're taken right to the beginning. Any context from your post is erased. What if the link could retain some context from your thoughts around the quotation as they relate to your post? This is where the quotation linking to a Hypothesis annotation could prove useful. Take the below block quote as an example:

i think theseus would have enjoyed the world wide web in 1997; the adventure and excitement that it fostered. its labyrinthine shape full of passages, turns, tunnels, and the unknown. websites often eschewed the formal navigation systems we have come to rely on and expect in favour of more open-ended or casual solutions. moving around a site—much like moving around the web in general—was a journey that embraced the forking, wandering naturing of hypertext and allowed the user—with varying degrees of agency—to choose their own path through cyberspace, the hero of their own self-authored epic.

When you click Go to text, it takes you to a Hypothesis link — the highlighted quotation with a previous annotation of mine. The annotation can be as detailed as you want it to be. You could even just have the annotation link to your blog post (or the spot where you quote the passage). What's more, the Hypothesis link allows a reader to go beyond the quoted passage and read your other annotations of the text. Perhaps you wonder what the author thinks of other parts of the text she quotes in a post — now you can. These additional annotations could lead to other blog posts she's written that quote the text.

Interesting possibilities can come from extending annotations not only to your blog but to the texts your blog quotes — adding context to a post through intentional hyperlinks. I am reminded of a great point from Toby Shorin about finding a balance with the affordances the web can offer text:

This all suggests that a compromise must be struck between the coherence of a text and the new opportunities for knowledge work afforded by the fundamental capabilities of the medium: the internet’s connectivity, the screen’s frame rate.

Correspondence chess can mean many things — playing chess on a forum, through postcards, across email. Wikipedia even notes that “less common methods” include the use of homing pigeons. What these disparate means of correspondence share is that they map onto a single game — chess. As Glenn Adamson explains in Fewer, Better Things,

[Chess] is a pure abstraction, in black and white. You can make a chessboard out of any material you want, cheap or expensive, pencil on paper or ivory on wood, but it doesn't really change the game. That is why you can play by postcard. Chess itself is intangible, so it can go anywhere.

I find myself being more interested in figuring out what other means of correspondence could be used to play chess than the playing of chess. That bleeds into my fascination with personal publishing on the web. Putting words behind a link that someone can access (that mean something) is an abstract enterprise. From common to bespoke, there are so many ways to publish. It becomes a game in and of itself — tinkering around with the printing press rather than using it to print something.

But I find the relationship between publishing and tinkering to be a mutual one. The more you publish, the more you tinker your means of publishing. The more you tinker, the more you publish about your means of tinkering (among other things). Both feed into each other quite well if you let them. This blog is a testament to that. I hope I can keep reminding myself to do both — to not just fuss with the means of correspondence but to also play chess.

Instead of getting a Mother's Day card this year, I find myself hacking together a single web page to commemorate my mother.

While circumstance has brought this about, there's an odd feeling of why I hadn't thought about doing this before. Maybe I predominantly think of publishing on the web as a public affair. But now I am crafting a simple webpage that only one other person will see. Not by accident, but by design.

And yet I find this pattern elsewhere in my digital life — writing “blog” posts for only one person (via anonymous posts). Sometimes these posts are detailed help for a Write.as user that includes code blocks. Other times they are personal messages that won't fit in a Twitter DM.

We talk about direct messages as being a crucial part of social media, but I wonder if the same could be said of websites & blog posts. I wonder if blurring that line between public & private more explicitly can make writing HTML & blogging carry the same intimacy as writing a letter.

I've been thinking a lot over Toby Shorin's thread about the deeper ties that can be made between blogosphere discourse & Twitter discourse. A recent exchange I had on Mastodon, the decentralized microblogging network, concretized what were once abstract ideas — one possible way to deepen the ties between the blogosphere and microblogosphere.

So I am searching a hashtag on Mastodon and come across a blog post. The post in question was about how the author, Sajesh (@thumb@fosstodon.org), set up their blog — detailing some of the inconveniences he had along the way. Since I could help with some of those setbacks, I replied to the post & we had a friendly exchange.

A day passes and I get a notification on Mastodon — not from a personal account but from a blog's account. Sajesh wrote a follow-up post to the one I responded to the other day. I received a notification because Sajesh @-mentioned my Mastodon account in the post. This prompted me to reply to the blog post on Mastodon, happy that he established a smoother blogging workflow.

This exchange brought to mind one way to look at this tie between blogosphere discourse & microblogging discourse. A blog can still stand as a separate place to develop an individual voice. But what if a blog could also exist as a Twitter account of sorts?

This is one experiment happening with blogging platforms powered by the ActivityPub protocol. Since this protocol powers microblogging platforms like Mastodon, blogs can exist as microblogging accounts on these platforms — you can follow them like you follow Twitter accounts, reply to posts like you can reply to a tweet, & retweet posts in a similar fashion. Most of these imply a one way interaction. This is what makes the recent addition of @-mentions within blog posts so exciting. A blog post can be used as another way to start a conversation with someone on a microblogging platform. What was once a 280 character tweet could be 1000 words. That conversation could keep extending on the microblogging platform and/or break off into other blog posts that mention others — a hybridized exchange that eschews the rules of the typical comment section. I am reminded of a part in Toby's thread where he contemplates adding a comment section to his blog:

makes me wonder if I should add comments to my blog. I feel like the old style of blog comments just don't quite cut it for the modern web stack and ways we interact

(emphasis mine)

He's right — the old style of blog comments don't cut it. There has to be a better way to create ties between the blogosphere & places like Twitter where we already interact organically. As Toby put it, platforms like Twitter are our universal comment section. Why not have blogs take better advantage of the ways we already interact?

Are.na takes text and puts it into blocks. What immediately comes from this is to think of drafting posts more like construction — putting building blocks of text together to form a structure. A channel becomes a blog post.

But there's more to Are.na than this. Behind the noun of blocks is the verb of connection. Blocks can belong to multiple channels. This adds a layer of intrigue to the model of channel as blog post. If a block can belong to many channels, a paragraph can be a part of many blog posts.

Let's test this idea out. If you click on this paragraph, it will lead to a post that uses this paragraph as the leading thought. On Are.na, this is a text block that connects this channel with another channel.These connected text blocks could act as footnotes or references in other posts. But they can just as well be another paragraph in a post — this recycling of past writing into other posts excites me. It is thinking not only in the realm of chaining posts together (blogchains) but in chaining paragraphs together, adding wiki-like qualities to publishing on your blog.