Even Shorter Blog Friday: Whooooops! Edition

Damn. I knew there was something else I was planning to do today. This was going to be a big post about Mastodon/the fediverse, and related topics, but on the one had I kind of forgot about writing it for a lot of the day and on the other hand, well…you might say a lot has been going on in the social media world, especially with respect to the app from which a record number of people are decamping to Mastodon.

There was also a bit of rather significant politics news, in that Nancy Pelosi announced she won’t seek another term as Democratic Leader in the House, but I don’t have anything much to say about that, I think she’s been a very effective leader but I think her decision makes plenty of sense.

Really going to try to get that Mastodon post written before next Friday though, I promise. And maybe next Friday I’ll just talk about guitars or something.

Short Blog Friday: Politics Edition

A short and dull post is better than no post at all, right? At least I assume it is, if the goal is to keep up a habit of blogging regularly. I have a draft I’m working on to discuss some of the back-and-forth about (and on) Mastodon/the Fediverse lately, but there’s a lot to cover there, so I’m not going to try to rush it today. I hope that once it’s done, it will be at least a little useful and informative.

In the meantime, well, that “Red Wave” everyone was so excited about sure was a bust, huh? I guess it turns out that Americans like abortion and democracy, don’t love fascism, and also don’t really hate trans people nearly as much as the fascists want. As of this writing, three Senate seats and 30 House seats remain too close to call, and it looks very plausible that the Senate might remain 50-50 instead of falling into fascist control. The House is even more uncertain, and I’m not equipped to make any major prognostications there. Democrats vastly overperformed both historical midterm expectations for an incumbent party with an unpopular president, and a lot of polling that made Republicans look stronger than, in the event, they were.

Here in Massachusetts, there were no real surprises. Whatever rational elements might have remained in the MAGOP are represented now only by the lame duck Governor, the rest has been subsumed into the Trump cult, and accordingly nominated a democracy-hating psychopath, for whom even Massachusetts’s electorate — historically, shall we say, reluctant to elect women — wouldn’t vote against Maura Healey, an accomplished AG who ran on a relatively moderate platform. In fact, that aversion to putting women in positions of power may finally be substantially eroded, as MA elected women to every statewide constitutional office except (of course) Secretary of State, which Bill Galvin will hold on to just as long as he pleases, thank you very much, they don’t call him the “Prince of Darkness” for nothing. Also very importantly, the fascists failed to stop Question 1 (albeit narrowly) and Question 4 (with a slightly more comfortable margin) from passing, which hopefully will mean Massachusetts continues to become a better place to live for everyone.

If only we could get some more housing built and fix the goddamn T.

Blog Friday

There’s (probably?) no better way to get back in the habit of blogging regularly than to…blog regularly. So that’s the goal: at least one post a week, on Friday. Welcome to this one! I hope everyone had a good Hallowe’en, and hey, it’s only 331 days until next Hallowe’en Season (i.e. the entire month of October) starts. As usual, I had a vague notion that I might tackle the October Horror Movie Challenge (watch 31 horror movies during the month, ideally at least half which I haven’t seen before), but as usual, I didn’t end up doing that. Did finally watch Halloween (2018), though, and wow, that’s a great movie. Highly recommended.

Last week when discussing Twitter alternatives, I didn’t mention Discord, although I know a lot of people have been talking about that service as a post-Twitter destination. I do use The Fancy IRC, but I consider it a chat app, not a social media site. Both are useful categories, but they have different purposes.

In other news, today is also Bandcamp Friday, when Bandcamp waives their share of revenue from music sales, so it’s a great day to pick up some new music.

I guess that’s it for this week. They can’t all be winners, eh?

Not with a bang but a shitpost

Elon Musk, a strong contender for Worst Living Human, now owns Twitter, has fired the CEO, CFO, and head of Trust & Safety, and has promised to lay off some three-quarters of the staff, making the site unusable.

The results of the ownership change have already had extremely predictable consequences, so continuing to use the service is untenable. The only counter to Musk’s determination to make Twitter a platform for neonazi propaganda, coordination of harassment and stochastic terrorism, and widespread dissemination of disinformation on everything from elections to public health, is for a mass exodus of users to simultaneously render Twitter irrelevant. I can’t cause such an exodus, but at least I can leave, and say why I left.

