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!