Timeline

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.

  1. 2025+ AI-orchestrated delivery
  2. 2026

    TaleCheck

    Static analysis for fiction, built solo with Claude Code and parallel agents: 1,446 commits in under three months, live with paid users.

    TypeScriptNestJSClaude CodeAnthropic API
    TaleCheckTaleCheck
  3. 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.

    Procedural terrain: a river, hills and mountains.

  4. 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.

    The grid: each cell ahead of the price line has its own multiplier.

  5. 2017+ Web3 & real-time platforms
  6. 2022–

    Fractional CTO

    Technical partner to founders: fixed-scope builds, architecture reviews and due diligence.

  7. 2021

    Generative NFT trees that grow 📷 2

    For a Web3 game I made trees that grow on-chain. Each NFT gets a 256-bit genome from Chainlink VRF, and my decoder turns it into the tree’s character: branch length and thickness, angles, sagging and curvature, the pull of gravity, crown density. Then a recursive algorithm draws the tree into a voxel grid, block by block in the style of Minecraft, with 3D simplex noise for the shape of the crown and the bends of the branches. Every growth step, up to ten of them, is a transaction, and every branch has its own seed, so the tree grows rather than being redrawn: a twig from the previous step becomes a branch and splits further. The world around it also gets into the picture: the crown thickens or thins with the token price between steps (from a Chainlink price feed), the colour of the bark comes from the owner’s address, the sky changes over an hourly day–night cycle, lamps glow in the leaves, and owners who had just voted for the project got golden or pink crowns. At first the pictures came from a voxel ray tracer that a studio introduced by my partners offered: I sent it the grid over an agreed protocol, it queued the job, and I polled for the result. But it only drew cubes, it was paid, and I depended on someone else’s servers. So I switched to Blender: each model is exported to GLTF and rendered on the server in Blender Cycles by a Python script, and now I could add any objects, ground plates, cameras and lights, on a mature open-source engine. A metadata service serves the picture of every growth step. About a month of work in October 2021, on Polygon and BNB Chain. The renders below I made again in 2026 from the original code, with Blender 2.93 and the original scene.

    TypeScriptNode.jsBlenderChainlink
    Twelve random genomes, each at its last growth step.

    Twelve random genomes, each at its last growth step.

  8. 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
    Roach Racing Club
  9. 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
    Dice Chess
  10. 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
    Blockchain CutiesBlockchain Cuties
  11. 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.

    Decrypted Kitties, Google Play, December 2017.

  12. 2010+ Unity & a 35-person studio
  13. 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.

    Unity
    Zebrainy ABCs: the world of the letter A.

    Zebrainy ABCs: the world of the letter A.

  14. 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#Blender
    Me presenting at a MadSword workshop, December 2015.

    Me presenting at a MadSword workshop, December 2015.

  15. 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
  16. 2013

    Physics club for preschoolers

    A volunteer physics club in Riga for children of preschool age. Friends started it for their own kids, then for the kids of acquaintances, and I joined as an instructor; the children paid a token fee, and I took no money. We launched rockets on compressed air and CO₂, played with dry ice, density and toy cars. The video is one of the rocket experiments.

  17. 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
    Global Game Jam: Tankraft
  18. 2012–2018

    MadSword 📷 7

    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
    MadSword
  19. 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
  20. 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.

  21. 2011

    Unity: Bastions

    First Unity game: two towers, build yours and shell the opponent’s with cannons. Planned as multiplayer.

    UnityC#
  22. 2004+ C++, OpenGL & own engines
  23. 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
    Labyrinth
  24. 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
  25. 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
    Steel Engine
  26. 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.

    muo.lv in the Season 6 years: character rankings and who is online.

  27. 2005

    ULTRA ParaShop: my own CMS 📷 3

    An online shop for a paragliding club — wings, harnesses, hang gliders, microlights — on my own engine over PHP 5 and PostgreSQL rather than a ready-made CMS. Every page is a tree stored in the database: location, blocks (left, centre, right), groups, pagelets. Each piece is drawn by a template that is also stored in the database and edited in the admin, in my own template language with variables, conditions, loops and nested components. The admin edits the live page in place: every block and group gets a toolbar to add, move, hide or delete. Products with colours and model tables, a basket with orders sent by e-mail, comments, visit and sales statistics, three languages (RU, EN, LV), images kept in the database, and backup and restore from the admin with the dump sent by e-mail. About 10,000 lines of PHP. In 2026 I brought it back up in Docker from the November 2005 backup to take these screenshots.

    PHPPostgreSQLJavaScript
    The shop’s home page in Russian, restored from the 2005 backup.

    The shop’s home page in Russian, restored from the 2005 backup.

  28. 2005

    Xray

    Commissioned demo on my engine: X-rays passing through a semi-transparent bone.

    C++OpenGL
  29. 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.

    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.

  30. 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
  31. 1994+ BASIC, Pascal & olympiads
  32. 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.

    Configuring a Linux 2.6 kernel for a school machine, October 2005.

  33. 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
  34. 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
  35. 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
  36. 2003

    My own PHP course

    Wrote my own web-programming course in PHP for Progmeistars and taught it.

    PHPMySQL
  37. 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. My method: the problem first, then the tool. At night I ran LAN parties that brought together olympiad kids, university groups, teachers and musicians.

    Progmeistars, 2006: a student lost a bet to his teacher and paid up on the whiteboard.

    Progmeistars, 2006: a student lost a bet to his teacher and paid up on the whiteboard.

  38. 2002

    Half-Life and Counter-Strike maps 📷 10

    Maps for Counter-Strike, built from years of playing it: we didn’t like running for half a minute to the enemy only to die. cs_mini is a small map with many routes — terrorists start in a house under siege, counter-terrorists can go round it from two sides, down into the sewers or up to the roof three ways. ge_roy is even smaller, for 4 on 4.

    Valve Hammer Editor
  39. 2002

    kindex.times.lv — my first website 📷 2

    My first site, on the free times.lv hosting, written by hand in HTML and JavaScript: an intro, about me, a CV, the story of my nickname, photos, my Winamp playlist, links and a guestbook. The main page was progs, my programs to download: Doom RF (“fits on one floppy”), Space War 2K, F(x) and two Counter-Strike maps. The demos I wrote that year invited people to it in their scrolling text. Also from that time, in Delphi: Ticker, a metronome for my guitar practice. The screenshots are of the December 2004 version.

    HTMLJavaScriptDelphi
    kindex.times.lv, the version of December 2004.

    kindex.times.lv, the version of December 2004.

  40. 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).

    Our University of Latvia team: Alexander Belov, Sergey Kozlovich and me (right).

  41. 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. In the video below is our faculty, modelled in my own engine, Steel Engine, with textures from photos I took there myself.

    C++Numerical methods
    At the whiteboard: the Fourier method, University of Latvia.

    At the whiteboard: the Fourier method, University of Latvia.

  42. 2002

    IOI gold medal

    From algorithm books and the Progmeistars sponsored elite group to 2nd place at the Latvian olympiad and bronze at the Baltic one, then gold at the International Olympiad in Informatics in Yongin, Korea — 18th place overall, one of 23 gold medals (listed as Andrejs Ivanovs, Latvia). At the Latvian olympiad I was the only one to score 100 on two problems, one of them “Operācija @”, choosing where to put brackets in a 250-digit expression with a non-associative operation, which earned the Progmeistars special prize for quality of solutions. For the olympiads I received awards from the Government of Latvia and the Riga City Council.

    AlgorithmsPascal
    IOI gold medal
  43. 2001

    Pinball: vector physics 📷 2

    I wanted a third Space War without its collision problems, so I started on vector physics. Each ball is a rotating polygon, walls are arbitrary segments, and the step from the old position to the new one is intersected with every wall and nearby ball, so a fast ball can’t tunnel through. Penetration is pushed out along a mass-weighted normal, a bounce keeps 98% of the speed and adds spin, and balls can attract each other like planets. Free Pascal and a grid over the world took it from about 39 to over 200 frames per second. This is where the road to my physics coursework, Steel Engine and the master’s thesis began.

    Free PascalPhysics
    Pinball, September 2001: balls piling up, the line in each shows its rotation.

    Pinball, September 2001: balls piling up, the line in each shows its rotation.

  44. 2000–2003

    Lamer test

    A humour test that tells you who you are with computers: a dummy, a lamer, a user, a hacker, a programmer or a gamer. Every answer adds points to each of the six types, and the types closest to the top score win. First as a DOS program in December 2000, then in 2003 as a website in PHP and MySQL with registration by nickname and statistics of answers.

    Turbo PascalPHPMySQL
  45. 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 PascalSDL2
    Doom RF
  46. 2000

    Money & Power

    A strategy game in the spirit of Heroes of Might and Magic, mixing turn-based and real-time battles: taxes give money, the army gives power, spells give magic, and in the design document, dated July 2000, there were already unit stats, a morale formula and skills such as telepathy and raising the dead. The team was IVAvision: Sergey Trasko and I wrote the code, my friend Pavel Burakov drew the art. The game itself was never finished, but the pieces survived.

    Turbo PascalVGA
  47. 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
  48. 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
  49. 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
  50. 1998–2002

    Demoscene

    Small programs that just draw something beautiful, from points on a sphere in 1998 to a fire intro with scrolling text in 2002. Most are a few dozen lines that write straight into video memory.

    PascalFree PascalVGA
    Demoscene
  51. 1998–2002

    DiVision projects

    Everything that was not a game. Our school ran a programming contest every winter, and for a few years it was my main reason to write code. In January 1998 I brought four programs and got the prize for the most original one; for the 1999 contest I had ten; in 2001 I took first place in three categories and the audience award. Most of all I made what I needed myself: a file manager, a shell, a vocabulary trainer, a metronome.

    Turbo PascalFree PascalDelphi
    DiVision projects
  52. 1998–2001

    DiVision games

    The smaller games I made between the big ones (Tank, Space War, Lamer-Killer, Doom RF), in Turbo Pascal and later Free Pascal. Most of them were written for the school programming contest, and all of them still run in DOSBox.

    Turbo PascalBGIText mode
    DiVision games
  53. 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
  54. 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
  55. 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
  56. 1996

    Pascal

    Moved to Pascal — the language of every olympiad and my first real games. In class we almost competed over who had written more programs: everyone carried their own floppy disk, “I’ve got a hundred programs” — “and I’ve got a hundred and twenty”. The programs were very simple, like entering two numbers and printing their sum, but every lesson added something. After that I wanted to make a big game of my own, and started Tank.

    Pascal
  57. 1994

    First programs in BASIC

    Started programming in BASIC on a Soviet BK-0010 home computer, then QBasic on a PC.

    BASICBK-0010QBasic