Yes, moderately observant readers will note that a I did a big public “I’m quitting Twitter” thing before, but that was only because I hit the arbitrary milestone of ten years on the site, and I thought a change would be good for me personally. The stakes this time are rather higher.

I’ll discuss my thoughts on the various alternative social media services I think have some promise, but first, in case you got to this post from a pinned tweet on my now-dormant Twitter account, here are all the places I’ve at least parked my username. Aside from this blog, which is my primary web presence, you can find me on:

I only actively use Cohost and Mastodon right now, but I suppose one never knows which site will pick up more users in the future.

There isn’t going to be a “replacement for Twitter”, of course. For better (largely) and (to some extent) for worse, no other social media service works exactly the same as Twitter. The only case I can think of where a new service had even a little bit of success just by providing exactly the same features as an existing one is Dreamwidth, and “fanfic authors and readers who don’t want a Russian-owned company controlling their works” is not a large enough user base to form a critical mass for a new social media site in 2022.

Are.na and Ello are interesting in that they’re specifically focused on art, while the rest of the list are more general social sites. However, I rarely even glance at them. I don’t think I know anyone there and I haven’t taken the time to get a feel for using them.

Dreamwidth is exactly like LiveJournal, if LiveJournal had been taken over by a dedicated collective of developers who deeply valued the kinds of communities people built there, instead of by Russian spammers. If you ever used LiveJournal, you already know whether you’d like using Dreamwidth, so the only question is whether you know enough people there, or are willing to actively engage in finding communities, to make it socially valuable to you. If you never used LiveJournal, Dreamwidth will feel hopelessly Web 1.0 to you.

Pillowfort and Cohost are similar approaches (though with different results) to the question “what would a new, modern social media site be like?”. Pillowfort ended up a little more Twitter-meets-LiveJournal, while Cohost ended up a little more Twitter-meets-Tumblr. Pillowfort was Kickstarted, while Cohost is a project of a not-for-profit company founded by a group of leftist developers who are Very Online.

Mastodon, which has been around longer than most of the above, is also sort of the odd one out, in that it’s the only decentralized service. In all the other cases, the social network resides on a single site owned and operated by a single organization. In fact, even calling this social media service “Mastodon” is misleading. This one will take more than a short paragraph, I guess.

There are many email services, and at a lower level, many different email server programs, and many different email clients; and there are many different web server programs and many different web browsers. But someone using Microsoft Outlook at work, where their email address is username@job.com, can exchange emails with their friend who uses gmail, and their nerdy friend who uses mutt in a Linux terminal window to interact with their university’s IMAP server. It’s all just email, and instead of knowing only someone’s username, you have to know their username and their server. Similarly, whether a web page is being served by IIS or Apache or nginx or lighttpd, and whether you’re using Firefox or Safari or Opera, it’s all just HTML data transmitted over HTTP.

“Mastodon” is like “Apache” or “sendmail”. It’s one server program — to be sure, the best known — among many that are all basically compatible because they use the same protocol. Mastodon.social is also the home server (or “instance”) for the Mastodon server software, and one of the biggest servers in the federated network of social media servers (often colloquially called the “Fediverse”) using the ActivityPub protocol. “ActivityPub” is an awkward name, but so were “email” and “http” once upon a time. Another popular ActivityPub server is Darius Kazemi’s Hometown, which offers some features Mastodon doesn’t, which is another thing that happens a lot with decentralized protocols. Imagine you had an email account at fancyemail.com, and while you could exchange regular, plain text emails with anyone who had an email account anywhere on the internet, if you were emailing with someone else who also had their account on fancyemail.com, you could change the text colors and add little animted GIFs to your message. (People at least as old as I am will remember that this kind of feature differentiation with email services was not uncommon, for a time.)

The technical details of how federation works for ActivityPub servers aren’t really all that important for the purposes of this post, but the key is that you can have your account on almost any server, and still follow and talk to people on almost any other server.

