Since discovering the Seven Minute Workout (7MW) several years ago, I have used a variety of timer-tools to help pace me through its drill-pattern. Just as when I wrote that article, my favorite timer has remained the one built in the Cardiio iOS app. (And when my iPad isn’t handy, I fall back to a free web-based timer.)

I power through these exercises about twice as much as I did back then, closer to six days a week than three. This increased pace, though, made me start to chafe against the ways that none of these tools exactly match up with my personal 7MW preferences. And so, inevitably, I took the opportunity of a short road trip last weekend to write my own.

Here, then, is Brickfielder, currently in the very same state that it stood after I bashed it out in a Bangor, Maine hotel room between 11 PM and 1 AM one night. It does just what it claims, calling out instructions and time-ticks using the Mac’s native text-to-speech capabilities, and throwing in a couple of twists indicative of my own personal 7MW preferences. Quoting its README file, its features include:

  • A minimal, speech-centered UI. Brickfielder guides you through voice alone (with a simple text transcription in its terminal window).

  • Shuffling the drills a bit beforehand, for variety’s sake. While you still get three rounds of aerobic, lower-body, upper-body, and core drills in that order, Brickfielder will randomize the order of the three drills within each category.

    In other words, it will always start with an aerobic drill, but that drill might be step-ups, jumping jacks, or high knees. It will then move on to a lower-body drill. You will always receive all twelve drills exactly once per workout.

  • Breaking the side-planks drill into two sub-drills, separated by a very short pause to allow for switching sides.

Named after a hot and dusty Australian wind, Brickfielder represents the first “wind series” project I’ve released since Bise, way back from the top of the year. As such, it serves as a personal reminder how much non-business travel tends to inspire me to finally deliver highly specific software-tool projects that may have been semi-consciously gestating for months prior.

I tapped out Bise while sitting on a ocean-overlooking balcony in Tampa, Florida, and I continue to make use of it every week (via the Fogknife regular-readership summary it automatically mails me every Sunday). I have used Brickfielder every day since writing it, and plan to continue this pattern. I would love to add all sorts of fun and extremely opinionated features to it, as time allows. We’ll see what developments the upcoming holiday breaks bring; any worth noting shall find mention here.

Jen Weber gestures at a slide depicting an inverted pryamid with four layers. Largest to smallest, they are labeled 'Users', 'New Contributors', 'Regulars', and finally ':D' (that is, a smiley-face)
Jen Weber speaking about “How to grow (or save) your favorite open source project” at All Things Open, October 2018

Last week I once again visited Raleigh for All Things Open, an annual conference about open source software with a particular (but not exclusive) focus on its commercial uses. While I enjoyed last year’s conference quite a bit, I consciously experienced the event differently this time. Knowing that all the devops talks in the high-capacity ballrooms would not hold my interest much (such Kubernetes, many Docker, wow), I instead stuck to the cozier meeting rooms downstairs, where one found tracks dedicated to topics like community building and open government.

My strategy paid off; all the notes I took came from talks with little or no code on their slides, and all the personal connections I strengthened or forged at the conference’s social events had entirely more to do with common interests in organizing people and projects rather than just programming computers. I did try some of the upstairs talks, and I bounced out of every one within minutes. The presenter would start stepping the standing-room-only crowd through the process of opening a database handle in Go, or whatnot, and I would feel entirely out of place.

Yes, after twenty years in the field — as many years as the term “open source software” is old, according to a bit of trivia repeated by many speakers — I seem due for some reflection on my own identity as a technologist. Long time gone is the the eager young hacker always hungry to pick up new languages and techniques. I know I still love building things, and some of those things I love building are still made of software. But, increasingly, my interest mellows from development into maintenance. Less disruptive software frameworks, more dependable human-driven foundations.

And on that note, here are my three takeaways from this year’s ATO:

I should represent IFTF at these sorts of things. As usual, I registered under my “Appleseed Software Consulting” freelance identity, so that’s what my badge said. Nobody cares about this, and that counts double at a software-focused conference. Even I don’t care about this, really; I may love my clients, and feel proud of the work that I do for them, but when a polite person asks “So, what do you at Appleseed?” I usually say something like “Oh… I make websites,” and that’s the least boring response I can give, even to a fellow technologist.

A badge bearing “President, Interactive Fiction Technology Foundation”, on the other hand, would serve as powerful tinder for starting a conversation about a much more interesting organization I truly love to talk about. Shortly into All Things Open I started ignoring my real badge and introduced myself with “I help run a digital arts nonprofit.” Even saying only that much, I know that I myself already look far more interested with this than with some tired mumble about building custom software solutions.

And — let’s face it — as its president, I really need to step up my fundraising game for IFTF. Not to say that every conversation must turn into a chance to make the ask, but rather that I should never pass up an opportunity to spread awareness to a receptive audience (even audiences of one!) about IFTF and the good work it does.

Further, I had the good fortune at ATO to meet and collect wisdom from a number of much more experienced non-profit leaders. In the very common case where — like me — they served their organizations as unpaid volunteers, they were either retired or they had day-jobs. In our conversations they scarcely mentioned these jobs, whether present or former, unless they could draw from them some anecdote relevant to their nonprofit roles.

From now on, when I attend a technology event, I’ll rep my role at IFTF up-front, and fill my pockets with IFTF business cards and stickers to boot. (Note to self: Make more stickers.) You have survived multiple board elections to earn these shoes, jmac; you should wear ‘em outside the house once in a while.

