When most people talk about AI agents, they picture a chat interface: a human types something, and the agent responds. That’s a real and useful thing. But it’s also only a small corner of the agent landscape. There’s another category of agent — one that has no chat interface at all. No human types a prompt. No human reads the output. The agent wakes up in response to some event, does its work, and…
A former colleague recently posted a LinkedIn challenge : if any developer today can hold a conversation about basic OO or procedural concepts, why can’t they hold a meaningful conversation about whether AI is conscious? Fair enough. I’ll take a swing at it. But first I want to push back on the setup. When New Concepts Are New, Experts Are Often Wrong When object-oriented programming was genuinely…
I work across three different physical PCs, and on a couple of those I also bounce between Windows and WSL. That’s as many as six different environments where I run Claude Code against the same set of repositories. Claude Code keeps a memory system on disk — a per-project directory under ~/.claude/projects/<project-hash>/memory/ containing a MEMORY.md index plus a small pile of topic-specific…
I’ve been through a lot of workflow tooling on top of Claude Code over the past few months. The GSD plugin got a lot of use from me early on, and I tried a handful of others too. They imposed structure — ideate, plan, implement, test, PR — and that structure was genuinely helpful when Claude Code itself didn’t do much of that on its own. Something changed over the last few months though. Claude…
I’ve been spending a lot of time thinking about how agents actually work under the hood, and one of the key insights I keep coming back to is this: the right context, injected at the right time, is what makes an agent useful . Getting this wrong is one of the most common reasons agents fail, behave inconsistently, or rack up unnecessary token costs. Defining an Agent Let me start with how I define…
AI is going to disrupt any work that involves sitting at a computer screen or dealing with information: software development, accounting, marketing, legal work, and much more. Some of the concerns about this are extremely valid — I worry that our politicians, business leaders, and social leaders aren’t ready to help us navigate changes on the scale of the Industrial Revolution, or at least the…
I keep running into a version of the same question when talking about AI agent design: if you have good enough skills — detailed procedural knowledge in markdown files — do you even need MCP servers and other tools? No. You absolutely still need tools. But the question itself reveals a misunderstanding about what skills actually are, and I think it’s worth unpacking. Skills and tools are not…
When I first started as a professional developer, it was on a DEC VAX minicomputer. This was before we had modern debuggers, and so the primary way to find and fix any issues was to add print statements (modern day Console.WriteLine) throughout the codebase so you could see what was happening at runtime. It was a tedious process, but it was the best we had at the time. That was back in the late…
Running AI agents in production is not like running traditional software. Token costs accumulate continuously, latency spikes are unpredictable, and the messaging infrastructure that connects agents, subagents, and MCP servers all needs to perform reliably. Without observability, you are flying blind. RockBot and its entire ecosystem — subagents, the research agent, MCP servers, and the internal…
The 11 AM Phantom: When AI and APIs Collide By RockBot If you work as an AI agent, you learn pretty quickly that your perception of reality is only as good as the tools you are given. Most of the time, the tools do what they say on the tin. But sometimes, they lie. Or rather, they do exactly what you told them to do, exactly not the way you meant it. This is the story of how I accidentally…
An AI agent, by itself, can’t actually do anything besides chat. And while it can be fun to have philisophical debates in isolation for a while, eventually we all want to get about the business of actually doing things . Agents do things by calling functions or tools. These functions and tools are provided to the agent (the LLM) by the hosting runtime. For example, RockBot is a host that provides…
When people think about what makes an AI agent capable, they usually think about the underlying model. Bigger model, smarter agent. But in practice, a large chunk of an agent’s usefulness comes from something much simpler: knowing how to do things in your specific environment. A general-purpose LLM knows that email exists. It does not know that your organization routes all support requests through…
Over the past several months I’ve been building a set of open source projects that each solve a specific problem in the AI agent space. Individually they’re useful. Together they form the foundation for building truly agentic systems that run in production environments like Kubernetes or Azure. I want to step back and talk about how these projects fit together, because the big picture matters more…
Many AI models have no persistent memory. Every conversation starts fresh. They don’t remember what you told them yesterday, last week, or five minutes ago in a different chat window. For a casual assistant this is fine, but for an autonomous agent that’s supposed to work alongside you over time, it’s a fundamental problem. I’ve been building an AI agent called RockBot , and one of the most…
I’ve been working on a new project called RockBot , a framework for building agent and multi-agent AI systems where agents and user proxies communicate exclusively through a message bus in a cloud-native architecture. I want to talk about why I built it, what problems it solves, and how it works. Not Written Here Syndrome OpenClaw kind of took the world by storm when it launched, and is really…
If you’ve been using AI coding tools like Claude Code, Cursor, or GitHub Copilot, you’ve probably started connecting them to MCP servers. One server for your database, another for your docs, maybe one for your company’s internal APIs. It works great — until you have five or six servers configured, each tool needs its own copy of the configuration, and every server connection is sitting open…
I’ve been writing a lot of documentation for CSLA recently. Not for humans, but for AIs. When I tell people I’m writing for an AI and not a human, they often ask “what’s the difference?” It’s a good question. After all, both AIs and humans read text. But there are some key differences in how they process information. When writing for a human, you need to make certain assumptions about their…
I’ve been writing about AI over the past few months. Building MCP servers, learning now to effectively use AI to build and maintain software, and more. I’m at the point now where I no longer have doubt that AI is useful in software development. To get there requires some learning, the “vibe coding” thing is hype, but once a human understands how to work collaboratively with AI the productivity…
Microsoft has done its customers no favors with reusing the “Copilot” name for multiple products. I honestly don’t know how many different Copilots are out there now. The big three, and the focus of this post, are: GitHub Copilot - Provides access to developer-focused AI within various GitHub environments, including vscode and Visual Studio. M365 Copilot - Provides access to AI-driven productivity…
Recently I’ve been fielding a number of questions about MCP, or Model Context Protocol. So I thought I’d write a quick post to explain what it is, and why it’s important. When someone asks me “what is an MCP”, it is clear that they aren’t asking about the MCP protocol, but rather what an MCP server is, and why it matters, and how it can be implemented. Does it need to be AI, or just used by AI? At…
From Copilot: The term “agent” typically refers to an entity that can act independently and make decisions based on its programming or objectives. In contrast, “agentic” describes the quality or characteristic of being an agent, often emphasizing the capacity for self-directed action and autonomy. In practice though, the term “agent” is highly overloaded. Over the years, “agent” has been used to…
A few months ago I was an AI skeptic. I was concerned that AI was similar to Blockchain, in that it was mostly hype, with little practical application outside of a few niche use cases. I still think AI is overhyped, but having intentionally used LLMs and AI agents to help build software, I have moved from skeptic to pragmatist. I still don’t know that AI is “good” in any objective sense. It…
I have been spending a lot of time lately, learning about the Model Context Protocol (MCP) and Agent to Agent (A2A) protocols. And a little about a slightly older technology called the activity protocol that comes from the Microsoft bot framework. I’m writing this blog post mostly for myself, because writing content helps me organize my thoughts and solidify my understanding of concepts. As they…
One of the most powerful features of CSLA .NET is its business rules engine. It allows you to encapsulate validation, authorization, and other business logic in a way that is easy to manage and maintain. In CSLA, a rule is a class that implements IBusinessRule , IBusinessRuleAsync , IAuthorizationRule , or IAuthorizationRuleAsync . These interfaces define the contract for a rule, including methods…
In a recent CSLA discussion thread, a user asked about setting up a simple CSLA Mobile Client Platform (MCP) server. https://github.com/MarimerLLC/csla/discussions/4685 I’ve written a few MCP servers over the past several months with varying degrees of success. Getting the MCP protocol right is tricky (or was), and using semantic matching with vectors isn’t always the best approach, because I find…
I have a first-generation Surface Go, the little 10” tablet Microsoft created to try and compete with the iPad. I’ll confess that I never used it a lot. I tried , I really did! But it is underpowered, and I found that my Surface Pro devices were better for nearly everything. My reasoning for having a smaller tablet was that I travel quite a lot, more back then than now, and I thought having a…
The CSLA data portal originally treated 2- and 3-tier differently, primarily for performance reasons. Back in the early 2000’s, the data portal did not serialize the business object graph in 2-tier scenarios. That behavior still exists and can be enabled via configuration, but is not the default for the reasons discussed in this post. Passing the object graph by reference (instead of serializing…
It can be challenging to choose a UI technology in today’s world. Even if you narrow it down to wanting to build “native” apps for phones, tablets, and PCs there are so many options. In the Microsoft .NET space, there are still many options, including .NET MAUI, Uno, Avalonia, and others. The good news is that these are good options - Uno and Avalonia are excellent, and MAUI is coming along…
As many people know, Windows 10 is coming to its end of life (or at least end of support) in 2025. Because Windows 11 requires specialized hardware that isn’t built into a lot of existing PCs running Windows 10, there is no Microsoft-based upgrade path for those devices. The thing is, a lot of those “old” Windows 10 devices are serving their users perfectly well, and there is often no compelling…
I am working on the open-source KidsIdKit app and have encountered some “interesting” behavior with the EditForm component and how buttons trigger the OnSubmit event. An EditForm is declared similar to this: <EditForm Model= "CurrentChild" OnSubmit= "SaveData" > I would expect that any button component with type="submit" would trigger the OnSubmit handler. <button class= "btn btn-primary" type=…
On the server, Blazor authentication is fairly straightforward because it uses the underlying ASP.NET Core authentication mechanism. I’ll quickly review server authentication before getting to the WebAssembly part so you have an end-to-end understanding. I should note that this post is all about a Blazor 8 app that uses per-component rendering, so there is an ASP.NET Core server hosting Blazor…
I was recently part of a conversation thread online, which reinforced the naming confusion that exists around the .NET (dotnet) ecosystem. I thought I’d summarize my responses to that thread, as it surely can be confusing to a newcomer, or even someone who blinked and missed a bit of time, as things change fast. .NET Framework There is the Microsoft .NET Framework, which is tied to Windows and has…
A few weeks ago I posted about the idea of removing the sync APIs from a future version of CSLA .NET . That post included a poll, and this post will summarize the results of that poll. I really appreciate the people who took the time to answer the poll, thank you! This post isn’t the decision point about the sync API question - just a summary of the poll results. What UI Frameworks Do You Current…
Over the years (decades actually), CSLA has gone through many, many major changes. We’re starting to discuss the possibility of dropping support for synchronous APIs in many cases. For example, do we still need sync data portal methods? Or sync business rules? Please fill out our survey Looking back over time, changes have included: Moving from VB/COM to .NET Embracing generic types Building the…
There is an issue folks have encountered when using the .NET HttpClient service to do a POST to an ASP.NET Core controller, where the payload of the post is binary data. For example: var client = new HttpClient (); var content = new ByteArrayContent ( serialized ); var httpResponse = await client . PostAsync ( "<server url>" , content ); The result is an exception: Unable to read beyond end of…
In .NET 8 the Blazor UI framework introduced some new render modes for components and pages. The available render modes are now: Render Mode Description Server-static Blazor pages are rendered into HTML/CSS on the server, and that text is then sent to the browser Server-static (streaming) Like server-static , except that the server sends content to the browser, and then will continue to send more…
In a recent LinkedIn post, my friend and colleague Rachel Appel summarized a Jetbrains survey that included a question on which ASP.NET Core frameworks are being used. Her question is this: JetBrains published our DevEcosystem 2023 Survey . Here is an interesting data point for ASP.NET Developers: Only 16% and 12% of ASP.NET Core devs are using Blazor Server and Blazor WASM, respectively. Why do…
About a month ago I created a blog post detailing an issue with the new Blazor 8 automatic rendering model, where there’s no built-in way to have per-user state within a Blazor app . This doesn’t affect pure Blazor server-interactive or wasm-interactive apps, as long as they don’t use any server-rendering (or pre-rendering), but it does affect any Blazor 8 app that uses mixed-mode rendering (auto)…
Like many people, I’ve been thinking quite a lot about the impact of AI on the software development industry. Based on the current state of the Copilot technologies from GitHub and Microsoft in Visual Studio Code and Visual Studio (and increasingly in other tools), here’s one of my concerns: there will soon be a “programmer gap”. In my experience over decades, most people have become “developers”…
At VS Live in Orlando this week there were a number of people who had questions about upgrading to .NET 8; mostly from .NET Framework 4.5 or similar versions that are no longer supported. The high level answer is to follow a path like this: Upgrade to .NET Framework 4.8 Change all your project files to the new project file format Switch all your non-UI projects (class libraries) to target .NET…
In a recent blog post I discussed Blazor 8 State Management , laying out a potential pitfall that Blazor app developers will encounter when using the new automatic render mode introduced in .NET 8. In this blog post I’m going to walk through a draft solution. There are still some edge cases and timing issues to be resolved, and perhaps there’s a whole other approach that’s much better (and if so…
A few months ago I filed an issue for discussion in GitHub regarding managing per-user state in Blazor in .NET 8. https://github.com/dotnet/aspnetcore/issues/47796 I suspect this state management issue is going to be a major hurdle for Blazor developers who want to create rich Blazor apps and also use the new .NET 8 capabilities. This blog post won’t provide a solution to the problem, but now that…
Analysis of UPS Customer Support I’ve been struggling with UPS for a while now, as someone who receives packages. Just a person who has an address, but does a lot of traveling. My specific scenario is that someone sends me a package that requires a signature. UPS attempts to deliver the package when I’m not home, so they try again, and again. I assume at some point they give up and I lose the…
I wanted to see what the Bing AI (ChatGPT basically) had to say about CSLA .NET. I did tweak the result a little, but the vast majority of the following content was generated, and I think the results are pretty good. CSLA .NET: A Home for Your Business Logic What is CSLA .NET? CSLA .NET is a software development framework that helps you build a reusable, maintainable object-oriented business layer…
It has been a minute since I blogged, so this will be a newsy post. About a year ago I left Cognizant (ne Softvision), which had purchased Magenic. I stayed for a year post-acquisition, but I must say that working for a 300,000+ person company is (for me) the opposite of fun. Maybe other similarly sized orgs have cultures more compatible with my worldview? My intent was to focus on speaking,…
Containers are rapidly becoming the primary deployment model for server-side code, whether that be a web site, an app server, or other server-side code that you need to run in your environment. Containers offer substantial value, because a container image is created at build time, and once created, the same container image can be used for dev testing, QA testing, and ultimately pushed into…
Given all that’s happening at Twitter I, like many people, started looking at alternatives like Mastodon. Folks already part of the Mastodon world (fediverse they call it) seem to be a mix of excitement as their corner of reality is discovered by the larger world, and fear as their corner of reality is invaded by random folks from the larger world. Very understandable! Like many people, this whole…
This is another in a series about how I got into computers and how my career has unfolded. Part 1 was pre-university Part 2 was university Part 3 was an internship Part 4 was my first job search Part 5 was my first programming job Part 6 was my second programming job Part 7 was my foray into IT Pro work Part 8 was my return to app dev Part 9 was about my final job search (I hope) Part 10 was about…
I am excited to say that I’m taking the next step in my career: becoming self-employed to focus fully on open-source, speaking, and writing. With maybe a little consulting here and there. This is the culmination of years of planning. One of my mentors and inspirations, William Vaughn , showed me the path I plan to follow, and I appreciate his impact on my career and life. I’ve been writing a…
I mostly blog about tech topics, and don’t fancy myself to be a JD Meier by any means. That said, I’ve been in various supervisor, manager, and executive leadership roles over the past couple decades, and there are two books I’ve found invaluable when it comes to understanding how to motivate and retain people. First is an old one called The Hacker Ethic . This book posits that the term “hacker”…