Fixing GitHub Copilot Agent Mode Hang in Visual Studio 2022

I was running into an issue with GitHub Copilot’s Agent Mode in Visual Studio 2022 where it would hang indefinitely after executing a command. This was particularly frustrating as it disrupted my workflow and made it difficult to use the tool effectively.

As it turns out, the issue is pretty straightforward to resolve. Apparently it tries to use the Powershell 7 terminal. In my installation, this was misconfigured and was pointing to some non-existent path. In my case, it was pointing to C:\Program Files\Microsoft\Azure Functions Core Tools\workers\powershell\7.4\zh-Hans\pwhs.exe, which does not exist on my system. You can check the path by opening the terminal window (CTRL +` or View->Terminal).

Continue Reading

The Buck Stops Here: Why Ownership Builds Better Engineering Teams

In any software engineering organization—whether a fast-moving startup or an enterprise-scale platform—leadership style doesn’t just shape the culture; it defines it. And when things go wrong (which they will), how leaders respond sets the tone for how teams grow, communicate, and deliver.

Over the years, I’ve seen two dramatically different approaches play out: one where leaders instinctively point fingers when things go off the rails, and one where leaders step up and say, “The buck stops here.” The difference between these styles is more than philosophy—it’s a deciding factor in whether your team thrives or erodes under pressure.

Continue Reading

Genius vs. Hubris in Leadership: Innovation with Humility

In software engineering leadership, one of the trickiest balances to strike is between bold innovation and grounded execution. The best leaders often have “genius” ideas—those that challenge assumptions, break with convention, and offer transformational value. But when those ideas become immune to feedback or revision, genius can tip dangerously into hubris.

Continue Reading

The Real-World Trade-Offs of Natural Language to SQL Systems

Natural language to SQL (NL2SQL) systems are one of the most compelling applications of language models—but also among the hardest to get right in production. Turning messy human questions into precise, performant SQL queries touches nearly every challenge in AI: ambiguity, domain context, schema evolution, and validation.

Here’s a breakdown of the core lessons learned from real-world implementations—and why building a robust NL2SQL stack requires more than just dropping an LLM behind an input box.

Continue Reading

Effective Practices for Measuring and Managing Technical Debt

Technical debt is a concept familiar to many software developers: the idea that suboptimal solutions or shortcuts taken during development can result in challenges down the road. This metaphor likens it to financial debt, where the “interest” is paid over time through the cost of maintaining or updating substandard code. Managing this debt is crucial for maintaining long-term productivity and system health. Here, we’ll explore techniques and practices to effectively define, measure, and manage technical debt.

Continue Reading