My last post was about companies discovering their AI bills and installing caps. A reasonable reaction to that post is the one the local-LLM crowd has been giving all year: stop renting tokens, the open models are good now, just run them on your own machine. The benchmarks backing that advice have a hardware problem. The writeups that measure anything run on Mac Studios or 128GB M5 Max laptops,…
Last month I ended my Fable 5 post saying I was seeing more and more content about companies starting to look at their AI costs. It didn’t slow down after that, so I want to actually go through it this time. A year ago companies were pushing engineers to use AI harder. Uber ran internal leaderboards ranking engineers by Claude Code usage , and consuming more tokens was treated as a good…
I’ve been experimenting with pointing LLMs at databases through MCP servers and asking them questions. The results followed a pattern. First, the model would simply make up tables and columns that didn’t exist, then write plausible-looking SQL against them. Giving it tools to investigate the schema fixed the first failure: it could list tables and describe columns, and it stopped…
I like to redesign this blog every once in a while, and this time it lined up with Anthropic releasing Fable 5, their new model that sits above Opus. The redesign seemed like a good test for it: it’s a real codebase, I have opinions about how the site should look, and if the result was bad I could just revert. I’ve tried this with earlier models and I always had to wrangle with them to…
I have become angry and disillusioned with AI. And the anger is not even pointed at the tool. I do use it daily, it helps with the annoying tasks, it’s a better google, I can use it to research interesting topics. So where is this anger coming from and why? Noise Some people have made comparisons that the advent of AI is on the same level as the invention of electricity. While the validity…
When I learned Python, the standard setup was python -m venv and pip. If you were using black in your project, you were already ahead of the curve. Over time the ecosystem filled in: pyenv for managing Python versions, Poetry for dependency management, isort for import ordering, flake8 for linting, mypy for types. So all in all you had to be aware of all of these tools, their configs and how to…
I built an agent for work some time ago, but the field moves fast, and I wanted to build something with the current tooling and see where things are at. So I spent a while reading about agentic AI to get a better grasp of the field.
Dungeon is a short turn-based roguelike that runs in your browser. Three floors, permadeath, ASCII art. You pick a class, explore the floor, try to get gear without dying, and move on to the next one. A run takes less than five minutes. A few years ago I took part in a game jam solo and built Muscle Domain in Godot in a week. You play as a disembodied arm wielding a dumbbell. Throw it with left…
Using open source tools for a while, I started wondering about the commercial side. The software is free, but the companies behind it clearly aren’t running on goodwill. I haven’t had to make the build-vs-buy call myself, but I’ve worked inside enough self-hosted setups to know the complexity is real. So I dug into both sides: how these businesses actually make money, and when…
I wanted to understand the cloud data warehouse space beyond the usual names. Snowflake, BigQuery, Redshift are the defaults everyone reaches for, but a lot has changed, especially with Iceberg reshaping how storage lock-in works. Here’s what I found.
Looking back at my Steam Replay, I touched 30 games in 2025. Some I played for months, others I bounced off within an evening. A few patterns emerged: I’m a sucker for a good soundtrack, I’ll play any ARPG put in front of me, and I have a chronic inability to finish massive RPGs. Here are my top 3, followed by everything else. Top 3 Clair Obscur: Expedition 33 Uncontested Game of the…
This post continues from Building a Generative Art System in Go , where I build the foundation for a modular generative art framework. If you haven’t read that one, I would suggest starting there. Here, I will go through what features I have added since, but will mainly focus on showcasing some of the new engines I have implemented. Perlin Pearls The first thing I wanted to add after last time was…
I recently watched a video going through this article (thanks attention economy). The core idea of the article is that when a site is being loaded for the first time, TCP sends 10 packets, to try and figure out how fast the requests can go, increasing the number of packets with each request. The size of these first 10 packets ends up at 14kb, so if we want to make sure the user gets a smooth…
1. What is Generative Art? Generative art shifts the focus from drawing images to designing systems. Instead of sketching directly, you define algorithms, randomness, and rules, then let the system produce the output. For me what makes it interesting is the fact that you don’t just create one piece, but a machine capable of generating infinite variations. This post walks through how I approached…
Compression setting are set and forget in most cases, if it works no reason to change it. I decided to look into and see whether it would be beneficial to review the defaults and if it could save money. I covered most of the algorithms discussed in this post previously in Compression Algorithms You Probably Inherited , where I summarized the info I collected while researching. But I wanted to…
You Might Be Using The Wrong Compression Algorithm If you work in data engineering, you’ve probably used gzip , Snappy , LZ4 , or Zstandard (zstd) . More likely - you inherited them. Either the person who set these defaults is long gone, there’s never enough time to revisit the choice, or things work well enough and you’d rather not duck around and find out otherwise. Most engineers stick with the…
The Problem Too often, data engineering tasks that should be simple end up requiring heavyweight tools. Something breaks, or I need to explore a new dataset, and suddenly I’m firing up Spark or connecting to a cloud warehouse - even though the data easily fits on my laptop. That adds extra steps, slows things down, and costs more than it should. I wanted something simpler for local analytics that…
Project Links GitHub : github.com/KonMam/kafka-replay-cli PyPI : pypi.org/project/kafka-replay-cli Why I Built This I wanted more hands-on Kafka experience - that’s the gist of it. Before this, I’d dealt with a few producers/consumers here and there, read the docs, and studied Kafka’s architectural design principles (very insightful read if you are interested in that sort of thing:…
A Kafka producer is the entry point for all data written to Kafka. It sends records to specific topic partitions, defines batching behavior, and controls how reliably data is delivered. This post covers the behaviors and configurations that influence the producer: partitioning, batching, delivery guarantees, and message structure. What Does a Kafka Producer Do? A Kafka producer is a client library…
Kafka is built for high throughput, scalability, and fault tolerance. At the core of this is its consumer model. Unlike traditional messaging systems, Kafka gives consumers full control over how they read data. This post explains how Kafka consumers work by focusing on three things: how they pull data, how offsets work, and how parallelism is achieved with consumer groups. Pulling Data from Kafka…
I’m a data engineer by day. This blog is where I write things down so I don’t forget them – and in case they’re useful to someone else. Data engineering never sits still – there’s always a new tool, a new tradeoff, a new reason the old approach doesn’t quite work anymore. I write about that, and whatever else catches my attention. If you like digging into…
Kafka routinely handles millions of messages per second on commodity hardware. This performance isn’t accidental. It stems from deliberate architectural choices centered around log-based storage, OS-level optimizations, and minimal coordination between readers and writers. This post breaks down the core mechanisms that enable Kafka’s high-throughput design. 1. Append-Only Log Storage…