The rabbits of "Watership Down".

I recently watched Watership Down, the 1978 British animated feature following a warren of rabbits as they seek a new home, having fled disaster. I had seen it before, sometime in the early 1980s, in a format that I imagine modern children have no touchstone for: it just appeared on television one night, with no warning or fanfare.

Watching the film today, I impressed myself with how clearly and exactly I had recalled so many of its words and images. What really drove me to see it again, though, were freshly unearthed memories — bubbled up due to some passing stimulus — of the bus-ride to school the following morning, where the broadcast was all anyone could talk about. What had we seen? A completely unanticipated treasure dropped on us, utterly unlike any of the Hanna Barbera junk-food American cartoons we all ate daily. (And understand that, this being the past, a handful of TV stations represented the entirety of at-home video entertainment options for myself and my peers. We all saw this, together.)

I have no idea how wide that long-ago broadcast was — a national-network special, or just a local UHF station’s filler-content for the evening? Either way, I wonder how many professional animators or film producers sharing my age and city of upbringing began their careers that very night, electricity arcing from this unlikely story of animal life and death and failure and triumph and searing their spirit with a lifelong calling.

Today the film seems to retain equal reputation as a classic and an aberrance. In a funny coincidence, after mentioning my seeing the film to a British friend, they linked me to one of several local-to-them news articles about a recent airing of the film on UK television, and the outrage it engendered. The writers of these articles tend to cast the cartoon as nothing more than a source of cruel nightmares, focusing on the film’s shockingly frank scenes of red-in-tooth-and-claw violence and death. Of course I myself recalled well that aspect of the work, and how I felt quite disturbed by the film’s more subtle horrors — particularly the acid-nightmare imagery of Fiver, the scrawny and traumatized seer-rabbit, whose liquid, swirling visions of blood and terror set the warren on their flight.

But even more than all that, I remember the film as seeming very grown up, and not because of the rip-tear gore but because of its utter lack of condescension towards its audience. The intrinsic cuddly qualities of the small furry protagonists invite children to approach and watch, but the story sees them acting like adults. They clearly have goals and plans and live in a complex society, and at no point do they stop to explain any of it to the kids at home. It felt, in other words, like the real world did from a child’s perspective, but an entirely different world, and even better: a world within the real one, hidden, where the animals can talk, letting us listen in to their own animal-world ambitions and grave perils. I know that I found this absolutely riveting, at age eight, even if I couldn’t put into words why.

An example: there is a scene where the rabbits’ leader becomes caught in a snare, his confused struggles only drawing the cord tighter. Believing him near death and unable to save him, the others gather around in helpless shock. One of the rabbits breaks the silence, muttering something in a poetic meter, and after a beat his comrades solemnly join him in recitation. Today of course I immediately recognized it as a deathbed prayer to their rabbit-gods, and one that of course they’d all know by heart just from the rote practice that frequent death within their community would bring. I don’t think I processed all that as a child, because this was not among the details I had remembered. But I know that I saw it, and that it contributed to the literally other-worldy wonder I saw that night in front of the TV.

Among the scenes I did remember, almost word for word: the rabbits come across a paved road, an anonymous squashed critter by its curb, and have no idea what any of it means. One of the older refugees hops forward, recognizing the tableau for what it is, and tells the rabbits that they can cross safely with a modicum of cautious attention, for “the Hrududu runs along it”. Thus occurred my first unchaperoned exposure to invented language, even if only a trivial vocabulary, and without the thousand excited explainers that surround any utterance in Elvish or Dothraki that one encounters in today’s thrice-meta media environment. What delightful perspective that one scene zapped me with, all by itself, letting me feel so bright and involved for realizing all its implications on my own!

And the whole movie holds treasures like this, for a kid. In researching this blog post, I learn that a new adaptation appears imminent, and I’ve no feelings on that. I was glad to find the version I remembered very easily in my local pubic library — and held in the children’s section. On review, I feel safe calling this film a timeless achievement, and I hope that eight-year-olds will continue to stumble across it, utterly unprepared, for a long time to come.

The burning house from "Synedoche, New York".

Maybe seeing Synecdoche, New York so recently made me more receptive to feeling disappointed by media presenting mortality-metaphors involving impossible houses — and then, having presented them, don’t know quite what direction to take them. Well, it happened again.

