Todd Sundsted
Todd Sundsted
toddsundsted@epiktistes.com
Better dead than bored.
Introductionepiktistes.com/introduction
GitHubgithub.com/toddsundsted/ktistec
Pronounshe/him
๐ŸŒŽSector 001
Todd Sundsted

i'm "pretty sure" i have litestream backing up my epiktistes sqlite database, but getting it running was surprisingly fiddly...

Todd Sundsted

I have Markdown editing working in Ktistec!

Which post was written in Markdown?

Figure 1: Two posts. One created in HTML (via the rich text editor), the other in Markdown.

Voilร !

Figure 2: The answer is the second post.

This is an often requested feature. It also makes Ktistec usable in browsers when JavaScript is disabled. The Markdown editor supports autocomplete and autosave, just like the rich text editor. Expect this to show up in the next release.

#ktistec #activitypub #fediverse #markdown

Todd Sundsted
Release v3.2.4 of Ktistec

The big feature in release v3.2.4 of Ktistec is support for viewing and voting on Mastodon polls (AKA FEP-9967: Polls). This feature took a surprising amount of work. Some of the effort was due to my struggles with visual design, but getting the behavior right was also tricky. For example, a "vote" is just an ActivityPub Note, but unlike other notes, it shouldn't appear in a poll's replies (it could, but that would be redundant and confusing). So I had to add exceptions throughout the code to deal with this. A custom Vote object type would have been nice in the original implementation.

