Jorge Manrubia

October 9, 2021

Career advice

A software engineering student asked me via Linkedin about career advice. Not sure I would take advice from myself because I made many mistakes, but here are a few things I wish someone had told me right after college: • Technical stuff is a fantastic career path, really. If someone tells you that true engineers don’t code, or that you...
Read more

August 29, 2021

Timeboxing away

Deadlines in software have bad press, for a reason. Say “we need to release this version at this date”, and you are stressing everyone out. Now, say “we need a version of this at this date”, and you are actually helping to ship. I learned about this idea of fixed deadlines and negotiable scopes from Basecamp many years ago, way before ...
Read more

August 19, 2021

Privacy-aware Rails consoles with console1984 and audits1984

We just released console1984 and audits1984. The first gem extends Rails consoles to make them auditable and to protect sensitive accesses. The second one is a simple auditing tool. This constitutes the other essential part of the technology we developed at Basecamp to raise the privacy bar in Rails applications, and I am thrilled to f...
Read more

July 21, 2021

Making Rails run just a few tests faster

Some time ago, I learned that Rails parallel testing had a significant overhead due to database setup and fixture loading. Essentially, each process will set up its own database and load all the fixtures, and this is not free for non trivial datasets. Fixtures are a factor here. At Basecamp, we use fixtures heavily and, when running si...
Read more

June 18, 2021

A story of Rails encryption

This story starts in October of 2019. I was in the Basecamp meetup in Chicago two weeks after joining the company. During an internal presentation, David talked about the need to raise the bar when it came to privacy for the new product the company was working on, codenamed Haystack, now HEY. We all were busy with all kinds of projects...
Read more

April 19, 2021

Complexity-inducing narratives

I recently gave a talk on software complexity, Single Page Applications and Hotwire (slides). Due to time constraints, I ended up cutting off a whole section on narratives that are often Trojan horses for unjustified complexity and decided to write it down instead. These narratives are: • It doesn’t scale • Tech giant uses it • In the ...
Read more

April 9, 2021

Farewell Evernote

I've been using Evernote since September of 2010. I started as a passionate user, and it quickly became an indispensable part of my workflow. Then, the product started to go south, slowly but steadily. The clients became more complex, heavier, and uglier. They added a ton of features nobody asked for. And they didn't improve the one th...
Read more

March 19, 2021

A Basecamp email: before and after

As a longtime fan of Basecamp copy, I always enjoy asking for help with user-facing texts I need. This time we had to send an email to some users that were impacted by a bug. I went to Jim Mackenzie. Here's the before and after. Before: “Hi <name>, We recently discovered a bug in HEY where it could fail to move emails to the designated...
Read more

March 14, 2021

Extracting, not inventing

Documenting the pull request to add encryption to Active Record brought me memories about the origin of each feature: • Support for unencrypted data: HEY was already used by staff and some beta users when we added encryption. • Option to downcase: emails are not case-sensitive. • Option to ignore case: labels are case-insensitive when ...
Read more

March 6, 2021

Smelling Rails smells

Shopify recently published Upgrow: A sustainable architecture for Ruby on Rails. It describes a set of architectural principles to build Rails applications and announces a companion future gem. I was surprised by seeing Shopify endorse this approach. The proposed patterns aren't new. Many people have advocated for them since Rails is R...
Read more