Adam Smith

06/02/2009

Blogging != Twitter

The other day I submitted my recent blog post, Steve Ballmer, International Security, and Us Little Folk, to Hacker News. It got one upvote and one comment:


I found absolutely no point in the article. Confused.


Ouch!

...but actually true. So I added a preamble to the post: "Just a snip of consciousness.." and learned that a stream of consciousness might work on Twitter but not on a blog. Indeed, the top articles on Hacker News are consistently either news or well thought through expositions on a specific topic with a specific point.

So today's blog post point: blog posts need points!

Coming soon: a quick startup idea.

05/28/2009

Always Add Polish!

Polish is often the difference between success and failure when getting stuff done. Literally, this is one of the top ten reasons ideas fail.


Products

Polish is why PostScript lost to Adobe PDF. Postscript had an eleven year head start on PDF, not to mention it's free and open source. Try to use it, though, and you'll end up on the command line and downloading extra programs that are GUI wrappers.

I ran into this failure mode again last week when I downloaded Microsoft Sandcastle, a documentation system for .NET libraries. It's as powerful as LaTeX but just as user unfriendly. I finally found an open source project called the Sandcastle Help File Builder, which provides a nice UI. There's no doubt in my mind that the extra step costs Sandcastle 80% of its potential users.

It's always sad to see a product fail just because the experience lacked polish.

I haven't seen Google Android yet but my first reaction when I heard about it was that It will lack the polish of the iPhone, and fail because of it.



Emails

Imagine you work at a software company and your mom sends over a feature idea for your product. When forwarding the email to your product manager, you could add

"fyi"


or you could write

"My mother, bless her soul, thinks about our product in the shower. She came up with the idea below. It could be a useful addition to the next release. I think our eskimo users would appreciate this feature."


We all understand, I think, that adding these short thoughts to your email makes it more likely to be read and reacted to.

Yet we all, myself included, get lazy and stick to the easy "fyi." It's just easier to not invest the emotional energy to add value.


Data Versus Polish

I suppose robots would be fine with the PostScript command line or the "fyi" email. You could send all of your source code to the Microsoft HR robot and get a rejection or offer leter in ten minutes. No resume needed!

The truth is that we're all human, and adding polish lowers the amount of emotional energy needed to grok and respond to emails, user interfaces, ideas, etc.

The concept is remarkably right brained for someone like me, but I think that's why engineeers often fail at adding polish.

We don't learn this stuff in college. But we should.

05/26/2009

Character in Blogs

I was thinking this morning about blogs and the pictures adorn their home pages. They must reflect what's important to the authors, I suspected.

I started going through them in my head....


Me: I climb in trees and enjoy nature. (truth: I do enjoy nature but not often enough!)

Fred Wilson: I enjoy my family.

FredWilson 

Jeff Atwood: This is a silly blog!

CodingHorror

Jeff Bonforte (Xobni CEO): I love my dog.

JeffBonforte

Dharmesh Shah: where's your photo man?! you need a karate photo of you versus an old, wise kung fu master!

OnStartups 

Paul Graham: Here's some good art. (home page)

PaulGraham
 

Mini Microsoft: Microsoft-ish blocks-on-blocks image; needs a ninja.

MiniMicrosoft 

Auren Hoffman: don't mess with me.

AurenHoffman 

Rick Segal: (more to the point than Auren) better watch out!...

RicksBlog

05/23/2009

Business & International Security

It was the first week of my first semester at MIT. At the time every class was full of excitement from the pass/fail grading, new friends, and fresh love interests. I went to my political science class, American Foreign Policy, and this one was no different. I spotted the cute girl from my dorm and took a seat.

The brilliant aprofessor, Stephen Van Evera, started talking about political science as a science. It’s a different kind of science, he said. In contrast to physics or chemistry, we’re dealing with:

  • Low “n” (few data points),
  • We cannot perform experiments,
  • Our independent and dependent variables are often qualitative, and not to mention
  • If accidents, personalities, and serendipity shape history, how can general theories explain the past?


“Consider Annie Oakley’s central role in world history,” our notes said. Annie Oakley was a famed rifle shooter; probably the best in the world in the early twentieth century. She was in Europe and Kaiser Wilhelm of Germany challenged her to shoot out a cigarette he was going to put in his mouth. She hit it right on target but supposedly regretted for the rest of her life not taking him out. He was largely responsible for World War I.

