Skip links

Author: Marcus Okafor

Team standup meeting looking at security audit report on TV screen

Building a Security-First Development Culture

“Security is everyone’s responsibility” is a platitude that produces no behavioral change. I have heard it at every company I have worked at, and at most of them, security remained the security team’s problem (if there was a security team) or nobody’s problem (if there

Secrets Management in Production: Beyond Environment Variables

Every production application has secrets: database passwords, API keys, TLS certificates, signing keys, encryption keys. The most common approach to managing these secrets is environment variables, and for many teams, the journey ends there. .env files in development, environment variables in CI, and deployment platform
Corridor of identical doors with different colored keycard readers

Authentication Patterns for Multi-Tenant SaaS Applications

Multi-tenancy adds a dimension to authentication that single-tenant applications do not have: you must not only verify who a user is, but also which tenant they belong to and what they are authorized to do within that tenant. Getting this wrong leads to the most
Developer alone at desk late at night with alert dashboards on multiple monitors

How We Handle Incident Response as a Small Team

Harbor Software has eight engineers. We do not have a dedicated SRE team, a 24/7 NOC, or a VP of Incident Management. What we do have is a structured incident response process that has successfully handled 23 production incidents over the past 18 months, with
Chain link made of glowing code with one red cracked link

Supply Chain Security for Modern JavaScript Applications

The average JavaScript application has 1,200 transitive dependencies. When you run npm install on a fresh Next.js project, you are trusting code written by roughly 800 individual maintainers, many of whom are anonymous, unpaid, and maintaining their packages in their spare time. The event-stream incident

Client Communication for Technical Teams: What We’ve Learned

Technical teams are bad at client communication. This is not a personality flaw or a skills gap that a two-hour workshop can fix. It is a structural problem rooted in how engineers think about information. Engineers optimize for precision and completeness. Clients optimize for clarity

Building Multi-Tenant SaaS Applications with PostgreSQL Row-Level Security

Why Multi-Tenancy Is an Architecture Decision, Not a Feature Multi-tenancy sounds simple: multiple customers share one application. In practice, it’s one of the most consequential architecture decisions you’ll make for a SaaS product. Get it right, and you scale efficiently with strong isolation guarantees. Get

Zero-Trust Security Architecture for SaaS Products

The traditional security model is a castle: hard perimeter, soft interior. Firewalls and VPNs guard the boundary, and once you are inside, you are trusted to access anything. This model was already fragile before the cloud; now it is indefensible. When your application runs across
Explore
Drag