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

New project: Shtory

Nothing’s funnier than a joke about something people have long since stopped talking about. Introducing shtory: stories, for the Unix shell. You’re welcome, and I’m sorry.

First Snapchat introduced its “stories” feature as a broadcast alternative to its original model of sending self-destructing snaps directly to individual users; then Facebook was rebuffed in trying to buy Snapchat and Mark Zuckerberg directed Instagram to reproduce an identical “stories” feature in Instagram, prompting all kinds of jokes about what software would have “stories” next.

from Know Your Meme, a photoshopped image of Microsoft Excel with "stories" — a row of usernames and icons between the toolbars and the spreadsheet proper, just like in Snapchat and Instagram.
Excel, perhaps

Then in 2020, Twitter announced its — also identical — feature, this time called “Fleets” (see, like “tweets”, but they’re “fleeting”), and there was a whole new round of jokes.

In particular, Jef Poskanzer tweeted:

Tweet from Jef Poskanzer (@jefposk), November 18, 2020, reading “/bin/sh has stories now too.”, with an attached image of a shell prompt under a row of ASCII-art faces

And I thought, “heh. that’s pretty funny.”

And then I thought, “you know, I bet I could actually write a program to do that.”

And then I thought, “that’s a terrible idea.”

So, obviously I’m doing it. Introducing my new project: shtory — Snapchat/Instagram/Twitter-style stories, for the Unix shell. You’re welcome, and I’m sorry.

Everyone knows nothing’s funnier than a joke about something people have long since stopped talking about, so in keeping with that principle I hope to have an alpha of shtory ready to put up on github by about the end of the month. Ultimately the concept here isn’t very dissimilar to the traditional Unix utility finger, which displays the .plan and .project files, if any, that a user has in their home directory; but individual poshts in a shtory will, like their social media inspirations, only live for 24 hours before being automatically deleted, and I plan on implementing more granular privacy controls of the type we’re used to in modern social media, like follow lists, blocking, locked accounts, mutual-only posts, etc.