With thanks to Ruth for the conversation that inspired these pictures, and apologies to the rest of the Internet for creating them.
Author: Dan Q
Sisyphus: The Board Game (Digital Edition)
I’m off work sick today: it’s just a cold, but it’s had a damn good go at wrecking my lungs and I feel pretty lousy. You know how when you’ve got too much of a brain-fog to trust yourself with production systems but you still want to write code (or is that just me?), so this morning I threw together a really, really stupid project which you can play online here.
It’s inspired by a toot by Mason”Tailsteak” Williams (whom I’ve mentioned before once or twice). At first I thought I’d try to calculate the odds of winning at his proposed game, or how many times one might expect to play before winning, but I haven’t the brainpower for that in my snot-addled brain. So instead I threw together a terrible, terrible digital implementation.
Go play it if, like me, you’ve got nothing smarter that your brain can be doing today.
When Twitter Loses, WordPress Wins
This is a repost promoting content originally published elsewhere. See more things Dan's reposted.
…
You know who’s having a killer month? Automattic. Everyone who’s leaving Twitter seem to fall in at least one of these three camps:
- They have gone back to the blogosphere. (using WordPress, or WordPress.com)
- They have gone to Tumblr
- They have gone to the fediverse (of which a fairly large percentage are WordPress installs)
In all of these cases, Automattic wins.
…
Some smart observations here by Alex. A fourth point worth noting is that Matt has openly suggested that former Twitter engineers might like to come join us in Automattic and help make the web a better place. We’ve changed our careers pages a little lately but we’re still the same awesome company!
Alex went on to say:
I’ll be downright shocked if Matt isn’t working very hard to get Tumblr on the fediverse ASAP. He has so much to gain in supporting this movement, and very little to lose.
That’s definitely on his mind too, which I can safely say without leaking anything because he’s hinted at it himself. Exciting times.
Dan Q found GCA28T9 “Look Mummy, It’s a Log”
This checkin to GCA28T9 "Look Mummy, It's a Log" reflects a geocaching.com log entry. See more of Dan's cache logs.
I don’t often get an FTF, so I figured I’d have a go at this one while I was out walking the dog anyway. Approaching the GZ I saw a man standing around looking suspicious and immediately realised I’d been pipped to the post. He recognised me and introduced himself as runmc (whose local logs I’m familiar with), and indeed he’d just logged the FTF. Ah well! We had a nice walk anyway and got to meet slight cacher, which is something that happens very rarely to me nowadays! Good cache container camouflage, nice work. SL, TNLN, TFTC!
Spring ’83 Came And Went
Just in time for Robin Sloan to give up on Spring ’83, earlier this month I finally got aroud to launching STS-6 (named for the first mission of the Space Shuttle Challenger in Spring 1983), my experimental Spring ’83 server. It’s been a busy year; I had other things to do. But you might have guessed that something like this had been under my belt when I open-sourced a keygenerator for the protocol the other day.
If you’ve not played with Spring ’83, this post isn’t going to make much sense to you. Sorry.
Introducing STS-6
My server is, as far as I can tell, very different from any others in a few key ways:
- It does not allow third-party publishing at all. Some might argue that this undermines the aim of the exercise, but I disagree. My IndieWeb inclinations lead me to favour “self-hosted” content, shared from its owners’ domain. Also: the specification clearly states that a server must implement a denylist… I guess my denylist simply includes all keys that are not specifically permitted.
- It’s geared towards dynamic content. My primary board self-publishes whenever I produce a new blog post, listing the most recent blog posts published. I have another half-implemented which shows a summary of the most-recent post, and another which would would simply use a WordPress page as its basis – yes, this was content management, but published over Spring ’83.
-
It provides helpers to streamline content production. It supports internal references to other boards you control using the format
{{board:123}}
which are automatically converted to addresses referencing the public key of the “current” keypair for that board. This separates the concept of a board and its content template from that board’s keypairs, making it easier to link to a board. To put it another way, STS-6 links are self-healing on the server-side (for local boards). - It helps automate content-fitting. Spring ’83 strictly requires a maximum board size of 2,217 bytes. STS-6 can be configured to fit a flexible amount of dynamic content within a template area while respecting that limit. For my posts list board, the number of posts shown is moderated by the size of the resulting board: STS-6 adds more and more links to the board until it’s too big, and then removes one!
-
It provides “hands-off” key management features. You can pregenerate a list of keys with different validity periods and the server will automatically cycle through
them as necessary, implementing and retroactively-modifying
<link rel="next">
connections to keep them current.
I’m sure that there are those who would see this as automating something that was beautiful because it was handcrafted; I don’t know whether or not I agree, but had Spring ’83 taken off in a bigger way, it would always only have been a matter of time before somebody tried my approach.
From a design perspective, I enjoyed optimising an SVG image of my header so it could meaningfully fit into the board. It’s pretty, and it’s tolerably lightweight.
If you want to see my server in action, patch this into your favourite Spring ’83 client:
https://s83.danq.dev/10c3ff2e8336307b0ac7673b34737b242b80e8aa63ce4ccba182469ea83e0623
A dead end?
Without Robin’s active participation, I feel that Spring ’83 is probably coming to a dead end. It’s been a lot of fun to play with and I’d love to see what ideas the experience of it goes on to inspire next, but in its current form it’s one of those things that’s an interesting toy, but not something that’ll make serious waves.
In his last lab essay Robin already identified many of the key issues with the system (too complicated, no interpersonal-mentions, the challenge of keys-as-identifiers, etc.) and while they’re all solvable without breaking the underlying mechanisms (mentions might be handled by Webmention, perhaps, etc.), I understand the urge to take what was learned from this experiment and use it to help inform the decisions of the next one. Just as John Postel’s Quote of the Day protocol doesn’t see much use any more (although maybe if my finger server could support QotD?) but went on to inspire the direction of many subsequent “call-and-response” protocols, including HTTP, it’s okay if Spring ’83 disappears into obscurity, so long as we can learn what it did well and build upon that.
Meanwhile: if you’re looking for a hot new “like the web but lighter” protocol, you should probably check out Gemini. (Incidentally, you can find me at gemini://danq.me, but that’s something I’ll write about another day…)
Oxford Geek Nights #52
On Wednesday this week, three years and two months after Oxford Geek Nights #51, Oxford Geek Night #52. Originally scheduled for 15 April 2020 and then… postponed slightly because of the pandemic, its reapparance was an epic moment that I’m glad to have been a part of.
Ben Foxall also put in a sterling performance; hearing him talk – as usual – made me say “wow, I didn’t know you could do that with a web browser”. And there was more to learn, too: Jake Howard showed us how robots see, Steve Buckley inspired us to think about how technology can make our homes more energy-smart (this is really cool and sent me down a rabbithole of reading!), and Joe Wass showed adorable pictures of his kid exploring the user interface of his lockdown electronics project.
But mostly I just loved the chance to hang out with geeks again; chat to folks, make connections, and enjoy that special Oxford Geek Nights atmosphere. Also great to meet somebody from Perspectum, who look like they’d be great to work for and – after hearing about – I had in mind somebody to suggest for a job with them… but it looks like the company isn’t looking for anybody with their particular skills on this side of the pond. Still, one to watch.
Huge thanks are due to Torchbox, Perspectum and everybody in attendance for making this magical night possible!
Oh, and for anybody who’s interested, I’ve proposed to be a speaker at the next Oxford Geek Nights, which sounds like it’ll be towards Spring 2023. My title is “Yesterday’s Internet, Today!” which – spoilers! – might have something to do with the kind of technology I’ve been playing with recently, among other things. Hope to see you there!
Note #20798
Finally got around to implementing a super-lightweight (~20 lines of code, 1 dependency) #spring83 key generator. There are plenty of others; nobody needs this one, but it’s free if you want it:
https://github.com/Dan-Q/spring83-keygen
Finger Portal to WordPress Blog
Finger Primer
The finger
protocol, first standardised way back in 1977, is a lightweight directory system
for querying resources on a local or remote shared system. Despite barely being used today, it’s so well-established that virtually every modern desktop operating system – Windows,
MacOS, Linux etc. – comes with a copy of finger
, giving it a similar ubiquity to web browsers! (If you haven’t yet, give it a go.)
If you were using a shared UNIX-like system in the 1970s through 1990s, you might run finger
to see who else was logged on at the same time as you, finger
chris
to get more information about Chris, or finger alice@example.net
to look up the details of Alice on the server example.net. Its ability to transcend the
boundaries of different systems meant that it was, after a fashion, an example of an early decentralised social network!
I first actively used finger
when I was a student at Aberystwyth University. The shared central computers osfa
and
osfb
supported it in what was a pretty typical way: users could add a .plan
and/or .project
file to their home directory and the contents of these
would be output to anybody using finger to look up that user, along with other information like what department they belonged to. I’m simulating from memory so this won’t be remotely
accurate, but broadly speaking it looked a little like this –
$ finger dlq9@aber.ac.uk Login: dlq9 Name: Dan Q Directory: /users/9/d/dlq9 Department: Computer Science Project: Working on my BEng Software Engineering. Plan: _______ ---' ____)____ ______) Finger me! _____) (____) ---.__(___)
It’s not just about a directory of people, though: you could finger
printers to see what their queues were like, finger
a time server to ask what time it was,
finger
a vending machine to see what drinks it
had available… even finger
for a weather forecast where you are (this one still works as shown below; try it for your own location!) –
$ finger oxford@graph.no -= Meteogram for Oxford, Oxfordshire, England, United Kingdom =- 'C Rain (mm) 12 11 10 ^^^=--=-- 9^^^ === 8 ^^^=== ====== ^^^ 7 ====== ===============^^^ =-- 6 =--=----- 5 4 3 | | | | | | | 1 mm 17 18 19 20 21 22 23 18/11 02 03 04 05 06 07_08_09_10_11_12_13_14 Hour W W W W W W W W W W W W W W W W W W W W W W Wind dir. 6 6 7 7 7 7 7 7 6 6 6 5 5 4 4 4 4 5 6 6 5 5 Wind(m/s) Legend left axis: - Sunny ^ Scattered = Clouded =V= Thunder # Fog Legend right axis: | Rain ! Sleet * Snow
If you’d just like to play with finger, then finger.farm is a great starting point. They provide free finger hosting and they’re easy to use (try
finger dan@finger.farm
to find me!). But I had something bigger in mind…
Fingering WordPress
What if you could finger
my blog. I.e. if you ran finger blog@danq.me
you’d see a summary of some of my recent posts, along with additional
addresses you could finger to read the full content of each. This could be the world’s first finger
-to-WordPress gateway; y’know, for
if you thought the world needed such a thing. Here’s how I did it:
-
Installed
efingerd
; I’m using the Debian binaries. - Opened a hole in the firewall on port 79 so the outside world could access it (
ufw allow 1965; utf reload
). - The default configuration for
efingerd
acts like a “typical”finger
server, but it’s highly programmable to make it “smarter”. I:- Blanked
/etc/efingerd/list
to prevent any output from “listing” the server (finger @danq.me
). - Replaced the contents of
/etc/efingerd/list
and/etc/efingerd/nouser
(which are run when a request matches, or doesn’t match, a user account name) with a call to my script:/usr/local/bin/finger-to-wordpress "$3"
.$3
holds the username that was requested, so we can act on it. - Created
/usr/local/bin/finger-to-wordpress
– a Ruby program that either (a) lists a selection of posts or (b) returns a specific post (stripping the HTML tags)
- Blanked
In future, I might use some extra tags or metadata to enhance finger
-friendly WordPress posts. The infrastructure’s in place already (I already have tags that I use to make
certain kinds of content available only via certain media – shh!). You might rightly as what the point is of this entire enterprise, of course, and you’d be well within your
rights to ask such a question. But I think the best answer available is “because Dan”.
If you want to see my blog in a whole new way, give it a go: run finger blog@danq.me
on your computer and follow the instructions.
Counselling and Constellations
Over the last three or four years I’ve undertaken a couple of different rounds of psychotherapy. I liken the experience to that of spotting constellations in the night sky.
That’s probably the result of the goal I stated when going in to the first round: I’d like you to help while I take myself apart, try to understand how I work, and then put myself back together again.1 I’m trying to connect the dots between who-I-once-was and who-I-am-now and find causal influences.
As I’m sure you can imagine: with an opening statement like that I needed to contact a few different therapists before I found one who was compatible with my aims2. But then, I was always taught to get three quotes before hiring a professional.
It’s that “connecting the dots” that feels like constellation-spotting. A lot of the counselling work (and the “homework” that came afterwards) has stemmed from ideas like:
- This star represents a moment in my past.
- This star represents a facet of my identity today.
- If we draw a line from one to the other, what does the resulting constellation look like?
I suppose that what I’ve been doing is using the lens of retrospection to ask: “Hey, why am I like this? Is this part of it? And what impact did that have on me? Why can’t I see it?”
When you’re stargazing, sometimes you have to ask somebody to point out the shape in front of you before you can see it for yourself.
I haven’t yet finished this self-analytical journey, but I’m in an extended “homework” phase where I’m finding my own way: joining the dots for myself. Once somebody’s helped you find those constellations that mean something to you, it’s easier to pick them out when you stargaze alone.
Footnotes
1 To nobody’s surprise whatsoever, I can reveal that ever since I was a child I’ve enjoyed taking things apart to understand how they work. I wasn’t always so good at putting them back together again, though. My first alarm clock died that way, as did countless small clockwork and electronic toys.
2 I also used my introductory contact to lay out my counselling qualifications, in case they were a barrier for a potential therapist, but it turns out this wasn’t as much of a barrier as the fact that I arrived with a concrete mandate.
Reply to Decentralization and verification
Let’s not sell Mastodon short here. The service you compare it to – Twitter – solves this problem… but only if you trust Twitter as an authority on the identity of people. Mastodon also solves the problem, but it puts the trust in a different place: domain names and account pages.
If you want to “verify” yourself on Mastodon, you can use a rel=”me” link from a page or domain you control. It looks like this:
A great thing about this form of verification is you don’t have to trust my server (and you probably shouldn’t): you can check it for yourself to ensure that the listed website really does state that this is the official Mastodon account of “me”.
You can argue this just moves the problem further down the road – instead of trusting a corporation that have shown that they’re not above selling the rights to your identity you have to trust that a website is legitimate – and you’d be right. But in my case for example you can use years of history, archive.org, cross-links etc. to verify that the domain is “me”, and from that you can confirm the legitimacy of my Mastodon account. Anybody who can spoof multiple decades of my history and maintain that lie for a decade of indepdendent web archiving probably deserves to be able to pretend to be me!
There are lots of other distributed methods too: web-of-trust systems, signed keys, even SSL certificates would be a potential solution. Looking again at my profile, you’ll see that I list the fingerprint of my GPG key, which you can compare to ones in public directories (which are co-signed by other people). This way you’d know that if you sent an encrypted DM to my Mastodon inbox it could only be decrypted if I were legitimately me. Or I could post a message signed with that key to prove my identity, insofar as my web-of-trust meets your satisfaction.
If gov.uk’s page about 10 Downing Street had profile pages for cabinet members with rel=”me” links to their social profiles I’d be more-likely to trust the legitimacy of those social profiles than I would if they had a centralised verification such as a Twitter “blue tick”.
Fediverse identify verification isn’t as hard a problem to solve as Derek implies, and indeed it’s already partially-solved. Not having a single point of authority is less convenient, sure, but it also protects you from some of the more-insidious identity problems that systems like Twitter’s have.
Dan Q performed maintenance for GC9GKJA A Fine Pair # 1625 ~ Eynsham
This checkin to GC9GKJA A Fine Pair # 1625 ~ Eynsham reflects a geocaching.com log entry. See more of Dan's cache logs.
Repaired and replaced. Happy hunting!
Dan Q posted a note for GC9GKJA A Fine Pair # 1625 ~ Eynsham
This checkin to GC9GKJA A Fine Pair # 1625 ~ Eynsham reflects a geocaching.com log entry. See more of Dan's cache logs.
Tried to replace/repair but muggles were hanging around too close to stealth the cache into position. Going to go find myself some lunch then come back and try again.
Dan Q performed maintenance for GC9GTV3 Drive Slowly; Fox Crossing
This checkin to GC9GTV3 Drive Slowly; Fox Crossing reflects a geocaching.com log entry. See more of Dan's cache logs.
Dropped by on the way back from the school run to check in on this cache. All is well. Also deposited travel bug TB831BW on the next leg of its intergalactic adventure.
Dan Q found GC6J5MV Church Micro 9613…West Hanney
This checkin to GC6J5MV Church Micro 9613...West Hanney reflects a geocaching.com log entry. See more of Dan's cache logs.
Had to stand around looking inconspicuous for a while before the geopup and I could retrieve this cache from its hiding place. There’s a lot going on this morning, presumably in anticipation of a Remembrance Sunday service at the church later. The bench across the road provided us with a place to sit and sign while we waited for an opportunity to return it. Amazingly picturesque spot for a lovely cache. FP awarded. TFTC!
Dan Q found GC8XMQ8 Rocky Road
This checkin to GC8XMQ8 Rocky Road reflects a geocaching.com log entry. See more of Dan's cache logs.
QEF for the geopup and I while out on a morning walk, although I did get somewhat prickled retrieving the cache from its hiding place. SL, TFTC.