Holy Dev Newsletter September 2022
Welcome to the Holy Dev newsletter, which brings you gems I found on the web, updates from my blog, and a few scattered thoughts. You can get the next one into your mailbox if you subscribe.
Fulcro: I have contributed a tiny change to Fulcro that will stop begginners from scratching their heads and wondering where did their data disappear when they return a lazy list from a Pathom resolver instead of a vector. Surprisingly many have run into this lately. I have also finally created the bigger brother of my minimalist-fulcro-template-backendless, the full-stack minimalist-fulcro-template, this one built on Pathom 3.
Other: I held two workshops at NDC Oslo - Web development from the future, which shares lessons from the awesome desing of Fulcro with a non-Clojure audience, and Experience interactive development while creating a REST service without a single restart, which introduces REPL-driven developement to non-clojurians. I had tiny but engaged audienced and was pleasantly surprised that anyone showed up :-). I have also started preparing an internal conference here at Ardoq, which will be fun. I had to pause my work on my rust img-mg to do other stuff (such as prepare my workshops and fix user data in production) but hope to get back soon.
Interesting reading it the experience of rewriting Tor from C to Rust. Selected highlights: At every stage, we've encountered way fewer bugs than during comparable C development. The bugs that we have encountered have almost all been semantic/algorithmic mistakes (real programming issues),... . Development of comparable features has gone way faster, even considering that we're building most things for the second time. Some of the speed improvement is due to Rust's more expressive semantics and more usable library ecosystem—but a great deal is due to the confidence Rust's safety brings. Better portability. One downside is that the binary size is bigger, party because C has the advantage of its core libraries already present and dynamicly linked rather than bundled.
It's awesome to see the community supporting some really interesting projects, such as ClojureDart, Maria.cloud, Clojure Data Cookbook, Clojupedia etc.
MIT license. Web the WorkOS team. Also React wrappers.
Run your service in the context of your cloud environment, with access to other services, filesystem, and network traffic - but from your local machine. Mirrord is an open source tool in two parts - an agent running in the cloud and a local binary that wraps your process. It works by intercepting FS and network syscalls to forward inputs and outputs between the two and by copying remote env vars to local. Network traffic incoming to the agent can be "stolen" or duplicated to the local process. I haven't tried it but it looks fascinating.
Fascinating reading about how wasmtime is made to start in 5 *micro*seconds (mostly thanks to deferring initialization until necessary), run fast (multiple users saw 50% improvements compared to other runtimes), and be secure (deps review, fuzzing, formal verification). Also a good list of where you might want to use it - microservices, 3rd party plugins, user-defined functions in DBs, etc.
Use this as a POST endpoint to troubleshoot anything that expects a webhook - you will get your own HTTP/email endpoint and whatever is posted to it shows up in the web page.
Has an url for most of HTTP statuses, returning JSON - useful for quick testing of your http client error handling. Supports GET, PUT, POST and more. See e.g. https://mock.codes/500
Good way to learn a language - study its repo under this org, which has "all" the algos (that somebody contributed so far) - seearch, graph, math, dynamic programming, data structures,...
Cloudflare open-sourced their custom wasm/JS runtime that powers their edge computing Workers. Contrary to other runtimes or isn't general purpose. It is a web server designed to run 100s - 1000s isolated "nanoservices" that call each other with the overhead of local invocation. Implements many web APIs. They make a great argument for running your app as a bunch of nanoservices - all present at each node - instead of as microservices, with their communication and operations overhead and complexity.
Qwik is a new framework aiming to let developers build instant-on web applications in a familiar React-like component mental model. Qwik achieves this by focusing on server-side-rendering and forgoing hydration in favor of resumability. The results are web applications with O(1) scalability that perform great even on slow networks or mobile devices. Qwik City is an accompanying meta-framework for building Qwik sites. Qwik City provides directory base routing, data fetching, bundle optimization, prefetching, streaming, and interoperability with edge function providers.
Thank you for reading!