I must focus more on leveling up my projects’ contributors. I attended two quite inspirational talks early on the conference’s first day, Jen Weber’s “How to grow (or save) your favorite open source project” and Deirdré Straughan’s “Marketing your open source project”. Together, they made me feel impatient to better myself when comes to not just welcoming contributors to the open-source projects I manage, and not even just making them feel rewarded, but actively encouraging the more interested of them to stick around. With kindless, patience, and luck, one can level up initial “drive-by” project contributors into regular contributors, and then — in jewel-rare cases — into full-on project collaborators.

As the seasons accrue, I become more interested in knowing that I can safely leave projects I love, even projects that I personally started, and know that they’ll stay maintained and useful because I left them in the hands of people I trust. I lead more than one open-source project with user-audiences larger than merely myself, and while all enjoy a handful of contributors’ names attached, none really have any true collaborators, much less a succession plan. After these talks, I find myself very much moved to amend this.

I love open data, and I should play with it more. Finally, I really dug Nathan McMinn’s “Monitoring your city with open source IoT”. The speaker described a project he leads of sprinkling tiny, sensor-laden Arduino computers throughout his home city of Birmingham, Alabama as part of a citizen-led air-quality monitoring initiative. Working entirely in public spaces, the project neither hides its work from the municipal government, nor has it delayed itself by seeking unnecessary permission or resources from it. I really appreciated that!

It reminded me very much of my own work with BumpySkies, except in some ways more ambitious. BumpySkies analyzes and presents publicly available (if rather obscure) data in interesting ways, while McMinn’s project didn’t even have an API to start with, necessitating the team’s puzzling out how to collect the data in the first place. Even so, I found myself very much impressed by its scale, working at the level of a single, modestly sized American city.

I haven’t added any new features to BumpySkies since launching it two years ago in part due to my fear that the Trump administration, currying favor from its anti-intellectual base, might at any moment shut down the taxpayer-funded data sources BumpySkies relies on. McMinn’s talk, though, explicitly advocated local action, looking for opportunities in one’s own city to build something creative for the enrichment or edification of fellow citizens. It could be it an end-to-end project like his, or a new use for an extant API. Before he finished talking, I saw that Rhode Island does indeed publish an API for the buses that trundle past my Providence home all day long, and I spent my lunch hour scribbling out some ridiculous ideas for what I could do with it. I know that any work I did in this smaller sphere would feel much less susceptible to the increasingly polarized whims of national politics.

I may talk a good game about growing up and into more of a mangement role, but I will always be a hacker. Even as I perform more staid “adulting” in the technological realm, it would behoove me to always have at least one fun and invigorating project on the stove. I know from experience that I love working with public APIs like this, and thinking about them city-scale makes me hunrgy to try something new and beautifully absurd.

4 reactionsShare or reply to this post on Twitter!

A photograph of United States Vice President Mike Pence smiling and flashing a double thumbs-up gesture.

For my entire childhood, I learned from school, family, and popular culture that all of America’s evils lay buried in the past, forever vanquished by legendary heroes.

Systemic American racism, according to the mythologies of my upbringing, had long since fallen away. Martin Luther King Jr. gave a speech, and then he died, shedding blood that washed America clean of its sin. When bigotry occurred in modern times — so I learned — it happened only in small, violent outbursts, obviously criminal and easily contained and corrected.

I grew up with a similar narrative about sexism. Probably because my life involved far more women in my immediate proximity than it did people of color, I got the impression that it lingered on as an active problem. But as with racism, I learned that the worst of it had been solved long before my birth, through the pluck of suffragettes and their indomitable mid-century successors. I could feel proud to live in a country that had so thoroughly laid its worst natures to rest.

This story held for me, even though my growing awareness of the “culture wars” of the 2000s, until the middle of the current decade. I watched with confusion as Gamergate sounded an invigorating call to arms to a new generation of aggrieved young men to push back against feminism, and felt shocked at its rage-fueled successes. Then the Ferguson protests — and the outrages that spurred them — made plain to me both how rotten-through American culture remained with endemic racism, and at the furnace of reactive anger so much of white America turned up at the suggestion that black lives matter.

So many Americans felt so much righteous fury about these challenges to their comfort that they elected an overtly nihilistic successor to the most progressive and hopeful government of my lifetime. My country opted for a new leadership ruled by fear, hatred, and petty cruelties over one that even acknowledged our societal rifts, to say nothing of healing them. I think every day of the complicity I share in this by clinging naively to the belief of American evil as a thing long dead, and in all the future horrors it will enable.

And I think again of all this every time I get exposed to the storyline of Diablo III, a colorful and multiplayer-friendly mass-monsterbashing game I picked up on-sale last month, and which has been getting a lot of play in my home since then. It emphasizes noisy, colorful, low-brainpower fun, and just a few years ago I would surely have merely rolled my eyes and otherwise paid no mind to its childish depictions of good-versus-evil and just concentrated on the game’s gleeful mayhem. But now I recognize this message as reflective of the cut-and-dried morality that depressingly many of my fellow Americans view reality through, and can scarcely get through a play session without feeling a frisson of social despair.

The game itself is perfectly fine, and can even become quite rewarding when played in the proper mindset. Lacking any sort of intelligence or soul of its own, Diablo III leaves plenty of room for players to bring their own fun. Its impressively smooth cooperative mechanics, clearly taking lessons from MMOs, can make for a fun evening of carving a bloody swath across its maps with friends and family. I’ve been lately enjoying four-player sallies with my wife playing beside me and a couple friends joining via the internet, racking up kills and piling up loot and having a grand time feeling like a band of insatiably greedy and murderous assholes for a few hours every week. It’s not the sort of game I’d ever feel proud of playing, but I’ll be the first to admit that the cathartically perverse joy it offers has its time and place.