In such a science we’re basically left with history to learn from, and history is noisy. It’s a primitive science.

 

I noticed a parallel when watching Steve Ballmer’s talk to Stanford student entrepreneurs. Ballmer was talking about business strategy and mentioned a case study about the Kodak-Polaroid wars in the 1970s:

We studied some case about Kodak and Polaroid. And it talked about what the market leader should do versus the weak number two player in terms of how you vary cost and investment, and expenses and business models. I still quote from the darn case all the time to our people in high share businesses and our people in low share businesses.


It’s an interesting case. If you read it, think through your thoughts and then you can read on the web about what actually happened after 1976 where the case study leaves off.

But more than not I get the sense that business strategy and international policy are both hard.

05/19/2009

User Counts Considered Apples and Oranges

Pop quiz time!  Sharpen your pencils and put on those reading glasses.


    1. Would you rather have...
 
        A. A company that has 1.5 million active users
        B. A company that has 110 million active
        C. Two million dollars


Smells like a trick question, doesn't it?

In this case (A) is Salesforce, a company with 1.5 million users, all of whom are paying about $60 per month.  They're a public company and currently valued at $5 billion.

Behind door (B) is Myspace, which is probably worth somewhat less, even though they have 73x the number of users.

Behind door (C) was just a distraction meant to throw off your spider senses.

The truth is that unless two companies are in the same space it can be distorting to compare their user counts.  I know everyone knows this in theory, but can't tell you how many times I've heard people compare user base sizes at the meetups we have in San Francisco that we call "parties."

The truth is there are lots of ingredients that mix together to give an approximation of how a company is doing.  The biggest ones include:

  • Number of users,
  • Value of user demographic,
  • Engagement,
  • Type of engagement (e.g. work versus entertainment),
  • Attrition rate, and
  • Growth rate.

Once a company matures and has gone through a few iterations of its revenue generating products, there's another metric that boils down lots of these indicators into a common demoninator.  It is:

  • Revenue!

Xobni has many users but is pretty great at many of the other pre-revenue metrics too.  That's why I'm excited to get started with generating revenue!  It's too bad all good things take time; my inner child at christmas is anxious and excited!!


Over and out,
Adam

05/18/2009

Why Good Products Matter

Good products make a philosophically positive difference.

Good products mean, by definition, giving people what they want.

For example: Now you can talk to your grandparents, who are a hundred miles away, IN REAL TIME! Now you can see a picture to help you relive the moment with your niece was born. And so on.

Should you care about giving people what they want?

Well, how about the opposite: should you care about taking away something people already have and enjoy? This is called stealing, interestingly. Steve Jobs is the opposite of a robber.

Which is probably why successful societies reward these opposite-of-a-robbers. As Paul Graham has said, "Let the nerds keep their lunch money, and you rule the world."

But wait, it gets better! Innovators aren't only rewarded financially; they also receive social capital. For example, Paul Graham bootstrapped Y Combinator with the social capital he received from his successful writings. Joel Spolsky and Jeff Atwood made the same play with StackOverflow.

These are all virtuous cycles. Empirically they're very successful.

Just remember: even though these economic and social incentives encourage people to create great products, there's a more fundamental reason to do it. Good products help people lead better lives, and that's a very precious thing.

05/10/2009

About Adam

Hi, I'm Adam Smith, a computer hacker, entrepreneur, and the author of this blog.

I'm the founder of a great startup called Xobni.  Xobni is the word 'inbox' spelled backwards.  We make email software that makes it easier for people to manage relationships and find information in their email.  Our product has received a lot of attention from the tech community, including people like Bill Gates.  If you use Outlook or an Android phone you should give it a spin!

I began writing and selling software online in the same year at age thirteen through a company I created called Vira Tech Development.  That darned homepage still says copyright 2003.  :-)

After graduating from MIT I started a master's program and later dropped out to start Xobni.  I ran Xobni as CEO for two years, was its CTO and member of technical staff for an additional two years and change, and am now a free radical in search of the next great idea.

I'm principally interested in great ideas and moving the ball forward.

You can see some of my old web sites here.




ChildhoodAdamSmaller 

(A nerdy childhood photo, scanned.  It took me a bit there at the beginning to learn that GIF only supports up to 256 colors.)

04/04/2009

Investing A Million Bucks Into Performance and Stability

(This blog entry is based on a long comment I posted recently on Hacker News.)

Last week Xobni announced that we’ve added the Blackberry Fund to our series B financing.

