i’m patiently working my way toward a 1.0 release of the ktistec server. the 1.0 release must have a stable database schema—that’s the one hard requirement. in terms of features, it’s close now. i’m adding internal metrics for the power user and block lists. then it ships!


and commits eb740e1 through 091a1b1 implement a materialized timeline. it replaces a large and complex query for dynamically generating the timeline from activities. the query worked well enough but was slow—over 200ms for a single page in a timeline containing over 4000 objects. the replacement is 3x better, but still builds a b-tree to get the sorted results. the solution, i suspect, is to  remove the final two joins, at which point the existing index on created_at will be used to get the sorted rows. to do that, i'll need to remove deleted actors and objects when they are deleted...


commits #22a2fe2 to b4b0bb3 add support for pretty/canonical URLs.

posts are automatically assigned a unique, but arbitrary, identifier (this post is known as https://epiktistes.com/objects/mMpIAUimtjg) . you can also manually assign posts a "pretty", canonical identifier, for seo purposes (if you care about that) or as an helpful mnemonic (this post is also known as https://epiktistes.com/commits-22a2fe2-b4b0bb3).

also in these commits is support for editing/updating published posts. mastodon instances currently ignore updates, but if you are using ktistec to "blog" maybe that's okay.


commits #f087a58 to fc9069c add support for approved posts. approved posts appear in public threaded conversations, and allow authors to control what parts of a conversation are visible to anonymous visitors.

it's a nod toward the day when fediverse spammers show up. (lol "when"...)


project activity

My Covid-19 quarantine plan for the last 12 months was to write code every day. With a few exceptions, I pulled that off. The big pre-Covid plan was to write every day, but in traditional hacker fashion I first built some tools (Ktistec and kin).

The big project was Ktistec, of course, but early on I spent a lot of time on MXNet.cr, mostly on native MXNet bindings, but also on a Gluon compatible library. I also put a lot of time into Ishi, a project that sprang from my desire to visualize MXNet output inside of my iTerm console.

Now, to do some writing...

#ktistec #mxnet #ishi

commits 52d849d through 8cd8f3b implement draft posts, a feature that makes it easier to use ktistec to compose longer posts. one big change in the set of changes is support for incremental edits and saves of posts, as they are being written. this change also gets us very close to federated updates to published posts—a feature that mastodon, unfortunately, only supports for polls.


i've released more enhancements to ktistec. i'm still working toward an mvp—functionality any socially-oriented activitypub server should implement. recent commits added replies counts to the social signals exposed to the user, and updated the home page to display local activity to anonymous users.

next up: draft posts