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

Across my career, the one thing that I think most people don't really understand about software engineering (or, really, engineering) is that it's ultimately about the details. It's about all the little things that have to be both decided and implemented to turn the grand vision into reality. And a lot of software engineering methodology is about getting a handle on those details.

As an aside, I think this is what people like about LLMs, etc. etc. etc. What I think a lot of people want out of software is for it to "just do what i mean" (without explaining what you mean). LLMs kind of give (the illusion) of that...

Todd Sundsted

I just released v2.0.0 of ktistec. It's just bug fixes on top of the last prerelease, but it's much improved over v1.0.0. The README and CHANGELOG have more detail but features and improvements include:

  • Content filtering
  • Support for more ActivityPub object types
  • Support for following threads, hashtags and mentions
  • Collection and presentation of server performance metrics
  • Setting the application name in the webmanifest (thanks JayVii)
  • Mastodon-compatible user profile metadata (thanks relistan)
  • Links to the pages of remote actors (thanks vrthra)
  • Support for handling 303s in searches (thanks winks)
  • Automatic database backups

I'm working on user experience enhancements for the next release: I've just finished streaming updates to the front-end—no more refreshing the page to see if you have new posts in your timeline (and new notifications).

#ktistec

Todd Sundsted

for some reason lemmy.ml is suddenly hammering my server with activities from the !opensource@lemmy.ml channel (which i do follow). it looks like hundreds of like, announce, etc. activity pub activities in rapid succession.

🤔

Todd SundstedJayVii

Started working on some tiny #ktistec end-user hacks: https://src.jayvii.de/pub/ktistec-tweaks

For now only a user #CSS theme i dupped "purple-ish": https://src.jayvii.de/pub/ktistec-tweaks/file/css/purpleish.css.html

Maybe more to come in the future. Or not, we'll see :)

Todd Sundsted

for reasons i don't understand, some restarts of epiktistes result in huge memory usage spikes—reported both by the garbage collector and the operating system. what's interesting is heap size and free memory move roughly in tandem (though the difference isn't constant), which implies that there is free memory, but perhaps it's too fragmented to be useful?

daily charts of memory, traffic, and server restarts for epiktistes

a restart typically fixes the problem...

#ktistec #crystallang

Todd Sundsted
pine trees, looking upward

the outdoors!

Todd Sundsted

heck yeah! too bad i need to support those older versions!

"tweaking the query planner is no longer necessary"

link: Checklist For Avoiding Or Fixing Query Planner Problems

#sqlite #ktistec

Todd Sundsted

@lindsay testing... i received your follow from gts to ktistec...

Todd Sundsted

ktistec is fast but i'm thinking about making the responses to obvious vulnerability scans artificially sloooow... (opt-in, of course.)

#ktistec

Todd Sundsted

#crystallang developers… what can you count on being safe to access during a call to #finalize?

i have some class-level state that i’d like to modify via a class variable but even reading values via that variable seems to cause problems that eventually lead to crashes later in the program. (typically index out of bounds during some later garbage collection run.)