But, oh, its storyline. I need not go into any detail, but it paints the most typical cartoon backdrop where “evil” comprises only big, obvious monsters that want only to kill people, and “good” is whatever tries to kill “evil”, and that’s that. Diablo III scarcely invented this view in nerd-friendly entertainment, of course; this represents the default moral landscape for any game with an ultimate basis in Dungeons & Dragons. But with a zillion-dollar production budget, and offering an umpteen-hour play experience suffused with such lush colors and soundscapes and voice acting, Diablo III makes it hard to simply ignore this mediocrity.

In one scene, a character considers an opportunity to attack the game’s eponymous endboss, declaring it a chance to “destroy evil forever”. This crystallizes the game’s embrace of the othering of evil, a naive and painfully real fallacy that any angry human can so easily reach for: evil as a quality contained entirely in a person (or a population) that we can subsequently fight, or punish, or simply eradicate.

I saw this a few years ago in angry Americans’ insistence that unless I’m literally beating my wife in the street, or literally burning a cross in my black neighbor’s yard, then how dare you call my actions sexist or racist when so much real sexism and racism exists to fight. I see this in news headlines current as I type this, when the president of the United States so easily calls the latest mass murder performed by a fellow right-wing extremist “evil”, and then goes on about his day foaming up his base to continue fueling his party’s agenda of anti-democratic demonization and disenfranchisement of everyone who doesn’t look like them. And how dare you call the president’s work evil, they ask, when real evil is standing right there with a literal smoking gun?

The creators of Diablo III would almost certainly deny that their game carries any real-world political views. But when I see it starkly define “evil” as contained entirely within chortling, fire-breathing giants and their howling armies that rampage around in broad daylight cutting down screaming villagers, the game reflects this childish and too-easy view of reality that the current holders of power depend upon, and actively encourage their followers to hold. The game, therefore, ends up feeling like Trumpist propganda. Given its original release date of 2012, I can’t escape the suspicion that this highly visible and popular work — breaking global sales records when it first launched —- helped set the table for Gamergate, which in turn became one of the many heralds assisting the rise of Trump.

I plan to still play the game for a while longer, because I enjoy spending time with my friends and family, and I can compartmentalize the fun we have with Diablo III from the despairingly ignorant message it carries. But this barrier does take an active mental effort to maintain. Especially now that I’ve thought through what bothers me about this game, I know that in due time I’ll wish to invest my energies elsewhere.

2 reactionsShare or reply to this post on Twitter!

This autumn marks the twenty-year anniversary of my entry into professional programming, joining friends at the (dearly departed) Maine Internetworks. I’d learned Pascal in my undergraduate computer science classes a few years before that, and transferred what I could remember from that into learning Perl for this new job (along with some PHP, JavaScript, and C along the edges). I still use Perl almost every day, and I am in such a weird place with it right now.

I continue using Perl as my go-to general-purpose programming language despite the repeated declarations of its demise that started around the post-dotcom doldrums of the mid-2000s. I’ve worked in technology enough to learn to ignore pronouncements like these, as well as any shiny new creative tech that comes along — so long as the one I’ve gotten really good at using still works, and still has a community of comfortable size and temperament supporting it.

Perl, for all its relatively shrinking stature, has not fallen beneath this threshold, and I don’t actively fear that it will any time soon. It has enjoyed a new release every year for the last decade. Its humbly sized annual conference feels like home. I know that I can ask a question on IRC (either on Perl’s own network or a handful of project-specific Freenode channels) and I’ll get smart and thoughtful responses every time. I have yet to feel anything close to approaching a dead end with Perl; BumpySkies, only two years old, would not have happened but for open-source Perl modules dealing with highly specific matters of geographical math and obscure scientific file formats that others had recently shared. And those rare times I actually manage to find a topic so new that I blaze my own trail into CPAN, I very much build on foundations laid by many others.

And yet. While I can’t agree that Perl is “dead”, I do admit that it feels suspended in a strange limbo, lately. Part of this comes from my exposure, starting last summer, to technical conferences based around some concept other than a programming language. This began with !!Con 2017, which I enjoyed so much that I petitioned The Perl Conference to steal its ideas. I went on to attend All Things Open later that year, and then this year I went to the tiny IndieWeb Summit, with an attached visit to a Donut.js meetup.

At at !!Con and Donut.js in particular, I found myself significantly older, whiter, and maler than the average attendee. These are both smaller, high-energy gatherings based on people sharing personal stories of technological triumphs, obsessions, and transformations, and it seems natural they’d attract a more diverse crowd than a more staid or narrow-topic conference would. But when I later attend a Perl Conference and I see that the vast majority of attendees are, morphologically and culturally, of a type, I start to feel the creeping sensation that my favorite programming technology is missing out on something. Like it continues to burn fuel it purchased in 1998, paying no mind to alternative energy sources that may have appeared since.

As far as I can tell, good reasons to learn Perl in 2018 include these:

  • You are joining a company or other software-project team whose work involves Perl.

  • You come across an open-source project that you want to contribute to, and it makes use of Perl.

  • You want to learn programming in general, and you are the spouse/child/sibling/mentee of, or otherwise one with extensive personal access to, a Perl expert with the time and inclination to help you learn Perl in particular.

But, crucially, this is probably not a good reason to learn Perl:

  • You want to learn programming in general, and have no reason to choose one language over another, so long as it’s easy to start playing around with using your current computer.

Even though Perl technically qualifies under those latter criteria — many operating systems come with some version Perl pre-installed, for one thing — I would not recommend it to a novice programmer who doesn’t qualify for any role in the first list. Without a doubt, the “winner” there is Python, and this comes entirely down to its much greater diversity of culture and ecosystem. I have not attended any Python-specific conferences or other events, but I can tell from a distance that they much more resemble !!Con in having a broader spectrum of personal energy than any Perl conference.

