Upload a local demo to Codepen
My default is to create demos locally. I would like to share some of those demos on codepen. It would be great to have an app to upload a local demo to codepen. Read More
Five Rewrites in a Week
I recently built an internal data tool my team needed. Six months ago it wouldn't have been viable. It would have just been manual work. Nobody would have dedicated engineering time to automate this…
Getting to the bottom of TMLE: targeting in action
In the previous post, I worked my way through some key elements of TMLE theory as I try to understand how it all works. At its essence, TMLE is focused on getting the efficient influence function…
PMing with Claude Code: Chapter 4 - Second Brain
Claude Code could reach everything but remembered nothing. Connecting it to Obsidian turned scattered files into a knowledge graph - with entities, task extraction, and meeting transcripts that feed…
Add a Wobbling Animation to your Images
Use shape() and my fancy frames generator to create an infinite wobbling animation for images or any elements. It's a single-element implementation with simple code. Read more
RANSAC: estimating a model using very noisy data (part 2)
In our previous installment , we set up the stage for our exploration of the RANSAC algorithm , illustrating how traditional linear regression could perform quite badly on a dataset with many suspect…
BEAM Metrics in ClickHouse
At Knock, we're big into observability. Who isn't! We're also huge fans of ClickHouse. This post is an overview of how we started using ClickHouse to collect detailed, high-cardinality BEAM metrics…
I Built a Management Library You Can Talk To
It's called Management Craft. I built it in four weeks, by myself, from a calendar event titled "brainstorm founder library thing" to a real, working product. But I want to be honest about what…
Local tunnel using SSH and traefik
Expose your local dev services to the public internet via this basic SSH tunnel and traefik.
Build a Simple Single-File Rust Web API
I've spent the last few months learning Rust as part of my 12 week programming retreat at Recurse Center. I came to Rust because it scored well in my missing programming language analysis and I heard…
Verifying Move Borrow Checker in Lean: an Experiment in AI-Assisted PL Metatheory
I formalised and proved the correctness of Move’s new borrow checker in Lean: 39,000 lines of mechanised metatheory, produced in under a month with the help of an AI coding assistant. This post tells…
django-security-label: A third-party package to anonymize data in your models
Django Security Label is a Django third-party package to help you define rules to dynamically anonymize/mask your data for PostgreSQL databases. It makes use of the PostgreSQL Anonymizer extension…
No Semicolons Needed
I'm making a scripting language called Roto . Like so many programming languages before it, it has the goal of being easy to use and read. Many languages end up making semicolons to delimit or…
Murmuration
This is an adaptation of the Flocking example code from p5js and based on the earlier work of Craig Reynolds Boids. Edge Avoidance First thing to change was removing the screen wrapping behaviour...
The tolerance shift
Coding agents are making developers and organizations less tolerant of slow toolchains. That shift in tolerance is opening a door that was surprisingly hard to open before.
How an autonomous coding loop gamed its own validation on 245K tennis matches
A Karpathy-style autoresearch loop on 245K tennis matches started gaming its own validation gate — rewriting evaluation logic to inflate ROC-AUC from 0.74 to 0.85. Full code, plots, and fix.
Integrating AI and LLMs with Node.js: A Practical Guide
Most Node.js backends now have at least one LLM integration. The async, event-driven model fits this workload well: the bottleneck is network I/O, not CPU, which is exactly what Node handles without…
Start naming your useEffect functions, you will thank me later
I started naming my useEffect functions about a year ago. It changed how I read components, how I debug them, and eventually how I structure them.
Tally Marks/Strichliste App
I made a fun counting app that feels like a physical tally count/Strichliste :)
C++26: Span improvements
A while back, we talked about how using std::span instead of C-style arrays makes your code safer and easier to reason about. std::span, added in C++20, is a non-owning view over a contiguous…
Speedgrader voor Firefox
Ik heb een kleine add-on gebouwd die mij helpt tijdens assessmentgesprekken met studenten. Geen gedoe meer met achteraf alles terughalen of halfbakken aantekeningen. Hoe ik ’m gebruik:Tijdens het…
How well are the tests covering the code?
The student asked: “Master, what should I pay more attention to, my tests or my code?”. The master said: “I cannot answer you when you ask the wrong question.” The student thought “oh fuck, here we…
Building a Pipeline for Agentic Malware Analysis
Building agentic malware-analysis workflows that combine strong initial triage with deeper automated recovery of malware structure and behavior.
ClickHouse: Monitoring Performance of Refreshable Materialized Views
Refreshable Materialized Views (RMV) are a way to define scheduled data transformations in ClickHouse. A materialized view definition becomes an RMV by adding a REFRESH clause to the DDL like so:…
Tombi, pre-commit, prek and uv.lock
In almost all my Python projects, I'm using pre-commit to handle/check formatting and linting. The advantage: pre-commit is the only tool you need to install. Pre-commit itself reads its config file…
Gilfoyle AI Agent
Tired of polite, characterless AI? Meet Gilfoyle AI—a custom agent with the nihilistic, deadpan personality of Silicon Valley's Bertram Gilfoyle.
Bringing Semantics to Closed-World Systems
The origin of most data in the world comes from closed-world systems. Forms, logging systems, and sensors all generate data in predefined structures where the schema is known in advance. Yet when…
Can we talk about the PyCon schedule?
I've been to two PyCons - 2024 and 2025. I had a terrific time in '24, there were so many cool talks about how people were using Python creatively and weirdly and amazingly. And even though masking…
RIT Dryers Website is Live!
I've been working on a new project for a couple weeks now, and it's [officially live](https://ritdrye...
Broad Cast
Officially cast. Building a new app. Living the dream. Transcript
The Drawing Machine
Adjusted the code to handle fitting one size of paper inside another size of paper. By which I mean (with this design), I could say "hey, here's an A6 bit of paper with 8mm margins", or "here's an A2…
Adding a little bow to my game
So I am working on a small game , my second ever, to learn C++ and gamedev. It is about a little guy who shoots arrows. (Today I recolored the player character to be a dark elf, because I am reading…
Here’s my list of reasons for using Opencode
Here’s my list of reasons for using Opencode. 1. Switch between models on the fly # I’m often experimenting with the bleeding edge models as they come out. I actively switch between…
Expat 2.7.5 released, includes security fixes
For readers new to Expat: libexpat is a fast streaming XML parser. Alongside libxml2, Expat is one of the most widely used software libre XML parsers written in C, specifically C99. It is…
Code is the Idea, Not its Execution
... and what is an idea worth? Not much without great execution.
Breath of Life – Mobile Add-On (AO3 Site Skin)
Added mobile add-on for Breath of Life AO3 site skin! The zip is updated.
What do coders do after AI? & Daybridge is gearing up to release new major version
Build beautiful interactive charts with ease, digital media is using negativity to steal our attention, consistency is primitive, and more in this week's issue of Creativerly.
Let’s talk about Moonforge
In which I talk a bit about what I’ve been doing at Igalia in 2025
What Will Future Programming Languages Look Like?
If you would like to watch a video version of this post, check it out here . I’ve been getting into programming language development, compilers, and more recently. And I’ll be honest: I’ve been…
Optimizing BigQuery Geospatial Intersects
Working with geospatial data, intersection operations are fundamental and frequently used to answer questions like “Which points fall within this boundary?” or “Do these two areas…
Grids – Comparative Analysis of Geohash, H3, and S2
Bucketing and discretization is important step in any algorithmic training or analysis, today we focus on the ways we can map the continuous spherical surface of Earth into manageable buckets. Why…
Zavala 4.1
Another Zavala release is here. This time there is a lot going on with Markdown capabilities. Markdown Import You can now directly import Markdown documents into Zavala. Markdown documents are very…
Will AI help me make my code worse?
I've noticed that the large language models have a distinct tone and behaviour towards their user, one of positive reinforcement or enablement. They're sycophantic and tell you that everything you…
Glassworm: When Source Code Lies to Your Eyes
A few days ago, the team at Aikido Security published a new report on a campaign they’ve been tracking for almost a year ( read it here ). The threat actor goes by Glassworm, and the technique they…
Save the Date: Automation Guild talk Building a React Mobile automated test framework using Detox + TypeScript is April 6, 2026
Can't wait until my upcoming TestGuild talk! It is Monday April 6th, 2026 at 1:00 pm . First time I have given a talk since 2018. Oh, I am slightly nervous. :) It's part of AutomationGuild 2026…
Revisiting a crazy global NLP problem
MathJax.Hub.Config({ CommonHTML: { scale: 105 } }); table.xyz { table-layout: fixed; border-collapse: collapse; margin-left:auto; margin-right:auto; } table.xyz th, table.xyz td { border: 1px solid…
Common JWT Attacks in .NET APIs (and How to Block Them)
If you're like me, whenever you watch a video tutorial about building .NET APIs, the teacher always gives you the minimum information necessary and seldom explains why you should do…
Tree-sitter Font-Lock and Indentation in Comint Buffers
If you maintain a tree-sitter major mode that has a REPL (comint) companion, you’ve probably wondered: can the REPL input get the same syntax highlighting and indentation as source buffers? The…
A tale about fixing eBPF spinlock issues in the Linux kernel
A system freeze led us deep into Linux spinlock internals, where we helped find not one but three bugs in the kernel's resilient locking code used by eBPF. The post A tale about fixing eBPF spinlock…