All Articles
Gemini File API Stuck in PROCESSING State: Timeout Handling and Retry Design
Fix Gemini File API files stuck in PROCESSING state. Learn proper polling with exponential backoff, timeout design, and cleanup strategies with working Python code examples.
Gemini API vs Claude API vs GPT-4o: Measured Costs from a Production Wallpaper App Pipeline
Real-world cost, speed, and output quality benchmarks for Gemini API, Claude API, and GPT-4o, measured on a wallpaper app metadata pipeline running in production.
Gemini 3.2 API Suddenly Broke — 5 Common Errors and How to Fix Them
Switched to Gemini 3.2 API and hit a wall? This guide covers 5 common errors developers encounter during migration — wrong model IDs, rate limits, context overflow, streaming interruptions, and Function Calling schema failures — with working code fixes.
Personalized Push Notifications at Scale: Gemini 3 Pro × Firebase Cloud Messaging for Indie App Developers
If your push notification open rates have plateaued, this guide shows how to combine Gemini 3 Pro with Firebase Cloud Messaging to generate per-user copy. Includes the production architecture, working code, PII guardrails, and real cost numbers from a live indie app.
Putting Gemini Embeddings in the Browser — Building a Serverless FAQ Search with IndexedDB
How I shipped semantic search for a few hundred FAQ entries without standing up a vector database. Gemini Embedding runs once at build time, the index sits in IndexedDB, and searches happen in the browser.
Cutting Gemini Embedding's output_dimensionality from 768 to 256 reduced my vector DB storage to one-third
An indie developer's record of trimming gemini-embedding-001 from 768 to 256 dimensions for an 80,000-row wallpaper recommendation index, with measured numbers on storage, cost, recall trade-offs, an int8 quantization implementation, a CI benchmark gate, and the five-step rollout plan I now use in production.
Gemini API: RESOURCE_EXHAUSTED When Sending Large PDFs or Videos via inlineData — When to Switch to Files API
Why the Gemini API returns RESOURCE_EXHAUSTED for large PDFs or videos sent via inlineData, and a practical migration path to Files API based on real indie-developer experience.
What I Tried, In Order, When Gemini API Returned User location is not supported in Production
Hitting the Gemini API from Cloudflare Workers or Vercel and getting hit with a sudden 'User location is not supported' error? Here is the exact order I worked through, drawn from a live production incident on my own indie apps.
Gemini API Returns 400 When You Set tools and responseSchema Together — Three Designs That Make Function Calling and Structured Output Coexist
You want function calling to fetch external data and a strict JSON shape for the final answer. Setting tools and responseSchema together returns 400. Here's why, plus three production-tested designs that make both work.
Why I Always Resize Images With Pillow Before Sending Them to the Gemini API
A practical look at why preprocessing images with Pillow before they reach the Gemini API quietly cuts both latency and token usage. Numbers from a real personal project, plus the helper function I now reuse everywhere.
Build a Voice + Screen-Share AI Pair Programmer with the Gemini Live API in TypeScript
A practical playbook for wiring the Gemini Live API to getDisplayMedia and a microphone to build an over-the-shoulder AI pair programmer in TypeScript, with cost controls and the gotchas I hit in production.
Migrating from Gemini 2.5 Pro to 3.2 Pro in 7 Days — A Production Playbook for Compatibility Testing, Output Diff Scoring, and Rollback Design
A 7-day playbook for moving production systems from Gemini 2.5 Pro to 3.2 Pro: compatibility testing, LLM-as-Judge scoring, shadow traffic, and rollback.