Community

Short-form technical ramblings. Formerly VP of Architecture at Community.com, I'm Member of Technical staff at Mozi and co-author of "Docker: Up and Running" from O'Reilly Media.

Activity

Just finshed reading: Testing Elixir by Andrea Leopardi and Jeffrey Matthias 📚 - Everything you need to know about how to test large #elixir systems. And much more. Recommended. #software #bestpractice #book https://micro.blog/books/9781680508925

I've been reading about and messing with Plan9 from Bell Labs. The integration with the mouse and the terminal/editor/text everywhere is amazing. It's way beyond what is supported in even the fanciest terminals now. This is really an alternative way to think about interaction. How can we not have this yet, 40 years after they first tried it out?

Upgrading EKS clusters today. Surprisingly without issues. Seems things have finally gotten to where this Just Works™. At least with a sample size of 2.

Messing with #Golang KV DB Badger and finding it pretty cool. It's FAST.

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—I 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 have been working in Swift recently, given that our frintend is iOS. I’m not impressed with the language. It doesn’t know what it wants to be.

It’s a functional language that has to run on a legacy stdlib that is object oriented, so it just mashes both together. The closest analogue I’ve used before is Scala, which I think is worse than Swift. Second, the way that Swift allows monkey patching of stdlib objects by libraries is concerning. This can be done OK if used carefully and in a very limited way. Worse is that lots of libraries do it in place of better implementations that are less invasive. It’s a lazy crutch. Because you can monkey patch stuff but then not re-open those patches elsewhere, it means that you have no control over the boundary of the library and the library may make other choices for your code impossible. Kind of a crazy thing.

It also has a weak collections library and poor time and calendar functions. It’s not all bad. The tooling is reasonable and there is at least one good testing framework. Still, for a modern language, it’s not at all impressive. I was hoping for better. 

And we have a new release: Crystal 1.14.0 🚀
Read about the highlights in https://crystal-lang.org/2024/10/09/1.14.0-released/

Happy Crystalling!

#CrystalLang #release

Today we celebrate the 12th anniversary of Crystal!
The initial commit was on September 4, 2012 🎉

https://github.com/crystal-lang/crystal/commit/220bb8c736381d5beda5e7bc36c8d7f0d59badf6

#crystallang #history #anniversary

I set up Supermaven AI-based code completion (Co-pilot competitor) using their #Neovim plugin. They have a free tier, which seems to work great, and the Neovim plugin could not be simpler to install and use. Only used it for less than a day so far, but I like it. It's fast. https://supermaven.com/