rss feed


A Plan for Spire

Crispin Wellington
Aug 30, 2022
Decomplecting Spire

The Spire code base is in a bit of a state. It was never the cleanest code but the addition of babashka pod support has increased its complexity a lot. There are multiple code paths, duplicated (but slightly different) namespaces, clojure code inside strings and namespace inspecting macros that test your ability to reason.

Hot loading WASM

Crispin Wellington
Mar 21, 2022
Hot loading C wasm into the browser while preserving the state of the heap

Wasm, or WebAssembly, is a very fast stack machine that happens to be buried in your browser. You can compile all kinds of low level code to wasm and have it execute at break-neck speed. But we like Clojure and clojurians love hot loading their code for maximal development cycles. Here is how I set up a hot loading wasm environment using clang, shadow-cljs and babashka. I also managed to preserve the WebAssembly heap between loads to really enhance that Clojure experience.

Combining doseq and loadLibrary Considered Harmful

Crispin Wellington
Jun 9, 2020
Strange errors and crashes from the land of javacpp and Qt

"load/recur" is not a solution. It just fails far less often. Extensive testing shows it failing about 4% of the time (as opposed to 50% of the time with doseq). The problem is not related to doseq... but lies deeper. It is possibly a timing issue. Another blog post will be forthcoming when the root cause is found.

Faster GraalVM Clojure Compilation Times

Crispin Wellington
May 26, 2020
Slash those GraalVM native-image compilation times with this one wierd trick!

Are you building a clojure project and compiling it to a native binary with GraalVM? As the project has grown, has the GraalVM compilation time gotten longer and longer? Here is the story of how I discovered @borkdude's trick to getting GraalVM native image times in under 5 minutes.

Generating XML With Bootleg

Crispin Wellington
Feb 2, 2020
Adding a little RSS goodness to your bootleg site

The latest release of bootleg (0.1.7) contains some new XML output functionality. I added this to bootleg to facilitate the generation of an RSS news feed form the epiccastle blog page that you are reading right now. Here is how I generate this RSS.

Tiny Enlive Transformer Implements update-in

Crispin Wellington
Jan 23, 2020
Useful little enlive snippet. Implements the behaviour of clojure's update-in function for use inside enlive/at

I have some markdown in a project on github. And it contains relative links. These relative link take you to other markdown files in the github repo. When you click the links on github the browser navigates to doc/ and shows it in the github styling. All good.

Setting Up Acmetool With Route53 Hooks

Crispin Wellington
Nov 6, 2019
Get free Let's Encrypt SSL certificates using Acmetool's DNS Hooks option when using Amazon Route53 as your DNS service provider.

Let's Encrypt is a non-profit certificate authority that can issue you SSL certificates for free. These certificates can be used to secure any type of TLS connection. Most commonly they are used to secure HTTPS web sites, but they can also be used to secure email, usenet news, file servers, chat servers or any other type of internet connection.