37signals logo

This is Signal vs. Noise, a weblog by 37signals about design, business, experience, simplicity, the web, culture, and more. Established 1999 in Chicago. Visit the Product Blog for more information on our products.

Jobs:

See more on the Job Board.

Feb 9 2010 David 15 comments Latest by Ravi

app-store-quality-control.png

There’s quality control for you. This is the latest entries in the Entertainment category on iTunes.

The App Store: Quality control without the quality David Feb 08

35 comments Latest by Jeff

I love my iPhone and I love Apple (cue images of flag pins and “I love muh countray!”), but I believe they’re blowing it with the App Store gate keeping. That’s of course not a new opinion. Developers left and right have been decrying the broken process. But there’s nothing like feeling it on your own bones to make the point.

We have a couple of new features in the wing for Campfire. They’ve been done for more than 10 days now. Why haven’t we released them yet? Because the iPhone app Ember needed to have a simple regular expression updated to support the features. We really like Ember, so we decided that holding back the features until this pro forma update went through was prudent. We’re still waiting.

This has made me think about all the ways the app store process sucks and how little we get back in return. The argument I keep hearing for why this terrible process is worth it is quality control. Here’s a breakdown of each argument:

  • Applications will be more stable: No they won’t. Echophone still crashes on me all the time. It’s not like the iPhone is immune to crash bugs. And why would it be? You’re writing native Objective-C here. Shit is going to crash every now and then. No 10 minute look-over by a App Store clerk is going to help that.
  • The App Store will be free of malware: That’s certainly no given. If you really wanted to be evil, you could very well hide your malice underneath a cute game and have a time bomb or a remote trigger installed. Do you think the App Store clerks are combing through source code to look for security issues? Ha!
  • Only good stuff in the App Store: Ha! The App Store has some 140K+ applications. I can guarantee you that the bulk of that is less than average. There are some 100 fart apps for christ sake!

We’re paying for the inconvenience of quality control without the quality part. In fact, lots of software has lower quality because of the App Store process. Developers can’t easily get bug fixes out and they certainly don’t release new versions as often as they otherwise would. This harks back to the era where software was really cumbersome to release on CDs, so you did it much less frequently.

Contrast this with OS X and the web. Both platforms are much more open and on a mac you have very little trouble with stability or malware or even quality. In general, the market is pretty good at sorting this stuff out. If you make a crappy application, people don’t buy or recommend it. And OS X seems to be holding up well as a secure platform compared to, say, Windows, so malware isn’t much of a concern either.

What I think Apple should do instead is to reserve the power to nuke apps that prove troublesome. Have a “if you fuck it up, we’ll yank it” policy rather than a “we’ll review everything poorly and slowly and still not catch it all” policy. They’d be able to get by with a much smaller App Store clerk staff, developers would be thrilled to escape the needless gate keeping, and consumers would enjoy more applications updated more frequently.

What’s there to loose except for the feeling of powah?

Scope a variable to a block in your template code Ryan Feb 08

13 comments Latest by Nick Coyne

Sometimes you are coding a template and you need to refer to the same method chain over and over. For example, you’re coding a template that summarizes activity on recent messages. You iterate through a block of messages, and for each message you want to display some information pertaining to the last comment. You could do it like this:

<div class="active_messages">
  <% @active_messages.each do |message| %>
    <h1><%= message.title %></h1>
    <div class="latest_comment">
      <div class="avatar">
        <%= avatar_for(message.comments.last.creator) %>
      </div>
      Latest comment <%= time_ago_in_words(message.comments.last.created_at) %> ago by <%= message.comments.last.creator.full_name %>
    </div>
  <% end %>
</div>

Everything inside of div.latest_comment deals with the exact same comment, but we have to use a method chain to get the comment each time (message.comments.last).

One solution is to set a local variable inside the iterating block with the knowledge that the variable will be reset after each iteration:

<div class="active_messages">
  <% @active_messages.each do |message| %>
    <h1><%= message.title %></h1>
    <% comment = message.comments.last %>
    <div class="latest_comment">
      <div class="avatar">
        <%= avatar_for(comment.creator) %>
      </div>
      Latest comment <%= time_ago_in_words(comment.created_at) %> ago by <%= comment.creator.full_name %>
    </div>
  <% end %>
</div>

One on hand, this is better because the methods called on `comment` are easier to scan. The whole div.latest_comment is more readable without the repeated method chain. On the other hand, setting a local variable is bad style. The local variable assignment creates state without explicitly showing where that state applies. It feels a little too PHP for my taste.