Unless I planned to actively help shepherd the person through the best parts of Perl’s sparser ecosystem — and, consequently, warn them away from its trouble spots — then I could not in good conscience welcome a code-newbie to it. Not when I could instead send them off to a community where they would have a far greater likelihood of finding people more like them making things more interesting to them.

It feels, then, all the more like a paradox that I myself don’t take my own advice and follow this notional newbie into Python’s arms. I have no doubt that I could thrive in that ecosystem at least as well as Perl’s, if I had to. It would bring with it all the joys of working within such a larger, brighter, and more many-voiced environment. Sounds pretty good.

But the cost! It would take me calendar-years of intense study — stealing time where I can, in between all my current commitments — to attain a level of Python expertise similar to that I’ve earned in Perl over decades. And once there, I could… do pretty much everything I can do in Perl today, except without the nagging doubt? It just doesn’t seem worth it. More to the point, I just don’t realistically see myself ever making the necessary investment of time and attention, not when I could instead make things using the Perl tools and techniques I’m already expert in. (To say nothing of doing things that don’t involve programming, now and again.)

I can’t give marching orders to the whole Perl community in order to make its situation feel a little less script-lost. I can only describe what I plan to do: attend more language-neutral gatherings (I’m going to another this week!), and contribute my expertise to poly-technology projects and organizations (I help run one!). I will also continue to release open-source software that happens to use Perl — and, as much as time allows, do my best to set a stellar example of how lovely a modern-dialect Perl-based project can look when it uses contemporary, team-based development techniques like code reviews and continuous integration.

I want to see scrappy little Perl stay a viable option for the rest of my career as a software toolmaker, even if I concede that it has long since “lost” to Python as the single dominant technology in its realm. These sorts of personal-level projects and contributions represent my attempts to increase the field of broadly interesting and visible stuff built with Perl, so that hackers who’ve earned their programming chops via some other gem or snake might discover them, and maybe want to get in on it as well.

I have had the good fortune to personally witness this phenomenon with projects that I lead. While I’m no deep expert in any, I have learned a little Python (or Node, or Objective-C…) in order to create or contribute to something I cared about in an environment which had already chosen its language. And coming the other way, I have absolutely seen with my own eyes — and helped with my own time — folks pick up a little Perl in order to patch projects near and dear to me. It really does work!

I stand by my bullet-list of reasons to learn Perl, in part because I see it not as evidence of a hopeless dead-end but an opportunity to grow Perl’s ecosystem by widening the space implied by that second item. I plan to do what I can, and I invite other Perl hackers who share my concerns to join me: write and share open-source software that attracts contributors for some reason besides being written in Perl. Let it become a quietly shining vector to help create more Perl programmers, bringing more voices and backgrounds into a creative ecosystem that very much needs them.

4 reactionsShare or reply to this post on Twitter!

A cropped photograph of seven white men in suits standing in the Oval Office and flashing thumbs-up signs at the camera. The photo has cropped off their heads.

I have seen, in the last week, quiet astonishment that the New York Times’ exposé on the Trump family’s multi-generational financial fraud could not stay in the national conversation for even one full news cycle. I tend to agree with L. Rhodes’ take on this phenomenon, that this story served to set into motion lawsuits and other legal processes that — for now — operate quite well outside the hard-edged circle of the headline-news spotlight. I imagine that we will hear more about it later.

No, it was a different story, also failing to attain more than minimal attention-traction during these last few obsessed and bitter weeks, that really hooked into me. Combined with all that has happened on-stage since, this particular news item has convinced me more than ever that Republicans represent a true evil, ascending into the avatarship of demonically short-term thinking. Republicans seek to set up the world to suffer and die after two or three more human generations, so long as they can maximize the fun of their own, personal remaining years. And I feel called to recenter my own political stance as defined primarily not in favor of any plan or policy but against Republicans, at every level of American government.

We have learned an official position of the United States government takes as given that the average global temperature will increase by seven degrees over the next eighty years — more than triple the target maximum-allowed increase that the Paris climate accord strives for. That in itself does not fill me with venom against the speaker; I have entered into the record my own support for hard truths about the upcoming catastrophe. But the report continues with a recommendation that, because of the presence of this worst-case scenario, the government take no action to attempt stopping it. Because catastrophic climate change is distinctly possible, this report concludes, we should just accept it, and spend the resources we have today on enjoying our current lifestyle while we still can.

Of course, this slots in perfectly with every demonstrated Republican action and policy since they began their current ascent into power earlier this decade — propelled by white loathing of a black president, and all his policies that angled away from a childish focus on short-term gains. From their subsequent election of the most divisive president since the Civil War through their Supreme Court installation of an emotionally volatile frat boy and possible sex offender amidst an era of new feminist awakening, Republicans have pursued only an agenda of win, right now, me win right now, you lose me win heedless of cost. To accomplish this, they borrow rapaciously from the future, and never spare a thought about how the piling-up debt might get repaid — or, indeed, who will have to repay it.

Cold-comfort columnists will write this weekend that Republicans will find themselves called to account as soon as next month’s midterm elections. Maybe. I would of course like to see that happen, for reasons quite succinctly expressed by the headline of Damon Young’s recent column, and I plan to contribute my own minimal democratic effort to help achieve this result. But I know with certainty that Republican-led actions today will make Americans — and humans everywhere — pay a much higher price for the right to simply exist, let alone maintain a civilization, in the not-unimaginably distant future. The younger and healthier among us may even live to see it. Republicans don’t care. They just want their one marshmallow, right now.

Recognizing the danger that they pose, I today redefine my political stance as, centrally and specifically, anti-Republican. Whenever the opportunity arises, I will do what I can to chase Republicans away from the levers of American power, and then keep them away. Naturally I can express this in the voting booth, but I would also like to begin seeking ways to more creatively and directly damage Republicanism through direct action, in ways compatible with my social position and my expertise.