Added

  • Support for viewing and voting on polls. (fixes #49)
  • Added tooltip to notifications menu item summarizing new notifications.

Fixed

  • Improved wrapping of actor panel follow/refresh information. (fixes #130)
  • Autocomplete now works correctly when adjacent to a Trix attachment.
  • Image title attributes are now preserved.

Changed

  • Moved avatars to the bottom of the object detail view.

Thank you @jayvii for the build fix!

#ktistec #crystallang #activitypub #fediverse

Todd Sundsted

โ€˜Twas a beautiful day for a ren faireโ€ฆ

A view of the tents at the Orlando Renaissance Festival

I don't love the food, but I do enjoy the peopleโ€ฆ and the merchandise. There are a few makers who really pour heart and soul into making and selling something interesting and unique. And musicians who find an audience for niche songs about dragons, or being lost at sea. And where else are you going to encounter a hurdy gurdy?

Hurdy gurdy in the hands of Dora Viellette

And the weatherโ€”it was 75ยฐF in December.

#Orlando #RenFaire

Todd Sundsted

After thrashing through several attempts to add a smooth transition to the poll partial after the user votes, I realized that the best solution was hiding in plain sight. Turbo already sets the busy attribute on a turbo-frame element while the request is in progress, and adds a complete attribute when the request is complete. The only thing required was the styling!

#ktistec #hotwire #turboframes

Todd SundstedJayVii
Todd Sundsted

Polls are rendering!

screenshot of the latest emoji poll rendered on the ktistec server

I'm working to get all of the little visual elements available across the Fediverse to render in a usable way on Ktistec. When released, users will also be able to vote on polls.

#ktistec #activitypub #fediverse

Todd Sundsted
Release v3.2.3 of Ktistec

Release v3.2.3 of Ktistec includes two big features:

  • FEP-1b12 Group federation
    Improved federation with Lemmy and other forum-type servers. Ktistec supports community and thread follow/unfollow, as well as up-vote/like (down-vote/dislike is supported but there is no visual affordance for that yet).
  • FEP-9098 Custom emojis
    Support for viewing custom emoji in posts and on actor profiles. Ktistec does not yet support custom emoji creation and management.

The full changelog:

Added

  • Support for viewing custom emoji in posts and on actor profiles.
  • Actor type (Person, Group, etc.) overlay badges on actor panels.
  • Colored fallback avatars for actors without icons.
  • Support for robots.txt.

Fixed

  • Federation with Lemmy and other servers that support FEP-1b12.
    • Shared inbox support for local actors.
    • Serialization of Undo includes the undone activity.
    • Serialization of Like and Dislike does not.
  • Notify only once for an object's first received activity.

Changed

  • Accumulate metrics by hour for finer granularity.
  • Clean up presentation of public followers/following pages.

The next release will include support for Mastodon polls (FEP-9967).

#ktistec #crystallang #activitypub #fediverse

Todd SundstedJayVii

Since all my websites and web-tools use the phenomenal #SimpleCSS framework, I thought it would also make sense to create a theme for #ktistec using those exact colours. Of course, this is also available from my ktistec-tweaks, next to the old purpleish-theme, which I had before.

Also new is the separation of the card-style post theming, which is also shown in the screenshot below, in its own CSS file.

Image description: Screenshot of my Fediverse profile, which is cut straight in the middle. The left side shows the dark mode with orange-yellow highlights, the right side shows bright mode with blue highlights.
Todd Sundsted

A while back, I posted about creating a Forth-inspired programming language that uses emoji as words (functions) and said that I would post the source code. I keep my wordโ€”this weekend I cleaned up the code and published it.

I've built a tool that transpiles emoji source code into either Crystal or Python, and then builds and runs the transpiled source.

Here's the solution to Project Euler Problem 1, with comments so that you can more easily follow the flow:

๐Ÿ’ญ Project Euler Problem 1:
๐Ÿ’ญ Find the sum of all the multiples of 3 or 5 below 1000 => 233168

๐Ÿ’ญ Define a word to check if a number is divisible by 3 or 5
๐Ÿ“–โ“                    ๐Ÿ’ญ Stack: ( n -- bool )
  ๐Ÿ“š                    ๐Ÿ’ญ Duplicate n for two tests
  ๐Ÿ”ข3 ๐Ÿ”€ ๐Ÿ”ข0 ๐ŸŸฐ          ๐Ÿ’ญ (n%3==0)
  ๐Ÿ”„
  ๐Ÿ”ข5 ๐Ÿ”€ ๐Ÿ”ข0 ๐ŸŸฐ          ๐Ÿ’ญ (n%5==0)
  โšก                    ๐Ÿ’ญ (n%3==0 OR n%5==0)
๐Ÿ“•

๐Ÿ’ญ Declare variables
๐Ÿ“ฆ ๐Ÿ’ฏ                   ๐Ÿ’ญ sum variable
๐Ÿ“ฆ ๐Ÿงฎ                   ๐Ÿ’ญ counter variable

๐Ÿ’ญ Initialize variables
๐Ÿ”ข0 ๐Ÿ’พ ๐Ÿ’ฏ               ๐Ÿ’ญ sum = 0
๐Ÿ”ข1 ๐Ÿ’พ ๐Ÿงฎ               ๐Ÿ’ญ counter = 1

๐Ÿ’ญ Loop from 1 to 999 (inclusive)
๐Ÿ”
  ๐Ÿ’ญ Get counter and check if divisible by 3 or 5
  ๐Ÿ“ค ๐Ÿงฎ                 ๐Ÿ’ญ counter
  ๐Ÿ“š โ“                 ๐Ÿ’ญ counter bool

  ๐Ÿ‘
    ๐Ÿ’ญ If divisible, add counter to sum
    ๐Ÿ“ค ๐Ÿ’ฏ โž• ๐Ÿ’พ ๐Ÿ’ฏ       ๐Ÿ’ญ sum = sum + counter
  ๐Ÿ”š

  ๐Ÿ’ญ Increment counter
  ๐Ÿ“ค ๐Ÿงฎ ๐Ÿ”ข1 โž• ๐Ÿ’พ ๐Ÿงฎ     ๐Ÿ’ญ counter = counter + 1

  ๐Ÿ’ญ Test exit condition: counter > 999
  ๐Ÿ“ค ๐Ÿงฎ ๐Ÿ”ข999 โฌ†๏ธ
๐Ÿ”š

๐Ÿ’ญ Print the result
๐Ÿ“ค ๐Ÿ’ฏ ๐Ÿ˜€

Forth is fun because it is so easy to create a simple implementation of the language. It's also very very terse, which makes the emoji-nature of a project like this shine through. Here's the program above with emoji digits, fewer alphanumerics, and less whitespace:

๐Ÿ’ญ Project Euler Problem 1

๐Ÿ“–โ“ ๐Ÿ“š 3๏ธโƒฃ๐Ÿ”€0๏ธโƒฃ๐ŸŸฐ๐Ÿ”„5๏ธโƒฃ๐Ÿ”€0๏ธโƒฃ๐ŸŸฐโšก ๐Ÿ“•

๐Ÿ“ฆ๐Ÿ’ฏ
๐Ÿ“ฆ๐Ÿงฎ

0๏ธโƒฃ ๐Ÿ’พ๐Ÿ’ฏ
1๏ธโƒฃ ๐Ÿ’พ๐Ÿงฎ
๐Ÿ”
  ๐Ÿ“ค๐Ÿงฎ๐Ÿ“š
  โ“๐Ÿ‘๐Ÿ“ค๐Ÿ’ฏโž•๐Ÿ’พ๐Ÿ’ฏ๐Ÿ”š
  ๐Ÿ“ค๐Ÿงฎ1๏ธโƒฃโž•๐Ÿ’พ๐Ÿงฎ
  ๐Ÿ“ค๐Ÿงฎ๐Ÿ”ข999โฌ†๏ธ
๐Ÿ”š

๐Ÿ“ค๐Ÿ’ฏ ๐Ÿ˜€

The project README has more detail on the language features if you're interested.

#emoji #forth #esolang