Author: Richard Seroter

  • Daily Reading List – January 14, 2025 (#472)

    I hit the wall by late afternoon, and had to keep working on something against my will. But now I’m glad I stuck with it. What do you do when that happens to you?

    [paper] Titans: Learning to Memorize at Test Time. This might be a really big deal? This paper from Google Research talks about a successor to the Transformers architecture.

    [article] Google Expands Gemini Code Assist with Support for Atlassian, GitHub, and GitLab. It’s great functionality that keeps you in the IDE instead of bouncing around so much.

    [article] Getting exec buy-in for developer productivity initiatives. Good post. How can you speak in the language of your stakeholder to get them fired up about dev productivity?

    [article] Mistral’s new Codestral code completion model races up third-party charts. I saw this model getting some good publicity. Looks good!

    [article] Google Cloud could overtake Microsoft’s No. 2 cloud position this year. I care about this, but I don’t obsess about it. If we do the right things for customers, they’ll make their way over here.

    [article] The Insidious Effects of Hurrying. Are you suffering from “hurry sickness”? Most of us probably are, but need to identify and mitigate for the sake of our health.

    [blog] Angular 2025 Strategy. A lot of the web runs on Angular! It’s great to see a meaningful set of recent accomplishments, and aggressive plans for the year ahead.

    [blog] Arrange Your Code to Communicate Data Flow. Short post, but an important practice for developers to consider in their code.

    [blog] RAG Evaluation — A Step-by-Step Guide with DeepEval. If you’re doing retrieval augmented generation, you should have a process in place to evaluate your pipelines. Here are demos of two approaches.

    [blog] Go 1.24 interactive tour. I wish all release notes were like this. Try out the new Go features in the browser.

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

  • Daily Reading List – January 13, 2025 (#471)

    Many folks were working differently with AI long before anyone documented. But now folks are capturing some of these changes to the dev workflow. I wrote up a post yesterday on it, and there are complementary points in today’s reading list.

    [blog] AI-Driven Prototyping: v0, Bolt, and Lovable Compared. Excellent post from Addy about some fascinating tools for building apps.

    [blog] Why asking for the ROI of AI in software development is the wrong question. It’s past time to question whether AI makes software development better. It does. This post looks at measuring the impact of integrating it into the workflow.

    [blog] Prophecies of the Flood. Ethan talks about the conviction that AI researchers inside AI labs have about “the emergence of something unprecedented.”

    [blog] My AI/LLM predictions for the next 1, 3 and 6 years, for Oxide and Friends. Another smart person looks at the future. Nobody has any real idea of what’s going to happen, but even the thought-exercise is useful.

    [article] Open source licenses: Everything you need to know. Is this the most thrilling topic. No. But it does matter as you plan your long-term bets.

    [article] What Effective CEOs Do After Their First 90 Days. Any leaders should have a plan when taking over a new team or organization. This offers a decent blueprint!

    [blog] Understanding Private Cloud, Hybrid Infrastructure, Multi-Cloud, and Distributed Cloud: A Comprehensive Framework. Keith goes through each deployment model and how they interact.

    [blog] How to build dynamic web experiences with Conversational Agents. I hadn’t thought of making web pages evolve in reaction to what’s happening in the chat agent. Wild.

    [blog] How to be a Ghostbuster. Are nearly 10% of developers doing virtually no work in their job? This is on the offending dev, but also on the team leaders who aren’t close enough to the work.

    [blog] 8 coding lessons from almost three decades of software development. These are great. Hopefully your team discusses the ideas and their merits.

    [blog] Cursor vs Windsurf vs GitHub Copilot. You might not be downloading and using every AI tool right now. I’d have a lot of question is you WERE. Analysis like this helps you get the gist. See this related one on Windsurf vs Cursor from the same folks.

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

  • What does a modern, AI-assisted developer workflow built around Google Gemini look like? Let’s explore.

    What does a modern, AI-assisted developer workflow built around Google Gemini look like? Let’s explore.

    Software is never going to be the same. Why would we go back to laborious research efforts, wasting time writing boilerplate code, and accepting so many interruptions to our flow state? Hard pass. It might not happen for you tomorrow, next month, or next year, but AI will absolutely improve your developer workflow.

    Your AI-powered workflow may make use of more than one LLMs. Go for it. But we’ve done a good job of putting Gemini into nearly every stage of the new way of working. Let’s look at what you can do RIGHT NOW to build with Gemini.

    Build knowledge, plans, and prototypes with Gemini

    Are you still starting your learning efforts with a Google search? Amateurs 🙂 I mean, keep doing those so that we earn ad dollars. But you’ve got so many new ways to augment a basic search.

    Gemini Deep Research is pretty amazing. Part of Gemini Advanced, it takes your query, searches the web on your behalf, and gives you a summary in minutes. Here I asked for help understanding the landscape of PostgreSQL providers, and it recapped results found in 240+ relevant websites from vendors, Reddit, analyst, and more.

    Gemini Deep Research creating a report about the PostgreSQL landscape

    You’ve probably heard of NotebookLM. Built with Gemini 2.0, it takes all sorts of digital content and helps you make sense of it. Including those hyper-realistic podcasts (“Audio Overviews”).

    Planning your work or starting to flesh out a prototype? For free, Google AI Studio lets you interact with the latest Gemini models. Generate text, audio, or images from prompts. Produce complex codebases based on reference images or text prompts. Share your desktop and get live assistance on whatever task you’re doing. It’s pretty rad.

    Google AI Studio’s Live API makes it possible to interact live with the model

    Google Cloud customers can get knowledge from Gemini in a few ways. The chat for Gemini Cloud Assist gives me an ever-present agent that can help answer questions or help me explore options. Here, I asked for a summary of the options for running PostgreSQL in Google Cloud. It breaks the response down by fully-managed, self-managed, and options for migration.

    Chat for Gemini Code Assist teaches me about PostgreSQL options

    Gemini for Google Cloud blends AI-assistance into many different services. One way to use this is to understand existing SQL scripts, workflows, APIs, and more.

    Gemini in BigQuery explains an existing query and helps me learn about it

    Trying to plan out your next bit of work? Google AI Studio or Vertex AI Studio can assist here too. In either service, you can pass in your backlog of features and bugs, maybe an architecture diagram or two, and even some reference PDFs, and ask for help planning out the next sprint. Pretty good!

    Vertex AI Studio “thinking” through a sprint plan based on multi-modal input

    Build apps and agents with Gemini

    We can use Google AI Studio or Vertex AI Studio to learn things and craft plans, but now let’s look at how you’d actually build apps with Gemini.

    You can work with the raw Gemini API. There are SDK libraries for Python, Node, Go, Dart, Swift, and Android. If you’re working with Gemini 2.0 and beyond, there’s a new unified SDK that works with both the Developer API and Enterprise API (Vertex). It’s fairly easy to use. I wrote a Google Cloud Function that uses the unified Gemini API to generate dinner recipes for whatever ingredients you pass in.

    package function
    
    import (
    	"context"
    	"encoding/json"
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    	"google.golang.org/genai"
    )
    
    func init() {
    	functions.HTTP("GenerateRecipe", generateRecipe)
    }
    
    func generateRecipe(w http.ResponseWriter, r *http.Request) {
    	ctx := context.Background()
    	ingredients := r.URL.Query().Get("ingredients")
    
    	if ingredients == "" {
    		http.Error(w, "Please provide ingredients in the query string, like this: ?ingredients=pork, cheese, tortilla", http.StatusBadRequest)
    		return
    	}
    
    	projectID := os.Getenv("PROJECT_ID")
    	if projectID == "" {
    		projectID = "default" // Provide a default, but encourage configuration
    	}
    
    	location := os.Getenv("LOCATION")
    	if location == "" {
    		location = "us-central1" // Provide a default, but encourage configuration
    	}
    
    	client, err := genai.NewClient(ctx, &genai.ClientConfig{
    		Project:  projectID,
    		Location: location,
    		Backend:  genai.BackendVertexAI,
    	})
    	//add error check for err
    	if err != nil {
    		log.Printf("error creating client: %v", err)
    		http.Error(w, "Failed to create Gemini client", http.StatusInternalServerError)
    		return
    	}
    
    	prompt := fmt.Sprintf("Given these ingredients: %s, generate a recipe.", ingredients)
    	result, err := client.Models.GenerateContent(ctx, "gemini-2.0-flash-exp", genai.Text(prompt), nil)
    	if err != nil {
    		log.Printf("error generating content: %v", err)
    		http.Error(w, "Failed to generate recipe", http.StatusServiceUnavailable)
    		return
    	}
    
    	if len(result.Candidates) == 0 {
    		http.Error(w, "No recipes found", http.StatusNotFound) // Or another appropriate status
    		return
    	}
    
    	recipe := result.Candidates[0].Content.Parts[0].Text // Extract the generated recipe text
    
    	response, err := json.Marshal(map[string]string{"recipe": recipe})
    	if err != nil {
    		log.Printf("error marshalling response: %v", err)
    		http.Error(w, "Failed to format response", http.StatusInternalServerError)
    		return
    	}
    
    	w.Header().Set("Content-Type", "application/json")
    	w.Write(response)
    }
    

    There are a lot agent frameworks out there right now. A LOT. Many of them have good Gemini support. You can build agents with Gemini using LangChain, LangChain4J, LlamaIndex, Spring AI, Firebase Genkit, and the Vercel AI SDK.

    What coding tools can I use with Gemini? GitHub Copilot now supports Gemini models. Folks who love Cursor can choose Gemini as their underlying model. Same goes for fans of Sourcegraph Cody. Gemini Code Assist from Google Cloud puts AI-assisted tools into Visual Studio Code and the JetBrains IDEs. Get the power of Gemini’s long context, personalization on your own codebase, and now the use of tools to pull data from Atlassian, GitHub, and more. Use Gemini Code Assist within your local IDE, or in hosted environments like Cloud Workstations or Cloud Shell Editor.

    Gemini Code Assist brings AI assistance to your dev workspace, including the use of tools

    Project IDX is another Google-provided dev experience for building with Gemini. Use it for free, and build AI apps, with AI tools. It’s pretty great for frontend or backend apps.

    Project IDX lets you build AI apps with AI tools

    Maybe you’re building apps and agents with Gemini through low-code or declarative tools? There’s the Vertex AI Agent Builder. This Google Cloud services makes it fairly simple to create search agents, conversational agents, recommendation agents, and more. No coding needed!

    Conversational agents in the Vertex AI Agent Builder

    Another options for building with Gemini is the declarative Cloud Workflows service. I built a workflow that calls Gemini through Vertex AI and summarizes any provided document.

    # Summarize a doc with Gemini
    main:
      params: [args]
      steps:
      - init:
          assign:
            - doc_url: ${args.doc_url}
            - project_id: ${args.project_id}
            - location: ${args.location}
            - model: ${args.model_name}
            - desired_tone: ${args.desired_tone}
            - instructions: 
      - set_instructions:
          switch:
            - condition: ${desired_tone == ""}
              assign:
                - instructions: "Deliver a professional summary with simple language."
              next: call_gemini
            - condition: ${desired_tone == "terse"}
              assign:
                - instructions: "Deliver a short professional summary with the fewest words necessary."
              next: call_gemini
            - condition: ${desired_tone == "excited"}
              assign:
                - instructions: "Deliver a complete, enthusiastic summary of the document."
              next: call_gemini
      - call_gemini:
          call: googleapis.aiplatform.v1.projects.locations.endpoints.generateContent
          args:
            model: ${"projects/" + project_id + "/locations/" + location + "/publishers/google/models/" + model}
            region: ${location}
            body:
              contents:
                role: user
                parts:
                  - text: "summarize this document"
                  - fileData: 
                      fileUri: ${doc_url}
                      mimeType: "application/pdf"
              systemInstruction: 
                role: user
                parts:
                  - text: ${instructions}
              generation_config:  # optional
                temperature: 0.2
                maxOutputTokens: 2000
                topK: 10
                topP: 0.9
          result: gemini_response
      - returnStep:
          return: ${gemini_response.candidates[0].content.parts[0].text}
    

    Similarly, its sophisticated big-brother, Application Integration, can also interact with Gemini through drag-and-drop integration workflows. These sorts of workflow tools help you bake Gemini predictions into all sorts of existing processes.

    Google Cloud Application Integration calls Gemini models

    After you build apps and agents, you need a place to host them! In Google Cloud, you’ve could run in a virtual machine (GCE), Kubernetes cluster (GKE), or serverless runtime (Cloud Run). There’s also the powerful Firebase App Hosting for these AI apps.

    There are also two other services to consider. For RAG apps, we now offer the Vertex AI RAG Engine. I like this because you get a fully managed experience for ingesting docs, storing in a vector database, and performing retrieval. Doing LangChain? LangChain on Vertex AI offers a handy managed environment for running agents and calling tools.

    Build AI and data systems with Gemini

    In addition to building straight-up agents or apps, you might build backend data or AI systems with Gemini.

    If you’re doing streaming analytics or real-time ETL with Dataflow, you can build ML pipelines, generate embeddings, and even invoke Gemini endpoints for inference. Maybe you’re doing data analytics with frameworks like Apache Spark, Hadoop, or Apache Flink. Dataproc is a great service that you can use within Vertex AI, or to run all sorts of data workflows. I’m fairly sure you know what Colab is, as millions of folks per month use it for building notebooks. Colab and Colab Enterprise offer two great ways to build data solutions with Gemini.

    Let’s talk about building with Gemini inside your database. From Google Cloud SQL, Cloud Spanner, and AlloyDB, you can create “remote models” that let you interact with Gemini from within your SQL queries. Very cool and useful. BigQuery also makes it possible to work directly with Gemini from my SQL query. Let me show you.

    I made a dataset from the public “release notes” dataset from Google Cloud. Then I made a reference to the Gemini 2.0 Flash model, and then asked Gemini for a summary of all a product’s release notes from the past month.

    -- create the remote model
    CREATE OR REPLACE MODEL
    `[project].public_dataset.gemini_2_flash`
    REMOTE WITH CONNECTION `projects/[project]/locations/us/connections/gemini-connection`
    OPTIONS (ENDPOINT = 'gemini-2.0-flash-exp');
    
    -- query an aggregation of responses to get a monthly product summary
    SELECT * 
    FROM
     ML.GENERATE_TEXT(
        MODEL `[project].public_dataset.gemini_2_flash`,
        (
          SELECT CONCAT('Summarize this month of product announcements by rolling up the key info', monthly_summary) AS prompt
          FROM (
            SELECT STRING_AGG(description, '; ') AS monthly_summary
            FROM `bigquery-public-data`.`google_cloud_release_notes`.`release_notes` 
            WHERE product_name = 'AlloyDB' AND DATE(published_at) BETWEEN '2024-12-01' AND '2024-12-31'
          )
        ),
        STRUCT(
          .05 AS TEMPERATURE,
          TRUE AS flatten_json_output)
        )
    

    How wild is that? Love it.

    You can also build with Gemini in Looker. Build reports, visualizations, and use natural language to explore data. See here for more.

    And of course, Vertex AI helps you build with Gemini. Build prompts, fine-tune models, manage experiments, make batch predictions, and lots more. If you’re working with AI models like Gemini, you should give Vertex AI a look.

    Build a better day-2 experience with Gemini

    It’s not just about building software with Gemini. The AI-driven product workflow extends to post-release activities.

    Have to set up least-privilege permissions for service accounts? Build the right permission profile with Gemini.

    The “Help me choose roles” feature uses Gemini to figure out the right permissions

    Something goes wrong. You need to get back to good. You can build faster resolution plans with Gemini. Google Cloud Logging supports log summarization with Gemini.

    Google Cloud Logging supports log summarization with Gemini

    Ideally, you know when something goes wrong before your customers notice. Synthetic monitors are one way to solve that. We made it easy to build synthetic monitors with Gemini using natural language.

    “Help me code” option for creating synthetic monitors in Cloud Monitoring

    You don’t want to face security issues on day-2, but it happens. Gemini is part of Security Command Center where you can build search queries and summarize cases.

    Gemini can also help you build billing reports. I like this experience where I can use natural language to get answers about my spend in Cloud Billing.

    Gemini in Cloud Billing makes it easier to understand your spend

    Build supporting digital assets with Gemini

    The developer workflow isn’t just about code artifacts. Sometimes you create supporting assets for design docs, production runbooks, team presentations, and more.

    Use the Gemini app (or our other AI surfaces) to generate images. I do this all the time now!

    Image for use in a presentation is generated by Gemini

    Building slides? Writing docs? Creating spreadsheets? Gemini for Workspace gives you some help here. I use this on occasion to refine text, generate slides or images, and update tables.

    Gemini in Google Docs helps me write documents

    Maybe you’re getting bored with static image representations and want some more videos in your life? Veo 2 is frankly remarkable and might be a new tool for your presentation toolbox. Consider a case where you’re building a mobile app that helps people share cars. Maybe produce a quick video to embed in the design pitch.

    Veo 2 generating videos for use in a developer’s design pitch

    AI disrupts the traditional product development workflow. Good! Gemini is part of each stage of the new workflow, and it’s only going to get better. Consider introducing one or many of these experiences to your own way of working in 2025.

  • Daily Reading List – January 10, 2025 (#470)

    It was a good day of starting up my weekly (internal) newsletter for the year, catching up on doc reviews and email requests, and scoping out some coding projects for the weekend.

    [blog] Continuous Delivery for GKE with Cloud Deploy and Argo CD. Great example of combining the control flow of a continuous delivery tool, with the scaled and structured process of GitOps.

    [blog] Enterprise Architects: From Cartographers to Scouts. What does it mean for architects to switch their mindset and work from being cartographers (mapping out the space) to scouts (finding paths)?

    [article] Generative AI in Government: What to Expect in 2025. Good piece that stays grounded on what matters most: better service for constituents.

    [article] Are You Checked Out at Work? I like that this article isn’t about why you’re checked out. It’s about how to get yourself re-engaged.

    [article] Tech Outage. I’m with Bob here. It’s easy to throw screens at our kids, especially in public settings. But we’re better off resisting the urge. I’m taking my kids out for dinner tonight, and they bring coloring books and action figures for us to play with.

    [article] Rumors of SaaS’s death may be exaggerated. Are AI agents going to make database-driven SaaS (Salesforce, etc) unnecessary? Color me skeptical.

    [blog] How to work with open source formats on BigQuery. A good data warehouse will play with a variety of data and table formats. I thought this was a good look at what the means in practice.

    [blog] Design Patterns for Building Resilient Systems. Nothing Earth-shattering here, but that doesn’t mean this isn’t important info to refresh yourself with.

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

  • Daily Reading List – January 9, 2025 (#469)

    My day started at 2:30am when I got up to deliver a presentation to a company in Spain. I couldn’t fall back asleep after, so Google got some bonus hours of work out of me today. In today’s reading list, you’ll find some smart content on strategy and getting better results from AI models.

    [article] Refining strategy with Wardley Mapping. I’ve tried to get into this, and never could. Probably not smart enough. But, some folks swear by this technique of understanding your strategic landscape.

    [blog] A Good Life is Active not Passive. Important point by Brad here, and one that we should all take to heart as we resist becoming passive consumers of entertainment.

    [blog] Supervised Fine Tuning for Gemini: A best practices guide. Get some good insights into the process for adding precision to existing models like Gemini.

    [article] What’s Ahead for AI-Assisted Coding, Open Source and More. Everyone’s guessing, but observing lots of guesses can still help you feel more aware of the opportunities out there.

    [blog] Monitor your Google Gemini apps with Datadog LLM Observability. As expected, software vendors are adding support for the LLMs that the market is embracing.

    [blog] What makes strong engineers strong? Solid list of four traits. Many of these would apply to most professionals in technology.

    [blog] The Last Strategy Framework You’ll Ever Need. There are plenty of frameworks for strategic planning (see the the first entry in my reading list today!). John explains a few of them, and explains why strategy is hard work.

    [blog] Introducing Vertex AI RAG Engine: Scale your Vertex AI RAG pipeline with confidence. Getting more customized and contextual responses from an LLM is valuable. Retrieval augmented generation is a pattern, but involves some machinery. We’ve just made it much easier.

    [blog] Evaluating RAG pipelines. Did you follow the previous entry here and create a RAG pipeline? Cool. How do you evaluate whether it’s the most effective combination and overall system? Mete helps you identify success measurements.

    [blog] When to Consider Building a Private Cloud: A Pragmatic Perspective. Basically, they’re a fit for certain use cases, but shouldn’t a go-to for many companies.

    [blog] Announcing Supporters of Chromium-based Browsers. I didn’t know the scale, effort, or cost of supporting a project like Chromium. Now I do, and am glad to see more folks pitching into this browser.

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

  • Daily Reading List – January 8, 2025 (#468)

    There are still plenty of “what’s coming in 2025” pieces coming out, and I’ll continue including the ones that catch my eye.

    [article] Agents. You want eight thousand words about AI agents? Today’s your lucky day. Chip wrote a fantastic piece that goes into helpful depth on the topic.

    [blog] Ultimate guide to CI/CD: Fundamentals to advanced implementation. This doesn’t break new ground, but it’s good to till the current ground. That’s the extent of my farming metaphors.

    [article] 5 Mistakes Managers Make When Giving Negative Feedback. Few folks like giving corrective feedback, but it’s a necessary task. This article offers mistakes we make, and how to fix them.

    [article] Explore vs Execute. Great essay from Jason here. What happens after you have the “fit” for a given product? What does an operational switch look like?

    [article] Developer Productivity in 2025: More AI, but Mixed Results. A batch of experts provide input into what this year may hold for developer experience and productivity.

    [blog] Mistakes engineers make in large established codebases. The main mistakes come from “lack of consistency” according to this interesting write up.

    [article] How to Overcome Common LLMs Pitfalls and Build Smarter AI Systems. My colleague Mete does a good job outlining a few challenges and opportunities for those working with LLMs.

    [youtube-video] The amazing, but unsettling future of technology… Entertaining video, as always from this source. But also a good overview of the hot tech (AI, agents, AR/VR, robotics, etc) and questions surrounding them.

    [article] Engineers hit AI development roadblocks: IBM. Fifteen tools to build an AI app seems like … a lot. That statistic, and more in these findings.

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

  • Daily Reading List – January 7, 2025 (#467)

    Today’s reading list happens to have a lot of good material for those planning ahead. How do you avoid overcommitting? Or do a competitive analysis? Refine a strategy? Create OKRs?

    [blog] How I built an agent with Pydantic AI and Google Gemini. Karl might have just saved you a few million dollars in consultant fees! He built a SWOT analysis tool using a variety of technologies (including the Gemini API).

    [blog] Open Source Discussion Archetypes. You may not personally care about the OSS licensing fracas that’s going on, but somebody does. Steve looks at the groups that are intentionally or unintentionally invested.

    [article] My 2025 trends predictions. Tom’s a tech writer at Google, and shares some useful thoughts on AI and how it’s going to impact his field.

    [blog] How to effectively refine engineering strategy. Are you doing big strategic exercises, or doing small refinements until a strategy is “ready” for mass deployment? Will has a good post that can help you understand the problems being solved, and which tools to use.

    [article] Meta is ditching third-party fact checkers. Good. However well intentioned, centralized moderators inevitably apply unhelpful bias. Community Notes is a useful approach.

    [page] 2024 AI timeline. This is a cool way to view all the major LLM releases from last year. It shows both open and AI only (closed) models.

    [article] Why You’re Chronically Overcommitted. This will probably resonate with most of you. I’ve fought back against this over the past few years to good effect.

    [article] Google maps the future of AI agents: Five lessons for businesses. Are you clear on what agents are, and what you should be doing with them? I’m not sure I am, so you’re better off than me. But this VentureBeat story looks at a recent paper and offers direction.

    [blog] Hitting OKRs vs Doing Your Job. OKRs (or however you’re capturing major goals) are for special focus, not the day to day work.

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

  • Daily Reading List – January 6, 2025 (#466)

    Happy New Year! I’m back with the first edition of the Reading List for 2025. I trust you took some time over this holiday break to recharge. Let’s have some fun together this year.

    [article] Our Favorite Management Tips of 2024. Very good categories here, including leadership skills to develop, building executive presence, writing skills, and asking smarter questions.

    [article] How AI-assisted coding will change software engineering: hard truths. Sheesh, this is awesome. My colleague Addy takes over the Pragmatic Engineer newsletter for this edition to give some straight talk on AI assisted dev tools.

    [blog] Cognitive load is what matters. Excellent post that we should all take to heart. What are we doing to reduce the extraneous, unnecessary cognitive load on our peers or customers?

    [docs] Choose Cloud Managed Service for Apache Kafka or Pub/Sub. I like docs like this which outline the benefits and tradeoffs between a set of managed services.

    [blog] Go Developer Survey 2024 H2 Results. Check out the results from 4000+ Go developers. You’ll find good insights into how they’re using AI, challenges within teams, and more.

    [article] Bing is doing its best Google Search impression anytime you look up the word Google. Yeesh. I tried it out, which probably gives Bing more traffic than it’s used to getting!

    [article] What engineering managers need to know for 2025. Who knows what this year holds, but these represent some useful categories to consider.

    [blog] The 12 Anti-factors of Infrastructure as Code. You might be doing some of these practices and thinking you’re following the best ideas. Brian pushes back on some mainstream practices.

    [blog] The PyTorch developer’s guide to JAX fundamentals. If you love PyTorch, use PyTorch. If you’re intrigued by the performance and ecosystem of JAX, this post will help you map some of the familiar concepts.

    [blog] Open ML News – Holidays Edition. My daily summaries are often fed by other people’s aggregated summaries. Omar recaps some of the most interesting open model news.

    [article] From AI agents to enterprise budgets, 20 VCs share their predictions on enterprise tech in 2025. Where do VCs want to invest in 2025, what’s hot besides AI, and what’s going to happen with enterprise IT budgets? Good questions and answers here.

    [article] 25 experts predict how AI will change business and life in 2025. Is the time horizon off? Or the predictions too unrealistic? I don’t know, but it’s useful to see where smart folks see things going.

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

  • 2024 in Review: Reading and Writing Highlights

    I might have learned more in 2024 than any previous year of my life. I learned so much about parenting, friendship, leadership, technology, myself, and the world around me. Some were hard lessons, others easy, but all useful.

    For the seventeenth straight year, I’m writing up a recap of annual highlights, including recaps of the few dozen books I finished.

    Things I Wrote (or Said)

    I maintained my daily reading list, with 226 entries in 2024. I’ll plan on keeping it up in 2025, as it’s proving useful in helping me stay up to date on what matters and I like sharing what I learn.

    In 2024, I also had the pleasure of co-writing and co-delivering the Google Cloud Next developer keynote.

    I also wrote a couple papers for Google Cloud. One was about developer productivity, and the other focused on what’s needed for an AI platform.

    At the start of 2024, I took over writing the weekly “Overwhelmed Person’s Guide to Google Cloud” newsletter which goes to hundreds of thousands of folks each week before being posted on our blog. This year, I may bring in more guest editors to share the load!

    For the past four years, I’ve also written a weekly internal Google Cloud newsletter. This year I added another 69,000 words over 40+ editions.

    In terms of public blog posts, these were a few I was particularly pleased with:

    Things I Read

    I finished 43 books last year, across a wide range of topics. The items I choose come from recommendations, references in other books I read, or even just randomly browsing the Kindle store. Here are some of my favorites.

    The Eighth Wonder of the World: The True Story of André the Giant by Bertrand Hébert and Pat Laprade. Andre the Giant had a wild life. I loved watching wrestling as a kid, and knew him as a baddie. This book offered up a wonderful look at his life and impact. Seemed like a sweet guy!

    Nothing Like It In the World: The Men Who Built the Transcontinental Railroad by Stephen E. Ambrose. Surprisingly, this was one of my favorite books of the year. I accompanied my daughter on a field trip to Sacramento to learn more about early California. That resulted in me picking up this book. Maybe the greatest achievement of the 19th century? Amazing work.

    Traffic: Why We Drive the Way We Do by Tom Vanderbilt. We spend a lot of time in our cars. It’s the most complex thing most of us do every day, without realizing it. This book explores some of the psychology of driving, along with lots of fun examples from around the world.

    Genghis: Bones of the Hills: A Novel (Conqueror series Book 3) by Conn Iggulden. The first three books in this series were outstanding. I’m still hooked on historical fiction, and this one gives a page-turning look at the Mongol army of Genghis Khan.

    Simple Habits for Complex Times: Powerful Practices for Leaders by Jennifer Garvey Berger. You don’t solve complex problems the same way you solve complicated ones. The author does a great job helping us work better in complex environments.

    Pacific Crucible: War at Sea in the Pacific, 1941-1942 (Vol. 1) by Ian W. Toll. Someone recommended this series to me after last year’s annual recap. i’m glad they did. SO GOOD. This was some of the best content on the Pacific front of WW II I’ve ever read. This period covers Pearl Harbor through Midway. Engaging and informative.

    The Conquering Tide: War in the Pacific Islands, 1942-1944 (Vol. 2) by Ian W. Toll. Here’s the second one in the series which picked up as the Allies fought the Japanese island-by-island. This was just as compelling as the first. I’ve already started reading the 3rd and final book in the series.

    Death by Meeting: A Leadership Fable…About Solving the Most Painful Problem in Business by Patrick M. Lencioni. These books are always quick to read, and I learn something. This “fable” tracks a company’s struggles, and offers up a re-think on what meetings to have at work. I incorporated a few things in my own routine after reading this.

    Return of the God Hypothesis: Breakthroughs in Physics, Cosmology, and Biology Seeking Evidence for the Existence of God by Stephen C. Meyer. Such an interesting read! Meyer gives us a science lesson that looks at the beginning of the universe, the fine-tuned characteristics for life, and the amazing biological machines in our bodies.

    Quarterdeck by Julian Stockwin. I’ve kept up with this series of books about seafaring in the 19th century. This was another good one, and I enjoy the characters, the locations, and the rich plots. I also recognize that I would have someone died four minutes into one of these journeys.

    The Good Shepherd by C. S. Forester. Wow, I actually didn’t realize this was historical fiction until I was a quarter of the way into the book. What a tense, enjoyable read about a convoy of ships trying to cross the Atlantic while avoiding U-Boats.

    The Princess Bride by William Goldman. You know the movie. Have you read the book? I had not. You won’t be disappointed. It differs slightly from the movie, but the characters are all there, and the story itself is well told.

    The Long Haul: A Trucker’s Tales of Life on the Road by Finn Murphy. I’ve often thought that “mover” would be the worst job I could have. All that work, and then you don’t get to enjoy it? No thanks. But I changed my mind after reading this. Murphy talks about long-haul trucking and his life moving people around the country. Great read.

    God’s Crime Scene: A Cold-Case Detective Examines the Evidence for a Divinely Created Universe by J. Warner Wallace. Like Meyer’s book above, this is another thought-provoking book about the universe we’re part of, and the coincidentally (or, intentionally) perfect environment that supports life.

    Stolen Focus: Why You Can’t Pay Attention–and How to Think Deeply Again by Johann Hari. Does that title resonate with you? Deep thinking is at a premium nowadays. The author explores the problem, talks to experts, and proposes some solutions.

    The Last Word on Power: Executive Re-Invention for Leaders Who Must Make the Impossible Happen by Tracy Goss. Is the “winning strategy” that got you where you are today keeping you from taking the next step? That’s the hypothesis here, and the author explains how to re-invent your leadership approach. There were things I disagreed with, but it made me think!

    150 Most Famous Poems by Poetry House. I didn’t read a lot of poetry in school. So, I figured I should get all cultured and invest some time. This book featured poems by many of the greats, and I’m better for having read it.

    Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow by Aurélien Géron. Many of us are still in continuous-learning mode, so I’m not going to resign myself to superficial knowledge of key topics. This book was dense with a lot of math, but it also helped me understand some fundamentals about machine learning that will make me more dangerous now.

    Hillbilly Elegy: A Memoir of a Family and Culture in Crisis by J. D. Vance. These next four books are all about different starting points. Vance did something “ordinary”—graduating school, going to college, getting a professional job—which was an accomplishment in itself given kids like him. Inspiring story.

    The Last Shot: City Streets, Basketball Dreams by Darcy Frey. This book is thirty years old, and follows three New York kids in their senior year as they hope to escape Coney Island and get four-year scholarships to college. Each of these kids faced tough circumstances and long odds.

    Hetty: The Genius and Madness of America’s First Female Tycoon by Charles Slack. What a story. Hetty Green was financially “set” as soon as she was born, but took what she had and made something remarkable with it. She was an eccentric person who lived life on her own terms while becoming a bigtime player in the all-male world of finance in the late 1800s.

    Reaching for the Stars: The Inspiring Story of a Migrant Farmworker Turned Astronaut by José M. Hernández. There’s a movie on Amazon Prime about this, which is how I discovered the book. Hernández comes from a family of migrant workers, and through sheer determination, became a successful scientist then astronaut. Great story.

    Sales Pitch: How to Craft a Story to Stand Out and Win by April Dunford. The best business-y book I read this year. Dunford does a fantastic job explaining what a good sales pitch looks like, and how to properly guide buyers to where they want to go.

    The Devil’s Hand: A Thriller (Terminal List Book 4) by Jack Carr. These James Reece books are hard to put down. It’s not Shakespeare, but the pace and storytelling is compelling.

    Widow’s Walk (Spenser Book 29) by Robert B. Parker. Here’s another series I can’t stop reading. Spenser is my favorite gumshoe, and I’ve enjoyed each one of these tales. If you like fast-paced crime novels, check these out.

    The Pursuit of God: The Human Thirst for the Divine by A. W. Tozer. I’ve heard of Tozer, but had never read any of his books. I corrected that mistake this year. Wow. He’s a powerful writer. This is a short-ish, but wonderful read about longing for God and hearing from Him.

    The Neverending Story by Michael Ende. Maybe my favorite movie as a kid? I picked up the book, and was … surprised. The movie is the first half of the book, and even then, not the exact same. And the second half of the book was something else entirely. All very good and entertaining, but unexpected!

    Survive, Reset, Thrive: Leading Breakthrough Growth Strategy in Volatile Times by Rebecca Homkes. My second favorite business-y book? Instead of looking at uncertainty and change as negatives, Homkes encourages us to rethink our approach to strategy and execution. This “survive, reset, thrive” model is one I’ll refer back to.

    Database Design and Modeling with Google Cloud by Abirami Sukumaran. My colleagues wrote books this year that I enjoyed reading. Abi authored this excellent book about data practices and cloud services. Also check out Secure Continuous Delivery on Google Cloud by Giovanni Galloro, Nathaniel Avery, David Dorbin.

    Lead Like Jesus Revisited: Lessons from the Greatest Leadership Role Model of All Time by Ken Blanchard, Phil Hodges. Was Jesus Christ the greatest leader of all time? Probably, when you consider his vision setting, change management, coaching, motivating others, and servant leadership. We could use more folks leading like this.

    The Ministry of Ungentlemanly Warfare by Damien Lewis. A contender for my favorite book of the year. I saw the movie, which factored in just one of the stories from this book. The accounts of this WW2 band of raiders are exciting, courageous, reckless, and improbable.

    Thanks for spending another a year with me here!

  • Daily Reading List – December 20, 2024 (#465)

    That’s a wrap on 2024 for me. I cleared out the reading queue, which should hold you over for a few days. I’ll keep reading things and occasionally posting on X/Twitter, but I’m generally taking off the next two weeks. See you back on the Reading List on January 6th, and THANK YOU for reading.

    [blog] Google Research 2024: Breakthroughs for impact at every scale. What a year. Look at the advances in SO MANY areas of life.

    [blog] Platform Engineering Evolution: Trends and Future Impact on Software Delivery. Excellent content here from Paula. She does a deft job exploring the history of platform engineering and where it’s heading.

    [blog] Spanner in 2024: A year of innovation. Spanner might be the best database in the cloud, and with its multi-model nature, you can now do so much—full text search! vector search! graph!—at once.

    [blog] What just happened. Many of us are asking the same question. December was a breakthrough month in AI with the entire landscape shifting. We shipped an absolute ton.

    [blog] December in LLMs has been a lot. It has. Across a wide range of dimensions, AI looks drastically different in the market than just a few months ago.

    [article] Workers fear their skills will be obsolete this decade, report finds. Some will be. Just like some skills I had ten years ago that don’t matter today!

    [blog] Migrate your applications to Kubernetes using Istio. Sometimes your migration assistance comes from places you didn’t look into.

    [blog] AlloyDB Omni and local models on GKE. Great walkthrough of co-locating a model and a database in the same Kubernetes cluster, without sacrificing much.

    [article] Year in Review: Containers Get Smaller, Faster, More Secure. Sure, lots of AI things happened this year. But plenty moved forward in container-land as well.

    [blog] Calling all devs: Code the future of baseball with Google Cloud and MLB. Baseball, AI, and cash. I’m a fan of all those things. And now you can use the second to improve the first and win the last.

    [article] Comparing PyTorch and JAX. Both are great. JAX has a lot of fans, and many more added themselves to the list in 2024. Learn more about both here.

    [blog] Ends & Means. Bob explores this “ends justify the means” philosophy, and reminds us to consider if our well-intentioned means are actually causing bad outcomes.

    [blog] Build Go applications using Project IDX and the Gemini API. I walked through this exact tutorial myself to see if it’s as easy as they said. It was. It’s free to use this charged up dev environment!

    [blog] Do Not Fix Bugs Reported in Your Open Source Projects. The premise feels right to me. “Train” the community to document, test, and propose fixes to open source software.

    [blog] Firebase App Hosting: Emulators and a look forward to 2025. Firebase experienced a bit of a renaissance this year with new features, more cloud service integrations, and updated interfaces.

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