In theory decentralization is a great strength (once users become accustomed to the idea), but in practice it has some drawbacks. It’s very hard to imagine Twitter or Facebook shutting down completely, but while the Fediverse continues to exist regardless of any particular server staying in operation, individual servers do shut down, and there have been a few (relatively) high-profile cases of a larger instance shutting down with little or no warning. Most servers in the Fediverse are run by just one or a few volunteer administrators, who can’t always shoulder all the work of keeping the server up, updated, and well moderated. Tools do exist to ease migrating an account from one server to another, but they’re not as easy to use as they could be. As a user, you also have to put some trust in the administrators of the server you choose — this is of course true with all the centralized services as well, but they generally at least have some kind of LLC formed to operate them, while any given Mastodon or Hometown (or, god forbid, Pleroma) server is most likely just being run on a hobby basis by a single individual. Different people will have different levels of comfort with that idea, but many simply assume that communications on a social media service are inherently not secure in the first place, and discussions of highly sensitive information should be avoided. If you want, of course, you can always run a single-user instance of Mastodon or Hometown for just yourself: then you know you can trust the admins, and due to the federated nature of the network, you can still follow and interact with people on any other server.

I would like the future of the social web to look a little more like the Fediverse — decentralized, federated, mutually-interoperable networks where people can control their own spaces and footprints. All the technology to do this exists, but it has a steeper learning curve and requires more overhead work from the end users, on top of not being profitable, so without a very large critical mass it’s a model that necessarily loses out to centralized, capitalist, for-profit services. Still, the IndieWeb folks have the right idea. That’s part of why I’m trying to return to blogging here: it’s currently hosted by wordpress.com but I still have more control over this site than I do over my Twitter timeline, and I could migrate the blog to another hosting service if I needed to. I think here in late 2022, we can probably all see pretty clearly why the less we’re at the whims of enormous, for-profit megacorporations and/or their right-wing oligarch owners, the better.

I miss my bar, Pt. III: Two years of this

In which I commemorate the second anniversary of my Last Normal Day, and wax doomy about the state of the pandemic. But nothing lasts forever.

So it turns out getting back into the blogging habit is harder than I thought — failing at my attempt to quit Twitter didn’t help — but here I go trying again. The pandemic has, as I think for many people, scrambled my sense of time anyway. It feels like it must somehow still be 2020, but also like it’s been a lifetime since what used to be “normal”.

It’s March 14th, 2022, the second anniversary of what I think of as my Last Normal Day, when I walked to the barbershop and had my last professional haircut. I’ve been making do at home with clippers and my partner’s assistance, but in a fit of likely-premature optimism, I did book an appointment for this week, so I’ll see my barber again for the first time since then. Still masked, of course; I’ll stick to trimming my beard at home for a while longer, that’s much easier to do anyway.

Pretty much every jurisdiction in the US has dropped mask mandates now, as far as I know, though they’re still requiring them on planes and trains for another month (I’m sure compliance will be even worse than before). In Massachusetts, the average test positivity rate is down around 1.5%, which is great compared to the peak of the Omicron wave (officially 23% in early January, a figure well past the “we cannot possibly accurately measure how much of this shit is out there” threshold) but not great at all compared to last June’s low point of below 0.3%. I miss my bar, but for a glorious couple of weeks there, before even Delta, let alone Omicron, I felt like it was safe enough to go back a few times.

But if letting our collective guard down last summer when case rates were so much lower, because we figured the Alpha wave was done, left us so vulnerable to the worse variants to come, it seems flatly insane to be ending all mitigation measures even though the rates are higher and the new variants are more transmissible. Not to mention insisting on the importance of “getting back to the office” and proclaiming COVID “endemic”, as though the bare assertion would make that true despite over a thousand deaths a day in the US alone. As I said on Twitter a few days ago, it’s like deciding we’re tired of putting out a fire and we need to get back to stacking oily rags everywhere, and those smoldering embers in the corner are probably just going to quietly go out on their own, so we need to just learn to live with constant smoke inhalation.

