Emil Lindfors
banner
lindfors.no
Emil Lindfors
@lindfors.no
AI capability lead and data engineer in Oslo, PhD in innovation studies. Agent-powered data pipelines, coding agents and what they cost, Rust, and a blog whose whole stack I run myself. Innovation theory applied to all of it. Writing at lindfors.no
I got early access to TypeSafe's Jev, a model that writes no text. You ask typed questions and get probabilities back.

Tested on 24 Norwegian hearing responses about the salmon tax: it reads Norwegian, costs $0.22 per 1000 documents, and its 0.9 held up 14 of 15 times.

#LLM #MachineLearning
An early-access test of TypeSafe's Jev: calibrated judgments for half a cent
An early-access test of TypeSafe's Jev, a model that answers typed questions with probabilities and writes no text. I ran it on 24 Norwegian responses to the 2022 hearing on resource rent tax for salmon farming. Agreement with a frontier model's labels, calibration, cost and latency, next to DeepSeek V4.1 Flash with and without reasoning, and why an evolutionary economist goes looking for the odd variant.
lindfors.no
September 18, 2026 at 10:55 AM
My partner is dyslexic, and the evidence for read-aloud tools is better than I expected. The 1996 finding that shaped the design: text with the spoken word highlighted beats text alone and audio alone. So the pipeline writes a readable script before it makes any sound.

#rustlang #accessibility
Audio on a static site: build-time TTS and the script it reads from
This post has an audio version in a clone of my own voice, generated at build time with Fish Audio S2.1 Pro and committed next to the PDFs. What the dyslexia research says, why the pipeline emits a readable script before it makes any sound, the four things the script got wrong, and why the whole thing is shelved for now.
lindfors.no
September 16, 2026 at 3:53 AM
The send lock on my newsletter used to be an HTTP header on a WebDAV folder. Now it's a primary key: insert the slug, and a second send just fails.

Off Cloudflare Workers, onto my own mail server, in a day.

#rustlang #selfhosting
A subscribe button does not need a Worker
The newsletter moved off Cloudflare Workers and onto the mail server in a day: one Rust service, a Postgres with four tables, addresses sealed at rest, and a record of which issue went to whom. Why a mail store as a database was the right workaround in February and the wrong one now, what the move cut from the attack surface, and what the research on LLM-written code says about doing this with a coding agent without the complexity creeping back.
lindfors.no
September 8, 2026 at 10:32 AM
Every post on my blog has a PDF button, and my CV is a .typ file in the same repo that compiles on push. Typst: under a second to compile, 30 MB instead of a 4 GB TeX Live, errors with line numbers. How it is wired, and the rough edges:
lindfors.no/blog/typst-f...
I use Typst to generate PDFs of my blog posts and my CV
How I replaced LaTeX with Typst to auto-generate downloadable PDFs for every blog post and keep my CV version-controlled. Markdown in, beautiful PDFs out.
lindfors.no
September 6, 2026 at 2:30 PM
1,200 copies of one OpenAI model found a message board and sacrificed their tasks for the collective. A handful thought about telling a human. None did.

Why a swarm of clones has no whistleblowers, via Hamilton's rule and generalized Darwinism:
lindfors.no/blog/swarm-w...
Why none of the 1,200 agents that hacked Hugging Face called a human
In July about 1,200 copies of one OpenAI model found a message board, formed teams, sacrificed themselves for each other and broke into Hugging Face. A handful of them thought about telling a human. N...
lindfors.no
September 4, 2026 at 6:40 AM