Bot detection should not stop at allow/block. This post shows how StyloBot's classification result becomes application logic in ASP.NET: tag helpers in Razor, action filters and policies in...
Monday, 01 June 2026 10:30
//
22 minute read
Long-running services tend to slowly drift toward unbounded memory. Here's how I find that drift, how I think about fixing it without papering over it, and a worked example from StyloBot's vector...
Monday, 01 June 2026 10:30
//
21 minute read
Bot detection should not stop at allow/block. This post shows how StyloBot's classification result becomes application logic in TypeScript: server middleware for Express and Fastify, template helpers...
Monday, 01 June 2026 10:30
//
19 minute read
StyloBot's detection engine is ASP.NET Core. This post explains how that engine connects to Go gateways, Node.js applications, and any other stack via a gRPC sidecar, a typed Go SDK, and a Caddy...
Monday, 01 June 2026 10:30
//
18 minute read
How do you test a detector whose answer is supposed to change as it learns? This post is about BDF, the Behavioural Definition Format that makes StyloBot testable: one file defines a class of traffic,...
Monday, 01 June 2026 10:30
//
23 minute read
Identity-based bot detection (IPs, user-agents, headers) collapses the moment automation starts rotating identities. StyloBot models clients as behavioural shapes in a 130+ dimensional vector space....
Monday, 01 June 2026 10:30
//
23 minute read
Heads up: this one is for the nerds. It's a deep technical dive into StyloBot's adaptive learning system (EWMA updates, hysteresis thresholds, verdict caching, variance watchdogs), with real code from...
Wednesday, 13 May 2026 11:00
//
25 minute read
Well today was a BIT OF A DAY. I handed in my notice on one contract (been in it almost 2 years!) and my other contract decided to terminate...SO...at the end of May I'll be officially...
Thursday, 30 April 2026 14:50
//
3 minute read
Most software still assumes the world will hand it clean inputs and stable rules.
Production usually does neither.
This post is the through-line behind a bunch of things I've been building: DiSE,...
Friday, 13 March 2026 10:30
//
15 minute read
Enterprise bot detection shouldn't require a PhD in infrastructure (or thousands a month in expenditure to use!). Two lines of code, zero external services, and you're running (up to) 21 detectors in...
Monday, 16 February 2026 10:30
//
20 minute read
Part 1 was the why. This is the show-and-tell tour of what StyloBot does that is rare in production bot stacks.
Thesis: StyloBot models bot detection as a progressive, early-exit topology of...
Sunday, 15 February 2026 10:30
//
20 minute read
NuGet NuGet Downloads GitHub Release (CLI)
In Part 1 I showed the raw pipeline: manually downloading models, writing a tokenizer, wiring up ONNX inference, and decoding BIO tags by hand. Educational,...
Thursday, 12 February 2026 12:00
//
26 minute read
Hey everyone so I restarted the blog back in November and have been steadily puping out the articles but...it's got to the point where I've stopped enjoying it.
The blog landscape has changed since I...
Saturday, 31 January 2026 05:00
//
1 minute read
Deep Research without Deep Pockets.
When "Deep Research" landed in the premium AI tools, I was curious: what is this, actually? So I pulled it apart. And once I understood the architecture, I realised...
Thursday, 29 January 2026 10:00
//
23 minute read
A glyph-based terminal renderer using shape-matching algorithms. Supports images, animated GIFs, videos, YouTube playback, and live subtitles with multiple render modes including Braille for maximum...
Saturday, 24 January 2026 12:00
//
21 minute read
NuGet NuGet Downloads GitHub Release (CLI)
As I've been building lucidRAG I'm reading social media where people keep asking the same thing. 'How do you get features from scanned text?' the category...
Wednesday, 21 January 2026 12:00
//
19 minute read
"How do I build an MCP server?" is the wrong question.
SDKs exist. An LLM can scaffold one in seconds. The real question is:
What role should an MCP server play inside a system that must not lie?
The...
Tuesday, 20 January 2026 16:00
//
13 minute read
LLMs (Large Language Models) are being used as sensors. That is a category error: using a probabilistic synthesizer where a deterministic boundary device is required.
This isn't developers' fault....
Sunday, 18 January 2026 15:33
//
13 minute read
NOTE: This is not a conventional blog article. It is a technical spec written for a concrete feature in lucidRAG.
I iteratively feed this document to code-focused LLMs during development to reason...
Saturday, 17 January 2026 14:00
//
12 minute read
Status: In development as part of lucidRAG.
Source: github.com/scottgal/lucidrag
Where this fits: VideoSummarizer is the orchestrator of the lucidRAG family, combining five pipelines into a unified...
Thursday, 15 January 2026 19:00
//
25 minute read