How we do, what we do
Sign up to get posts via email,
or grab the RSS feed.
Turbo 8 introduces morphing for smooth page refreshes,
view transitions, InstantClick, and more.
Dashboard and Active Job extensions to operate and troubleshoot background jobs
A new DB-based queuing backend for Active Job that we open-sourced today.
You should give it a try if you haven’t done it yet.
How page refreshes work, and how they compare to stream actions.
The right ceremony can save you from the wrong one.
How we improved project organization in Basecamp using Hotwire to build on top of a legacy drag-and-drop interface.
An investigation that taught us what we didn’t want to do.
Turbo 8 is coming with smoother page updates and simpler broadcasts.
A new disk-backed ActiveRecord::Cache::Store.
Bigger, cheaper, faster.
Our default for accessing customer information is: we don’t.
With the program just coming to a close, we take a look back
at our recent intern group and everything they accomplished.
Imperative infrastructure tools have trade-offs, but they help us directly and explicitly manage our infrastructure. We’ve embraced these tools and the philosophy they encourage. We are much better for it.
My summer internship experience at 37signals as a web programmer on the Product team.
We pay attention to the minutia in pull request reviews,
and for good reasons.
How we use Prometheus to ingest, store, and alert based on metrics.
During our journey off the cloud, we’ve received a lot of questions about our datacenters. No, we do not run them on our own. I’m here to discuss at a high level what 37signals’ datacenter presence looks like.
Maximalist positions are a thing in our industry. Take a technique, outline its drawbacks, extrapolate you can’t use it under any circumstance, and ban it forever. We are lucky that Rails embraces exactly the opposite mindset as one of its pillars.
Because only talking about success stories can be boring, here’s one about a Friday incident that happened while we worked on our cloud departure.
For the Operations team at 37signals, the biggest effort in 2023 is removing our dependencies on the cloud and migrating our application stacks back into the data center onto our own hardware. We’ve already made amazing progress in a fairly short time — let’s get into some details!
I rarely write my tests first or use them to help design my code.
A close look at the process we used to make our version of Kanban nice and useful on mobile devices.
Since we published why we’re leaving the cloud, we’ve received a lot of questions about our actual spending. We’re happy to share, both where we currently are and where we’re going.
Active Record restates the traditional question of how to separate persistence from domain logic: what if you don’t have to?
When discussing software design techniques, actual code should be a mandatory ingredient.
Some of the best releases are ones that people never notice at all.
My hunch is that if anything can make you 10 times more productive, it’s the environment not the programmer.
An inside look at the work we do (during cooldown).
Long-running jobs can create maintenance and support nightmares as they run up against resource and time constraints. What if we could break them up—automatically—into smaller chunks of work?
A common critique of Rails is that it encourages a poor separation of concerns. That when things get serious, you need an alternative that brings the missing pieces. We disagree.
Recently we focused on improving the performance of HEY. Fixing slow database queries for some of the HEY pages was a challenge, so I thought it would be worth writing up a technique we used.
We love concerns and have been using them for years in large codebases. Here we share some of the design principles we use.
Good code is a fractal: you observe the same qualities repeated at different levels of abstraction.