Vir's blog — go fast with readable code!

there's too much unused parallelism on a single core

Introduction to std::simd in C++26 (Part 1)

21 May 2026

There’s a lot to write about std::simd in C++—too much for a single post. I’d like to show how std::simd helps solve actual problems. Like every tool, it’s not a one-size-fits-all solution. Pick the tool that suits the problem. And if you already have a good tool for your problem or the auto-vectorizer understands your code just fine 🤷 great, no one is asking you to switch. However, maybe I’ll be able to broaden your perspective on its capabilities and the specific challenges it addresses.

Read on …

Your AI Coding Assistant Is Not a “Junior Developer”

13 May 2026

Listen into a conference talk or onboarding session on AI coding assistants, and you will hear the same metaphor. The AI is the “junior developer” or “co-worker” on the team. You mentor it. You review its work. You trust it with routine tasks, not the hard problems. The framing feels natural, modest, even generous. It is also, we will argue, wrong in a specific and consequential way. Calling an AI a junior imports trust and patience that the system cannot earn. It trains teams in the wrong review habits. It risks skipping over the exact experiences that turn juniors into seniors in the first place.

Read on …

My vision for an interdisciplinary RSE institute: how to actually help scientists

28 Apr 2026

Today I attended a talk by Dr. Florian Mannseicher on FutuRSI—an “initiative […] to conceptualise a German research software institution”. The discussion around critical challenges and concrete needs facing the research software community resonated with me—particularly because I discussed many of these same issues—still unresolved today—in 2020 in “Software Engineering as Scientific Infrastructure”. I believe FutuRSI should be the place to solve what I wrote about back then. I’ll elaborate in this post. Since 2020 our ability to talk about these issues has improved. “Research Software Engineering” (RSE) has become a widely used term. There are conferences on RSE. But the main problem has not been addressed—in my opinion.

Read on …

Virtual Trip Report: WG21 Kona 2025

13 Nov 2025

After the CD (committee draft) is out, WG21 is in bug fixing mode. Consider NB comments as the tickets that force us to consider a resolution and provide an answer. Such issues can either be design issues or wording issues (where wording does not match stated design intent). Besides NB comments, many library issues had been filed and prioritized independently, which led to several categorized as must/should fix before the standard is finalized.

Read on …

The story of regularity and std::simd

16 Nov 2023

In this post I will talk about regularity and why std::regular<std::simd<int>> needs to be false in order to preserve regularity at the level where it matters: equational reasoning. The issue of regularity came up repeatedly when discussing the design of std::simd for C++26. (It also came up in 2017 for std::experimental::simd.) My goal for this post is the exploration of options and their consequences. There’s a lot more to be said, but this post is already too long. In any case, when talking about regularity, we need start with “Elements of Programming”, the book that introduced the concept:

A type is regular if and only if its basis includes equality, assignment, destructor, default constructor, copy constructor, total ordering, and underlying type. […]

Algorithms are abstract when they can be used with different models satisfying the same requirements, such as associativity. Code optimization depends on equational reasoning; unless types are known to be regular, few optimizations can be performed.

Alexander Stepanov, Paul McJones — Elements of Programming (EoP)
Read on …