Photograph of the lake and jetty described within the article.I took an unplanned month off from writing here — arguably my first break in the nearly six years since I began Fogknife — due to an interesting collision of minor life events, leading to an experimental change of habit that encourages me to revisit the the ol’ roll-top writing-desk.

In late September, after helping to once again launch this year’s IFComp, I quietly began the followup work to the Perl documentation work that sent me into such a reverie last spring. The job now in front of me involves defining some new documentation standards for Perl — a project once again funded, with my gratitude, by The Perl Foundation.

Unlike the rather cut-and-dried task of editing and improving a couple of extant man pages, this work takes the form of an entire research project. Over the last several weeks I have browsed a number of Perl’s contemporary (and, yes, rather more popular) open-source language projects to learn how they style and manage their respective user manuals. I immediately found myself awash in positive models and inspirational ideas, and I have written a lot. This includes a 6,000-word style-guide draft, whose picking-over by subcontracted editors only now commences, promising more writing to come.

This alone contains the total length of a half-dozen Fogknife articles, and I don’t find coincidence between this math and my dry spell here.

I began this blog as a full-time software engineer who loves and needs to write regularly — and who missed LiveJournal, and for whom Twitter proved a inadequate full substitute. This situation maintained through March of this year, when I retired my single active programming contract in order to experiment with changing up my professional gearing a bit. (Yes, just in time for things to get “interesting”. I envision my controlled exit as resembling a cartoon character bending down to pick up a shiny nickel just as an unseen wrecking-ball swings over their shoulders.)

The new documentation project, begun in earnest four weeks ago, satisfies my need to write on topics I care about — and it also exhausts my energy stores for doing so. For the first time in many years, no blog posts impatiently try to punch their way out of my head while I debug clients’ gnarly old CGI scripts. The post I write today happens only because my work’s reached a natural break-point, and I force myself to think about different things for a little while. (For similar reasons I made myself sit down and watch a movie last night for the first time in weeks.)

I frame none of this as a complaint, and more of an unexpected but perfectly sensible side effect as I gradually achieve my goal, set two summers ago, of redefining myself as a writer.

This shift carries a second-order payoff, too, an equally unpredicted inversion: with my days no longer full of managing other peoples’ code, I have rediscovered my daily need for left-brain-leaning games and diversions. I filled this at first with long-delayed personal programming projects like Whim, but once those shipped I turned instead to pleasures and pastimes that I stopped pursuing with much fervor when I began software freelancing in the late aughts.

It happens that I spent a whole week, earlier this month, in a vacation rental at a North Carolina beach town. I had a fantastic time. While there, in a place so different from the neighborhood I’ve otherwise failed to leave since Covid moved in, I got up every morning excited to start my day, and I did all kinds of things — including, but not limited to, chipping away at the documentation project. And the morning after I returned, waking up in New York as usual, I felt shrouded in the terribly familiar doubts as to my own purpose and function.

Close at hand, though, were memories of how I felt just days earlier, and I resolved to claw some of that mindset back to Manhattan. I wanted, if nothing else, that kick out of bed. Well — as it happens, there literally was one, during those days at Carolina Beach. On a lark, during my first morning there, I strolled down to a nearby artificial “lake”, took a seat in a covered wooden jetty, and solved the day’s New York Times crossword puzzle on my iPad. I would end up doing that every subsequent morning, coffee in hand, surrounded by the squabbling geese who dwelled on the lake.

And so that’s my new habit. Back home now, I drag myself out of my morning tangle of covers and cats, bounce through a few minutes of exercise, make or buy a coffee, and then park somewhere and tap through the Times app until it rewards me with its little “hey you did it” bass-and-piano ditty some twenty-to-sixty minutes later. And then — the theory goes, and has proven true so far — I am fully awake, brain humming healthily, and willing to apply myself to do something productive.

It happens that many of my friends, including the one to whom I am married, are puzzle fiends. (Our friendships all tended to begin around a shared appetite for brainy games, back in the earliest years of this century.) All are only too happy to help teach me the secret language of modern crosswords, and the Times’s in particular. I had already known that they get harder as the week goes on, but I didn’t know which weekdays reliably had themes, or tricky gimmicks, or what forms they tended to take.