We also released a new version of our software alongside that announcement. The release got less attention because there aren’t any user visible features.

Truth be told, though, we invested about a million dollars into that release! And the investment will be critical to the success of Xobni.

So how is it possible to invest so much, on something so important, without adding new features?

If you’ve read the title of this post then you already know the answer. Other than consuming ungodly amounts of Reese's Peanut Butter Cups, we worked on two things -- performance and stability.

Outlook is a hostile environment for a product like Xobni. It has several different APIs, each with different quirky interfaces, side effects, and threading models.

There's no way around having complex APIs for Outlook. They expose programmatic access to the most complicated email application ever built. Just like Excel and MS Word, it's really hard to underestimate how feature rich this program is.

As evidence, I’d suggest you check out this unusual peak into the depths of Outlook's complexity.

Scroll down to the section titled "Individual bugs that are fixed." Wow!

Let's run through my favorite example of how complex these APIs are.

Imagine you have an ID for a message, and you want to open a draft reply to that message so the user can type in their reply and press send. It should work just as if the user hit the Reply button, or pressed Ctrl-R.

Easy right? That's what I thought, too...

The first API I tried seemed to work, but when the user pressed send the icon for the original message didn't change to the purple arrow to indicate that it had been replied to.

I found a second approach that didn't have that bug, except it turned out to save the draft of the message (if it is being composed for more than five minutes, or the user explicitly presses Save) STRAIGHT INTO THE INBOX, instead of the Drafts folder. It looked funky -- no sender name, no sent time, etc. Ouch.

I found another API to use. It set the right icon -- good -- and seemed to save drafts into the Drafts folder. Double check. Unfortunately as soon as the user started typing it showed up in Times New Roman, 12pt, as the default font. Doh.

One of these three approaches also wouldn't pre-populate the user's email signature.

Fourth API was a charm!

…not to mention that the ID for a message is allowed to change under certain circumstances, such as when it gets moved to a different folder.

I could really talk about the complexity of Outlook and the scenarios we've ran into for days. Below are some example bugs I pulled from the Outlook feb-09 cumulative update document linked above. Each of these can hide weird race conditions, thread starvations, or just plain old corner cases that only show up when the moon is in the seventh house.


  * Inefficient processing occurs in a loop during intermittent network connectivity.

* If the store providers are disconnected early, the Outlook.exe process becomes unresponsive for a very long time.

  * When you right-click an item, the whole item is loaded into memory more frequently than necessary.

  * Unnecessary disk reads are performed for every time that a custom form icon is rendered.


One of the fun side effects of doing this work is that you end up seeing all of the bugs you've come across in OTHER Outlook addins. I was using TechSmith's Snag-It the other day and smiled when I saw a draft it had opened save to the Inbox before I pressed send. They were using API #2. :-)

Not to mention that all of these other addins are accessing the same APIs, sometimes with "interesting interactions."

And on top of these challenges there are several users who have giant mailboxes. We've seen users with almost a million emails loaded into Outlook at the same time.

Usually these are the people with 12" laptops, 2 GBs of RAM, and 5400 RPM hard drives.

When this happens, all bets are off. Outlook takes a long time to load their twelve PST files. If an addin is trying to load its stuff at the same time you get heavy disk contention and "sequential" read throughputs plummet to 1 MB per second. And god help you if Outlook needs to "repair" any of these PSTs.

..the list goes on and on. We've been on a four month odyssey.

The sad truth is that there are still issues with our performance and stability. We fixed all of the reproducible issues but there still remain computers out there with all kind of weird registry permissions issues, combinations of other addins that can conflict with Xobni, and so on. It’s not the wild west out there, but bandits do pop up from time to time.

It's been both tough and fun. I love my team. We’ve hit some real high notes together.

I think we do it for our users. Not to be trite, but I think it’s true. Everyone on the engineering team feels a pinch of pain when users have problems. [1]

But, the other side of the coin is that we have a lot of fun with the code. There is some pretty awesome stuff going on under the covers. I'll give three quick examples..

1) Xobni's data store sits strictly underneath the sidebar code in the stack. It was originally built to support Xobni Analytics, our first product from 2006 that bombed. Fortunately we got to leverage the same data store when creating the Xobni sidebar. It's very cool. When someone is building software leveraging our backend, say the sidebar, or the Invite Your Friends feature, the code ends up looking like this:

   foreach(var mail in new MailIterator()) {
      Console.WriteLine(mail.Subject);
   }

