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

和楽器バンド / Wagakki Band

I still enjoy this particular performance immensely.

https://www.youtube.com/watch?v=ponTbDDMYjw

焔 / Homura + 暁ノ糸 / Akatsuki no Ito

Todd Sundsted
Todd SundstedAnnouncements

You can read about Ktistec development by following the ktistec tag on Epiktistes. Here's the very first post—kind of a Ktistec “Hello, World!” I guess:

288 commits later i can post this...

🎆

#ktistec
Todd Sundsted

before it was called "agile programming" it was called "extreme programming". one of the tenets of extreme programming is "merciless refactoring". another is "edgy adjectives".

an often overlooked "freedom" in a free software project is the freedom to refactor, mercilessly. why turn a free software project into a feature factory? you can get that in an office job, right?

anyway, commits 14d22ca to 14fb9af do away with 1860 lines of code, while only adding 880 lines. more importantly, they do away with quite a lot of distracting boilerplate—like explicit identifiers (IRIs) that usually have no bearing on the outcome of a test.

the one big addition was spec_helper/factory.cr (349 lines), which adds lightweight factories that take care of the details of instantiating a valid model instance.  i picked up the build/create paradigm from the factory_bot gem, and extended the let/let! pattern used in spectator.

#ktistec #agile #extreme #refactoring

Todd Sundsted

even a few streets in, you forget that manhattan is an island.

Todd Sundsted

are illegal states
unrepresentable?

are illegal states
just detectable?

or are illegal states
lying in wait
waiting to strike
and utterly
unpredictable?

#pointfreeverse

Todd Sundsted

lorenzo barasti does a great job here making up for the lack of official documentation on crystal’s select statement. the article’s a must-read if you are planning on making use of concurrency.

https://lbarasti.com/post/select_statement/

#crystal

Todd Sundstedmuesli

Please, don't panic: The Hitchhiker's Guide to the Galaxy has been published on October 12, 1979.

Exactly 42 years ago 🙊

Todd Sundsted

"if there's one thing you don't want to model your adventuring on it's merry and pippin."

#dnd

Todd Sundsted

in ktistec news, commits 4d2f699 through 4d2f699 include several improvements and bug fixes. highlights:

  • at runtime, the KTISTEC_DB environment variable overrides the default location for the SQLite database file. i use this during testing. it may be useful for some deployments.
  • the background TaskWorker now kicks off as soon as a new task is scheduled. the previous implementation polled for new work every five seconds.
  • i collected all inbox/outbox side-effects in one location. this makes mailbox processing easier to reason about, and also made it easier to prevent a race condition that resulted in the same object being added to the timeline more than once†.
  • images are lazy loaded in browsers that support loading="lazy".

i'm also now only one feature away—blocking actors and objects—from tagging the 1.0.0 release.

† the race condition occurs when an activity, like a create, arrives that takes a long time to validate, maybe because ids need to be dereferenced. while it's being validated, an announce activity arrives for the same object. now two activities for the same object are being processed concurrently. being added to a timeline is a side-effect, and collecting all side-effects in one location made it easier to put the duplicate check after validation but before any side-effects, which saved me from having to unwind side-effects if a duplicate was detected.

#ktistec