From BASIC to AI agents
Every five years or so I relearned the craft: Pascal, C++ and OpenGL, Unity, Solidity, TypeScript, and now AI-orchestrated delivery. Here is what I built along the way.
- 1994+ BASIC, Pascal & olympiads
- 1994
First programs in BASIC
Started programming in BASIC on a Soviet BK-0010 home computer, then QBasic on a PC.
BASICBK-0010QBasic - 1996
- 1997
Super Amik 📷 9
Designed a platformer on paper, level by level in a school notebook: game design before there was a machine to build it on.
Paper - 1998
Tank — my first finished product
My first big program taken from idea to a finished game: a tank battle in Pascal, drawn in text mode on an 80×50 grid, with levels, weapons, a menu and a title screen. About a thousand lines, grown from March to May 1998 through version 1.60; that autumn followed Tank 2 with graphics.
Turbo PascalText mode - 1999
Space War
My first good game: two ships in a duel, rotation by sine and cosine worked out on my own, ships that deform on ramming, a vector ship editor, a dozen weapons, missions and my own BMP/WAV loaders.
PascalBGIVector graphics - 1998–2001
- 2000
Lamer-Killer: 3D with no engine
A top-down shooter with a classmate that turned into my own software 3D renderer — no engine, no GPU, every pixel computed on the CPU with a projection formula I derived myself, years before I knew how Doom did it. The level editor stored the map as a walkability grid, and an optimiser merged long walls into single polygons.
PascalSoftware rendering - 2000
Space War 2K: one engine, three games 📷 4
Inspired by how Half-Life mods worked, I built one engine and one executable that ran three different games — ship dogfights, top-down tanks in the spirit of GTA, and a Worms-like artillery game — just by swapping resource folders and config rules. The main menu played a video rendered in 3ds Max, through my own delta-frame format and BMP loader, in Pascal, which had no video support at all.
PascalEngineVideo codec - 2000
Russian Pascal
A translator that let you write Pascal in Russian — a way in for those who didn’t know English. Keywords came from an editable dictionary, so any language would do; Russian identifiers were transliterated automatically; << and >> stood for begin and end, and there were inline macros. It plugged into the Borland Pascal IDE as a Tools hotkey: Shift+F9 translated the file, compiled it with Borland’s own compiler and ran it. A small resident program highlighted the Russian keywords right in the Borland editor.
PascalBorland Pascal - 2001
Doom RF 📷 2
Made in two weeks as a birthday present for a classmate, then polished for a year: 4 players on one computer plus 8 waypoint bots, a level editor, and a bank-switching trick to draw 640×480 past the 64 KB video window. In 2026 ported to 64-bit and SDL2, with sound, as a proper release.
Borland PascalFree PascalSDL2Download for Windows / Linux ↗
- 2002
IOI gold medal
From algorithm books and the Progmeistars sponsored elite group to 2nd place at the Latvian olympiad and the Baltic olympiad, then gold at the International Olympiad in Informatics in Yongin, Korea — 18th place overall, one of 23 gold medals (listed as Andrejs Ivanovs, Latvia).
AlgorithmsPascal
- 2002–2008
University of Latvia 📷 3
Computer Science at the University of Latvia, bachelor’s and then master’s degree. The bachelor’s thesis, “Modelling mechanical motion in computer graphics” on my Steel Engine, made the top ten of 125 theses in e-Dimensija 2006, a Microsoft Latvia and Ministry of Economics contest.
C++Numerical methods
At the whiteboard: the Fourier method, University of Latvia.
- 2002–2006
ACM ICPC
Five seasons of the ACM International Collegiate Programming Contest for the University of Latvia. In 2002, as first-year students — Alexander Belov, Sergey Kozlovich and me, all three from IOI 2002 — we came 1st in the university selection, 6th at the quarterfinal in Minsk and at the Northeastern Europe semifinal in St Petersburg became the best team from the Baltic States. It was thanks to that first-year result that the university was allowed to send four teams to the next quarterfinal instead of two. Later, as team BUGS-XP and then BUGS.NET, we took 3rd place at the 2004 quarterfinal in Minsk and 5th at the 2005 one.
AlgorithmsC++
Our University of Latvia team: Alexander Belov, Sergey Kozlovich and me (right).
- 2002
Maps, demos and F(x) 📷 10
Half-Life / Counter-Strike maps, small programs that render pretty graphics, and F(x) — a function plotter with zoom and scroll, written in Delphi.
Delphi - 2002–2011
Teaching at Progmeistars
Nine years teaching programming to groups of students at Latvia’s largest children’s programming school; built a new curriculum.
Progmeistars, 2006: a student lost a bet to his teacher and paid up on the whiteboard.
- 2003
My own PHP course
Wrote my own web-programming course in PHP for Progmeistars and taught it.
PHPMySQL - 2003
IRC bouncer
IRCdaemon: an IRC proxy and bouncer in C++ on bare WinSock, with no networking libraries. You connected your IRC client to it with a password; when you left, it stayed in your channels with an away message. Several users, each with their own nick, server and channels, admin rights, and a debug mode that logged all traffic.
C++Borland C++ BuilderWinSockIRC - 2003
Tournament of Computer Programs
Won the 12th Tournament of Computer Programs at Progmeistars (as Andrey Ivanov), where programs play a game against each other. The trick was a precomputed table of 16 million positions packed into 2 MB.
PascalAlgorithms - 2003–2004
Testing Suite
With Sergey Kozlovich and Alexander Belov, my ACM teammates, we built a system for running programming olympiads. Sergey wrote the testing kernel: a queue of submissions, participants’ programs run under a separate user in a chroot with limits on time, memory and child processes, C++ and Free Pascal compilers. Alexander wrote the checker plugins. I built the web part in PHP and MySQL: logins, submissions, results, questions to the jury, and per-olympiad settings such as when participants and guests may see the standings.
PHPMySQLC++Linux - 2003–2007
Sysadmin at Progmeistars 📷 2
Alongside teaching, I was the school’s system administrator: set up and ran its Linux servers on Gentoo and kept the students’ classroom computers working, down to building my own kernels.
LinuxGentooNetworking
Configuring a Linux 2.6 kernel for a school machine, October 2005.
- 2004+ C++, OpenGL & own engines
- 2004
C++ and OpenGL: Chess 3D 📷 2
Moved to C++ (the STL made olympiad work far easier) and to full 3D. First commissioned project: a 3D chess game with bump mapping and reflection maps.
C++OpenGL - 2004–2006
Physics 2D
Coursework that grew into the 3D physics of my bachelor’s thesis on Steel Engine: an own physics engine and a full game on top of it, inspired by Elasto Mania and Half-Life 2. The 2005 coursework, “Collision Detection”, supervised by Prof. Paulis Ķikusts, set the goal: a hundred rigid polygon bodies in real time that never pass through each other, even at a low frame rate. It surveyed how games had done it — bounding boxes in Doom and Mario, grid hashing in Warcraft, polygons in Quake and Havok — and added methods of my own: the cylinder method, which treats a moving, rotating body in 2D plus time as a twisted cylinder so a collision inside a time step is found exactly, a sequential collision algorithm, and the moment of inertia of an arbitrary polygon.
C++STLOpenGL
From the coursework: a star that moves and rotates, drawn in space plus time, becomes a twisted cylinder. Collision detection becomes finding where such cylinders intersect.
- 2005
- 2005–2018
muo.lv
A private MuOnline server I co-founded and programmed: 300–400 players online within weeks of the 2006 launch. I built everything around the game — a PHP site with a player market, rankings, auctions, item trade and quests, SMS payments, a credit economy, a VIP server, public ban lists — plus my own anti-cheat, server tunnel, launcher and auto-updater, and a bot that ran in-game events.
PHPSQL
muo.lv in the Season 6 years: character rankings and who is online.
- 2006
Steel Engine 📷 5
An own C++ engine: scenes defined in config, prefabs with overridable parameters — the idea Unity later made mainstream. It was also my bachelor’s thesis, “Modelling mechanical motion in computer graphics” (University of Latvia, 2006, supervisor Dr. Paulis Ķikusts): separate graphics and physics engines, where an object only describes how it looks and the engine decides how to draw it; and a rigid-body physics model written from scratch in 3D, with six degrees of freedom — the cylinder method and the sequential collision algorithm carried over from my 2D coursework, scripted trajectories alongside free motion, collisions resolved by conservation of momentum and energy, about a hundred bodies in real time. The reviewer noted that the motion in the demos really obeys the laws of physics, which many graphics engines of the time did not. Source is public.
C++OpenGL
- 2006–2012
whiteCryption
Software architect for white-box cryptography and code protection (RSA, ECC, SHA, AES). Designed the v5 architecture, still in production ~15 years later, now inside Zimperium.
C++Cryptography - 2008
Labyrinth 📷 6
My master’s thesis at the University of Latvia (2008, supervisor Doc. Kārlis Freivalds): Steel Engine, grown to about 30,000 lines of C++, and Labyrinth, a networked race through a generated maze, as its demo. I founded and led our DiVision team and wrote everything except sound, which was by Andrejs Movļaiko. Highlights: per-pixel lighting in GLSL, where every combination of light count and material flags compiles its own shader once and is then cached; shadow volumes with Carmack’s reverse, chosen over shadow mapping for exact shadows; a visibility algorithm for mazes that made a 100×100 labyrinth playable instead of 14×14, because the number of drawn objects no longer depends on the maze size; and a network protocol on top of the enet library with a sync method of my own, penalty synchronization — bodies of different players may briefly overlap, and forces push them apart.
C++OpenGLGLSLNetworking
- 2010+ Unity & a 35-person studio
- 2011
Unity: Bastions
First Unity game: two towers, build yours and shell the opponent’s with cannons. Planned as multiplayer.
UnityC# - 2011
Nunnery
A two-day game jam at a London hackerspace, full of soldering irons, robots and servers. I went at the invitation of Igor, a university acquaintance who had worked at Sony and now made 2D games on his own cross-platform engine, IGE, aimed mostly at consoles like the PSP. Our team made two games; I was the main programmer of Get Me to a Nunnery, a platformer about a jumping nun. I picked IGE over Unity to learn the engine for future games, and spent two more days at home refactoring.
- 2012
MyCountry at innoWate
Two months at a Game Insight studio on MyCountry, a city builder with 5M+ installs on Google Play: bug fixes and bringing back old mechanics.
C++Mobile - 2012–2018
MadSword 📷 4
Co-founded a game studio and grew it to 35 people. Started Steam Defense at a kitchen table, raised an investor, then moved to contract games for publishers: one reusable Unity engine with a level editor and shared server shipped 100+ titles and reskins and thousands of levels. 160+ games and 20M+ downloads in total, largely through a Dutch publisher. VR titles too.
UnityC#Java
- 2013
Global Game Jam: Tankraft
A networked multiplayer tank battle built in one weekend with a teammate: own server or a dedicated one, two weapons, physics-driven tanks. Shipped for Windows, macOS, Linux and the browser.
UnityC#Networking
- 2013
Steam Defense launch
MadSword’s first own release, on Kongregate, VK and Odnoklassniki: own scenario scripting, skirmish and PvP AI, and BotWars — a night-long stress test of tens of thousands of units that made the game crash-free in three weeks.
UnityC#Networking
- 2015–2016
Free game-dev workshops 📷 2
We opened the MadSword office to the local community for free evening workshops: how games are made in Unity and Blender, and the nuances we had learned in production — from rigging characters to building anti-cheat in Unity C#. Recordings are on YouTube.
UnityC#BlenderGameDev Workshops on YouTube ↗
Me presenting at a MadSword workshop, December 2015.
- 2015–2020
Zebrainy 📷 3
Co-owner and technical director of an educational games company for young children. One of its apps, Zebrainy ABCs, teaches the alphabet: a child drags glowing spheres into the shape of a letter, then explores an illustrated world of words that start with it — 26 letters, 26 worlds.
UnityZebrainy ABCs review on GameGrin (2017) ↗
Zebrainy ABCs: the world of the letter A.
- 2017+ Web3 & real-time platforms
- 2017
Decrypted Kitties 📷 4
A CryptoKitties-style game built in about a week and published on Google Play on 31 December 2017 as “Crypto Kitties Decrypted Simulator” — the first step into crypto games. Collect, breed and sell cats with their own genes, no wallet or ether needed.
Unity
Decrypted Kitties, Google Play, December 2017.
- 2017–2021
Blockchain Cuties
Wrote Ethereum contracts for others, then co-founded Cuties and launched it in four months (April 2018), before ERC-721 was final. Characters and breeding on-chain, items and battles on the server with one-time signatures verified by contracts. Ethereum, then EOS, TRON, NEO and Polygon — a multi-chain design later extended to 7. #1 on DappRadar; 2021: governance token contracts and IDO.
SolidityNode.jsEOSTRON
- 2020–2024
Dice Chess
Real-time chess with a dice variant, owned from idea to launch: spec, architecture, own test system for chess positions; load-tested for 20,000 concurrent players.
JavaVueTypeScriptMicroservices
- 2021–
Roach Racing Club 📷 9
Web3 racing game from scratch, steered by live crypto trading: smart contracts, tokenomics, a custom WebGL engine for live races of 10, a race model balanced in my own simulator, and a microservice backend. On the web and in Telegram.
SolidityThree.jsTypeScript
- 2022–
Fractional CTO
Technical partner to founders: fixed-scope builds, architecture reviews and due diligence.
- 2025+ AI-orchestrated delivery
- 2025–2026
Griddle Fun 📷 4
A game on a live crypto chart: you tap the grid cell you think the price will hit, and win at that cell’s multiplier. The hard part was the maths of pricing every cell. I did it together with a mathematician: I set the task, tested his results and sent back what was off, while also building the game itself. The simulation testing was mine — bots playing different strategies, greedy and otherwise, against the payouts — until the odds held up. A run over 604,800 seconds of prices (one week) came out almost exactly at break-even, ROI about 0.4%, as designed.
The grid: each cell ahead of the price line has its own multiplier.
- 2026
Voxel world in a week 📷 4
A Minecraft-style voxel world in Unity, built in about a week in February 2026 with Claude Code: procedural terrain with mountains, rivers and forests, a world split into chunks, and editing with a block brush — down to planting trees.
UnityC#Claude Code
Procedural terrain: a river, hills and mountains.
- 2026
TaleCheck
Static analysis for fiction, built solo with Claude Code and parallel agents: ~2,300 commits in under three months, live with paid users.
TypeScriptNestJSClaude CodeAnthropic API