Voting is the easy part. Since America is stuck with a two-party system for the foreseeable future, that means I’ll vote Democratic in every election I can legally attend, whenever a given choice involves a Republican and a Democratic candidate. I will not care who the Democrat is. I will vote for a horse or a cabbage who running on a Democratic ticket if the other choice is a human being who, no matter their other qualities, chooses to align themselves with the party of extinguishing human civilization. I see no choice at all here. (That includes the choice of abstaining, or voting third-party. Neither of these actions would do anything at all to nudge the Republican further from office, which, again, has become my core political goal.)

Paths to direct action appropriate to my station are not so obvious, but I see some starting points. Last January I made a public call for Apple to drop its support of Fox News. I didn’t expect any visible response to that, and saw none. But today, it strikes me as an idea worth returning to. I envision an organized effort to take down the Republicans’ vile state-media channel the same way one would starve any tumor without harming the body that hosts it: cut off its blood supply. One by one, we could find a significant Fox News advertiser or partner that we might conceivably sway, and then use truth applied with intensity to encourage them to break off the relationship. (Apple, a paragon of capitalism that nonetheless strives to display a public interest in social justice, still seems to me a good initial target.) On success, we would choose the next target under the same criteria, and subject it to the same unwavering and many-voiced treatment. With time, effort, and luck, we’d start to see the whole mass shrivel and weaken, its ability to poison the American conversation muted.

Because that, ultimately, is how I plan to treat Republicanism, and all those who claim to represent it: recognize their speech as poison, and stifle it. Absolutely feel zero sympathy as they whine and rage and demand equal representation on every platform. The language spoken by Republicans is that of the devil himself, both tempting their fellow Americans and convincing themselves to trade away the entirety of the future for a second scoop of ice cream.

The truth is on our side, and I know that it can silence and wash away this ongoing evil, when directed with sufficient force, purpose, and clarity. I may not know exactly how I’ll help with that, yet, but I feel that this is the most directly effective political course I can set myself on for the time being.

9 reactionsShare or reply to this post on Twitter!

The cover of the book 'Paradox', by Margaret Cuonzo. I last month managed to get in on the tail end of a humble bundle of MIT Press Essential Knowledge books. I had, coincidentally, just written about my appreciation for one of them, so the opportunity to sweep up seventeen more at a bargain price seemed too auspicious to decline. But then I faced a problem: all the books have simple, one- to three-word titles describing their subject matter in the most broad terms — Robotics, or Metadata, or Free Will, to name a few — rather than describing what novel perspective or thesis regarding that topic that this volume brings. All these titles name topics I know at least something about, so none really sparked an immediate curiosity for me. I had read and enjoyed The Future (perhaps the most cheekily ambiguous of the lot!) in part because I know its author, but lacking that light for further guidance, I fell back to what sounded the most fun. And thus did I read Paradox by Maraget Cuonzo.

I had a good time with it! The book opens by cataloguing types of logical paradoxes, then proceeds into well-worn strategies for solving them — or at least disarming them. These range from “one link of the logical chain it demands dissolves under scrutiny” to “this entire premise makes no sense”. The author’s favorite paradox (and, if I recall correctly, the core of her own academic work on the subject) is the sorites paradox, which she describes this way:

  1. A man with no hairs on his head is bald.

  2. A man with one more hair on his head than a bald man is also bald.

  3. Therefore, a man with one hair on his head is bald.

  4. And therefore, a man with two hairs on his head is bald.

  5. [ Yadda yadda yadda… ]

  6. And therefore, a man with one million hairs on his head is bald.

(Digression: I first encountered this paradox in an illustrated Book of Amazing Facts for Kids. Under the heading “What is a heap?”, it stated that one grain of corn is not a heap, and neither is two, and in general adding one grain to a non-heap collection of grains wouldn’t suddenly transform it from non-heap to heap status. So how would “a heap” ever form? Accompanying this, a cartoon American Indian counted on his fingers while looking confused. I assume that the implied kinda-racist joke would make even less sense to a white kid of today than it did to me circa 1980.)

Having established this vocabulary and basic paradox-handling toolkit for the reader, the book presents its thesis, which I shall attempt to summarize: the hardiest, mentally stickiest paradoxes vex and confuse us because they plant one foot each in the very different systems of mathematical precision and practical, everyday language. They use the subtle ambiguities of the latter to either mask logical inconsistencies that a rigorous formula would make plain, or to weigh down otherwise logical terms with worldly doubt and double-meanings. This leaves us with nothing to solve, but rather presents us with a challenge to squint and see through the paradox’s dazzling disguise.

If I understand this correctly, we can apply this lens to the sorites paradox by shaving away the real-world concepts of men and hair, replacing them with more abstract terms. My off-the-cuff attempt follows:

  1. Posit that a drawn circle with nothing else drawn inside it has a property we will call mellowness.

  2. Posit further that a circle with with one more dot drawn in it than a circle with mellowness will also have mellowness.

  3. Therefore, a circle with one million dots drawn in it has mellowness.

And this checks out, right? It seems a bit pointless, since under this system, all drawn circles would appear to possess “mellowness”, but it doesn’t display any logical inconsistencies. And this helps us see through the sorites paradox’s hirsute veil: its power to confound comes from its application of formal-logic rigor to an inherently, even intentionally imprecise term — the meaning of “bald” — and inviting us to marvel at the result, rather than dismiss it as the natural outcome of a format disagreement. Both statements are made of English-language words, and it seems reasonable to mix them together freely, but of course they produce bogus results rapidly. It holds no more mystery than a CD player that can physically hold a DVD, and even spin it up, but make no sense of it.

