20th Jul, 2010

No comments

Two Tips for Deliberate Practice

Roughly, deliberate practice is a means to improve yourself by intelligently breaking your target into components that can be practiced and upping the level of difficulty of each practice session to be just outside your comfort zone. Deliberate practice is often associated with the idea that even genius-level talents (Mozart, Tiger Woods) got there through practice, not talent. However, you can ignore the talent debate and just concentrate on the idea that if your talent level is X, deliberate practice is how you get to 10X.

There are two things that I think need more emphasis when people talk about deliberate practice.

Deliberate practice is more than 10,000 hours
Or maybe it’s less than 10,000 hours. Almost everyone I’ve used the phrase “deliberate practice” with has come back saying, “oh, that’s that 10,000 hour thing.” They’re referring to part of the research saying that after 10,000 hours of practice a person will have reached their improvement limit. This is the least useful thing to know about deliberate practice research. It’s the fine print warning that says if you keep a deliberate practice regime up for ten years it’s going to stop being effective. Big deal.

The ten thousand hour framing obscures two things, that deliberate practice can be applied to much smaller things (not just when your goal is to be world class) and when you want to make a smaller commitment. What happens after 1 hour of deliberate practice? Every hour spent practicing is time when you’re improving. There’s not 10,000 hours of work followed by a leap. It’s 10,000 hours followed by 10,000 gradations in improvement. The first research paper that I read on this topic is an study of competitive swimmers at all levels, The Mundanity of Excellence. Even at the youngest levels, they found that the fastest swimmers practiced better.

So, you’re an office worker who sends tons of email? Take one hour, read this article on writing effective emails, and then rewrite your last ten emails according to those guidelines. Forever after you’ll be a better emailer.

The key word is deliberate
A lot of people practice. They put in hours of work hoping to get better. Generally a high volume of practice does lead to improvement. But that’s not the key insight of deliberate practice. In the swimming example above they found that there were many similarities between the faster and slower swimmers, including how much time they spent swimming. The difference is that the slower swimmer would spend practice thinking about the hot tub and the faster swimmers would spend practice working on some minutiae, like how slight variations in the cupping of their hand effected the efficiency of their swimming stroke.

I generally find that it’s easier to work more than it is to work smarter. Why is that? It would obviously be much more efficient if my preference were reversed. For example, my number one productivity boost comes from keeping an obsessively updated todo list throughout the day. My natural inclination toward the todo list is to compete with myself to see how many items I can check off. The biggest problem with my todo list is that I’ll put everything on it and I don’t spend much time prioritizing. So at the end of the day my todo list reflects more activity than accomplishment.

In the language of deliberate practice, the “skill” I’m trying to improve is productivity. The naive approach is just to work harder. The deliberate approach is to break my productivity target down into smaller pieces and train up the areas where I am lacking. When it comes to productivity, I’m not afraid of hard work or long hours. Those are positives (I think). My weaknesses [1] are that I don’t like making plans (I distrust them), I often don’t follow my own plans, I procrastinate whenever the next step is not something I’m interested in (I almost lost an entire week to a screencast that still hasn’t happened). One of my old weaknesses was losing track of what I was working on and getting sidetracked. I solved that weakness by adopting a todo list. I bet if I spent more time “practicing” productivity I’d come up with an even more nuanced view of my strengths and weaknesses.

So, how would I train my own productivity? Each of those weaknesses needs a training plan. I’ve never seen anyone break down “productivity” in the way a coach would break down a training schedule. Should I say next Thursday I’ll re-prioritize three of my old todo lists, take a coffee break, then prioritize three more lists (written 2 x 3 x prioritize todo list; 2:00 rest)? That would be taking a small subset of my productivity goal and training it.

I generally like to try to include my deliberate practice as an organic part of the rest of my work. That means I like to practice while I’m working instead of creating artificial exercises like the todo list one above. I’m not advocating this as the most hardcore way to approach work, but it’s as hardcore as I’ve managed so far. The way I broke down training productivity was just to create a meta list that gives me points for things like: making a plan, working to a plan, and not surfing random websites. I’d be interested in a more disciplined approach though–does anyone have any training ideas?


[1] The book The Cyclists Training Bible has cyclists identify limiters, factors that are holding them back from achieving their goals. Then the cyclist puts together a training program that specifically addresses these limiters. The difference between weaknesses and limiters may seem subtle, but I think limiters are a much more functional way of looking at your weaknesses. I’m a terrible singer, but that hasn’t held me back from anything meaningful. I’m also terrible at visual design and that often slows down my work. Gee, which one should I work on? Thinking about limiters also lets you work on things that you’re good at but which happen to be extra important to your goals. For example, as a programmer I’m a reasonably good communicator but I’ve still managed to collect a huge list of regrettable programming outcomes that could have been solved by earlier, more articulate communication. So communication is always one of the skills that I’m working on.

9th Jul, 2010

10 comments

What is success? Impact.

“Never mistake activity for achievement.” ~ John Wooden

The software project that haunts me the most was a single-sign on implementation that I did for O’Reilly. The project was handed to me, partially done, with the instructions, “These three things need to be finished, do you think you can do them so that we can launch in two weeks?”

The three things didn’t seem hard, so I said yes. I think it takes some experience to recognize that there’s a huge red flag in that question. I was answering, that, yes, I could complete those three things in short order. How would I know, having never looked at the project, whether those three things were sufficient for launch. In the course of the next two weeks, three more unfinished things popped up and the launch date was pushed back two more weeks. Then more missing features and bugs were found. And again. After three months of this I was racked with guilt over the missed launch dates.

I went home that weekend determined to figure out how to get the project on track. I was basically a junior programmer then and had no idea how to run a project. So I bought a book on project management, Rapid Development by Steve McConnell, and cracked it open. The book opens with 36 Classic Mistakes Enumerated. I checked off 17 mistakes for the project and was hooked on the book for the rest of the weekend. When I went to work on Monday, I hid out in an empty office on a different floor and spec’d the project for myself. According to my rough spec, the project had at least 180 function points and I had completed 90 over the last three months, leaving 90 more to do. Would we be launching in two weeks? Definitely not.

For a long time, this was the project I was most proud of. I used my spec to pull the project out of the weeds and onto a realistic schedule. A lot of good things came out of that weekend of reading. For one, the project got on track, a realistic launch date removed my late-project guilt, and the launch was a technical success. It also gave me a lot more work options: I got more respect at that job, I got opportunities to make bigger decisions, and that led to opportunities to work for some pretty cool startups. Then one day I asked myself: why were we building a single sign-on system?

Mixing some metaphors about nature and total ignorance, I had gotten out of the weeds only to see trees. Years later when I could see the forest, I realized that my proud moment hadn’t accomplished anything (minor convenience for a small population of users, inconvenience/confusion for a big population of users). The goal of the project was actually to allow for a second phase around business intelligence or some such thing. That never happened and I’m told now that the system is now being phased out.

“Being the richest man in the cemetery doesn’t matter to me. Going to bed at night saying we’ve done something wonderful, that’s what matters to me.” ~ Steve Jobs

Ever since that realization, I’ve been working to figure out for myself how to maximize the impact of the work I do.

There’s a good discussion of what constitutes startup success over on Gabriel Weinberg’s blog (and the discussion is basically what prompted me to write). It goes over various scenarios for startups and tries to judge if they would be considered successful. Obviously a long running company that made millions of dollars for the founders and investors is a success. What about one that made a lot of users happy but didn’t make the investors any money? What about one that made everyone money in an acquisition but then was immediately shut down?

I just don’t think I could ever call my work successful unless people used it. I don’t want to be merely well paid. I don’t want to write great code that doesn’t get used.

There’s a logical argument to be made that taking part in a system that produces one google and nine failures is a way to maximize your impact. But I couldn’t handle that unless I was working on Google. I don’t want to look back on 30 years of work and realize that only three of those years mattered. That means I care about consistency of impact as much as I do about the magnitude of impact.

I think there’s a lot of other personal preferences in working out a way to optimize your work. Here’s where my preferences led me:
1. It’s better to be in control, at least of your domain, but better the company. It’s rare that anyone else has tasked me with a project that mattered.
2. Sustainability matters. The main reason I stopped working for venture backed companies is because investors introduce so many more ways for your project to get die an early death (small/medium successes get dropped and small/medium acquisitions often get killed).
3. Compounding interest works. The first two years of CrowdVine were very limited. Now, with some revenue and a few more people, there’s a lot more that we can do.

