The Account We Deleted Three Times
Production said the account was gone. An eleven-month-old export link still returned the customer's documents. The deletion worked exactly as designed, which was the problem.
I've been writing online since 2020, mostly about web development, systems architecture, and engineering leadership. In total, I've written 25 articles. Use the search below to filter by topic.
Production said the account was gone. An eleven-month-old export link still returned the customer's documents. The deletion worked exactly as designed, which was the problem.
What we learned building a Kubernetes operator that almost worked, and the twelve production incidents that taught us to finish what we started.
Observability platforms often fail in inverse proportion to the seriousness of their stated mission. A deep dive into the engineering of a self-hosted, multi-tenant observability platform — from back-pressure primitives and write-ahead logs to tail-based sampling and ClickHouse storage tiers.
Distributed systems failures often begin not with a spectacular crash, but with silent divergence. Exploring the engineering required to prevent failures in a multi-region banking core.
Build scalable, secure, and self-healing Azure applications by combining Terraform, Terragrunt, AKS, Zero Trust, and automated testing to move from fragile prototypes to production-ready infrastructure.
Whether you're building your first web service or your hundredth microservice, the URL shortener remains a compelling case study. It's conceptually simple, quick to prototype, yet deceptively complex at scale.
application's biggest enemy is its own growth.
I decided to explore the combination of Golang with the Gin framework and Pocketbase for building a REST API. This choice was driven by a desire to experiment with a different tech stack while also considering the positive feedback I had heard from the developer community regarding Pocketbase's user-friendly features.
Implementing robust authentication in your Express.js application is crucial for safeguarding user data and maintaining application integrity, and this guide covers essential strategies from basic username/password authentication to advanced JWT and OAuth 2.0 methods.
Effective software release management is crucial for balancing innovation with reliability. Whether you're deploying a new feature or rolling back a problematic update, techniques like semantic versioning, environment management, and blue-green deployment ensure smooth transitions with minimal downtime.
Technical debt, much like an overused route, represents shortcuts taken during development to meet immediate needs, which can lead to inefficiencies and increased costs if not addressed proactively.
Learn how to set up a comprehensive CI/CD pipeline for your open-source project using GitHub Actions, SonarCloud, Codecov, and Sentry. This guide will walk you through automating builds, tests, code analysis, versioning, and error monitoring to enhance your development workflow.
Structs and interfaces are fundamental components in Go that enable efficient data modeling and flexible, modular code design. By mastering these concepts, you can create maintainable and scalable applications that handle complex data and interactions effectively.
This article offers a comprehensive guide to effectively utilizing pointers in Go, covering their basics, benefits, and best practices. By understanding and implementing pointers, developers can optimize their Go applications, making them more efficient and robust.
Slices are dynamic and flexible views of array elements, providing powerful features for working with adaptable datasets. They can be easily declared and initialized, either as empty slices or with predefined values, and can be created from existing arrays.
In the world of Go programming, arrays are like fixed shelves in a well-organized library. Each shelf, or array, has a specific spot for each book, making it easy to find any book quickly. This article explores arrays in Go, highlighting their fixed size, fast access times, and value type characteristics.
This tutorial explains deploying a React Native app for web users using the React Native Web API, GitHub Actions, and Azure Web Services. It covers setting up the project, integrating web support, and automating deployment via Azure Web App and GitHub Actions to streamline updates and minimize manual intervention.
Next.js and TypeScript have revolutionized web development. But managing authentication can be complex. In this tutorial, we'll explore Next-Auth, an open-source library for secure authentication in Next.js apps.
In this article, you will learn how to add Secure Socket Shell (SSH) to your GitHub account so you can access our repository quickly and easily without repeatedly inputting your email and password.
In the article, we learn about useState and useEffect in functional React components, arguably the most important hooks in React.js.
This article will explore how re-rendering work optimization and performance in focus using useMemo and useCallback hooks. A basic understanding of React before starting this tutorial.
In this article, you will learn why React’s useContext hook makes it easy to manage states globally.
React 18 was released in March 2022. This latest release includes performance improvements with updates to the rendering engine. This update does not change your codebase.
Generally, Docker has been overlooked by many new developers. Understanding how containerization helps manage individuals' and teams' projects to deliver multiple applications hassle-free.
Developers love peak productivity and having the right terminal can help you create that part, especially when the setup compliments your IDE setup.