Press "Enter" to skip to content

Population: One

Go Alone: Actual Play

I sat down and played a session of Go Alone yesterday. It’s a solo journalling RPG in which you play an ancient magical sword that dreams of the day they can retire. It’s very hard to reach that goal; you’re pulling blocks from a Jenga tower, and when the tower falls, the sword breaks and the game ends.

The core loop is simple: you take 1-6 actions (usually inventing memories or describing events) based on prompts randomly selected by playing card draws. Most card draws require you to pull a block from the tower. That’s one day. At the end of the day, you make up a short in-person narrative about the day and what you’ve learned about your bearer and yourself.

I found that the deliberate separation of the two phases helped me set aside the knowledge that I was controlling the fiction; I consistently felt like I was reacting to events that were outside my control. There was no guarantee that I was going to get prompts that would let me tell a particular story. It also helped that the Jenga tower was completely uncontrollable. I knew I couldn’t force the story in any particular direction, because after a couple of days I was never expecting to survive.

I realized pretty early that I had to be careful about not answering unasked questions. If the prompt didn’t call for me to make up a particular bit of background, I didn’t make it up. This was relatively natural for me, since I tend towards developing characters in play anyhow, but still took some care.

In the end I wound up with a slight emotional attachment to my PC — less than usual but still there — and a narrative that arose from my treasured intersection of oracular divination and storytelling. I will do this again.

After the break, the actual play. I wrote all this in GoodNotes — the handwriting recognition was capable of capturing my scrawl, which is pretty impressive. I have a few notes on what I was thinking; these are italicized.

Protests: A Comparison

The Seattle Police Department has a detailed timeline of events in Seattle on 6/1/2020, the day the SPD decided to barricade a street and prevent protestors from reaching the East Precinct. I’m also drawing on Heidi Groover’s tweets from that day. NPR has a detailed timeline of the Capitol coup attempt; Aaron Rupar’s tweets were also very useful for timing of the rally.

Seattle

5:40 PM: Crowd [at Westlake Park] now approximately 7000, crowd talking about marching to East Precinct
6:02 PM: Crowd starts moving
7:11 PM: march stopped at police line, 11th and Pine [roughly a 25 minute walk from Westlake Park]

Washington, DC

10:53 AM: Giuliani calls for trial by combat
12:03 AM: Trump begins speaking
12:19 AM: Trump calls on his followers to show strength
1:11 PM: Trump’s speech ends with a call to walk down Pennsylvania Avenue
2:07 PM: Rioters arrive at the Capitol Building (roughly a 30 minute walk from the Ellipse)

Comparison

I don’t think we have a solid source for comparing numbers, but each group was in the single digit thousands.

Both cities had plenty of warning. Seattle had been seeing sometimes violent protests for a few days. In DC, Trump had been calling for his supporters to show up. Any difference in preparation is due to a difference in threat assessment.

In both cases, it was unclear that there was going to be a target for the marchers. Seattle PD had about 30 minutes more warning of where the protestors were headed.

I don’t think there’s any excuse for the difference in effectiveness here.

IGRP Con

I had a great weekend of gaming at a virtual mini-con ran by Paul Beakley as part of the Indie Game Reading Club. (Patreon him up, yo!) I have a couple of general thoughts, then I’ll do a quick recap of the games I played in.

In order to deal with the usual “people who are around when registration opens get into all the games” problem, Paul asked people to hold their registrations to one or two games in the first day, and then opened the floodgates a bit wider. That worked really well. He also highlighted games that needed more people, which was cool. The latter probably only works if you have a relatively small population of players/games, but that’s maybe a good idea anyhow. Or you could automate it if there was good free event registration software out there? Alas.

Over the course of the weekend, we sort of evolved a practice of posting a thread for each completed game in the Slack. I really dug this because I liked learning a bit about games I wasn’t playing, and I liked seeing what else people I’d played with had been up to. It was great for connections.

I played in four games, which was just about right. By coincidence I had Friday off, so I was able to double up on games there, which was a bit tiring but ultimately fine. I booked myself into evening games on Saturday and Sunday, leaving days free to relax and play World of Warcraft and so on.

The Gathering Stones

I played a game of i’m sorry did you say street magic last night with Rye, Nicholas, and Joe, and it was awesome.

Quick description: it’s technically a map building game, but really it’s a game in which you build the relationships between places on a map which never actually gets drawn. Unlike The Quiet Year, there are no random elements. I’d wondered if that would result in overly still metaphorical waters, but as it turned out, the game forces interaction between the setting elements you create with just enough strength to prevent stagnation. Also, every time around the table, there’s an Event which must alter at least one element, so that keeps things moving as well.

If this sounds interesting, note that the game was in the itch.io Racial Justice bundle in the summer of 2020, so you may already have it.

Our city was boastful, vast, ageless, and magnetic: four adjectives chosen from a list at the start of play. It wound up being a place where cultures and people met and mixed and fought over the millennia. I defined an early Neighborhood as “An ancient waterfall, tamed by technologists long gone, filtering through man-made gates.” That sense of ebbing and flowing knowledge stuck throughout the game, for me. (I always wish I could see the city we created through the eyes of another player, though.)

