Karl Matthias
Short-form technical ramblings. I'm VP of Architecture at Community.com and co-author of "Docker: Up and Running" from O'Reilly Media.
GitHub github.com/relistan
Tech Blog relistan.com
Photo Blog imager.ie
LocationDublin, Ireland 馃嚠馃嚜

Is there interest in an #ElixirLang NIF-based Hex module supporting the ThetaSketch from Apache Datasketches C++ lib? I built this at Community almost two years ago and it has been in production ever since. I intended to open source it but never got around to it. Would you use it?

the crystal programming language always inlines blocks, which is great for performance but trades off space for speed. using blocks effectively means keeping this in mind.

somewhere along the line, i learned the habit of passing a block to a function as a means of customizing the behavior of the function. if the function that takes the block is large, it's important to remember that the body of the function is inlined where the function is called, which may not be what you are expecting. if you call the function multiple times, you even get multiple copies.

i just committed code that fixes an egregious example of this problem. in this case these ~30 lines of code replace the blocks with procs (which aren't inlined) and cut ~24mb (that's megabytes) off the executable (over a third of its size).

i regularly shoot myself in the foot trying to be clever, so i don' t know how prevalent this problem is in practice, but it's definitely something to keep in mind, especially if you see compile times and executable sizes growing!

#crystallang #ktistec

I wish more people understood that "I want the computer to generate a natural language text that sounds like a plausible answer to a question about x" and "I want the computer to answer a question about x" are two very different problems.

I cannot help but see Google's new Service Weaver framework for distributed GO apps—that you write like a monolith—is headed completely in the wrong direction. It's not just doubling down on synchronous calls, it's quadrupling down.

Not having a good time with Amazon MQ. We gave it a good hard try, for more than a year on one of the clusters. It just can't take the throughput, doesn't support quorum queues (what RabbitMQ team recommend), and is running a version with a nasty performance bug that has been patched upstream but is not available on Amazon.

One of my colleagues built a self-hosted version on AWS and can run 10x the throughput for less cost and not much more operational overhead. Pretty sure we'll pull the plug on this hosted "solution".

Benthos v4.12.0 is out. Contributed an asdf installer. Looking good … #opensource #benthos #golang https://twitter.com/MihaiTodor/status/1628724176604332034

Did someone say "AIOps"?

i'm slowly working my way through the backlog of ktistec issues. i just pushed small changes that:

  • render posts written in markdown as html (no support for editing markdown yet)
  • allow users to manually fetch posts missing from threads (following threads is coming soon)
  • allow users to navigate to the post on the original server

following threads—and later tags—is going to be a huge benefit to single user ktistec instances. large instances with many users sit on top of a huge pile of content (both local and federated) and that creates an environment that sometimes feels more complete. users of ktistec will still have to intentionally follow a thread or follow a tag, but ktistec will do the work of pulling in the relevant content in the background and making it available.

I just released v2.0.0-8 of ktistec. The most impactful changes are:

  1. No more dependencies on externally hosted assets (and fewer dependencies, overall)
  2. Basic support for timeline filters (no shares and no replies).
  3. Support for content filtering by keyword.

Volume has dropped off in my timeline, for the most part, now that the surge of people who signed up for Mastodon accounts a couple months ago have gone back to posting on Twitter, or have stopped posted about the transition, or whatever. But fine grained control is nice, and filtering allows me to tune my experience—better late than never!

Read the changelog for all of the details.


i released 2.0.0-7 just in time for the new year.  it includes contributions from @relistan and @rahul, the introduction of CI (the build is successful), and bug fixes.

i am slowly working my way toward more flexibility for reading and managing federated content.

#ktistec (as always, it's pronounced "tiz-tek")