A better approach is to use the `tap` method to scope a variable to a block:

<div class="active_messages">
  <% @active_messages.each do |message| %>
    <h1><%= message.title %></h1>
    <div class="latest_comment">
      <% message.comments.last.tap do |comment| %>
        <div class="avatar">
          <%= avatar_for(comment.creator) %>
        </div>
        Latest comment <%= time_ago_in_words(comment.created_at) %> ago by <%= comment.creator.full_name %>
      <% end %>
    </div>
  <% end %>
</div>

The `tap` block shows exactly where the scope of the assignment starts and ends. I like how the template explicitly says “now we are going to deal with a comment in the following section, and this is the comment we are working with.”

I just hit on this pattern today while working on a feature and I think it’ll come in handy in the future.

Descriptive words and phrases found on a $6 bottle of hand soap Jason F. Feb 08

16 comments Latest by Darren

  • Extremely mild
  • Richly foaming
  • Naturally gentle
  • Deeply cleanses
  • Nourishes
  • Pure and soothing
  • Synergistically
  • Refresh and restore
  • Skin radiance
  • Cool soothing
  • Protects and restores balance
  • Harmonize and replenish
  • Additional moisturizing benefit

What doesn’t this stuff do? Lather up and this naturally gentle, richly foaming, pure and soothing nourishing cleanser will synergistically refresh, harmonize, replenish, protect and restore balance with cool soothing botanicals.

Kinda ridiculous, isn’t it? Reading this should remind you to read your own site, your own marketing copy, your own definitions.

What claims are you making? Do you really believe them? What are you saying? Does it make any sense? How are you describing your product? Is it accurate or just a sea of adjectives that look good and sound good together? What story are you telling or selling? Whatever it turns out to be, are you really OK with it? Deep down inside, is it something you’re proud of?

Feb 8 2010 Jason F. 5 comments Latest by Jussi

When debating UI, a picture is better than a description. And a functional mockup is better than both. But debating UI without being able to look at something is a waste of time.

Big Think interview with Jason (filmed with the Interrotron) 37signals Feb 05

12 comments Latest by arturo

Big Think Interview With Jason Fried

Was filmed using Errol Morris’ Interrotron (or a similar device). That’s how you get the direct eye contact. Jason’s take: “Was weird for 5 seconds then it was totally natural.”

The story of the Interrotron is also a neat example of scratching your own itch. Morris explains:

Q: Is it true that you interview people using a machine?

A: Yes, the (patent pending) Interrotron. It’s a machine that uses existing technology in a new and novel way. When I made my first film, Gates of Heaven, I interviewed people by putting my head right up against the lens of the camera. It seemed as though they were looking directly into the lens of the camera, but not really. Almost, but not quite. Of course, they were looking a little bit off to the side.

Q: What’s wrong with that? What were you trying to achieve?

A: The first person. When someone watches my films, it is as though the characters are talking to directly to them… There is no third party. On television we’re used to seeing people interviewed sixty-minutes-style. There is Mike Wallace or Larry King, and the camera is off to the side. Hence, we, the audience, are also off to the side. We’re the fly-on-the-wall, so to speak, watching two people talking. But we’ve lost something.

Q: What?

A: Direct eye contact.

Q: Eye contact?

A: Yup. We all know when someone makes eye contact with us. It is a moment of drama. Perhaps it’s a serial killer telling us that he’s about to kill us; or a loved one acknowledging a moment of affection. Regardless, it’s a moment with dramatic value. We know when people make eye contact with us, look away and then make eye contact again. It’s an essential part of communication. And yet, it is lost in standard interviews on film. That is, until the Interrotron.

Here’s a diagram of how it works and a photo of the device.

interrotron

Basecamp turns 6 Jason F. Feb 04

126 comments Latest by Neil Quinn

Today Basecamp turns 6. We launched Basecamp in February 2004 – here’s the original post on SvN that launched it all.

Stats

Birthday stats are always fun. Here are some of our favorites:

  • 55,700,000 comments
  • 53,000,000 megabytes of uploaded files (that’s 53 terabytes)
  • 38,000,000 to-dos
  • 24,600,000 messages
  • 8,600,000 completed milestones
  • 3,600,000 users
  • 3,600,000 projects
  • And for the technically minded: At peak we’re doing 220 requests a second with an average response time of 160ms.

These numbers are based on open accounts. We’re not counting cancelled accounts or deleted messages/comments/to-dos/files etc.

