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.

Considering my privilege.

In my slice of culture, there exists the temptation to conflate recognizing one’s privilege with feeling ashamed over it, or at least avoiding the exercise of it as much as possible. This has roots in righteousness; no good comes from using an extra helping of time and money to avoid paying one’s fair share of taxes, to name one long-popular misuse. But some crucial issues exist that require the more privileged to step up and swing their disproportionate leverage without shame or apology. The largest of these, to my eyes, is climate change.

Last week, I celebrated alongside most of my friends and peers at what felt like the first major victory of the current American mass-resistance movement. In quiet humiliation, Republican congressional leaders had to withdraw their much-trumpeted first bid to dismantle the ACA, this country’s young federal health care system. I participated in the congratulatory view that, against all initial assumption, House Republicans removed their support for the measure based largely on a ceaseless flood of calls from constituents — furious and afraid at the prospect of losing their health care in exchange for their “social betters” receiving tax cuts.

The current administration has neither the will nor the ability to build anything new. Its sole focus remains opposition to President Obama, heedless of his own government ending over two months ago. Nothing interests it except for wrecking everything it sees as a monument to his presidency. With health care no longer a viable target, then, the White House wasted no time in dismantling recent pollution regulations. This scores them a two-for-one: not only does this directly undo Obama-era law, but it significantly reduces the likelihood that it can keep up its end of the Paris climate agreement, nullifying one of the previous administration’s signature accomplishments.

And public reaction, I dare say, has been muted, beyond the usual grunts of despairing frustration from my Twitter timeline. Some of this comes from the format: this was an executive order, so Congress had nothing to vote on, and Americans in favor of basic environmental stewardship had no focused opportunity to give their representatives another earful. But I suspect that something else comes into play here, regarding the relative immediacy of threats to one’s health-care plan versus threats to one’s global climate.

A typical American could easily imagine how Ryan’s health-care dismantlement would have affected themselves and their families in the very short term, and this, I believe strongly fueled the swollen popular reaction to it. But the effects of climate change are famously hard to hold in the head. My civilization has heard about the looming danger for decades now, and yet everything still seems more or less okay? Recent polls show that the message of climate change’s existence may be starting to sink in, but most Americans don’t believe it will affect them personally.

(And to be honest, I’m not sure how I would have answered that poll. Barring medical miracles, my own lease on this planet runs out in a half-century, at the outside. Given my resources and social situation, I fully expect that I can lazily sidestep the challenges that rising temperatures, sea levels, and total unarable land-area will bring about for only the next few decades. So, yeah, I’m probably fine. It’s everyone else, and the entire potentiality of humanity after me, that worries me.)

At risk of falling into a mass-psychology fallacy, I do expect that, for most, just thinking about climate change proves too expensive when surrounded by so many nearer-to-hand demands and responsibilities. Taking a break to protest health-care defunding seemed immediately worthwhile, but fighting a threat so murky as climate change? Maybe later — there’s bills to pay and mouths to feed, first. And so — I hypothesize — it falls to people like me, privileged with the free time to leisurely fret about super-slow-motion global catastrophe, to lead the citizen-bulwark against it.

Easy for me to say. Well, in the short term, I intend to keep throwing money at it. I do feel the call to consider broader action as well. I just don’t know what, yet.

The red thing that I saw

Last spring I visited Denmark. One day in Aarhus, I spent hours in the ARoS art museum, and in its basement I found and photographed a very strange red thing. I have shown this photograph to several people to whom I have subjected my Denmark vacation snaps, and every time I find myself utterly unable to properly describe or even explain this red thing. Let me see if I can do a better job in writing.

Further background: On this day I found myself alone, Aarhus mine to explore, as I had elected not to join my travel-companions on a trip to nearby Legoland. Plodding, then, without particular direction up a hill through the city’s gray downtown, I startled to see the strange rainbow donut on the museum’s roof. The building has prominent “ARoS” signage all over, but that meant nothing to me and I couldn’t read the accompanying Danish. Feeling more than usual like a true foreigner, I could not determine the nature or purpose of the building until I worked up enough courage to walk into its lobby. At first I thought maybe it was an office building or an industrial plant and gave it a pass, then turned back, aching with curiosity. One of the most rewardingly videogame-like experiences of my life.

To my delight, I discovered the exhibits within ARoS to focus on installations, unique and location-dependent, always my single favorite sort of artwork to visit.* The colorful rooftop toroid, Olafur Eliasson’s Your Rainbow Panorama, is the most visible and permanent of the museum’s installed artwork. Inside, I found a number of strange and beautiful works that you’ll have to ask me directly to hear more about, because now I want to take you into the basement.

