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

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/ 

New blog post: "Parsing Protobuf Definitions with Tree-sitter" .  It's all about how I used #Treesitter to jumpstart some nice internal #Protobuf tooling at work in #Golang. https://relistan.com/parsing-protobuf-files-with-treesitter

I am working with protobuf files and wanted to write some new tooling for code generation that doesn't use Go's horrible protoreflect.

I started parsing the files with Treesitter (in Go), which works great. Writing query S expressions was kinda annoying but then I found that #Neovim has a built-in #Treesitter query editor and live tree/document playground.

Holy crap! This is sooooo nice. 🤯

#nybolt #ev #electriccars #ElectricVehicles #battery #tesla #elonmusk

This one is better than Musk’s Tesla:

“A British startup may have found the answer to one of the frustrations of driving an electric car — waiting around for the battery to charge.

Nybolt, based in Cambridge, has developed a new 35kWh lithium-ion battery that was charged from 10% to 80% in just over four and a half minutes in its first live demonstration last week.

That is much faster than the 20 minutes or so it currently takes some electric cars using a fast charger, such as a Tesla (TSLA) Supercharger. It is also much closer to the two minutes it takes to fill up the average gasoline-powered car.”

https://www.cnn.com/2024/07/01/cars/electric-car-battery-charge/index.html

It still annoys me that installing the aws-cli tools requires all of Python to be installed. Would love a single binary (a la Go) instead #AWS.

I just realized today that SQLite actually has `json_extract()`! This is potentially pretty huge for one of our use cases. Combined with indexes on expressions, this is pretty powerful. I use json_extract() all the time on Athena and Trino. Didn't realized SQLite had it.

At Mozi, our whole backend is evented and event-sourced along the lines of my blog post from 2022 at Community.com. Tom Patterer and I hooked up DBT today, backed by Athena, and we then wired up Amazon Quicskight and got some charts with BI metrics. Fairly happy with that.