That’s basically why I bootstrapped CrowdVine. Not all the trade offs are good, but it’s the first job I’ve had where every day of work mattered. And I think that’s pretty fun!

16th Mar, 2010

1 comment

Lessons Learned Doing Time Boxed Development

I spent last week extracting some features from CrowdVine into a stand alone simple CMS service I’m calling big.ly. I gave myself a fixed time period–one week starting on Monday and ending Sunday.

In engineering management terms, a project like this is called time boxed development. It comes up all the time, especially in Agile development methodologies. The idea is that you commit to a time period and production-ready code–but are allowed to adjust the scope of your work as you go. So for last week’s example, a successful result could have been as simple as a page describing the project and a contact-me-when-you-launch form. If, instead, I had built all of my dream features but a bug prevented me from launching–that would be failure.

Working in a time-boxed way is actually a skill and something I’ve practiced a bit. I like having the time box because it makes it much easier to make decisions. Those decisions almost always come down to: take the simpler option. You spend less time going down rabbit holes and more time reacting to actual feedback on live features.

The first time I heard about time boxed development was at a users conference for an XML database company. They used six month time boxes. We used Scrum at Odeo, which is an iterative approach where work is pulled from a feature backlog and then performed in “sprints” that are usually two or four weeks long. I did some agile project management training and got to see how this works in the corporate world (good for engineers, bad for antsy product managers). Then I tried two-day projects in order to refine my own development practices (IHeartQuotes was probably the most successful project to come out of that).

Along the way, I’ve learned a couple lessons.

Activity is not accomplishment
The hardest part of being a first time Scrum manager was not knowing how to help people adjust the scope of features they were working on. I spent a lot of time telling people that they’d bitten off more than they could chew, that they weren’t good enough to finish on time, that they might as well give up, etc. Nobody would ever listen to me. The engineers were cocky and ambitious and were shooting for the moon.

I think they also thought I was being a jerk by not believing in them. They wanted to be challenged and I was doing the opposite by trying to get them to scale back their ambitions.

I think this is a failure of Scrum. It was set up to live in a world where you have to commit to features. So it uses time boxing to help give some visibility to the development process, but at the end of the day everyone knows they’re judged on how many features they check off. So that’s what ambitious programmers shoot for–do as much as possible, even at the risk of not having releasable code at the end of an iteration.

But that activity, checking features off or having code in a half-working state, doesn’t have any inherent value. Luckily, there’s been a huge move toward metrics driven development. That gives a better way to challenge yourself–instead of how many features you can build, you can judge yourself on how much value you’ve created. Did your change effect the conversion rate? Did it change results from customer surveys? Did it increase retention?

If I was judging my CMS project by features, I’d be ticked by some of the things I didn’t finish (no contact forms and subscriptions aren’t properly wired to a merchant account). I might even have risked the entire iteration by chasing for those missing features. Instead, I worked through a series of accomplishments. The first was being able to move tonystubblebine.com over. Check. The second was to have something that I could pass to the rest of the CrowdVine team to move our marketing pages over. Check. The third was having something I could send to a few people for feedback. Check. Those are all accomplishments, and more valuable than having reams of code that nobody uses.

Release half-way through your iteration (or earlier!)
There’s a classic pattern where you bite off more than you can chew and leave yourself a ton of work at the end. The problem isn’t just having an unrealistic amount of work on the final day, it’s that running into a single problem on the last day will sabotage the entire iteration.

Instead of doing this, you need to scope a version of the work that is releasable as early as possible in the iteration. That way you have plenty of time for gold plating.

Even better, releasing early leaves you time for A/B testing.

Every time I’ve been involved in somebody else’s time boxed development there’s been this huge rush to finish as many features as possible at the end. Scrum calls its iterations sprints, and that’s exactly what it feels like. Beside feeling bad (suck it up, pansy), this doesn’t leave any time for people to catch their breath and actually check if any of the features were creating any value.

Releasing late in the time box almost always means you’re stuck in a pattern of release and abandon. My favorite personal example is the first version of CrowdVine’s private messaging feature. It’s now basically one of the most popular features on the site and gets used a couple of times by every member. However, the first version of the feature was live for six months and was only used three times total. It was in an awkward place and was trying to do too much. I built it, released it, and moved on to other features. I’d mistaken activity for accomplishment.

Minimum Viable Product vs. Half-a-product
Even though this post is sparked by this product I built last week, I’m not really talking about the product much. That’s because what that product needs right now is not a ton of users–it needs a little bit of feedback. And I got that by just sending it off to a few people. By all means, try it if you want, but it’s what I would call a minimum viable product. It’s a product that’s good enough to get useful feedback on but not so polished that it’s worth building a marketing campaign around.

In comparison, 37signals promotes the idea of building half a product that kicks ass, rather than a half assed product. However, like writing a short essay, a great half-product takes a lot of work.

Time boxing can get you there, but usually not in one go round. When you scope the product down and get it in front of users early you find out what features were necessary and which weren’t. You also find out which features need to be improved and which are already working well.

If you are trying to build a high quality product inside of a single time box, then you need to be very careful to polish one piece before moving on to the next. My friend Luke gave me a phrase for naming your definition of polished called, “Done, done.” That way when someone tells you they’re done, you can respond by asking “Are you done, done?”

Two weeks is good
I’ve done development iterations of two days, one week, two weeks, three weeks, and four weeks.

Four weeks is too long. You end up working on a bunch of unrelated things. Two days is too short and I’ve never felt like I could really do anything of significance in that time. I just use two day projects if I’m having trouble carving out time.

Three weeks weirds everyone out because it doesn’t line up to anything regular on the calendar.

Last week was the first time I’ve done a one week project. I thought the project was a perfect size, but I also found it almost impossible to balance it with other work responsibilities. I had phone calls. I spent a day at the Game Developers Conference. I organized a big party for the weekend.

My ideal would be to pick a project that looked like it had about 40 hours of work and that had a legitimate accomplishment that could be completed in the first 8-10 hours. I’d take that project and give it two weeks of calendar time. There’s not a lot of harm in finishing early because it’s not like there’s ever a shortage of programming work. If the project finishes early then make tweaks based on usage measurements, do some A/B testing, move on to code cleanup and test coverage, etc.

Changes for next time
I really liked making the time for this and I’m definitely going to do it again. The next product I have lined up is an extension to CrowdVine. Here are some of the things I’m going to change.

I’m going to move to a two week time box but keep the new feature work to the first week. That way I can still call it product-in-a-week, but I have some flexibility to keep the rest of my business running.

I’m also going to spend more time up front defining what accomplishments we’re shooting for. I think I didn’t do a good enough job of that when I designed my simple CMS service. I was definitely at risk of falling into the feature trap because I really wanted a product the whole world could use (built in just a week!), but I’d be better served if I had more of my sites already ported over.

For example, instead of porting over the CrowdVine pages, I spent time on a subscription billing system. Unfortunately, since I didn’t finish the subscriptions by wiring them to a payment system, that was work without value.

Probably the biggest change is that I’m going to involve more of the CrowdVine crew. I did most of this work solo, but the next project more naturally fits a bigger team.

I think that’s it for changes. Does anyone else have strong feeling about time boxing?

9th Mar, 2010

5 comments

Designing a simple CMS Service

Sorry for being coy during yesterday’s Product In A Week post. I wanted to get some unfiltered data from the survey I was running. Here’s what we’re releasing this week.

A simple CMS service
I often find myself in a situation where I need to host a few pages of a fully designed site and I need to give edit access to someone without direct access to my servers or my version control repository. I want to be able to setup the site by editing the HTML and CSS directly. Usually, the other people editing the site need a WYSIWYG editor. These sites don’t have high bandwidth or storage needs. I’m thinking of it like PBWiki for websites.