This code will print 10k subjects per second, from disk! And it's from a key-value store, so it's easy to add new data fields and types.

Our data store is darn useful. Just two days ago I wrote some code against it to get some important data for a new project we’re working on. It looks like pseudocode!

2) Not only that, but the data store is built to be client agnostic above "layer 1" where we interface with the mail client. So when we wanted to integrate Yahoo Mail all we had to do was build the adapter piece that knew how to speak Yahoo's language, and suddenly the mail floats all the way up the stack and appears in the sidebar right next to Outlook emails. :-)

3) The areas where we display information from Facebook, LinkedIn, etc are all little embedded instances of Internet Explorer. The code for those extensions is all just HTML and Javascript. When the user changes the current email we invoke a specific JS function called updatePerson(), and there's a callback object the JS can use to make HTTP calls and write lines to the log file. This architecture, which was invented by someone smarter than me, allows us to pump these babies out quickly and without much QA risk to the other parts of the program.

It just doesn't get any cooler than this!


Anyway, back to the main subject of the blog post: performance and stability and the road ahead..

I think we’re all excited with what we've done, but mostly we're already starting to look look forward to the next generation of features for our customers. It's going to be an exciting rest-of-2009 ahead!


Stay tuned!


(Commercial: if you're a developer and are interested in being part of the team, send your resume to jobs@xobni.com!)

12/02/2008

What Open Source Can't Do

Host software services. This is a pretty big deal for entrepreneurs looking for business opportunities. Let’s look at some examples.

LogMeIn, which filed to go public in 2008 is basically VNC with a web only client side and central servers that will facilitate NAT traversal across firewalls. Various VNC developers had written software to do this but nobody was willing to maintain the servers. That’s created a business opportunity and a competitive advantage against open source alternatives.

Fog Creek Copilot took advantage of the same opportunity, and in this case they actually used VNC software.

What about a place to host your MP3 play history for other people to see and for other software to mine? Audioscrobbler started to do this, but morphed into a startup called Last.fm.

I’m sure open source blogging software was around when Evan Williams launched Blogger.com. …and look what happened to Blogger. I wonder what percent of blogs today are ran in the old fashioned way: someone went to SourceForge.net and installed it on their shared server, versus using a company set up to host the blog for them. I’d bet in favor of the hosted service.

It’s too bad, really. There’s no doubt we’d have better software today if open source projects could get servers and operational resources for free. We’d probably all be using an IM client built around Jabber.

But it’s an opportunity for entrepreneurs, and one that will grow in the age of web services and web experiences. Ask yourself: what open source software exists that solves a big problem in a large market? Can you add value by hosting it in the cloud?

11/05/2008

Xobni's Burn in the Early Days

A friend just asked about spending at an early stage startup. I thought I'd post my response in case it's useful to others.

hey adam - what do you think your personal burn rate has been during these stages:

seed stage
- a dollars / month on rent
- b dollars / month on everything else personal

vc stage
- x dollars / month on rent
- y dollars / month on everything else personal.

Seed stage (a) should be easy; it’s just the rent for your area. In Cambridge we had a 3br apartment near Harvard Square for $2200 per month, but we subletted out one of the rooms for $800 per month and had Drew working from our living room for about $400 per month. In Crystal Towers we paid $2600 for our 2br and then we had a stint of working out of my single which was also about $2600 per month.

I don’t know Seed stage (b) as much because I just didn’t keep track. But I can triangulate based on our out of cash dates. We were making $12,000 last four months, though that includes some consulting revenue from Matt working a weekend or two per month @ NASA for $55 per hour. It was super low. We ate bagels in the morning with cream cheese, and made turkey sandwiches with avocado for lunch. Dinner was usually the Italian sandwich/pasta place next door.

Our burn was so low partially because we were working so hard. When you’re working seven days a week for 14 hours per day that leaves little time else to get out and spend money.

Needless to say, we weren’t drawing a salary. The company was essentially paying for everything. Our philosophy was that we put our bank accounts into long term storage, like a secret agent on a 10 year mission would. We didn’t withdraw from or deposit into our personal accounts.

Once VC stage hit we were slow to accelerate burn, which was smart in some ways and dumb in others. Matt still didn’t want to spend the money for window AC units (dumb). We raised our salaries to $72k (smart). We continued to work out of my apartment until we outgrew it by headcount, not by bank balance (smart).

Matt was a champion for conserving cash. Him plus our lowly roots made us, as a board member put it, “remarkably capital efficient.”

It caused me some cognitive dissonance, though, to see different spending habits WITHIN rounds. When we were launching at TechCrunch 40 I had a hired hand we flew in sleep on my couch at home, but a year later while we were still series A we wouldn’t have hesitated to put him up in a hotel. The people in the company had changed; it wasn’t related to being in series X.

So I guess to answer your VC stage (a) we got a lease for 3200 sq ft for $5000 per month by looking on craigslist. A steal.

For VC stage (b), we paid all personal expenses by salary. The salary could be low because we were working so much of the day.

That’s the prevailing effect. High salaries in a startup are probably exactly correlated with low time in front of a computer.

11/03/2008

First Reactions from Salesforce Expo

I felt like I was entering another world today when I walked into the Expo floor at the Salesforce “Dreamforce” conference.

The expo is a room full of vendors that are trying to sell their solutions to Salesforce users. I was certainly the most underdressed person in the room. Everyone was in suits, and I was reminded of the cultural rift between sales and tech people.

You can tell how alienated these two groups of people are by listening to how they talk about one another. One person giving me a demo of their solution said “Then we let Todd loose on the problem!” If one group has some amount of disrespect for the other, it’s probably the developers with regards to the sales guys. Sales people certainly respect programmers, even though they don’t understand what they do.

But the Salesforce conference is the land of the sales guy. I find it both intimidating and exciting. They have energy and enthusiasm.

Unfortunately they seem to be hurting when it comes to innovation. I twittered that ninety percent of the solutions venders were either very labor intensive businesses (consulting) or were selling software that ended up creating more work for the user.

For example, there was a software company that helps you bring your email conversations with customers into the salesforce database. This is a hole in the salesforce workflow, for sure, but their solution was a little convoluted.

Each user had to forward incoming email to this system, and BCC the system on all outgoing emails. They have an Outlook addin that will automatically BCC the system on your outgoing emails.

Then there’s a tab in the Salesforce UI they add for you to create contacts around new, unknown email addresses.

It’s all very convoluted. It doesn’t “just work,” yet most of the offerings of 3rd parties had this flavor. I think that’s why there’s a long tail of vendors; nobody dominates because nobody is adding value in a systematic, high quality way.

I can also understand why. Most products for sales people are driven by sales people to begin with, and most sales people don’t have good product and technical instincts. Most people who have those instincts don’t understand sales people, and they especially don’t understand sales managers. It’s all very depressing, but exciting at the same time. There’s a lot to be done.

05/11/2008

When Will Amazon Start Shipping Cash?

My coworkers and friends know that I buy everything from Amazon, including things like socks, pillows, and laundry detergent.

What don't I get from Amazon? Perishables like milk, drinks are too heavy to ship, and cash from the ATM. But that last one seems silly if you think about it. Why can't I order 20 ten dollar bills from Amazon? Security shouldn't be an issue below a certain amount, say $500; I've ordered more 'expensive' things. Just a funny thought...

P.S. I recommend this life hack. Be sure to get Amazon Prime.

05/02/2008

"Spin" and Rotational Inertia

I was just talking with Greg, when he coined a new term:

Rotational inertia is what you get when you start "spinning" (selling) something to someone. When circumstances change, and you have to spin in the opposite direction to the same audience, you must overcome and reverse rotational inertia.

:)