What Remains of Edith Finch clearly expects an emotional connection with the player, but I struggled to find one. The game’s narrative contains a number of magical-realism elements which could have gelled into something amazing, especially as regards its setting: the vast house encrusted with towers and buttresses added over a century by a family obsessed with escaping its absurdly accident-prone history, entombing the bedrooms of those who succumb. Except not really, as the stories of individual (and tragically brief) lives you play out offer, as far as I can tell, no connection at all to one another or to the the story the house itself tells, or to the wonderful hook of the old-country paterfamilias who sailed his mansion over the sea to wreck it on the coast by Edith’s house. For a story ostensibly about a famliy, its parts all struck me as quite unrelated.

Did I miss a cue? Are the little tragedies to be read as reality, and their frame story a complete fantasy, perhaps one character’s memento mori memory-palace? I found no reason to believe that either, other than the presence of the strictly one-way connections from the characters’ stories into the house. The game’s structure just feels in serious want of a little more connective tissue, somewhere. Perhaps a different tone and art direction would have worked better, embracing the story’s apparent Edward Gorey aspirations more tightly, turning the seemingly unintentional humor of the family’s repeatedly fatal escapades into something more grimly celebratory. Photorealism and straight-ahead narration just feel too flat, here.

Friends have lauded the “triple-A Wario Ware” microgames that define the variously doomed family members’ tales. While the variety impressed me as well, most of these stories had an aura of pressing X to Jason, going through simple, sign-posted controller motions to meet the train whose headlamp you always see coming as soon as the vignette begins (and which at least once is a literal train). I will note that I enjoyed playing Gregory’s chapter and found Lewis’s chapter amazing, both engaging and interesting in spite of their mini-narratives ending exactly as you would guess from the outset. Either by itself could have a been a cool, morbid little game worth five minutes. I wish I could say the same about the two-to-three hours that surround them.

I wish, also, that I could borrow video games from public libraries the way I have lately enjoyed doing with movies. On the other hand, I feel confident that borrowing movies from libraries wasn’t a thing only a couple of decades ago, so maybe that too will improve, someday.

The Perl onion logo says '!!'.I love The Perl Conference (née YAPC::NA), a humbly scoped annual gathering that — like any good language-in-the-title conference — succeeds at focusing more on the creative community that happens to center around a particular programming language, rather than on that language itself. As I noted here last month, I plan to speak at its June 2017 iteration in DC, and earlier years saw some of my first talks at any technical conference with a venue larger than a pub. After attending !!Con, though, I find myself increasingly unsatisfied at some of ways that TPC seems to stumble into the same too-typical tech-conference pitfalls every year, ones that nimble !!Con has found ways around. I think TPC can do better! Let me name the problems I see, and then recommend ways that the older conference can learn a thing or two from the younger one.

First of all, I feel more than a little uncomfortable with TPC’s ongoing and overwhelming gender imbalance among its presenters. I know I grumble about it every year on social media, and I know that doesn’t help. Still, after the eye-opener of !!Con, I find myself unable to shake the feeling that my own continuing participation in an almost exclusively male technical-conference talk schedule makes a bad problem worse. My middle-aged white-guyness wears heavy, when I find myself in a ostensibly open space but nonetheless surrounded mainly by other MAWGs, and I can’t let that go unexamined.

We can start with some raw numbers. Looking at the list of this year’s talks, I can separate the speakers into two sub-lists: those who either I know are men or who I can reasonably guess are male, and everyone else (women, non-binary people, and strangers whose gender identity I can’t confidently guess). I’ll also place panels with at least one apparently non-male speaker in the second list.

The latter list has seven entries, out of 72 total talks and tutorials, making for a ratio of worse than ten percent. If we count names rather than talks — collapsing all speakers giving more than one session — we improve the number to seven out of 63, so that’s 11 percent at best. And again, this includes all speakers whose gender I can’t comfortably guess from the list plus cursory web-searching, so this number is likely inflated.

