Decisions and war stories
Short notes on problems I hit and how I solved them. More notes in Russian on my Telegram channel Kindexation.
- 2025–2026
How I started building TaleCheck
Ten years into writing a book, I couldn't find an editor or beta readers — so I asked Claude to play bad cop. That grew into a linter for prose.
- 2023
A roach that gets tired: modelling race biology
ATP, oxygen and lactate instead of a speed stat — and an admin simulator to balance it.
- 2019
Game balance when you can't patch the items
In a blockchain game, released assets are permanent. Our first season flooded the economy — and fixing it took a new mechanic, not a patch.
- 2019
Three DDoS attacks, one $200 ransom note — and why we paid Cloudflare instead
Blockchain Cuties was attacked in June 2019, blackmailed in September and hit again in 2020. We never paid; each time the defence got stronger.
- 2018
Debugging production at 130 km/h
Production broke, the team was stuck, and I was in a car crossing Poland. A laptop, a tunnel through my office PC — and a query that ran far too many times.
- 2018
Splitting a game between the chain and the server: signatures, a watermark and plugins
How Blockchain Cuties kept NFTs on-chain and everything else off-chain — with one-time signatures, a “minimum sign ID” that kept contract storage flat, and plugins instead of proxy upgrades.
- 2017
Platform risk: when free traffic ends overnight
Our publisher lived on free Google Play traffic. Then Google changed the rules.
- 2016
From days to hours: cloning a game skin in Unity by rewriting GUIDs
Reskinning a match-3 game took days of manual work and still broke. One editor script that rewrote GUIDs in .meta files turned it into a couple of hours.
- 2015
Hiring juniors through a meetup and an office tour
How a game-dev college group became a hiring pipeline for our content team.
- 2015
Tuning match-3 difficulty with one number: win rate
A sawtooth difficulty curve, win rate as its unit, and production data that told us the right number of moves for every level — without another playtest.
- 2015
An onboarding checklist where every line has an owner
Two new hires with the same name on the same day — and the checklist that made onboarding boring, in a good way.
- 2014
A level editor you paint with — and an argument about “feeling” the game
Turning a store-bought prefab into a palette-based match-3 editor with a Play button, and why a designer doesn't need final art to make a playable level.
- 2014
One engine, many games: how a small studio shipped 160+ titles
Seven genre engines, one shared core, and a new game in two weeks.
- 2014
The $100 asset that we rewrote completely — and that paid off
A match-3 template from the Unity Asset Store, a full rewrite, and a game that outperformed our flagship at a fraction of its cost.
- 2013
BotWars: letting the game test itself overnight
A test scene where bots spawned and killed each other all night — and the bugs no human tester would ever catch.
- 2013
Designer-first configs: a month that turned a tester into a level designer
Rebuilding Steam Defense's configs for the game designer, with scenarios as real code.
- 2013
The GG button: everyone on main, and a button that screams
A physical button that yelled when someone broke the build — and what trunk-based development cost and gave a small team.
- 2013
Measure first: making Steam Defense run on an iPhone
Frame rate on iPhones was the worst. The fix wasn't in the game logic but in shaders, transparency — and a grenade icon stored in Full HD.
- 2013
An engine built for a mechanic nobody needed
Steam Defense's engine was built around branching paths before the game design was settled. The players never used them; the graph stayed in the core and taxed everything.
- 2013
Shut up and write down the criticism
Independent testers tore our tutorial apart. We stopped defending it and rebuilt it.
- 2011–2021
First, something you can touch
A card game where my partners started with sign-up, Spell Defense, a Steam Defense MVP in ten days, and Roach Racing, where an investor video turned into a real prototype that grew into production.
- 2006
muo.lv: twelve years of running a game I didn't have the source code for
A private MuOnline server turned into a full product: market, economy, payments, my own anti-cheat, a packet-filtering proxy, ops automation and a bot that ran events.
- 2004
15 computers overnight: hard disks instead of Norton Ghost
We had to clone one machine onto 15, and Ghost over the network was too slow. So we swapped hard disks by hand, and at 9 a.m. on the first day of the semester we were still at it.
- 2003
I listened to the champion's lecture — and won with a 2 MB bitmask
A tournament where programs play each other, a lecture on minimax, and a precomputed table of 16 million positions.
- 2002
The bracket problem: why I always finished the practice tasks
At the 2002 Latvian olympiad I was the only one to score 100 on two problems. We had worked through almost the same one in training, and I was the only one who had taken it to the end.
- 2002
“Best algorithm ever”: binary search and an IOI gold
My coach kept insisting one algorithm was the best of all. At IOI 2002 one task needed it again and again — along one axis, then the other — and it gave me 100 points.
- 2002
Nobody took me to olympiads, then I won IOI gold
From sneaking into the school computer room to 18th place at the International Olympiad in Informatics, after a spring of solving past olympiads at home.
- 2002
Problem first, then the tool: how I taught programming
First lesson: 60 minutes of material in 40. Then a method, a show of hands to check understanding, and night-time LAN parties where olympiad kids, students, teachers and musicians met.
- 2002
The Golden Pen of the Riga City Council: the best 14 subjects
The rule was “120 points across 14 subjects plus olympiads”. I added up my school report and found something in the rules nobody had noticed. And the pen meant for your most important teacher did not go to the school.
- 2001
Doom RF: a birthday present that took two weeks — and a year
A 4-player hot-seat deathmatch in Pascal, a bank-switching trick to beat the 64 KB video window, and the reason I like starting projects on February 28.
- 2001
The teacher who couldn't close my game
The teacher pushes me off the computer and can't quit the game: neither Escape nor Ctrl+Alt+Del works. My friend and I had simply swapped the keyboards.
- 2000–2002
How we learned the new internet password
One teacher told us the old password; another said the new one was the old one with a few characters at the end.
- 2000
How I got into Progmeistars: the list that lied
A friend told me I wasn't on the list. A week later they called to ask why I hadn't come to the second round. Then came for instead of while, the fifth semester instead of the second, and the “elite” olympiad group.
- 2000
Space War 2K: one engine, three games — in the year 2000
A single executable that became a space shooter, a top-down tank game or a Worms clone depending on the folder you pointed it at — and a video player written in Pascal.
- 1999
Where “KindeX” comes from
A Pascal compiler error that turned into a nickname for the next 27 years.
- 1999
Space War: how two little ships taught me trigonometry
Reading someone else's source code, discovering sine and cosine on my own, and the first game people actually liked.
- 1998–2002
A stack of floppies and a hard disk under your arm
How we passed games and films to each other: first on floppies, in archives cut exactly to the size of a disk, then on hard disks carried round to a friend's place. And how Half-Life left a whole computer class speechless.
- 1998–2002
School computer science: the recycle bin, dot folders and the sixteenth computer
A “Windows” exam where a deleted file had to be restored through the recycle bin and nothing else, games hidden in dot folders, and a team olympiad in Ugāle that gave the school its sixteenth computer.
- 1998–2002
Stirting MS-DOS: my computer pranks
A mouse that moves one pixel every ten seconds, “Stirting MS-DOS” at boot, and a Windows that tells you right after power-on that you can switch the computer off.