03/02/2008

Early Stage Investors, Getting Deals Done

This post is a response to Matt Maroon's post today called Poker People. Matt talks about how straightforward poker players are with each other as compared to Silicon Valley investors.

I've been listening to a song by Kanye West called Last Call. It has a nine minute outro where he tells the story about how his career took off. It's worth a listen / read the lyrics. (We can mix things up a bit, right?)

Kanye went through a lot of struggling and many of his deals fell through. It sounds like the rapping industry, like early stage investing, is not as straightforward as the poker world. Just interesting as another data point.

Early stage investors are definitely in a hostile environment. The signal to noise ratio is remarkably low. I was speaking with a VC the other day who said he reviewed 1000 business plans in the last year. Imagine that!

It's no wonder that investors take their time. That said, I do agree with you that negotiations are often fumbled. I've never met Ram Shiram, but he seems like an upstanding guy:

"Unlike most investors (who wait a week, talk to their friends, bring you back for multiple meetings), Ram said 'Okay, I'm in' before I was done with the presentation."

- The Mint guys

That said, Ram had the advantage that he was coming after another round was recently closed, so Mint already had social proof.

Paul Graham, as you know, is also upstanding. Same story with Fred Wilson; I haven't convinced him to invest in me yet but he seems like a genuine and straightforward human.