How does this make me feel? After starting to attend technical conferences with far more gender diversity on display than this, I feel not just embarrassed, but a little bit ripped off. I know that the Perl community — as well as neighboring communities whose members should feel welcome to speak at TPC — contains innumerable women doing work worth sharing in a conference context. And I fear that the conference, with these dismal numbers and no clear attempt to correct them, sends these women a signal that they ought to apply elsewhere. And I, a selfish jerk, don’t get to hear any of their talks, and that makes me grouchy. Beyond that, it feels like a bad look that the principal American conference for Perl, a programming language often dismissed as obsolete, have a speaker list that looks like it would fit better in the previous century.

I also know for a fact that TPC can do better, because it has already succeeded in inviting women to to present several personally memorable talks. I’ve written recently about VM Brasseur’s eye-opening presentation about IRC; I could also name Gerda Shank’s 2012 talk on her own HTML::FormHandler, a technology that thereafter transformed my day-to-day consulting work, or Karen Pauley’s 2015 talk about working with volunteers, which helped spark a cascade of ideas that led to my co-founding a nonprofit the following year.

Karen was, at the time, president of The Perl Foundation, the organization that oversees The Perl Conference. The Perl Foundation also participates in Outreachy, helping mentor women and others underrepresented within open-source software culture, and that’s wonderful — both on its face, and because it suggests that The Perl Conference is part of a governing body that can help it catch up in this regard, someday!

In the meantime, though, I have had at least one female friend tell me this year that they don’t plan on returning to a Perl Conference after attending an earlier one, specifically because the unapologetically male-dominated environment made them feel unwelcome. From my own experience, this doesn’t limit itself to just speaker numbers. For example, hecklers — who, I dare say, are always men — might start shouting from the audience of any talk, and I have never observed them receiving reprimands. (My writeup of 2015’s conference notes my discomfort regarding this issue and others like it, and I don’t recall it as particularly better last year.)

The good news is that all this can be fixed, starting as early as next year, if not sooner. I would offer the following advice to The Perl Conference team to consider, in the interest of making future conference iterations not just more welcoming to a wider audience but also attracting a wider array of high-quality talks.

  • Overtly ask the public for more talk pitches from female, queer, and people-of-color presenters, in the same breath as asking for more first-time speakers and such. While I would have found this strange advice only a few years ago, I have seen this time and again from other conferences (and job openings), so much that I dare say it feels like accepted practice now.

    It could be that TPC already does this where I can’t see; I have only observed their activity from a distance. But looking at its Twitter feed, I see terse and neutral announcements of the opening of its CFP, and then its close, and no particularly obvious efforts to reach out to any group not already comfortable and familiar with TPC.

    This is one of those cases where just showing effort can make start to an event more attractive to all prospective attendees.

  • Anonymize talk pitches prior to choosing them. This is a technique that !!Con employs, and I love it. First, one person makes a copy of the full list of pitches, doing all they can to scrub out information identifying anything about the person making the proposal — not just their name but also the names of their projects, their employer, and so on. A group to which the “anonymizer” does not belong then chooses the presentations from this modified list — and if any member still recognizes a particular talk’s source, they recuse themselves from deciding on it.

    Julia Evans, one of !!Con’s founders, wrote more about how this worked for !!Con 2014. I’m told that they’ve developed the techniques a bit more since then, but the principles remain the same.

    While obviously not an all-encompassing solution, this technique is both relatively straightforward to implement and a far more effective defense against unconscious bias than nothing. Plus, the previous point applies: by just making known its use of this policy when choosing talks, I believe that The Perl Conference would end up receiving more talks on more topics from a more diverse array of potential speakers.

    Furthermore, this pairs nicely with the previous bullet-point. A transparent anonymized-pitches policy can step in front of any humbug about “reverse discrimination” before it can even start.

  • Institute a formal rule against hecklers. !!Con spins this a little more positively, calling it their “no back-seat driving rule”, but the principle is the same: good lord, shut up and let the speaker to do the speaking. All of it. Please do react however you’d like in audience-appropriate fashion, but to verbally interrupt the speaker’s flow with shouted and uninvited “jokes”, corrections, questions, or commentary represents a profound act of selfishness, stealing the time and attention of both speaker and audience.

    Nobody should tolerate this behavior. I would assert that a conference that lets it slide, allowing selfish audience members to tread as they please upon a tightly timed talk without consequence, signals an overall disregard for the value of the speakers’ presence. Conversely, disallowing it advertises a basic (and maybe even pleasantly surprising) level of respect that just about anyone would welcome.

    I would note that this rule, unlike the others, could go into effect as early as this year, if the conference staff wishes to consider it.

