CV

Disclaimer: I'm not really looking for a job.

Still, please reach out if you have an opportunity for me to work on something aligned with my hobby projects full time.

Show first:

Hobby projects

  • 2022-2026 — texmo: a search over language model architectures. Optimizing structure and metaparameters

    • Ongoing
    • I've trained around 1.2 million tiny language models (up to ~10k weights) — each for between 1 second and 5 minutes.
    • Best cross-entropy that you can get with w weights is 7.29 · w^(−0.109) bits/character
      • Log-log plot of the best achieved cross-entropy against the number of model weights: the Pareto frontier closely follows the power law 7.29 · w^(−0.109)
      • i.e. if you use 10000 weights model to compress English text, you'll achieve compression rate of 3x
      • this correspondence holds extremely precisely from 10 to 10000 weights
    • At ~100 weights you can saturate the model training in around 1 second, at ~1000 weights in around 10 seconds, at ~10k weights in around 1 minute
      • (judging by the fastest trained model within 1% loss from the absolute best at this weight limit)
    • Between 100 and 10000 weights Transformers are 2-6% behind the top models.
    • Most useful non-obvious block: Minimal gated unit (MGU or MGRU) — a variant of GRU
    • Artisanally coded by me up until 2025, vibe-coded since 2026
  • August 2026 — Ported JAX to Windows with CUDA

    • I'm using JAX for my other projects like texmo, and not having JAX work natively on Windows seemed like a huge gap, so I decided to close it.
    • This was mostly an exercise in setup and packaging, which the JAX team never went through
    • Around 2 days with Fable
  • July-August 2026 — Ported JAX to macOS with Metal

    • Ongoing
    • More involved than porting to Windows, since it requires custom adapter to MLX and Metal.
    • Currently fully correct, 3x faster than CPU, but 2x-3x slower than other established ML frameworks (Torch, llama.cpp). Iterating on the performance.
  • February-April 2026 — Ran a marathon in under 4 hours for the first and second time (Malta and Zurich marathons)

    • 4.5 years after I started running
  • April 2026 — Completed 100% achievements in the game Hollow Knight

    • I said these were hobby projects, right?
    • The final ending was really hard.
  • Summer 2025 — Slow History: an experimental daily history blog, in which every post covered the events of one month in history (in order).

    • I ended up covering 6 years: 1453-1458, writing 72 posts.
    • Despite heavily using AIs, every post took me about 3 hours to prepare, so I gave it up.
    • I learned so much, and would like to restart the blog if I find a way to automate it even more, or if I retire.
  • 2024-2025 — Directly approximate Kolmogorov complexity of small natural numbers

    • Idea/prototype stage — want to return to it at some point
    • People often talk about Kolmogorov complexity, but no one actually asks "what is the actual Kolmogorov complexity of X"
    • Take a bunch of different simple computation models (Turing Machines, register machines, Lambda-expressions). Tweak them to produce a single number output. Brute-force run a lot of instances in the order of increasing length. Measure how often they produce each number.
    • Hypotheses:
      • different machines will produce comparable Kolmogorov complexities
      • partial Kolmogorov complexities (for limited machine lengths) converge to the true Kolmogorov complexity
  • April 2023 — Ran a marathon for the first time

    • Very slowly
    • 1.5 years after I started running
  • 2021-2023 — AI Telegram bot via GPT-3 and GPT-4 API.

    • Published for some of my friends about a year before ChatGPT became available.
    • Implemented response streaming via repeatedly editing the bot message.
    • Made it possible to add a bot to a group with multiple users, being able to chat with all of them together.
  • 2022 — Playing with a Raspberry Pico microcontroller

    • Most usefully — a Rust template to run code on a Pico in one command and write debug logs back to the host via serial-over-USB
  • 2020 — A tiny Raytracer in Rust built to understand how raytracers work.

  • 2012-2020 — Learned to sing decently well

  • 2019-2020 — Factorio AI (mostly failed)

    • An attempt to implement an AI for the game Factorio as an addon.
    • Implemented in Lua
    • Turned out that even pathfinding for hard cases is super difficult. Simple or even not-so-simple A* Search doesn't cut it due to the size of the search space: each game square contains 256x256 location points.
  • December 2019 — beaver: searching for Busy Beaver programs in Brainfuck, i.e. the longest running programs with short code

    • Mostly written over the course of two long flights
    • >+[>++>+++[-<]>>] — this is the longest-running program of length 17, running for 9212 steps
  • May 2019 — A tiny Rust library to plot graphs of f(x,y)=0 equations

  • 2017-2019 — Exploring an idea of compressing small images by optimizing coefficients in representation RGB(x, y) = f1(x, y) + f2(x, y) + ...

    • Prompted by discussions with the members of Google Compression team
    • Looked promising at the first glance, but didn't achieve better quality than other compression methods.
  • 2015 — Played a bit with procedurally generated vector videos.

  • 2012ish-2017 — Implemented a generic game-playing engine using Monte-Carlo Tree Search

    • Started a few years before AlphaGo
    • The engine never played particularly well, since I didn't come up with the crucial idea of adding ML and reinforcement learning
  • ~2009 — Made a genetic algorithm-based optimizer for Brainfuck programs

    • It didn't go anywhere, struggling to even evolve a "Hello World" program
  • 2006 — Optimizing Brainfuck-to-C compiler

    • Unrolling loops, sometimes even two layers of loops.
  • 2003-2012 — Learned to dance historical European dances, 14-17th centuries.

    • No videos survived
  • 2000 — Won ACM ICPC programming world championship.

    • Was in the team with Nick Durov and Andrey Lopatin, who both were stronger than me (especially Nick), so this title is a bit fake. I don't think I ever was above 50th rank in the world in competitive programming.

Work

2007-2026 Google, then Google DeepMind

  • 2026 — migrating Gemini backend to the new agentic framework

    • If you say "Hey Google" and have two devices on the same account answer at the same time, that's on me
  • 2025 — a series of boring projects migrating users from Google Assistant to Gemini

  • 2024-2025 — reliability and metadata storage for Gemini eval infrastructure

  • 2023-2024 — Gemini "delegation" to Assistant: when you asked Gemini to perform an action that it couldn't do, like set an alarm, it fell back to Google Assistant

    • I designed and implemented the server-side
  • 2016-2022 — Suggestion chips in Google Assistant

    • (those bubbles with the possible next queries that you could see after the response)
  • 2015 — Prototype stage for Google Assistant

  • 2014-2015 — Unreleased sister project to Cloud Print

  • 2011-2013 — Various projects in ChromeOS

    • I wrote the default plain text editor Text.app that I think is still included in ChromeOS by default
  • approximately 2008-2010 — various features in Google Toolbar for Firefox

2004-2006 Ramax

  • I single-handedly made a new logistics optimization system for Russian Post
    • Under the hood it reduced the route optimization to mixed-integer linear programming problem and ran it through a solver.
    • The optimized routes ensured that packages would be delivered 1-2 days faster
    • However the customers were more interested in spending the funds than in actually deploying the system, so it remained on the shelf.

1998-2004 Education: Mathematical Faculty of St Petersburg State University

Average grade: 4.71 (out of 5.0)

I specialized in Mathematical Logic, Discrete Mathematics and skipping as many lectures as I could.

My academic advisor was Yuri Matiyasevich (of Hilbert's tenth problem fame) to whom I still feel guilty because I promised him that I'd be doing math, but soon ended up switching to programming.