I don’t plan on becoming a hint-resistant hardcore solver, like my friends; I “cheat” with web searches freely. This still leaves me on my own to discover the delights I heretofore had no idea the Times puzzles held. Last week, for example, one puzzle hinged on figuring out that several vaguely-worded clues actually described hand gestures (e.g. VULCANSALUTE, HANGLOOSE), which culminated in an in-puzzle punchline. Another had a hidden Australian theme, whose topical answers (VEGEMITE, KANGAROO) fit the grid only when filled in backwards, per the way the water swirls Down Under.

Here ends my check-in. Certainly I do not think Fogknife is in any “danger”, though I suppose that if all this keeps up I may wish to reset its expected update-frequency. For the present, this blog remains central to my identity as a writer, even as I put more energy than ever before into reeling out whole pages for a primary audience other than myself, with mental-health breaks in between for writing predestined letters into tiny little boxes.

Share or reply to this post on Twitter, or elsewhere.

Joe Biden and Kamala Harris

Four years ago, I announced my intent to vote Democratic, and humbly suggested that my American readers do the same. Today I repeat this request, but with a little less humility. I aim it specifically at those friends of mine who would never vote for Trump this year, but who view the Biden/Harris ticket — “an old white man and a cop” — with distaste.

Putting the positive assertion first: Joe Biden and Kamala Harris are worthy of your vote. Biden, in particular, has put enormous energy over the summer and into the fall to demonstrate his sympathetic understanding of the country’s most pressing social and environmental issues, including racial justice, pandemic response, and climate-change mitigation. His party acceptance speech, centering on grief, describes the correct place that we will need rebuild from after four nightmarish years of loss and pain. Comprising itself from a broad coalition of American leadership, a diverse Biden administration would represent our best hope for a free future.

Every American of voting age who desires this future must now put a little effort into making it real.

Today calls each of us to lend all the muscle we can into wrenching the levers of power away from Donald Trump and his zombified Republican party. We all know they will very literally stop at nothing to hold onto it, and we know this because they we can see them constructing an anti-democracy machine in broad daylight, right now. To stop this machine, we must make our collective voice as large and as loud as possible, using our votes. The more lopsided we make this election’s results, the better chance we have of gummming up Trump’s contemptible machinations against American democracy before they can wreak terrible and lasting damage.

After we do democratically defeat the Republicans through overwhelming numbers, we must scatter them. We have to immediately take steps to buy America time: this might mean dismantling the electoral college, reversing gerrymandering, packing the Supreme Court with uncorrupted justices, or anything else necessary to forever drain the Republican party of its voice and power. With some breathing room thus established, the nation can turn to pass all the social and environmental legislation it needs to survive — and assist the whole world in surviving — the coming global challenges.

From there, the country can proceed to politically redefine itself, perhaps allowing the Democrats to formally split into separate progressive and conservative parties (and allowing the latter to absorb any ex-Republicans showing an ounce of remorse), both willing to face the coming challenges instead of denying them. Try to envision a future national election whose ballot contains more than one viable candidate whose victory you would accept! That’s the future I want us aimed at.

This leads to my negative assertion, which I know some of you will take issue with: Any action other than voting for Joe Biden and other Democratic candidates directly supports permanent white-nationalist minority rule over America.

Yes, this includes abstaining from the vote altogether, or voting third-party.

I sympathize with the frustration inherent with living in a two-party state, today. I understand the drive to vote for one’s heart by ticking the box beside — or even writing in — the name of a candidate who most thoroughly represents you and your desires, even if they have negligible chance of winning. It feels good and fulfilling to listen to your heart, when it comes to political action.

However, the choice you make when voting should come from a different place than the more personal choices you make in political volunteering, donations, or direct action. Voting is a time to show up and do the work cut out for you. In this case, that means selecting which of the two viable candidates serves as the better approximation for the future you wish America to move towards.

I have seen one wise person invite their readership to think of elections as public transportation. You don’t refuse to board a bus just because it doesn’t literally take you right to your doorstep; you still use the route that gets you to the right vicinity. A compromise with all your neighbors, in order to get the most people more or less where they need to go.

And, friend, it’s so important that you get on this bus with me. If we don’t do this together, I’m not sure we’ll ever get home again.

Here is how to register (or check your registration) and vote in your state. Compared to past elections, you likely have an expanded ability to vote early, or by mail. If so, please consider casting your vote as soon as possible.

