Technical Insights
Field notes from building and running Ruby on Rails systems, with the metrics and trade-offs behind each decision.
Rails Performance
Query plans, cache behavior, queue latency, TimescaleDB, and deploy cost.
Solid Stack
Solid Queue, Solid Cache, Kamal, and when Redis should stay.
Rails AI Agents
SDK choices, tool design, background jobs, approvals, and cost control.
API Integrations
Odoo, Xero, OAuth refresh, webhooks, sync jobs, and reconciliation.
Anthropic Ruby SDK vs ruby_llm: Claude Gem Trade-offs
Compare the official Anthropic Ruby SDK with ruby_llm for Claude in Rails, scoped to provider-specific features, Rails persistence, model registry behavior, and where each gem becomes awkward.
Read full articleSolid Queue Recurring Jobs: Rails 8 Schedule Setup Notes
Set up static Solid Queue recurring jobs in Rails 8 with config/recurring.yml, Fugit schedule checks, scheduler processes, idempotency, and deployment notes.
Read full articleGemini API in Ruby: Interactions Client Notes
Build a narrow Gemini Interactions API client in Ruby or Rails: Faraday, function calling, provider-boundary parsing, server-side state, background work, and approval boundaries.
Read full articleRunning AI Agents as Background Jobs with Solid Queue
Run AI agents as background jobs with Solid Queue: queue isolation, concurrency limits, safe retries, resumable runs, and per-account cost control.
Read full articleRails AI Agents with the Anthropic SDK: Tool Loops and Guardrails
Build a Rails AI agent with the official Anthropic Ruby SDK: tool loops, MCP servers, write-tool guardrails, approval gates, testing, and cost controls.
Read full articleOdoo API Integration in 2026: JSON-2, Webhooks, Dashboards
Odoo API integration in 2026: JSON-2 in Odoo 19, native webhooks, plan limits, rate ceilings, external IDs, and warehouse-backed reporting.
Read full articleXero API Integration: Pricing, Scopes, Sync Boundaries
Xero API integration notes for pricing, granular OAuth scopes, rate limits, token refresh, webhook gaps, and why dashboards should read from a synced copy instead of the live API.
Read full articleTimescaleDB vs Postgres in Rails: When You Need It
TimescaleDB vs plain PostgreSQL for a Ruby on Rails app: hypertables, compression, continuous aggregates, migration risk, and when plain Postgres still wins.
Read full articleSolid Queue vs Sidekiq vs GoodJob: Rails Job Backend Trade-offs
Compare Solid Queue, Sidekiq, and GoodJob for Rails background jobs by workload shape: throughput, pickup latency, Redis cost, batch support, retry semantics, and migration risk.
Read full articleMission Control Jobs: Solid Queue Ops Setup
Mount mission_control-jobs for Solid Queue, secure the dashboard, filter job arguments, add alerting outside the UI, and rehearse the retry path.
Read full articleSolid Cache in Rails 8: When the Database Is the Right Cache
Use Solid Cache when operational simplicity and larger disk-backed capacity beat cache-hit latency, with separate cache databases, size limits, encryption, and Redis trade-offs.
Read full articleDeploy Rails 8 with Kamal to a VPS: Setup Runbook
Deploy Rails 8 apps to an Ubuntu VPS with Kamal 2: server setup, Docker config, SSL, migrations, backups, and rollback commands.
Read full articleRails 8 Authentication Generator: What You Still Build
Use the Rails 8 authentication generator for login, password resets, and database-backed sessions, then decide what to build yourself: sign-up, confirmation, lockout, 2FA, and invitations.
Read full articleSidekiq to Solid Queue Migration: Rails Runbook
Migrate Sidekiq to Solid Queue in Rails 8 with per-job adapter rollout, retry mapping, recurring job cutover, and tested rollback.
Read full articleSolid Queue in Rails 8: Setup Notes and Trade-offs
Install Solid Queue in Rails 8, configure recurring.yml and concurrency controls, decide between Puma and a separate jobs process, and understand the Redis trade-off.
Read full articleRails PostgreSQL Performance: Start With the Query Plan
Use EXPLAIN ANALYZE to find the actual Rails database bottleneck, then fix the proven failure mode: N+1 queries, missing indexes, Ruby-side aggregation, or pool pressure.
Read full articleHotwire and Turbo in Rails: Where Server-Rendered UI Fits
Use Hotwire and Turbo in Rails when the server owns page state: frames for scoped updates, streams for live regions, Stimulus for small browser-only behavior, and clear cases where React...
Read full article