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

got my bookmarks down to just one page

Todd Sundsted
Release v3.2.9 of Ktistec

I just released v3.2.9 of Ktistec!

You can now customize the secondary menu on your home page. This is the menu that links to your posts, drafts, notifications, etc. Posts, drafts, and notifications are fixed, but you can change the final three—they default to bookmarks, followers, and following. Edit the links on your Settings page in the section titled Pinned Collections. I typically replace the defaults with hashtags I'm following and threads I'm actively participating in.

I am slowly adding functionality to support Mastodon API compatible clients. In line with that effort, OAuth access tokens are now associated with sessions, which makes it possible for clients that authenticate via OAuth (instead of username/password) to access all of the existing API.

I use this extensively when building scripts to automate my Ktistec instance. A script can authenticate and cache the access token in a secure keystore. Since access tokens have a limited lifespan and can be individually invalidated, a compromised access token does not force me to change my password!

Here's the full list of changes:

Added

  • Support for customizing the secondary menu with pinned collections.

Fixed

  • Thread rendering no longer fails when drafts are present.

Changed

  • Content warnings are now preserved when replying to posts. (fixes #136)
  • OAuth access tokens are now associated with sessions.
  • Attachments are deleted when draft objects are destroyed.
  • Actor icons and images are deleted when replaced or unset.

A recent poll prioritized emoji reactions and quote posts. I see dozens of quote posts every day, so that's where I plan to focus next.

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted

we fixate on the demise of entry level corporate jobs as if that's a bad thing.

Todd SundstedAndrew Plotkin

Website procedural note: I now have a landing page for the Visible Zorker collection.

eblong.com/infocom/visi/

Still just has Zork 1 and Zork 2, but now there's a list to grow.

Todd SundstedWill Richardson

Building Dependency Injection with Crystal Macros

Appreciate my absolutely cursed macros that call other macros that trigger generic specialisation to introspect on method names all just to create objects

willhbr.net/2026/01/31/crystal

Todd Sundsted

today i learned that you can run commands in a docker container from the command line. i guess this is pretty obvious, but somehow i missed it.

docker run --rm alpine:edge sh -c "apk update && apk search crystal"

#TIL

Todd Sundsted
Todd Sundsted
Release v3.2.8 of Ktistec

I didn't think I'd ever pull it off 😀, but the new editor framework is complete and with it support for creating polls. One nice extra—you can now choose which content editor to use (rich text or Markdown) on a per-post basis without updating your settings.

The full set of changes in this release:

Added

  • Front-end support for creating polls.
  • Editor selection support for content, polls, and optional metadata (name, summary, etc.).
  • Poll expiry notifications for poll authors.

Fixed

  • Poll closed_at handling for drafts and remote polls.

I'll try not to be quite as ambitious for the next release! 😅

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted

A couple of summaries of recent polls:

Is building for browsers without JavaScript enabled an antiquated idea?

87% No / 13% Yes

I interpret this to mean 1) progressive enhancement still matters, 2) accessibility and resilience are important (maybe even at the expense of pure convenience).

Which distinctive Fediverse capability would you most like to see added (to Ktistec) next?

Emoji reactions and Quote-posts tied at 37% each

For what it's worth, I'm actively looking into emoji reactions. These seem to be most popular in servers other than Mastodon, and I'd like to encourage more diversity.

I very much appreciate everyone's participation! Please reply if I'm missing nuance.

#ktistec

Todd Sundsted