Here is how to become a poll worker in your state. American poll workers are traditionally elderly retirees — the population most at-risk from Covid-19. With this year’s expected high turnout, your state is likely in desperate need for more help, especially from younger people. Please consider signing up as a poll worker, if you can.

This article was also posted to the “politics” section of

Share or reply to this post on Twitter, or elsewhere.

Front cover of 'A Snowflake in my Hand' by Samantha MooneyAccording to my archived receipts, I ordered a copy of Samantha Mooney’s A Snowflake in My Hand in April of 2013. I cannot remember how I found this particular title, but given the timing I surely purchased it as inspirational fuel for a never-commenced project, a followup to 2010’s The Warbler’s Nest that I’ve long thought of as “the sad cat game”. This also means that it would have shown up at my house right around the time my parents’ health crisis began, kicking off an immensely challenging half-year that reset all my intentions and priorities. So I did not read this book, let alone make the game.

These Covid times, however, have found me dipping into my personal library — specifically, that fraction of it that has traveled with me over the years, sometimes across a dozen house-moves or more, surviving the printed-matter cull that each one involves. Snowflake has racked up four points on this particular board. After I had visited with some much older friends from my bookshelves, this slim volume pulled at in my attention. While I still have no plans to make the cat game, our world’s pervasive melancholy plus the recent passing of Shadow, my brother Ricky’s cat, guided me to read this book at last.

The title comes from a poem framing the book, a verse-memory of the author’s favorite cat: Fledermaus, a runty, harelipped all-black that briefly served as mascot for the New York veterinary clinic where Mooney worked in the 1970s. Her prose is significantly blunter than the book’s evocative title or the haunting watercolor she painted for its cover, depicting little “Maus” gazing out a rainy windowpane, on the verge of fading into the gray air herself.

But the book isn’t really about Fledermaus, or even Mooney’s loving memories of her. Maus’s brief life flickers through the middle pages of a strictly chronological recitation of an eventful year or two in the author’s life. One month follows another, down through the chapters, and for each one she describes all the people and animals that happened to have passed through.

The narrative locks its focus on its cats, both the ones in Mooney’s home and the feline patients at the clinic. The patients’ owners receive secondary attention, and every other human subject — Mooney’s friends, colleagues, and even herself — stay in the background. The author describes her own role so slightly, in fact, that it took some reading before I realized she was not a doctor but a junior technician, taking a half-load of undergraduate courses alongside her clinic work, and moonlighting in a restaurant as well.

Snowflake’s log-book approach offers some tantalizing glimpses of a young woman’s life in New York during the 70s. I squinted to pick out details about the apartment she rented, and the friends who sometimes crashed there. At one point she and Fledermaus vacation at “The Playboy Club” in New Jersey, a detail that reads rather bizarrely today! A minute of online research showed how this was a resort hotel that ol’ Hef did indeed build in the freewheeling 1970s, and which lost its branding at the start of the Reagan era, and has since gone to seed.

The narrative ends when Mooney notices that an emotionally intense period of life, growth, and death among many people and animals dear to her has come to a close, letting her drift into a period of quiet reflection she didn’t realize she needed so badly. This reflection becomes the text of A Snowflake in My Hand, concluding with the latter half of the opening poem: aching to hold a tiny loved one again, a sweet memory that can only melt away when grasped.

For all the workmanlike recollection that comprises most of Snowflake, it does contain a nicely subtle structural turn, opening with a study of what “quality” means to veterinarians, and closing on how the same word applies to their patients and clients.

To the healers, and especially those who focus on often terminally ill animals, “quality” means quality of life: the thing they try hardest to maintain within their patients, and the presence-or-absence of which directs all their actions. Mooney gets quickly into hard decisions that the clinic’s staff and clients must make about the patients — not just when to end an animal’s life, but when and how to extend it. An early scene relates how a client and a doctor surprised one another as they decided together to amputate an 18-year-old cat’s disease-ruined leg, rather than taking the more typical route of euthanasia. An otherwise robust old cat, it rebounded and adapted quickly once the source of its suffering vanished, and it lived joyfully for three more years.

(The book counterweights this happy story with a profound scene some chapters later, where Mooney briefly revives a terribly ill cat with a transfusion, letting it enjoy a single day of comfort and affection after a long misery, and before a peaceful, guided death.)