Paradox ultimately encourages the reader to apply these paradox-piercing X-ray specs to real-world situations beyond recreational mind-games, retuning them as needed to dispel confusions and confoundments built from mixing practical and precise expressions, whether they arise from lazy accident or cunning malfeasance. And in that respect, this book would seem to teach us a surprising and increasingly valuable life-skill.

1 reactionShare or reply to this post on Twitter!

I have set up a handful of mailing lists for Plerd, the open-source blogging engine behind Fogknife. All are free and open to the public. (The lists all use tried-and-true Mailman, running on my personal server. So their web interfaces look straight out of 1996, but they get the job done.)

  • Plerd-announce: A low-traffic, newsletter-style list with posts by me alone, upon which I plan to make announcements or share proposals of interest to Plerd’s userbase.

  • Plerd-users: The main discussion channel for said userbase, focused on Plerd’s installation, configuration, and use as a blogging tool.

  • Plerd-dev: Discussion about the development and maintenance of the Plerd software itself.

I hope to use these lists as the main discussion and announcement channels for Plerd. I will continue to post major announcements here on Fogknife (especially when I can work a more general essay on technological philosophy out of it), and discussion about specific issues will of course continue to take place as appropriate in Plerd’s Github repository. But I will steer all other Plerd-related communication to these lists.

If you use Plerd or are just interested in following along with its news, I do invite you to follow one of the links above to subscribe to the list-or-lists of your choice. Some fairly major changes for Plerd are on the horizon — some by me, some based on work by others. I know that enough people besides myself use the software now that I simply cannot make significant changes in good faith without community involvement. (Or, at the very least, community forewarning.)


Some thoughts on the meta-topic of setting up my own dang mailing lists, rather than taking the far easier (and arguably more sensible) route of using an existing service:

Why mailing lists? Well, I initially tried an IRC channel, back when the IRC bug most recently bit me, but it didn’t stick. Idling in #plerd on Freenode for a whole year did not result in a single message for me. And since I was almost always alone in the channel, it hardly felt worthwhile saying anything myself.

Meanwhile, I consider Slack and friends out of the question for new projects, especially projects that I intend to continue using and developing for years to come. I have no interest in migrating from one flavor-of-the-month chat system to another as public tastes change, and I tire so quickly at keeping up with constant user-experience surprises wrought by services over which I have neither control nor say. Furthermore, proprietary systems like these often have awful accessibility, and I don’t wish to make Plerd users with disabilities feel disinvited from discussion.

Email is ubiquitous, portable, unchanging, and immortal. Any person with the technical chops to run Plerd will also, by necessity, have familiarity with email. I have seen many shinier alternatives to email, when it comes to platforms for asynchronous technical communication. Some manage to pull me away for a time, but I always come back home to email. For projects under my own control, I very much doubt I’ll ever again try a medium other than email.

Why set up a list myself? In the past I would have used Google Groups, but I don’t trust Google to keep anything working, and anyway I didn’t wish to saddle these lists with Google-based domain names. I am aware that many folks use Mailchimp’s free tiers for these sorts of things instead, but my experience with the service has always left me with a bad taste; it is so focused on marketing and campaigns, rather than discussion lists.

Mailman is a bear to set up, especially on a system that doesn’t already have a mail server running. I have done it three times over the past few years, for different purposes, and though I take copious notes each time, I still have to improvise for a wide part of the hours-long installation-and-testing dance.

But at the end of it, I have a solid mailing-list system capable of hosting any number of mailing lists bearing my own domain name: no better sigil, for personal projects, and entirely in-line with my increasing adoption of IndieWeb philosophies. I consider this work at least as much an investment towards future personal-but-public work as something of more immediate benefit. Bruised and battered from another weekend in the Linux-driven DIY thresher, I regret nothing.

1 reactionShare or reply to this post on Twitter!

It has occurred to me only recently that I have, for years, used my local public library as a replacement for Netflix’s pre-millenium (but apparently still functional) DVD-rental-by-mail system, except one better. Using my contemporary notions of zero-friction idea capture, and in exchange for far less attention and money than I used to pay Netflix, I today see more weird and amazing movies than I ever have before, and on my own schedule — while supporting my community’s library as a happy side effect.

By “zero-friction idea capture”, I refer to the strategy I celebrated alongside my ten-year OmniFocus anniversary: when an idea worth further attention pops into my head, but I’m otherwise occupied with some other task, I pull my phone out of my pocket and put that idea somewhere safe and actionable before it floats away. If it represents a task to follow up on later, into my OmniFocus inbox it goes, for later processing. If a thought that I might like to expand into a blog post, then I tap a few words into my phone’s Notes app, within a sub-folder I’ve designated for such.

And if the notion takes the specific form of I ought to watch that movie from a while back — where “a while back” can be any time between the production year of the earliest film committed to modern media through around six months ago — then I tap an icon on my phone’s home screen that goes to my local public library system’s online catalog.

This website is ugly as sin, with a design predating any notion of mobile-capable display, let alone mobile-first. But since I know exactly what I want — get in, request an item, get out — then its dotage does not slow me down much. After my phone auto-fills in my library card number and PIN to log in, I pinch-zoom into the website’s search field to tap in the film title occupying my mind. In the surprisingly likely case that tiny Rhode Island’s library system does have a copy on disc somewhere within its myriad branches, I’ll tap “Request it” and select my neighborhood branch as its destination.

