Burin's Open Source Software
Where Burin Choomnuan publishes open source. Mostly Clojure and ClojureScript, with a run of Jolt work alongside it. Libraries and tools built for real use first, then written up properly.
b12n is a numeronym for burinchoomnuan: the first
letter, the twelve in between, then the last. The same trick as
i18n and k8s.
Clojure and ClojureScript library for building Model Context Protocol clients and servers. Five protocol revisions, dual-era sessions, and it runs on the JVM, Node and Babashka.
Public212 of raylib's 217 official examples ported to jank, a native Clojure dialect compiled to native code via C++/LLVM, calling raylib directly through jank's C++ interop.
Public24 raygui examples in jank, with raygui built as an ordinary jank package alongside raylib-jnk's C++/LLVM interop.
Public113 raylib examples in JVM Clojure, calling libraylib directly over coffi and JDK 22+'s Panama Foreign Function & Memory API. No wrapper library, no codegen.
PublicOne Pac-Man written four times, once per Clojure-family runtime: babashka, JVM Clojure, jank and jolt. Nothing is shared between the four, so what each FFI costs you is there to read side by side.
Public
Small graphical programs across the same four runtimes, one directory per game and one per runtime. helitorus reports compute and draw milliseconds separately, so the comparison is measured rather than asserted. None of the games are ours, and every port names whose work it started from.
Public
A shareable AWS Lambda custom runtime in Jolt (native Clojure on Chez Scheme), with a jolt bench tool for reproducing a cold-vs-warm boot-time comparison against your own AWS account.
PublicThe same custom-runtime MVP in jank, native Clojure compiled to native code via C++/Clang/LLVM, deployed as a container image, with a bb bench tool for the same cold-vs-warm comparison.
PublicThe third sibling: an AWS Lambda demo handler in ClojureScript on AWS's managed nodejs24.x runtime, completing a real cold/warm boot-time comparison across all three languages.
PublicAWS Lambda custom runtime in Jolt (native Clojure on Chez Scheme), whose handler builds its JSON response with real Rust via jolt-diplomat, a Diplomat-based FFI bridge, instead of hand-assembling a string. Verified end to end against real Lambda infrastructure.
PublicThe fifth sibling: an AWS Lambda custom runtime in Babashka, via blambda. Nothing is compiled ahead of time -- the handler is interpreted at cold start by Babashka's own SCI interpreter, and it's the only one of the five shipped as a Lambda Layer.
PublicFourteen pages: getting started, architecture, the 2026-07-28 stateless revision, kebab-case key handling, and a containerised REPL smoke test.
LiveGuide and full demo gallery for the 212-example jank raylib suite.
LiveGuide and demo gallery for the 24-example jank raygui suite.
LiveGuide and full demo gallery for the 113-example JVM Clojure raylib suite.
LiveTwelve pages on what four FFIs will and will not carry across the C boundary, and an animated demo of each runtime playing the same game.
LiveNine pages on two games across four runtimes, including how to read the timings and where two of the early numbers turned out to be wrong.
LiveThe Runtime API loop, the AL2023 build, and how to reproduce the cold vs. warm boot-time comparison on your own AWS account.
LiveThe jank sibling's own runtime loop, container build, and bench tool.
LiveThe ClojureScript/nodejs24.x sibling, and the three-way language comparison it completes.
LiveGetting started, architecture, the Rust JSON builder via jolt-diplomat, the Runtime API loop, the AL2023 build, and cold vs. warm boot time.
LiveWhy this sibling ships as a Lambda Layer, the Runtime API loop via blambda, and the bb bench baseline completing the five-way cold vs. warm boot-time comparison.
Live