Martin Stühmer

Who I Am

I’m Martin, CTO at Integrated Worlds GmbH in the Stuttgart region. I’ve been building .NET systems for nearly 20 years — since Framework 2.0, when SOAP was cutting-edge and ORMs were controversial.

Today I lead technology strategy for cloud-native solutions on Azure. Before this, I was Director of Consulting Services at CGI, working with enterprise teams on architecture and digital transformation across multiple industries.

Credentials and recognition:

Areas of Expertise

Nearly two decades of production work has concentrated into a few areas where I have both depth and strong opinions:

Modern .NET and C# — From the framework era through .NET 10. Performance engineering, source generators, Roslyn analyzers, testing strategies, static analysis, and the long arc of what actually improved versus what just changed.

Cloud-native architecture on Azure — Azure Kubernetes Service (AKS) at scale, multi-cluster networking, zero-downtime upgrades, cost governance, observability, and the gap between what Azure can do and what makes sense to use.

DevOps and supply-chain security — GitHub Actions, dependency management, container security, infrastructure-as-code compliance with Bicep, and the organisational practices that make automated pipelines trustworthy.

Application security and privacy — Secrets management with Azure Key Vault, managed identities, content exclusions in AI coding tools, data minimisation patterns, GDPR-relevant implementation in .NET and ASP.NET Core.

Engineering culture and pragmatism — What AI coding assistants actually change about software quality, how to introduce static analysis without breaking teams, and when “best practices” are cargo-cult repetition versus earned principle.

What I Do

As CTO, I don’t just make decisions from a distance. I write code, review PRs, debug production issues, and mentor teams. Technology leadership means staying hands-on and feeling the consequences of your choices.

As a trainer and mentor, I focus on fundamentals that outlast framework hype. Static analyzers, testing strategies, performance patterns, maintainable architecture — the stuff that actually prevents production fires.

As an open-source maintainer, I publish packages that solve problems I’ve hit repeatedly in real systems. When strangers depend on your code, you write better tests and clearer docs.

What I’ve Learned

Almost two decades means I’ve made every mistake: over-engineered systems, bet on Silverlight and WCF (oops), built “flexible” architectures that were just complicated, shipped code I’m not proud of.

Here’s what stuck:

  • Quality isn’t optional – Analyzers catch bugs in milliseconds, tests prevent regressions, and both are faster than firefighting
  • Fundamentals outlast frameworks – Patterns and principles survive; specific tools don’t always
  • Context beats dogma – “Best practices” depend on your team, domain, and constraints
  • Evidence beats opinion – Measure, benchmark, validate before deciding
  • Pragmatism wins – Good-enough architecture that ships beats perfect architecture that doesn’t

What I Write About

I share perspectives from production systems and real teams — not tutorials recycled from documentation. Topics I cover regularly:

  • .NET and C#: performance, source generators, analyzers, testing, language evolution
  • Azure and AKS: architecture decisions, networking, scaling, cost, security posture
  • DevOps: GitHub Actions, dependency security, CI/CD pipeline design, supply-chain risk
  • Application security and GDPR: secrets handling, access control, data minimisation, audit logging
  • AI coding tools: what Copilot, Claude Code, and similar tools actually change (and what they don’t)
  • Engineering culture: technical debt, code quality, the economics of shortcuts

I’m skeptical of buzzword-driven development and allergic to cargo-cult practices. If a trend lacks substance or a pattern doesn’t hold up under pressure, I’ll say so. The articles are written for developers, solution architects, and operators who maintain production systems and care about quality, not just shipping fast.

Published blogs

"Just Delete the User": Famous Last Words Before the GDPR Audit

"Just Delete the User": Famous Last Words Before the GDPR Audit

Your PM thinks erasure is a quick database DELETE. Three weeks later, you’ve found user data in seventeen places: production DB, analytics warehouse, Redis cache, Elasticsearch, backup tapes, and that legacy system nobody dares touch. “Delete” actually means orchestrating coordinated erasure across distributed systems, maintaining audit trails, notifying third parties, and proving it worked. This guide shows the fatal patterns I’ve seen fail spectacularly, then walks through proper orchestration with Azure Durable Functions, soft-delete with anonymization, verification checks, and immutable audit logs.
Why Your Azure Portal Clicks Will Fail the Next Audit

Why Your Azure Portal Clicks Will Fail the Next Audit

Manual portal configuration creates audit nightmares. When auditors ask “Show me your change control process,” clicking through Azure Activity Logs won’t save you. Here’s how Bicep turns infrastructure into auditable code—where Git history becomes your compliance evidence and pull requests become your approval workflow.
Stop Deploying Garbage to Production

Stop Deploying Garbage to Production

I’ve watched “senior engineers” deploy code with failing tests because “we need to ship.” I’ve seen secrets hardcoded in workflows, vulnerabilities ignored with || true, and production deployments without a single approval gate.

Then the same teams act surprised when they get breached. Or fail an audit. Or both.

Security gates aren’t process overhead—they’re the bare minimum that separates professional engineering from reckless gambling with customer data. Here’s exactly how to build GitHub Actions pipelines that actually protect your systems.

Privacy Health Checks: Beyond Database Connectivity

Privacy Health Checks: Beyond Database Connectivity

Your health checks verify database connectivity every 30 seconds. Great. But do they know that 15% of your users have expired consents? Privacy compliance isn’t a documentation exercise—it’s an operational discipline. Same IHealthCheck interface, different questions. Two queries, one ratio, three possible outcomes. Here’s how to build privacy health checks that turn audit questions into dashboard demos.
Green Dashboard, Dead Application

Green Dashboard, Dead Application

Your application just crashed in production. Azure App Service kept routing traffic to the failing instance for ninety seconds. Users saw timeouts. Your monitoring dashboard stayed green because the web server responded with HTTP 200 while the database connection pool was exhausted.

I’ve watched this exact scenario play out at three different organizations in the past year. Each time, the post-mortem revealed the same root cause: health checks that verified the process was breathing without checking whether it could actually do its job. ISO/IEC 27001 Control A.17.2.1 exists precisely for this reason—availability is a security control, not an operational afterthought.