Market Research
Starting with myself, I want something that can host a one page site that I maintain personally, (tonystubblebine.com), a one page site that I setup but that a non-programmer maintains (sarahmilstein.com) and a multi-page site that currently lives in a version control repository which blocks non-programmers from editing it (the static pages on www.crowdvine.com.

In the survey that I ran yesterday, I found that the majority of respondents put up sites that had fewer than ten pages, had less than 100MB of files, were maintained by non-technical people, and got just a few thousand hits per month.

My favorite responses came from the question about what features people use on more than 50% of their websites. The survey results say that the simple sites above can be served by a simple feature set.

I just know that somebody is going to come out of the woodwork and say that a service like this already exists (that would be helpful to know actually). I looked at SquareSpace. It was overkill (although I’m told they’re doing very well). I looked at PageLime, SurrealCMS, and CushyCMS but they all work on the model of publishing to a different site. I want a pure SaaS service. PBWiki doesn’t have the full site customization I need. Google Sites is part of a genre of options that provide page builder UIs. I don’t need that and my survey results indicate that most websites have a professional or HTML savvy person doing the initial setup.

Existing Assets
My goal isn’t to just randomly launch new products–I want to take things we already have and extract them up for a broader audience.

Here’s what we have: a page based CMS, content versioning and rollback, tab and subnav management, content preview, WYSIWYG editor with raw HTML option, Liquid templates that allow overriding of core templates, file uploads and management, custom domains, basic themes, and a simple theme editor. Plus I have an unused domain that I like and a simple logo that goes with it.

Minimum CMS Feature Set
I went into this thinking we’d just take that list of existing assets, put some polish on them, and then put on a creation and payment step. That’s a pretty good minimum feature set that we could get some actual feedback on. It’s not zero amount of work either–the polish and cleanup step has plenty of meat. But if I can I’d like to add one feature based on my survey data. A lot of people need contact forms, I even have a site that needs them, and we have that feature.

These are the things I’m leaving out: multiple roles, FTP publishing, FTP or ZIP upload, photo galleries (use a Flickr widget). Now that I’ve described it, does that sound useful?

8th Mar, 2010

1 comment

Product In A Week

I met a guy in NYC who had sold his blog services company to one of the major blogging platforms. Blog services means his company did installs, customizations, theming and the occasional coding of custom plugins. This is how he described his experience of the company:

“At first I thought we would become a product company. We would turn these one-off plugins we were writing into products we could sell. Then I found out the world has an unlimited appetite for services.”

That last sentence really struck me. Now I find that with CrowdVine, I’m in the exact same position he was in. We bootstrapped ourselves through customization and services work. Demand for our services is growing. Demand for the code we’ve written, however… we have no idea what that would be because most of it is only available by request (i.e. phone call).

So, I’m going to try an experiment, which I’m calling Product In A Week. I’m going to take some functionality that we have hidden away, I’m going to spend a week putting it though a product development process, and I’m going to release it. The release might be an extension of something we already do or it might be a brand new product.

I’m starting one this week and if you would be so kind, I’d love for you to participate by taking this survey. I’ll post about what we’re actually doing tomorrow.

This first week is as much a trial of the process as it is of the product. Here’s how I have the week structured.

Customer Development
I don’t think I can release significant functionality in a week unless I am either a potential customer or very close to the problem. That said, I’d like to do some sort of customer development process that starts with at least customer interviews or surveys.

Last week, I ran the Sean Ellis and KISSMetrics Customer Development survey on followers of @iheartquotes. I learned a ton about @iheartquotes followers. However, that survey is for when you already have a product and users. For the product I’m doing this week I’m trying to get information about an existing market for which I have no current customers.

The survey I’m running above (would you be so kind and take it) is a kludge of the survey.io survey of existing customers, the survey they ran when they were developing survey.io, and some questions I had while looking at existing options.

Utility
I have at least ten things that I want to pull out of storage. Some of them can stand on their own but many of them are extensions to what CrowdVine already does. Whatever form they take, my primary goal is for them to have immediate utility. There’s a couple of ways I’m judging that.

Is this something I will personally use? Is it something current CrowdVine customers will use? Is it something that the broader world would use?

The product I’m planning for this week is something that I need immediately for four other sites. That makes it easier to develop a first version because I’m scratching my own itch.

The product is an expansion and upgrade of a current module that CrowdVine users use all the time. I’m planning for the implementation to stand as it’s own product but for almost all features to be shared back with CrowdVine. That means our current customers get an immediate benefit. The new features are also a prerequisite for a bigger CrowdVine expansion, so I’m counting that as a win for getting this work done.

The product on it’s own, is, I think, a new and useful take on an existing market. Right now that’s just my opinion. We’re going to test it, with a survey at the beginning and what amounts to a minimum feature set that we launch during the week.

Sustainability
While the goal is to have more people using more of our software, we’re not exactly ready to take on bug fixes, late night system administration and frantic customer service emails. We already have those. Whatever work we do during the week needs to be self-sustainable.

It needs to be built in a way that it can live without maintenance. If it takes off, of course, it’s going to be getting lots of love. If it doesn’t, then it can’t be a large ongoing tax on our time. To me, that means keep the scope small enough that the code quality can be high, make sure it’s monitored, backed up, the logs rotate, etc.

There should be measurability baked in. I want the logs to tell me what’s getting used and what has growth and I want surveys (this is where the survey.io survey is useful). As Steve Blank says, the Minimum Feature Set is not the goal, it’s a first step. This data will let us know if there should be a second iteration and what would be in it.

Almost everything I have in mind has an immediate business model baked in. Money is a great measurement for whether we built something valuable.

For the project I’m doing this week, it’s going to run on top of the CrowdVine code base so it gets to make use of all of our existing sustainability infrastructure (backups, tests, monitoring). It will be subscription based, so there is a business model. I’m not totally sure what stats to measure, but I’m going to start with a subscription funnel: how many people hit the home page, how many try the service, and how many convert to paying customers.

Ready, shoot, aim. We’re already off and running.

22nd Feb, 2010

2 comments

164 Things

It’s been about 164 weeks since I stopped working for other people and started working on my own ideas. I check in once a year to see how things are going and to see if I can identify at least one highlight for each week.

Of course, I never manage to actually check in on the exact anniversary, so the first check-in covered 53 weeks and 53 Things. The next year covered 56 Things. And for this year, I’ve got 55 items covering the last 55 weeks.

I’m especially glad to look at the list because it changed my outlook for the year. Like a lot of people, I thought 2009 was a hard, awful, disappointing year. But now that I’ve made the list I think it was probably my best year ever.

Crazy good travel
1. Found out what the Sistine Chapel smells like (Will Hunting, not much) and other Italian adventures.
2. Held off on writing this post so that I could include Egypt.
3. A #pizzaquest spanning SF to Phoenix to NYC (di fara’s is still the best)
4. Two and a half months in NYC (West Village and Fort Greene)

More CrowdVine growth
5. Revenue up 50%
6. Basically stopped doing hard development, system administration, account management, and support because Jay and Terrie do it better (thanks!)
7. Figured out what a B2B “solution” is. (It’s software, hosting, a Terrie)
8. Introduced session ratings feature
9. New Themes and Designs
10. First A/B tests
11. Third-party registration integration (EventBrite, RegOnline, Laser)
12. Wrote an elevator pitch (didn’t seem to come up before, now it comes up all the time)
13. Added Twitter auth and Friendfeed style commenting
14. Added content management features
15. First all hands meeting

Inspiration via voice rather than text
16. Facebook COO Sheryl Sandberg on personal scaling
17. The idea of Internet Treasures via Mark Pincus on Stanford’s ECorner
18. Geoffrey Moore at Business of Software Conference (some people have tricks from last year, he has fundamentals that have held since the 70′s)

And more inspiration from conferences
19. Business of Software (already mentioned) was a must for any software entrepreneur
20. VTM: Web Design conference
21. PCMA gave clarity to our approach and direction in the conference business.

Lotta writing
22. The Real Lessons from Twitter
23. Things I don’t get (about the event industry)
24. Desiging the ultimate contact form in Rails
25. Top 100 event twitter accounts
26. Some Notes on NDAs
27. AirBnB – Good cheap housing for conference attendees
28. Conference Twitter Report
29. Declining OpenID usage
30. Linux on the desktop

Family
31. We were in the NYT Again!
32. Sarah’s now the General Manager and Co-chair for Web 2.0 Expo
33. Two new nephews, Jack Ozro on Sarah’s side and Parker on my side
34. Saw Sarah’s sister-in-law rock the SF Fringe festival
35. I tech-reviewed Sarah’s The Twitter Book (didn’t require any feedback, really)

Productivity hacks
36. My todo list shows 7500 items completed over the last 55 weeks!
37. Started a journal (which made pulling this list together much easier)
38. Started hanging up politely
39. No laptops between 6-10pm

Lived a bit (like the travel wasn’t enough)
40. Saw a lot of movies, six good, Inglorious Basterds, Avatar, The Hurt Locker, District 9, Food Inc., Where the Wild Things Are
41. Loved Whip It
42. And Watchmen
43. Really loved archival footage of old San Francisco from the Prelinger Archives
44. Road the Tour de Vino with my mom
45. Attended WonderCon (Wow!)
46. Played Omaha High Low for the first time
48. Live reenactment of the movie Point Break (with Keanu actor chosen from the audience)
49. Played and loved Dragon Age
50. Got a haircut from Marco, claims to have cut Regis’ hair in the 80s.

Read some actual books
51. Andy Grove: The Life and Times of an American
52. Snowball: Warren Buffett and the Business of Live

Misc experiences
53. Organized moderators for @iheartquotes
54. Made a killer pomelo sorbet
55. First time brining meat (chicken for the smoker)

Bonus
56. I usually end with a big thank you to my partner Sarah. The last two years have had big thanks for helping get CrowdVine off the ground and there was more of that this year–great advice and notably, a strong introduction to the work of Steve Blank and Eric Reis. But what really stands out is how much of the non-work items have her finger prints on it. This is the year where we introduced some work life balance (by balance I mean holding equally heavy weights in each hand) and so many of the highlights were sparked by her. Thank you!

28th Dec, 2009

No comments

How to use a Verizon USB Card with Ubuntu

I’ve been having a lot of “Hey, Linux on the desktop is pretty darn good” moments lately. Here’s one from tonight, getting my Verizon USB wireless card to work on my laptop (Dell Studio 17). Getting this same card to work on a Windows Vista netbook was a total chore, so I came at this Linux experience fearing (and expecting) the worst.

After some googling, I settled on this tutorial from ASE Labs. It almost worked. After freezing the laptop, forcing a hard reboot, editing some config files and then running a shell command, my modem worked. Once. This was exactly the experience I was expecting.

Feeling a bit of despair, I tried plan B: right click the Network Manager that sits on the Gnome panel. Hot damn. There’s a wizard for this. The functionality is built right in. So consider this post less of a tutorial and more of an informational post. I just want to tip off the next googler that they don’t have to perform any incantations to get this working.

You need to know this:
username: <yourphonenumber>@vzw3g.com (i.e. 4155551212@vzw3g.com)
password: vzw

Now right click Network manager followed by Edit connections -> Mobile broadband -> Add.

There’s very brief official documentation. The key thing to know is that Ubuntu calls this feature “mobile broadband.” Basically, the only problem with this feature is that it’s not SEO optimized for what I think it should be called.
https://help.ubuntu.com/9.04/internet/C/connecting-mobile.html

If you want to get really tricky you can even configure your laptop to act as a wireless router so that you can share your internet with people around you.
http://www.freesoftwaremagazine.com/…

16th Dec, 2009

No comments

Moderators for @iheartquotes

First, quickly, for people who follow this blog but aren’t quote enthusiasts, I want to share something that I learned from my friend Ben at Fluther. If you have a passionate community and you ask them for help, they will help you. The @iheartquotes twitter account has had a half-hearted update policy for years because I never was willing to ask for help. Then one day I said, hey, what the hell, I’m going to ask if anyone wants to be a moderator. It turns out that lots of people wanted to help out and now almost every day we have a lot of community submitted, moderator-vetted quotes.

Organizing the moderators is a whole different ballgame, which is actually why I wanted to get this post up. As moderators drop out we need to replace them and people always ask, “What does a moderator do?” So I wanted to post somewhere so people could make a decision before I set them up with all of the accounts (we use Google Groups and CoTweet).


Hello moderators,

We have a pretty simple goal–we’re taking user submitting quotes and republishing them for our wider quote-loving audience. Here are instructions for how to participate.

1. If you are a new moderator, you should introduce yourself. Let everyone know who you are and why you love quotes.

2. You will be responsible for a day of the week. You should sign up for one of the open days on the schedule page. Then, every week, when that day rolls around, you will be responsible for checking for new quotes and scheduling them to be republished on the @iheartquotes twitter account. There are a lot of people who have asked to help moderate, so if you can’t check reliably on your day, you should bow out. If skipping your day becomes a habit you will be quietly replaced.

3. To check and republish quotes, you should sign into the CoTweet.com program and:

3A. Check the scheduled outbox to see if there are any tweets already scheduled. Your goal will be to pick up from wherever the scheduled quotes leave off and then make sure there are quotes scheduled for the three days following your day.

3B. Go through the Inbox Messages.

3B. If a message is a RT of one of our quotes, check it off so that it’s archived and no longer in the inbox. Most quotes will be Retweets of quotes we’ve posted.

3C. If the message is a quote that’s reasonably good then you should schedule it for retweeting by clicking the RT button.

3D. We try to format quotes in the style below so that they are clear and while taking a minimum number of characters. Notice that it allows us to skip quotes, some whitespace, and punctuation.
I’m learning all the time. The tombstone will be my diploma~Eartha Kitt | RT @somebody

4. The process should take about 30 minutes.

11th Dec, 2009

No comments

Regex Best Practices

My book, Regular Expression Pocket Reference, has sold well over 30k copies and I’m constantly surprised how often I talk to someone who claims to have a copy of the book on their desk. The thing about that book, though, is that I’m not nearly smart enough from a nuts/bolts or math angle to be qualified to write it. I muddled through, and with the help of amazing tech reviewers and a lot more work than it should have taken, the end result is a pretty good book.

However, by virtue of not starting out as a regex expert, I have a lot more empathy for the every-day coder who just wants to get these suckers to work. So, once the book was published I started working on tips for every day use.

Here’s one of my favorites, a presentation on Regular Expression Best Practices. I think I gave this at a Perl Mongers meeting a few years ago. Excuse the Perl code, all of the ideas are universal.

The basic premise of the presentation is that regular expressions are inherently difficult to write, maintain, and get right, but that we could do much better if we applied a few simple (best) practices.

Here are the inherent reasons:
A.) They have a crummy, terse syntax.
B.) We (normal programmers) don’t use them enough to become proficient.
C.) They are applied to some dirty, hard-to-verify (that’s why we’re writing the regex) data.

