You’re reading Signal v. Noise, a publication about the web by Basecamp since 1999. Happy !

Models vs. Modules

Jamis
Jamis wrote this on 33 comments

When an application grows organically it accrues features like a snowball rolling down a dirty hill. With a little careful engineering, this works great (since the snowball is actually quite willing to be guided) but sometimes you need to stop and rethink things, do a little refactoring. We’ve done this (many times) with all of our products.

Most recently, I’ve been working on some cleanups and optimizations to the person avatar and company logo code in Basecamp. The evolutionary snowball (for the avatar feature, at least) progressed something like this:

  • In the beginning, there were no people avatars.
  • Then one day, we added the feature. This introduced methods on the Person model like avatar? and avatar_path and attach_avatar. There were something like seven new methods that were added to Person as a result of this.
  • Some time later, David went and cleaned it up, moving those new methods to their own module. This was great, as it kept the definition of the Person model clean, and kept the avatar-related code separate.

This brings us to today. The code remains really clean, overall, because we’ve continued to follow the pattern of moving related methods into modules, and just including those modules in the base model.

Continued…

How to film customer case study videos

Matt Linderman
Matt Linderman wrote this on 17 comments

The new Highrise site features video interviews with customers (the first time we did this was for Basecamp). Here’s a look at the process that went into creating these videos:

Finding subjects
First, we posted an alert inside the Highrise application asking customers to email us if they lived in Chicago and were interested in participating. We got a few dozen responses and started the vetting process (appropriately, we use Highrise to track all the conversations we have with candidates).

During this process, we’re trying to gauge a few things: Who they are, what their business does, where they’re located, what their offices are like, who we’ll be able to talk to, when they’re available, etc. Of course, we’re also looking for people who really love Highrise and are talkative about it. Also, we try to get a well rounded pool of subjects, not just tech/design firms (which often express the most interest).



Setting up the shoot
Once we pick our subjects, we schedule out the shoots, two shoots per day over three days. When shooting day comes, we travel out to their location. Steve Delahoyde from Coudal Partners helms the A/V equipment and does all the editing for the videos. He brings an assistant too so we have two cameramen. (Multiple angles helps give the final cut some more life.) After we shoot the interview footage, we capture some B-roll footage too: people working at their desks, entering the office, talking over some stuff with coworkers, etc. It helps liven up the final product so it’s not just talking heads the whole time.

We usually work pretty quickly. Find a good backdrop for the shot and start filming. We vary between interviewing one person at a time or having two people talk together. Depends on the situation. Sometimes you can get a good conversational rhythm going when people are actually interacting with each other. Also, it’s interesting how often coworkers finish each other’s thoughts and sentences. But sometimes, it’s best to shoot just one person at a time, especially if there’s more of a boss/assistant vibe going on in that workplace.

We begin by having the subjects talk about themselves, their company, what they do there, etc. It’s a good starting point because people are used to pitching their own companies, so it gets the ball rolling and gets them used to the process. We try to keep them off of any talking points schpiel so it doesn’t sound too rehearsed.

Continued…

Learning from failure is overrated

Jason Fried
Jason Fried wrote this on 96 comments

You’ve heard it over and over: “Learn from your mistakes.” Or maybe you’ve heard “fail early and often.” There are plenty of catchy quotes about failure. Most of them end with a clever little twist that makes it sound like it’s a good thing. Is it?

I don’t understand the cultural fascination with failure being the source of great lessons to be learned. What did you learn? You learned what didn’t work. Now you won’t make the same mistake twice, but you’re just as likely to make a different mistake next time. You might know what won’t work, but you still don’t know what will work. That’s not much of a lesson.

Instead, put most of your energy into studying your successes. What have you done right? What worked? Why did it work? How you can repeat it? Instead of making something worse a little better, how about making something good a little better? Don’t spend so much time looking down. Look up more.

There’s a significant difference between “now I know what to do again” and “don’t do that again.” The former being better than the latter.

It’s true: Everything is a learning experience. Good and bad, there’s something to be learned. But all learning isn’t equal. I’ve found that if you’re going to spend your time pondering the past, focus on the wins not the losses. The lessons learned from doing well give you a better chance at continuing your success.

weather underground.png

Weather Underground’s iPhone-optimized version is the best weather experience out there. I love how their forecast explains today’s weather relative to yesterday’s weather. I highly recommend bookmarking it on your iPhone home screen.

