Your OpenClaw can book flights. But can it survive a dungeon crawl?

Listen to this article instead Your browser does not support the audio element AI agents are having a moment. OpenClaw (née Clawdbot, née Moltbot1) just hit 200k GitHub stars. People are driving a Mac Mini shortage just to manage their email, book flights, and order groceries. Someone launched a fake $CLAWD crypto token that hit $16 million before crashing 90%. Its creator joined OpenAI. There’s a social network for AI agents now. These agents can do genuinely useful and awesome things. But let’s be honest: sending emails and checking you in for flights is not exactly exciting. What if, instead of a boarding pass, we gave our AI agent a sword? ...

February 19, 2026 · 10 min · Bart de Goede

Building a semantic search engine in ±250 lines of Python

Listen to this article instead Your browser does not support the audio element Once upon a time I wrote a post about building a toy TF-IDF keyword search engine. It has been one of the more popular posts I’ve written, and in this age of AI I felt a sequel has been long overdue. It’s pretty fast (even though it’s written in pure Python), it ranks results with TF-IDF, and it can rank 6.4 million Wikipedia articles for a given query in milliseconds. But it has absolutely no context of what words mean. ...

February 9, 2026 · 14 min · Bart de Goede

Modernizing my 150-line Python search engine: Yahoo! dumps -> Hugging Face 🤗

A few years ago I wrote a full-text search engine in 150 lines of Python. The Wikipedia data source it relied on has since been discontinued, and the tooling around it was showing its age. I wanted to (finally) write a follow-up about semantic search, but I realized that I had to get the old repository in a working state first. It’s now using Hugging Face (🤗) datasets, uv, ruff, pytest, and GitHub Actions, without touching the core search logic. ...

February 9, 2026 · 6 min · Bart de Goede

Building a full-text search engine in 150 lines of Python code

Full-text search is everywhere. From finding a book on Scribd, a movie on Netflix, toilet paper on Amazon, or anything else on the web through Google (like how to do your job as a software engineer), you’ve searched vast amounts of unstructured data multiple times today. What’s even more amazing, is that you’ve even though you searched millions (or billions) of records, you got a response in milliseconds. In this post, we are going to explore the basic components of a full-text search engine, and use them to build one that can search across millions of documents and rank them according to their relevance in milliseconds, in less than 150 lines of Python code! ...

March 24, 2021 · 15 min · Bart de Goede

Bloom filters, using bit arrays for recommendations, caches and Bitcoin

Bloom filters are cool. In my experience, it’s a somewhat underestimated data structure that sounds more complex than it actually is. In this post I’ll go over what they are, how they work (I’ve hacked together an interactive example to help visualise what happens behind the scenes) and go over some of their usecases in the wild. ...

March 23, 2018 · 9 min · Bart de Goede