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

le sigh another bandcamp friday coming there goes a paycheck

Todd Sundsted

it was a long day but a very very very satisfying one…!

Todd Sundsted

the explosion of new fediverse servers is exciting, but it also means entertaining new bugs. i just noticed that epiktistes stored its first ever empty hashtag (just a #) on sept 16th, which means we operated for over six years until some new server federated that (naming no names, assigning no blame...)

Todd Sundsted

the only part of a research project that makes me unhappy is when i've only just started and early indicators are already telling me where it's going to end...

Todd SundstedWeek in Fediverse :fediverse_light:
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…!