A few words from Agical

The story behind Rusty Aquarium

Or; “Why I chose to use Rust and Macroquad to develop a data visualization application” I've had the idea of using a virtual fish tank as data visualization for longer than I can remember. So it’s not entirely clear how I came up with it. But I've always thought static graphs are quite boring to look at. A fish tank screensaver on the other hand. It’s a lot more calming.

Läs mer »

Be aware of NUMA when your application needs to run very fast

With the article about a performance mystery involving Java and BitSets, I got help from Hacker News (and a lot of other sources as well) to investigate and also solve the mystery. However, I haven’t managed to solve the problem that this NUMA (+ Docker, in my case) issue is causing me. I'm very happy I could find the solution to this mystery. But the solution is quite unsatisfactory for my particular problem, since I can't use `numctl --membind=0` in the drag-racing environment.

Läs mer »

Help solve this Java BitSet performance-flicker mystery

UPDATE February 6, 2022: The behaviour seems to be triggered by that the JVM process sometimes gets scheduled on a different NUMA node from where the heap is allocated. I tested this by using this command to run the sieve: numactl --cpunodebind=0 --membind=0 java PrimeSieve On my first try this gave me the error message setting membind: Operation not permitted. The workaround I used was to run the docker container in privileged mode:

Läs mer »

A Calva workflow for quil drawing

Quil is a Clojure and ClojureScript wrapper around Processing. Quil takes learning how to code within the context of the visual arts and applies 10X to it. (I say being a passionate Clojurian.) With Clojure and its REPL comes the promise that you dynamically can tweak and form your sketches, as they are running. That’s what this is article is about. There is a Calva context, but things generally apply accross all Clojure editors/IDEs.

Läs mer »

How to mix Clojure and Java code in the same tools-deps project

For whatever reasons, you might sometimes want to develop your program in a mix of Clojure and Java. (Or some other language that compiles to .class files.) This is actually so easy that nobody has bothered with writing up an article on how to do it. At least not for non-Leiningen projects. Until now, because in processing a pull request on Calva, I had reasons to try create a project like this, and I’d like to help you walk a bit straighter of a path than I did.

Läs mer »