Well, that’s my meta-pitch, presented in cowardly place of volunteering to help with the conference in a more direct fashion — something that a colleague asked me to consider, and which sounded real good to me, until friends and family with a more complete view of my already overcrowded schedule dragged me back. This blog post will have to do for now, and I hope it helps it ways other than just getting this off my chest.

I remain looking forward to the conference in June, and I hope I’ll have reason to look forward to many Junes thereafter.

The video embedded below contains the entirety of !!Con 2017’s day-one livestream, recorded May 6. Clicking it will cue up the ten-minute talk I delivered to its New York City audience that day. I describe how I overcame some early obstacles in BumpySkies development by pushing past my natural resistance against asking strangers for access to tools and data.

Here are my slides, rendered as a single long PDF with my script intermingled among the pages, often with only a few words per slide. Not the easiest to read this way, but it sheds some light on my public speaking style — I script my talks out entirely and deliver them as prepared monologues, gaining complete control of language and timing while giving up the display of even a single shred of spontaneity.

I had a great time at !!Con, and hope to attend again. If you missed it, you can vicariously and asynchronously join me via the whole first-day and second-day videos on YouTube, and I expect separate videos of the individual talks to appear presently.

An incomplete list of !!Con 2017 highlights, for me:

  • Lisa Ballard on leading a hobbyist team that used public data to create, a coffee-table-book-beautiful website tracking all the active robots that humanity has launched into space.

  • Jean Cochrane’s whirlwind tour of landmark queer and feminist cyberpunk manifestos from the 1980s and onward.

  • I kind of have no idea what Aaron Levin was talking about, but I want to point out his speaking style as essentially the opposite of my own, and far more entertaining.

  • Kevin Chen has much better scripted comic timing than I do, and his talk about implementing HDR photographic techniques in Excel brought the house down.

  • One talk described how the speaker and their employer engaged in a years-long arms race against an anonymous and gleefully civic-minded hobbyist obsessed with breaking their music-file DRM scheme. (This talk went unrecorded, on the speaker’s request. You should come to !!Con.)

  • I watched superheroic stenographer Mirabai Knight type “Aaaaaaagh!!” — visible on the separate caption-screen that the conference had set up — as Mark Dominus screamed and flailed while imagining giant bats swooping upon him, partway through his talk.

I could go on, but… do just watch all the talks, if you can. Aside from the marvelous keynotes, each talk is only ten minutes long, and all very much worth your time. I’ll update this post with a link to the individual videos, when I notice that they’re available.

Still from the film's closing act

I recall very much wishing to see this Charlie Kaufman film during its initial run in the late aughts. I count the Kaufman-penned Being John Malcovich as a favorite film from my own young adulthood. Perhaps I would have liked Synecdoche more had I seen it closer to then. My contexts have since changed. The meal satisfied my appetite when I watched it last night, but a day later I find myself left with an overpowering aftertaste of Oh no, a wealthy and accomplished middle-aged white New York man feels sad! Let’s all drop everything and pay attention to him for two hours!

And, you know, hashtag-not-all-brotagonists. The Coen brothers’ Barton Fink took a similar starting hook — insofar as giving a stage-director protag fortune and glory and there his troubles began — and built something far more coherent and widely meaningful out of far fewer resources. Synecdoche feels lodged in an uncomfortable space between that earlier picture and the more recent Birdman, which Alejandro Iñárritu bound with strict narrative and style constraints while working over the same-again material, and so made something remarkably memorable.

Synecdoche tries its own tack, of course, through acceptance of surreality, a willingness to treat time, space, and causality loosely, and a director practiced with playing such games on film effectively. Just the same, I don’t think it really struck the mark.

My attention flared, on cue, when towards the end of the first act we follow spurned Hazel, in the only scene not shot from sad Caden’s point of view, as she purchases a house literally on fire. Smoke billows from the windows as she rings the doorbell, and flames lick the walls while the agent tours her through. I savored the thought of what later payoff would come from this, and at one point thought the film would jump track, thrillingly, to center on Hazel, Keeper of the Flame. None of this happens; I think the film means to imply that Hazel’s conflagration exists only in Caden’s perception after all, just like how he spends his declining years endlessly contemplating his own water-treading through a kaleidoscope of dramatic doppelgangers, and just like how in his apparent final moments he concludes his fantasy of the world literally ending with him.