Given that, we (normal programmers) then choose to ignore the normal practices of programming, practices that we use reliably with expressive clear languages that we are experts in. The presentation identifies those normal practices and then calls them regex best practices: use white space, code structure, and code verification/testing. Plus, the presentation has one of my favorite security gotchas, a favorite quote, and some common regex mistakes.

18th Nov, 2009

1 comment

Linux on the Desktop

In 1997, I was a Linux zealot who loved to tinker with software. Now I’m an overworked pragmatist. I still love Linux, but for different reasons. Last week, I heard a meme* pop up that Linux was dead on the desktop (specifically for web entrepreneurs). So I wanted to give the opposite take–Linux is a great, pragmatic choice for your desktop.

Improved Hardware Support
I’ve been installing Linux without trouble on desktops for over ten years. The real problem was with laptops. In 2004, it took me six months to get wireless working on my laptop. In 2007 I bought a laptop from System76 that had Linux pre-installed. Even suspend and hibernate worked. That was much better, but they only have a limited selection of re-branded Asus models. On Monday, I bought a new laptop from a big blue box store, installed Ubuntu, and everything just worked.

The Cloud
It’s funny that we’d even be having a desktop operating system discussion given how many core apps moved into the cloud. I use Firefox, GMail, a slew of apps from 37signals, and a SSH shell connected to a different server. That experience is the same on any operating system.

Sun Virtual Box
I never got Wine or VMWare to work on Linux. It was just a bit too much configuration. But recently I tried Sun’s Virtual Box and it does a great job. When I looked at the proprietary apps I run, I found that most of them are for Windows. My accountant prefers the Windows version of Quickbooks. I sometimes have to test IE bugs in Windows. Netflix streaming used to be Windows-only. All of these apps work fine in the Virtual Box virtual instance of Windows. I even sync my iPhone from iTunes running in the virtual instance.

Same as Your Server
I had an OSX laptop and basically liked it. But I got tired of fighting library dependencies on two different platforms. By running Linux on my laptop, I can have an identical environment to my production servers.

