Author: Richard Seroter

  • Daily Reading List – July 14, 2025 (#586)

    I liked some of the advice and data in today’s reading list. Learn about taking care of yourself as a leader, generating media from agentic CLIs, embracing personal growth, and building better distributed systems.

    [blog] The 2025 Docker State of Application Development Report. Tons of interesting data points in this survey. See what devs think of AI, remote dev environments, containers, and places to learn.

    [article] Leading Is Emotionally Draining. Here’s How to Recover. I get that most individual contributors won’t spend a lot of time sympathizing with the challenges of leadership. But it’s no joke, and a heavy investment in leadership is more work that it appears.

    [blog] Gemini CLI Tutorial Series — Part 5 : Github MCP Server. I go hot and cold on MCP. However, this is a good example of where it’s handy for agentic CLI work.

    [blog] Give Gemini CLI the Ability to Generate Images and Video, Work with GitHub Repos, and Use Other Tools. Dammit, now I’m hot again on MCP. Here’s another scenario where an MCP brings functionality to the Gemini CLI that wouldn’t have otherwise been there.

    [blog] How to Shift What You Think Is Possible. Growth looks different to beginners than experts. But both need a way to rethink what’s possible.

    [blog] Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity. On Friday, I linked to a paper that showed a slowdown when devs used AI tools. Simon explores this further.

    [blog] The GitOps Repository Structure: Monorepo vs. Polyrepo and Best Practices. Are you a monorepo person who likes everything in one place? Or is your source code and config data distributed across many repos? Here is advice for both.

    [blog] Gemini Embedding now generally available in the Gemini API. Generate embeddings with this high performing and competitively priced model.

    [blog] Distributed Systems Mistakes Nobody Warns You About: Consistency. Yes. It’s easy to assume that all the related operations succeeded, but you get into a funky state when you have a a bunch of async updates and one fails.

    [blog] What You Actually Need to Monitor AI Systems in Production. Good topic, and not one I’ve seen widely discussed. What should you be keeping track of at each app stage?

    [article] Building Autonomous Systems: A Guide to Agentic AI Workflows. This DigitalOcean article has a fairly rich look at the use cases, patterns, and technologies around agents.

    [blog] How to Teach Gemini CLI to Write Python Scripts with Inline Dependencies. I think we’re selling ourselves short on our role with these AI tools. There are so many cases where our creativity is applied to “teach” these tools to do cool things.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 11, 2025 (#585)

    Good end to the week. I appreciate having co-workers that I can just call up and strategize with. Or complain too. Or celebrate with. All at the same time.

    [youtube-video] The Agent Factory – Episode 1: Agents, their frameworks and when to use them. This new podcast/video series has promise. It features some colleagues who did a good job looking at the overall landscape, and zeroing in on some Google innovations.

    [article] Stop forcing AI tools on your engineers. Very good advice here. Definite give teams time to explore, give space, and know what matters. Also, don’t wait forever.

    [blog] Beyond GROUP BY: Introducing advanced aggregation functions in BigQuery. This seems like a good deal for data folks. The post calls out some big performance and efficiency benefits of these new aggregation functions.

    [blog] Our new approach to enterprise CI/CD: Free tier, source available, and guaranteed savings. There’s still interesting work happening in the CI/CD space. The Semaphore folks are making some moves.

    [blog] User Count: One. Bespoke Software with Gemini CLI. You can just build software for yourself. Billy wanted help focusing, so built a Chrome extension for an audience of one.

    [article] AI coding tools may not speed up every developer, study shows. I’m not just going to read (and share) posts that say everything is sunshine. We’re still all figuring out where these AI tools add value, and when other fundamentals need to be in place for them to be useful.

    [article] Ollama or vLLM? How to choose the right LLM serving tool for your use case. “When to use what” is such an important question in so many areas nowadays. Here’s help with LLM serving tools.

    [blog] Google Brings the Lustre Parallel File System to Its Cloud. Teams are trying to squeeze out every bit of performance on their ML jobs, and this should help them do that, with less management.

    [blog] SQL reimagined: How pipe syntax is powering real-world use cases. You should give this a whirl. In reading the example queries, it does seem to have some real benefits over standard SQL.

    [blog] Graph foundation models for relational data. This seems like some creative thinking around ML algorithms and training data.

    [blog] How to use GenAI as an Executive Assistant. Lak wrote a series of seven posts (so far) about different roles that you can apply generative AI to. Check out his other posts about engineering, research, analyst, and more.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 10, 2025 (#584)

    I’m officially having a hard time keeping up with this industry. My feed reader is constantly overflowing, the social feeds never stop, and vendors keep shipping interesting things. I’ll likely compensate by narrowing my attention a bit, but wow. So much happening.

    [blog] Docker Brings Compose to the Agent Era: Building AI Agents is Now Easy. Very cool integrations for AI frameworks, and publishing Compose specs to Google Cloud Run in one command.

    [blog] From localhost to launch: Simplify AI app deployment with Cloud Run and Docker Compose. Our deeper dive into Docker’s announcement.

    [blog] How I use LLMs to learn new subjects. This seems like a reasonable way of looking at it. I liked the points about hallucinations.

    [article] Survey Surfaces Significant Lack of Visibility Into Software Supply Chain Risks. It seems that a lot of folks don’t think they can see supply chain problems. Can you?

    [docs] GraphRAG infrastructure for generative AI using Vertex AI and Spanner Graph. Here’s a terrific new guide for those doing a graph-based approach to retrieval augmented generation.

    [article] How to Communicate with Your Team When Business Is Bad. We all react differently when a crisis hits. This post encourage a wise approach to handling this within your team.

    [article] Shadow AI emerges in the enterprise. This is the least surprising headline of the year. 80% say employee AI tool adoption is outpacing the capacity for IT teams to vet the apps. And the other 20% are lying about it.

    [article] How to Measure the ROI of AI Coding Assistants. Great asset here for team leaders that want to figure out what really matters in their dev experience.

    [article] Introducing the AI Measurement Framework. Here’s more detail on the framework called out in the preceding article. Looks useful!

    [blog] Cloud Storage bucket relocation: An industry first for non-disruptive bucket migrations. It’s not easy to move an object storage bucket to a different region. At least if you’re in any cloud besides Google’s.

    [blog] Navigating the Mythical Sea of Sameness. I thought this was educational for those of us who communicate to others. Talking about differentiation can sometimes feel like bragging, but it’s important to help people understand what your company/product is uniquely doing.

    [blog] What can agents actually do? Practical look at what AI agents are about, how to think about them, and what they’re capable of.

    [blog] BigQuery meets ADK: 10 tips to safeguard your data (and wallet) from agents. We need more content about how to protect key assets in an environment with agents running loose.

    [blog] A new era of Stack Overflow. I seem to recall a few of these resets from Stack Overflow lately, but I appreciate that they’re actively thinking about how to stay relevant to devs.

    [article] Elon Musk’s xAI launches Grok 4 alongside a $300 monthly subscription. The bar keeps going up, and Grok 4 has some impressive performance. Some testing already from Simon.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 9, 2025 (#583)

    When your day is typically full of meetings, does a light meeting day throw you off? It does for me, and I have to be very intentional about how I spend time. That was today, and I was able to get a few tasks done ahead of schedule.

    [article] Hugging Face just launched a $299 robot that could disrupt the entire robotics industry. Looks great. Pre-order available now, not yet shipping or a ton of details.

    [blog] Full-breadth Developers. Google is called out here as an anti-pattern, but I still really liked this post from Justin about bringing together the product (design) and execution skills into the developer role.

    [blog] AI-Native Test Automation is Here. There’s been hand-wringing about AI slop resulting in more low-quality apps. But maybe, AI will help us add better testing than we have in the past?

    [paper] Deep Research Agents: A Systematic Examination And Roadmap. You’ve got many choices when it comes to doing thorough research using an AI agent. This paper explores the core architectures and approaches of popular options.

    [blog] Gen AI Evaluation Service — Computation-Based Metrics. What metrics should you use in your generative AI evals? Mete looks at computation-based metrics which are based on mathematics. He’s also got a great follow-on post that explains model-based metrics.

    [blog] AI Tooling, Evolution and The Promiscuity of Modern Developers. Everything is up for grabs right now, as Stephen told me last week. He wrote a great piece today that you should read.

    [article] Context Engineering: Going Beyond Prompt Engineering and RAG. If I’m the reason you keep seeing this term, my apologies. But I’m seeing it show up in many places.

    [article] Spec-driven Development. Brian goes into depth on a topic I touched on last week. He does a terrific job explaining “agent docs” and doing explicit architecture and task management for the LLM.

    [article] Against “Brain Damage.” This piece by Ethan reinforces why I’m gravitating to the spec-driven work that Brian highlighted above. It ensures that we’re still thinking, prioritizing, and steering creative work. And, not using AI as a crutch for everything, but still doing free thinking!

    [article] Idle Thoughts On Programming and AI. A lot here, but it also builds on the last two items on the list. Software engineering feels like it’s changed more in the past 5 months than it has in the last 10 years.

    [blog] Google Agent Development Kit (ADK): A hands-on tutorial. Terrific content here from Weights & Biases looking at building and evaluating AI agents.

    [article] Tech unemployment rate hits lowest yet in 2025: CompTIA. Confusing, eh? With so much doom and gloom about layoffs and a bad tech market, it seems that open roles have simply shifted from big tech to many other places.

    [youtube-video] Getting Started with Agent Development Kit Tools (MCP, Google Search, LangChain, etc.). This is a great conversation and I really like how Megan and Jack position the problem space and corresponding solutions.

    [blog] Gemini CLI Tutorial Series — Part 4 : Built-in Tools. More tools discussion, this time looking at what’s included in the Gemini CLI. Part 3 looked at config settings.

    [article] Why Senior Leaders Should Stop Having So Many One-on-Ones. Wow, this one made me stop and think. Should senior-level 1:1s be only focused on development, and leave comms and decisions only to group settings?

    [blog] Unlock the Power of MCP Toolbox in Your Go Applications. Go developers can now use this SDK to access databases as tools within AI apps.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 8, 2025 (#582)

    Today’s list had a good variety of contrarian takes. I’m unabashedly an AI optimist (even if that means Redditors think I’m an idiot), but I absorb a variety of points of view to try and stay grounded. And, I try to use most of the things I talk about in order avoid irrational optimism.

    [blog] AI-Assisted Legacy Code Modernization: A Developer’s Guide. I’ve been studying this topic lately (how AI contributes to code modernization), and liked this post.

    [blog] The Future of Engineering Leadership. Excellent advice. Becoming closer to the code, becoming more strategic, focusing on the business, and being an attentive leader are all important (required?) moving forward.

    [blog] Announcing Vertex AI Agent Engine Memory Bank available for everyone in preview. Hey now, a fully managed memory service for your AI agents? This looks convenient to use, and works with multiple AI agent frameworks.

    [article] Everyone in tech has an opinion about Soham Parekh. This was a wild story at the end of last week that had about a 36 hour news cycle.

    [blog] Writing Code Was Never The Bottleneck. Code understanding is the hard part. Great take here.

    [blog] Stop Building AI Agents. Now for some counter-programming to all the agent hype. Basically, don’t start with agents when simpler patterns are better.

    [blog] Autonomous testing and the future of developer productivity. My friend Bryan just started at a very interesting company, and I’m glad to see him writing about topics like this.

    [article] Technical debt is just an excuse. Spicy take! If you didn’t/don’t have explicit work planned to fix previous shortcuts, don’t call it “tech debt.” It’s just bad code from making bad decisions.

    [blog] Taming agentic engineering – Prompts are code, .json/.md files are state. Fantastic piece that lays out a way of thinking about “programming” these LLMs and using state files to your advantage.

    [article] Expectations for Agentic Coding Tools: Testing Gemini CLI. Speaking of agentic coding tools, The New Stack puts the Gemini CLI through the paces.

    [article] Context Engineering Guide. Here’s an in-depth look at a concept that’s quickly growing in relevance. You might hate all these emerging terms, but look past that and study the ideas.

    [blog] Improve your coding flow with Gemini Code Assist, Gemini CLI and Gitlab. Agents in the IDE are helpful, and adding MCP servers that talk to your source repo make them even more helpful.

    [article] 30 Years of JavaScript: 10 Milestones That Changed the Web. Such an important technology. It was fun to see this look at how we got to where we are now.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 7, 2025 (#581)

    I’m refreshed (and sunburned) after a long holiday weekend. Today wasn’t as packed with meetings as usual, so it was also great to crank out a blog post (in addition to this one), empty my inbox, and take some AI training. And get to read a lot, as you’ll see below.

    [article] Arriving at ‘Hello World’ in enterprise AI. Top-down selling of AI into enterprises is a tough route. You also need bottoms-up enthusiasm and wins to get real traction.

    [blog] 10 Tools For Building MCP Servers. We’re going to overdo it on MCP servers, aren’t we? Seems inevitable. If you want to join the gold rush, here’s a list of frameworks that get you there faster.

    [blog] Building your first AI product: A practical guide. Good insight from an engineering leader at Box who helped build their flagship generative AI product.

    [blog] Vibe Coding a 5,000km Bike Race Part II: Production ready with Gemini driven development. Fantastic guidance from Esther here on taking a vibe-coded app and working through the key domains that make it production ready.

    [article] Why “I’m Sorry” Are Two of the Strongest Words for Leaders. Real sorrys. Not the pretend “I’m sorry you didn’t like what I said” or “I’m sorry for that, but …” stuff.

    [article] How has AI impacted engineering leadership in 2025? Good insights, although AI usage data collected in March is already woefully dated. And I wonder if we’re working off a common definition of “developer productivity.” Probably not.

    [book] Agentic Design Patterns. My colleague is writing this book out in the open in a series of Google Docs. Anyone can view or offer suggestions. Terrific content!

    [blog] A guide to converting ADK agents with MCP to the A2A framework. Don’t add this sort of machinery until you need it. But when you do, it’s good to know how to do it.

    [article] Mastercard’s massive structured data stores drive its success with today’s AI applications. Bravo. Seems like the team at Mastercard have put in the hard work to have a great data foundation that now makes AI and ML useful at scale.

    [blog] Batch Mode in the Gemini API: Process more for less. It’s async, with higher limits, lower cost, and a good fit for big jobs where results 24 hours later are fine.

    [blog] Ready for Rust? Announcing the Official Google Cloud SDK for Rust. Rust has a lot of fans, and now they have easier access to a great cloud platform.

    [article] Research: Executives Who Used Gen AI Made Worse Predictions. Check this out to better understand where to guard against thoughtless acceptance of AI answers.

    [blog] From Prompt to Code Part 2: Inside Gemini CLI’s Memory and Tools. I like posts that show how to use features. But with open source projects, you can also show how the underlying code actually works. That’s what we have here. And part 3 which explores safety and extensibility of the Gemini CLI.

    [blog] From Open Model to Agent: Deploying Qwen3 ADK agent on Vertex AI Agent Engine. Use open models in an open agent framework, and deploy to a cloud runtime. Sounds good to me.

    [blog] Hear a podcast discussion about Gemini’s multimodal capabilities. There’s still so much untapped potential when you have LLMs that can understand the world around it. Great discussion between Logan and Ani.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Quality-focused prompts for the vibe coding addict

    You’ve vibe coded an app? Congrats. That’s cool. Maybe you’re completely new to programming, or you’ve been doing it awhile. It’s possible you’ve seen some of the horror stories online of folks vibe coding something, deploying it, and then watching it collapse as folks flooded and hacked it. Yikes. It’s important to pay attention to quality attributes. Sometimes called non-functional requirements, these are key aspects of a well-built software system. They include traits like usability, maintainability, security, reliability, scalability, availability, and flexibility. While you might expect (hope?) that your vibe coding service created software that always adheres to these concepts, you shouldn’t assume so. And either way, these are important characteristics to understand if you want to mature as a software creator.

    You can get AI to help here, though. I used Google AI Studio and Gemini 2.5 Pro to generate some prompts you could apply after you’ve built an app using Bolt, Vercel’s v0, Lovable, or Gemini Canvas. Maybe you plug those generated prompts into the Gemini CLI after you’ve downloaded the code from your vibe coding session. Here’s my initial prompt, which you could take and adjust however you want:

    I’ve vibe coded an app, and now want to make sure it’s of high enough quality to ship to production. I’m not a professional developer. Suggest 3-5 comprehensive and understandable LLM prompts I should now offer my agentic CLI to check for software quality attributes like usability, reliability, performance, observability, security, repeatability, scalability, availability, flexibility, and maintainability.

    Below is the direct output from Gemini, including the proposed prompts that hardens your software while making it more fault tolerant and scalable.


    Here are 4 comprehensive prompts designed to be fed to your agentic CLI. They are structured to cover all the quality attributes you mentioned in a logical, step-by-step manner.

    The Strategy: From Code to Cloud

    We’ll use a layered approach. Think of it like building a house:

    1. The Blueprint & Foundation: Is the code itself clean, organized, and easy to understand? (Maintainability, Flexibility)
    2. The Walls & Locks: Is the application secure and can it handle errors gracefully? (Security, Reliability)
    3. The Engine & Plumbing: Can the app perform under load and tell you when it’s sick? (Performance, Scalability, Observability)
    4. The Assembly Line: Can you build and deploy it consistently every single time? (Repeatability, Availability, Scalability)

    Prompt 1: The Code Quality & Maintainability Audit

    Goal: This prompt focuses on cleaning up the existing “vibe code.” It makes your app easier for you (and your AI agent) to understand, modify, and extend in the future.

    Attributes Covered: Maintainability, Flexibility, Repeatability (at the code level).

    Act as a senior software engineer and mentor conducting a thorough code review of my entire project. Your goal is to improve its long-term maintainability, flexibility, and readability. Analyze the whole codebase and provide the following:

    1. **Refactoring for Clarity:** Identify the top 5 functions or classes that are too long, complex, or have unclear names ("code smells"). For each, provide a refactored version that is simpler, follows the Single Responsibility Principle, and has clearer naming.
    2. **Configuration & Secrets:** Scan the code for any hardcoded configuration values (like API endpoints, database strings, or magic numbers). Suggest extracting them into a centralized configuration file (e.g., `config.js`, `.env`, or `settings.py`) and provide the template for this file. Flag any plain-text secrets immediately.
    3. **Dependency Review:** List all external libraries and dependencies. Point out any that are deprecated, have known major issues, or could be replaced by a more standard/modern alternative.
    4. **Automated Quality Gates:** Generate a configuration file for a standard linter and code formatter for my project's language (e.g., `.eslintrc.json` and `.prettierrc` for JavaScript/TypeScript, or `pyproject.toml` for Python with Black and Ruff). This ensures future code stays clean.
    5. **Documentation:** Generate a template for a `README.md` file that includes a project description, setup instructions for a new developer, and an explanation of the core project structure.

    Prompt 2: The Security & Reliability Hardening

    Goal: This prompt switches focus to making your app robust against attacks and resilient to failure. It assumes the code is now cleaner from Prompt 1.

    Attributes Covered: Security, Reliability, Availability.

    Act as a paranoid but helpful security and reliability engineer. Your mission is to identify and help me fix potential security vulnerabilities and sources of unreliability in my application. Analyze the entire codebase and provide a report with actionable code suggestions for the following:

    1. **Security Vulnerability Scan (OWASP Top 10):**
    * **Input Validation:** Find all points where the application accepts user input (API endpoints, forms, etc.). Check for potential injection vulnerabilities (SQL, NoSQL, Command).
    * **Cross-Site Scripting (XSS):** Check if output to the user is properly sanitized or escaped.
    * **Authentication/Authorization:** Review how users are authenticated and how their permissions are checked. Look for common flaws.
    * **Insecure Dependencies:** Scan my `package.json`, `requirements.txt`, etc., for dependencies with known security vulnerabilities (CVEs) and suggest updated, secure versions.

    2. **Error Handling & Reliability:**
    * Identify all critical code paths (e.g., database calls, external API requests, file I/O).
    * Pinpoint areas lacking proper error handling (e.g., missing `try...catch` blocks or unchecked errors).
    * For each area, suggest adding robust error handling that prevents the app from crashing and provides a clear error message or fallback.

    3. **Availability Checkpoint:**
    * Suggest creating a simple health check endpoint (e.g., `/healthz` or `/status`). This endpoint should return a `200 OK` status if the app is running and can connect to its essential services (like the database). Provide the code for this endpoint.

    Prompt 3: The Performance, Scalability & Observability Tune-Up

    Goal: Now that the app is clean and secure, let’s make it fast and ensure you can see what’s happening inside it when it’s running.

    Attributes Covered: Performance, Scalability, Observability.

    Act as a Site Reliability Engineer (SRE) focused on performance and observability. Your goal is to ensure my application can handle growth and that I can diagnose problems in production. Analyze the codebase and suggest improvements in these areas:

    1. **Performance Bottlenecks:**
    * **Database Queries:** Identify any database queries performed inside loops (N+1 query problem). Suggest how to optimize them into a single, more efficient query.
    * **Heavy Computations:** Find any computationally expensive operations or inefficient algorithms that could block the main thread or slow down responses. Suggest optimizations or asynchronous execution.
    * **Data Handling:** Look for places where the app loads very large amounts of data into memory at once. Suggest using pagination, streaming, or chunking.

    2. **Observability - Logging & Metrics:**
    * **Structured Logging:** Review my current logging (or lack thereof). Propose a structured logging strategy (e.g., JSON format). Refactor 3-5 key `console.log` or `print` statements to use this new structured logger, including important context like user ID or request ID.
    * **Key Metrics:** Identify the 3 most important metrics for my application's health (e.g., API request latency, error rate, number of active users). Show me where and how to instrument the code to capture these metrics, even if it's just with a logging statement for now.

    3. **Scalability Review:**
    * Identify anything that would prevent me from running multiple instances of this application (horizontal scaling). This usually involves checking for in-memory state that should be moved to a shared store like a database or Redis (e.g., session stores, caches, locks).

    Bonus Prompt 4: The Production-Ready Deployment Blueprint

    Goal: This prompt bridges the gap between your laptop and a real server. It makes your deployment process automatic, reliable, and repeatable.

    Attributes Covered: Repeatability, Availability, Scalability.

    Act as a DevOps specialist. My application is now clean, secure, and performant, but I need a professional and repeatable way to deploy it. Based on my project's language and framework, generate the necessary files and configurations to containerize it and set up a basic deployment pipeline.

    1. **Containerization:** Create a multi-stage `Dockerfile`. The first stage should build the application (installing dev dependencies and compiling assets), and the final stage should be a lean, production-optimized image containing only the necessary runtime files and dependencies. Add comments explaining each step.
    2. **Local Development Environment:** Create a `docker-compose.yml` file. This file should define my application's service and any other services it depends on (like a database or a cache). This will allow any developer to spin up the entire stack with a single command (`docker-compose up`).
    3. **Configuration Management:** Create a `.env.example` file that lists all the environment variables the application needs to run (from Prompt 1), with placeholder values. This file serves as a template for production, staging, and development environments.
    4. **Continuous Integration (CI):** Generate a basic CI pipeline configuration file for GitHub Actions (`.github/workflows/ci.yml`). This pipeline should trigger on every push to the main branch and automatically:
    * Install dependencies.
    * Run the linter and code formatter checks (from Prompt 1).
    * (If you have them) Run any automated tests.
    * Build the Docker image to ensure it works.

    By running your app through these four prompts, you’ll have systematically addressed the most critical software quality attributes, transforming your “vibe-coded” project into something you can be confident shipping to production.


    Is this fun to do? I dunno. Maybe not as much fun as watching an agentic service crafting software right before your eyes. But it’s the right thing to do.

  • Daily Reading List – July 2, 2025 (#580)

    I’ve got a couple days off for our Independence Day holiday, so this reading list needs to hold you over until Monday. It’s a big one!

    [article] Most enterprises can’t secure AI, Accenture says. “Can’t” or “haven’t”? Sounds like the former as it appears that many organizations don’t have the tech or investment to do so.

    [blog] Cloud CISO Perspectives: The global threats facing EU healthcare. I know AI investments can be at the expense of security ones, but don’t neglect a robust security strategy.

    [blog] How I write production-ready Spring Boot applications. Good post. My brain is now broken by AI so my first thought when reading this was “these would be good instructions to add to a GEMINI.md file.”

    [blog] How AI Agents Are Changing API Rate Limit Approaches. Your network traffic, storage patterns, and yes, even API interactions will change when AI agents get going.

    [article] When a PM takes over engineering. I haven’t seen this talked about much, and there’s some good advice here for those coming into engineering management from product.

    [blog] Most Effective Infrastructure as Code (IaC) Tools. There’s going to be some implicit bias here because Pulumi is doing the assessment, but I thought this was a fair look at the overall landscape.

    [blog] New Gemini tools for students and educators. This is the likely the domain where AI can be the most useful, and also the most dangerous. It’s fantastic as a learning and personalization tool. Unprecedented. It’s also made it easier to only learn how to prompt.

    [blog] Agentic Coding Recommendations. Meaty set of recommendations here. We’re all learning right now, and what works for one person may not work for you. But study what folks are up to.

    [blog] Turning my Resume Into an Interactive Game : ReactJs & Go. The post is ok, but the idea really struck me. What a creative way for someone to “explore” your job history.

    [blog] 6 skills every engineer needs for the AI era. From the Figma team. I didn’t see anything earth-shattering, but again, keep observing what others are learning.

    [blog] Is it time to switch CI/CD platforms? 7 warning signs. I’d bet that your CI/CD tech is pretty sticky. You don’t swap it out very often. But there are times when you’re past due for a refresh.

    [blog] Gemini CLI: vibecode a Next.js app and push to the Cloud! Fun walkthrough that shows the usefulness of the Gemini CLI. And I’m reading this in Riccardo’s voice, which made it more enjoyable.

    [article] Cursor launches a web app to manage AI coding agents. Is there a lot out there already for coordinating, visualizing, and operating agents? Not that I’ve seen.

    [blog] Building Autonomous AI systems with Looping Agents from Google’s Agent Development Kit (ADK). It’s common to build chains, but looping scenarios are a fascinating agent pattern.

    [blog] Vibe Learning is Underrated. Worthwhile read. AI makes learning new things feel less intimidating, as we can ask “dumb questions” or go on tangents without feeling guilty.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Daily Reading List – July 1, 2025 (#579)

    It was a fun day in Sunnyvale learning from the Redmonk folks. We talked about “developers” all day, and picked up some good insights. Before that, lots of reading.

    [blog] Beyond the Prototype: 15 Hard-Earned Lessons to Ship Production-Ready AI Agents. Great topic. This post has some strong advice and useful checklists for those thinking of putting agents in production.

    [blog] Gen AI Evaluation Service — An Overview. I’ve mentioned here a few times that building skills in evals is a good idea. Mete spends time in this post exploring one eval service for models, tools, and agents.

    [article] The AI-Native Software Engineer. My colleague Addy published a super playbook on incorporating AI deeply into the software engineering discipline. We published complementary posts at almost exactly the same time today.

    [article] Why attitudes and experiences differ so much with regards to AI among technical writers. Adoption and opinions of AI are all over the map. Tom spends some time thinking through the tech writer mindset.

    [blog] Go should be more opinionated. The point here is about application layout and structure. I’ve definitely seen a few approaches, and not sure the language should dictate one. But, a smart default is a good idea.

    [blog] Docs for AI agents. Here’s a good mishmash of thoughts about the docs agents use to plan and do their work on your codebase.

    [blog] Why We Replaced Kafka with gRPC for Service Communication. Have you fallen in love with a tool/service and use it for everything? We’ve all been there. I liked this look at switching from Kafka to gRPC for many use cases.

    [blog] Gemini CLI Tutorial Series — Part 2 : Gemini CLI Command line parameters. Romin does a great job reviewing each CLI flag. Here’s how you control model choice, debug mode, sandboxing, YOLO mode, and more.

    [blog] Everything I know about good system design. Patterns evolve, the tech changes, and what’s “good” doesn’t stay the same. But the items called out here represent some solid design truths.

    Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:

  • Here’s what AI-native engineers are doing differently than you

    The “what” and the “how” in software engineering occasionally change at the same time. Often, one triggers the other. The introduction of mainframes ushered in batch practices that capitalized on the scarcity of computing power. As the Internet took off, developers needed to quickly update their apps and Agile took hold. Mobile computing and cloud computing happened, and DevOps emerged shortly thereafter. Our current moment seems different as the new “what” and “how” are happening simultaneously, but independently. The “what” that’s hot right now is AI-driven apps. Today’s fast-developing “how” is AI-native software engineering. I’m seeing all sorts of teams adopt AI to change how they work. What are they doing that you’re not?

    AI natives always start (or end) with AI. The team at Pulley says “the typical workflow involves giving the task to an AI model first (via Cursor or a CLI program) to see how it performs, with the understanding that plenty of tasks are still hit or miss.” Studying a domain or competitor? Start with Gemini Deep Research or another AI research service. Find yourself stuck in an endless debate over some aspect of design? While you argued, the AI natives built three prototypes with AI to prove out the idea. Googlers are using it to build slides, debug production incidents, and much more. You might say “but I used an LLM before and it hallucinated while generating code with errors in it.” Stop it, so do you. Update your toolchain! Anybody seriously coding with AI today is using agents. Hallucinations are mostly a solved problem with proper context engineering and agentic loops. This doesn’t mean we become intellectually lazy. Learn to code, be an expert, and stay in charge. But it’s about regularly bringing AI in at the right time to make an impact.

    AI natives switched to spec-driven development. It’s not about code-first. Heck, we’re practically hiding the code! Modern software engineers are creating (or asking AI) for implementation plans first. My GM at Google Keith Ballinger says he starts projects by “ask[ing] the tool to create a technical design (and save to a file like arch.md) and an implementation plan (saved to tasks.md).” Former Googler Brian Grant wrote a piece where he explained creating 8000 character instructions that steered the agent towards the goal. Those folks at Pulley say that they find themselves “thinking less about writing code and more about writing specifications – translating the ideas in my head into clear, repeatable instructions for the AI.” These design specs have massive follow-on value. Maybe it’s used to generate the requirements doc. Or the first round of product documentation. It might produce the deployment manifest, marketing message, and training deck for the sales field. Today’s best engineers are great at documenting intent that in-turn, spawns the technical solution.

    AI natives have different engineer and team responsibilities. With AI agents, you orchestrate. You remain responsible for every commit into main, but focus more on defining and “assigning” the work to get there. Legitimate work is directed to background agents like Jules. Or give the Gemini CLI the task of chewing through an analysis or starting a code migration project. Either way, build lots of the right tools and empower your agents with them. Every engineer is a manager now. And the engineer needs to intentionally shape the codebase so that it’s easier for the AI to work with. That means rule files (e.g. GEMINI.md), good READMEs, and such. This puts the engineer into the role of supervisor, mentor, and validator. AI-first teams are smaller, able to accomplish more, capable of compressing steps of the SDLC and delivering better quality, faster. AI-native teams have “almost eliminated engineering effort as the current bottleneck to shopping product.”

    There are many implications for all this. Quality is still paramount. Don’t create slop. but to achieve the throughput, breadth, and quality your customers demand requires a leap forward in your approach. AI is overhyped and under-hyped at the same time, and it’s foolish to see AI as the solution to everything. But it’s a objectively valuable to a new approach. Many teams have already made the shift and have learned to continuously evaluate and incorporate new AI-first approaches. It’s awesome! If you’re ignoring AI entirely, you’re not some heroic code artisan; you’re just being unnecessarily stubborn and falling behind. Get uncomfortable, reassess how you work, and follow the lead of some AI-native pioneers blazing the trail.