The 37signals Dev blog is brought to you by the people who build Basecamp, HEY, and ONCE ✌️❤️| 37signals Dev
A Rails gem for sending push notifications to mobile platforms| 37signals Dev
A big update to Hotwire Native for iOS and Android.| 37signals Dev
We love concerns and have been using them for years in large codebases. Here we share some of the design principles we use.| 37signals Dev
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.| 37signals Dev
How to create a good domain model is the subject of many books, but here’s a lesson I learned at 37signals: don’t be aseptic, double down on boldness.| 37signals Dev
A programmer who loves building things and messing with every part of the process.| 37signals Dev
How we use Prometheus to have metrics and alerts for Pure Storage.| 37signals Dev
Improve your feedback loop with smooth automatic page updates.| 37signals Dev
Minimal dependencies, maximum productivity. Staying vanilla pays long term dividends for your Rails apps.| 37signals Dev
We’ve just published the first major release of Mission Control — Jobs.| 37signals Dev
A look at how we test our products within the Shape Up framework.| 37signals Dev
The first major release of Solid Queue is out, just in time for Rails World.| 37signals Dev
The web-first framework for building native mobile apps.| 37signals Dev
If neither time nor development bandwidth is a concern, how would you make the right calls?| 37signals Dev
What is a homograph attack and how to protect from it with a new gem.| 37signals Dev
How we use Prometheus metrics with Rails and Kamal.| 37signals Dev
An in-depth look at how 37signals built ONCE/Campfire using modern features, vanilla CSS, and no frameworks or preprocessors.| 37signals Dev
A minimal HTTP/2 proxy for easy, production-ready Rails deployments.| 37signals Dev
What I learned on the journey chasing a tricky memory leak in HEY.| 37signals Dev
Native apps run silky smooth user experiences thanks to optimized compiled code, their multitouch actions, and smooth animations. It’s all about speed, speed, speed — except when it comes to speed of development — that’s a completely different story.| 37signals Dev
Turbo 8 introduces morphing for smooth page refreshes, view transitions, InstantClick, and more.| 37signals Dev
Dashboard and Active Job extensions to operate and troubleshoot background jobs| 37signals Dev
A new DB-based queuing backend for Active Job that we open-sourced today.| 37signals Dev
You should give it a try if you haven’t done it yet.| 37signals Dev
How page refreshes work, and how they compare to stream actions.| 37signals Dev
Articles by Jorge Manrubia on Rails design techniques and patterns. They feature code examples extracted from 37signals apps.| 37signals Dev
The right ceremony can save you from the wrong one.| 37signals Dev
We pay attention to the minutia in pull request reviews, and for good reasons.| 37signals Dev
I rarely write my tests first or use them to help design my code.| 37signals Dev
How we improved project organization in Basecamp using Hotwire to build on top of a legacy drag-and-drop interface.| 37signals Dev
An investigation that taught us what we didn’t want to do.| 37signals Dev
Turbo 8 is coming with smoother page updates and simpler broadcasts.| 37signals Dev
Our default for accessing customer information is: we don’t.| 37signals Dev
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.| 37signals Dev
Good code is a fractal: you observe the same qualities repeated at different levels of abstraction.| 37signals Dev
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!| 37signals Dev
A close look at the process we used to make our version of Kanban nice and useful on mobile devices.| 37signals Dev
Active Record restates the traditional question of how to separate persistence from domain logic: what if you don’t have to?| 37signals Dev
When discussing software design techniques, actual code should be a mandatory ingredient.| 37signals Dev
Some of the best releases are ones that people never notice at all.| 37signals Dev
My hunch is that if anything can make you 10 times more productive, it’s the environment not the programmer.| 37signals Dev
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?| 37signals Dev
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.| 37signals Dev
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.| 37signals Dev