[blog] How to write a good spec for AI agents. Goodness this is absolutely stuffed with useful information. Go through this and immediately up your game.
Do ever have those “perform research” days where you know your brain will be running a background thread even after you’re done working? I can sense it, after a day of investigating a handful of distinct areas.
[blog] Gemini introduces Personal Intelligence. When your AI assistant remembers its history with you, that’s helpful. When it “knows” your overall digital history, it becomes massively useful.
I talked too much today. Did a podcast episode with someone and was a guest at a fireside chat in our San Diego office. I try to listen more than I talk in 1:1s, so that balanced things out today a bit.
[blog] Your AI coding agents need a manager. You’ll see so much of this in 2026. We’re entering the phase of multiple agents working for you. Learn good communication skills, prioritization skills, and stay smart on the underlying tech.
[article] AI is rendering some IT skill sets obsolete. Some tech skills from 2010 are obsolete. Few things stay entirely static! But the pace may be accelerating for some skills that weren’t obviously open to replacement.
[blog] The Tool Bloat Epidemic. This post has a handful of solid suggestions for avoiding MCP tool bloat that eats your tokens and contributes to context rot.
[blog] Best practices for coding with agents. From Cursor. I’m not sure all “best practices” apply to each agentic tool, but there’s absolutely some general wisdom here.
[blog] Coding Agent Development Workflows. So many experience reports lately! I like it. People are figuring out the workflows that work best for them. Maybe some will turn into widely adopted techniques.
[blog] A gRPC transport for the Model Context Protocol. Being in a foundation doesn’t mean creators of an open project give up roadmap control. Make your voice heard if you’d like to see extensible transports for MCP.
Yes, there are such things as stupid questions. No, you can’t do anything you set your mind to. Yes, some ideas are terrible and don’t warrant further attention. That concludes our reality check and pep talk for today.
But hey, sometimes a bad idea can evolve to a less-bad idea. Do modern agentic coding tools keep us from doing terrible things, or do they simply help us do bad things faster? The answer to both is “sort of.”
They’re tools. They follow our instructions, and provide moments to pause and reflect. Whether we choose to take those, or ask the right questions, is up to us.
Let’s see an example. In almost thirty years of coding, I’ve never had as much fun as I’m having now, thanks to Google Antigravity. I can go from idea to implementation quickly, and iterate non-stop on almost any problem. But what if I have a dumb idea? Like an app where I’ll click a button every time I take a breath. Here’s my prompt to Antigravity:
Let's build a web app where I can track each breath I take. Make a button that I click when I take a breath in, and increment a counter. Call Gemini 3 Flash Preview with a variable holding my API key XXX-XXXXX-XXXXXX-XXXXX-XXXX and return an inspirational quote when I load the app for the first time. Store the hourly results of my breathing stats in an XML file in the app folder.
There’s probably like eight things wrong with this “app.” The idea is unsustainable, I shouldn’t store API keys as variables, and stashing results in the local file system is silly.
Does Antigravity stop me? Tell me I’ve been sniffing glue? It does not. But, our first moment of reflection is the resulting Implementation Plan and Task List. Antigravity dutifully sketches out a solution per my instructions, but I have a chance to evaluate what’s about to happen.
But I’ll stubbornly stay on point. Antigravity shrugs in quiet resignation and builds out my dumb app idea. Within a minute or two, I have the Antigravity-controlled Chrome instance that loads my app. The agent tests it, and proves that I have a Gemini-generated quote, and a way to track every breath I take. Yay?
My app implements the bad practices I asked for, and uses local XML for persistent storage.
I could stop here and “ship it.” I could also eat paint chips for lunch. Life is about choices.
But good product thinking isn’t about solving problems. It’s about finding the right problems. Asking “why”, repeatedly. Thinking through assumptions and considerations and arriving at a well-analyzed place.
What I should have done after getting my implementation plan from Antigravity is asked Gemini (or literally anyone) whether this was a good idea. Heck, I should I have asked for validation before it even started planning anything. But, we can still do it now. I asked Antigravity “Let’s pause. Is this app even a good idea?”
Here’s the full answer, which is pretty darn good. It doesn’t call me an idiot outright, but steers me towards areas I should be thinking of instead.
That is a great question to ask at this stage! Now that the “how” is solved, it’s worth reflecting on the “why.”
Whether this app is a “good idea” depends entirely on your goal. Here’s a breakdown of how it might be perceived:
Theoretically: It’s a Mindfulness Powerhouse
In many meditation and breathwork practices, conscious awareness is the goal. By requiring a manual click for every breath, you are forcing your brain into a state of absolute presence.
The Benefit: It prevents “mindless” breathing. You can’t click the button if you’re stuck in a stressful thought loop.
The Insight: The hourly XML data could reveal exactly when you’re most “unconscious” or stressed during the day.
Practically: It’s High-Friction
From a UX perspective, there are some significant hurdles:
The “Click Fatigue”: An average adult takes 12–20 breaths per minute. That’s nearly 1,000 clicks an hour. Even a dedicated monk might find that distracting!
Counter-Productivity: The act of tracking might actually disrupt the relaxation you’re trying to achieve. You might find yourself focusing on the button rather than the breath.
The “Sweet Spot” Strategy
If you’re feeling skeptical about tracking every breath, you could pivot the app’s purpose slightly without losing the work we’ve done:
Focused Sessions: Instead of an “all day” tracker, use it for a “Mindful 5 Minutes” exercise.
Stress Intervention: Keep it as a tool to use specifically when you feel anxious—a way to “anchor” yourself back to reality through physical interaction.
Automated Evolution: If you love the data but hate the clicking, the next step would be integrating with a wearable (like an Apple Watch) to fuel that XML file automatically.
Verdict: As a primary way to live your life, it’s probably too much work. But as a training tool or a “digital fidget spinner” for mindfulness, it’s a fascinating experiment in human-computer interaction.
What do you think? Does the “High-Friction” part make it less appealing, or does that friction actually feel like the “point” of the exercise to you?
As a next step, I asked Antigravity about continuing down this “mindful breathing” path and what sort of metrics might indicate success. Thinking through metrics is a great way to slow down and consider the measurable value of whatever you’re building.
This is great. I get different types of metrics to think about, and the answer concludes with ideas of how we might evolve the app to be more useful and practical.
I prompt Antigravity to take a few of these ideas and update the implementation plan that accounts for these new ideas and project goals.
I like it. In addition, I want to revisit some of the lazy tech assumptions I made early. My next prompt into Antigravity was this:
Now let's consider the app we've built so far. Does it follow good practices? Am I doing things securely, and with long-term maintenance in mind? What should we do differently for this to be more production ready?
I’m finally doing better work, more slowly. Challenging assumptions, and improving the quality attributes of the app. Now my plan factors in putting the Gemini API key in an environment variable, cleaning up project structure, and reconsidering the persistence layer.
I tell Google Antigravity to go ahead and implement the updated plan. It goes off to improve the quality of the code itself, but also the relevance of the idea. In a minute, I have an updated app that helps me do measured breathing for two minutes at a time.
It even adds pre-and-post mood checkers that can help determine if this app is making a positive difference.
Did Google Antigravity prevent me from doing dumb things? No. But I’m not sure that it should. Tools like this (or Conductor in the Gemini CLI) inject an explicit “planning” phase that give me an option to go slow and think through a problem. This should be the time when I validate my thinking, versus outsourcing my thinking to the AI.
I did like Antigravity’s useful response when we explored our “why” and pressed into the idea of building something genuinely useful. We should always start here. Planning is cheap, implementation is (relatively) expensive.
These are tools. We should still own the responsibility of using them well!
I had some fun agentic coding sessions over the weekend as I wanted to test a couple of hypotheses about how the tools worked. I learned some things, and hope to publish some short blogs this week!
[blog] The Blood Dimmed Tide of Agents. More agents for coding, or business outcomes? Yay! How are we supposed to manage them all? *crickets*
[blog] Don’t fall into the anti-AI hype. Don’t listen to me; listen to great engineers who are doing better work, while staying eyes-wide-open about the possible implications. The fun of building is untouched, though. More from Simon.
[blog] Start your meetings at 5 minutes past. It’s the only system that works. My group does it too. If you want to avoid the back-to-back meeting mania, force them to start minutes later.
[article] The biggest obstacle for engineer productivity in 2026. An AI agent can help you stay in the zone longer by keeping your from bouncing around different tools. But there’s also constant interruption as you wait for prompt results.
[blog] A2UI for Google Apps Script. This framework that lets agents generate dynamic UIs is pretty cool. Here, it’s implemented in a way that bakes into Google Workspace.
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
Happy Friday. It was a good first week back at work. In my reading so far this year, I’m wondering if we’ll see the same nonstop blitz of new technologies, or more focus on how to actually use it all. Feels like the latter.
[blog] Code Review in the Age of AI. Super valuable perspective here on how teams and solo devs need to think about code reviews. Even if (or especially if) AI is generating your code, it’s absolutely critical to ensure you have working software.
[article] DevProd headcount benchmarks, Q1 2026. How many people are in centralized teams (or roles) focused on developer productivity? Looks like an average of 4.7% of engineering headcount.
[blog] Introducing MCP CLI: A way to call MCP Servers Efficiently. I know that some people *really* dislike MCP—security model, hungry token consumption—but I’d bet many of those things get resolved. Philipp built a tool that solves for a few pain points.
[blog] Technical blogging lessons learned. A bunch of folks offer up their experience from years of writing. You’ll see some common themes.
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
It was nice getting a holiday break from writing newsletters, but I’ve got two to pump out tomorrow. Time to dust off some humiliating personal stories and non sequiturs to jazz up the content.
[article] Generative UI: The AI agent is the front end. I’m paying close attention to this space. It’s far from mature, but the possibility of personalized and dynamic UIs (that replace billions of lines of static frontend code) is interesting.
[blog] Virtual machines still run the world. Always a good reminder. Container use is growing, but it’s still dwarfed by the widespread deployment of VMs.
[blog] The economics of technical speaking. This doesn’t get talked about. Maybe it should. Your time is worth something and too many speakers do it for free.
I visited my Open Source Program Office team today in our San Francisco office, and also had other fun chats. In between, I tried my hand at getting a single LLM prompt to do something I wanted. A dozen experiments later, still hunting for the right instructions!
[blog] When Agents Talk to Each Other. Don’t know your A2A from your ACP? Allen looks at the need for agent communication, and then explores the protocols that have taken hold.
[blog] Creating space. Terrific post with a couple dozen statements about where you need to focus yourself so that you’re doing the most important things.
[article] When There’s Nowhere to Promote a Star Employee. Advancement can’t always be about promotion. Sometimes there’s no spot available. But there are plenty of ways to make someone’s job more challenging and impactful.
[blog] The Art of Fast Agents: 17 Strategies to Fix Latency. Maybe latency is a concern after you’ve already gotten agents figured out functionally, but I thought these were good areas to pay attention to at some point.
[article] Why enterprise AI pilots fail. I’m not sure if the failure rate here is much different than any other IT initiative—the track record for projects in our industry is lousy—but the advice here seems reasonable.
[blog] A Year Of Vibes. This post has all sorts of hard-fought insights. The one that jumped out to me was yet another person emphasizing that git might not be the right answer for code in the AI era.
[article] Generative AI and the future of databases. Here’s some insight into the challenges of going from natural language to SQL, and how databases are evolving to match what’s needed from AI workloads.
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
I’m in Sunnyvale for a couple of days hanging out with folks on my team. We’re also knee-deep in Google Cloud Next work. I hope you’ve already registered!
[blog] Collaboration sucks. Yeesh, that’s an aggressive way to start the reading list. The point here is to only get the right amount of feedback before taking charge and getting things done.
[blog] Best Flutter Features in 2025. I suspect that AI is going to cause some real disruption on the frontend. We can generate this code more easily now, but new paradigms like generative UIs will spark fresh interest.
[blog] Building internal agents. Great series of posts—nine so far—that explores the considerations and activities needed to build internally-focused AI agents.
[blog] 10 Prioritization Traps. Terrific list. There’s so much we can do, but should we be spending time on?
[article] Don’t Underestimate the Value of Professional Friendships. Don’t overestimate them either—you need friends outside of your business life. But also value the deeper relationships you can build with professional colleagues.
[blog] Bespoke software is the future. You probably have a LOT of custom software (reports, apps, scripts) for internal use. I don’t see why we’ll have any less moving forward.