Posts

Keeping Multiple Blazor Tabs in Sync with the Browser Broadcast Channel API

Image
  A user opens your Blazor application in one browser tab. Then they open a second tab, perhaps to compare information or keep two parts of the application visible at the same time. They change something in the first tab. Nothing happens in the second tab. This is expected. Each browser tab has its own page, JavaScript context, and Blazor Server circuit. Even though both tabs are displaying the same application for the same user, they don’t automatically share live state. You could solve this with SignalR, a server-side notification service, or a distributed messaging system. For many applications, however, that would be far more infrastructure than the problem requires. When the communication only needs to happen between tabs from the same application in the same browser, the browser already provides a lightweight solution: the Broadcast Channel API . In this article, we will examine: What developers sometimes mean by the “Broadcast API” What the Broadcast Channel API actually is ...

The Era of Free AI Coding Is Over — And That Might Be a Good Thing

Image
  For a while, building software with AI felt almost magical. You could open your favorite AI coding tool, describe what you wanted, and watch it generate code, tests, documentation, UI ideas, and even architecture suggestions. It felt fast. It felt empowering. And most importantly, it felt almost free. That era is ending. The era of free AI coding is over. That does not mean AI is going away. In fact, the opposite is happening. AI is becoming more capable, more integrated, and more important to the software development process. But it is also becoming more expensive, more metered, and more business-like. We are moving from “AI as a fun productivity boost” to “AI as a real engineering resource.” And real engineering resources have costs. Compute costs money. Tokens cost money. Premium coding models cost money. Hosted agents cost money. Running multiple AI agents against a codebase costs money. Asking an AI tool to research, plan, generate, validate, refactor, test, and repeat that ...

AI Surprised me in a good way

Image
There’s a moment that caught me off guard recently. Not a breakthrough in code. Not a clever refactor. Not even a production issue solved at 2 AM. It was something simpler—and much bigger. I realized I had fully accepted AI-driven development. The Workflow That Changed Everything I built a system that feels almost unreal when you step back and look at it. Here’s what happens: A bug or feature is created in Azure DevOps An application polls for new work When it finds an item, it: Creates a branch Writes or updates the code Generates tests Runs those tests Updates documentation Runs a separate agent for code review (with a report) If everything passes… creates a PR All of this is powered by a combination of: Agents Skills Prompts Tools In other words… a small army of AI doing what used to take hours (or days). The Unexpected Realization After watching this system run, I leaned back and had a surprising thought: “I can focus on being a so...

The Real Problem with AI Code (Hint: It’s Not Quality)

Image
  If you spend any time reading about AI and software development, you’ll see the same concern over and over: “AI-generated code isn’t good enough.” It’s buggy. It’s inconsistent. It makes mistakes. And while all of that is true… It’s also not the real problem. We’re Arguing About the Wrong Thing Developers are focusing on: code quality correctness best practices But AI has already crossed an important threshold: Tools like GitHub Copilot can generate code that is: good enough often correct increasingly consistent Not perfect — but close enough that something else becomes the bigger issue. The Real Problem: Weak Intent AI doesn’t fail because it writes bad code. AI fails because: We give AI unclear instructions and expect precise outcomes. Think about how we typically prompt AI: “Create an API for notifications” “Build a dashboard” “Add validation” Those are not specifications. Th...

AI Didn’t Replace Developers — It Replaced the Wrong Part of the Job

Image
For the past year, we’ve been asking the wrong question. “Will AI replace software developers?” The answer is both simpler — and more uncomfortable — than most people expect. AI is not replacing developers. It’s replacing the part of the job that never should have defined us in the first place. The Lie We Built Our Careers On For decades, we measured developer value by output: lines of code number of features tickets completed We turned software engineering into a production line. Write more code. Ship more features. Move faster. But that model had a flaw: It assumed writing code was the hard part. It isn’t. AI Just Exposed the Truth Today, tools like GitHub Copilot can generate: APIs UI components database queries unit tests in seconds. Not perfectly — but fast enough to change everything. And when that happens, something becomes very clear: If code can be generated instantly… then code was never the...

Why Agile Breaks in an AI World

Image
  For years, Agile was treated as the answer to software development. Standups.  Sprints.  Story points.  Velocity. It gave teams structure in a world where building software was slow, expensive, and uncertain. But that world no longer exists. AI has changed the economics of software development — and Agile hasn’t caught up. Agile Was Built for a Different Problem Agile emerged in a time when: Writing code was slow Changing direction was expensive Planning too far ahead was risky So we adapted. We broke work into: small tasks short iterations continuous feedback loops It made sense. Because the bottleneck was production . Getting code written was the hardest part. AI Eliminates the Old Bottleneck Today, tools like GitHub Copilot can generate: entire features APIs UI components test scaffolding …in seconds. Suddenly, writing code is no longer the constraint. So what happens to a methodology designed to optimize… writing code? It starts to crack. The “Ceremony Economy”...

GitHub Copilot Customization, Finally Explained

Image
  Agents, Skills, Hooks, Prompts, Custom Instructions, and GitHub Instructions—what they are, how they differ, and when to use each one GitHub Copilot is getting more powerful, but it is also getting more layered. If you have been exploring Copilot customization, you have probably run into a pile of terms that seem similar at first glance: Agent , Skill , Hook , Prompt , Custom Instructions , and GitHub Instructions . And that is where the confusion starts. They all shape how Copilot behaves, but they do very different jobs . If you do not separate them clearly in your mind, it becomes easy to misuse them. You end up trying to force one feature to solve a problem that another feature was designed to handle much better. This article is the practical guide I wish I had the first time I started thinking seriously about building a real Copilot workflow. By the end, you should be able to answer these questions with confidence: What is each feature actually for? How are they d...