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: provider-specific features, Rails persistence, and where each gem gets 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: Faraday transport, function calling, boundary parsing, server-side state, and approval gates.

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: 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 notes on pricing, granular OAuth scopes, rate limits, token refresh, webhook gaps, and why dashboards should read a synced copy, not the 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 for Rails Jobs

Compare Solid Queue, Sidekiq, and GoodJob 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 disk-backed capacity beat cache-hit latency, with separate cache databases, size limits, and encryption.

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 build sign-up, confirmation, lockout, and 2FA.

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 limits, choose Puma or a separate jobs process, and weigh the Redis trade-off.

Read full article
·
rails database

Rails PostgreSQL Performance: Start With the Query Plan

Use EXPLAIN ANALYZE to find the real Rails database bottleneck, then fix the proven failure mode: N+1 queries, missing indexes, or Ruby-side aggregation.

Read full article
·
rails hotwire

Hotwire and Turbo in Rails: Where Server-Rendered UI Fits

Use Hotwire and Turbo where Rails owns page state: frames for scoped updates, streams for live regions, Stimulus for the rest, and when React still wins.

Read full article