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

one of the crystal programming language’s greatest strengths is the ease with which you can work with c apis and external libraries without leaving crystal. you can even implement callbacks in crystal!

in sqlite you can define new functions—callable from sql—with sqlite3_create_function by providing a name and a callback that implements the function. i created a new function called strip, entirely in crystal, that removes html markup and leaves text. it can be used in a sql query like so:

select * from objects
where strip(content) like "%term%"

it’s part of the recently released content filtering code.

#crystallang #ktistec

Todd Sundsted
Todd Sundsted

ev battery performance feels like it’s been about 30% worse than last summer due to the cold weather. i’m in eastern pennsylvania now and it’s 40° f (vs 0° f in parts of north dakota, yesterday) and those 40° make a difference in distance covered between charges—though it still feels cold!

#roadtrip

Todd Sundsted

it just started snowing north of chicago. apparently it’s due for 6 inches.

#roadtrip

Todd Sundsted
fargo, north dakota

3° f at 8:45pm.

the scenery is quite a contrast with may of last year.

#roadtrip

Todd Sundsted
looking west


sheridan, wyoming… roads south are closed because of last night’s storm. backtracking to billings and then across north dakota this time.

#roadtrip

Todd Sundsted

I just released v2.0.0-8 of ktistec. The most impactful changes are:

  1. No more dependencies on externally hosted assets (and fewer dependencies, overall)
  2. Basic support for timeline filters (no shares and no replies).
  3. Support for content filtering by keyword.

Volume has dropped off in my timeline, for the most part, now that the surge of people who signed up for Mastodon accounts a couple months ago have gone back to posting on Twitter, or have stopped posted about the transition, or whatever. But fine grained control is nice, and filtering allows me to tune my experience—better late than never!

Read the changelog for all of the details.

#ktistec

Todd Sundsted

i stumbled across an ad for a two button keyboard and thought wtf but then learned that this is a product category and macropads are a thing...

Todd Sundsted

my favorite 3d printer projects have some utility. i recently installed gridwall panels in my shop but didn't want to put an eye out on one of the hooks, so i designed and printed safety caps for the ends.

safety caps for gridwall hooks

#3dprinting

Todd Sundsted
The final round of CV

Yesterday was family game night. We played CV, which we purchased after playing it at the local board game meetup.

I found it easy to learn and fun, but reviews were mixed. I like the tableau building mechanic, but everyone thought the dice rolls add too much chance into the gameplay. The idea behind bad luck and  misfortune is to add a little risk when you press your luck and re-roll the dice. It might have just been the night, but we ended up rolling misfortune (three dice showing bad luck) on the first roll multiple times—the cost of a card really sets you back. The player with the worst luck in this regard took social assistance twice, and still lost the game!

#boardgame