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

There's always time to launch your dream

David
David wrote this on 93 comments

“I’d love to start a company / become a great programmer / write an awesome blog, but there’s just not enough time in the day!” Bullshit. There’s always enough time, you’re just not spending it right.

Now that’s some tough love, but I’m sick and tired of hearing “no time” as an excuse for why you can’t be great. It really doesn’t take that much time to get started, but it does take wanting it really bad. Most people just doesn’t want it bad enough and protect their ego with the excuse of time.


This excuse is particularly depressing when it comes from students.


“Oh, I have so many classes. Oh, I have so much home work. There’s simply no time to learn outside of school.”


Then you’re doing it wrong!


Never let your schooling interfere with your education, someone clever once said. Being willing to sacrifice at the edges is one of the most important skills you’ll ever learn.

I’ve received plenty of Bs and even Cs for classes that I was incredibly proud of because they came from hardly no time spent at all. Time that I could then spend on reading my own curriculum, starting my own projects, and running my own businesses.

And I did. During my undergrad, I created Instiki, Rails, Basecamp, and got on the path to being a partner at 37signals. Do you think I could fit all that and still get straight As and have lots of time left over for playing World of Warcraft? No.

If you want it bad enough, you’ll make the time, regardless of your other obligations. Don’t let yourself off the hook with excuses. It’s too easy and, to be honest, nobody cares on the other side.

It’s entirely your responsibility to make your dreams come through.

aa-2009.png

I can’t believe American Airlines’ booking panel still looks like this in 2009. Blows out on the right side in Safari. The “Go” button is 19×12 pixels. Everything either feels too squashed or too airy. And check out the < Enhanced flag next to “Price & Schedule”. Looks like one of those “we’ll tidy that up later” things that never got tidied up.

Jason Fried on Mar 9 2009 25 comments

Introducing the ProjectSearch Rails plugin:

Jamis
Jamis wrote this on 19 comments

Two years ago I was feeling some pain. I was trying to find a particular helper method in one of our applications, and full-text search across an entire project was not easy to do, by default. I was using TextMate at the time, which has a full-project search feature, but unless you took the time to actually configure your project just right, it would search everything (log files, Rails, etc) and that was painful. Furthermore, I was at the command-line a lot, and it wasn’t very fun to have to switch back to TextMate just to search the project.

What I typically did was just issue a suitably arcane Unix command via the command-line:

