Developer's cover image
Developer's avatar

How's your Domain Model doing?

Private information
Hire me


Hey, how's your Rails app doing? Does it feel ok to work, or is starting to feel like a drag? Or maybe you're just getting and are worried about getting things right out the gate?

My take is that your app is missing better tools for Domain Modeling. If your Domain Model isn't in the best shape, it can often be a slog to continue feature development and maintenance. All the little cuts add up and it's just no fun. You need a better approach to get set up well and to stay that way.

I'd like to help you out. I'm excellent at feature work and finding elegant solutions that'll take less resulting code and thus there's less to maintain. I've been on the Rails core team, so I also know Rails inside and out.

Leveling up Basecamp

Here's a lot of the stuff I did at my tenure at Basecamp:

  • Wrote an IMAP-based importer for emails, using Puma's TCP serving, while communicating with a third-party about getting into Gmail's export options
  • Helped elevate the organizations focus on accessibility alongside a third-party contractor, including looking at options for a new foundation for a11y APIs in Rails
  • Invented the underlying idea and internal implementation for Kredis, a flag-ship feature in Rails 7, which replaced one-off Redis data interactions throughout the app
  • Wrote "Since you last visited" with the domain concept of an inbox Glance, it used a Kredis datetime updated when a lazy-loaded turbo-frame would enter the viewport, the frame was injected into an inbox where a sorted Stimulus controller would automatically place it, with CSS the frame was hid the top of the inbox or on a pagination boundary
  • Used Kredis to build out a per-inbox onboarding flow with elegant code
  • Wrote exports for emails and contacts, including inventing geared_refresh_frame_tags which wrapped the exports in the UI and would reload at distinct intervals
  • Came up with an ActiveSupport::CurrentAttributes based Filtering class for account filtering, to inject the account condition into queries, also included per account turbo_stream channels to broadcast to — this happened in a code review for a team member
  • Added a Menu view object to consolidate our view logic between HTML and the mobile app's JSON
  • Additionally, I sketched out many potential abstractions, including an ActiveSupport::Policy object to check or abort on conditions.

Throughout my entire tenure, I've written excellent code that continually pushed the boundaries of what the organization could do and set an example for other developers there.

What I'm Up to

I'm the author of several gems that take Rails further without getting in the way of your code.

I run a Ruby and Rails community Discord server with 500+ members, giving your team a space to bounce ideas off of other senior Rails developers. We welcome developers of all skill levels!