Solipsism just doesn’t interest me that much. Even when you’ve clearly spent a lot of money on it.

Pleased to announce that I plan to speak about BumpySkies, my air-travel turbulence forecaster, at two conferences in the early summer. (One of them you can still get tickets to!)

At !!Con in New York City, on the weekend of May 6-7, I shall present a ten-minute talk titled I wrote to a dead address in a deleted PDF and now I know where all the airplanes are!! (The conference organizers require all talk titles to contain exclamation marks — but please do read my excitement as genuine.) In it, I shall describe my initial challenges developing BumpySkies, and how I largely overcame them by asking strangers for stuff, nicely.

!!Con (pronounced “Bang-bang con”) seems to be one of those conferences who tickets all vanish within literal minutes of their becoming available, and those minutes all ticked by a week ago. Happily, it appears that !!Con films all of its talks and puts them all online; this YouTube playlist contains all of 2016’s talks, for one. (And, come to think of it, I should watch a few before I make my own…)

A month later, I will present BumpySkies: a passion-project postmortem at The Perl Conference in Alexandria, Virginia on the week of June 19. This talk will focus more on BumpySkies’ technical aspects, complementing the social-engineering facets that the !!Con talk will cover.

I have become somewhat of a Perl Conference (née YAPC::NA) regular, at least on odd years — debuting myself with a lightning talk about project focus in 2013, and following up with a presentation on Plerd (the software powering this blog) in 2015. I always enjoy this little conference and look forward to attending again this year, where for the first time I plan to take in one of the day-long seminars that bookend the main event. (And — unlike !!Con — tickets for TPC tend to remain available right up through the opening keynote, in my experience.)

Finally, I’ve got my eye on All Things Open, an autumnal open-source software conference in Raleigh. I haven’t attended before, and I declined to pitch a talk this year (in part because I already had two submissions awaiting their fates — see above — and, unused to pitching severally, I didn’t wish to overextend myself). However, it has pinged my radar in the past, and it came up on the shortlist of recommended conferences when I asked my Twitter followers for recommendations. I learned about !!Con through this same route, and thus does 2017 look like an unusually conference heavy year for me already. I asked for it! No complaints.

Not content with Alisio’s simple black-text-on-white-field output, I added a new and fancy feature to the script. If the target blog’s most recent post contains an image, then Alisio will add a piece of that image to its output, fashionably cropped and resized so that it fills the whole width of final image without taking over its whole height. It will furthermore change the background of the text to the “average” color of the illustration (more on which below), also changing the text color to a light gray if needed.

I think it looks really cool! Here are a couple of examples, pulled from my own Twitter feed, generated from recent Fogknife posts:

An example Aliso image

Another example

A neat trick I learned while working on this: To determine the “average color” of an image, use the image-processing tool of your choice to resize that image down to a size of 1 by 1, then measure the color of that lone “surviving” pixel. Alisio uses this technique to decide upon a text-background color when given an illustrated post.

I was inspired by a way that iTunes, erm, used to display album information, but apparently doesn’t anymore, now that I’m looking. It would set the background to a color clearly chosen to match the album artwork, and blend it all up nicely and I thought it looked pretty cool. Well, I’m glad that I saw when it did, I suppose.

One more feature I’ve added to Alisio since its initial release: when posting the image to Twitter, it adds alt text describing the image as merely copying the post’s first paragraph, and inviting the reader to visit the blog for the rest. Multiple people have suggested turning the paragraph text itself into the alt text. However, with a 400-character limit, and the fact that Alisio means to direct traffic to the target blog rather than provide an alternate means to read it, I do prefer my more staid usage.

Photograph of a wind-swept treeAs I’ve used it continuously for more than a week, I shall share (if not release, exactly) Bayamo, a prototype for an idea of uncertain merit. Bayamo’s ideal: gather many continuously streamed sources of small bits of text — one’s various social media and chat channels, for the most part — and then funnel them into a single, non-interactive view, suitable for use as visual background to one’s work.

