<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><atom:link href="https://b12n.net/" rel="self" type="application/rss+xml"/><title>Lisp's Revenge</title><link>https://b12n.net/</link><description>Why I do what I do. Why Lisp/Clojure?</description><lastBuildDate>Sat, 01 Aug 2026 14:55:31 +1000</lastBuildDate><generator>clj-rss</generator><item><guid>https://b12n.net/posts-output/2026-08-01-the-review-that-caught-what-the-reviews-missed/</guid><link>https://b12n.net/posts-output/2026-08-01-the-review-that-caught-what-the-reviews-missed/</link><title>The Review That Caught What the Reviews Missed</title><description>Three tasks, each with its own tests, each individually reviewed and approved. Then one more review looked at the whole thing at once and found two real bugs that none of the three approvals had caught. Then the review that checked the fix found a smaller fourth thing.b12n-publish is the pipeline behind this blog: it watches a handful of repos for activity worth writing about, gets a real draft from a real model call, and only after a human reads and substantially revises it does anything get published. Building the pipeline itself happens in a specific shape. Write a plan that breaks a feature into a handful of independently testable tasks. Work through the plan one task at a time, and give each task a fresh implementer with no memory of the tasks before it, just the plan and the one piece it's responsible for, plus its own dedicated reviewer before the next task starts. The bet is that a narrow, well-defined job catches things that accumulated context and creeping scope would let slide. Once every task is done and individually approved, one more review looks at the finished result as a single, whole change, not a task at a time.</description><pubDate>Sat, 01 Aug 2026 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2026-07-31-174-commits-in-a-math-education-tool/</guid><link>https://b12n.net/posts-output/2026-07-31-174-commits-in-a-math-education-tool/</link><title>174 Commits In: Building an Interactive Math Education Tool with ClojureScript and KaTeX</title><description>Most side projects never get past the scaffold. This one has 174 commits and counting: a curriculum API, a web SPA, a native mobile app built with ClojureDart/Flutter, gated authentication with three login paths, a SQLite-backed store, and a production deployment behind nginx. That's not a stub. That's a system that's been lived in.I want to zoom into the part of the system that's easiest to relate to if you've ever tried to teach or learn math on a screen: getting the content to render correctly. Turns out that "just typeset the math" is a much longer road than it sounds.</description><pubDate>Fri, 31 Jul 2026 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2026-07-31-mermaid-diagrams-in-cryogen/</guid><link>https://b12n.net/posts-output/2026-07-31-mermaid-diagrams-in-cryogen/</link><title>Mermaid Diagrams in Cryogen</title><description>This blog now renders Mermaid diagrams from ordinary
fenced code blocks. Write a ```mermaid fence and you get a diagram:</description><pubDate>Fri, 31 Jul 2026 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2023-03-11-print-source-code-with-vim/</guid><link>https://b12n.net/posts-output/2023-03-11-print-source-code-with-vim/</link><title>How to print any source code with Vim</title><description>ProblemsYou want to print source code from your project for quick review.</description><pubDate>Sat, 11 Mar 2023 00:00:00 +1100</pubDate></item><item><guid>https://b12n.net/posts-output/2019-09-02-useful-function-for-inspect-java-methods-from-clojure/</guid><link>https://b12n.net/posts-output/2019-09-02-useful-function-for-inspect-java-methods-from-clojure/</link><title>Useful function for inspect Java methods from Clojure</title><description>ProblemsWhile working on Clojure project, you want to inspect the function from Java library and work with it effectively.</description><pubDate>Mon, 02 Sep 2019 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2019-09-01-remove-ansi-escape-sequences-in-clojure/</guid><link>https://b12n.net/posts-output/2019-09-01-remove-ansi-escape-sequences-in-clojure/</link><title>How to remove ANSI escape sequences in Clojure</title><description>ProblemYou run command remotely using the library like clj-ssh which allow you to run command against
remote server and get the result back as string.</description><pubDate>Sun, 01 Sep 2019 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2019-08-30-add-new-dependency-at-runtime-to-clojure-project/</guid><link>https://b12n.net/posts-output/2019-08-30-add-new-dependency-at-runtime-to-clojure-project/</link><title>How to add new dependency at runtime to Clojure project</title><description>If you are working with Clojure for a while you may come across the following situation.While you working on some project you have your REPL session up and working with the code base
and realized that you need to add some external dependency to the project.</description><pubDate>Fri, 30 Aug 2019 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2019-08-29-spacemacs-setup-for-clojure-development/</guid><link>https://b12n.net/posts-output/2019-08-29-spacemacs-setup-for-clojure-development/</link><title>Basic Emacs Setup for Clojure Development.</title><description>This is my basic setup for working with Emacs and Clojure.
The setup is intended for user of Emacs that uses Spacemacs the awesome Emacs distribution intended for both Vim and traditional Emacs user.Pre-requisite:</description><pubDate>Thu, 29 Aug 2019 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2018-10-11-how-to-enable-Klipse-integration/</guid><link>https://b12n.net/posts-output/2018-10-11-how-to-enable-Klipse-integration/</link><title>How to enable Klipse integration with Cryogen</title><description>Sample Klipse setting to use with CryogenSample Configuration config.edn for your Cryogen project</description><pubDate>Thu, 11 Oct 2018 00:00:00 +1100</pubDate></item><item><guid>https://b12n.net/posts-output/2018-08-16-create-new-github-repo-no-mouse-required/</guid><link>https://b12n.net/posts-output/2018-08-16-create-new-github-repo-no-mouse-required/</link><title>Create new Github repository, no mouse required.</title><description>How to quickly create new Github project from your command line.Use gh-utils</description><pubDate>Thu, 16 Aug 2018 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2018-08-15-running-cryogen-site-locally/</guid><link>https://b12n.net/posts-output/2018-08-15-running-cryogen-site-locally/</link><title>Running Cryogen site locally</title><description>To quickly create your post try following the following steps:</description><pubDate>Wed, 15 Aug 2018 00:00:00 +1000</pubDate></item><item><guid>https://b12n.net/posts-output/2017-01-03-how-to-create-alias-that-work-across-unix-systems/</guid><link>https://b12n.net/posts-output/2017-01-03-how-to-create-alias-that-work-across-unix-systems/</link><title>How to create alias that work across Unix machines</title><description>I love shortcuts and like to do thing quickly. When I have to switch between
two *nix machines (Mac or my other Linux based machine), I like to use the same shortcuts
(or aliases) regardless of where I am.One way to a chieve this is to write the alias/script that determine the type of
environment it is currently running on.</description><pubDate>Tue, 03 Jan 2017 00:00:00 +1100</pubDate></item></channel></rss>