Motion Artist / Video Editor / Web & Bot Developer
I move objects with intention — high-impact 2D motion graphics built on engineering precision. That same engineering ships Telegram bots and bespoke landing pages.
These are live — every card opens the real thing in a new tab. Telegram bots and bespoke, single-file landing pages, hand-built and shipped.
I build high-end 2D motion graphics that hold attention and drive results — a workflow built on efficiency and advanced After Effects technique, from first keyframe to final grade.
Explainer videos, promo content and brand storytelling.
Lightweight, high-performance animations for web and apps.
Bringing brands and digital interfaces to life.
Editing, colour grading and sound design in Premiere Pro.
Advanced AE expressions, scripting and rigging.
Lead capture, guided forms, notifications — data straight to Sheets or your CRM.
Bespoke one-page sites — hand-built, fast, no bloated framework or page-builder.
Webhooks, proxies and edge functions that connect the pieces and run themselves.
My journey began in software engineering, which shaped a logical approach to design. I lean on expressions and scripts to build efficient, scalable and sophisticated animation systems.
What sets me apart is the combination of creative vision and a strong technical base — a Master's in Engineering and a development background. I don't just move objects; I approach every project with precision and logic.
Today that engineering ships as Telegram bots and bespoke landing pages — switch to the Build track under Selected Work to see them live.
I believe in clear communication, meeting deadlines, and delivering a result that exceeds expectations.
// damped spring — the soul of organic motion
const k = 0.12; // stiffness → snappiness
const d = 0.78; // damping → how it settles
function step(p, tx, ty){
// pull toward target, bleed off velocity
p.vx = (p.vx + (tx - p.x) * k) * d;
p.vy = (p.vy + (ty - p.y) * k) * d;
p.x += p.vx;
p.y += p.vy;
}
// a chain that whips with follow-through:
// node 0 chases the target (your cursor),
// every node after chases the one ahead of it.
step(node[0], target.x, target.y);
for (let i = 1; i < N; i++)
step(node[i], node[i-1].x, node[i-1].y);
// overshoot, then settle — that's weight,
// secondary motion, and life. Same math the
// whole site moves on. →
Whether you're a startup that needs an explainer video or a brand that needs social-media ads — I'm here to help you stand out.