Constructing views in Modern C++. A Practical Guide.

C++20 views are not limited to the adaptors provided by the standard library. When an operation cannot be expressed through their composition, you can implement a custom view.

This article demonstrates the process by building a lazy, SAX-like XML parser. Along the way, it explains how views, iterators, and sentinels work together, which standard concepts they must satisfy, and how to make a custom view compatible with range-based loops and standard views.

How C++ Sanitizers Work and Where They Miss Bugs

C++ sanitizers can detect memory errors, undefined behavior, uninitialized reads, and data races during execution. This article explains how the main sanitizers work, how ThreadSanitizer tracks happens-before relationships, and why good tests and realistic workloads are still essential.

How to Make Coroutines Practical for C++ Projects

C++20 coroutines provide the low-level machinery for suspendable functions, but not a complete async runtime. This article explains what coroutines are, how std::generator makes lazy value generation practical, and how libraries such as libcoro provide tasks, schedulers, and thread pools for real projects.

How C++20 Concepts Simplify Generic Programming

C++20 concepts make template requirements explicit, reusable, and easier to diagnose. This article explains how concepts improve generic code, participate in overload resolution, simplify class template specialization, and help build a clear vocabulary for type requirements.

How to Get an Interview Invitation in 2026

Getting an interview invitation in 2026 is not only about sending more applications. This article explains why direct applications often work poorly, how recruiters search for candidates, and how proper LinkedIn positioning can make your profile easier to find and understand.

How C++ Ranges Make Iteration Less Error-Prone

C++ ranges and views make traversal code safer and more expressive by replacing manual iterator pairs with higher-level sequence abstractions. This article explains where iterator-based APIs become error-prone, how ranges reduce those risks, and why lifetime still matters.