I've also been reading and listening to lots of Warren Buffet, and he also seems to think heavy negotiation doesn't matter. He invests in companies for a lifetime, so he understands that business fundamentals are more important.

Regarding getting investors to be straightforward with you, consider

(a) having a reputation / not a first time entrepreneur / being a known quantity that they'll have to contend with in ten years,

(b) being likewise straightforward with them, and letting them know that you don't want to negotiate heavily, e.g. offer terms that you think are fair and indicate that you think they're fair and you don't expect to end up with something substantially different, and

(c) picking a lead investor who's a minimalist when it comes to negotiation and letting others invest on pre-negotiated terms.


Good luck!

02/25/2008

The Most Inspirational Part of Andy Grove's Autobiography

...is when he is a refugee in Austria, escaped from Hungary. He badly wants to go to the United States. I can relate; there have been three or four times in my life when I really wanted something, in the way that you dream about it every night and you put infinite care into every part of getting it. Applying for Y Combinator, to start Xobni, was one of those times for me.

For those of you unfamiliar with Andy Grove, he was the third employee at Intel and its President (and later CEO) for over twenty years. He's a prolific thinker and businessperson in the valley.

Andy is 20 years old. He had just interviewed with American students from the International Rescue Committee (IRC). These students are picking refugees to bring to America based on English skills, education, etc. He was to find out the results the next day...

"They had read off a list of names. According to people who heard the list, I wasn't on it.

I felt as if someone had socked me in the stomach, then my heart started beating so hard that I could barely breathe. "Where are the IRC people now?" I asked. Someone said they were conducting another series of interviews at a school some distance away. I took off like a madman. I ran all the way through the cold, dark streets. My heavy shoes hurt my feet as I ran, but I didn't care.

Sweat was pouring down my face by the time I reached the school. There was a familiar long line of people waiting to be interviewed. I didn't wait. As the next person emerged from the interview room, I brushed past the person whose turn it was supposed to be and pushed in to stand in front of the table.

The IRC representatives were a different group of students than the ones who had interviewed me the day before. They stared up at me blankly. I didn't give them time to stay anything. I swiped the sweat off my face with my hands and, still panting, started talking in English as fast as I could.

I explained that I had been interviewed yesterday, that I was not selected, but that I really, really wanted to go to the United States. One of the interviewers asked me why. I told him I had relatives in New York City who would take me in, that I was a chemistry student, that I thought I would become a good chemist, and that I belonged in the United States. The words poured out, not eloquently or coherently, but I talked and talked as if I could overwhelm their objections by the sheer volume of my words. I almost didn't dare to stop talking, but finally I ran out of things to say. I stood there, panting slightly and still sweating profusely.

The students looked at each other and smiled, then one said, "Okay, you can go to the United States."

I was speechless. I couldn't believe my good fortune. I wanted to hug every one of the young men sitting on the other side of the long table."

01/28/2008

Social Graph and Related Thoughts

I’ve been thinking a lot about APIs lately. Xobni works with MS Outlook; we use its APIs to get to mail data. Xobni’s current value comes from organizing this data in novel ways for our users.

There’s still a ton of great things Xobni can do to (a) tap into other sources of data, including but by no means limited to mail data, and (b) make all of this useful data more accessible to other developers.

Xobni isn’t the only group of developers thinking about this problem. It’s clear to everyone that rich personal and inter-personal information is locked away in data silos.

 

Social Graph

People are trying to free social graph data, e.g. OpenSocial and the Social Graph Foo camp this coming weekend.

At the end of the day I think it’ll get done. The data is spread through email, social network, IM, and phone platforms, but that won’t stop progress if there is real value to be unlocked. That second piece is what I’m worried about; we are at a lack for compelling use cases of the social graph data. Here are the ones I know of: dopplr, evite invitations, setting permissions based on friendship, and search. What am I missing?

 

Other Personal Data

People are important but there’s more to life. Facebook, for example, has all kinds of data entities, and all of them are interconnected. It’s a powerful approach. Here’s my illustration.

 

 

Social Graph Plus Plus

12/10/2007

A Manifesto