Dying Religions
I’m not religious about Linux anymore. I think that helps. I can run a virtual instance of Windows without feeling like I’m cheating. I got sucked into Linux because it was a free playground at a time when I had free time. It shaped my problem solving strategies and mindset. Now I want to have a access to the command line and Unix tools. But some (most) software was built for Windows. Now with Virtual Box and a little bit of personal maturity, I don’t have to choose one over the other. I use both.

Price
I bought a 17inch Dell Studio laptop with a dual processor, 500GB HD, and 4GB of RAM for $770. The equivalent MacBook Pro costs $2500.


* At the Business of Software conference, Paul Graham gave a talk covering 21 trends he’s seen while running YCombinator. He may have been talking about Linux on the desktop not being a relevant business opportunity, but his anecdotal data was about web entrepreneurs moving to OSX.

30th Oct, 2009

No comments

Five Reasons I Love Twitter Lists

The Twitter Lists feature launched for everyone today. Here’s Twitter’s announcement and a thorough tutorial from CNET.

I’ve had the beta version for a week, and although it’s obvious that this feature is going to create a new class of social media whoring (list-whoring), I also find it incredibly useful.

#1 Back to basics
I fell in love with Twitter when it had less than 100 users because it was an easy way to keep in touch with my girlfriend and my little sister. Then Twitter got too big and I started missing tweets from those people. So now I have a list for just family–and I never miss their posts. Lists let you filter the firehouse.

#2 Rediscovery
The folks at Twitter are hoping the lists feature helps with account discovery. It does. But what I’ve found is that it also helps with re-discovery–accounts that I forgot I was following start popping up again when I go to look at one of my lists.

#3 Retweeting
@SarahM says that corporate accounts should aim to talk about themselves 10% of the time and about other people 90% of the time. So for my @crowdvine account I’m always looking for material. I have a whole section in my Google Reader devoted to this. Now I have two Twitter lists that are perfect for retweetable material, @crowdvine/eventstars for event news and @crowdvine/tech-stars for tech and social software news.

#4 Research
I created a bunch of lists related to research that I’m doing. I want to know about events so I started with that list (@crowdvine/greatevents) but I also want to know about different event sements, so I made my own for barcamps (@crowdvine/barcamps) and then discovered other great event lists like @konigi/uxevents and @underflow_/ruby-events.

#5 Want-to-meet
I often run across people on CrowdVine that I think I should meet or email or follow up with in some fashion. Now I can bookmark them and get back to them later. I have this list private right now, but I think it would actually be a light weight way to meet people if it were public. What would you do if you found your name on somebody a list called want-to-meet?

17th Jun, 2009

36 comments

The Real Lessons From Twitter

In 2006, I was the director of engineering at Odeo, a podcasting startup notable for birthing a side project now known as Twitter. My major contributions were doing the statistical analysis that showed that our podcasting work hadn’t amounted to a hill of beans* and then not complaining when our most reliable engineer wanted to work on a side project. Still, it was fascinating to be in the building during Twitter’s conception and then to read all of the ways that people misunderstood those early days.

Here are three lessons I learned from Twitter that nobody seems to have caught on to.

1. If people use it, it’s valuable
Have you ever looked at a piece of social software and thought, or worse, blogged, that it was worthless? Here’s a trick for evaluating social software in a way that isn’t going to make you look stupid six months down the road: assume it’s valuable if people are using it. Then try to figure out what value they’re getting.

Even professionals make the mistake of dismissing social software despite active, growing communities. Consider this early TechCrunch article, Dodgeball vs. Twitter, where the author (not Arrington) insists that the way to compare software is feature by feature. Dodgeball won the comparison but within a few months was in the deadpool and now Twitter is part of TechCrunch’s everyday coverage. Why? The features that mattered were defined by social interactions, and each user had their own customized set of features based on the social interactions that were important to them. Dodgeball had more features by the traditional measure, but Twitter had the kind that mattered, loads of social interaction.

I even find that this is a good reminder for myself. I follow a startup advice blog from Eric Ries, cofounder of IMVU. The first time I heard what IMVU did I thought it was laughably stupid. They make 3D chat rooms, (like a mini Second Life without the flying), and make money by selling virtual clothing for people’s avatars. Yet he is able to explain IMVU with a straight face and then seems genuinely surprised when people express skepticism.

Here’s the reason he can keep a straight face: IMVU gets 1.3M unique visitors a month and makes tens of millions of dollars per year. He’s not judging the idea based on opinion, which is where most people get into trouble, he’s judging based on observation. Now, I feel stupid for not keeping an open mind.

2. Product, Team, Market? Team.
This is a fun little debate, what matters most the product, the team, or the market? At the time that Evan bought Odeo back from the investors, our podcasting product was widely seen as a failure. It didn’t have any growth and it certainly didn’t make any money for the investors. Here’s how Bryce at OATV put it:

Rockstar team, smoking hot market, all-star angels — and it didn’t deliver the hyper growth traditional VCs need for their return profile.

Was it the product? A year after Ev bought Odeo back, and after zero updates to the features, Time Magazine listed Odeo as one of their top fifty websites. Today, with a very similar product, Odeo.com is the only podcast directory of note. So the product was fine.

Was it the market? Marc Andreessen argues that the market is the only thing that matters for a startup. I just made the argument that Odeo was a strong product and I’m going to argue below that we had a strong team. Since no other web based podcast directory has proven otherwise, it looks like we were in a weak market. So is the answer that the market matters most?

That would look like the answer if not for Twitter, that pesky side project we launched that has had 10x growth in the last year. Market only looks like a good answer if you’re judging individual products, in this case the odeo.com podcasting directory.

A good team, that listens to its customers, is going to find a good market and put together a good product for that market. Steve Blank calls this process customer development (explained well in his book Four Steps to the Epiphany and in this Venture Hacks post).

We could see that Odeo.com didn’t have enough traction so we went looking for other ideas. You might think it was lucky that we hit on Twitter, and as a specific product, it was. If Jack wasn’t on the team, there would be no Twitter. But the team at Odeo had lots of ideas and plenty of people capable of carrying them out. Of the 19 or so people who contributed to Odeo, 13 had started or went on to start a business or major open source project**.

If Ev hadn’t bet on Twitter he would have bet on something else. Three of the companies above are currently live companies that support their founders and a few employees (Infectious is funded and doing well, Trazzler is funded by the Facebook fund, and CrowdVine is profitable). I chose a vertical route for CrowdVine, but the original idea, social networks for everyone, is an idea that’s nearly as big as Twitter (as evidenced by the size of Ning).

Because of the team, Ev had other options to overcome a weak market. So if you’re looking at it from the perspective of the company, team is most important***.

3. Rails was never the problem
Twitter had well-documented performance problems in it’s first few years. Many people, including programmers, pointed the blame at one piece of Twitter’s architecture, Ruby on Rails.

First, all Rails does for Twitter is serve up web pages. The vast majority of those scaling problems came in the back end, moving status updates around and then storing them in a way that Rails could retrieve them for display. So most people aren’t even looking at the right piece of the architecture.

Today Twitter has a much better performance track record and it still uses Rails to serve web pages. The difference is the backend.

So if the backend was such a problem why didn’t Twitter launch with a better backend or at least get it fixed earlier? That gets at the heart of the problem. I’ve never heard anyone get the blame right for all of those performance problems. They stem 100% from the way that we went about switching from the Odeo product to the Twitter product.

When a company kicks off their first project they do some long term thinking and might cover topics like architecture. But how do you launch your second project? Or fifth (approximately what Twitter was)?

Was it easy for the Flickr team to choose to double down on photo sharing, which initially was just a feature inside of a web-based multi-player game? For us, it wasn’t an orderly process at all. It wasn’t even clear that we were abandoning Odeo. We were running hackathons, which led to a condition where many people had competing ideas (and implementations!) of what our next product should be. But around those hackathons we were still continuing to develop Odeo. Twitter eventually won enough that we pulled two engineers off of the Odeo team, but the rest of us kept plugging away.

If you were thrown into a fight, would you start punching or would you open up your iphone and start browsing web pages about Karate? I’d argue that Twitter was launched in the middle of a fight for what we were going to do next, and any thought for long range planning was completely secondary to getting Twitter launched and proven. Without Rails, we might not have even given Jack time to finish the prototype.