Medical consensus is growing that somewhere in the range of 10 to 30% of COVID cases result in “Long COVID” chronic post-viral illness, which can be debilitating for some; it also appears that even mild cases can cause physical damage to brain tissue that is visible on scans. The risks of both scenarios are probably reduced by vaccination, but public health officials insisting that it’s silly to try to reduce cases to zero makes me feel like either they’re completely detached from reality, or I am.

What a happy note to end on! I suppose this was always going to be a gloomy anniversary, but I will try to get back to posting a couple times a week. I have other things I’d like to talk about. Keep wearing the highest quality, best fitting masks you can afford whenever you might be indoors with other people outside your own home, use rapid tests (and get your second set of free tests from covidtests.gov, if you haven’t — or your first and second, if you haven’t gotten either! — a measly eight tests per household is wildly inadequate but they won’t do more if there’s not even a demand for this) if you think you may have been exposed, get a PCR test if a rapid test is positive or you have symptoms, get vaxed and boosted if you haven’t, and try to protect the unvaccinated and vulnerable people in your life, since the government has decided that’s just not really their job.

I said up top that my sense of time is scrambled, and I have that Groundhog Day-like feeling that it’s both been forever and no time since the world changed, but a while ago a friend said something I’m holding on to: “Nothing has ever lasted forever before.” Everything ends, and the pandemic will too, but it hasn’t yet; and the more we act like it’s still a real danger, the sooner it will be over.

Enough rambling for now. Maybe next time I’ll talk about guitars. In the meantime, here’s a picture of my cat.

Moss, a small black long-haired cat, sitting in a sunbeam on a rug. A guitar amplifier is in the background.
This reminds me I really need to vacuum the living room rug.

…So, uh. Remember blogs?

I kind of forgot this one again for a while.

Anyway, there’s been talk lately about “self-defense” and whether, and when, one has a right to it, and it had me thinking of a purely hypothetical thought experiment. (Hypotheticals and thought experiments are, of course, always imperfect and not necessarily 100% applicable to any real-world situations that might seem similar.)

Suppose you see me walking down the street, and you throw a rock at me. (Maybe you recognize me as the guy who got you kicked out of your family home due to some small paperwork error your great-grandfather made and no one noticed until last year, so now you and your family live in a cramped apartment in a shitty building.)

From here, there are a few possible outcomes.

If I do nothing, and the rock hits me, it will probably hurt, and might leave a bruise. If it’s a big enough rock, and/or you throw it hard enough, it might even break a bone or give me a concussion. In this scenario, I clearly have not defended myself.

A second possibility is that I see the rock coming, and can dodge it, or raise my briefcase up to shield myself, and so while I may be startled or surprised, and may not even recognize you as the victim of a real estate transaction that was mostly just abstract to me, I have not been physically harmed. Clearly here, even if this is the end of the encounter, I have defended myself.

Third, perhaps I avoid the rock or perhaps it hits me, but either way I see that you threw it, and I pursue you and whack you in the head with my briefcase, maybe even hard enough to knock you down. I probably yell some choice words, too; but having struck back — and having hurt you more-or-less as badly as your rock was likely to hurt me — I leave it at that if you do. This is probably a little less clear-cut, in that I arguably attacked you back rather than (or in addition to) simply defending myself, but I think most people who didn’t know about the real estate swindle would regard the harms as proportional and my actions as more-or-less justifiable. They might say “well, he probably shouldn’t have, but I get it.”

Fourth, suppose I don’t just hit you back once, but I knock you down, then strike you repeatedly with my briefcase and kick you while you’re on the ground, until you stop resisting or trying to escape, or until I exhaust myself. (If this is the real-life me, it does not take me long to exhaust myself, but let’s suppose for the sake of the hypothetical that I have more stamina.) In this scenario I have probably hurt you much worse than your rock could have hurt me. I may have rendered you unconscious, broken several ribs, concussed you, possibly harmed your eyes or broken your teeth, etc.; it’s far from out of the question that I’d have caused potentially life-threatening injuries. It’s very possible to outright kill someone by kicking them while they’re down. This is again not necessarily entirely clear-cut, I’m sure there are some people who’d argue that my disproportionate violence is useful in order to deter future attacks (memo to those people: we live in a society, actually). But I think that most disinterested observers would agree that my actions went well beyond reasonable self-defense, and ultimately I’m the one in the wrong.