At Snowflake’s end, Mooney revisits “quality” in another sense, as in the many qualities that make up a personality. The work a person puts into keeping a pet healthy and happy, she writes, becomes energy invested into a long project. Seen this way, a long-lived pet exists largely through the exercise of its human companions’ personal qualities. And in those cases where a pet outlives its owner — as happens in one of the final events of this book’s recollections — it continues to serve as literally living evidence the departed person’s quality, their goodness and care, for the rest of that animal’s time.

I don’t have any good photographs of Shadow, but she’s easy to describe. You’ve met her type, probably: a gray blobby homebody quite content to move very little. This is how she spent the latter seven years of her life, meatloafing in Ricky’s one-bedroom apartment in Bangor.

She had a deep memory, and would bellow a greeting at me every time I visited Ricky for the first time in a while. Ricky felt an especially deep rapport with the cat; he’d often talk to her late into the night.

Before living with Ricky, Shadow was our parents’ cat for more than a dozen years. I came to understand that Ricky saw Shadow as the last living link to them. When middle-brother Pete suddenly died earlier this year, Shadow became the only nearby family that Ricky had left. And now she’s gone, too.

Ricky was close to Pete, and his untimely death upset him as much as you can imagine, but he worked through the pain swiftly. Shadow’s long-expected death, literally in his arms, crushed him. It haunts him still, many weeks later. These days I have two scheduled phone calls per week with Ricky, and he describes every time in his Down East dialect how he misses Shadow “something awful”, in the way he used to talk about missing “maw” and “pop”.

Ricky has singled out a particular large stone on the banks of the Penobscot River, within walking distance of the apartment where he now lives alone, declaring it Shadow’s Rock. He goes there frequently to remember Shadow, and imagine her presence as a little nearer somehow. I know that he means this literally: it really is the departed cat that he turns his mind to. But I understand better, now, all the passed-away he remembers at once via lazy gray cat, that accidental inheritor of all quality from our diminishing family.

Share or reply to this post on Twitter, or elsewhere.

I plan to read this tomorrow afternoon, as my family bids a pandemic-delayed farewell to my brother Pete, who died in January.

A panel from the first Spider-Man story, depicting the title character walking away, into the darkness.I first met Pete when he was fifteen, and I was zero. As an unplanned child, I was given largely into his care by our mid-career parents, and he took up the job with joy. With a pure heart, uncluttered mind, and unerring attention to the people he cared about, he would act as both surrogate parent and playmate through all my single-digit years.

His role model during his own long childhood was Peter Parker, from the comics: an awkward but brave boy who faced his outsized responsibilities with courage, perseverance, and humor. Pete would every day try to emulate his namesake by balancing his roles as a watchful protector and a playful teacher. I felt so lucky to have my own personal superhero in Pete. Whatever foundational love I have for humor, games, and play comes from this time with him.

When I moved on from our home, Pete searched for other ways to fulfill his call to act as a caring protector. After a perhaps over-literal stint as a night watchman, he found his true calling as a caregiver in group-homes for adults with cognitive disabilities, a taxing and thankless career that he willingly poured all of himself into. This work, leavened by following with his whole heart the ups and downs of the Red Sox’s fortunes, defined his life for many years.

When his wife Janice took ill only a short time into their marriage, Pete followed the only path he knew, shifting the entirety of himself into her care and protection. So much of him has gone into the earth already, with her tragic passing six years ago. His superheroics ended alongside Janice. We today lay to rest only that part of him that stayed behind.

In these latter years he found love and support in his Bangor families, both given and chosen. His older brother stepped up to become Pete’s own protector, now that he finally needed one himself. Pete also found understanding and solidarity among his fellow struggling souls at the city’s Clubhouse International chapter, where he rebuilt new friendships. But he left us very suddenly, before he could finish redefining himself.

So, it’s that superhero, his truest nature, I say goodbye to today, as I turn to face my own great responsibility to continue expressing his best virtues into the world. As the first benefactor of his loving, playful selflessness, I will carry an echo of Pete’s amazing spirit within myself for the rest of my life.

Share or reply to this post on Twitter, or elsewhere.

I’m pleased to announce a new guide to installing and using Bise, my simple log-analysis tool for measuring a website’s recurring readership. My thanks to Linode for lending me a platform to share this guide with a wider audience than my writing usually has — and I suppose I can enjoy some fun irony about that, given the subject matter.