So that’s why Twitter wasn’t ready to scale from day one. However, it took almost two years until it could scale reliably, and that certainly seems like longer than necessary. I think it’s an issue of engineering management. Until the Summize acquisition, there was no true engineering manager for Twitter. I had left before Twitter was spun out****. Everyone was a little wary of hiring middle management again since it was widely seen that we had been hired too early at Odeo. The job of middle management is to promote forward progress, and it took us awhile to figure out that wasn’t what Odeo needed. Twitter did eventually hire a VP of Engineering, but he didn’t pan out.

The result was that Twitter operated for a long time (until Summize was acquired) with a gap in engineering planning, someone who could put together a plan that everyone understood and could work from. They had people who could solve problems in brilliant ways, but they didn’t have someone who could get the entire company on the same page. That gap was just an unfortunate side effect of the jumbled team that emerged post-Odeo. So what’s the right way to change your company’s direction? It certainly had nothing to do with Rails.

* Odeo was eventually acquired and is today the only podcast directory of note. However, as a venture backed concern all we had really managed to build was a site with high page rank. We had terrible numbers on repeat visitors and our experimental features (podcast studio, send me a message, audio commenting) weren’t getting any use. Maybe we could have gone after libsyn’s podcast hosting business, but overall our stats said that if we wanted to strike out in a new direction we shouldn’t feel constrained by podcasting.

** Those remaining six include a former core contributor to Rails, Twitter’s current support lead and people that worked for Apple, Google, and Flickr.

*** The idea that Twitter is the same company as Odeo gets muddied because Ev bought the company back, laid off a chunk of Odeo and reincorporated Twitter as it’s own company. But I’d argue the difference isn’t important here. Twitter was launched and run in the early years by Odeo employees who worked at the same desks and the same office that they had when they were working on odeo.com.

**** People often ask me if I regret leaving, and I don’t. I made a list of reasons that included several that would have been sufficient on their own. Did they need me? Not at first, and I hate being idle. Was I happy? No, I was miserable. Every month I had told my team that what we were going to work on was critically important. And every month it had ended up not being important. It taught me an important lesson about what I want from work, to walk in every day believing I’m doing something important. I ended up with the opinion that the only way I could guarantee that was by owning my own company, hence CrowdVine.

8th Jun, 2009

5 comments

Stubbleblog Goes to New York City

Sarah and I are subletting a place in New York City for the summer. Sarah’s a former resident and has a built-in social life, but I’m a relative newbie and am looking to make social and nerd connections. If you read this blog and live in NYC, then we should hang out. Seriously, let’s do something together! I’m a ton of fun! Invite Sarah too, she’s a good talker.

Here are the some ideas:

1. The NBA playoffs. Invite me to your home and I’ll bring the beers. Or invite me to a bar. You might want to get on this because the Lakers are already up 2-0. Upcoming games are Tue 6/9, Thur 6/11, and potentially Sun 6/14, Tue 6/16, and Thur 6/18.

2. Movies. We just got back from a two week vacation so I’m behind on some of the blockbusters. Here are the summer movies that I know I want to see: Wolverine, Terminator, Star Trek, The Hangover, GI Joe, and Transformers. We’re right around the corner from Film Forum, so I’d also be up for seeing a good movie.

3. Nerd Gatherings. I’m a ruby programmer, startup founder, and social software guy. What are the good meetups? Any barcamps?

4. Coworking. Normally I work from home, but if your office has a free desk, I’d love to drop by.

5. Pizza Quest. Sarah and I are on a quest to discover the best pizzas in the world. We recently flew to Phoenix specifically to try the purported best pizza in the US. Our favorite is Di Fara’s in Brooklyn, but I’d be happy to try your favorite.

6. That Cultural Stuff. Do you know of a good reading, talk, play, outdoor performance, underground fight club, etc? I enjoy it all, from motorcross to the symphony.

Updated:

7. Minor league baseball. I don’t care if it’s Staten Island or Coney Island.

Our place is in the West Village on Morton Street. Last summer we did a house exchange and were here for a month. This year we’re trying the sublet approach because it gave us more flexibility and let us be here for longer (until mid-August). Sarah and I both work from home, which is why we have this sort of flexibility.

9th Apr, 2009

No comments

Cyborg Quote-botics

I want to give a quick update on @iheartquotes for the benefit of new followers.

1. As I wrote previously, iheartquotes was born a robot. Its human creator (me, @tonystubblebine) constructed him out of a database of quotes/sayings from the world of Unix fortune files, Ruby on Rails software, and the Twitter API.

2. Because @iheartquotes was born a robot, it does not share our human sensibilities about appropriate quotes. For example, many people reacted negatively to this update: “You will be divorced within a year.

3. Recently @iheartquotes has taken to posting human submitted quotes, making it a crowd-sourced cyborg quote-bot. If you want to submit a quote, send an @reply (that’s a twitter message starting with @iheartquotes).

4. Becoming half-human has awakened a sense of ambition in @iheartquotes. It now aspires to be in the list of top 100 most retweeted twitter accounts. If you like a quote, please retweet it (instructions on retweeting).

5. @iheartquotes speaks almost exclusively in quotes and fortunes, but will occasionally post calls to action for its human creator, its human friend, @sarahm, or its human creator’s company, @crowdvine. @sarahm is grateful for the quote communities feedback on webcasts and @crowdvine is grateful for help picking a new logo.

5th Mar, 2009

9 comments

Productivity Hack: Hangup politely

One of the most important things I had to learn when I started my company was how to quickly get off the phone with people who wanted to waste my time. It seems trivial, but in an effort to be polite and not burn any bridges, I was wasting a lot of time.

Recruiters call but we’re not looking to work with a recruiter. Business partners call about partnerships that we’d never do. Venture capitalist interns call in order to build a relationship and don’t seem to acknowledge that the only relationships that lead to funding start with a recommendation from a founder that has already been successful. Plus we’re not looking for funding.

I’ve tried a bunch of ways to get out of these calls. Three of the ways cut the call short but leave me angry and take me out of the zone of whatever I was doing. I don’t like hanging up because it feels rude. I don’t like yelling at the person — that definitely puts me into a bad mood. And I really don’t like arguing with the person and then losing the argument. That’s the worst.

The system I eventually hit on was to put together a polite script that led to me hanging up.

First I made clear policies for myself so that I knew which conversations I wanted to have and which I wanted to get out of. We’re not looking for funding and if we do, we will mine our own network for introductions to VC. We don’t do partnerships unless the partner already has a customer who is asking specifically for us and who is willing to pay for any integration work. We never work with recruiters and haven’t had any problems finding the people we need.

Second, I put together actual scripts that I practice and refine with each call.

Sales people
The sales calls we get range from ridiculous (vinyl siding) to somebody didn’t do their homework (managed DNS). I use the following script:

“Thank you for the call. This isn’t something we’re looking for right now. If you’d email me some information, I’ll keep it on file and get back to you . My email address is tony at crowdvine dot com. Thank you. [pause] Have a nice day. [pause] Goodbye. [pause] [click].”

Here are the key parts. Everything I said was polite. A lot of times your actions effect your mood, so it’s really important (to me) that I act in a way that maintains my positive mood. I was also direct. I gave a real reason and a real email address. I avoid triggering the moral response I get when I lie. Last, I got off the phone within 15 seconds. Those pauses are there to give the person a chance to also have a polite conversation. But the truth is that I’m not listening. They can say whatever they want and I’m hanging up at the end of my script.

I used to also say, “You don’t need to contact me again,” but that’s arguing and sales people take that as an opening for a conversation. The script above sends a stronger message, “It’s easy for me to ignore you.”

Venture Captialist Interns
Venture capital firms have interns (“associates”) who cold call companies claiming that they want to start building a relationship in case you ever need funding. What they’re really doing is market research. There’s a great discussion of this on Hacker News.

Since most founders are at least a little bit afraid of venture capitalists, they’re really hesitant to be rude, even though these calls are a total waste of time (there is zero chance that it will lead to funding) and the intern is lying to your face. I’ve never had to answer this one on the phone, but I did use the script below in an email to good effect.

“Thank you for contacting us. Unfortunately, as a matter of policy, we don’t take meetings regarding speculative partnerships. If we decide to look for funding we will be back in touch.”

