Projects
Things I build: agents that do real work, and tools that make math visible. Numbers checked on October 9, 2026.
- manim-web
- Coding agents at Zencoder
- iPhone control for Claude Code
- ML competitions
- Teaching
- Now building
manim-web
Open source, MIT. Active since January 2026.
Manim is the Python engine behind 3Blue1Brown's math videos. manim-web is a port to TypeScript. You write a scene in the same style, and it plays in the browser. No Python, no render step.
It covers geometry, LaTeX, graphs and axes, 3D objects with orbit controls, and the usual animations: Create, Transform, FadeIn, Write. Objects can be draggable and clickable. You can export a scene to GIF or video. There are React and Vue components, and a script that converts Python Manim scenes to TypeScript.
Why: Manim gives you a video file. I wanted the same scenes live on a web page, where the reader can touch them.
- Stack. TypeScript, Three.js, KaTeX and MathJax, Vite, Vitest, Playwright.
- GitHub. 484 stars, 31 forks, 7 human contributors.
- npm. 82,191 downloads in the last 12 months, 8,691 in the last 30 days. First published February 11, 2026.
- Releases. 27 on GitHub. Latest is v0.3.24, July 13, 2026.
- Hacker News. Show HN on February 25, 2026: 140 points, 25 comments.
GitHub · Examples and docs · npm · Show HN thread · How it was built
Coding agents at Zencoder
My job, since 2024.
I build coding agents at Zencoder. The agent takes a real issue in a real repo and writes the patch. Day to day that means orchestration, evals, and fixing the long tail of failures.
The best known result is SWE-bench Verified. In May 2025 we ran four agents on each task. Each agent got one try, and they used different models. A critic then picked the best patch. Alone, each agent solved 60.8% to 64.6% of tasks. Together they solved 70%, #1 at the time.
- Result. 70% on SWE-bench Verified, May 2025.
- Setup. 4 agents, one try each, a critic selects the patch.
iPhone control for Claude Code
Working. Private for now.
A Claude Code skill that uses my iPhone through the macOS iPhone Mirroring window. Some tasks only exist inside a phone app, and this lets the agent do them.
The loop is simple. Take a screenshot of the mirroring window. The agent reads it and picks a point. Tap there, wait a second, take a new screenshot to check. It can also swipe, type, press keys, go home, and open the app switcher or Spotlight. Screenshots work even when other windows cover the phone.
- Stack. Bash, macOS screencapture, cliclick, a small Swift helper that finds the window.
- Needs. macOS 15 or newer on Apple Silicon, with iPhone Mirroring connected.
ML competitions
Since 2018.
My first public competition repo is from Sberbank Data Science Journey 2018. Since then I have entered competitions on Kaggle and on smaller platforms, and I organized some through ODS.ai, with 1000+ participants.
Teaching
MSU, 2021 to May 2026.
I taught deep learning at Lomonosov Moscow State University from 2021 to May 2026. My lecture notes for the MSU course on robust ML models are public, from 2022 to 2025. The 2025 set covers CV, NLP, tabular data, training, frontier model training, and LLM agents.
I also keep a Math and ML cheatsheet, a reference for the concepts I use most.
Now building
Both are in progress and not public yet.
- Ferry. An iOS terminal for watching coding agents from my phone. Tabs, up to three split panes, a key bar with esc, tab, arrows and control keys, and a dot on each tab that turns green when an agent finishes. Swift.
- Unison. An iOS piano tuner. It measures the beat rate between the strings of one note and guides each string until the beat is gone. 88 keys, 8 temperaments, 113 unit tests on the DSP core. Swift and SwiftUI.
Research lives on its own page: publications.