And then, in the best mind-like-water tradition of Getting Things Done and other capture-based productivity strategies, I let myself forget about the movie, with joy and relief. My work is done! In a handful of days, the library will send me an email to come fetch the movie, and I will think: Oh yeah! That movie! Hey, I wanted to see that! Good!! So I pick it up the next time I’m out for a coffee-walk, and then I’ve got a comfy two-week window to actually watch the thing. I usually do, and sometimes I’ll write about the results in this blog.

Most recently, after dreaming about the bizarre 1999 sleeper Existenz, I summoned a copy before leaving bed that morning. And a few days ago, I came across a passing reference to Klaus Kinski, leading me down a mental chain that concluded with “I should watch Aguirre, the Wrath of God (1972)”. I had forgotten all about it within minutes, and yet, like a miracle, a copy of the film sits on my coffee table right now, waiting for its turn in my PlayStation.

I will note that — as seems increasingly the case with older, non-blockbuster films — Netflix does not stream either of these movies. But, rather than use the library, I could have fired up the ol’ Pirate Bay to grab my own illicitly ripped copy through the anonymous blessing of BitTorrent. As a younger man, I would have proceeded to do so without pause. But today the method offers much less attraction to me. First, I have to go through the whole, squinting process of nosing around to find a well-seeded torrent for the movie, then firing up my torrent program and letting it hog my home’s broadband pipe for a while. And then I end up with an enormous file squatting on a chunk of my hard drive, though I have no desire to watch it right now. As time passes, watching it feels increasingly like a nagging obligation, and I’m just as likely to put it out of mind through careless neglect, letting it sit in the dark, helping nobody.

How much different than borrowing a light plastic DVD in a colorful case, and letting it bide its time in my living room for a few days! I am far more likely to accept, during some near-future evening, its friendly but quietly insistent invitation to watch it.

And, I admit it, I feel good about using my library like this, supporting the system by incrementing its circulation and inter-library-loan statistics — and thus, goes the theory, its argument for sustained funding — with every disc I borrow. I started this adventure with The Shining, dating from the first few months of this blog’s existence, and also the first year of my rediscovery — the first time in my adult life, really — of public library patronage.

This magic did require some prerequisite work, all one-time labors completed years ago. I had to obtain a library card, obviously, and then finagle an online PIN for it. Then I had to teach my phone to auto-fill my card and PIN on the catalog website. For some reason, iOS wishes to store my library card number among my credit card numbers, and my PIN among my passwords — but it works, so there we have it. I recall acquiring the PIN as the tallest of these obstacles, given the website’s outdated notions of user experience. But I felt enough of an inkling of its life-improving potential to push through the task, and I dare say that I had it right.

4 reactionsShare or reply to this post on Twitter!

I recently played through Here They Lie, a short horror story produced by Sony’s in-house Santa Monica Studio that targeted the company’s then-new PlayStation VR device. I rather liked it, and in part because it reminded me of Layers of Fear, another pretty-good short game in the same genre from a couple of years ago. I never got around to writing about that one at the time*; with some freshly nudged perspective, I shall amend that now, with an aim to swing back to Here They Lie later.

Of the two games, Layers of Fear employs a stronger mechanical coherence to present a much more pure horror experience of the haunted-house variety. As far as momentary frights go, I’ll risk the statement that Layers has scared me more than any other video game before it. After a calm opening (Okay, you’re first-personing through a creaky old mansion, you know the drill) and a handful of dime-store jump-scares, the game debuts its core gimmick of quietly rearranging the set-dressing behind your back. I mean this literally: at many key points, the nature of the world directly behind the camera shifts, with no fanfare. The room might suddenly appear full of objects not there before, or the painting on the wall has doubled in size, or the door you came through has vanished utterly. Confused, you follow your instinct to re-establish your bearings by spinning back to face what you’d just been looking at a moment prior, exactly as the game knew you would, and then…

Before playing Layers I would have never guessed how profoundly this effect would work on me. Again and again, this conceptually simple trick of unexpectedly altering my simulated perception unsettled me thoroughly. I will never forget the single scariest moment in Layers of Fear, implemented entirely without a drop of gore or even a loud noise: just an exquisitely timed presentation of a certain prop, which performs a certain action and then vanishes before its appearance had even registered completely with my consciousness. I shouted so loudly I woke up my wife sleeping two rooms away.

After that, for reasons of both personal comfort and domestic tranquility, I had to adjust my attitude while advancing through Layers. I shifted from my default breezy couch-flop, through the leaning-forward focus I’ll adopt during a trickier game’s boss battles, and straight into an actively self-defensive posture. Instead of freely whirling the camera this way and that as I would in any other first-person game, I learned to turn around s-l-o-w-l-y, and paced my advancement through new the map to a crawl, all so as to limit the rate at which horrible things could make their acquaintance with me. Semi-consciously, I tightened my gut muscles, controlled my breathing, and all but growled over gritted teeth when opening another door, putting up a real-world psychosomatic energy-barrier against the literally unpredictable events that likely lurk across the threshold. I probably looked like hell, playing it, but I assure you that I loved every minute.

While it keeps its focus on a grand haunted-house experience over video-gamey challenges, Layers does feature some risk. You can “die” through a misstep, which in the game’s fiction I take to mean that your character faints from fright; he awakens peacefully a little later, in more or less the same spot, his grogginess temporarily quiescing the spooks of his mind. If I recall correctly, these always come as the consquence of a discrete action, or a failure to act despite ample opportunity; not once did I die due to failing a fight or a stealth sequence or the like, as nothing like these appear in this game.

