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
Release v3.14.0 of Ktistec

v3.14.0 ("question authority") is the end of a long road.

The goal was pluggable, algorithmic feeds. "Pluggable" because I want to drop a script into a directory to add a new algorithm—not recompile the server. "Algorithmic" because I want predictable, fine-grained control over what I see and how it's organized.

I've been working on this feature, across releases, for almost four months. A recent thread gave me the motivation to just get it done!

The discussion in that thread also shaped the result: algorithmic feeds ships with four example algorithms (called "judges") that demonstrate what's possible:

  • quiet_posters shows posts from the people you follow whose posting frequency is in the bottom 25%
  • long_reads groups posts over 500 characters
  • community groups posts from threadiverse servers (Lemmy, PieFed, etc.)
  • polls puts all polls in one feed

One interesting implementation decision: the exchange format between server and judge is an SQLite database holding the batch of posts to be judged. Rather than rolling a custom data exchange format, you get a well-tested file format that brings schema support, serialization/deserialization, and a query language nearly for free.

Here is the full set of changes in this release:

Added

  • Algorithmic feeds, judged by executables in etc/judges.
  • Accept community-relayed votes authorized by the object's audience.
  • Include the linked SQLite3 version and its features in NodeInfo.

Fixed

  • Pick up a remote actor's rotated public key.
  • Don't save actors embedded in community-relayed activities.
  • Ignore community-relayed and directly delivered activities attributed to a local actor.
  • Reload an actor's page only when that actor's Refresh button is pressed.
  • Hide the Refresh button on a local actor's panel.
  • Fall back to the default avatar when a refreshed icon fails to load.
  • Enable icon repair on actor panels and actor cards.
  • Keep the no-replies timeline queries on the timeline index.

Changed

  • Judge feed posts in the background instead of in the request.
  • Reconcile each key once when an actor is blocked or unblocked.

#ktistec #crystallang #activitypub #fediverse

Todd SundstedWeek in Fediverse :fediverse_light:
Todd SundstedCamellia Tea Ceremony
Sweet depicting a bat flying over a full moon.
Kigata (wooden moulds) for creating a bat shaped sugar sweet.Bat and pomegranate shaped netsuke.

Image thanks - https://collectionapi.metmuseum.org/Sweet depicting a bat flying over a full moon.

🌕BATS FOR BATS🦇

Unlike many countries, in Japan bats have long been considered auspicious symbols...their images used on everything from sword sheaths to kimono.

In China the word for bat (fù 蝠) was a homonym for 'wealth' or 'fortune' (fù 富), and over time the bat became connected to good luck.

Todd Sundsted

i find myself wondering, what php might i have running somewhere that i've forgotten about...

Todd Sundsted

when an LLM tells me the value of BB(6), then I’ll be impressed…!

Todd SundstedFediDB
A graph of active mastodon versions

There’s a bot for that

Five new fediverse accounts that post what FediDB sees: charts of the network, new software, new large servers, release adoption and the projects growing fastest.

fedidb.com/blog/2026/theres-a-bot-for-that

#FediDB #Bots #Fediverse #ActivityPub #OpenData

Todd Sundsted

RE: social.coop/users/scottjenson/

this is a great thread.

i don't have an aversion to "algorithms"—i just want to be in control. surface the "interesting" posts in my inbox—the ones where someone shares something new, novel, or surprising—and bury the posts by the idiots who show up to troll.

it's hard, though. i tried to do it in #ktistec threads by looking for the posts at the center of the conversation instead of the branches where two or three people are just going back and forth—but results are mixed.

Scott Jenson

RE: hachyderm.io/@mekkaokereke/117

GIven the positive traction this post got, I'd like to collect some "benevolent algorithms" we could consider. For example:
* Popular posts among people you follow
* Popular posts on your server
* Popular posts with this hashtag
* What would you suggest???

"popular" is defined as some transparent metric around replies + boosts

Quoted a post by @mekkaokereke@hachyderm.io
Todd Sundsted

computers used to be humans—humans who did mathematical calculations by hand. apparently, the term dates back to the 1600’s

Todd SundstedWeek in Fediverse :fediverse_light:
Todd Sundsted