This article also represents my first piece of paid freelance technical writing for a commercial publication since I announced my intent last summer to focus more on writing professionally. I actually began my conversation with Linode way back in February, but the world got in the way for all parties over the next half-year. Seeing this article published at last reignites my desire to make a habit of this, even though my life has turned wholly upside-down from a year ago. (Because, y’know: so’s yours.)

Admittedly, it’s a little funny that my first article for this particular publisher is about software that I myself wrote! But I found the Linode editorial staff to welcome proposals to document creative tools developed on Linode-developed servers — a tidy descriptor for nearly all my personal projects for the past several years. I do plan to pitch more guides for technology important to me, and promise that at least some of these will cover stuff created by people other than myself.

Share or reply to this post on Twitter, or elsewhere.

Last week, after a period of introspection, I began work on the next revision of Bayamo, the “braided chat-stream viewer” that I first prototyped in 2017. A conceptual breakthrough last night directed me to work in aspects from one of my favorite recent IndieWeb-adjacent applications, and the results bring me such immediate delight that I thought I’d indulge in a “developer’s notebook” post, even while this project remains on my workbench, some distance from any public release.

I have lately felt shipwrecked, separated from my many excellent friends and peers via the terrible pandemic and the way that isolation, if left unchecked, can become self-reinforcing. I first toyed with Bayamo years ago because my friends have long been scattered across a hundred chat channels, and I once again longed for some way to keep tabs on their activity without — well, wihout tabs.

Then as now, I hate the typical chat-app interaction of having several windows, each dedicated to one chat network, and each filled with tabs with their “unread messages here!” lights on. What could the messages be? Won’t know until you click them! Each and every lit-up tab asking for my attention, and by extension asking me to spend much of my day just clicking around my windows, always wondering if any of the conversation will be interesting, or anyway more interesting than the current tab’s content.

Because if I don’t, then why do I bother at all, right? And so, tired of walking in tab-chasing circles through my chat-window stack, I end up reading nothing at all and feeling lonely and miserable — despite being literally surrounded by all my friends having brilliant conversations about every topic, hidden away in their own alcoves.

As I wrote in 2017:

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.

At the time, I based Bayamo on the ancient, much-maligned, but open and flexible chat protocol of IRC. While I continue feel the same atavistic pull to using IRC, I have switched my favored vehicle from a Mac app — which Bayamo required — to IRCCloud. For fifty bucks a year, you get a handsome and stable web-based IRC client with the “always-online” presence expected in our Slack-spoiled world. (It features its own Slack bridge, too, long after that chat company finally cut away its own threadbare IRC support.)

And, most relevant to my eternal grouse against clicking lit tabs, it lets every paying customer use its full API. Aha.

So, last Wednesday, my mind clear after an especially intense (if topically unrelated) therapy session, I tucked in. By evening I had remade a better Bayamo, using new skills I’d picked up earlier in the year, and running much more efficiently than my last CPU-chomping prototype. I boasted about the achievement to my friends on ifMUD, who had not seen me in a long time, but whose conversations I once again felt I had a chance to follow.

An aside about ifMUD: Even though I did invoke the MUD’s name in my 2017 article, I did not clearly see that Bayamo’s original mission could have been expressed as “Make all of IRC work like ifMUD”. The MUD’s own multi-channel chat pushes everything into a single stream, with every utterance prefaced by the name of the channel as well as the speaker. It gives you a bevy of special commands and keystrokes to deftly switch between which channel you yourself are speaking to, as well as fine-tuned controls for temporarily muting chatty channels, recapping past conversation, or quietly slipping in and out of their membership rosters.

Like any purely text-based system, ifMUD’s learning curve poses a challenge to new users. I had reason, many years ago, to put the work into learning its unique channels system — and once I understood it, I loved it. I quickly got comfortable with letting a single MUD client window stay open while dozens of conversations among dozens of people flow by without any input needed from me. And so, when subsequently facing the more typical Slack/Discord/IRC/what-have-you setup of endless clicky-clicky tabs, I felt blocked and frustrated. I want that ifMUD-style stream everywhere! And with everything in it!!

And as my friends on ifMUD gently told me yesterday, this idea is utter nonsense. It cannot possibly scale beyond membership in more than a handful of moderately active channels; anything more and the comfortable flow would turn into a Matrix-style blur of tumbling text, pouring down one’s screen far too fast to offer any meaning. Giving the problem some thought in the subsequent days, I made the natural next steps of re-implementing even more of ifMUD in my silly invention, porting over its smart channel-muting features. But, of course, the real solution involved thinking in new directions entirely.

