Todd Sundsted
Todd Sundsted
toddsundsted@epiktistes.com
Better dead than bored.
Introductionepiktistes.com/introduction
GitHubgithub.com/toddsundsted/ktistec
Pronounshe/him
馃寧Sector 001
Todd Sundsted
Release v2.4.4 of Ktistec

Ktistec release v2.4.4 fixes a few things in the prior release and introduces at least one killer feature!

Fixed

  • Always get the attachments. (fixes #119)
  • Don't run scripts until the server has been configured.

Changed

  • 猸愶笍 Make the editor toolbar sticky.
  • Clear the cached translator when the settings change.

I'm spending some cycles looking at the size of the server executable. You can read about my approach to reducing Crystal Language executable size and build time here.

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

The prologue to this post is here.

Investigating commit e2327eea might be a bust.

I dumped the symbols before and after this change. The new symbols were all specializations of the core library Hash class introduced by adding JSON parsing support for the "language" property.

So what does that mean and why is this commit a dead end?

You can think of Crystal classes and methods as being implicitly generics. If you have a method foo with one parameter bar and call it with an Array, Crystal creates a version of that method specialized to handle an Array type as an argument. If you call it with a Hash, Crystal creates another version of that method specialized to handle a Hash type as an argument. If the method has 20 lines of code, you effectively get two copies of those 20 lines of code. There is no runtime polymorphic dispatch, which is one of the reasons Crystal is so fast. You can make all of this explicit with Crystal type restrictions, method overloading, and generics, of course, but you don't have to.

This path is a dead end (for now) because any improvements that I can see that I can make (replacing hash construction with a more fluent sequence of attribute assignments) will need to be made to other classes where this is a problem, and there are only a few of those, so the net potential for improvement seems small.

#ktistec #crystallang

Todd SundstedJohn Carlos Baez

Happy New Year!

I usually don't like those things where people come up with a formula that gives the number of the new year, but this year is better.

Todd Sundsted
Release v2.4.3 of Ktistec

Ktistec release v2.4.3 supports language translation.

animation demonstrating the translation of text from Japanese to English

Inspiration for this feature comes from Mastodon.

In order to enable translation, you need an API key for either DeepL or LibreTranslate. These are the only services Ktistec supports at this time.

Posts from properly configured accounts on supported servers, like Mastodon, include the content language. On posts like these, Ktistec will display a button to translate the content if the language differs from your language.

Unfortunately, not all Fediverse/ActivityPub servers explicitly support language (I mean, Ktistec didn't until just now). And not all users correctly set their posts' language, so ymmv... but it has been hugely useful for me.

I'm going to focus on site customization next (colors, etc.).

#ktistec #fediverse #activitypub #crystallang

Todd Sundsted

@jayvii i just tagged a new release. it looks like the docker build built the release successfully. congratulations and thanks!

Todd Sundsted

i was initially excited to see a new album i'd overlooked by the world/inferno friendship society. their website had been silent. then i learned that jack terricloth/peter james ventantonio died in 2021 and this was a postmortem compilation, which was very sad news.

#worldinferno

Todd Sundsted

when you add new functionality to old code, do you also identify and accumulate a hundred little fixme's to nearby code... or is it just me...?

do you save the changes up for a final cleanup pass or make the changes then and there? do you put each fix into its own commit?

馃

Todd Sundsted

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

Todd SundstedSeattle Worldcon 2025

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.

Todd Sundsted
image of my github contributions

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

#worldcon #dragoncon