RSSAmplifier

Blog

CodeBlueprint

sysdev.meRSS feed ↗20 posts

Latest posts

Over-engineering used to be bounded by boredom

Belogorka waterfall, Sokuluk gorge. Two hours from "the office" and nothing there needs a daemon. A feature I'd sized at roughly 200 lines came back as 8,391 added and 692 removed, 3,431 of those lines being tests. The requirement was one sentence. A CI job needs one of the two physical devices wired to the test rig, so: enumerate what's attached, pick one that's online, hand it back at teardown.…

Vibe Coding experiment

<...

Making GenAI code review actually useful

Alamedin Gorge is one of my favorite places for a short weekend walk. I ran a single Claude reviewer agent against an approximately 1000-line C++ change last month (yes, it's too big for a normal workflow, but we are in the GenAI era and norms are different)—some pretty important video pipeline updates, but nothing exotic. The review came back with 14 findings. Three were real. The rest included a…

IPO Season and the Death of Software Engineering (Again)

Our Perseids campsite at Song Kol. No cell signal, no Blind, no LinkedIn panic. I check Blind the way some people check horoscopes: every morning, expecting drama, occasionally finding truth. The Economist I read for the opposite reason, it's calm, structured, backed by actual data. These two don't usually agree on much. But over the past couple of months, they've converged on the same narrative,…

Development processes in the GenAI era

The current debate around GenAI and C++ is a good illustration of the real problem. Many engineers report that models are worse than juniors. Others report dramatic speedups on the same language and problem space. Both observations are correct. The difference is not the model. It is the absence or presence of the state. Most GenAI usage today is stateless. A model is dropped into an editor with a…

Today I learned... git shallow

Sometimes you need to understand why something exists, and instead, you’re staring at a mystery. It feels like magic for a moment. But there is no magic in IT. There is always a reason, and usually it’s painfully concrete. Today I learned that if git blame suddenly claims I wrote the entire million-line project, it might be lying 🙂 I ran into a situation where my local git blame attributed every…

Dealing with ThreadSanitizer Fails on Startup

Usually, you need just a few lines to initialize TSan in your project: you compile with the sanitizer flags, run the tests, and get a clear report of which threads touched which memory locations. On a modern Linux system, that simple expectation can fail in a very non-obvious way. FATAL: ThreadSanitizer: unexpected memory mapping 0x... In my case, I attached TSan to a not-so-young C++ codebase and…

Cross-Compiling Rust for Raspberry Pi

I just started a new embedded pet project on the Raspberry Pi, and I expect it'll be a pretty big one, so I've been thinking about the technology from the beginning. The overall goal is to create a glass-to-glass video pipeline example. Let's see how it's going. For now, I'm using a USB V4L2 camera while waiting for the native Pi modules to arrive, but it's enough to sketch the capture loop and…

What Actually Drove the Tech Layoffs

A 10-minute ride and you have such a view from Chon Aryk hills. I truly enjoy reading Blind and Levels. There is so much internal drama, messy details, and unexpected insights that you almost do not need reality shows anymore. And if you ever feel bored, you can always drop a mildly toxic comment into a thread and watch the whole thing ignite. It fits the overall style of Blind a little too well,…

Identifying Video Streams Using RTP Header Extensions

Birch Grove near Bishkek. The grove is incredibly popular in the autumn. When a system manages dozens of cameras or edge devices, packets alone don’t tell you much. An IP and port might change, SSRCs can roll over, and NATs tend to shuffle everything just enough to break simple assumptions. Yet every media packet still needs a clear identity — not for transport, but for logic. There are many ways…

Multilingual benchmarking project => Bazel for advanced engineering

In her one year, Molly saw many more exciting places than I did until I was about 28. She does pretty well :-D When working on performance experiments across C++ and Go, you obviously need a multilingual project structure. There were two paths forward: create separate build systems under a shared repository, or consolidate everything under a single, coherent framework. Bazel made that decision…

TIL: how to debug randomly hanging Python applications

Usually, if a Python-based application hangs, you either read logs or grab one of the PBD-based solutions, attaching to the application, and uses the Python ...

AI, Software Engineering, and the Evolution of Code Generation

From a weekend trip to a nearby gorge. Why is it here? Because I love the mountains of Kyrgyzstan! Mark Zuckerberg recently made a bold statement: AI will soon take over the work of mid-level engineers (Forbes) . While this may sound like another tech CEO hyping AI, my latest experience with OpenAI’s o3-mini-high model suggests he might not be too far off. Thanks to DeepSeek, OpenAI was compelled…

Bazel and Rust: A Perfect Match for Scalable Development

Bazel never fails to impress, and its support for Rust demonstrates its versatility and commitment to modern development. Two distinct dependency management modes—Cargo—based and pure Bazel—allow developers to tailor workflows to their projects' needs. This adaptability is particularly valuable for integrating Rust applications into monorepos or scaling complex systems. I decided to explore how…

Fixing C++ lacks switches on strings

Birch Grove is just 40 minutes from Bishkek. Although I was concerned about the strong, foggy weather, it was an amazing opportunity for photography! C++ is a powerful language, and I genuinely love it, but sometimes, even in modern versions, it lacks some surprisingly simple features. One such missing feature is switch on std::string . You’d think that by now, we could use a switch statement on…

Functional Programming style in C++

Teskey-Torpok Pass is a lovely pass leading you to Song-Kol Lake, Naryn region. I’ve been on a bit of a Leetcode streak lately, poking at problems from companies I secretly admire. To keep things interesting (and to avoid nodding off in front of the screen), I challenged myself to solve the same task three ways: good old C++, its shiny modern C++20 cousin, and Elixir. It turns out that staring at…

How to compile C++ in 2025. Bazel or CMake?

Today, we’re examining two modern build systems for C++: CMake , the industry favorite, and Bazel , a powerful alternative. While CMake is often the default choice, I believe that approach warrants a bit more scrutiny—after all, we’re focusing on modern tools here (yep, not counting Make, right?). To explore this, I’ve created a practical demo project showcasing how both systems manage a…

Minimal CI for Go library with GitHub actions

Continuous Integration (CI) has become an essential part of modern software development, and for good reason. It ensures code quality, speeds up development, and catches potential issues early. However, you can get started without an elaborate CI setup. Even a minimal CI setup can significantly improve your workflow. Here's why every project should have at least minimal CI and how to implement it…

Managing Multi-Language Projects with Bazel

In today’s software development landscape, it’s rare to encounter a project built with just one programming language or platform. Modern applications often require integrating multiple technologies to meet diverse requirements. This complexity is both a challenge and an opportunity, demanding robust tools to manage dependencies, builds, and integrations seamlessly. Bazel, a powerful build system,…

Returning to Rust: A Journey Through Tooling, Performance

When I started tackling the Maelstrom challenges , my initial thought was to use C++. It’s a language I know inside out, and its performance is hard to beat. However, as I contemplated setting up the project, I realized I couldn’t justify fighting with the C++ pipeline for free. Crafting a proper CMake or Bazel configuration might be worthwhile for large-scale projects or when compensated, but for…