ARoS had divided its lowest level into nine compartments with sizes ranging down from small theaters to broom closets. Each dimly lit room or space held a single work. A surreal film played in a loop across three side-by-side projectors; a tiny, empty dance club, littered with trash, invited pawing through fictional album sleeves in its DJ booth; and the red thing lurked in a recessed alcove.

I didn’t note the name of this sculpture, or its artist, and I can’t easily find it online. (If you happen to know, please tell me. But see the update below.) It wasn’t my favorite work during my visit to ARoS; just the one I find most consistently challenging to put into words.

The art took the form of an oblong cutout in a wall that slanted physically away from the viewer, the right side more distant than the left. (A rope barrier enforced this relationship with the work.) The cutout held a light, the only light in the alcove, placed so that one could not directly see the source.

One could see how the light reflected through and around the work, though, and this defined it. Somehow, through some expertly uncanny combination and positioning of materials, the space inside the cutout seemed misty. This extended outwards, bulging from the cutout to an uncertain distance. But the thick-seeming air held no motion, no moisture to feel or smell. I cannot recall whether or not I gave into the temptation to wave my hand through the empty space.

Such a strange thing to encounter, in the dim basement of a modern art museum while by myself in a non-Anglophonic country for the first time. I took a couple of pictures of it, and they totally fail to convey any of this. And that is the best I can do at describing the red thing I saw under Aarhus.

Update: Robert Serocki identified the artist as James Turrell, and the work as part of his “Wedgework” sculpture series. Thank you!

* Barbetween represents my attempt to replicate the experience of visiting a physical art installation in a purely online space, somewhat after the fashion of Paul Matisse’s Kendall Band — a work I feel fortunate to have lived over and even occasionally interacted with during what may have been the last few years of its functional life.

I just published Alisio, a free and open-source tool that allows bloggers such as myself to easily tweet text-as-image previews of recent posts. The results look like this:

Screenshot of an alisio-generated tweet

It takes a bit of nerdish skill and resources to set up; it has requirements about as complex as those of Jeremy Bernard’s twitch-to-slack, which I wrote about last month*. My adventures with that simple, discoverable, narrow-focused tool helped inspire the creation of this one, which I hope will possess the same positive attributes.

I haven’t performed a rigorous investigation of incoming traffic sources to Fogknife, not since discovering that counting RSS-based users is hard. But I can tell from server logs that I get plenty of hits from social media, including but not limited to the Twitter posts I make after publishing something new here. I’ve long struggled with how to word those tweets — Should I just post the title and a link? Add a word-count? Write a separate micro-summary? — but in the end I am a very lazy person who gets dumb project ideas in the shower. This was my dumb idea yesterday! I hope it pans out, one way or another.

As Alisio’s README notes, it’s very alpha, with all the fragility and inflexibility that implies. I expect that to shake itself out if I find it useful enough to improve. It therefore joins Starble and Plerd as open-source, modestly scoped blogging tools that I created as share-worthy utilities but which I ultimately maintain for my own regular use. Not bad!

* I can add, as a proud aside, that I have contributed to twitch-to-slack since then, cleaning up its documentation in a way that makes my own blog post a bit obsolete…

Mae, rat-queen.

The morning after, I feel I wrote too harshly about poor Mae, the protagonist of Night in the Woods. While I stand by my calling her naive, I also implied that she showed cowardice, what with the whole story kicking off by her bailing out of college, trying to recapture her sweet teenage doldrums from her parents’ attic bedroom. I want to walk that back.

Without spoiling the specific things about herself or her hometown that Mae discovers in Night in the Woods, I can still say that by the end of the story she makes it clear that her motivation for coming back home was larger than any basic fear of growing up. She wasn’t ready to leave yet, a year before the story begins, but she did so anyway, carried forward by the enormous pressure behind any first-of-her-name college freshman following her parents’ 18-year plan. In an inverted but real way, her dropping out represented an act of courage, a recognition that she had drifted off-track and needed a reset.

Of course she has no idea how to stick the follow-through; for the first time in her life, she finds herself without a script. And the story of Night in the Woods picks up from this point. And the story is this: look to your family, and find your friends. The story is front-to-back how Mae reconnects with the people she loves of Possum Springs, at first as an overgrown kid, but by the end as a young adult with a basic idea of where she is, who supports her, what problems she faces, and where she can go next. She left her friends too soon, on someone else’s schedule, and you and she spend your time together mending this tear. What she does afterwards is Mae’s business alone. I like to think that she finds her way back to school, on her own terms. But Mae was right to come home and fix the damage first, even if she had no idea why at the time.

