Posts tagged: babashka

Parsing AI Agent Output Into an Immutable AST Before It Touches Production

AI coding agents ship subtle runtime flaws — unescaped innerHTML, unstable sorts, malformed config. A parse-first EDN gate catches them before runtime, deterministically.

My Flight Recorder Crashed Before The Plane Did: Four Bugs From One Dogfood Session

I shipped a flight recorder for AI agent runs yesterday and preached immutable DAGs on this blog. Today my job bot attached it for its first real flight — and the recorder itself crashed four times. Every crash taught something a unit test would have missed.

Your Agent Framework Dumps JSON Blobs. Here Are the Three Storage Layers It Should Have.

Traditional agent frameworks serialize giant state dictionaries on every step. An immutable DAG engine splits storage into three layers — HAMT pointers in RAM, content-addressed blobs on disk, and a replay proxy store — and last night I built layer two for real.

My Zero-Dependency Tools Had No Clothes: What The Update Framework Taught Me

A zero-dependency security toolchain still shipped updates through an unsigned pipe. The Update Framework exposed the blind spot — and upgraded the doctrine.

I Built an Evergreen Job-Ad Detector for MyCareersFuture

A deterministic detector for reposted "evergreen" job ads on MyCareersFuture — timestamps and hashes as evidence, no accusations needed.

When My Own Scanner Blocked My Own Commit

My pre-commit scanner caught my real NRIC and phone number before they hit GitLab — twice in one session.

Full-Blog PDPA Audit — Scanning 202 Posts for PII Leaks

I ran pdpa-sg-clj across all 202 blog posts — 239K words, 1.66 MB — to audit for NRIC leaks, phone numbers, API keys, and email exposure. Here's the methodology, findings, and what I learned about automated PII detection at scale.

Building pdpa-sg-clj — A Clojure/Babashka Scanner Library With NRIC Mod-11 and ripgrep NDJSON

Deep-dive into the architecture of pdpa-sg-clj — how it uses Babashka, ripgrep NDJSON, and the Singapore NRIC Mod-11 checksum algorithm to build a fast, correct PII scanner library.

I Made My Blog Discoverable by AI Agents — llms.txt, Content-Type, and the Agent Discovery Flow

How I implemented the llmstxt.org standard on nurazhar.com — dynamic llms.txt generation, proper Content-Type headers, and an agent discovery flow that lets AI agents navigate 191 articles without scraping.

How I Made My Blog PDPA SG Compliant — Step by Step Integration Journal

A step-by-step builder's journal of integrating pdpa-sg-clj into a static blog publishing pipeline — submodule setup, wrapper scripting, pipeline wiring, testing, and the decisions behind each step.

My Blog Now Scans Itself for PII Before Every Publish — Here's the Pipeline

How I integrated pdpa-sg-clj — a Singapore PDPA compliance toolkit — into my blog publishing workflow, so every post is scanned for NRIC numbers, phone numbers, API keys, and credentials before it goes live.

Six Security Automation Tools in Babashka: A Zero-Dependency Monorepo

How I built six security automation assistants as a babashka monorepo with pure functions, a self-contained CSV parser, and 175 assertions of golden tests — zero external dependencies, zero linter warnings, zero bugs.

The Complete CI/CD Architecture of a Solo Developer's Blog

A deep-dive into the CI/CD pipeline that ships a 180+ post static blog from a Chromebook to production — with diagrams, cost analysis, and the architecture decisions behind every stage.

Why I Ditched My Self-Hosted Runner for GitLab Shared Runners — and Made It Work on ARM Chromebooks

I moved my static site's GitLab Pages pipeline from a self-hosted shell runner to any shared runner, including ARM64 Chromebooks, by installing Babashka, pandoc, and a diagram renderer inside the CI job.

I Made Two Repos Public and Then Panic-Scanned Them for Personal Data Leaks

Before flipping my capstone project repos from private to public, I ran a full PDPA compliance audit using a Singapore-specific PII scanner.

Mathematical Determinism: Overcoming the Lisp Parenthesis Odyssey in Production

When a standard container build compiles successfully but triggers a production HTTP 503 Upstream Connection Failure, trial-and-error debugging fails. Here is how we isolated temporal telemetry and used string-aware static analysis to achieve absolute AST balance.

REPL vs nREPL — Why Clojure's Live Programming Is a Superpower

Deep technical dive into the REPL and nREPL — how they work at the protocol level, why Clojure's architecture enables live programming, and how every other language ecosystem falls short. With D-two diagrams.

Debugging GitLab Pages: Hardcoded Paths, HTTPS Domains, and Self-Healing CI/CD

Two issues broke my CI/CD pipeline and HTTPS domain on nurazhar.com: a hardcoded local resume path in the static site generator, and an incomplete GitLab Pages SSL certificate for the custom domain. Here's the forensic breakdown.

Building an AI Butler: A Post-Mortem From Inside the Architecture

I shipped a Hermes-class personal AI butler in Clojure/Babashka. Five risks hit me while building. Three had architectural fixes. Two did not. Vector at the end.

The Entropy Collapse Thesis — Why One Tool, Why Clojure, Why LLMs as Compiler

One engineer's argument for minimizing cognitive entropy by collapsing the toolchain into the smallest possible surface area — Clojure/Babashka as the substrate, LLMs as the compiler, and why inheritance is a design violation.

pdpa-sg-clj: Compliance-as-Code for Singapore's PDPA, Readable by AI Agents

A new public Clojure + Babashka toolkit that turns the 11 Singapore PDPA obligations into a self-ticking checklist, a Mod-11 NRIC redactor, and a ripgrep-backed scanner an AI agent can read end-to-end.

Debugging a Missing Blog Post — Quickblog Cache & YAML Frontmatter

How a missing blog post revealed a silent cache bug and a YAML format incompatibility that crashes quickblog's tag generation.

How a Single ".env" in allowed-extensions Could Leak Your Secrets to LLMs

A three-layer defense-in-depth fix for an AI context bundler that was accidentally including .env files in LLM context.

Leaky Layout Abstractions: Fixing Template Scope Leaks in Static Site Compilers

A technical post-mortem on how custom standalone layouts leak unparsed compiler directives to the client, and how to resolve it at the pipeline layer without dependency bloat.

Designing a Zero-Configuration, Zero-Admin Developer Sandbox for Career-Switchers

How to build a zero-configuration, zero-administrator local development environment running Django and React on Windows 11 to help adult tech-learners bypass environment installation friction.

Decoupled Static Dashboards: Building Transparent roadmaps in Public

How to build and serve interactive, public project roadmaps natively to readers at zero compute cost using static compiler pipelines.

Quickblog: The Zen of Minimalist Static Site Generation

An architectural breakdown of Quickblog, the minimalist static site generator powered by Babashka, and why zero-database static HTML is the ultimate design choice.

How to Maximize Clojure Usage & Minimize Token Quota on Antigravity IDE

A guide on managing token quotas and optimizing LLM usage for Clojure development in Antigravity.

Hello Clojure!

Welcome to my Clojure automation journal, hosted natively using Babashka and Quickblog.