Posts

Debugging as a Discipline: From Guesswork to Targeted Investigation

For many new software engineers, debugging is perceived as a rite of passage measured by tool progression: first print statements, then logging frameworks, and eventually a full-featured debugger. This framing is misleading. Debugging does not begin with tools at all. It begins with the ability to reason about a system for what it is supposed to do, how it is structured, where invariants should hold, and which assumptions are most likely to be wrong. Tools merely amplify that reasoning. Without a targeted methodology, even the most advanced debugger becomes a slow and unfocused microscope pointed at the wrong place. The reality is whether setting a print statement or well-placed breakpoint doesn't imply what is or isn't more correct. Both cases demonstrate the ability to reason the question into hypothesis. Personally I like recommending a setting a breakpoint and stepping a proper debugger for assumptions. In this way, as a mentor, it imposes a consciousness of the stack and ...

Typographical Squatting as a Modern Malware Delivery Mechanism

Preface This article was inspired by recent investigative reporting of  Brian Krebs , whose December 2025 analysis, Most Parked Domains Now Serving Malicious Content , synthesizes empirical research demonstrating a decisive shift in how parked and typo-derived domains are used in practice. That work, drawing on large-scale measurements by Infoblox researchers, establishes that domain parking is historically a low-risk monetization practice which has become a dominant vector for malware delivery, scams, and traffic laundering. This article extends that finding by placing it within a broader technical, economic, and defensive framework, with the goal of informing both operational security teams and policy-oriented stakeholders. Abstract Typographical squatting (typosquatting) is a long-standing abuse of the Domain Name System (DNS) in which adversaries register domains that are visually or syntactically similar to legitimate ones in order to exploit human error. While traditionall...

Prologue: Raising Debuggers in an Age of Abundant Code

As a technical leader, one of the most consequential mistakes we can make is equating engineering value with the volume of code produced. That equation was already flawed before the rise of AI-assisted development and today is actively misleading. Code is becoming cheaper to generate, easier to scaffold, and faster to refactor. Understanding why systems fail , however, remains scarce. In this environment, the engineer who can reliably diagnose, localize, and explain failures is often more valuable than the engineer who can rapidly produce new features. When mentoring young engineers, I encourage them to see themselves as debuggers first and authors second. Writing software is an act of construction while debugging is an act of understanding. Okay, maybe that's harsh but if we assume most creation hides in a veil of generated slop you may see my point more clearly. Construction can be accelerated with templates, frameworks, and generative tools. Understanding cannot. It requires me...

Emphasizing Reasoning Over Remediation

Incident write-ups and postmortems are not administrative paperwork. At their best, they are teaching moments creating historical narratives future engineers will rely on when systems fail (they will). They promote accountability without blame, growth without defensiveness, and shared understanding without finger-pointing. A well-written postmortem signals that the goal is not to protect reputations but to improve reasoning.  Too often, incident reports devolve into short timelines followed by a list of fixes. This structure satisfies process requirements but leaves little intellectual residue. It documents what changed, but not what was learned. The real value of a postmortem lies not in the remediation section but in the narrative of discovery: how uncertainty was reduced, which signals mattered, which assumptions failed, and how the team converged on an explanation of reality.  When done correctly, it becomes one of the most effective tools for developing engineering judgm...

SQL Injection in the Apps

If you ask most enterprise technology leaders whether their public website is protected from SQL injection, you will usually get a confident answer. There may be references to penetration tests, annual audits, secure development initiatives, or a recently purchased web application firewall. Public systems attract scrutiny because they are visible. They are tied to brand reputation, customer trust, and executive attention. The same confidence tends to disappear when the conversation shifts to the inventory portal used by operations, the vendor dashboard built five years ago, or the internal reporting tool maintained by whoever inherited it after a reorganization. That is where many organizations misunderstand their actual exposure. The most dangerous vulnerable applications are often not the ones on the homepage. They are the ones nobody remembers to review. SQL injection remains one of the most persistent software flaws because it emerges from habits that feel productive in the momen...

SSHadow: Security-Focused SSH Monitoring for Bastion Architectures

Image
  The Problem with Blind Bastion Hosts Run SSH bastion hosts long enough and you'll start asking uncomfortable questions. Who's connected right now? What certificate are they using? Did someone just attempt a brute force from that sketchy IP range? How many sessions does that contractor have open? Traditional SSH logging wasn't built to answer these questions. You get disconnected log events scattered across auth.log. You grep through files trying to correlate usernames with source IPs. You have no real-time view of what's actually happening on your infrastructure right now. Sure, you can piece together a timeline after an incident, but that's cold comfort when you're trying to detect an ongoing attack. SSHadow changes this by giving you a live feed of SSH connections with full authentication context. This is not a replacement for traditional logging. This is a real-time intelligence layer that makes sense of what's happening as it happens. What SSHadow Does...

Onboarding Into a Living Codebase

Image
The first week is usually quiet. A new engineer joins the team, their laptop freshly provisioned, their calendar suspiciously empty. They clone the repositories, follow the setup guide, and eventually reach out with a familiar message:  “I think I’m missing something. The service won’t start.”   Someone responds with a workaround. Another suggests a different environment variable. A third offers to hop on a call and “just get them unblocked.” By the end of the week the engineer is running the system but nothing about that success is repeatable, documented, or intentional. The team moves on, unaware they have just taught their newest member that survival depends on tribal knowledge. Furthermore there is lost cadence and opportunity amongst the wider team during the distracting episode of onboarding. That moment is where onboarding either becomes an investment or a slow, compounding failure. Onboarding a new software engineer into a mature team is not a clerical exercise. It is ...