Bayamo’s implementation, as of today: First, force everything into IRC, and then use Textual on macOS as your IRC client, with local logging turned on. Bayamo watches your designated Textual log directory, and every time a line is added therein, the script determines whether it represents a person saying (or emoting) a message. If so, it reformats the line with paragraph indentation and a bit of ANSI coloring, and then prints it to standard out.

If the phrase “standard out” means nothing to you, Bayamo — as I’ve no doubt you have already concluded — probably isn’t useful to you in its current form. Then again, it’s probably not useful to you anyway. I don’t know if it’s useful to me, but I’m having fun with it, and I can tell you why.

I recently re-embraced IRC after decades away from it, and between running Textual and Slack, I discovered that I hate clicking tabs to discover new messages. I wanted to use IRC, Slack, and every other chat system the way I use Twitter, or indeed the way I use email: let all things fall into a single, everything-is-miscellaneous stream, which would just flow at me all day long, without demanding any action from me.

What I didn’t want was the situation I found myself in within hours of using IRC — and which, frankly, had been irritating me about Slack, but I couldn’t put my finger on before I could contrast it with another system. Tab after tab with their respective There are unread messages here! indicators lit, but either (a) I wasn’t interested in that tab’s topic at the moment, or (b) I was interested but clicking on it would flood me with hundreds of messages representing hours or days of stale conversation, none of which felt relevant any more.

I wanted a flow, letting me monitor the tone and tenor as much as the content of online conversations, and from various trusted sources, whenever I felt like dipping in with just a little background attention. I would otherwise feel free to it let drift on by, with no sense of missing something. This is what Bayamo angles at. For a prototype, I think I works okay, especially when allowed to babble away on a secondary display. Here’s what a slice of it looks like for me (with names blurred out for propriety’s sake):

Screenshot of Bayamo prototype

