Ilya Nixan

Ilya Nixan

Founder & Lead

Founder & Lead Developer

Flutter architecture and leading delivery teams

Ilya founded Nerdy Production and leads its engineering. He has been building software since 2010 and shipping production Flutter since 2018.

Before that he was CTO of QIWI, one of Russia's largest payment platforms, where he ran roughly 12 engineering teams spanning web products down to card processing, scope, and contactless payments — including building contactless card payments on Android via over ISO/IEC 14443, with EMV Contactless (Visa PayWave) on top.

He was also a principal developer at Yandex, where he worked on Yandex.Auto — taking native Android deep into the vehicle, with heavy CAN-bus integration through a custom CAN shield — and a principal at Evotor, whose point-of-sale devices run on a forked , giving him a low-level view of Android most app developers never touch.

Today he leads delivery on the agency's flagship apps — from the chart-heavy fintech UI of ExtraETF to the fully custom design system of Arcana. He writes most of the essays on this blog and maintains the agency's open-source work, including the dxpdf DOCX-to-PDF engine.

He works across Flutter, native iOS and Android, Go, Rust, TypeScript, Kotlin, Kubernetes, and Docker, with a focus on app architecture, cross-platform delivery, and building teams that ship.

Recent posts

Orosu: Why We Replaced SSH Deploy Keys With Signed WebSocket Jobs
DevOps

Orosu: Why We Replaced SSH Deploy Keys With Signed WebSocket Jobs

Every CI pipeline eventually has to get a build onto a server, and most teams solve it with SSH keys in secrets and a copy-pasted rsync script. We built Orosu instead — an open-source Rust tool that turns deployment into an authenticated, bounded WebSocket job instead of an open shell. Here is the problem it fixes, how it works, and where its edges are.

August 8, 2026
How AI Agents Struggle with Flutter: 7 Gaps Experience Still Closes
Software Engineering

How AI Agents Struggle with Flutter: 7 Gaps Experience Still Closes

We let agents write a large share of our Flutter code, and we review a lot of Flutter written by agents nobody supervised. The difference is not typing speed — it is seven decisions an unsupervised agent gets wrong every single time: it recomputes derived state instead of keeping one source of truth, ships no tests or benchmarks, wires complex async into if-pyramids instead of streams, treats design tokens as constants instead of a Theme, invents a new UX vocabulary on every screen, concatenates strings where ICU is required, and simplifies uniformly instead of knowing where complexity has to stay. Here is what each one looks like in Dart, why the agent lands there, and what we do instead.

July 26, 2026