Crucially, this sort of failure doesn’t result in a world-state reset: whatever horror “killed” you passes into memory, as surely as if you had successfully navigated past it, and any items you’d collected towards more gracefully resolving the scenario get quietly removed from your inventory and permanently discarded. Nothing stops you from loading an earlier save and trying a different approach, but accepting the game’s invitation to just trudge forward regardless feels more correct. I never regretted playing this way, on my one trip through the mansion, even though I ended far short of a gold-trophy, no-deaths win. At one point writing literally appeared on the wall telling me not to do something. I wasted no time in disobeying it, and the game shrugged and sent a horrible vision to come scream in my face until I blacked out. Friend, I wouldn’t have it any other way.

Alas, the writing in Layers is… pretty bad. It has some kind of story presented in the usual scraps-of-diaries-and-news-clippings format, mixing in bits of voice-acted audio flashbacks, all setting up suggestion for the player-character’s predicament. For the most part, they sound bland at best, and terribly off-key at worst; while trying for a serious and circa-1900 tone, they instead have the voice of a snarky young redditor of 2015 improvising an “old-timey” story with little to no research. The game’s creators live in Poland, but even allowing for linguistic leeway, it leaves us with a strong impression of writing as an afterthought, executed with far more enthusiasm than skill. After a while I found the narration frankly painful to listen to, and just fast-forwarded through it all.

Despite the game’s hokey plotting, my writing this retrospective (as well as recently wandering through the interestingly contrastable Here They Lie) has whetted my appetite for revisiting Layers’ paint-spattered halls; I may very well give its DLC a go, or maybe just try to make it through the base game unscathed. In any event, I do generally recommend this title for those craving a high-quality spooky-mansion digital experience. Come for the stagecraft rather than the story, and use the dimmer-switch on your living-room wall as your difficulty slider.


* I see from my achievements’ time-stamps that I’d started and completed Layers of Fear on either side of the 2016 election, so I’ll forgive myself the distracted delay.

1 reactionShare or reply to this post on Twitter!

In “A Web Reply to the Post-Web Generation”, Nick Montfort describes a simple model for categorizing electronic literature: pre-web, web, and post-web. Nick asserts that the middle category has forever passed, and we find ourselves living permanently in the third, whether we like it or not. While the tools of publishing to arbitrary websites still exist, as does the software for reading them, the audience for digital writing has overwhelmingly moved onto corporate-controlled social-media platforms. And so, Montfort says, unless they have reason or motivation to create something intentionally retrograde, writers too have moved on from the open web as their default platform.

Now, I can resist the egotism necessary to think that Nick had me at all in mind when he wrote this (even though I drop by his office at MIT several times every year for the local interactive fiction meetup), but I found it nevertheless hard not to feel called out by this article, given the direction of my recent work. This compels me to write out the present post to my own blog in response, which will duly attempt to send a webmention — savior of the open web, our last best hope, et cetera — to Nick’s blog. And it almost certainly won’t work, because practically nobody supports webmention yet, so I’ll trudge back to Nick’s blog and post a comment that links back here. And then I’ll slink onto Twitter and post a link there, because nobody (except Nick himself, maybe) would see that comment otherwise.

And all that is why, while I thought about titling this post “Refuting Montfort’s ‘Post-web era’” instead of “Rejecting”, I didn’t; it would have felt a bit too much like denying reality. Sure, I could cry I refute it thus! while slapping down a hand-written hyperlink that works exactly as well as it would have a quarter-century ago. But that would not disprove Nick’s central thesis that, even if HTML still works as advertised, nobody (to a first order of approximation) cares.

And yet. Beneath its veneer of accepting reality, Nick’s article carries an undertone of deep dissatisfaction at how artists have all but abandoned independent, creator-owned platforms in favor of those run by profit-seeking social-media corporations. If share that sentiment, and even if I accept that this is the way of things today, I cannot accept that the dream and the promise of the early, pre-corporate web is forever lost and locked away from us, that the only way forward involves a one-way trudge down the dimming hallways of money-hungry platforms, surrendering permanent ownership and access to our own work in exchange for temporary convenience.

Sometimes my objections do feel out of touch and unreasonable; sometimes I wonder how my complaints must sound to others. In the particular case of processing my gut reaction to Nick’s article, though, synchronicity struck when Wil Wheaton published an article on his own blog titled “The world is a terrible place right now, and that’s largely because it is what we make it.” In it, Wheaton recounts his very recent abandonment of all social media, even Twitter alternatives like Mastodon, as hopelessly toxic (especially for public figures like himself). His pain and sorrow at this comes across clearly; he had allowed social media to become central to his life, and I can sympathize with this readily.

The title of Wheaton’s article struck me the most, though, because it evokes the central thesis of The Future, a short book by none other than Nick Montfort, published by MIT Press last winter. It’s good, and you should read it. In it, Nick reminds us that the future isn’t a house we merely move into: it’s one we all play a role in building. The book tells us that if we want to live in a better future, then each of us should decide on a personal path that will help make that future real — however modestly — and then strike out upon it.

I read The Future in January, and in February I first learned about IndieWeb, and in April I started releasing open-source software supporting it — and this, paired with my ongoing work with an IF nonprofit, has remained the focus of my labors outside of freelance work. This despite my not thinking that my efforts alone will transform the face of either interactive fiction or the open web, and nor I do think that either interactive fiction or the open web, by themselves, will turn the world away from its presently fraught course.

So, seen from orbit, the ultimate outcome of my work, if any, will be all but invisible. Subjectively, though? I feel a profound surety that digital art and the open web are two threads among many, many that can form a braid strong enough to keep hauling our cantankerous human mess into the future, despite all the badness and baggage we drag along with it. And I know that I happen to have the skills and experience to help preserve, maintain, and god willing maybe even improve them, at least at the scale of a single person’s efforts. I have to answer the call to this work. Really, that’s all I can do, for today.

This was also posted to IndieNews.

4 reactionsShare or reply to this post on Twitter!


Previous post: I watched Existenz (after dreaming about it)