Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]

37signals Dev

37signals Dev
Announcing Hotwire Spark: live reloading for Rails applications Today, we are releasing Hotwire Spark, a live-reloading system for Rails Applications. Reloading the...
2 months ago
66
2 months ago
Today, we are releasing Hotwire Spark, a live-reloading system for Rails Applications. Reloading the browser automatically on source changes is a problem that has been well-solved for a long time. Here, we wanted to put an accent on smoothness. If the reload operation is very...
37signals Dev
Monitoring 10 Petabytes of data in Pure Storage As the final part of our move out of the cloud, we are working on moving 10 petabytes of data out of...
a month ago
48
a month ago
As the final part of our move out of the cloud, we are working on moving 10 petabytes of data out of AWS Simple Storage Service (S3). After exploring different alternatives, we decided to go with Pure Storage FlashBlade solution. We store different kinds of information on S3,...
37signals Dev
A vanilla Rails stack is plenty If you have the luxury of starting a new Rails app today, here’s our recommendation: go...
2 months ago
33
2 months ago
If you have the luxury of starting a new Rails app today, here’s our recommendation: go vanilla. Fight hard before adding Ruby dependencies. Keep that Gemfile that Rails generates as close to the original one as possible. Fight even harder before adding Javascript dependencies....
37signals Dev
Mission Control — Jobs 1.0 released We’ve just released Mission Control — Jobs v1.0.0, the dashboard and set of extensions to operate...
2 months ago
29
2 months ago
We’ve just released Mission Control — Jobs v1.0.0, the dashboard and set of extensions to operate background jobs that we introduced earlier this year. This new version is the result of 92 pull requests, 67 issues and the help of 35 different contributors. It includes many...
37signals Dev
All about QA Quality Assurance (QA) is a team of two at 37signals: Michael, who created the department 12 years...
4 months ago
23
4 months ago
Quality Assurance (QA) is a team of two at 37signals: Michael, who created the department 12 years ago, and Gabriel, who joined the team in 2022. Together, we have a hand in projects across all of our products, from kickoff to release. Our goal is to help designers and...
37signals Dev
Solid Cache We’ve just open-sourced Solid Cache, a new ActiveRecord::Cache::Store that we use in Basecamp and...
a year ago
15
a year ago
We’ve just open-sourced Solid Cache, a new ActiveRecord::Cache::Store that we use in Basecamp and HEY. Solid Cache uses a SQL database as its cache store. We get a much larger cache at a fraction of the storage costs of memory caches like Redis or Memcached. For us, that’s a...
37signals Dev
Building Basecamp project stacks with Hotwire It’s been two decades since Rails changed the way we build web apps. As the demand for richer and...
a year ago
15
a year ago
It’s been two decades since Rails changed the way we build web apps. As the demand for richer and richer UIs grew, teams came up with different frontends to deliver on those expectations. Client-side frameworks such as Angular, Ember, and React emerged as popular choices. One of...
37signals Dev
My adventures hunting down a Ruby memory leak 🎢 In this article, I tell the story of a memory leak we had in our HEY app, the cool tools I could use...
11 months ago
15
11 months ago
In this article, I tell the story of a memory leak we had in our HEY app, the cool tools I could use to investigate and how I finally figured out the root cause. Memory leaks can be tricky to diagnose and having the right set of tools makes a huge difference. I hope my adventures...
37signals Dev
Prometheus metrics with Rails and Kamal We use Prometheus metrics quite heavily at 37signals nowadays. They’re used to monitor a variety of...
9 months ago
15
9 months ago
We use Prometheus metrics quite heavily at 37signals nowadays. They’re used to monitor a variety of components in our infrastructure, such as MySQL, Redis and the servers hosting our applications. My colleague, Victor, previously wrote in detail about Prometheus metrics at...
37signals Dev
Mission Control — Jobs As promised back when we introduced Solid Queue, today we’ve open-sourced Mission Control — Jobs, a...
a year ago
14
a year ago
As promised back when we introduced Solid Queue, today we’ve open-sourced Mission Control — Jobs, a dashboard and set of extensions to operate and observe background jobs, that we’ve been using for over a year, in the beginning with Resque only, and later with both Resque and...
37signals Dev
Thruster is now open source We’ve just released Thruster as open source! Thruster is a minimal HTTP/2 proxy server that we wrote...
11 months ago
14
11 months ago
We’ve just released Thruster as open source! Thruster is a minimal HTTP/2 proxy server that we wrote to make it easier to serve a Rails application with great performance and security. It runs alongside your existing Puma process, and adds: HTTP/2 support SSL (via Let’s Encrypt,...
37signals Dev
Turbo 8 released We’re excited to announce the release of Turbo v8, a major update to the Turbo front-end framework....
a year ago
14
a year ago
We’re excited to announce the release of Turbo v8, a major update to the Turbo front-end framework. This release introduces a suite of innovative features designed to enhance web development and user experiences across the board. Here are the key highlights of Turbo v8: Morphing...
37signals Dev
Solid Queue 1.0 released We’ve just released Solid Queue v1.0.0, right before speaking about it at Rails World. This version...
4 months ago
13
4 months ago
We’ve just released Solid Queue v1.0.0, right before speaking about it at Rails World. This version has come a long way since we published the first version, 0.1.1, back in December 2023, with 132 merged pull requests and 126 closed issues, and the help of multiple...
37signals Dev
Announcing Hotwire Native As Rails World 2024 is about to begin, we have an exciting Hotwire announcement! We’re launching a...
5 months ago
13
5 months ago
As Rails World 2024 is about to begin, we have an exciting Hotwire announcement! We’re launching a brand new, yet familiar, framework for building hybrid mobile apps. Background But first, let me provide some context. Last year, shortly before Rails World 2023, we open sourced...
37signals Dev
Navigating personal information with care Accessing personal information from customers is a serious matter. With the launch of HEY in 2020,...
a year ago
13
a year ago
Accessing personal information from customers is a serious matter. With the launch of HEY in 2020, we developed some technology and processes to support a very simple principle: employees shouldn’t have access — intentionally or unintentionally — to personal information from our...
37signals Dev
Speeding up mobile development with Turbo Maintaining parity in a multi-platform product Expectations for a product are higher now than ever....
a year ago
13
a year ago
Maintaining parity in a multi-platform product Expectations for a product are higher now than ever. Users expect to use their software to be available everywhere: on the web, on desktops, on their mobile devices. Development for all these platforms is fractured so most companies...
37signals Dev
Demo of page refreshes with morphing We published a demo showing how Page Refreshes with morphing work in Turbo 8: Comparing code...
a year ago
12
a year ago
We published a demo showing how Page Refreshes with morphing work in Turbo 8: Comparing code helps a lot in software discussions, so I thought it would be valuable to show how the new feature compares to Turbo stream actions for performing partial updates and broadcasts....
37signals Dev
Exploring server-side diffing in Turbo We did a lot of exploratory work before coming up with the Turbo improvement we presented in Rails...
a year ago
12
a year ago
We did a lot of exploratory work before coming up with the Turbo improvement we presented in Rails World. One of those experiments included diffing in the server instead of in the client. The idea The inspiration for this idea came, again, from Phoenix Live View, a library I find...
37signals Dev
Mission Control — Web You might have noticed that Mission Control — Jobs, isn’t simply titled “Mission Control”. That’s...
9 months ago
12
9 months ago
You might have noticed that Mission Control — Jobs, isn’t simply titled “Mission Control”. That’s because it was developed alongside another useful tool, Mission Control — Web. Today I’m pleased to announce that we are open sourcing Mission Control — Web and you can find it on...
37signals Dev
Basecamp code runs 18% faster with YJIT Basecamp runs ~18% faster with YJIT. In this post I’ll share our setup, and the performance...
a year ago
11
a year ago
Basecamp runs ~18% faster with YJIT. In this post I’ll share our setup, and the performance improvements we achieved. Our setup Basecamp is currently running Ruby 3.3.0-preview3 and Rails Edge (master branch). We configure YJIT in our servers via RUBYOPT=--yjit-disable...
37signals Dev
Kamal 2.0 released We’ve just released version 2 of Kamal, our deployment tool for running web apps directly on VMs or...
4 months ago
11
4 months ago
We’ve just released version 2 of Kamal, our deployment tool for running web apps directly on VMs or bare metal servers. Kamal 1.0 was designed with 37signal’s use case in mind — deploying an application across multiple hosts, served with an external load balancer. With Kamal 2.0...
37signals Dev
Homographic Spoofing: a new Ruby toolkit What is an homograph attack Homograph characters look the same or very similar to other characters,...
8 months ago
11
8 months ago
What is an homograph attack Homograph characters look the same or very similar to other characters, but are different. For example, the letters “l” and “ӏ” (Cyrrilic “ӏ”) look the same but are different characters. A homograph attack is a phishing attack where the attacker uses...
37signals Dev
Modern CSS patterns in Campfire Recently, customers who have purchased a copy of ONCE/Campfire were invited to participate in a live...
10 months ago
11
10 months ago
Recently, customers who have purchased a copy of ONCE/Campfire were invited to participate in a live walk through the app’s CSS code. Campfire was built with vanilla CSS, fully #nobuild without compiling or preprocessors, and uses the latest web platform features available in...
37signals Dev
Introducing Solid Queue We’ve just open-sourced Solid Queue, a new backend for Active Job that we use in HEY to run about...
a year ago
10
a year ago
We’ve just open-sourced Solid Queue, a new backend for Active Job that we use in HEY to run about 1/3 of our roughly 18 million jobs per day. We’ll be moving more jobs in the coming days until we run HEY exclusively using Solid Queue. Besides regular job enqueuing and processing,...
37signals Dev
The radiating programmer You are an individual contributor at heart. You like writing code and solving technical problems....
a year ago
10
a year ago
You are an individual contributor at heart. You like writing code and solving technical problems. You dislike meetings and ceremony. Here’s what you can do to maximize what you like and minimize what you don’t: radiate information. The daily standup meetings that Scrum...
37signals Dev
A happier happy path in Turbo with morphing Last week, we presented in Rails World an upcoming addition to Turbo that uses morphing to offer...
a year ago
9
a year ago
Last week, we presented in Rails World an upcoming addition to Turbo that uses morphing to offer smoother page updates and a simplified broadcasting system. This is the article version of the presentation I delivered. The starting point The traditional server-side full-page...
37signals Dev
The gift of constraints One of the hardest things about shipping products is balancing this contradiction: you want to do...
5 months ago
9
5 months ago
One of the hardest things about shipping products is balancing this contradiction: you want to do the best possible work everywhere, but optimizing every piece takes time, and time is finite. I’ve done a poor job here countless times in my career. And I have seen many others...