Archive for December, 2007
Business and Friends
I recently announced that I was heading up to Mammoth Mountain for some snowboarding. Turns out me, my good buddy, and my family are having a killer time, but the vacation is making me think of a former friend of mine, call him Scott, who used to travel to Mammoth with us. And so goes the story of Cellarspot, Scott, and why friends should be careful when going into business together:
Scott and I had been friends since middle school and very close friends since high school. He’s the same age as me, and he’s studying entrepreneurship at USC. I started getting very involved with academia and computer science my sophomore year, so I started working on Cellarspot in the summer of ’06 to apply my newly learned skills. I mentioned the idea to Scott sometime that summer, and he said it sounded like a good idea. A lot of time went by, and I finally started taking Cellarspot seriously in winter ’07. Scott and I had dinner when we were both home for winter break, and he expressed interest in helping out and being involved. I said that’d be cool, but we didn’t move forward from there at all. At about this time, Scott started getting very involved in his entrepreneurial studies, building his interest in Cellarspot a lot. He kept asking me, “What can I do?” I would reply, “nothing,” because my classmates and I were working on the website and there wasn’t anything for a non-technical person to do. He continued to ask me this question through March ’07, and my answer never changed. On a sunny, Sunday morning in April ’07, I got a phone call from Scott that would eventually terminate our friendship (literally).
Scott told me that he was planning on raising capital for Cellarspot so that he could outsource the website to the Philippines. At this time, Cellarspot had already launched but still needed tons of improvements. Scott wanted me to make the improvements, but I didn’t really have much time seeing as how I was insanely busy with senior-level CS classes, TAing, and other things. By outsourcing the website to the Philippines, Scott would be able to get changes made to the site quickly. I didn’t like this idea.
My initial reasoning for not wanting to raise capital and outsource the site was because I loved working on the website. Moreover, the whole reason why I started Cellarspot was to make a cool website and have fun and learn along the way. I thought it would be cool to make money, but that was never my initial intention — I didn’t want to give something I love away. Some of my reasoning was also selfish in that I didn’t want to have pressure from investors, because my main focuses at that time were school and TAing.
When I told him, “no,” Scott started to lecture me about respect, because he learned all about respect in his fraternity. Apparently Scott had been networking with people about Cellarspot for quite some time now, and he was angry that his networking would now be wasted because I wasn’t willing to move forward at the pace he wanted. I would be angry if I were him as well, but he was never upfront with me about what efforts he was making. It’s almost as if he had a plan the entire time that he kept secret from me.
After the phone call, Scott de-friended me on Facebook, and we haven’t spoken since. It’s really sad to see a long friendship end over a business that makes about $5 per month on average, but I suppose that’s just how it is. I wish I could have gone back and handled things better, but I can’t. My only hope is that others learn from my mistakes and maintain their friendships.
Lessons Learned
First, make sure you are always upfront. Instead of telling Scott, “There is nothing for you to do,” I should have said, “You should work on something else and stop thinking about Cellarspot.” This is hard, though, because I didn’t not want Scott to work on Cellarspot. I wanted him to be involved with iterating on the website, but I didn’t want him to take total control of the site and rob me of my technical fun. We both should have been more upfront with one and other about what we wanted and what we could offer.
Second, look for signs that your business is interfering with your friendship. Once Scott and I entered a dialogue about Cellarspot, he would introduce me to his fraternity friends as his “business partner.” Weird, huh? I should have recognized this as an interference and acted on it. Instead I just kept going with the flow and didn’t really think about it outside of being weirded out that we were no longer friends but instead “business partners.”
Third, analyze your friendship prior to becoming business partners. If you have any doubt whatsoever before going into business together, then don’t do it. Scott and I had been great friends for a long time, but Scott is very, very stubborn and opinionated. Even in high school the two of us would angrily argue about silly things because our opinions differed. I’m not very confrontational and argumentative at all. In fact, there have only been six people that I’ve had angry arguments with on a semi-regular basis: my mom, my dad, my sister, my brother, my roommate, and Scott. I should have realized that Scott and I would engage in angry argument and not rationally come to conclusions, making business impossible.
Forth, just remember that freakishly good friendships are infinitely more valuable than business and money. My friendship with Scott prior to Cellarspot was on the decline from freakishly good, but relationships always have bumps in the road, right?
1 commentIt’s Dumping; I’m Leaving
Mammoth Mountain has been getting slammed with snow, so I’m making a last-minute decision and hoping in a car with one of my best friends for a 5 day vacation.
Posts to come: software engineering a startup, business entrepreneurs vs. tech entrepreneurs, and solving a problem.
4 commentsCellarspot: Why It Failed
Some classmates and I launched a social network for wine lovers called Cellarspot, which was my first pseudo-business endeavor. We had about 90 registered users within the first week of launch, and now, about nine months later, we have about 100 registered users. I thought some other young internet entrepreneurs would be interested in hearing why I thought it failed and what I would change if I did it again.
Before diving in I should spend some time describing Cellarspot. The main purpose of the site is to allow people to become friends and share taste notes, bottle collections, and blog posts. There are a few other smaller features as well, but the core of the site focuses on taste notes, collections, friends, and blogs. I worked on Cellarspot in class and also outside of class with a few of my classmates.
Problem 1: UI
The largest problem is the UI. Our original thoughts were that we should focus on a functional site and not on an aesthetic site. We thought that as long as features were discoverable and intuitive that they’d be used and loved. We were wrong. According to Google Analytics, our overall bounce rate is roughly 70%. That is, of all the users that come to our site, 70% of them leave after viewing the first page that they landed on.
This metric implies that either the content being presented on each page isn’t useful, the content isn’t easily discoverable, or the look of the site doesn’t leave people wanting more. I think we got all three of these wrong. First off, the site is very unattractive. In fact, there isn’t a single image on the entire site - just plain text. I questioned some of our preliminary users about why they didn’t like the site, and most of them said that they didn’t enjoy looking at the site. We should have spent more time on an aesthetic UI, which for me means delegating the UI work to someone else. I’m confident in my CSS abilities, but I absolutely cannot make pretty looking layouts with images, design elements, awesome colors, etc. I think we did a good job of making data discoverable and useful, though.
Problem 2: Landing Pages
Landing pages are pages that people land on when they first view the site (in most cases this is the front page). We should have spent more time thinking about how people would access our site. It turns out that people won’t always land on the front page and might instead land on a bottle page. We didn’t even consider this, and it turns out that most of our traffic comes from organic search and lands on a bottle page. I’m sure that most people who land on this page say, “What the hell does this site do and why is it so ugly?” We should have included some descriptive text on the bottle page so people would at least be able to learn more about Cellarspot.
Problem 3: Understand Your Demographic
As much as we thought we understood our demographic, we didn’t; we were too general. For example, we said that our demographic was “wine lovers.” What does that mean? How old are they? Are they computer savvy? What background do the come from? Why are they going to be using our site? These are questions that we should have answered better. If I could do it again, I would build the site for young Web 2.0ers and not so much for older wine lovers. There are a few reasons for this belief. First, young people are less likely to have lots of wine, making their initial commitment to Cellarspot very small (they don’t have to type in lots of bottles and notes). Second, Web 2.0ers are easier to market to in that viral, internet-based marketing would probably do the trick. Generally you have to spend money on various ad mediums to attract less tech-involved people to the internet. Third, Web 2.0ers are more likely to understand design elements such as tabs, drop down arrows, etc. If we targeted young Web 2.0ers from the beginning, we could have catered the UI more, making the probability of it being used and spread higher.
Problem 4: Know Your Use Cases
We should have spent more time thinking about use cases, which go hand-and-hand with understanding your demographic. When a user is on page X, what are they looking for? Why are they on this page? What is the main thing they are trying to accomplish? By truly understanding use cases, you are more likely to create a site or feature that will be used. Don’t try to figure out these use cases on your own either. Ask questions to people that might be using your site at some point. I did tons of research for Cellarspot, where I spoke with young and old wine lovers about how they would use the site. I did a poor job of synthesizing those thoughts and understanding Cellarspot’s use cases.
Problem 5: Make Economic Decisions
I spent a lot of money on a rack-mountable Dell server thinking (knowing) that Cellarspot would be successful. I also spent (and still spend) too much money colocating that server, although now the server is actually being used by lots of other sites, including this blog. Start small with hosting and scale your hosting options as demand rises. Start with a standard web host or Amazon EC2 and buy your own servers later only if you have to. Don’t get me wrong, buying my own monster rack-mount and colocating it in a data center was awesome, but it’s absolutely not economic. Here are some bonus pictures of the server and data center:
![]()
Tony, our network admin, hanging out in the data center.
It Doesn’t Matter What You Think; It Matters What Your Users Think
While rereading my post before publishing, I realized that I say “I think blah” a lot. This made me remember the words of a former professor of mine, John Castle. You can make claims about what your users will think, but you have no way of validating those claims unless you actually speak to your (potential) users. Prior to making a product, do some research. Talk to some people in your demographic. Ask them what they want in a product and how they would use that product. It doesn’t matter what you think; it matters what your demographic thinks. The best way to know what your demographic thinks is to interview them and find out for yourself.
Cellarspot was a failed business but not a failed experience. I learned an insane amount from pursuing Cellarspot, and to this day most of my interviews involve Cellarspot. I don’t regret anything about it at all, but I wish I had the time and motivation to launch a sweeter, more badass Cellarspot. Try your best to launch an awesome product, and make sure you learn as much as you can from the launch. In my case, the experience gained from launching a product greatly outweighed all other aspects of the product, especially the (negative) cash flow
6 commentsThe Importance of Asking Questions
I’ve always been the type of person that asks a lot of questions. I used to be very weary of asking questions in the work place, though, because I was scared of annoying my coworkers/superiors. A lot of times I would hold back if I was worried a certain question would be better unsaid. I was especially careful when I worked in e-marketing at KB Home the summer after my sophomore year, because the office politics there were strange. The Art of Project Management, a book Matt recommended to me, has really given me a new perspective on asking questions and the benefits of doing so.
Another motivation behind this post came from my family’s Hanukkah party last night, where I spoke with lots of family and friends about what to do next year. I’m trying to decide between an engineering internship with Google in Shanghai and a full-time PM position with Redfin. I think there are a few different scenarios where the usefulness of questions really shines:
Your boss tells you to do something
It’s usually the case that your boss is busier than you, especially when you’re interning. It’s also usually the case that when your boss assigns something to you, he (or she) will accidentally leave out details because he is in a rush or he has his mind elsewhere. Naturally, you should ask questions to get that missing detail out of your boss to avoid not fully meeting his requirements. It usually comes down to one choice: either ask questions to clarify the problem or risk misunderstanding some portion of the problem. Depending on the context, you might be able to refine the problem without nagging your boss, but I think asking questions and potentially being annoying is much more important than working towards the wrong goals. I know if I were a boss, I would rather have the people I manage take up a little more of my time to understand the problem in its full than have them spend weeks or even months with the wrong goals in mind. (Hopefully I’ll never be a boss that just tells people what to do — I’d rather work alongside those whom I manage.)
You and your colleagues are brainstorming
Whether it be brainstorming the solution to a technical problem, the solution to a dilemma (such as where to work), or the way in which a certain product should function, it’s often the case that the people around you have opinions. Asking questions in these cases does a number of things:
First, questions get people talking. In my experience, more people are introverted than extroverted, and questions will get the introverts to voice their opinions. With more spoken opinions comes more likeliness that synthesis of those opinions will lead to a positive conclusion.
Second, answers to questions provide a new perspective for everyone listening. It’s often the case that the people you associate yourself with are as smart or smarter than you, and it’s often the case that they see things slightly differently than you do. Answers to questions can solidify your opinions if your colleagues’ perspectives are in line with your thinking. Answers can also make you realize that you’re thinking about things incorrectly if your colleagues’ perspectives don’t line up with your thinking. I believe it’s important to realize that these new perspectives can often times be insanely valuable.
A friend of mine once said that the job of a CEO is to synthesize, decide, and delegate. I wanted to capture this process in a little diagram to show how questions fit in:
Perhaps the most important thing to realize here is that the more synthesized information you have, the more concrete your decision will be. That’s not to say that synthesizing information is easy — I think that the process of synthesizing information deserves a lot of explanation that should perhaps be discussed in a later post. I would also argue that questions are one of the most important aspect of synthesized information, because answers to questions open up the opportunity to have lots of different experiences, readings, and other things coming from different people. Also, synthesizing and deciding are common tasks in challenging jobs, so the above diagram doesn’t necessarily only apply to CEOs.
So, don’t let yourself get intimidated about asking questions in the office. If someone gets annoyed, then tell them that you’re just trying to make sure you have a grasp on the situation. Also tell them that they’re not helping you synthesize. It’ll be awkward and funny at the same time. With all jokes aside, though, questions are super important and should be taken seriously. Try to ask good, concise questions, and the answers will only help. In fact, they’ll probably help a lot.
Update: Bo Bennett agrees.
2 commentsSpeaking of Helping People, Presenting helpd.org
I’ve had an idea for a long time to create an anonymous forum for people to post little ways that they’ve helped out. This idea was mostly inspired by those insurance commercials where someone will do something nice or courteous and another person will observe the act. Then the observer will also do something nice or courteous, and the chain contains.
After thinking a lot last night about jobs and helping out, I decided to make my idea a reality. I contacted a friend of mine who I met at the Google APM batch day, Eric Fisher, to see if he was interested in whipping up a quick layout. I’m absolutely awful at making pretty layouts, so I try to delegate as much as possible. Anyway, I sent Eric an email with a quick description of what the plans are. He sent a reply about 90 minutes later with a link. Eric is a magician. He managed the code a beautiful, functional, AJAX-enabled site in 90 minutes. How did this guy not get hired by Google? Thanks, Eric!
Eric zipped up the source and sent it my way along with a SQL dump. I spent about an hour changing a few things, adding a captcha, and getting it setup on my web server.
I present to you helpd.org, a place where you can make anonymous posts about ways you’ve helped out. Helpd is pretty basic at this point, and my plan is to greatly expand it if people find it interesting. I have a few thoughts in mind: RSS feed, pagination, browsing capabilities, voting systems, categories, community aspects, etc.
Go take a look at the site, make a post, and tell your friends. I think it’d be really cool if this site took off, and my plan is to give all the proceeds to Wikipedia and Craigslist.
4 commentsWhat does one do after college?
It seems like we all have a few options: pursue something that makes us happy, pursue something that makes others happy, pursue something that should be pursued by someone of our academic status (finance majors work for financial companies, cs majors work for cs companies, etc), or just don’t pursue anything at all. I’m definitely not going to do the latter, but what about the three former options? Is it selfish to pursue something that makes you happy but doesn’t help others? Is it dangerous to pursue something that doesn’t make you happy but makes others happy? Is it foolish to not pursue something that someone like you should pursue? These are the questions that I’m trying to answer right now.
I would like to put myself in a position where my work directly helps someone else. I would like to put myself in a position where I love my work. I would like to put myself in a position where my technical and leadership skills will be challenged. How does a computer scientist truly help those that need help? I think it’s relatively easy for a computer scientist to find a job after college that they enjoy and that stretches their thinking (e.g. Redfin or Google), but what about helping others? Is it good enough to help your coworkers, family, and friends, or do you have to do more?
I asked my 82-year-old grandpa these questions when I saw him over Thanksgiving break. He started his life as a weapons engineer, where his job was to manufacture weapons to kill the most amount of people for the least amount of manufacturing costs. He later became a sociology lecturer at Chapel Hill and a guardian ad litem once he realized how his weapons work was helping people. I asked him, “Grandpa, how do you really make a difference and help people?” His response was, “I don’t know, but I think asking yourself that question is the first step.”
I don’t know the answers to these questions either, but the hope of this post is to get underclassmen college students thinking. Eventually you’ll be faced with the decision, just like I am now, to start your post-college life, and my only hope is that you decide to do something that solves a true problem, that helps other people in a real way. I also hope that you enjoy what you do and are challenged to become a better/smarter/etc person.
Now max out the volume on your computer, click the “play” button on this YouTube video, and close your eyes. It makes you forget about everything else, huh? What a wonderful song. “Hide And Seek” by iMogen Heap
6 commentsWar Story: Google APM Interviews
I have a few friends that work at Google. Prior to talking with Sierra and Jack about Google, I was definitely a startup guy. I’ve had an awesome experience at Redfin, and I even made a long post about why I prefer startups. After speaking with Sierra and Jack, I got the impression that Google was very much a bottoms-up organization, which had a lot of appeal. I want to make sure that the place I work gives me lots of say, lots of creative control, and lots of responsibility, and I think Google definitely would. Sierra and Jack convinced me that I should give Google a shot, so I did. Oh, and I’m looking to be a PM (Google calls them APMs). I sent in my resume through the University of Washington Computer Science and Engineering Affiliates Program and was asked for two phone screens a week or so later.
Phone Screens
My first phone screen was with an APM who mostly asked me about my wine website. He asked me business objective-related questions and told me that the Cellarspot UI wasn’t that bad. I didn’t agree with him.
I thought the first phone screen went well. The next phone screen was with a PM who grinded me with awesome technical challenges.
I thought this interview went OK, but it definitely could have gone better. I heard back about a week later that Google wanted to fly me down for a full-paid weekend. Awesome!
Google Batch Weekend
The weekend started off with a paid flight from Seattle to San Francisco and a paid taxi ride from SFO to my swankster-elite hotel. I felt very much at home. I arrived on a Thursday evening and saw some Berkeley friends that night. The next day was Google day. We were driven in a BALLER Google shuttle from the city to Mountain View to start a big long day of interviews and campus tours.
I had three interviews in the morning, then lunch, then a campus tour, then two more interviews.
I was generally very impressed with the interview process. I got questions asking about my personality, pondering my technical ability, checking my HCI background (of which I have none), and seeing how I would go about spec-ing various products. The most surprising piece of the interview process was that I was never asked about my leadership abilities. PMs need to do three things: 1) understand business requirements, 2) make awesome products with those business requirements in mind, and 3) lead a team. I would argue that being a leader is the most important piece of a PM, but maybe that’s because I have a startup bias. Maybe larger companies like Google have more process and structure so that developers will just follow the PMs spec. I was surprised my leadership wasn’t tested, but maybe that’s not something that you have to have as an entry-level APM at Google.
The campus itself was absolutely stunning. The food was exquisite, the perks were unbelievable (tons of free food, tons of free drinks, and MUCH more), and the wine was flowing (not really). Google would definitely be an unbelievable place to work.
After interviews, we went to the Fog City Diner, which was super awesome. We got to sit down with PMs and APMs and talk about whatever we wanted to talk about. I took this opportunity to ask tons of questions and probably annoyed everyone around me. Marissa Mayer also showed up and talked to each table for a few minutes. It was nice of her to make a scene and tell some cool stories.
Saturday was scavenger hunt day and karaoke night. It was possibly one of the funnest/best days of my life. We ran around the city for six hours taking embarrassing pictures while doing embarrassing things. Such things include propose to a stranger, get cuffed by a cop, run up hills, roll down streets, get in bed with a couple you don’t know, sing to a couple, get a makeover, etc. I, having very little shame, went to town on this hunt and my team won!
That night was karaoke night, and man was it awesome. I love karaoke, and the my colleagues were absolute rock stars. Eric, Adam, Tom, Jayant, Taj, Josh, and everyone else were just letting loose and having a killer time. Drinks on Google, of course.
I got breakfast with a few more friends Sunday morning and flew home that afternoon. I found out a few days later that I didn’t get the job.
If you’re interviewing with Google, prepare for an awesome time, an awesome company, awesome people (both candidates and Googlers), awesome food, and a super competitive experience. Only three of the 12 candidates moved on in my group, and all of us were ultra qualified. I’m sad that I didn’t get the job, but I had such a wonderful weekend anyway. It’s all good.
Bonus story: Glenn, the Redfin CEO, apparently heard the Google rejection news from my boss Matt. He saw me walking in the halls, snuck up on me, put his arm around me and while walking beside me said, “I heard the good news, dude!” Haha.
7 commentsBlogging Analytics
Two absolutely must-have blogging analytics are Google Analytics and FeedBurner. FeedBurner lets you know how many RSS subscribers you have, and Google Analytics gives you a bunch of awesome stats about your website in general. For example, you can know the keywords by which readers reached you via organic search, the amount of time readers spend on your site, unique visitor counts, hit counts, etc. Google Analytics is super easy to install, so there’s really no reason not to have it.
FeedBurner is also super easy to setup, but there are a few use cases that require some technical fiddling:
What if you need to change your feed URL in the future and you’re using FeedBurner’s URL?
When you sign up with FeedBurner, they’ll give you a feed of the form feeds.feedburner.com/some_feed_name. If you link your users to this feed, then you’ve lost all control over the whereabouts of your feed. Users will start adding that feed to their readers, and you won’t be able to redirect them if necessary. FeedBurner offers a service called MyBrand that allows you to create your own host (e.g. feeds.example.com) with a CNAME record such that users will subscribe to feeds.example.com/some_feed_name and will actually be reading from feeds.feedburner.com/some_feed_name. This means that you have control over the whereabouts of your feed. FeedBurner has a very nice tutorial on how to set this up.
If you already have a bunch of subscribers, then how will they be redirected to a FeedBurner feed?
You can make an Apache Rewrite rule that forwards your old feed URL (probably example.com/feed) to the new FeedBurner URL unless the user agent is FeedBurner. Take a look at this post for more info.
Here’s a little diagram I whipped up to describe what happens when you’re running MyBrand and Apache rewrites:
Again, Google Analytics is cake to setup. FeedBurner by itself is also cake, but the two cases mentioned above do require some fiddling. Go install both of these if you haven’t already!
2 commentsBeautify Your Permalinks in WordPress
WordPress allows posts to have pretty permalinks, but they don’t work right out of the box. Permalinks of this form perform much better in search engines. I had to fiddle with some Unix permissions and some Apache configs to get them working correctly, so I thought I’d share my experience. While working through this, I commonly got 404 and 403 errors when accessing my blog, so be careful when applying these settings.
Step 1: Apache
Apache needs to be configured correctly. The following code needs to either be put in your virtual host file or in the main Apache config file (apache2.conf in Ubuntu and httpd.conf in others).
<Directory "/your/htdocs/directory">
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo
Order deny,allow
Allow from all
</Directory>
Step 2: Unix Permissions
Eventually you’re going to have to change some options in the WordPress admin panel, but some permissions need to be setup first. When you change your permalink structure, WordPress is going to write to .htaccess in your WordPress installation directory. This means that this file needs to be world writable before WordPress tries to write it. Run the following commands in a shell to make sure .htaccess has the right permissions:
cd /your/wordpress/base
touch .htaccess
chmod 666 .htaccess
Don’t forget to sudo if you’re in Ubuntu.
Step 3: WordPress Options
The last step is to change some options in the WordPress admin panel. Navigate to the “Options” -> “Permalinks” tab and select the option that looks like “http://www.yourdomain.com/2007/12/11/sample-post/”;
After fiddling with WordPress, you should be good to go! Shoot me some comments if you run into any problems.
2 commentsMake Code in WordPress Awesome
If you plan to show your code in a WordPress blog, then you absolutely have to get nextthing.org’s plugin. The plugin supports different languages as well as external file includes and downloading. It’s pretty awesome. Check it out:
public class Test {
public static void main(String[] args) {
System.out.println("test");
}
}
Download this code: /code/Test.java
or
#!/bin/bash
echo "pretty sweet, huh?";