Product blog update: New Outpost, Backpack and productivity, Campfire to Jabber interface, etc.

Basecamp
Basecamp wrote this on 5 comments

Some recent posts at the 37signals Product Blog:

Basecamp
Bring Basecamp to your iPhone or iPod Touch with Outpost (just updated to 1.0.2)
David Kaneda of Morfunk says, “We released Outpost 1.0.2 last week to a really great response — it seems we’ve finally nailed most crashes, etc.”

Highrise
Highrise tip: Assign “Later” tasks a specific date/time so they pop up again
A simple tip to help you get “Later” tasks back on your conveyor belt: Assign them a specific time. Doesn’t really matter when — it can be any random time in the future. The goal here is just to get the task to pop up again so you’re reminded that it has to be done. That way it doesn’t just lie there with your other “Later” tasks forever.

Backpack
Backpack max plan now fits 500 users
We’ve raised the user limit on the max plan for Backpack to 500 users. This is a five-fold increase from the previous limit of 100. Now Backpack should fit even more companies and accommodate the needs of all the customers we have that were nudging up against the previous limit.

“A guide to personal productivity” that uses Backpack to stay organized
“Backpack – This is the cornerstone of everything. A super simple, web-based organisation tool that is so flexible it can accommodate almost any work flow you can think of.”

Page list

Campfire
A Campfire to Jabber interface
Attention developers: There’s a newly released Campfire to Jabber interface. This is a simple script that will forward messages from a Campfire room to a Jabber account, and vice versa. (Jabber is an open instant messaging technology that anyone can use.)

Getting Real
“Getting Real reminds small businesses why they shouldn’t try to overcomplicate things”
Tobias Christensen wrote to us, “I read your book Getting Real, and found it brilliant!...From my own experience I know it’s really easy to overcomplicate things, as your company grows you start adding various control mechanisms, and before you know it your implementing controls mechanisms to control your control mechanisms. Getting Real reminds small businesses why they should stay lean and agile, and why they shouldn’t try to overcomplicate things.”

Subscribe to the Product Blog RSS

So, I’m going to give up and use tables. It’s going to take me all of 45 minutes to undo the last two weeks worth of CSS work. I’m going to launch my site. And then, I’m going to go and get a donut.


Tables vs CSS: CSS Trolls begone. We use tables for layout in select parts of our apps too. Design is a compromise of both ends and means. When it comes to tables vs. CSS positioning, my #1 criteria is this: Which technique will be easier to work with over time? Tables are different structures with different behavior, and sometimes they’re the simpler and more maintainable means to an end. I also like the “CSS Troll” monicker. It cuts a bit closer to the bone than that lofty alternative: “Purist.”

Remember the strop

Jamis
Jamis wrote this on 19 comments

Last night I made some time to do some wood carving. I haven’t had much opportunity to carve anything since October, and I’ve missed it. There’s something supremely meditative about it: just you, a few blades, and a block of wood.

Good tools definitely help, so last year I invested in some nice gouges. They’re really sharp, well balanced, and just very comfortable to hold for long periods of time. The “really sharp” bit is probably the most important though; it’s remarkable how easily a truly sharp blade can cut through wood. With just a tiny bit of pressure, the gouge hisses softly through the wood, and the shavings curl up over the blade like little pillbugs playing dead.

Sometimes, though, I’ll hit a tougher part of the wood, where the grain is thicker or less even. Or I’ll need to cut across the grain, which requires a little (but not much) more force to do. So I push a little harder, and with a soft whisk the blade does its magic just as before. Push, whisk, push, whisk, push whisk... Hypnotic, almost. Very meditative.

Because I’m always adapting, almost unconsciously, to the different grain directions and densities, it’s so easy to forget how easily the blade cut through the wood when it was newly sharpened. I find myself thinking, “it’s still plenty sharp, I’ll go a few more minutes and then hone it.” Always just a few more minutes. One more cut. Just need to finish this one section…

When I finally sit down and run the blade over the strop, it only takes a few passes to hone it. Four or five trips down the leather, maybe about thirty seconds total away from the project. But what an amazing difference it makes. Those four or five runs across the strop are enough to bring the blade back to its original keenness, and it never fails to amaze me how easily the blade cuts through the wood, compared to just before stropping. I thought the blade was plenty sharp before. I had forgotten just how sharp it could be, and what a difference that makes.