grep "def some_helper_function" app/helpers/*.rb

That’s not too bad, really, though it gets tedious when you do it often. What’s worse is when you want to find everywhere in your project that you reference that method:

find app lib -name '*.rb' \
  -o -name '*.rhtml' \
  -o -name '*.rjs' \
  -o -name '*.rxml' | \
  xargs grep some_helper_function

That’s where the pain begins to feel crippling.

So, about that time I created a utility script, called (unimaginatively) “find”, which essentially was a thin wrapper around find+xargs+grep. Instead of the above, it let me simply say:

script/find some_helper_function

However, I could scope the search, too, for narrower (and thus faster) searches:

script/find helper "def some_helper_function"

It turned out to be so handy that we’ve since copied it to nearly all of our projects. For two years I’ve relied on this script, to the point that when I started a new (personal) project this last week, I really felt the lack.

So I got permission from David to release it as a Rails plugin. I rewrote it a bit so it doesn’t rely on find, xargs, or grep (so it can be used on more than just Unix platforms), added some simple documentation, and posted it on GitHub.

Behold: the ProjectSearch plugin for Rails.

And if you happen to be a fellow Vimmer, you might find this vim script handy, which uses script/find to search in your project:

function! RailsScriptSearch(args)
  let l:savegrepprg = &grepprg
  let l:savegrepformat = &grepformat

  try
    set grepprg=script/find
    set grepformat=%f:%l:%m

    execute "grep " . a:args
  finally
    execute "set grepformat=" . l:savegrepformat
    execute "set grepprg=" . l:savegrepprg
  endtry
endfunction

" search with explicitly provided arguments
command! -n=? Rgrep :call RailsScriptSearch('<args>')

" search for the word under the cursor
map <leader>rg :silent call RailsScriptSearch(expand("<cword>"))<CR>:cc<CR>

" search for the method definition of the word under the cursor
map <leader>rd :silent call RailsScriptSearch(expand("'def .*<cword>'"))<CR>:cc<CR>

Enjoy!

How did the web lose faith in charging for stuff?

David
David wrote this on 60 comments

We’ve been talking about the basic wonder of putting a price on your product for such a long time that it almost seems trite at this point. I certainly thought that point would have lost propulsion long ago, but I keep being surprised by the contrary.

It seems that the web has been so thoroughly infected by the memes of “the future is free”, “we’ll all live from ads”, “VC money will get us there”, and “acquisition is nirvana” that it has almost lost its faith in the simpler ways.

I’ve been approached by a great many entrepreneurs since the Startup School talk who all tell a similar story. They found a niche, made a product for it, and then thought “what the hell, let’s do something crazy!” and decided to charge money for it. To their surprise, it worked and they’re paying the bills and growing.

While that’s fantastic, it’s also perverse. There shouldn’t be any element of surprise unveiled from that order of actions. It should come as a natural conclusion, but it doesn’t. Because the startup culture has caught this disease that there’s something unnatural in being profitable from the get-go. That making money early means you won’t make it big later.

It’s depressing and it’s wrong, but I also think it’s going to change. I think the days of the traditional San Francisco startup approach are numbered. It’ll be flushed down the drain along with CDO’s and zero-down mortgages.

On the other side we’ll have a world where having a price will be the expected. A world where Jason can’t make headlines saying “free is not the future”. A simpler world where most people, even on the web, will live from direct customers.

I look forward to that day.

All-in-one I-have-no-idea

Jason Fried
Jason Fried wrote this on 92 comments

My parents old all-in-one printer just crapped out so it’s time for a new one. They asked me to make a recommendation. I’m like “Sure, no problem.” I figure I know enough about this stuff to check a few out and find the right one for them.

Turns out I’m an idiot. And so is everyone else who’s looking for a printer like this. Well, we’re not really idiots, but we sure feel like it. Buying a printer remains the last confusing part of modern computing.

Do I choose the MP620 or the PIXMA MP480 or the C4580 or the MX700 or the J6480 or the P2055, or the MFC-8460N or the SCX-4500W.

Continued…

Letting things go

Jamis
Jamis wrote this on 38 comments

Capistrano had been my baby since mid-2005. It was a fun project, and all the more gratifying because it was fairly popular as a deployment tool for Rails applications. But this last year I’d begun to notice something.

I wasn’t enjoying Capistrano as much as I used to.

It had become a chore to work on. It already did everything we at 37signals needed it to do, everything and more. I didn’t feel any need to extend it, and yet bug reports, feature requests, and patches still trickled in. I began to resent each issue that was raised. I began to resent Capistrano itself, because it stood between me and other projects that I wanted to participate in.

And yet, Capistrano was my baby. I couldn’t just leave it! How can you just walk away from something that you’ve put almost four years of blood and sweat into? Is it even possible?

Continued…

Writing Decisions: Anticipating readers’ objections

Matt Linderman
Matt Linderman wrote this on 13 comments

We’re busy writing our new book. So far we’ve handed in our first draft and are now working on the second draft. One bit of feedback the publisher gave us: “It will be important to anticipate readers’ objections and head them off.”

So we’ve been building in an “I object” voice to a lot of the text by directly addressing counterarguments that we hear frequently. Of course, we then go and refute those views. But anticipating potential objections is a nice way to show readers you get it.

That way you’re not just bulldozing them, you’re empathizing with them, at least in some small measure. You show that you know what their concerns are and where their fears lie. And you address them head on. Some examples below.

We tell people to just begin. The voice of the opposition:

“It’s just not the right time for me to do that now.” You hear that all the time. But the perfect time never arrives. It always seems like a bad time to start a side business, buy a house, raise a family, or go on a long vacation. You’re too young or old or busy or broke or something else. But if you constantly fret about timing things perfectly, they’ll never happen.

Later on, during a similar point:

“What if the problem is so big that I’m afraid to make a decision?” Then break it into smaller pieces that have less impact.

We advise against business plans. The voice of the opposition:

“Won’t I need a plan to get investors?” First of all, do you even need investors? Remember, this is your company, product, or service. You decide what to build. You decide whether or not you need investors.

We preach the advantages of staying small. The voice of the opposition:

“But I work inside a big company. Does that mean I’ll always miss out on the advantages of staying small?” Not necessarily. Even if you’re not running your own business, you can still seek out a small solution.

Maybe you can start your own department or team and run it as a separate unit. For example, inside big publishing and music conglomerates, there are often editors and artists who have their own imprints.

We explain why you should strive to make money right away. The voice of the opposition:

“But wouldn’t it be nice to not have to worry about making money right away?” Only if you like living in a fantasy world.

Revenues and profits are the basic building blocks of your business. Worrying about them immediately is the best thing you can do for your business. When babies are born the most important thing for them to do is take their first breath. When your business is born the most important thing to do is take your first dollar.

When you really believe in your point of view, there’s no reason to be intimidated by opposing views. Let those views in and you come off as someone who has true faith and confidence in your own beliefs. Give it a try next time you’re writing something controversial.

How to attain inbox zero with Highrise Tasks

Matt Linderman
Matt Linderman wrote this on 9 comments

How I use Highrise Tasks to “snooze” emails and keep my inbox empty.

Inbox zero. It’s like a holy grail. There’s a badge for those who attain it. There are tons of blog posts by people like Merlin Mann and Mark Hurst telling you how to get there.

And today in the NY Times: “An Empty In-Box, or With Just a Few E-Mail Messages? Read On.” It outlines four options for dealing with an email: archive it, respond to it, forward it, or hold it for later. The last option is the one that trips people up…

HOLD IT FOR LATER This is the trickiest option. Some e-mail messages demand complicated answers. You don’t really want to dine with your colleague, but coming up with an excuse will take longer than two minutes. Other messages simply require information not yet available. Your friend wants to know if you’re up for watching the game on Sunday, but you’ve got to check with your spouse first.

You can leave these messages in your in-box with a promise to come back to them soon…Be careful to avoid letting many such messages pile up. Carve out a short amount of time — perhaps 15 to 30 minutes at the end of the day — to respond to all flagged e-mail. Remember, your goal is to keep your in-box empty. Each message sitting there should serve as a stark, visible reminder of your undisciplined ways.

Snooze with Highrise
You know what’s a great solution to these “hold for later” emails? Sending them to your Highrise create-a-task-by-email dropbox. Unlike other to-do lists, Highrise Tasks use time buckets that work on a sort of chronological conveyor belt. That means you can put something down for next week (or a specific date) and then get a reminder sent to you when that date rolls around.

The damn helpful part of that if you’re trying to get to inbox zero: You can “snooze” an email — you clear it out of your inbox, but still have it show it up on your radar again tomorrow or next week, via an email or text message reminder. And it’s as simple as just forwarding an email to a contact in your address book.

contacts

The process
Here’s the process for dealing with an email that you want to “snooze” for a week:

1. Forward email to the appropriate Highrise task dropbox (e.g. [email protected]).
2. Delete email from your inbox (just make sure it’s archived and not completely erased). Inbox zero achieved.
3. When next week rolls around, Highrise will automatically send you an email and/or text message reminder with the subject line of the email.
4. Search for the the subject line of the email in your mail application.
5. Act on the email. (Or snooze it again.)

The video above shows the process in action. I’ve found this to be a great way to get emails out of my inbox without having them evaporate or get stuck on some monolithic to-do list that never gets looked at.

Related
iPhone & Highrise: A quick email-a-task tip [SvN]
Highrise Help: Email

Ask 37signals: How many hours should I work per week?

Matt Linderman
Matt Linderman wrote this on 29 comments

Alexander Borisenko asks:

We are a small, early stage startup from Russia that is getting ready to get out of the concept phase into development. Coming from an investment banking background of 18 hour days…sometimes I start to question if we are doing enough, if we have to be working on weekends, etc… And although after starting to keep track of my time actually working I realized that 10-11 hour days are just as effective if done right, it still would be extremely helpful to know if successful company like yours works on weekends and on average, how many hours a day. I really hope I can get an answer from you on that, as it would solve the last big puzzle that I have before starting execution.

37signallers can set their own schedules but I’d say, on average, we work a typical workday (8 hours) and we don’t work weekends. (Unless we’re really feeling a project and don’t want to stop. Then we’ll take that inspiration and run with it.) But normally, it’s a typical workweek.

Investment bankers may work 18 hour days…but look at the state of the investment banking business. It’s not the quantity of hours you work, it’s how you spend the hours you do work and what you’re working on that matter.

Too many people think they have to work 80-100 hour weeks. They think, “No amount of work is too much work.” They pull all-nighters or sleep at the office.

But you don’t have to work superhuman hours. A normal workweek should be plenty. Even less is ok. In fact, being short on time is a good thing. It forces you to focus on the essentials. There’s no time for things that don’t matter. There’s only time for the basics. And if you want to build something great, you have to nail the basics first.

Basecamp, our flagship product, was created on the side while we were still doing client work. With just 10 hours a week of programming time and 10 hours a week of design time, we made a product that took off.

We didn’t have time to focus on anything other than the basics. It did a few things and did those few things really well. There were no distractions. It did what people really needed and nothing more. It was only after it took off that we decided to devote more time to it.

Also, keep in mind you’re setting up habits that you’ll continue to follow. If you work endless hours now, you’ll probably never stop. Once you start running the hamster wheel, it’s tough to get off.

Worry about the quality of your hours, not the quantity. That’s what really matters.