2025 in review

I started 2025 being rather skeptical about LLMs, and now I use them all the time. The most impactful moment for me was when I realized how capable frontier models have become at coding. Today, I do most of my coding with Gemini 3 and in Gemini CLI, which has allowed me to build projects I couldn't have tackled before. Along the way, I've discovered new techniques and model capabilities that have fundamentally changed my workflow.

One of my favorite projects this year was a text-based adventure game for teaching agent development. Here's an overview of the other things I wrote about this year:

Gemini CLI workflows

I've been a daily user of Gemini CLI since it launched, exploring its features and documenting my findings.

For instance, I researched how the CLI builds context, mapping out how it starts with a file tree snapshot and relies on tool use, such as ReadFile and SearchText, to fill in details.

To improve navigation in large codebases, I prototyped a function indexer using Pygments. This script generates a map of classes and functions, which helps the model locate logic without full-text searches. I'll likely revisit this and expose it as an extension.

Finally, to stop the model from rushing into implementation, I've been experimenting with prompt engineering, trying out a technique to force "analysis mode" using annotated pseudo-code.

Agent Development Kit (ADK)

Google's Agent Development Kit is great for scaffolding agents. I documented a few of the things I figured out when ramping up on the tool.

First, the initial setup involves initializing a project with uv, selecting a model, and running the local web interface. Second, because agents rely on tools to interact with the outside world, I documented how to add Python functions, such as a URL fetcher, directly to the agent.

Python and data visualization

I'm really excited about how fast LLMs make writing one-off scripts to visualize data. I documented a few of the things I tried.

First, I adopted uv to write single-file executable scripts that contain their own dependency definitions.

Second, I used the CLI to parse binary .FIT files from Garmin devices and generated scatter plots and ridgeline plots to visualize workout data.

Finally, I used Gemini 3 and Nano Banana Pro to redesign data visualizations by uploading screenshots and iterating on the design.

I also used Gemini to deduce the prompt to generate Gemini's own Audio Overviews (podcast-style interviews).

Happy holidays!

After an eventful 2025, I'm looking forward to 2026! I'm taking a short break to enjoy some offline time. Wishing you all a great holiday!

Signature