This is the George Costanza strategy. It’s not them, it’s us. The conversation is over. The intern that I sent this to did send me a email back, but he couldn’t muster anything strong enough that I had to stay in the thread.

If you get caught on the phone by one of these guys you could probably throw in a “That’s our policy, why don’t you send any information to my email address? Thank you. Have a nice day.” At that point, if you still aren’t off the phone you can just keep repeating “Thank you. Have a nice day” until you’ve worn them down.

Partners

We’re open to the possibility of partnerships. In fact our software was built with the idea that we’d do one thing well and then integrate with other people who did something else well. But calls about partnerships have always been a time waster for us just because of priorities.

The time we spend on customer service and product development has both a bigger and more immediate effect on the business. So it really doesn’t matter if a partnership would have positive effects, because the things we’re already doing have a bigger effect.

I use a modification of the line I use with VC interns, that we have a policy of not meeting about speculative partnerships.

“Thank you for your interest. As a matter of policy we’re only interested in partnerships that fill a request from one of our customers or where the partner is bringing a customer that will pay for CrowdVine’s services. Do you have a customer that is asking for CrowdVine?”

The answer is almost always no. So that’s when I move into my wrap up script, “Why don’t you send me your product information. My email is tony at crowdvine dot com. I’ll keep it on file and if one of my customers asks for something like this then we’ll get back on the phone. [pause] Thank you [pause] Good bye [pause] Have a nice day [pause] [click]”

A potential partner is much more likely than a salesperson to respond positively to the script above and actually say good bye when you do. If they don’t, then it’s ok to hangup because they’re secretly a salesperson.

Recruiters

The second the economy went south we started getting calls from recruiters trying to place candidates. Recruiters are the worst. I think the ones who call us are people who found car sales too physically demanding (because you’re always having to walk to the manager’s office). It’s extremely important not to listen to anything they say.

I’m still looking for the perfect script, the one that leaves them feeling dehumanized and makes clear that there is no reason for them to ever call us back. Here’s my current version:

“Thank you for thinking of our company. Unfortunately, as a matter of policy we pick our firms based on references from our advisors. Best of luck placing your candidate. Have a nice day. [pause] Good bye [click]”

Notice how I’ve removed the [pause] before hanging up on them? That’s because a recruiter will argue anything. Hanging up immediately means the last thing I hear is myself being polite.

The reason I give them, about references, is a bit of a white lie. It’s technically true, but is much less important than the real reason I’m hanging up–we’re a networking company with our phone number plastered on our website. Any candidate who could possibly fit here would just call us directly.

If the recruiter does call back, I use the same script but say the “pause” out loud in order to make clear that they’re getting a scripted response.

I never would have guessed that figuring out the above tips would be so important. In general, being accessible to our customers has had a lot of benefits. I have my direct phone number on the website and that leads to a lot of great conversations with customers. I’d recommend the same thing if you can find a way to deal the solicitations.

22nd Jan, 2009

1 comment

Secrets of Productivity

On my work computer, I added this line to my /etc/hosts file. This works on Linux or OSX.

127.0.0.1 espn.com huffingtonpost.com talkingpointsmemo.com sfgate.com gamespot.com valleywag.com espn.go.com slashdot.org boingboing.net newmogul.com bloglines.com www.bloglines.com cnn.com www.cnn.com techcrunch.com www.techcrunch.com crunchgear.com www.crunchgear.com www.sfgate.com news.ycombinator.com www.newmogul.com

Cory Doctorow has a saying for his writing students along the lines of “surgeons don’t get surgeon’s block, so it’s not ok for you to get writer’s block.”

Shouldn’t that be true of any work? How many workers go to one of the sites above in order to kill time until inspiration strikes? I’m happy to say that I’m no longer one of those workers. The line above blocks me from all of the places where I used to kill time. When I’m on my computer I only have two choices, stare blankly or take the next action.

I also created a second feed reader account and moved all my non-crucial feeds there. The second account, hosted on bloglines, is blocked from me.

2nd Jan, 2009

5 comments

109 things

Welcome to 2009. The new year means it’s been a little more than two years, 109 weeks actually, since I started working for myself. When I passed my first anniversary, I wrote up a post of 53 highlights from the first 53 weeks. My goals for going independent were to bring something useful to the world, to have personal growth, and to have a better life. How’d that go over the last 56 weeks?

Built up CrowdVine
1. New design and logo.
2. Brought Michelle, Farley, and Chris in to help with web production, design, development, and sales.
3. Doubled our customers in the first half of the year and then doubled again in the second half.
4. Launched self-service conference version.
5. Really beefed up our calendar (icalico) integration.
6. Mobile conference version.
7. OpenID support (consumption).
8. Third party address book integration (Facebook, GMail, LinkedIn, vCard, CSV, Yahoo, Hotmail).
9. Private messaging (this seems so basic now).
10. Twitter integration and aggregation.

Experienced being the biz guy
11. Exhibited at my first trade show (never again).
12. Exhibited at my second trade show (really, this isn’t for me).
13. Setup Quickbooks (kind of fun)
14. The emotion went out of saying no (or hanging up). Thanks George.

Got some press
15. I was in the New York Times.
16. HyveUp did a video interview.
17. Regular Expression Pocket Reference 2nd Edition got a Slashdot review (9/10)

Gave back a bit
18. Co-chaired the Web2Open unconference
19. Invented a type of conference session (Speed QA)
20. Gave my social networking for everyone talk to SCWD and CalSAE
21. Open-sourced our XSS protection, sanitize_params
22. Open-sourced our highrise_to_campfire notifier

Wrote some things that I’m proud of
23. Take the next step, Paul
24. CrowdVine vs. Ning
25. Five tips for adding an unconference track
26. Deliberate practice
27. Passively Updated Microblogging for Business
28. Two Good Things

Read some books
29. Warren Buffett: The Making of an American Capitalist
30. Quicksilver, Volume One of the Baroque Cycle
31. Born Standing Up, the Steve Martin autobiography

Got deep into deliberate practice
32. Started a no laptopping after 10pm rule (lasted until at least Jan 13, but I read three books in that period)
33. Deliberate practice journal (I’ll write this up)
34. Lawyer-style todo/just-did lists, i.e. very small items that get timestamped when I’m done
35. Stopped wasting time on the web. My work computer blocks: espn.com, huffingtonpost.com, talkingpointsmemo.com, sfgate.com, gamespot.com, slashdot.org, boingboing.net, newmogul.com, bloglines.com, cnn.com, techcrunch.com, crunchgear.com, news.ycombinator.com
36. Moved all non-essential feeds from google reader to bloglines and then blocked bloglines on my work computer.
37. Automated positive reinforcement with Campfire notifications on completion of tasks.
38. Started using OpenID (just one of many examples of improved practices).

Managed to still live a bit
39. Played and loved Fallout 3.
40. Did a month long house swap in NYC.
41. Spent a week in Hawaii.
42. Lost in the first round of Beer Pong Weekend.
43. Played my first game of werewolf.
44. Started listening to podcasts again.
45. Grew out my hair.
46. Saw many movies but only loved Man on Wire.
47. And IronMan.
48. Went Snowshoeing with friends and our dogs.
49. Started Blawg-and-order to chronicle our life-long quest to watch every episode of every law and order series in order. The blog looks stagnant, but we are going to complete this.
50. Learned how to shoot a basketball (I got as far as varsity summer-league with a release that had a lot of thumb).

Bought some things that worked out well
51. iphone (you’re allowed to like your cellphone now?)
52. quad-core from Dell
53. 24″ monitor

Spent a lot of time with some webservices that rock
54. Glance, simple reliable service for screen sharing.
55. Wesabe, love seeing all of my accounts in one place.

Also
56. Again, I accepted enormous amounts of behind the scenes support from my partner, Sarah. She’s a minor investor and major advisor for CrowdVine, co-chaired the Web2Open and co-created the SpeedQA idea, has agreed to my nutty law and order idea (and coined the name Blawg-and-Order), does way more of the household logistical work, plus has her own extremely interesting life and work.

9th Dec, 2008

6 comments

Passively Updated Microblogging For Business

Two companies (at least) are trying to apply the concept of Twitter to business intranets. This starts to sound more exciting when you wrap your head around the promise: complete elimination of status meetings.

Yammer and Present.ly are the companies people think of. But I wanted to share what we at CrowdVine (and a lot of other people in tech) are already doing, using a Campfire chat room.

