Writing

Technical Insights

Field notes from building and running Ruby on Rails systems, with the metrics and trade-offs behind each decision.

·
rails ai-agents

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 article
·
rails background-jobs

Solid 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 article
·
rails ai-agents

Gemini 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 article
·
rails ai-agents

Running 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 article
·
rails ai-agents

Rails 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 article
·
api integrations

Odoo 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 article
·
api integrations

Xero 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 article
·
rails database

TimescaleDB 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 article
·
rails background-jobs

Solid 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 article
·
rails background-jobs

Mission 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 article
·
rails performance

Solid 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 article
·
rails deployment

Deploy 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 article
·
rails security

Rails 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 article
·
rails background-jobs

Sidekiq 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 article
·
rails background-jobs

Solid 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 article
·
rails database

Rails 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 article
·
rails hotwire

Hotwire 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