Jon and I will be at FutureRuby this weekend (actually, I will be there, and Jon will be speaking).
Say “hi” if you see us. I’m flying into Toronto Thursday for FAILcamp.
Jon and I will be at FutureRuby this weekend (actually, I will be there, and Jon will be speaking).
Say “hi” if you see us. I’m flying into Toronto Thursday for FAILcamp.
At Voices that Matter, I was really honored when Matt Knox named my Testing is Overrated talk as one of the 5 great Ruby talks of the last year, alongside names like DHH and Avi Bryant.
It’s true that the title is a little off-putting, but I think the core message is sound: as programmers, we spend too much time thinking about programmatic testing and not enough thinking about other ways to ensure code quality.
(Maybe if I’d called it Test All the Fucking Ways I’d have started a meme, too…)
If you missed the talk, InfoQ should be putting the video up on their website sometime before the heat death of the universe.
In the meanwhile, you can check out the slides….
and read the extensive handout I made….
Would you like me to give a version of this talk to your conference? I would love to do it again! Contact me.
I recently joined the cool kids and got an iPhone. As mentioned Jon and I are going to Voices that Matter: Professional Ruby Conference (or as I like to call it, Ruby that Matters) as guests of Pearson Education. Except at this conference, I am not going to bring my computer, just my iPhone.

I think computers actually take away from the conference experience. They are heavy and distracting and you gotta baby sit the stupid thing all the time. The two redeeming qualities are that you can kill time if a session is boring, and you can hack code. Well, if the session is boring, instead of reading blogs, I’m going to leave. And if I want to hack, I’ll do some pair programming.
I’ll be taking notes in my trusty Moleskin as well as tweeting interesting bits using my iPhone. If you want to keep up with that, follow @lof on Twitter.
Update: So how’d it go?
I liked not having to lug around my computer—this is the lightest I’ve ever packed for a conference. Getting through airport security was a breeze.
I was able to tweet sporadic observations and I picked up a few new followers (hi!). I was also able to keep up on my email which was nice because I had some work stuff that needed attention.
There were two problems:
Here are slides from my talk earlier today entitled “Aristotle and the Art of Software Development”. I’m not sure how helpful the slides will be without the narration, but fortunately Confreaks recorded the conference. I’ll post a video (or link) here whenever it becomes available.
As Ruby on Rails grows, matures, and gains mainstream acceptances, so proliferate the conferences. RailsConf US, RailsConf Europe, and RubyConf. EuRoKo, RubyKaigi, Scotland, Latin America, Canada, Nederlands. Rails Edge. Half a dozen regional conferences. The Ruby conference’s bad-influence punk cousin, RubyFringe. And now Voices That Matter: Professional Ruby Conference, the worst-named conference since NeoCon® Xpress L.A. But Obie Fernandez, the conference chair, has already addressed the name issue (“Voices that matter? SRSLY? Does that mean people not speaking at the conference don’t matter?”), so there isn’t much more to say about that.
Luke, Eric, and I will be attending the conference next month (November 17-20), thanks to generous complementary passes. We’re suckers for free conferences and are looking forward to it. They’ve also offered a $200 discount to our readers, so if you decide to attend, use this discount code and save: PR2MAL4.
Here is my take on the conference.
1. Boston: great city. Should be fun.
2. Obie was inspired by RubyFringe. Single track, 30 minute talks, 150 attendees (?).
3. The agenda looks pretty professional and, well, straight. For better or for worse. Four case studies, several few enterprise-focused talks, and every base covered: scaling, refactoring, testing, plugins, deployment, etc. Fortunately, Giles Bowkett will also be there with a talk entitled “Beyond the Mountains of Madness with Ruby.” As with any conference, expect some flops and some good talks, and hope for some great talks.
4. The speaker list looks pretty good, including two of our very own Twin Cities folks: Matt Bauer and Tom Enebo.
5. Timing: why is this held two weeks after RubyConf? I’ll be at both, and missing work for two conferences in a month isn’t quite ideal.
6. Some sort of vocal performance seems to be involved. (Obie, is that you?)