The community around Campfire has a very developed sense of something that Yammer and Present.ly are just starting to realize — most business status can be generated passively.

Instead of intentionally updating my status to say that I’m filling out a work order, that I’m updating a piece of code, or emailing with our favorite client, we have our tools generate those updates automatically. Our status updates flow into the chat as we work, no special actions required.

I’ll quickly describe what this looks like technically, but what I really want is to explain how this works socially. CrowdVine keeps a Campfire chatroom open all day, not because we’re chatting all day, but just to have a place where we can reach each other. This takes the place of being in an office. We use a service, GitHub, to host all of our code. Any time we checkin code, GitHub sends a notice to Campfire (this is a service built in to GitHub). We also use a service, Highrise, to keep track of all of our client history. We have a script, available here, that updates Campfire every time we change a client record. For status updates that don’t fall into those categories, Campfire has a topic function which we update and which leaves an entry in the chat.

The first two types of updates (GitHub and Highrise) are passive updates. They update based on what we’re doing, but without any intentional action on our part. The last update is an active update. We have to make an intentional effort. That’s the way Twitter works.

There are some great buzzwords getting created by this niche. Ambient awareness, knowing what’s going on in your periphery. Asynchronous knowledge transfer, catching up with your coworkers when you have free time rather than going to a scheduled status update. Activity permanence, the ability to search an historical record of your updates (I just made this buzzword up).

People are rightfully jazzed about these concepts. You end up knowing more about the projects you’re working on, while saving time on meetings, and avoiding interruptions.

There’s one more benefit that I’m in love with, momentum. We started out with just the GitHub updates. We’d go through weeks where I was only talking to customers. Jay would be busy on code, filling the chat room with status updates, while I produced nothing visible. I felt like a major tool. Now when I’m talking to customers, I generate just as many status updates. I feel like we feed off each other and I push myself to finish my tasks so I can get the reward of a status update.

I’ve been learning about two concepts on the side, positive-reinforcement dog training and deliberate practice (focusing on the quality of your work, not just the quantity of your work). When I got into deliberate practice I realized that everything I was trying would go much faster if I could have instant positive reinforcement, like Pavlov ringing a bell at the instant that I completed a positive step.

In dog training, you use a clicker rather than a bell. With some treats you can transfer a small positive association with the sound of the click. Then with the clicker you can transfer that positive association to behavior. I’ve heard that some gymnasts are using clicker training to reinforce their movements. A movement completed successfully gets a click from the coach. The click reinforces the brain pathways that produced the movement and the gymnast’s brain is then more able and more likely to reproduce the movement.

The status updates are small rewards, like what you’d get from a clicker, and they reinforce two behaviors that are generally positive.

One, we’re rewarded for completion. A good idea, a chunk of code, a well written email are all worthless unless they are implemented, committed, or sent. Our automated updates tend to only happen when something is completed, a chunk of code is committed, an email is sent, or a client record is updated.

Two, we’re rewarded for breaking tasks into smaller steps. This is especially true of code. Rather than keep code checked out for weeks at a time, we are rewarded for breaking it into independent chunks that can be checked in. You might consider this gaming the system, and it is, but I’ve always been a believer in the Edsger Dijkstra quote, “The competent programmer is fully aware of the limited size of his own skull”. We’re rewarded for incremental work, and incremental work has the benefit of being easy enough to do well.

I heard a story about a programmer who gave up on his team’s campfire chat room because he found it distracting. His work, at the time, was to spend three months, by himself, building a data warehouse. From this story, I can extrapolate some helpful tips. Read the chat log at your leisure. Feel free to scan. Your feedback is not urgently required. It’s not supposed to be a burden.

The depth of ambient awareness, asynchronous knowledge transfer, and what-have-you, definitely depends on how much time people spend studying the updates. But the momentum benefit just depends on the idea that people will see the update, that there’s an audience that’s going to be impressed by your prodigiousness.

I have one more anecdote supporting the power of having an audience. I’ve worked for two companies that had continuous integration testing, a system that would run automated code tests after each code check-in and then send out a notification. The most common time a notification would be generated was when someone was in a rush to get out the door.

One company sent the notification by email. The other sent the notification to a campfire chatroom. For some reason, people at the email company seemed to check-in broken code all the time. People at the Campfire company almost never did. It’s hard to prove, but I believe the reason is that people at the second company were afraid that the notification would generate negative comments from the other programmers about what a lazy, inconsiderate programmer the person was. At the email company, it was as easy to ignore an email as it was to respond, and if you were going to respond, easier to respond to the culprit rather than the group. So there was less social pressure.

These notifications were a special kind of passively generated status. They said, “I’m screwing up right now.” You don’t want to generate that status.

The anecdote about broken tests is one reason I prefer my business microblogging tool hacked into Campfire. It’s nice to be able to talk about or respond to some of the updates. The other reason, is that it fits into a work flow rather than adding another place that I need to check.

If you’re a programmer, then Campfire is definitely ready for you. Almost every service you use has a Campfire hook. Check GitHub for a lot of tools including Backpack, Basecamp, Continuous Integration, Twitter.

14th Oct, 2008

3 comments

My Favorite Podcast Episodes

I started listening to podcasts again and have found some amazing episodes that I want to share with people. I’ve also rediscovered why being a podcast listener is so frustrating. Let me share the good episodes first before I start complaining.

Three of these next seven episodes are amazingly good. These are so good that they’re worth listening to over dinner (Sarah and I did actually listen to the two This American Life episodes that way).

Venture Voice // Tom Perkins of Kleiner Perkins – Great history and perspective from one of the most experienced entrepreneurs and investors.

This American Life // The Giant Pool of Money – Explains the mortgage crisis in a way that anyone can understand, even covering CDOs.

This American Life // Another Frightening Show About the Economy – They expand on their coverage of the mortgage crisis to include the credit crisis, including commercial paper. I swear, this is interesting and understandable.

These next four were pretty interesting to me at least. I bet they have things that you haven’t heard before.

Knowledge@Wharton // Google’s Joe Kraus on How to Make the Web More Social – Covers a lot of fundamental trends that effect a business like CrowdVine.

TalkCrunch // Interview With Newt Gingrich About Tech, Elections And American Solutions – If you live in the Bay Area you probably only know Newt through the Clinton impeachment. However, I thought it was interesting to get his policy perspective since I almost never hear local pundits or politicians talk that way.

Entrepreneurial Thought Leaders (Stanford) // Music Artists Go Entrepreneurial – Quincy Jones, MC Hammer, and Chamillionaire discuss social software’s effect on music. They even mention Twitter and FriendFeed. I love how so many hip hop artists take control of the business side of their art so that they can have some measure of independence (it’s like a programmer who rejects corporate safety and venture capital).

USF MBA Podcast // All Things Digital – This is Kara Swisher giving an inside take on the News Corp acquisition of the Wall Street Journal.

Now I’m going to start complaining. I didn’t want to just tell you the titles of seven podcasts that were worth listening to–I wanted to make it easy for you to actually listen. The absolute best scenario would be if I could create a feed that you could subscribe to in iTunes. Then my recommended podcasts could automatically be added to iTunes and your iPod.

First I tried Odeo. They have playlists but the playlists don’t have feeds. So then I went searching for other podcast directories. I remember when I worked at Odeo being unnerved every time a new podcast directory launched. Well, all of the competitors seem to be defunct or in major disrepair.

So then I tried Digg. They have podcasts in their directory that you can “digg” and they offer an RSS feed of your history which includes those diggs. I created a new account so you wouldn’t have my non-podcast diggs (mostly just favors for friends at this point). That produces an RSS feed but the RSS feed doesn’t have enclosures, the information linking directly to the podcast audio file that you podcast player needs to download.

So then I went back to Odeo so that I could at least point to a web based playlist. I would have used Odeo for six of the seven links above but they’ve removed their “add to itunes” buttons. The seventh (USF MBA) is missing from the directory. But I can’t be too harsh about that since they’re still by far the most complete directory.

Who is to blame? I guess I am at least partially. I worked at Odeo. Our flash guru, Ray, was a huge proponent of what he called curating. That’s exactly what I’m talking about here. I don’t have much content to offer, but I can offer my editorial filter. I wish we had solved this problem before we’d moved off of podcasting.