#ktistec 178 hashtags

Todd Sundsted

i spent most of the summer cleaning up the codebase of my covid project (aka ktistec).

in theory, ruthlessly refactoring should be a pleasure. truth be told, i don't enjoy it as much as building new features. nonetheless, everyone else—including my future self—should find things more consistent.

things i did include replacing ecr templates with slang templates, using form helpers to make forms behave more consistently and to reduce boilerplate, etc. etc. etc. i also moved from turbolinks to turbo, which allowed me to remove my custom code for making updates to parts of a page. i know it's not cool but i'm a fan of html over the wire. i also fixed/improved timeline handling and refactored population/management of timelines and notifications. i really need to refactor handling of all side-effects—i just found another place in the code where out-of-order messages result in duplicates in the inbox.

(interesting aside about that... it's possible to get a forwarded create activity from a source before receiving the create activity from the origin itself. it's not surprising in retrospect. the origin was busy sending to followers and i was in the queue. meanwhile, another follower who was mentioned in the related object broadcast the activity to their followers...)

#ktistec

Todd Sundsted

i took time off this summer to enjoy the analog world and play board games, but i did make some small progress in a few areas.

commits 31260ad through d6b35cb fix various bugs and performance problems and improve the user experience:

  • site setup is more user-friendly
  • social details (like and announce) are visible on posts
  • clicking anywhere on a post in a feed navigates to the post
  • links open in new tabs by default

there's a bunch of work under the hood, as well—mostly deferred refactoring and cleanup.

in parallel, i'm still working on metrics collection and charts. here's a teaser:

charts!

#ktistec

Todd Sundsted

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!

#ktistec

Todd Sundsted

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...

#ktistec

Todd Sundsted

ktistec commits 4a32680 to 9b68508 add support for notifications—mentions, announcements/shares/boosts, likes and follows all create notifications for easy alerting and management.

#ktistec 

Todd Sundsted

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.

#ktistec

Todd Sundsted

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"...)

#ktistec

Todd Sundsted
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

Todd Sundsted

ktistec now supports both @-mentions and #-hashtags.

commits 4118ec6 through 1bdcf12 consist of an embarrassing amount of yak-shaving, and that's not the whole of it. commits 3346865 through dfc00d2 were necessary to make those changes work. and most of the work to surmount the first problems i ran into were actually fixed with commit 258e2d3, but i didn't realize that and make the change until quite late in the game. so it goes.

#ktistec #yakshaving

Todd Sundsted
typeahead

i'm happy with how typeahead now works in ktistec. it took a surprising amount of effort to get it to feel right.

#ktistec