Selected Work

Rails Consulting Work Examples

This page is not a wall of anonymous miracle numbers. It shows the kind of Rails work I take on, how I scope it, which metrics I would inspect, and where each engagement stops being a good fit.

p95
Page and API Latency
IO
Database and Cache Pressure
Rollout
Checks and Rollback Path
Performance Engineering PostgreSQL Rails

Slow Dashboard or Reporting Page

Best fit: Rails apps where one or two expensive paths are hurting users, demos, or internal teams.

What I Check First

  • Request timing split by controller action, database time, view time, and external calls.
  • Slow query logs, `EXPLAIN` plans, missing indexes, N+1 reads, and table size growth.
  • Whether the page needs live data or can tolerate cached, precomputed, or background-refreshed data.
  • Database sizing, connection pool pressure, cache hit rate, and the cost of the current hosting shape.

The Usual Fixes

  • Move repeated aggregation into SQL, materialized views, or background-maintained summary tables.
  • Add narrow indexes only after the query plan proves they help the workload in front of us.
  • Cache at the widget or report boundary, not randomly around every slow line of Ruby.
  • Replace oversizing with evidence: fewer database surprises, clearer alerts, and cheaper capacity decisions.

What Good Evidence Looks Like

A useful result is not "the app feels faster." It is a before/after capture: p95 page time, database time, query count, cache hit rate, and infrastructure cost for the same workload. Without that baseline, performance work turns into guesswork.

When I Would Not Start Here

If the product problem is unclear, a speed audit will not fix it. I would also avoid deep caching work before the team knows which screens actually drive revenue, retention, or support load.

Related Technical Deep-Dives

More on this pillar: the Rails performance engineering hub collects the query-plan, caching, and queue-latency guides behind this kind of audit.

Rails Upgrade Solid Queue Kamal

Rails Upgrade or Infrastructure Simplification

Best fit: teams carrying framework age, Redis/queue complexity, hosting cost, or deploy risk.

What I Check First

  • Current Rails version, Ruby version, dependency risk, and test coverage around the upgrade path.
  • Background job volume, retry behavior, queue priorities, scheduled jobs, and failure dashboards.
  • Cache usage: whether Redis is a real requirement or a default that can be simplified.
  • Deployment rollback: how quickly the team can return to the last known-good release.

The Usual Fixes

  • Upgrade in small version steps, fixing deprecations while the diff is still understandable.
  • Run old and new job backends in parallel when queue behavior is business-critical.
  • Replace services only when the operational saving is worth the migration risk.
  • Add deploy health checks and queue monitoring before calling the migration finished.

What Good Evidence Looks Like

The useful proof is boring: green tests at each step, deprecation logs cleared, queue parity checked, failed-job behavior understood, and a rollback plan the team has actually rehearsed.

When I Would Not Start Here

I would not migrate infrastructure just because a newer Rails default exists. If Redis, Sidekiq, Heroku, or a managed database is solving a real team constraint, the right answer may be to leave it alone.

Related Technical Deep-Dives

More on this pillar: the Rails 8 Solid Stack hub covers the Solid Queue, Solid Cache, and Kamal decisions behind an upgrade like this.

New Build Internal Tools Hotwire

Focused Rails Application Build

Best fit: internal tools, dashboards, partner portals, and workflow systems with clear operators and narrow scope.

What I Check First

  • The workflow the app replaces: spreadsheets, email threads, WhatsApp groups, manual dashboards, or shared folders.
  • The roles that need access, the actions each role can take, and the data each role must never see.
  • The smallest useful release: the screens and jobs needed to replace one painful workflow, not the whole company.
  • Hosting and maintenance constraints: who deploys it, who owns support, and what happens when a background job fails.

The Usual Fixes

  • Build with Rails, Hotwire, PostgreSQL, Active Storage, and background jobs before reaching for a separate frontend.
  • Put permissions in the domain model early, because retrofitting access control is where small tools get expensive.
  • Use boring notifications and audit trails before building a complicated collaboration surface.
  • Ship the first useful workflow, then decide whether the second workflow belongs in the same app.

What Good Evidence Looks Like

A focused build should prove fewer handoffs, fewer manual status checks, shorter turnaround on one workflow, and a support path the team understands. "It has the requested features" is not enough.

When I Would Not Start Here

If the team has not agreed on the workflow, building software will freeze the disagreement into code. I would start with process mapping before Rails when the real problem is ownership, not tooling.

Related Technical Deep-Dives

More on this pillar: the Rails 8 Solid Stack hub covers the Hotwire, authentication, and Kamal building blocks, and these internal tools often grow into API integrations or a Rails AI agent workflow once the first release ships.

How I Choose the Starting Point

Problem First Evidence Likely Work Bad Fit
Slow page or report p95 timing, query plans, cache behavior SQL, caching, background refresh No known business-critical path
Old Rails or queue stack Version risk, jobs, tests, deploy rollback Incremental upgrade or migration Migration for novelty only
Manual internal workflow Actors, handoffs, permissions, deadlines Focused Rails and Hotwire app Unresolved ownership problem

Have a Rails Problem Like This?

Send the constraint, not a polished brief: slow page, risky upgrade, queue trouble, manual workflow, or a build you are trying to keep small. I will tell you what I would measure first and whether the work is a fit.