Now, let’s jump back four years. Four years ago (almost exactly! January 27th, 2005, in fact) Jason and David invited me to come to the Building of Basecamp workshop in Seattle. I was working for BYU at the time, but Jason and David were doing their best to show me a better way.

I was comfortable at BYU. I had responsibility. I was involved in technology decisions. I was capable. I was able to push through the fibers of my career without too much trouble, I thought.

But then I attended Building of Basecamp. It was relatively short—a few hours in a room, listening to Jason and David talk about Getting Real. What they had to say was simple, to which anyone who has ever attended a Building of Basecamp or Getting Real workshop can attest. It was, for me, a few brief passes over the strop. I came out the other side sharper, renewed. I wasn’t satisfied to be merely a career programmer; I remembered the passion and delight I originally had in writing software.

(It was just a month later that I quit my job at BYU and started working at 37signals.)

This concept is not new. (Stephen Covey talks about it in his Seven Habits book, where he calls it “sharpening the saw”.) But it’s still valuable. All too often we can get stuck in a rut, thinking the resistance we feel to life or career is normal, forgetting the thrill we felt when the blade was new. All it takes is a moment to step back and remember the strop; the time spent will more than pay for itself in the long run.

It was very challenging to try and get that exact 12 minutes. I found that in a funny way it was very freeing. O.K., these are your boundaries, so put everything that you have into just this box. If you do it right, you should feel the tension of it wanting to spread beyond that time frame. But it can’t.


Bruce Springsteen on his halftime set at The Super Bowl. [tx MT]

Related: The documentary “Wings for Wheels: The Making of Born to Run” is a fascinating look at the creative process that went into that record. Even if you’re not a huge fan of The Boss, it’s a really compelling film — as good a documentary on making a record as I’ve ever seen.

Matt Linderman on Feb 2 2009 3 comments

Verify your work with checklists

David
David wrote this on 26 comments

WHO has recently shown that surgical deaths can be reduced by a third when hospitals follow their Surgical Safety Checklist. The checklist is very low tech. It includes questions like whether the patient has been properly identified, whether the proper tools are available, and whether everyone knows what kind of procedure is about to be done.

If a checklist so simple can save so many lives, I thought the technique could surely help us do better as well. So after reading about this study and their checklist, I’ve been pushing us to create checklists for all the common procedures at 37signals.

We now have checklists in Backpack for confirming that a feature is complete, we have a checklist for preparing the feature for deployment and for executing the deployment, and finally for verifying that the feature is working as expected in the wild. The last one looks like this:

It’s the kind of stuff that we all know, but that we’ll often forget if we’re not being reminded about it in the moment. Thinking back to the mistakes we’ve made in the past, there are plenty of those that could have been avoided or caught much earlier if we had been using checklists.

Think about what kind of checklists could help you save if not the lives of your customers, then at least their data and your uptime.

Patterns: Great self promotion

Jason Fried
Jason Fried wrote this on 21 comments

The 37better Project (archive from 2001 – some links may not work) was one of the best promotional things we ever did for our company. It brought us tremendous exposure. The 37betters were linked up everywhere and discussed at length in all the right places.

The goal of 37better FedEx wasn’t to win FedEx’s business, it was to win someone else’s business. Someone else who saw what we did and said “That is better. We could use better ourselves.”

Further, it showed people that we weren’t just designers, we were thinkers. We were curious about solving problems not just painting pictures. You may have disagreed with our solutions, but we explained what we thought was wrong and why we thought our design was better.

I’m surprised I haven’t seen more designers/firms try to make a name for themselves this way. It works. Take on a few brands, redesign a few pages or flows, explain in detail why you did it and why it’s better. It’ll spread like wildfire today. Back in 2001 there weren’t many outlets to get the word out. Blogging was in its infancy. There was no Twitter or public Facebook, etc. Today it’s different. Take advantage of it.

A modern case in point: Patterns by R.BIRD

R.BIRD primarily designs physical packaging for consumer products. In the last few years they’ve been churning out Patterns — “a series of professional observations about package design practices within specific product categories.” Patterns are free PDFs anyone can download.

They have Patterns on tea, women’s razors, sliced bread, energy drinks, among others. They’re insightful and well executed.

They’ll look at a category, study it, compare it, dissect it, and share their findings. It’s a competitive analysis without the us vs. them. If you’re looking to hire a brand design firm, wouldn’t you want to consider a company that likes this stuff enough to do it for free?


Unclaimed colors in the children’s cold medicine market.

Continued…