The facilitator, Rye, added a whole new kind of people made of light as our second Compass: the theme for a round of play. After he declared the Compass, he established a new Landmark, the Painted Passageway. “Painting that was the origin of the Bright Ones. They first came unnoticed as the artists were in a frenzy. Now they are observed passing in and out of this painting.” The game almost immediately grounded itself in the way the existing residents reacted to the Bright Ones and the changes they brought. It became evident over the next two rounds that they were going to draw on the water of the city for their own purposes.

The sense of beings beyond our control taking advantage of our resources was interesting; the way the merchants of Main Street (“True Name: Political power, wealth, commerce.”) mirrored those actions was interesting. Lots of layers. As we came towards a close, I took a Resident I’d already established and asked the rest of the table if I could re-establish him 50 years in the future, making an abrupt time jump, and they said sure! So the hot-headed, conspiracy-minded Kevin Young became a chubby, relaxed bartender collecting the stories of travelers. “I’ll tell you my story,” he said, “But first I want to hear what you know of the time the Bright Ones came and left.” And he wrote it all down, in hopes that a century from now the Bright Ones would be remembered, and less feared.

I do in fact want to play this again. I also want to use it as a base for the next urban fantasy game I run; run it as the first session, and build characters from there.

Simplified Unsplash Widget

My old boss Steve Makosfky was singing the praises of Scriptable the other day — it’s an iOS app that allows you to run Javascript in a number of ways, including as a widget. It’s also free (but tip the developer if you like and use it). So I modified an existing script that displays random photos from Flickr to replace my clunky Unsplash photo widget.

It’s way better than my previous solution. It doesn’t clog up my photo library, plus it’s mildly configurable. (Could be more so, but I’ll leave that as an exercise to the reader.) I’ve set mine up such that it only pulls down nature photos, which means I’m no longer seeing people I don’t know on my iOS home screen.

I stuck my code in a gist in case anyone finds this useful.

Weird Instagram Bot Traces

So far this month I’ve received a couple hundred email messages from Instagram notifying me that their Terms of Use have been updated. They’re legitimate emails; it looks like someone signed up hundreds of Instagram accounts using randomized innocence.com email addresses. Since I moved my mail to Fastmail, I’m now seeing them all. I poked around a couple of the accounts (hi, kurt.clemons78446!) and the ones I spot checked have all been deleted.

I imagine someone used innocence.com as a domain for non-existent email addresses, and these either date back to before Instagram added a confirmation step (and were later removed for spamming) or they just never confirmed the accounts. You’d think that deleted accounts would be removed from whatever list of email addresses Facebook is using to generate these emails. Unconfirmed accounts… I guess those should still see the Terms of Use changes.

Good times. Finally added a filtering rule for the emails, anyhow.

Auto-Pause for Zoom

I don’t like wearing headphones all day and since I’m lucky enough to have a spare room for an office, I can play music through my Bluetooth speaker. However, I’m lazy, and I don’t want to fiddle around with my music player just cause I’m starting a Zoom meeting. Thus, automation.

Zoom provides callbacks when meetings start, but that’s aimed at people writing plugin modules. OK, we can go a bit lower level. I can’t just watch for a process, cause Zoom is always running on my laptop. But I can watch for open UDP sockets!

$ lsof -i 4UDP | grep zoom
zoom.us 88028 bryantd 83u IPv4 0xa90f1ce03eca5d5 0t0 UDP xx.xx.xx.xx:57275
zoom.us 88028 bryantd 84u IPv4 0xa90f1ce03eca2ed 0t0 UDP xx.xx.xx.xx:52612
zoom.us 88028 bryantd 90u IPv4 0xa90f1ce09340175 0t0 UDP *:65048
zoom.us 88028 bryantd 91u IPv4 0xa90f1ce0939ce8d 0t0 UDP *:60088
zoom.us 88028 bryantd 95u IPv4 0xa90f1ce0939c8bd 0t0 UDP *:50594

That’ll do, pig. That’ll do.

#!/bin/bash

trap ctrl_c INT

function ctrl_c() {
        stop_music
        exit
}

function stop_music() {
        /usr/bin/osascript -e 'tell application "Music" to pause'
}

while true; do
        zoom_status=$( /usr/sbin/lsof -i UDP | /usr/bin/grep zoom | wc -l )

        if (( $zoom_status > 0 )); then
                stop_music
        fi

        sleep 30
done

I’m catching interrupts because I want a quick keyboard method to stop the music just in case. Right now I don’t think I want it to restart music when I leave a Zoom call, but easy enough to add that if I do.

Canlis Scavenger Hunt 2020

The fine folks at Canlis, the only restaurant in Seattle where you have to wear a tie, ran a scavenger hunt last week as part of their Canlis Community College project. Prize was a $5,000 gift certificate. This attracted the attention of some of my Ingress pals, since driving around the city trying to figure out someone else’s plan is basically our core competency. The first four challenges, we did relatively horribly. But the final challenge, the one for all the marbles, that went differently.