It’s been a while since I’ve written. Life just hasn’t been the same since getting real users. I feel like blogging is kind of like deep sleep – it helps you organize your thoughts and recent things you’ve learned. Since launching at TechCrunch40, though, I’ve been facing all kinds of new challenges. Some of that terrain is behind me now, so I have a long list of great things to write about.

I was thinking recently about my grand strategies for life. How do I make really important decisions? What principles do I want to inspire my actions?

First, I want to kick ass. I want to be effective, and that means hitting hard.

I still remember Xobni’s first summer. I worked until about 6am when the sun came up. That forced me to go to sleep. Then I rolled out of bed and started writing code in my boxers. We took a few hours off a week to be social, and we read new Paul Graham essays as they came out, but that was it. That was probably the hardest I’ve ever worked for such a long stretch, and it was really tough. Really tough. But we produced. We laid the ground work for Xobni, and learned a lot about our market, customers, etc. It’s the best and most personal example I have of kicking ass.

Kicking ass is about being effective. The other two principles relate to what I want to kick ass at.

Second, I want to always learn. Most people who join Xobni do so because it’s an amazing learning opportunity. Matt left grad school because he’d learn more starting a company. Gabor left Google because he wanted to escape the politics and big company environment. Etc. It’s a great principle because all of these guys are now better equipped to kick ass.

Finally, I want to be a missionary. Spread the word about what’s good and true. If a new grad is considering two career options, I’d love to offer whatever experience I have to help them make a good decision. If someone is raising money, I want them set up for success.

These are small examples. They get bigger. Look to Bill Gates’ latest philanthropic efforts for an example of a missionary. He has conviction that the world needs to change, and he’s up in arms. That’s an awesome example.

Paul Graham thinks that more young hackers should start startups, so he started Y Combinator. You can tell that he legitimately wants to improve the state of things. It’s just evident to anyone paying attention. He’s not interested in money. He’s interested in spreading what’s good.

10/01/2007

Xobni Recruiting Video

I mentioned in my last blog post that Xobni is looking for great hackers and a senior QA lead. The kind of people we're looking for have basically infinite options when choosing where to commit themselves. Why would they chose to work at Xobni?

Aside from our acclaimed product, superhuman team, and great market, we also have a killer culture. I hope this video helps us show that off.

Click to play!


Video thumbnail. Click to play Click To Play

09/24/2007

User Bases, Pricing, Revenue, and the Value of Users

Suppose you wanted to make $1 million per month by selling software. You can either go for a few lucrative customers or lots of low paying ones. A half minute in Excel and you have a table.

Dollars per user per month


Customers needed for $1M / month

$1
1,000k
$5
200k
$10
100k
$50
20k
$100
10k
$1,000
1k


Ten minutes in MS Paint and you’ve got a nice graph.

Money Graph

The sweet spot for high margin software offerings seems to be in the sub-$10 per month range. Rhapsody charges $13 per month. Yahoo Mail is $1.60 per month. Mozy is $5 per month. [1]

Enterprise customers pay in the same range for commoditized products. MS Exchange costs about $10 per user per month. FogBugz costs $20 per user per month. I’m sure enterprise antivirus is a brutal market for providers, but I don’t have numbers because they don’t have public pricing.

Enterprise customers are willing to shell out the cash in non-commoditized product categories, though. Salesforce.com charges about $100 per seat per month, but they’re going to have to drop their prices soon because of pressure from Microsoft and others. Bit9 is a new kind of enterprise security, so they’re set for a couple of years.

Anyway, so this is the range we’re interested in:

Highlighted Money Graph


How do we get 100k paying users? Just for fun let’s assume that you have a freemium model. Most users aren’t going to pay, but some will because they get the bike horn that makes the moooo sound.

The rule of thumb is that about 1% of free users will convert to paying customers. The number varies greatly by vertical, product, etc., but let’s just go with 1%. Some quick math and you have another table.

Dollars per user per month

Paying customers needed for $1M / month

Users needed, 1% conversion

$1 1,000k 100 million
$5 200k 20 million
$10 100k 10 million
$50 20k 2 million
$100 10k 1 million
$1,000 1k 100,000


So if you charge $10 per user per month, and 1% go premium, you need 10 million users to hit $1M in revenue per month. For reference, Outlook has 500M users, Skype has 200M users, and Thunderbird has 8M users.

