Month: December 2020

Clojerlを使ってみる

ErlangはEricssonがはるか昔に開発した通信環境用の言語で、ものすごく頑丈で安定している環境として有名。実際に世界中のモバイル通信環境で用いられ99.9999999% (“nine nines”) の可用性を誇っている。最近ではRuby風でErlangのBEAMを実行環境とするElixirが流行っている印象がある。分散を前提にしている関数型言語としてClojureに近いと感じた。そして実際にBEAMの上でClojureを実装しているものがある。

Clojureが最初はJVMと.NETのCLRも対象にしていたが後JVMだけになり、またClojureScriptの登場でJavaScript上で動くようになった。だから根本的なところは案外実行環境に依存しないところもあるかもしれない。BEAM上でClojureを実装しているClojerlはあくまでもコミュニティーからのもので正式なClojure版ではないが、試したかったBEAMと選べるなら選ぶぐらい好きなClojureが合ったものに当たるから触ってみざるをえなかった。


Down the __extmap rabbit hole

Was trying to figure out what defrecord does in the impl of ILookup it generates and I absolutely do not understand that magic. Essentially it amounts to (get __extmap key)  and I can’t even figure out how this magical __extmap gets into scope (a global or some special runtime thing?) and this isn’t even used. Confused

zerusski on Clojurians Slack

This post on Clojurians sent me down the rabbit hole looking for where this “mysterious” __extmap comes from. It really isn’t obvious at first, but when I found it, it was “wow” times “duh”.


ClojureScriptとRustを組み合わせる

以前gitのGUI作りたいと思っていろんな試行錯誤して落ち着いたのはClojureScript(re-frame使ったReact)とElectronで作ったUIにRustのgit2-rsで生のgitとのやりとりする方式。まだちょっとややこしいところも残っているが、ほとんどはそれなりにスムーズな開発フローに乗れた。


Beyond burger

Pretty much starved and three more hours to go until my flight out of Dubai, I was looking for food. Something filling. Tokyo destroyed my plan of eating something before taking off there since there was literally not a single shop open in Narita airport. Luckily Dubai wasn’t dead like that so I had plenty to choose from.


Mount Eggplant!

One of the 100 famous Japanese mountains in reach for a day hike from Tokyo is Mt Nasu (which in Japanese is a homophone with “eggplant”) in Tochigi. It’s easy (though not particularly cheap) to get there by (bullet) train and bus. This time I went for a quick hike to the Chausu peak (which is a much shorter climb than the highest Sanbon-yari). The weather wasn’t exactly great, cloudy and extremely windy, but at least it wasn’t dumping on me.


QUIC and quicker

The past week or so I’ve been working on implementing the QUIC protocol in Clojure. Currently there is no Java implementation to use either (that I know of), and I just found out the other day that netty decided to use the Cloudflare’s Rust library quiche under the hood instead of rolling their own. The protocol is currently a IETF draft at version 32, expected to turn into an RFC soon.


GitOps with Argo

It’s been a year since I wrote about bootstrapping a cluster with Argo and using Argo Rollouts for canary deploys based on Prometheus metrics. Since then many things have changed. I moved from Digital Ocean to Linode (mostly because Linode has a Tokyo region) and from a single-node k3s “cluster” to a 4-node one. But most of how I use Argo CD for GitOps hasn’t changed.

orange and brown tree branch