Hi there 👋

My name is Max. I’m a software engineer and a writer. I love building things and sharing my knowledge with others.
Choosing Complexity Over Simplicity in Design Decisions

Choosing Complexity Over Simplicity in Design Decisions

Let’s immediately shatter the paradoxical tension: Has someone ever won an award for most-puritanical KISS implementation? Probably not. But who didn’t win an award for a robot claw that read like a mechanical origami puzzle? That 2011 FRC vacuum-claw monstrosity sitting in a scrapyard somewhere probably did. Take it from a survivor of the W*>Simpleσσα wars - sometimes you have to layer the onions. This article will show you when to proudly wave the Complexity Flag, how to deploy it effectively, and which sacrifices it demands… before your users stage a revolution....

August 2, 2025 · 4 min · 833 words · Maxim Zhirnov
The Case for Using Unconventional Programming Techniques

The Case for Using Unconventional Programming Techniques

Picture this: you’re stuck in a code review that feels like Groundhog Day. The same old patterns, the same predictable solutions, the same “why didn’t we just use a factory pattern?” discussions. Meanwhile, somewhere in the world, a developer is solving complex problems with a programming language that treats everything as a stack operation, another is composing music through code, and someone else is literally growing programs like digital organisms. Welcome to the wonderfully weird world of unconventional programming techniques....

August 2, 2025 · 9 min · 1900 words · Maxim Zhirnov
Lazier than a Sunday Afternoon: No-Nonsense Guide to Lazy Loading Mastery

Lazier than a Sunday Afternoon: No-Nonsense Guide to Lazy Loading Mastery

Let me start with a confession: I once thought “lazy loading” was about developers being, well, lazy. How wrong I was. This superpower technique isn’t about napping through development—it’s about strategic resource management that turns slow, clunky apps into sleek, responsive speedsters. So grab your coffee, and let’s become lazy-loading ninjas. Back to Basics: The Art of Strategic Delay Before diving into code, let’s clarify the science. Lazy loading is the web’s OCD: organizing resources into priority tiers and demanding strict adherence to the “only what’s needed NOW” policy....

August 1, 2025 · 4 min · 803 words · Maxim Zhirnov
The Case Against Always Using Event-Driven Architecture

The Case Against Always Using Event-Driven Architecture

When I first encountered event-driven architectures (EDAs), I felt like I had discovered the secret ingredient to making systems both scalable and sexy. “Decoupled components reacting to events? Genius!” I thought. But after watching teams drown in complex event flows and battle asynchronous ghosts, I realized the emperor’s new clothes – sometimes, glue is stickier than lipstick. The Complexity Trap: When Flexibility Becomes a Strangler Fig Let’s start with the innocently named “least-coupled” system design....

August 1, 2025 · 8 min · 1571 words · Maxim Zhirnov
OAuth 2.0 vs OpenID Connect: The Authentication Dance You Never Knew You Were Missing

OAuth 2.0 vs OpenID Connect: The Authentication Dance You Never Knew You Were Missing

Picture this: you’re at an exclusive nightclub (let’s call it “API Club”), and there’s a bouncer at the door checking IDs, while inside there’s another person controlling access to the VIP sections. That bouncer? That’s authentication. The VIP controller? That’s authorization. And the beautiful dance between these two concepts is exactly what we’re diving into today with OAuth 2.0 and OpenID Connect. If you’ve ever wondered why logging into every app with your Google account works so seamlessly, or how Spotify can access your Facebook friends without stealing your grandmother’s secret cookie recipe, you’re about to get some answers....

July 31, 2025 · 12 min · 2390 words · Maxim Zhirnov