Todd Sundsted
Todd Sundsted
toddsundsted@epiktistes.com
Better dead than bored.
Introductionepiktistes.com/introduction
GitHubgithub.com/toddsundsted/ktistec
Pronounshe/him
🌎Sector 001
Todd Sundsted

upcoming plans:

  • WorldCon, Seattle, Aug. 13–17, 2025
  • Dragon Con, Atlanta, Aug. 28–Sep. 1, 2025

i pains me to miss Gen Con this weekend, but it would be three cons in ~5 weeks!

i think my whole family may make it to dragon con this year—it started out as our annual family vacation, so it's very nice when that still works out.

#worldcon #dragoncon #gencon

Todd Sundsted

i ordered a shirt a while ago from the second weaving of the Worldcon 2024 tartan. it has arrived!

folded long sleeve shirt made from Worldcon 2024 tartan

#worldcon #tartan

Todd Sundsted
a view from the rear of the car showing new york city’s ubiquitous scaffolding

home sweet scaffolding… it’s nice to be back in NYC…

Todd SundstedCrystalLanguage

Whoop, whoop: We have a shiny new release!

Crystal 1.17.0 is out now!

It brings better, manual memory management for libxml2, as well as several improvements to execution contexts and Windows support.
And there's a new compiler tool that reports coverage of macros.

For more details, check the release notes: crystal-lang.org/2025/07/16/1.

Todd Sundsted
Release v2.4.7 of Ktistec

After a mental health break, release v2.4.7 of Ktistec is out. The biggest improvement is the addition of a command line switch/option to run garbage collection on startup. Garbage collection, in this context, trims down your database by deleting old ActivityPub objects that are not connected to your user through:

  • Attribution: Objects attributed to you or actors you follow
  • Activities: Objects referenced by your activities or activities of actors you follow
  • Collections: Objects in your timeline, notifications, or outbox
  • Content: Objects with hashtags, mentions, or in threads you follow

It reduced the size of my database ~24%. Details on usage, warnings, etc. are in the README.

Other changes:

Fixed

  • Use single quotes for string literals in SQLite queries.
  • Fix WITH RECURSIVE queries.
  • Fix broken CI workflow.

Changed

  • Present local internal URLs as external URLs in posts.
  • Limit pagination size for unauthenticated users.
  • Better convey actor/object deleted/blocked status on index pages.
  • Improve presentation of inline code and code blocks.
  • Clip alt text on thumbnail images.

Other

  • Update cached copy of Lemmy's JSON-LD context.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

hmm… ‘bout time for the decennial cleanup of my dot emacs file…

#emacs

Todd Sundsted

day #1 of using jujutsu.

i use git stash a lot. the jj alternative is to just use another anonymous branch for stashed code. am i going to be able to find all those things?

#jujutsu

Todd Sundsted

i'm going to try to jujutsu today. i've used the heck out of magit for years, and love it, but i'm super interested to see if there's a better path... i'm definitely interested in others' experiences!

Todd Sundsted
Release v2.4.6 of Ktistec

Release v2.4.6 of Ktistec is out. As mentioned in an earlier post, this release focuses on database performance improvements. This means caching the results of expensive queries (like counting all posts with a particular hashtag or mention). On my instance at least, pages like the notifications page are now snappier.

There are still slow queries (queries that take more than 50msec). Most of those are requests for pages of old posts where none of the necessary database pages are in the page cache. I have increased the page cache size, and that reduces the frequency, but I don't see an immediate fix.

Fixed

  • Add missing database query logging.

Changed

  • Improve query performance for hashtags and mentions.
  • Make less costly updates to tag statistics.
  • Improve anonymous session management.
  • Cache the Nodeinfo count of local posts.

Removed

  • Remove support for X-Auth-Token.

Other

  • Add timeout values for POST socket operations.

I don't have an immediate plan for the next release. There have been a bunch of feature requests that I think have merit. I'll probably get started on some of those.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

You can specify the SQLite database and pass options (pragmas like cache_size, journal_mode, ...) on the command line when you start the Ktistec server. The following example sets the cache size to 20,000 pages (up from the default of 2,000 pages) which improves performance on larger instances.

KTISTEC_DB=~/ktistec.db\?cache_size=-20000 ./server

You can also enable the write-ahead log (but make sure you know what that means).

KTISTEC_DB=~/ktistec.db\?journal_mode=wal\&synchronous=normal ./server

Pragmas supported are limited to those listed here.

#ktistec #fediverse #activitypub #crystallang