Finally, maybe after I bat the rock away with my briefcase, I press a switch on the handle, which causes the shell of it to drop away and reveal a submachine gun, like in gangster movies, and I spray the street with bullets indiscriminately, wounding and killing a dozen people, probably including you. And then, because I did recognize you after all and I know that the rickety tenement building just down the block is where you and your family moved to, I use the built-in launcher on the gun to fire a high-explosive grenade that critically damages the structure and causes the entire apartment building to collapse, killing and maiming dozens more people who weren’t even aware anything was happening.

That last one really doesn’t seem like “self-defense” anymore, now does it?

I miss my bar, Pt. II: A year of this

It’s the Ides of March (by the way, check out Dessa’s Ides project — a new single each 15th, for the first six months of the year — so far “Rome”, “Bombs Away”, and today’s drop, “Life on Land”) and the weekend was full of musings about the anniversary of the pandemic “becoming real” for most Americans. Here’s mine.

A year ago this just-past Saturday was Friday, March 13th, 2020. That was the last time I sat and drank a beer at a bar, chatting with the bartenders and fellow patrons, a weekly social activity I feel the lack of very keenly; over the summer I did occasionally go back to have a pint at the outdoor tables one of my regular spots set up, but it’s not the same. I haven’t been to my other regular joint at all, save to pick up a to-go Easter dinner last year.

A year ago Sunday, on Saturday, March 14th, 2020, was the last time I had a professional haircut. I bought some cheap electric clippers and with my partner’s assistance have been able to manage an adequate job, especially since hardly anyone sees me without a bulky headset on anymore, anyway.

Daylight Saving Time also just kicked in over the weekend, so I’m in that awkward period of adjusting to the missing hour. (My Senator is trying to do something about that, at least.) I’ll spend the rest of my life, I guess, adjusting to this missing year, and I know I’m one of the luckiest ones — I’m only missing the year, not my health, not any loved ones. I have friends who did get COVID, and who are still unsure whether or how badly or how permanently they’ll have any of the long-term symptoms that seem commonly associated with the disease, but all of them survived it. Over half a million in the US (well over, as the official tallies are known to be drastic undercounts) did not, mainly because of the actions of the federal and state governments over the course of 2020.

How, as a society, do we recover from something like this? “Carefully,” as the dad-joke goes, I suppose, but we won’t even fully understand all the harms we’ve suffered for years, if ever. Trauma can settle, like varicella zoster in the nerves of the spine, where we don’t really notice it, and produce unexpected effects long after the event.

I’m not going anywhere with this, I don’t have a conclusion, other than “things didn’t have to be this way,” but that’s true of everything. It just seemed worthwhile to mark the anniversary of my Last Normal Day.

[Update: I failed to link to Emily Hauser’s vital pieces, from October and from February, which get at this issue far better than I can. They say the worst thing a movie can do is remind you of a better movie you could be watching instead, and Emily’s a better writer than I am, but I didn’t link to her until the end of the post, so you had to read my thing anyway. So there!]

I miss my bar

Well, lots of us do, what with the ongoing Panasonic. But also, I recently encountered a very clever website called I Miss My Bar, which is a very simple idea, cleanly executed: several toggleable and volume-adjustable channels of distinct sorts of bar-sounds ambience (conversations, the clink of glasses, street noises outside, rain on the windows) plus an embedded Spotify playlist of the sort of music a bar might be playing. You toggle the different sounds on or off, and adjust their relative volumes, to get a mix that approximates the background noise of your own favorite local spot, and it’s really surprisingly soothing.

It got me thinking, somehow, about Bernband and about Shamus Young’s Pixel City, and about the good old days of fanciful WinAmp audio visualizers like MilkDrop. I have an HDMI cable running from my desktop to the office TV, which I usually use to watch games on WNBA League Pass, but I can also put a browser window pointed to I Miss My Bar over on the TV and have its ambient audio piped through the attached Sonos; but then the screen itself is just showing the static web page.