Yesterday the idea struck me to try infusing Fraidycat’s DNA into the prototype. I have already sung Fraidycat’s praises on Fogknife, and my love for this application has not dimmed in the months since. This feed reader continuously collects news from sources across the web and quietly updates its own list of the more recent items, grouped by source and ordered by recency. It holds all items with a feather-light grip, quick to let outdated items — whether read or not — scroll out of view and out of mind.

Well, that sounded applicable. So now, the Bayamo-followup prototype looks like this (with names and other sensitive text blurred out for propriety’s sake):

A screenshot of software running in a text terminal emulator.

This screenshot from an iPad (running Panic’s Prompt terminal emulator) shows the prototype displaying the most recent five messages from the most recent four channels of the many that IRCCloud keeps me connected to. From the top, there is one of Freenode’s IRC channels about the IndieWeb, a Slack channel for sharing silly images, some chatter from ifMUD, and a political discussion from a different Slack.

These four channels appear in the order of recent activity. In this case, #indieweb-dev has seen the most recent new conversation. Each time a new message comes in over the API, the screen redraws itself, reordering the channels as appropriate. And as with the original Bayamo, nothing displays timestamps, because I do not care. If the program displays a channel at all, I know that I must be looking at fairly fresh conversation; no need pinpoint anything with to-the-second granularity.

So, like Fraidycat, it doesn’t grow and grow a backlog whose tip drifts every more unattainably into the past. Everything that the program wants to show you, at any given time, fits on a single screen. Channels that haven’t seen any activity for a while drift “below the fold” and out of sight, until they happen to pick up again. More active channels stay in-view, but display only the most current conversation — as if you’ve just rounded the corner and came across your friends discussing something. Enough to give you the gist, goes the theory.

And to this theory I have added another twist: next to each channel label is collection of five “keywords”, the output of a third-party text-summarizing code library whose input is the last several dozen utterances seen within that channel. Does this actually work? Sorta! The words do gradually change over time as the conversation shifts; you can tell, for example, that my friends on the MUD had been discussing home renovation for some time. And coincidentally, my separate friends in that Slack “dumb-pix” channel had shared photos of some deck repairs, explaining the presence of “frame” and “floor” there.

At any rate, the program — like the original Bayamo — remains a strictly read-only affair. To actually participate in a conversation, you need to pull up your “real” chat-client of choice and join the channel that piqued your interest — which will have the side-effect of filling you in on all the chatter that preceded the five lines that this program shows.

I feel like there’s something here. This project appeals to me in ways that it didn’t quite hit in 2017, and much of that comes from my explorations since then of IndieWeb’s philosophy: mixing a stubborn insistence to use the web on one’s own terms with the acceptance that everyone else will use it however they wish as well, and reconciling the two through both an open heart, open standards, and clever tooling that draws the two together.

All I can do for now is run this foolish program for a while and see where it wants to go. I can say it felt pretty good to very literally dust off and charge up my shelved circa-2013 iPad (which I otherwise keep around, running an outdated OS, to prove to my disbelieving self that I used to make games) for the sake of this project. The prototype now treats the old iPad as a dedicated device, and they get along swimmingly so far, propped up in the corner of my desk and running continuously. Let them both be beautifully ridiculous together for a while, and let’s see what happens.

Share or reply to this post on Twitter, or elsewhere.

I posted the following note to my LinkedIn page earlier today, where I also linked to this Daring Fireball article.

A note to my friends who still work at Facebook:

You are at the top of your career. The very fact of your job at Facebook demonstrates a level of technical acumen that would allow you to work anywhere you wish within the technology sector.

The time has come for you to take advantage of this. Your employer has become unworthy of your talent. Please quit. Work for a company doing literally anything else.

From promoting hateful conspiracy theories to favoring Trump’s re-election, Facebook’s drive for emotionally fueled “engagement” over all else steals the light from our shared human future in order to enrich a handful of people.

I know that you do not identify as a white supremacist. Facebook, however, funnels most of your talent directly into growing and empowering white supremacy’s most significant technological ally in spreading hate.

I urge you to think of your own career prospects, as well. The peak of Facebook’s positive reputation already lay in the past. After this year, employers will justifiably assume that hiring someone from Facebook would risk bringing in a culture of division, deception, and algorithmically optimized racism.