If you’re interested in going, you can get $200 off the entry price by using this discount code: PR2MAL4.
Here are the slides from my RailsConf Europe talk on MapReduce and EC2. Not sure how much sense they make without the narration, but at least you can appreciate my fantastic drawing skills!
I’ll be attending WindyCityRails later this month. If you’re there, be sure to say “hi.”
I’m heading down with a motley mob of RUM members: Andy Atkinson, Sam Schroeder, Tom Brice, Barry Hess, and Chris Schumann. Should be a fun time!
This is the third of three articles discussing Startup School 2008, a free conference that happened at Stanford on April 19. The first article covered Paul Graham and David Heinemeier Hansson, who talked about building the right product and how to make money from it. The second article talked about VC funding. This one covers five remaining presenters.
Paul Buchheit, creator of Gmail and FriendFeed, talked about the process of listening to users. User feedback is important, of course, but when it comes to this feedback, listen != obey. Often, users’ feedback needs to be decoded and interpreted; a user may ask for one thing but really need/want something else. At Gmail, for example, a lot of users asked for the ability to reply to a message right from the inbox. After listening to users, though, Paul learned that what they meant was that it took too long to view a message and reply from there, which means that the real problem was that Gmail was too slow. So they sped up the system, and users stopped asking for this feature.
Similarly, users sometimes ask for conflicting things. 5% of your users may ask for Feature X, but what if Feature X makes the system less useful or more cumbersome for the other 95%?
The long and short is to care about user feedback, but don’t be a slave to it. Users don’t always know what’s good for them, and what’s good for one user may not be good for another.
Jeff Bezos of Amazon pushed AWS. Hosting is basically “undifferentiated heavy lifting” – it needs to be done, but it doesn’t matter who does it. In other words, your site will be worse if it is hosted poorly, but once you reach a baseline of quality, your site won’t be any better or worse based on who does your hosting. Jeff compared this to electricity: 100 years ago, a factory may have its own generator for creating electricity. But with modern electrical grids, most businesses would be crazy to create their own electricity.
I’m not sure if EC2 is quite ready (though persistent storage and elastic IPs help), but it definitely has promise. Indefinite auto-scaling of the application layer sounds great. Unfortunately, EC2 doesn’t offer much to help database scaling, which is a harder problem anyway; so capacity for thousands of web/application servers might not mean anything if your database is the bottleneck. And you almost certainly want your database and your application servers in the same network.
There is one thing that EC2 is perfect for, though: asynchronous processing. If you need to do a lot of processing in the background (see Zencoder, NY Times, Animoto), then you have an easy choice between EC2 and purchasing thousands of servers to meet a short term need.
If you want to get on Techcrunch, you’re in good company – just about every startup would like a positive writeup from Michael Arrington, and the traffic that follows. But TechCrunch has grown to the point where it can’t write about every startup, so it is picky. Michael talked about how to stand out from the crowd. The solution is what any good PR firm knows: tell a story. “Please write about GoodReads” is not a story. “GoodReads Launches” is a story, but not a very interesting one. “GoodReads gets 1,000,000 users” is a bit more interesting. “GoodReads to publish Harry Potter 8 online” will be picked up by TechCrunch, Mashable, CNN, NY Times, and everything else.
Michael also cautioned that sometimes the stories that are most interesting to the media (TechCrunch included) are the ones that you don’t want written. Leaks, rumors, and scandals play well in the press. So you might want to think about how you can make the most out of gossip and “negative” stories if they arise. And if TechCrunch bashes you, says Michael, engage them – don’t ignore or throw stones.
Finally, Michael recommends that startups not pay for PR, but rather engage the community through blogs, Twitter, discussions, etc. Personally, I don’t see what’s wrong with combining traditional PR help with social/community relations, but talk to me in another year or two and I’ll have a better perspective on the matter.
Marc Andressen has several big successes under his belt and is currently working on Ning. He did a Q&A session with Jessica Livingston, asking questions voted on by Startup School attendees. The discussion was good, though as Q&A it didn’t really have a single theme. One thing that stood out was Steve Martin’s advice to young comedians wondering how to break out: “Be so good that they can’t ignore you.” This is great advice to startups, who sometimes get caught up in issues of funding, pricing, staffing, marketing, networking, etc. All of these things are important, but if your product is good enough, the others will fall into place.
Peter Norvig closed the day and talked about learning algorithms, not surprisingly. But of course, he connected them to startups. A good formula for a startup goes something like this:
Learning algorithms can help with #3. The right dataset plus 20 lines of code can tell you important things about your users, your market, etc.
A few days ago, I wrote about Paul Graham and David Heinemeier Hansson at Startup School 2008. This article discusses three more talks, all of which deal with funding and legal issues. I’ll write more tomorrow about five remaining talks, which talk about building and marketing the right product.
I’m not going to spend as much time on the these 8 presenters. If you want to read more about the event, check out the videos themselves online, or other summaries of the event (Phil Crissman, Matt Maroon, Foodliker, etc.).
Sam Altmann of Loopt discussed his experience raising venture money from Sequoia. VCs, in his experience, look for three things: the right market, the right team, and the right product. Each firm has a different emphasis, but all three really need to be in place. Sam introduced a great concept: demand by proxy. For example, if the most common text message is “where are you?” – which it is, apparently – then there may be demand for a mobile solution for locating people.
He also talked a bit about the process of raising money. Raising money is no fun, and it ultimately isn’t productive. Every week spent courting investors is a week that you aren’t working on your product, your marketing, etc. Of course, it is sometimes necessary. But if your company is going to raise funds, this should be the responsibility of only one of the founders, and (ideally) this should not be his or her only responsibility. This sounds obvious, but Sam has seen startups where multiple founders focus all of their energy on raising money for several months, which is tough on a company.
I can say from experience that raising money is a hard process, and that it really needs to be kept in check. If you need investment, you’re better off spending some time on your product as well; after all, if you can build a good product and get early signs of traction in the market, investors are going to be much more interested than if you just have an idea. And if you don’t get the funding you need and need to bootstrap, then you’re better off spending more time on the product as well.
Actually, there is one sense in which pitching to investors is productive (apart from the potential investment). Pitching helps you to nail your plan. Most angel and venture investors are careful with their money; they don’t want to throw it away. And most get pitched frequently – several times a week even. So they will typically be happy to point out what’s wrong with your business and why it won’t work. As an entrepreneur (who can easily get buried in a project and lose perspective), it is great to be challenged. Even if you get rejected, talking to a few smart investors will help your vision.
Jack Sheridan, an attorney with Wilson Sonsini etc. (the law firm for Silicon Valley startups, according to Jessica Livingston), talked about legal issues for startups as they are founded, raise money, etc. The biggest take away was to have good lawyers. More specifically, Jack warned founders against participating preferred stock, where on liquidation an investor first gets paid back their original investment (the “preferred”) part, and then receives a full share of the remaining funds (“participating”; and cumulative dividends, where the company is obligated to pay a continual dividend to preferred shareholders, and where the obligation accumulates over time if it can’t be paid. In other words, if you take VC money under the wrong terms, your company could be a moderate success (e.g. sell for $20M), and the investors could walk away with just about everything.
The second main point was to be careful with vesting. Even founders’ stock should be vested, according to Jack. Let’s say three people start a company and divide ownership evenly. One quits after two months, while the other two work hard for years for low pay. The company is then acquired after 5 years. With no vesting, the founder who left still owns a significant portion of the company. Vesting takes care of this by issuing shares progressively over time. Brad Feld has a good article on vesting with details of typical terms, etc.
Greg McAdoo is a partner at Sequoia Capital, one of the top VC firms in the world. Greg gave a good overview of what VCs look for. Some of this was redundant with Sam’s earlier talk, though it was interesting to hear about VC funding from both sides (the investor and the entrepreneur). Greg emphasized the importance of finding the right market, using a surfer analogy. A surfer (entrepreneur) needs to wait for the right wave (market), and needs to hit it at the right time. The surfer can’t change the wave and can’t create the wave – they can just ride it, successfully or unsuccessfully. Similarly, a great product isn’t worth much if it hits too early or too late, or if there is no market for it.
Greg also suggested that startups build products for people whose hair is on fire. If you come across someone who is on fire, and offer them a solution, they’re likely to take it and unlikely to haggle with you on price.
Finally, try to find an unfair advantage – something that keeps other people from competing successfully with you. And try to increase this advantage over time, rather than just worrying about it early on.
Watch for the final post tomorrow, which will cover Paul Buchheit, Jeff Bezos, Michael Arrington, Marc Andressen, and Peter Norvig, along with a conclusion.
I attended Startup School at Stanford this weekend and thought it was really well done. There were 11 (count ‘em) talks of about 20-30 minutes, which was a pretty good format: lots of information, and not much fluff.
Sure, it was 10:30am, but Paul Graham’s talk had the feel of a (short) keynote. He spelled out the YCombinator approach to startups: Make Something People Want, and don’t worry too much about making money early on. But this approach makes for a strange equation:
Make Something People Want + Don’t Worry About Making Money = Non-Profit
Of course, as an investor and libertarian, Paul Graham is all about making money. But if you really do make something that people want, you can often find a way to get their money. Think of Craigslist. It’s 99.9% free, and doesn’t seem especially concerned about money, but it is also extremely successful. They basically just made something that people wanted, and the rest fell into place.
So instead of nailing down a business model early on, Paul suggests that you work your way “upwind” of profit. If you’re fighting a sea battle in a frigate, your ultimate goal is to sink your opponent’s ship. But the way to do this is to work yourself into position where you can win, by being upwind of the enemy. In a sense, being in the right position is more important than firing your canons early on. (By the way, I’m a little inexperienced with naval warfare, so if you find yourself in a sea battle, I don’t recommend you rely on this advice.)
How, then, do you put yourself in position to make money? First, Make Something People Want. Second, consider benevolence. After all, if you build something people want, and treat them well, you’re well positioned to capture their money.
Beyond this, Paul gives three reasons why benevolence makes business sense.
I’ve been thinking a lot about startups and ethics lately – not in the “business ethics” sense of “should I play dirty to win?”, but in the sense of “life isn’t really about making money.” This talk was an interesting call to build something worthwhile first, and to profit later.
Notice that this all depends on funding. If you have no funding or no day job, it probably isn’t a good idea to build something without worrying about the business model. But that’s YCombinator: YC provides the seed round, and often paves the way to Angel or VC money.
David Heinemeier Hansson provides a good counterpoint to this approach.
David Heinemeier Hansson gave a great talk soon after Paul Graham, in which he proposed a different approach to successful startups. The secret, according to David, is the middle term in this common formula.
Paul Graham suggests that you overlook #2 early on, and instead worry about #1. While David agrees that #1 is important (and is completely in line with the YCombinator “Make Something People Want” mantra), he suggests that #2 is actually pretty easy:
In other words, if you want a successful startup, charge money! Don’t worry about VCs, complicated business models, or winning the $1.6B lottery. Instead, just build something people like and charge for it.
He goes into a little more detail, suggesting that you’re better off selling to businesses than to consumers. Consumers want things for free, but businesses are generally willing to pay for good services. He also provides some helpful math, like: $40/month * 2000 users = $1,000,000/year. In other words, you don’t need a ton of users in order to make good money.
There has been some discussion (blog post and news.yc thread), suggesting that it isn’t that simple. After all, 37signals is a PR machine, as much (or even more) than a software company. When they launched Basecamp, they already had a huge following, which gives them a huge advantage over the rest of us.
This is all true, and it’s true that David oversimplified things. But his point wasn’t that it’s easy to win – in fact, he suggested that you might only have a 1 in 10 chance of winning. His point was that you’re better off taking a 1 in 10 bet at a Basecamp-size success than a 1 in 10,000 success at a YouTube-size success. Even though the next YouTube may make 1,000 times the money of the next Basecamp, the marginal value of the first $1M is much higher than the last $1M. So if you only have one life to live, you’re probably better off aiming for a small success than a take-over-the-world success.
As a corollary – and I thought this was a great point – you’re better off enjoying yourself at a somewhat successful company than spending your life in meetings at a hugely successful company. Would you rather be a modest success and work 4 days a week or be a workaholic and hope that you win the M&A lottery?
Again, it’s not quite that simple. It is hard to build even a modestly successful company, and it doesn’t hurt to aim big. But in principle, I’m down with David. After your basic necessities are met, having more money doesn’t really make you happier. And I’d much rather build software 30 hours a week than sit in meetings 60 hours a week, even if the latter paid better. And though it isn’t easy to build a successful “lifestyle” business (which a terrible term, by the way) if you’re smart and apply yourself, you’ll probably figure it out eventually.
I’ll write about the other talks tomorrow. And if you didn’t attend, the videos are posted at Omnisio.
Saturday is Startup School, a free one-day conference at Stanford put on by Paul Graham and YCombinator. I decided to apply this year and was accepted. Not that this is a real honor: my guess is that the criteria for being accepted are (1) applying before they’re full, and (2) being a software developer who is interested in startups. Apparently, I met both criteria.
So if you’re going to, let me know! Post a comment, email me, or say hi.
But why fly out to California just to hear a few people talk? Why pay a grand or two for a trip to OSCON, RubyFringe, etc.?
After all, the devil advocates, I could probably read a few books or a dozen blog posts and get access just about all of the information that will be communicated at these conferences. As a bonus, reading is faster than speaking, so I could probably see double the information in half the time. That would save me a lot of money and several days of my life.
Let’s take this to it’s extreme. I’ve seen Paul Graham speak once (at the first RailsConf). He basically wrote an essay for the conference, presented it, and then posted it to his blog. What a waste! I didn’t need to go to RailsConf just to hear something I could read on my own, right?
The thing is, learning doesn’t work that way. At least for me. I learn probably 10x-100x more when I sit down for a good talk than by reading the transcript. It has to be good, of course – a bad talk is no better than a bad transcript. But if the speaker and the information are worthwhile, hearing it in person that beats words on a page every time. I think there are several reasons for this.
First, being in a room with a speaker creates a stronger personal connection than just reading an article. The connection might still be weak; you might sit in the back of a room with a thousand other strangers, and the speaker might be mic’d and small. But even this weak connection allows for different, and stronger, relationship than you get from a blog post or a book.
Second, nonverbal communication is important, and is pretty hard to pick up from words on a page. In person, someone can communicate in at least four important ways: the words they speak; tone of voice and vocal emphases; physical gestures; and their overall manner and appearance. In writing, you just have words.
Third, in-person communication allows for a greater fidelity of communication. Dan has talked about a study of how audio quality impacts communication. Compare a PA system at a bus station to a CD, or a bad VOIP connection to an in-person conversation. Have you ever tried to have a conversation with a 1-second delay (think Apple video chat)? It is really tough. So the difference between reading someone’s words and hearing them speak is huge. (Bruno wrote a great article about email last year that describes this well.)
By the way, none of this is to say that there is anything wrong with books, blogs, and the written word. I love books, read blogs daily, and write emails every now and then. They have a place, and are better than oral communication for some things. They just don’t replace conferences. But I digress.
Fourth, when a speaker presents at a conference, they have a tighter feedback loop that offers them a little more control over their message. If they say something confusing or controversial, they can read the audience and slow down, clarify, or restate their point. Notice I say “a little” – I read enough Derrida in a former life to know that a speaker (or author) can’t control the hearer’s understanding of the words they say, and that writing and speech communicate in fundamentally the same way. But face-to-face (or face-to-audience) communication makes feedback and interaction a little easier.
Fifth, if I sit down to listen to someone, I’m making a larger commitment of time and attention. I may read 50 blog posts in one day, and devote a few minutes to each. You’re lucky if I spend more than 10 minutes reading your blog post (and your name is probably Steve Yegge). But if you have something to say, I’ll listen to you for an hour. And I probably won’t be listening to music or checking my email in the background while I do.
Sixth, conferences let you experience a talk with other people who are thinking about the same things. There is something about sitting next to people and seeing how they react. When do they laugh? When do they seem bored? When do they listen with rapt attention? Your learning is shaped by theirs, and you shape their experience too.
OK, so I probably still won’t drop $1,400 for Business of Software 2008. But it is tempting, and if my startup were profitable yet, I’d be there.
Three members of the Slantwise team will be heading out to Charlotte tonight for Rubyconf 2007 – Dan Weinand, Luke Francl, and Jon Dahl. We’re excited and hoping that it will have some of the magic of earlier Ruby conferences. Railsconf 2007 was a good time, but things are bound to change when O’Reilly and a thousand attendees are involved.
A few other folks from the Twin Cities are going too: Tom Brice, and three members of the JRuby team: Nick Sieger, Thomas Enebo, and Charles Nutter. (As an aside, JRuby is probably the most exciting thing going on in the Ruby world these days – even for non-Java programmers like yours truly – so if you aren’t following the JRuby project, you really should. At RUM on Monday, Nick and Charlie demonstrated deploying Rails apps with Glassfish, and the JRuby compiler, respectively. Pretty cool.)
Here is a picture of Jon, Luke, and Dan (left to right). So if you see us at the conference this weekend, say hi!

As I’ve mentioned before on this site, I was honored to be selected to present at Ostrava on Rails last weekend in the Czech Republic. I say honored because all the speakers were great and included two members of the core team: Jamis Buck and Tobias Lutke.
My talk was on how to create an application with Ruby on Rails that talks to mobile phones via MMS and SMS (if you’ve seen my posts on e-mail processing and MMS2R, these were trial runs for my presentation).
You can download my slides (PDF) qnd there are lots of pictures on Flickr with the tag ostrava on rails. Robert Cigán also has some blog entries about the conference. All-in-all, I thought the conference went off very well. The organizers are trying to start a Ruby/Ruby on Rails network in the Czech Republic (this concept apparently not being well established there) so I shared some experiences about RUM and how it has helped our community in Minnesota. Also, meeting and hanging out with the other speakers and attendees was quite fun. I would write more but I am in an internet café in France and the keyboard is driving me to distraction, so I must be brief.