Not the prettiest, but it runs inside of an Apple Terminal window with no text formatting other than newlines and indentation, so I’ll take what I can get. Within this sample — all of which happened to occur as I typed the preceding paragraphs — we see conversations from two Freenode IRC channels (#macosx and #perl); the general channel of “Arbitrarium”, a private social Slack I inhabit; and the video games discussion channel of IFMud. Four message-sources from three wholly separate networks, but all presented in the same flow from my perspective.

You’ll note that Bayamo notes the utterances’ sources, in terms of both the speaker and the location, but does not include a timestamp; not even a simple hour-and-minute one. This is because I do not care! Bayamo lives in the now. Timestamps belong on archival logs — and, by definition, you’ve got those too, if you’re using Bayamo. Certainly you can scroll up to catch a few lines that you missed, but I mean for this output to not so much capture a moment as display the present, many facets at once.

An aside: with delight have I been exploring all the tools that souls far more lost than I have created to force non-IRC technologies to act like IRC. Slack, despite its own regrets, runs such a gateway service itself, and it works quite nicely. I use Ben Kelly’s ifirc program to connect to ifMUD via IRC — yes, an entire faked-up IRC server meant to connect to a single MUD. There are layers here, and it is exactly what I want.

I have yet to try the Twitter-to-IRC shunt I’ve found on CPAN, but I look forward to it — and if it doesn’t work, there are others. (Facebook, sadly, may be a lost cause for now. I found only [this one Japanese-language project], whose years-old English-language preface apologizes that it has long since stopped working since Facebook changes its API too often.)

Anyway, that’s Bayamo. It feels useful, if not quite fully formed yet, and maybe you can do something with it too, idk.

A note on naming. Both Bayamo and Alisio take their titles from the top of this alphabetical list of named winds. I found it specifically because, feeling irritated at the need to name the project that would become Alisio, I turned to Darius Kazemi’s collection of lists of stuff and happened across a JSON version of same; it never occurred me to think of winds as a class of stable entity deserving of permanent names, but of course it is, and thus followed immediate appeal. Obviously I practice some choosiness here, skipping names I find too hard to pronounce or too similar to other things, but I otherwise plan to continue mining this list for names of future small projects.

I have, despite myself, started to think of Alisio and Bayamo as the first two entries in the wind series, which in the fame-walk of my mind develops into a long garden of small, focused and idiosyncratically brilliant projects that will serve as a lasting testament to my principal self-identity as a software toolmaker. I don’t know if, in reality, this will grow beyond two tiny hot messes of dubious value outside of my own terminal windows, but that’s where we are just the same.

Water puppets in the Old Quarter of Hanoi, Vietnam. Photograph by Danny Fay. CC-BY-SA 2.5A sideways sort of Pinocchio story. One Esk, narrator and protagonist, is a “real boy” from the very first page onward, but considers herself a sub-human puppet until the friends she grudgingly collects break the good/bad news to her in the end. She has every objective reason to hold this fallacy, given her uniquely science-fictional predicament. Just the same, her plight feels like a very human struggle with personal-identity confusion, plugged into a spacefaring superhero adventure for flavor.

One Esk is an “ancillary”, digital-born inhabitant of a body that belonged to an unfortunate, anonymous prisoner of war before she had her brain erased and replaced by the persona-instance of a troop-carrying starship. A far-future version of Persian Immortals, each of these transports carries its own army of ancillaries, with hundreds of thousands of reserves sardined into the hold. Each frozen body is a bit of war-spoils of a rapacious space-empire, which Ancillary Justice describes just as it winds up a centuries-long campaign of increasing the lebensraum around its homeworld.

I appreciated the empire’s history as a familiar critique of colonialism, albeit scaled up to cosmic levels. Those living within the empire enjoy a peaceful, post-gender utopia, a New Rome spanning half a galaxy, and whose client-worlds can keep a modicum of self-expression in exchange for complete submission. They also accept gigamurder and mass body-theft as a distasteful but necessary price to pay for this pax galactic. The citizens acknowledge the ugliness but find it easier to swallow given that all that it all lurks safely in their past, allowing them to enjoy the present.

But One Esk doesn’t think about any of that much. Intrigues within the empire led to her ship-self’s destruction by sabotage, leaving her as its sole survivor — still identifying less as an individual as a severed appendage, an autonomous war-agent of a terrifying machine that no longer exists. Despite the literal truth of all this, the human reader of Ancillary Justice quickly sees through One Esk’s denial of her own humanity, which she clearly possesses in full before we first join her some time after her trauma. When she asides to the reader that she chooses to express emotion for convenience’s sake when dealing with all these humans around her, it comes across as excuse-making.

Over time, the reader starts to suspect that, without acknowledging it to herself, One Esk puts great value in holding herself apart from all the people she must deal with, ally and enemy alike. This may serve her well at the novel’s opening, when we join her amidst a nihilistic revenge-quest; a self-destructive mission becomes easier when one denies any self to destroy. But when a series of overtly bizarre coincidences subtly change her mission into one of compassionate sacrifice, her own transformation to match becomes inevitable. This is the true journey the novel describes.

On a mechanical level, I also enjoyed the interesting spin that One Esk’s tale puts on superheroics. Her only-human body puts a limit on her powers, but they become boosted to preternatural levels through the digital mind in control of the muscle. Over the course of the story, she demonstrates her ability to act as a perfect protector, maneuvering her body with micrometer precision and ignoring pain when needed — or as a perfect killer, able to put a bullet anywhere in near-zero time though the aimbot subroutines in her skull. If portrayed in a TV show or comic book, she might not seem any more powerful than the usual sort of arbitrarily powerful adventurer, but the language of Ancillary Justice describes quite clearly the uncanny appearance and effect of One Esk’s abilities. It makes for a fun read.

I liked it! The story comes to a satisfying end and I don’t feel driven to immediately devour the rest of the series, but I like knowing that it exists for later.

1980s Boy Scout Handbook cover

Ten months after finding inspiration in this delightful Perl Conference talk by VM Brasseur, I’ve fashioned for myself an acceptable setup for using IRC, the internet’s oldest and most open chat system. I have a practical purpose for doing so, far apart from nostalgia for a less commercial or colorful internet. But with any system so venerable — and, in my case, decades of personal-computing history — I can’t avoid starting my refreshed relationship with IRC by thinking back on my history with it.

I first used it as an undergraduate in the early 1990s, where it had already earned a reputation as foundational technology, boasting an array of implementations on any computing platform you could name. The Mac alone enjoyed a dizzying variety of IRC client programs. I don’t recall the name of the one I favored, but I do remember that it greeted you on launch with an orchestral-hit sound effect from an old Star Trek episode.

IRC has hardly gotten less nerdy, in the years since. I feel as comfortable saying that it will outlast the viable lifetimes of every younger chat system — yes, including the ubiquitous Slacks and Discords of today — as I do in predicting that people will rightfully keep inventing new systems anyway, because IRC remains completely unsuited for civilian use. It took me nearly a year of off-and-on, trial-and-error research to find a combination of magicks that let my laptop connect to IRC networks with the reliability, back-logging, and mobile-notification functions that Slack provides out of the box.

The details are not interesting, so I shall get them out of the way quickly: As my client program I use the excellent Textual for macOS. For ordinary IRC discussion, I have set up a ZNC server, and I proxy all my connections through it; this gives me persistent presence in any channels I choose. Furthering this, I installed Prowl on my iPhone, to which my ZNC instance relays notifications when folks mention my name.

The last pieces slid into place last week when I got over my shyness to ask the #textual IRC channel on Freenode to help me tune the application to my particular use-patterns, starting with having it automatically reëstablish all my various connections when I open my laptop back up. (Textual, fantastically customizable, scatters the controls for its myriad options in a dozen separate places throughout the interface. Only a bare handful appear where expected in the Preferences window; the remainder bury themselves layers-deep in the right-click menus of one onscreen feature or another. As with IRC itself, I strongly doubt many discover its details without active assistance.) Finally — applying my knowledge about IRC nickname commands and conventions from Vicky’s talk — I stole jmac on Freenode away from someone who provably hadn’t logged in for a year, presenting my case to a friendly “op” on the #freenode channel and receiving the blessing to re-register the name to myself.

When I was in fifth or sixth grade, we all received a creative-writing assignment: write 300 words about an recent accomplishment you took pride in, then read it aloud to the class. Every other kid, boy and girl alike, did the correct thing of describing a victory-clinching goal they scored on the athletic field. I alone transgressed by writing of a recent camping adventure with my Boy Scout troop, and for days my classmates mocked me, repeating “We decided to head up the trail to check it out!” whenever they saw me rounding the corner. I relate this memory as it comes to mind unbidden because I know exactly what I sound like, talking about this IRC stuff: I sound like an excited little boy, so totally at home with a new, pleasurable discovery that he has no idea how utterly unfit for his larger social context he sounds.

An XKCD comic strip about fragmented chat networks.

Why did I bother will all this? Like the above XKCD cartoon, I consider IRC primarily as the location where specific few chat-based resources (not to say people) make themselves available, and not at all as an all-encompassing chat solution. I would never suggest that civilian internet users learn IRC — but I would strongly recommend it to my fellow software engineers, especially those working with open-source software. The other cartoon image that comes to mind is that of the petitioner scaling the mountain, seeking the wisdom of the old guru dwelling in their aerie. That’s how I felt at the end of my months-long climb, finally getting this absurd setup to work reliably on my MacBook.

By cultural fiat as much as any other reason, IRC alone represents the best place to ask deep questions about certain open-source software projects. The community supporting Perl, my core day-to-day programming language, runs its own IRC server. Most every popular functional extension to the language as its own channel there, with the authors or maintainers of these modules quite often making an effort to check in frequently, happy to answer (eventually) questions posed by needy strangers. More generally, the Freenode IRC network hosts hundreds of channels for every flavor of open-source project, with ##linux at the top, on down through #perl, #textual, and (the semi-open) #macos, and ending with a long tail of channels populated only by their operators, often for young and hopeful projects.

Plerd’s “official” IRC channel sits among this latter clump, as of last week, and jmac lurks there — alone, as I write this, but listening just the same. I believe I’ve grown past the atavistic joy that comes solely from noodling with this system, echoing the pleasures of the the Mac LC in my dorm room. Already and instead I feel a stronger and more connected software professional from the handful of conversations I’ve enjoyed in the dozen-or-so channels, across two networks, that I have settled into so far.

Naturally, my next post on this topic shall reveal how I have already betrayed this practical recognition of a chat-fractured internet, detailing the ways I almost immediately began researching ways to force all my disparate chatty data-sources into a single IRC-shaped funnel. The outcome has proven as foolishly terrible as the motivation, and I look forward to describing it.