Please, for your own sake, if not for the sake of the future: leave Facebook. Do it today, before it ruins you.

This article was also posted to the “politics” section of

Share or reply to this post on Twitter, or elsewhere.

Detail of a photo from the article: lush, green grass.I love this wonderful NYT feature about Freshkills park on Staten Island, written by Robert Sullivan and beautifully illustrated with Jade Doskow’s photogrpahs.

The park, I learn, used to be one of the world’s largest garbage dumps, a city unto itself with piles of stinking refuse 20 stories high. It made an even larger swath of New York City unlivable through its byproducts of poisons, vermin, and indescribable miasmas.

In early 2001, after over fifty years of operation as a dump, Freshkills received its last shipment of trash. It then began an amazing and carefully planned transformation, a true geo-engineering project. Next year — twenty years on — it will open to the public as a lush, beautiful park.

The rotting garbage from generations past remains at the core of these grassy new earthworks. Through waste-recapture technology, the park represents not just a single act of transformation, but a continuous one, turning the garbage’s limitness methane into heat and energy, and making that available to the nearby grid. What was once a monumental eyesore has become both a place worth visiting and the source of some New Yorker’s next hot tea.

The story makes me feel amazed and impressed and a little sad. This reads like someone’s fantasy for how things ought to be, or could have been, and not a real project of successful long-term thinking that has actually succeeded. Reading the same newspaper’s front-section headlines day after day, one can’t help but see any possibility for a greener future, one that requires more than a little bit of work and patience, inexorably slipping away — the victim of a civilization-wide focus on tomorrow only, and seldom the day after.

Does this story give me hope? I don’t know about that. It certainly does compel me to stop and reconsider the possible, in light of this new evidence of the actual.

Share or reply to this post on Twitter, or elsewhere.

Following yesterday’s post about Subcutanean, a couple more thoughts on procedurally-generated entertainments:

Subcutanean intentionally exposes enough of its own process to the reader — just in its “on-board” preface and appendix material, and apart from the author’s online deep dives into the book’s producton — that one gets a sense of the scale of the entire project, the scope of all its possibilities, and most importantly the intention behind it all. Subcutanean openly limits the scope of its procgen-engine’s meddling to two characters and one setting, keeping the broader story contained within an author-defined envelope of theme, plot, and purpose.

At risk of over-using the comparison (since I invoked a similar one just days ago, writing about Sayonara Wild Hearts), the novel’s epilogue that lists how one’s own uniquely generated copy of Subcutanean differs from others gave me a very similar pleasure to the end of a Telltale game’s chapter, when you see a recap of the major binary decisions you made during play, and how your choices compared to the rest of the playing audience. Just as I thrill when I see that I made an unpopular Telltale choice, I felt a strange but real pride to see that “my” protagonist’s home boasted a conversation pit in its shag-carpeted basement, an element that came up a handful of times in the telling and which — the epilogue assured me — featured in very few Subcutanean copies.

I felt, in short, like I comprehended the whole possibility-space of the novel, even though I’d “seen” only a single thread running through it. I feel the same way after completing a Telltale game’s chapter. Admittedly this seems a little unfair to the book, since I gather its entirely textual procedural space as far “bushier” than that of a fully animated and voice-acted Telltale episode. And yet, I finished the novel with the same pleasant sense of ownership and familiarity with the choices made within, even though I myself hadn’t made a single one! In both cases, I enjoyed similar recognition of a multi-dimensional structure, and the satisfaction of winding a complete passage through it.

Compare to a famously super-duper-procgen video game like No Man’s Sky, which does try to simulate all of existence in a single grand subroutine — and so gives you an infinity of stars and planets and aliens and buildings that are all more or less the same, spread out across the galactic plane like butter on toast. This planet might have a green sky instead of a blue one, and that one might have acid rain and 30% more silver deposits, and this star system has double the space-piracy than that one. It provides an ocean-wide and ankle-shallow possibility space, and the game’s expectation that you revel swimming in it exposes a mismatch, somewhere.

For all these grumbles, though, I have No Man’s Sky on my mind because I just rolled up a new hapless astronaut within it. I’d tried the game a couple years ago, and lost interest after six hours or so playing alone. This time — given courage by my wonderful vacation last year in Subnautica’s dangerous shoals — I began on the game’s somewhat more attention-demanding “survival mode”, with stiffer (if not exactly catastrophic) penalties for dying. The game’s received a bunch of significant updates since I last visited, as well, and I look forward to trying its multiplayer modes.

