Epiktistes

Epiktistes is my home in the Fediverse. It is an instance of Ktistec, a single-user ActivityPub server like Mastodon, but with fewer users and fewer commits. Here's my introduction (last updated early-2025).

I wrote a series of posts about optimizing the performance of the Ktistec server, its build time, and its executable size: part 1, part 2, part 3, part 4, and part 5.

Some things I regularly write about, organized by hashtag:

I also wrote some #pointfreeverse.

Todd Sundsted

made my first connection on #meshtastic at #dragoncon

Todd Sundsted
Release v3.12.0 of Ktistec

This release encompasses two broad sets of changes: widening the pool of candidates for feeds and more carefully checking the origin of inbound activities (broadly FEP-fe34, Origin-based security model).

Candidates for feeds were originally limited to posts in the actor's mailboxes. This decision made authorization easy but omitted clearly acceptable posts (for example, posts addressed to the public collection) that arrived via other means (for example, filling in a thread).

Prior to this release, inbox processing did not consistently define an object's origin nor did it apply consistent rules to what it admitted based on the origin.

FEP-fe34 is still not fully enforced, and truth be told, I'm still reviewing some of its mandates, so I'm not yet listing it in Ktistec's federation documentation.

Here's the full list of changes:

Added

  • Notify a deck pane when it has new posts.

Fixed

  • Retry an unresolved quote authorization.
  • Label a draft with the status of its quote request.
  • Compare origins when deciding whether to trust an IRI, key document, or owner.
  • Ignore a trailing slash when matching a dereferenced document's IRI.
  • Allow only Create and Update to update objects.
  • Ignore an inbound vote that fails the FEP-9967 checks.
  • Expand commonly omitted ActivityStreams context terms.
  • Break a long link rather than let it overflow.

Changed

  • Widen the feed scan to every object the server holds.
  • Address a published feed by slug rather than by id.

Removed

  • The proxyUrl property from the actor document.

I am still working hard on the feed deck. Both notifications and feed ordering now work. It's now my preferred reading interface, and should be ready by the next release!

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted

I left my #meshtastic node on overnight and it found 24 others. my assumption, now confirmed, is that i live in a pretty low coverage area.

flying to atlanta later today. i believe they have a pretty good mesh.

Todd Sundsted

just powered up and connected to my first #meshtastic node. i have no idea what i’m doing…

Todd Sundsted

I found this sticker in a box of miscellany. Based on the things it's stored alongside it's between 10 and 20 years old—I remember being handed it but I don't remember where or when. I'd intended to stick it on my laptop.

I had forgotten that Shepard Fairey was responsible for the original design. You can read more about that here.

Photo of a sticker of the red Mozilla "dinosaur" logo in a star above the work "hack".

Ah, the old days when Mozilla was still cool...

#mozilla

Todd Sundsted

RE: mastodon.social/users/Locusmag

with a title like this, I just had to buy it...

Locus Magazine

Explore @garykwolfe’s review of THE THREE COFFIN PROBLEM by @lavietidhar.bsky.social: “Tidhar is obviously having a good deal of fun with real and imagined history.” locusmag.com/review/the-three-

Todd Sundsted

not attending #worldcon / #laconv this year... it's the week before #dragoncon starts. even sadder, i just realized that worldcon 2027 in montréal is on the exact same dates as dragoncon.

(dragoncon is the annual family vacation, so it's not negotiable)

Todd Sundsted

today i learned that THIS_STYLE_OF_NAMING is called the SCREAMING_SNAKE convention.

years of C, C++, Java, Ruby, etc. etc. etc. and i never knew...

#til

Todd Sundsted

i do sometimes wonder if people on the fediverse know they're on the fediverse 😉

Todd SundstedWill Richardson

Type-Checking SQL Queries With Crystal Macros

My #crystallang macro powers are unmatched.

willhbr.net/2026/08/15/crystal