Skype had about 50M users when they were bought. At that time there were about 4M people simultaneously online, so only a fraction of those 50M were active. Why did they get bought for billions? My guess is that a large portion of active users were paying customers. They were obviously still in growth stage. They also enjoy high margins and had recurring revenue for each user.

So what would $1 million of revenue per month do for you, anyway? $12 million in annual revenue, to be sure. Beyond that you’re back in the land of heuristics. Google has a P/E (price to earnings) ratio of 50. If you got the same ratio with margins of 50% then your company would be worth a nice $300M.

Margins vary hugely by business. Grocery stores get about 2% margins in a good year. Software, luckily, traditionally has high margins because the cost of supporting an additional user is so low. 50% sounds extreme, but consider Skype. They don’t have infrastructure costs, and they probably have no more than 50 or 100 people. That’s the kind of company Xobni can be. This 50% margin on $12M annual revenues can support a burn rate can support a head count around 30 or 40 people. That’s not a bad place to be when you hit the $1M per month milestone.

Other public tech companies have similar but not higher ratios. Redhat is at 65, Yahoo is 50, Sun is 40, Oracle is 30. Microsoft is 20, but damn do they have lots of revenue! Salesforce.com is 1053, but until recently was infinite. They’re still selling the dream.

These numbers can end up all over the board. Zimbra sold for $350M on revenues of about $15M, and probably way lower profits. The list goes on. Growth and strategic value to acquirers seems to have the biggest impact. [2]

With some more elementary school math, we can use these numbers to derive a value per user. An average user on the $10 per month row gets us ten cents per month, or $1.20 per year. That’s sixty cents of profit. With a 50 P/E ratio, that’s $30 per user, not far from Fred’s numbers.


P.S. Xobni is hiring. We are currently looking for great software hackers and a senior QA lead.


Notes
[1] The sad part about these prices is that both Rhapsody and Mozy are low margin businesses. Rhapsody is net losing money per user. Yahoo Mail is a high margin business, but it doesn’t matter because the price is so low.
[2] If you want more examples, look here for a list of MS acquisitions, and have fun googling.

09/07/2007

Squash the Bug, Then Close the Window

I usually edit two pieces of code when I’m squashing a bug. First I fix the specific bug, and then I go on a hunt for ways to prevent similar bugs in the future.

Can I make the code fail faster?

Bugs that happen earlier in the execution path are easier to investigate.

If an invariant was destroyed, the sooner you detect it the better. It’s great if you can check for the invariant right after you modify the data. If you have complex invariants then you might consider adding a CheckInvariants() function that gets called periodically.

If the bug doesn’t throw an exception, can you test for it and throw an exception when the condition occurs? Exceptions codify error conditions. If you collect exception reports then you’ll know how popular a bug is, you can see patterns of occurrence, you’ll know for certain when it’s fixed, and so on.

Can I make the bug more apparent?

The worst bugs only appear if the user is running Japanese Windows and singing in the shower while holding the control key. As a programmer I don’t do that often so the bug won’t be caught until release. Bugs get exponentially more expensive the longer it takes to find them. You will fix bugs earlier if you can make them more apparent, and everybody wins.

 

costofbugs.jpg  This principle is true even at the small scale. There’s a product category just for apps that tell you when you broke the build one minute after it happened. [1] You get to fix it quickly, instead of getting the email from your annoyed coworker one hour later. There are real dollars there.

Can I make this bug easier to fix in the future?

You might be able to make the bug cheaper to fix if it reappears two months later. Add a comment block detailing how the bug happened and how you fixed it. Reference the bug’s ticket number. Modify the code to include more relevant info in the error report.

One of the things I hate about C# (and Java too?) is that you can’t get the locals of a stack frame. This feature would save us lots of time and money when deciphering error reports from the field.

Can I make the bug impossible?

Wow, wouldn’t it be great if you could do this for every bug?? We don’t use static code analysis at Xobni yet, but that’s something I’d love to change. It can catch so many simple problems. You hard coded a string instead of putting it in the internationalization string table. You write ‘if(x == null) x.Foo()’ instead of !=.

Can I make the bug more obvious to humans?

weirdo.jpg
Great software design makes bugs obvious. Is there some refactoring I can do to make the bug scream at anyone who reads or writes it?

Bonus!

I also like to comment out all exceptions before shipping a release build. That way users never see any errors! [2]

Notes

[1] This idea is called continuous builds. We recently implemented continuous builds and we all have fewer headaches.
[2] (From the bad joke department.)