It would be nice to have a more appropriate, and more dynamic, visual on the TV to go with those sounds.

More on that later, maybe.

Shtory update; also, audio

Sometimes things take longer, but also sometimes I get distracted.

Well, I said “by the end of the month,” but technically I didn’t say which month.

Anyway I’m continuing to work on Shtory. I’ve had my usual struggle to balance “drilling down into tiny details instead of looking at the whole picture” with “drawing high-level block diagrams and blithely assuming the implementation will be trivial” and also with “just plunging ahead writing code without much plan, in the hopes that it will somehow come together.”

I’ve realized I need to add join and quit commands, and that I need to try to get all this PlantUML/Graphviz business working, and sort out the VSCode plugin situation, so that I can write myself out some sequence diagrams for how things are supposed to communicate over the sockets.

Also, because who can just keep their attention on one project at a time, I’ve gotten interested in DIY audio electronics — specifically guitar amps, which I dabbled in about a million years ago, and associated stuff. I used to hang out on the Solid State Guitar hobbyist forums, and I got an email recently that the guy who runs them had launched a Kickstarter for a 9V-battery amp kit of his own design, based, like my previous efforts, on the venerable and ubiquitous LM386 amplifier IC. The “Honey” amp kit has beaten its funding goal, so I’m looking forward to receiving my kit once those get shipped out; and in the meantime it’s stirred up a bunch of ideas from the dusty corners of my brain.

The first one is that I should repair the old Ruby circuit I housed in that Balvenie packing tube, and the second one is that I should actually do something with the components I still have lying around — including a pretty nice 10″ Jensen speaker, a big transformer, and an LM3886 chip —that I once meant to build a ~40-watt amp from.

The third one is that I could build a cabinet to house that speaker — quarter sheet of 1/2″ plywood with a nice hardwood veneer, splined miter corner joints with internal corner braces, 14″x14″ face plus 2″ high instrument panel, 8″ deep, yes I’ve already sketched out the cut list — but wire the speaker to a jack, and use the combo cab as a modular platform for trying out different amplifier circuits with different power supplies, features, etc. Even the little ~1/2-watt Ruby can drive a proper full-size speaker, so as long as all the amp circuits are designed for an 8Ω speaker (and don’t put out more than 50W) that should pose no problem. I’d also like to try building another Ruby or similar design, but add in some extras like an effects loop or two, the recommended bass-boost circuitry (perhaps with a bypass switch), a headphone jack, etc. Ideally I could design the cabinet so that swapping in my original Ruby board, the Honey, such a modified Ruby, or even the big LM3886-based design if I ever get around to making that work, would be quick and easy.

“But Scott,” you might ask, “are you actually any good at playing guitar?”

Ha! You’re funny. No, of course I’m not.

Shtory: update

Work on Shtory continues, but has been a bit slow. The first three weeks of January were a pretty wild year, what with the fascist coup attempt which nearly resulted in members of Congress being lynched, and in the end just barely managing to keep some semblance of a representative democracy intact long enough that now we have a chance to actually improve things. So it was a little hard to concentrate for a while there.

That said, I still expect to have Shtory up to nearly-MVP-level functionality this week, and “ready enough” to put up on github by the end of the month.

The tentative feature list for the V1 milestone is:

  • local operation only — no following remote users
  • shtory list command and lisht alias (also the default behavior of shtory with no arguments): list users with current stories, marking users with unread stories with a *
  • shtory post command and posht alias: read stdin until EOF, then post to current user’s story
  • shtory read command: read all unread posts from followed users
  • shtory read <user> command variant: read all current (read and unread) posts from specified user, whether or not current user follows them, if they have not blocked the current user
  • shtory follow <user> command: follow specified user, if user exists and has not blocked current user
  • shtory unfollow <user> command: unfollow specified user, if current user follows them
  • shtory block <user> command: block specified user from following current user or seeing their stories
  • shtory unblock <user>: remove specified user from block list, allowing them to see stories from and follow current user if they choose to