Todd Sundsted
toddsundsted@epiktistes.com
Better dead than bored.
GitHubgithub.com/toddsundsted/ktistec
Pronounshe/him
馃寧Sector 001

i'm running a ~6 hour pair programming, test-driven development session for our dev team. i feel like too few organizations ever pause forward production and invest in training/practice.

#tdd #pairprogramming

Seattle 2025 Worldcon is having a sale on memberships Black Friday through Cyber Monday (November 29鈥揇ecember 2)!

Watch this space for the discount code, or come talk with us in person this weekend at GeekCraft Expo Seattle or find information at our fan table at Loscon 50.

image of my github contributions

the impact of my fan/gaming convention schedule on my open source contributions this year...

#worldcon #dragoncon

photo looking down the sci-fi aisle at the strand

when i鈥檓 back in new york, i love to browse the aisles at the strand. i picked up a used copy of revelation space by alastair reynolds for book club.

#nyc #recycling #books

Release v2.4.2 of Ktistec

Release v2.4.2 fixes a few more bugs. Only one is a regression鈥擨 found the others while testing. In this release:

Fixed

  • Fix metrics chart line labels.
  • Permit del, ins, and s elements in sanitized HTML.
  • Only store the redirect_after_auth_path on browser navigation.
  • Add "content" property to editor JSON error response.
  • Use FileUtils.mv to move uploaded files. (fixes #117)

Thanks to @jayvii for help with troubleshooting the last one!

#ktistec #fediverse #activitypub #crystallang

copilots for generating awk scripts might be the sweet spot for ai...

emacsius combinatoria amnesis: when using emacs, the persistent inability to remember common keystroke combinations

Release v2.4.1 of Ktistec

Eh, I didn't test enough and released v2.4.0 of Ktistec with a few annoying regressions. Release v2.4.1 fixes them! 鈽癸笍 馃槧 馃槨 馃が

Fixed

  • Handle edge cases and race conditions in script runner.
  • Reconnect editor autocomplete support.
  • Fix permissions on uploaded files.

#ktistec #fediverse #activitypub #crystallang

Release v2.4.0 of Ktistec

I just released v2.4.0 of Ktistec. This release encompasses a few things that I've been working on for a while: improved support for operating without JavaScript available/enabled and support for running scripted automations.

Except for a few items, Ktistec now works without JavaScript. Obviously, things like WYSIWYG editing of HTML don't work鈥擨 plan to add support for Markdown to compensate. Running in Lynx is a stretch, but...

lynx on osx displaying the authenticated home page

Since the early days, most controller actions supported both text/html and application/json.聽 I cleaned up support for the latter and have officially documented the Ktistec API in the README.

In addition, I've added support for running bots/automations (prior announcement). The Ktistec server will periodically run any executable script in the etc/scripts directory. These scripts have access to the Ktistec API and can post, follow, share, like, etc. This is experimental and obviously introduces an attack surface, though that shouldn't be a problem on correctly configured hosts.

Here's the full changelog:

Added

  • Support running scripted automations.
  • "Fetch Once" button on hashtag and thread pages. (fixes #108)
  • Support navigation to a post's threaded view. (fixes #108)
  • Add support for post name and summary.

Fixed

  • Improve support for operating without JavaScript available/enabled.
  • Only enforce CSRF protection on "simple" requests.

Changed

  • Replace use of multi-action controller with formaction. (fixes #101)

Other

  • API usability improvements.


#ktistec #fediverse #activitypub #crystallang

I've been thinking about the demise of botsin.space. Running a site for bots is hard (and expensive) but writing and running an ActivityPub-based bot should be easy.

To prove this was the case I added experimental support for bots/automations to Ktistec in the form of scripts that the server periodically runs. These scripts can be in a programming language of your choice. The server provides credentials for its API in the process environment (if you can use curl you can publish posts), simple interaction happens via stdin/stdout/stderr, and the complexity of using ActivityPub is abstracted away.

The code is only available on the following branch for the moment:

聽 聽 https://github.com/toddsundsted/ktistec/commits/run-scripts/

There are a couple example shell scripts here:

聽 聽 https://github.com/toddsundsted/ktistec/commit/4982925a...

I have a few enhancements in mind, but it's already proven useful as a means to periodically log data from my server host, and I'll use it, when finished, to publish release notes.

#ktistec #activitypub #fediverse #bots