Whew. That was a five day week in a four day schedule. But I do love what I do, and who I get to do it with. Go into the weekend with a bunch of thought-provoking content from today’s reading list.
[article] Why You Should Reconsider Your ‘Big Tech’ Job in 2025. Big Tech jobs are great. I’m enjoying the fast pace, top tier colleagues, and relevance of my work. Also, “traditional company” jobs are terrific. I wouldn’t trade my time at one for anything. Pick the right environment for the season of life you’re in.
[blog] Build It Yourself. Provocative post. Instead of dragging so many dependencies into your code, maybe generate more of them yourself? Obviously pros and cons, but worth discussing.
[blog] Distributed Systems and Organization Design. Ted takes the Eight Fallacies of Distributed Computing and creates a version related to Distributed Teams. Very interesting.
First trips of the year are coming up. Hopefully I’ll see many of you at one of these stops. I’ll be in Sunnyvale next week, India in February, Paris/Istanbul in March. Then Vegas for Cloud Next in April. Unless something changes, which is always entirely possible 🙂
[article] Employees See Middle Managers as an Organization’s Moral Compass. Managers don’t get a lot of glory. They get blasted as the “frozen middle” or blockers to change. Some may be, but many are heroes wthin an org who get things done and shape team norms.
[article] More AI, More Problems for Software Developers in 2025. Every solution creates different challenges. AI will be no different. Don’t skip it because of that. The benefits will grossly outweigh the cost if done well.
I had some wildfires nearby today which forced me to leave the Google office and head home. It was fairly quickly extinguished, but it’s a reminder that I’m in control of virtually nothing. Stay safe out there!
[blog] 6 secrets for never being blocked again. Is the platform/DevOps/ops team blocking your dev team? Here’s some interesting advice for building more of a partnership model versus service desk model.
[blog] Improve the RAG pipeline with RAG triad metrics. Having something to measure gives you focus areas to improve on. Mete shows us how to iterate on various improvements to RAG scores.
It was a great long weekend, and I had a fun time with my family yesterday. During some downtime, I got to play with this new breed of text-to-app AI tools and shared some quick perspectives here. In today’s reading list, I have a lot of unintentionally related content!
[article] Introduction to Go Programming Language. This is a good introduction to the language. Adopting another programming language is a big deal, so pieces like this can help you decide if it’s worth it.
[youtube-video] Build with Go in Project IDX. Speaking of Go, here’s one way to invest in it without installing a single piece of software on your local machine.
[article] Notes on Nix. And speaking of Project IDX, Forrest has a great introductory post on a key underlying technology, Nix. This provides a straightforward way to define consistent dev environments.
[blog] Cloud CISO Perspectives: Talk cyber in business terms to win allies. In my experience, smart tech folks who talk like smart tech folks don’t get the buy-in from the rest of the company. It doesn’t mean you have to “dumb it down.” It means you pick a more relevant vocabulary.
[blog] Apache Airflow Overview. I know Airflow, but haven’t actually used it. This piece offers a helpful introduction to this orchestration tool used by data folks.
This definitely felt like the first week “back” from the holiday break. Everyone and everything was at full speed. We’ve got a three day weekend here in the States, so I’ll be back on Tuesday.
[blog] Event-Driven Architecture Issues & Challenges. Event-driven systems can be great. They can also be overkill and sap your strength. Derek calls out a few problems that arise.
It’s something like 60 working days until Google Cloud Next ’25 in Vegas. Just typing that made me black out for a minute. Lots to do, but it’s going to absolutely unforgettable. Hope to see you there!
[article] Technology Trends for 2025. This one’s based on real data based on what classes people are taking on O’Reilly’s learning platform. Some surprises here.
[blog] Vertex AI RAG Engine: A developers tool. Retrieval Augmented Generation as-a-Service is an underrated big deal. There’s a lot of expertise and machinery required for DIY.
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
Some ups and downs today, but I’m a big believer that the secret to a happy life is maintaining perspective. All in all, good day. In today’s reading list, there are a handful of pieces that will really make you think.
[blog] Writing a tech blog people want to read. Is the recipe for blog popularity to have “clear opinions about working in tech that many people disagree with”? There’s truth to that. Rehashing the same topics or offering milquetoast opinions won’t earn many views.
[blog] The 2025 AI Engineer Reading List. Wow. Bookmark this and work through content here that catches your eye. These are some excellent references to key AI engineering topics like evals, RAG, agents, code generation, and fine tuning.
[repo] Multimodal Live Agent. Here’s a cool sample app that shows off a pattern for real-time agents powered by Google Gemini.
[blog] The Most Important Developer Productivity Metric. Great story here. Excessive build times might be killing you, but nobody is focused on it. Liz explains how Honeycomb got their builds back down to 7 minutes.
[blog] Continuing Resolutions. Brian points out that enterprise debt (tech debt) reminds him of “continuing resolutions” which the US government uses in lieu of proper budget planning. Our enterprise debt is a similar accumulation of suboptimal decisions.
[blog] AI Agents Are Here. What Now? The Hugging Face team join the fray on agents. They’ve got some good definitions and value assessments here.
[blog] The Dream of Hadoop is Alive in AI. Enjoyable post from Steve that digs into the history of Hadoop, and how AI brings us closer to the vision of a query interface for mass consumption.
Want to get this update sent to you every day? Subscribe to my RSS feed or subscribe via email below:
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] 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] 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:
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] Prophecies of the Flood. Ethan talks about the conviction that AI researchers inside AI labs have about “the emergence of something unprecedented.”
[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] 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:
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)
}
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.
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
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.