Posts from today
This page was built on February 26, 2026
How I Use django-simple-nav for Dashboards, Command Palettes, and More
I first got exposed to django-simple-nav while working with Josh Thomas at the Westervelt Corporation over the last two or three years. It quickly became a go-to library in my toolkit. django-simple-nav lets you define nav items and groupings in Python, then hand them off to a Django template to render. I use it for sidebars, headers, dashboards, and other spots where I need a menu.
Since then, I have also started using it on a lot of personal projects. It has been a great fit every time.
Defini...
Take me to this post.
February 27, 2026
GitHub Copilot SDK for .NET: Complete Developer Guide
Learn the GitHub Copilot SDK for .NET in this complete developer guide. Build custom AI agents with CopilotClient, CopilotSession, streaming, tools, and multi-model support in C#....
Take me to this post.
February 26, 2026
Machine Knitting: the empire strikes hat
Play bad title pun games, win bad title pun prizes.
The Chattie hat continues to tempt and taunt me. After my first test Chattie
came out OK despite some major issues during construction, and my second
Chattie didn’t work out.
Producer Amy has ultimately adopted the “test” Chattie as her own, wearing it
through this strange NYC winter, and even held onto it when a friend and
colleague politely but firmly attempted to transfer ownership. Consequently,
I received a commission request for a new Cha...
Take me to this post.
February 26, 2026
Intercepting messages inside IsDialogMessage, installing the message filter
Using an IsDialogMessage extension point.
The post Intercepting messages inside IsDialogMessage, installing the message filter appeared first on The Old New Thing....
Take me to this post.
February 26, 2026
Building Async Page Transitions in Vanilla JavaScript
Learn how to build a lightweight SPA router with true async crossfade page transitions using Vanilla JavaScript, GSAP, and Vite — no framework required....
Take me to this post.
February 26, 2026
Stop Tabbing. Start Using Your Monitor
OK, I admit, this one is going to be weird. So, buckle up… Tabbing feels like it costs a second. It doesn’t. It costs your train of thought.…...
Take me to this post.
February 26, 2026
Builder vs Fluent Interface Pattern in C#: Key Differences Explained
Understand the differences between Builder and Fluent Interface patterns in C# with code examples, use cases, and guidance on when to use each pattern....
Take me to this post.
February 26, 2026
CodeSOD: The Counting Machine
Industrial machines are generally accompanied by "Human Machine Interfaces", HMIs. This is industrial slang for a little computerized box you use to control the industrial machine. All the key logic and core functionality and especially the safety functionality is handled at a deeper computer layer in the system. The HMI is just buttons users can push to interact with the machine.
Purchasers of those pieces of industrial equipment often want to customize that user interface. They want to guide u...
Take me to this post.
February 26, 2026
The Mathematics of Change
Nobody knew how she had bought the thin forest of bell towers that pinned the old city’s neighborhoods to the ground; what was one more dark absurdity when the news were little more than their relentlessly creative enumeration? Where it was asked for she repaired the churches. Where it was not she left them in the untouched wreckage from the Children’s Crusade, unburied corpses and all.The bell towers she kept for herself. She had them fortified against external access, repaired every bell, and ...
Take me to this post.
February 26, 2026
Notes on Linear Algebra for Polynomials
We’ll be working with the set P_n(\mathbb{R}), real polynomials
of degree \leq n. Such polynomials can be expressed using
n+1 scalar coefficients a_i as follows:
\[p(x)=a_0+a_1 x + a_2 x^2 + \cdots + a_n x^n\]
Vector space
The set P_n(\mathbb{R}), along with …...
Take me to this post.
February 26, 2026
Introducing gzpeek, a tool to parse gzip metadata
In short: gzip streams contain metadata, like the operating system that did the compression. I built a tool to read this metadata.
I love reading specifications for file formats. They always have little surprises.
I had assumed that the gzip format was strictly used for compression. My guess was: a few bytes of bookkeeping, the compressed data, and maybe a checksum.
But then I read the spec. The gzip header holds more than I expected!
What’s in gzip metadata?
In addition to two bytes identifying...
Take me to this post.
February 26, 2026
Back to Home