Most importantly, my wife joins me as a co-pilot for this round, making the thought of a flight to my goal in the galaxy’s core more of a pleasant household diversion than a lonely and time-consuming grind. She’d lately been expressing some curiosity about the game, and this short Twitter thread by Laralyn McWilliams inspired me to give the flawed but earnest work another try. I intend to stick to it at least through the completion of its story mode, which I expect to be a much less compelling but a far more attainable goal than finishing Subnautica.

This article was also posted to the “games” section of

Share or reply to this post on Twitter, or elsewhere.

Cover of the novel 'Subcutanean'Owning a copy of Aaron Reed’s Subcutanean means possessing one vertex of a vast textual sculpture that encompasses its entire print run, past and future. What appears at first a technological gimmick becomes, in the act of reading, something far more impressive: a twisty horror novel that folds back not just on its own structure, but the entirety of its own presence in the world, realized across many published copies.

Subcutanean wears its gimmick on its cover: a procedurally generated novel, printed on demand, with no two copies alike. All the books nevertheless tell the same story, a meditation on the terrible uncertainties intrinsic to an intimate two-person relationship. The procgen-engine that knits each copy together, based on a unique random-seed number (mine used 36619, according to its spine), twiddles with various story-details. According to the end-notes of my copy, for example, “my” protagonist had a troublesome predilection for booze not present in all of his iterations. He made a few decisions differently, for this reason and others, and this affected the mysterious geography he explored, and the path taken by his thoughts therein. But the overall arc of his story remains broadly similar to that experienced by all his namesakes across every printed copy.

A work of fantasy-tinged horror, Subcutanean deals with metaphors of parallel universes and mazes of possibility made real on two levels: in the fiction the lost characters inhabit, and in the reader’s world, which contains indefinitely divergent copies of the same book. And I found it a good, creepy story — a real page-turner that I soaked up in just a couple of sittings! I often feel that I lack the fascination for procedurally-generated or emergent-narrative systems that so many of my friends and colleagues have, so it took some months of observing other folks’ reactions to this novel, all hinting at its uniquely, impressively self-descriptive nature, before I finally joined Orion in the unnerving task of exploring the maze of twisty little passages under his house.

Reed’s background as a text-adventure game designer shines through as much as his scholarly devotion to procedural-narrative experiments. Prior to this novel, the Reed work I had the most familiarity with was 2009’s Blue Lacuna — among the largest traditional parser-driven adventures ever published. (And a damn good game that I spent at least a week or two with, if memory serves.) The bulk of Subcutanean takes place in a fantastic space that quite clearly comes from a mind used to envisioning vast underground spaces divided up into discrete rooms, connected by doors and corridors of every description, and setting up all sorts of puzzles involving darkness, quantities of rushing water, and various lengths of rope. I certainly don’t think one need be an aficionado of Zork-likes to appreciate the correspondence, but the glimmer of recognition amidst all the strangeness made the journey a little more fun for me.

The novel’s horrific aspect keeps one from getting too comfortable, of course, and I felt especially interested in the particular interpersonal tension it explores, one I don’t recall seeing explored much in recent fiction: the imbalance inherent in a deep friendship between two men, one openly gay — the protagonist, Orion — and the other nominally straight. (And, of course, both young enough to make believably cringeworthy decisions.) Through the serpentine labyrinth of criss-crossing realities that Orion finds under his basement, and before we can arrive at a graceful ending, the novel examines the rewards and the risks of the main characters’ relationship by exploring some shatteringly extreme ways it can go awry.

I always appreciate the use of horror to show the best of human nature by casting it against worst-case (and sometimes supernatural) counterfactuals, and I have seen this applied with great effect to various family and friend structures in other work. The nature of Nico and Orion’s intimate friendship, and the electric current that both powers it and threatens it like an ever-present third rail, also drives this novel and its many-worlds hook. I completed my journey through Subcutanean’s subterrarium feeling like I’d been allowed to see at least two explorations in text I’d ever experienced before. I have read only one iteration, and feel quite satisfied to leave it there for now. I can easily recommend this novel to anyone who enjoys a meaningfully creepy read.

This article was also posted to the “books” section of

Share or reply to this post on Twitter, or elsewhere.

Previous post: I played Sayonara Wild Hearts