RU

Work

Engineering projects and product platforms I build and stand behind. Each case: problem → solution → result.

01

Feature-toggle platform

Feature management at bank scale: rollouts, A/B and instant rollback for dozens of teams.

if ( flag )
Platform · Unleash
Problem

Dozens of product teams shipped features “as is”: release meant deploy, rollback meant a night-time hotfix and on-call, and feature state was smeared across configs and people’s heads. There was no single way to roll functionality out and off safely.

Solution

A centralised platform on Unleash: a single flag store, gradual-rollout and targeting strategies, sticky sessions, change audit and CI/CD integration. Plus an admin interface with role-based access and monitoring — transparent for engineers and managers alike.

Result
−25% production incidents: roll a feature back with a switch, no redeploy.
−30% average time to ship a new feature.
Feature-toggle practice adopted by dozens of teams across the bank.
TypeScriptNode.jsReactUnleashPostgreSQLCI/CD
02

A/B experimentation platform

Product-experiment infrastructure on top of feature flags — decisions on data, not opinions.

A / B
Experiments · metrics
Problem

Product hypotheses were tested by eye: there was no single way to split traffic, collect metrics reliably and read the result honestly — all without a release per experiment.

Solution

Deterministic user bucketing (identifier hashed with a per-experiment salt, sticky sessions), exposure logging, a “variant ↔ metric” link, guardrail metrics and statistical interpretation instead of peeking at charts.

Result
Product decisions are made on data, not on who argues loudest.
+15% user satisfaction (by internal metrics).
Hypotheses tested with no releases — a noticeably faster experiment loop.
TypeScriptNode.jsUnleashAnalyticsStatistics
03

Pac-Man

Playable

A classic arcade built from scratch on React and Canvas.

requestAnimationFrame · Canvas
Problem

Build a full arcade with no game engine: game loop, enemy AI, collisions and smooth movement — using only React, TypeScript and the Canvas API.

Solution

A requestAnimationFrame loop with a fixed simulation step; state kept in a ref to avoid per-frame re-renders; four ghosts with distinct chase strategies; keyboard, swipe and on-screen controls.

Result
Playable right in the browser — no loading, no external dependencies.
A steady 60 FPS by separating simulation from rendering.
High score persists locally between sessions.
ReactTypeScriptCanvasViteReduxrequestAnimationFrame

Open to collaboration

Available for interesting projects and hard engineering problems. If you have an idea or an offer — reach out any way that suits you.