Blog

Blog

Notes from practice — regulated software, multi-tenant SaaS architecture, .NET, and real-time systems.

Regulated software · 5 min read

Building an audit trail that survives an audit

The data-model patterns behind a credible audit trail — shadow table, temporal tables or event sourcing — and the trade-offs of each.

Systems & C++ · 9 min read

C++20 for real-time services: a processing pipeline and WebSocket streaming

What "real-time" actually demands from a C++ service — bounded queues, backpressure, one thread per stage or one executor, and the allocation you did not know you were making.

Multi-tenant SaaS · 5 min read

Database per tenant or shared schema — how to choose

A practical comparison of the two multi-tenant isolation models: what you gain, what you pay, and what changes for migrations, backups and onboarding.

Regulated software · 5 min read

21 CFR Part 11 in practice: audit trails, electronic signatures, data integrity

What the FDA regulation on electronic records and signatures actually requires — and how it translates into architecture decisions rather than paperwork.

Multi-tenant SaaS · 8 min read

Field-level encryption with AES-256-GCM and per-tenant derived keys

How to protect sensitive fields in a multi-tenant SaaS — key derivation, nonces, additional authenticated data, and the hard parts: search and key rotation.

Career · 6 min read

From enterprise to building SaaS on my own: what transfers and what does not

Ten years on enterprise and healthcare systems, then a year building products alone. An honest inventory of which habits helped, which were dead weight, and which actively got in the way.

Multi-tenant SaaS · 6 min read

IDOR-safe RBAC: why checking the role is not enough

A role says what you may do, not what you may do it to. The most common data leaks in a SaaS live in the gap between those two questions.

Regulated software · 7 min read

IEC 62304 for developers: what it actually means in code

The standard governing medical device software, explained from the perspective of an engineer who has shipped under it — safety classification, traceability, SOUP, and what genuinely changes in day-to-day work.

Career · 7 min read

What I learned leading an engineering team at Oracle

Four years leading a distributed team on clinical systems — what actually changed, what I got wrong first, and which habits survived the move.

Regulated software · 4 min read

Modernizing legacy C++ without losing compliance

Refactoring old code in a regulated product is not blocked by the standard — it is blocked by traceability. The strategy that works: small, isolated changes with a clear equivalence argument.

Multi-tenant SaaS · 6 min read

Multi-tenant data isolation with EF Core global query filters

How to build per-tenant isolation without repeating WHERE TenantId in every query — and the gaps that still leak data.

.NET & integrations · 8 min read

Rate limiting a temperamental external API: Polly + SemaphoreSlim

How to stay inside someone else’s rate limits without stalling your own pipeline — client-side throttling, retry ordering, Retry-After, and the multi-instance trap.

.NET & integrations · 8 min read

Tolerant JSON contracts: surviving an inconsistent API

When the provider sends a number as a string, an object where an array was documented, and an empty string for a date — how to absorb the shape without absorbing the ambiguity.

Regulated software · 4 min read

What I learned shipping software under GxP

The years spent on medical and laboratory systems changed me as an engineer — not through procedures, but through a few habits I carried into everything I build.