One other, unrelated observation (and this contains a very minor spoiler): the sole note I wrote down while playing was “Jesus has baggage”. By this I referred to the slow dawning I experienced that the characters of Night in the Woods, while absolutely living in an analogue of a dim Pennsylvanian ex-mining town and possessing all the cultural referents so implied, don’t practice Christianity per se but a sort of alternate-history-American monotheism. The game stays very deliberate in the distinction. In both the church and the graveyard, one encounters a sun-shaped symbol where one would expect to find a cross, and the people celebrate not Christmas but “Longest Night”, a holiday that clearly serves the same winter-solstice purpose. But the big building in the middle of town is still called a church, its quiet pastor guiding her flock as best she can in ways I found achingly familiar.

Mae, practicing the same lazy-lapsed religion of all her peers as well as most everyone I grew up around in real life, has conversations about God with the pastor and others, especially after events in the story take a stranger turn. But nobody mentions Jesus per se, or any other more specific divine figure. I’d love to ask the game’s writers about this sometime, but for now I appreciate how they went to lengths to make faith present but abstract, to keep a story ultimately about the importance of human relationships grounded by avoiding the distraction of implicating any capital-C Church through invoking any proper-named aspect — other than the Big G at its largest, and most vague.

Mae says, "Decent."

I adored almost everything about this game. I wish that, upon completion, it offered a magic button that would replay the game from the beginning by itself, taking all the major choice-paths that I didn’t, so I could see everything I missed. I’d been looking forward to playing Night in the Woods since hearing its lead designers speak at Word Play in Toronto two years ago, and for some reason their description of a particular scene of the main character and her friend eating donuts at a late-night coffee shop in their decaying rust-belt town really stuck with me. While I felt richly rewarded by every choice I made in my playthrough, I did manage to miss the donuts entirely.

For a puzzle-free game with no voice acting to slow its pace — characters speak as quickly as you can read through their word-balloons — Night in the Woods surprised me with its length. I didn’t time it, but my escorting Mae through her story took upwards of ten hours, all of which required a modicum of active attention. I certainly can’t complain about that, because I loved my playthrough. It’s a peculiarity of interactive narrative that I’ll probably just have to live — in real life! — with my choices, never really knowing how it would have shaken out had I nudged Mae into spending more time with Gregg than with Bea, say.

Years ago I wrote about how Telltale Games, starting with their Walking Dead adaptation, cracked the decades-old problem of interactive television. Night in the Woods felt like something similarly transcendent, but I can’t say what for certain. An interactive comic book, perhaps, given its echoes of Scott Pilgrim? I can’t shake the feeling that the game’s peculiar pace, the repeating days where you patrol Mae through all the stations of her old neighborhood — which become comfortable so quickly — feels almost like a favorite newspaper’s comics page. We flip to the right section and scan through all the strips, reliably in the same place day after day, seeing what our old friends have to say this time. Surely this similarity owes more to accident than intent, since Woods’s city of Possum Springs presents a far more coherent world than an eclectic funny-page does. But, such is the cozily rotating record-groove that Mae thinks, naively, that she can roll back into by returning home.

On that note, the adventures of Mae and her pals hit me where I live, even if obliquely. I don’t think I’ve played any interactive bildungsroman in which I recognized more of myself and my friends, even if removed by a generation or so.

I was nearly 27 years old when I first emerged from central Maine — whose cold little cities bear more than a passing resemblance to Possum Springs — to find my delayed independence in Boston. (I didn’t aggressively bail out of adulthood the way that Mae tried to; it just took its time in finding me.) I made many friends in short order, and one group of them happened to all be around 20, just like Mae and the gang. Through them, and to some degree alongside them, I got to experience the same sort of turbulent exit from adolescence that Night in the Woods depicts: stumblingly learning to sync yourself up with a world you didn’t make, one which will drag you along anyway if you refuse to play. You also learn that your truest friends have graduated from playmates into companions, and how vitally important they become to your ongoing sanity and survival.

The game’s sole discordant aspect — not counting my terrible performance on the bass-guitar minigames — involve its use of a certain trope in a way that doesn’t quite fit right. I recognize how the story benefits from the external and unexpected motivation, but its particular resolution in this case just felt untidy. In contrast, Woods flirts much more effectively with themes from Lovecraft — just a drop, enough to add flavor without redefining the dish. The fears that drive Mae back home seem painfully mundane on one level, but they do, in their way, mesh with existential nightmares about an uncaring cosmos that she can’t even put into words.

What I’m saying is, if you haven’t heard from me in years but you get a call from me this week, you’ll know why.