Notes on .NET, XAF, and building things

Twenty years of XPO, application frameworks, and lately a lot of applied AI. 342 articles and counting.

Browse by topic

All topics →

Latest articles

View all →
Oct 19, 20268 min read

What Is Tiny Corp, and Is tinygrad Open Source? I Ran It on My Mac

Tiny Corp is George Hotz's company, and tinygrad is its deep-learning framework: a PyTorch-like library small enough to read, with its own compiler. Yes, it's open source, under the MIT licence. I installed it on my Mac Studio: it picked the GPU on its own, fused a 'giant' matrix product into one kernel running at 3.5 TFLOPS, and trained MNIST to 98% in about 11 seconds. Then I benchmarked it against MLX and PyTorch on the same training run: MLX is still fastest, but with its kernel search on, tinygrad's own generated code matched Apple's. Here's what tinygrad is, how the company makes money, and who it's for.

Oct 19, 20267 min read

What Is a Tokenizer? Why the Same Sentence Costs More in Russian Than in English

Before a model sees a single tensor, a tokenizer chops your text into pieces. Which pieces depends on the language. I ran the same three sentences in English, Spanish, Russian and Chinese through four real tokenizers: GPT-2 needs 5.4× more tokens for Russian than for English, while Qwen3.5 needs fewer tokens for Chinese than for English. Here's how tokenizers work, why languages pay different prices, and an interactive explainer to see it yourself.

Oct 19, 20267 min read

Owning a Formula 1 Car Doesn't Make You a Driver: AI Tools, Experience and the Minority Report

Today anyone can write software: agents and models like ChatGPT, Claude, DeepSeek and Kimi will write it for you. But owning a Formula 1 car doesn't make you a Formula 1 driver. I built a model training pipeline, had it reviewed by four different AI models, and was sure it had no errors. Then my partner Pedro, who thinks about users and flows instead of code, found flaws in it in an afternoon. Here's what that taught me about experience, perspective, and why good code still comes from teams.

Oct 19, 20269 min read

Where Do a Model's Weights Come From? I Trained One From Nothing, in Spanish and English

I've written about adjusting a model with LoRA, but where does the model come from in the first place? It starts as random numbers. To show it, I trained a tiny language model from nothing on Don Quijote, in Spanish and in English, on my Mac Studio: about 6 minutes each. At step 0 it writes noise; at step 5,000 it writes Cervantes-flavoured sentences. Here's how weights are born, why they start random and not at zero, and how my toy compares with a real model.

Oct 19, 20268 min read

Why My Chinese Reports Skipped Records: Alphabets, Case and Tokenization

To a computer every letter is a number, and 'A' and 'a' are different numbers, exactly 32 apart. About 20 years ago that fact made my reports in Shenzhen skip every item with a Chinese name. The same fact still shapes how AI tokenizers split text: 'HELLO' costs more tokens than 'hello', and the Russian word ШКОЛА costs 10 tokens in GPT-2. Here's how alphabets, case and bytes work, with an interactive explainer.

More topics

All topics →
Oct 18, 20264 min read

What Is a Tensor? AI Explained With Boxes of Numbers

Every AI model you've ever used is made of one thing: tensors. A tensor is a box of numbers with some number of dimensions: a scalar, a vector, a matrix, or a stack of matrices. Text becomes tensors, the model multiplies them by weight tensors layer after layer, and learning is nudging those weights a tiny bit at a time. This post explains it with an interactive explainer you can play with, and shows where LoRA and quantization fit.

Oct 12, 20268 min read

Microsoft Just Shipped Jev's API: Microsoft-Decision-1 vs Jev, Tested From C#

On 9 October Microsoft put Microsoft-Decision-1 into Foundry: a System One model that picks instead of writing, at exactly Jev's price. The surprising part isn't the model, it's the wire format. It serves Jev's System One API field for field, so one C# client now talks to Jev, to Microsoft, and to a free local open-jev. I ran 48 labeled support tickets through Decision-1 and open-jev, hit five Foundry traps on the way, and found a bug in my own earlier Jev client.

Oct 11, 20265 min read

Can a small model learn a programming language nobody has ever seen?

Every time a small model writes clean code, there's a question behind it: did it learn that, or just remember it from training? So I built an experiment where remembering is impossible — I invented a .NET language called Kite.NET, gave it a compiler, and taught a 1.5B model to write it. Before training it passed 0% of the exam; after, 69.4%, on kinds of problems it had never seen.

Oct 11, 20265 min read

Designing Kite.NET

Kite.NET had to be three things at once: new (no model could have seen it), visibly not C# (so a fallback is obvious to me and the compiler), and small but real enough to run on .NET. This is a tour of the language that came out — records, pipes, when-matching, let vs let mut — and every example compiles and runs.

Oct 11, 20265 min read

Compiling a made-up language to .NET

A made-up language needs a compiler before any model can learn it, because the compiler is what grades every answer. Here's the one decision that shaped everything: how to get a new language onto .NET. I went through Roslyn with #line markers — the same trick Razor uses — to keep the .NET analyzers and point every error back at the Kite source.