We’re thrilled with the growth over the last year. Thanks to everyone who uses Basecamp or any one of our products. We’ve got some great stuff in store for you this year so stay tuned!

Computers shouldn't make people feel like idiots Matt Feb 04

55 comments Latest by Tathagata

Predictably, some argue the iPad doesn’t do enough. It needs a keyboard or a removable battery or multitasking ability or whatever.

But there’s an interesting backlash to that backlash. (Meta-backlash!) The discussion has people openly discussing an ugly truth that doesn’t typically get a lot of play among tech geeks: People don’t know how to use computers. And not just stupid people. Millions of people. People who are adults. And that’s pretty damn lame.

(Bold emphasis in the following excerpts is mine.)

Fraser Speirs writes this in “Future Shock”:

I’m often saddened by the infantilising effect of high technology on adults. From being in control of their world, they’re thrust back to a childish, mediaeval world in which gremlins appear to torment them and disappear at will and against which magic, spells, and the local witch doctor are their only refuges…

The Real Work is not formatting the margins, installing the printer driver, uploading the document, finishing the PowerPoint slides, running the software update or reinstalling the OS.

The Real Work is teaching the child, healing the patient, selling the house, logging the road defects, fixing the car at the roadside, capturing the table’s order, designing the house and organising the party.

Steven Frank says:

Since the days of the Apple ][, C64, and Atari 400, all we’ve done is add, add, add. Add more features to sell more computers. We’ve never stopped to take anything away.

I’m weary of this notion (even when presented as satire) that anyone who can’t master a computer must clearly be mentally retarded.

So while we trump up our skills at designing “easy to use” interfaces for our applications, millions of people are still trying to figure out how to get our beautifully designed application out of its zip file or disk image. Or where in fact the Downloads folder is. Or what, exactly, a folder is. If we hadn’t been there for every step of the personal computer evolution since the days of DOS and AppleSoft, I wager we’d find it pretty bloody confusing as well.

Rob Foster “On iPads, Grandmas and Game-changing”:

My mother-in-law walked in the door the day of the keynote and the first thing out of her mouth was “Did you see that new Apple iPad? That looks like it would work for me. Would that work for me?”

I was utterly flabbergasted. She NEVER talks about computers or technology. She tolerates them at best. Her attitude is typical of most baby boomers I’ve talked to regarding computers. She wants to benefit from them but is frustrated by the wall she must climb in order to do so. She’s learned how to use email and a couple of other things on the Internet and that’s about it…

I’ve long felt that computers were too hard to use, that the filesystem should NEVER be seen by the user. That human-computer interaction should favor the “human” side.

That these conversations are even going on is a good sign. For those of us surrounded by the minutiae of computers all day, it’s easy to forget there’s a world of people out there who just don’t get it. And it’s not their fault. It’s ours.

Apple has decided it’s worth throwing out advanced features in order to get these people onboard. Anyone who builds apps would be wise to consider taking a similar path. (Note: It’s not just about making a computer or an app more accessible for people who don’t get it. It’s also for people who do get it because this way is better.)

You can spend so much effort tweaking code or a specific part of the UI or adding a new pet feature that you forget the most important thing of all: People need to be able to START using your product. If they can’t do that, who cares about the rest?

You can crank up the snow machine. You can set up the slalom course perfectly. You can shape all the moguls so they’re just right. But if people can’t ever get on the ski lift, there ain’t gonna be any race.

Feb 3 2010 Matt 12 comments Latest by Carbon Souls

Stephen Colbert on Blippy: “This is more exciting than going through old receipts. It’s going through new receipts!” (Outside USA? Try this version.)

REWORK Trailer 1: Staying Late Jason F. Feb 03

45 comments Latest by Martín Alcalá


REWORK is in stores March 9, 2010. Pre-order today from Amazon, Borders, Barnes & Noble, Indie Bound, and 800-CEO-READ.

It's not a promise, it's a guess David Feb 02

38 comments Latest by Anonymous Coward

“When is it going to be done?” is a reasonable question and we as software developers should try to come up with the best answer we can based on our experience and analysis. What we should not do, however, is treat our answer as solemn oath.

When you treat estimates as promises instead of guesses, you bind your worth as a worker to it. If you do not meet your own deadline, you are a failure. And since nobody likes to be a failure, they’ll indulge in risky behavior to avoid it, like burning the midnight oil and checking in bad code with scanty or no tests.

Rushing to meet your estimate promise once or twice might be bearable, but it’s ultimately unsustainable. Software development is inherently unpredictable. There are just too many moving parts and ice tips that turn out to be icebergs.

If you treat the estimate as a “best guess based on the limited information available to me before I start the work”, though, you’ll change the frame and break the cycle of deadline anguish. Now the task becomes collaborative and you can share new discoveries with the stakeholders.

Found out that doing the feature as originally designed requires changing some fundamental infrastructure that’ll add another two days to your one day estimate? Maybe it’s not worth it any more. Ask the stakeholder if he’s still interested in the feature when it costs three days instead of one. Or if there’s a way to simplify it such that the infrastructure change is not necessary.

That’s the true value of estimates. That it sets up conversational constraints that can be used as boundaries for trading concessions. Not that they’re nails for your own self-erected cross.

[Podcast] Episode #7: Ryan Singer on the 37signals design process Matt Feb 02

8 comments Latest by Bryan Sebastian

Time: 19:24 | Download MP3



Like this episode? Please share it with your friends:

Tweet this podcast  Post to Facebook

Life as a 37signals Project Manager
Ryan Singer, who manages 37signals’ products and designs interfaces, talks about the company’s design process. He discusses how the design team works with each other and collaborates with programmers. He gives advice to other design/development teams on how to work together smoothly. He talks about how studying Rails has made him a better designer. He explains why Christopher Alexander and Edward Tufte have been big influences. And information architecture even gets some love!

See related links for this episode. Previous episodes available at 37signals.com/podcast. Subscribe to the podcast via iTunes or RSS.

Launchpad deep links for Highrise, Backpack, and now Basecamp Jason F. Feb 02

7 comments Latest by Sayam Khan

We’re really having fun digging into all the useful things we can do now that our customers have 37signals IDs. The Launchpad is one of those playgrounds.

Last night we added deep links to Basecamp accounts. Deep links let you jump into an account without having to first log into the account and then choose where you want to go.

For example, deep links for Highrise let you jump right to your deals, cases, tags, tasks, or contacts. Deep links for Backpack let you jump right to your calendar, pages, reminders, or journal. And now deep links for Basecamp let you jump right to one of your five most recently accessed projects.

Here’s a video to show you how it all works:

Feb 1 2010 Matt 7 comments Latest by Nouman

no convenience fee.jpg

Say goodbye to convenience!

Great products are triumphs of taste Matt Feb 01

13 comments Latest by the Oracle

There’s more to building a great product than just studying the market or the technology or competitors. You need to have taste too. You need to understand what “great” means in a big picture sense, not just in your chosen field.

At least that’s what Steve Jobs thinks:

Great products, according to Mr. Jobs, are triumphs of “taste.” And taste, he explains, is a byproduct of study, observation and being steeped in the culture of the past and present, of “trying to expose yourself to the best things humans have done and then bring those things into what you are doing.”

Want to build a great iPhone app? Go listen to Billie Holliday. Trying to design a piece of hardware? Visit a Frank Lloyd Wright house. Aiming to write great marketing copy? Read Aldous Huxley. Need a color scheme? Go to the museum and check out some Mark Rothko paintings.

Studying masters in a wide range of fields is how you learn greatness. Their creations may not have a direct, instant benefit on whatever you’re making, but soaking them in will change the way you think and the decisions you make. (Side benefit: You’ll be a lot more interesting person too.)

Related: Acquire taste [SvN]

Jan 29 2010 Matt 6 comments Latest by Rich Collins

toomanyemails.png

This “too many emails?” downgrade option from chefscatalog.com is a nice way to keep people in the fold (as opposed to merely offering unsubscribe).

Jan 29 2010 Ryan 13 comments Latest by Wm Shore

Men don’t like appliances. We want things that can do lots of different things, that we can tweak and fiddle with, and then argue with each other about which one is better. Women aren’t like this, and because of this I have a feeling that it’s women who actually determine the eventual winners in consumer tech.

Ultimi Barbarorum on the iPad. Who knows if it’s true. But I can say this, whenever we hear praise from women on a product, it gives me more confidence that we hit the “useful” mark.

Jan 28 2010 37signals 66 answers Latest by George

What topics would you like to see us address here at Signal vs. Noise and/or on the podcast?

Interface magazine takes a look at 37signals' "paradoxical" approach to business 37signals Jan 27

11 comments Latest by Christopher

Pages 13 & 14 of the January issue of Interface (PDF) feature an article about Jason and 37signals. Interface is a publication of the Chicago chapter of the American Marketing Association.

article

article

Jan 27 2010 Matt 1 comment Latest by Mike Colwell

Of all the sources of funds for an early stage venture, revenue is the most compelling demonstration of traction. Too many entrepreneurs view fund raising as an accomplishment in and of itself…A lot of what’s written about Silicon Valley entrepreneurship is actually part of a sales pitch or positioning for the venture ecosystem.

Sean Murphy in “Overnight Success”

Launch: 37signals Answers Jason F. Jan 26

55 comments Latest by Roro

A few weeks ago we posted about our new way of working. Small teams of three, two-week iterations, and two-month resets.

First iteration

For the first two-week iteration, Team Bravo took on a revamp of our customer forums. For a couple of years we’d been using forum software called Beast. It served its purpose well, but it was time for something better.

The forums were structured in the traditional way: They were separated by product and grouped into categories. There were forums for feature requests, troubleshooting, how-tos, etc. It worked well enough, but it really wasn’t a good match for the primary use of the forums: asking and answering questions.

We also didn’t have any formal spam protection on the forums so every day we had to go in manually and clean out spam. Plus, the anonymity of the forums led to the common devolution of discussion seen across anonymous forums across the net. We had to do better.

So Team Bravo pitched a total re-do. We accepted.

A change of direction

The early mockups for the revamped forum followed the structure of the old forum. Products and categories. We fell into the trap of redoing something by using the old as the guide for the new.

But a few days in we shifted directions and decided to structure the forums in more of a Q&A format and less of a “subject” and “body” format with the usual categories. 37signals Answers was born.

How it works

When you visit 37signals Answers you are shown a list of the products supported by Answers.

Continued…

Jan 26 2010 Matt 12 comments Latest by Ariel Diaz

Jan 25 2010 Jamie 12 comments Latest by Jian

dhh-tweet.png

Always interesting to see western and eastern characters intermingling.

Product Blog update: New features in Highrise, send real time updates from Wufoo, etc. 37signals Jan 25

4 comments Latest by BackpackTips

Some recent posts at the 37signals Product Blog:

Highrise
New in Highrise: Email Notifications, Daily Digests, Dropbox vCards
We launched a collection of really useful new features for Highrise: email notifications on notes and comments, daily digests via email for Deals and Cases, Dropbox vCards, and email shortcuts.

New in Highrise: Merge companies
Highrise has always allowed you to merge two people into one person. This is handy if you have duplicates or someone spelled someone’s name wrong and there are two separate entries in your Highrise contacts. Today we launch a long requested feature: Merge companies. You can now merge two companies into one company just like you can merge two people into one person.

Using tags in Highrise to organize your customer lists
“We spend a lot of time segmenting our customer and prospect lists so that we can pull different groups out for specific marketing campaigns. We created five priority tags—keywords you attach to contacts to categorize them…We prefix them with ‘@’ to keep these heavily used tags together and sorted at the top of the list. We also create tags to track how prospects and customers have interacted with us—ie. did they download a free resource, attend a teleseminar, buy a particular product or service.”

Highrise tags in action

Basecamp
Linnea’s Baby Room project managed from start to finish with Basecamp
“I created a Basecamp project for the room design, which really made it easy for Gail, Aga and I to share ideas and links in messages, to create to do lists and manage the milestones of the project from start to finish. Basecamp was especially handy for accessing information (e.g. paint color, product URLs) when we needed it most.”

Backpack
An unofficial Backpack Tips page and Twitter account
“It catalogues the tips and tricks I have learnt over the last two years or so since I became a 37signals product user and general fan.”

Multiple products
Send real time updates from Wufoo to Highrise or Campfire
“We’re constantly hearing stories about how your teams and businesses depend on the ability to react quickly to the leads and registrations gathered with Wufoo. Because of this, we are excited to be releasing a new notification platform to help you send real time updates about the entries you’re collecting in Wufoo to your favorite web applications.”

New on the Launchpad: Deep links
We added a really useful, click-saving-and-time-saving new feature to the 37signals Launchpad (part of the new 37signals ID system). We call this new feature “deep links”.



37signals tools top the list at “100 Apps for Tech–Savvy Teachers”
“More than three million people use this application for a reason — it’s extremely effective for businesses and educators. 37 Signals makes it easier to collaborate, share, discuss and get work done through its programs.”

Subscribe to the Product Blog RSS feed.

13 video player UIs in 24 hours Jason F. Jan 25

37 comments Latest by ketan

I ran across the following video player UIs in the past 24 hours.


Blip


ESPN


Flickr


Google Video


Justin.tv


Metacafe


MySpace


Quicktime


Ustream


Viddler


Vimeo


Yahoo Video


YouTube