No Business Model? No Problem.

09 April 2012

Facebook’s acquisition of Instagram for $1 billion today reminded me of LinkedIn’s acquisition of Rapportive for around $15 million a couple months back.

Neither product had any revenue, and yet they were both successful. I’ve heard many times before that it doesn’t matter if you don’t know how you’re going to make money from your product. I always thought that was silly; of course you have to keep money in mind! But these deals show that gaining traction and winning users over is absolutely the most important thing in today’s market. It didn’t matter that Instagram had $0 in revenue – what mattered was that their users loved the product, and that there were millions of them. It really is all about the product.

Dear Startups

05 April 2012

So you just created a startup, and you think it’s the best thing ever. Naturally, you want to tell everyone about it. Great! If your product is any good, I’ll probably sign up to check it out. These days, I see a lot of services going email-only for their sign-ups, which is perfectly fine. The problem happens when you start sending me email. Now, I don’t mind getting updates on your progress and finding out about the latest feature, but you’re actually frustrating your users when you get the important things wrong. Here’s what you need to do:

  1. Tell me who you are.

    If I don’t know who you are within 3 seconds of looking at your email, you’re doing it wrong. Either get your email settings right and have your startup’s name in the From field of the email, or put it as the first thing in the subject. I shouldn’t have to read the entire thing just to find out who you are.

  2. Respect my notifications settings.

    Just today, I received an email from a startup for which I clearly indicated in my notification settings that I don’t want any notifications. Letting me control which emails I receive is a must, but it doesn’t mean anything if those settings aren’t taken into account when sending email. This really isn’t that hard.

  3. Always include an unsubscribe link in the footer of your email.

    Make it as easy as possible for your users to unsubscribe. Why would you want to do this? Because if you force your users to stay subscribed by making it too hard for them to unsubscribe, they’ll hate you. You’ll fill up their inboxes with updates they don’t care about, and everyone loses.

All in all, I like getting updates from startups. If I cared enough about your idea to sign up, I’ll care enough to stay up-to-date about your latest successes. Just don’t make your users hate you, and everyone will be happy.

Unplug Yourself

04 April 2012

Programmers know the feeling of being in the zone, when we’re extremely focused and just churning out quality code. The unfortunate reality is that it only takes the smallest interruption to break us out of that zone, and yet most of us don’t actively try to suppress the avenues through which we may be interrupted. If you eliminate those avenues, I promise you that you’ll accomplish a lot more than you usually do. Go ahead, give it a try. For the next couple of hours, put your iPhone in airplane mode, disable your Gmail and Google Voice extensions, and put yourself in a place where there isn’t a lot of foot traffic or distractions. Goodbye, Facebook and Twitter notifications. The only way someone should be able to reach you is by physically tapping you on the shoulder.

You might not have the luxury of being able to do this. Maybe you need to be on call in case your server decides to give you a hard time. In that case, you can still take some major steps to minimize the number of distractions you have when you need to get work done. Surely, your boss won’t be trying to reach you for something important through Facebook or Twitter. Turn off those push notifications. A way that many programmers unplug themselves without doing so explicitly is by working into the wee hours of the night. As everyone around them goes to sleep, there are naturally fewer things to distract them. Why shouldn’t you simulate that environment in the daytime to maximize your productivity? Unplugging yourself can be a bit scary at first, especially if you’re always checking your email in case the next one is about how that the uncle you never knew you had left you a couple million dollars. If you’re anything like me, this exercise will show you that you’re actually constantly in a state of distraction, compulsively pulling out your phone at the slightest buzz. When you don’t let other people dictate where your focus lies, you’ll be surprised by how much you can get done.

Simplicity is King

30 March 2012

I like making things. If I have a problem that I want to fix or just have an interesting idea, I’ll try to build an application. So far, I’ve created the following:

  • WikiLink (Source) - a Python script that provides a fun way to explore Wikipedia by selecting several random links from the current article

  • TigerTalk - a Node.js chat application for Princeton students to talk to each other

  • Web Timer (Source) - a Chrome extension that keeps track of how you spend your time online

  • TigerPass (Under development) - a Ruby on Rails application that keeps Princeton students informed about the social scene and lets them see where their friends are going out to party

Out of all of the above, I spent the most time building TigerTalk. Despite not having a lot of users, I poured hours into making new features and putting in additional functionality like the ability for users to create new rooms and having a dinging noise play whenever a message is received. Why? I thought that the next little feature would somehow convince people to start using the application and that TigerTalk would finally catch on. Boy, was that a dumb idea.

Web Timer, on the other hand, has fared a lot better with a user base of a couple thousand. I use it myself, and it solves a very real problem that I have of losing track of how I spend time online. Now I can see that I use 11.4% of my time on the Web to go on Facebook for an average of 40 minutes and 23 seconds every day. Neat.

I am now a firm believer in building an MVP and showing it to users before devoting hours into a project that might completely go to waste. Sure, you’ll get some experience out of building a system with a ton of features, but you could have spent that time building something that people will actually use. It turns out that keeping your applications simple has a two-fold benefit: it lays naked the core idea behind your application so you can easily tell whether it resonates with users or not, and it helps you avoid sinking too much time into a project that will never take off. It’s important to know how to work hard and battle through hard times, but it’s just as important to know when to quit if something just isn’t working. As long as you keep it simple, your chances of success will be much higher.

Rethinking Settings

29 March 2012

Today, I fixed two problems for my girlfriend involving Gmail:

  1. The Mail app on her iPhone wasn’t fetching mail from her Gmail account and kept complaining about having an incorrect password.
  2. Whenever Gmail fetched emails from her Princeton email address, it stored them in All Mail instead of Inbox.

For the first problem, we stumbled across the solution by accident – we had tried a million different “solutions” suggested on various forums and Google Groups and decided to change her password temporarily so that it didn’t take so long to enter her password into her iPhone every time we tried to link her account. I happened to see that she had 2-step verification enabled when we went to her Google Account settings (not her Gmail settings) and asked her to turn it off for the time being to see whether it fixed our problem. It did. It turns out that the Mail app on the iPhone can’t ask for verification codes and so Google generates application-specific passwords for your account.

For the second problem, I went to her Gmail settings and found that she had enabled the option to archive all mail fetched from her school email address. Boom. Problem solved.

Through this experience, I saw Gmail and Google account settings with fresh eyes and realized just how confusing and overwhelming they are for the average user. Gmail has many features, and every feature introduces more settings for the user to manage. Enabling 2-step verification alone forces you to manage 6 more settings! There are three settings for receiving codes (mobile application, backup phone number, printable backup codes), one setting for application-specific passwords, and two advanced settings for clearing the phone info and printable codes and managing trusted computers.

Oh, and you need to go to your Google Account settings to change these settings, even though it’s perfectly understandable why someone would look under Gmail settings. After all, if you’re unable to fetch email from your Gmail account, you would think it’s a problem with Gmail. As for turning off the option to archive all emails fetched from another address, it might be clear to power users that this setting would be located under Accounts > Check mail using POP3, but it wasn’t that clear to my girlfriend.

How can we make settings simple for feature-rich applications like Gmail without hurting the power users? Hiding the advanced settings in order to clearly show the most commonly used ones wouldn’t work because the power users wouldn’t be able to easily manage the advanced settings.

There’s a better way. A similar problem exists for application menus, and Mark Shuttleworth’s HUD offers a simple solution to that problem. Imagine having a similar look-ahead system for applications with a lot of settings. You would type what problem you’re experiencing or what setting you want to change, and the application would parse the query and display the pertinent settings. If you’re a power user who knows exactly what setting you want to change, the auto-complete would save you time by taking you directly to the setting instead of making you click around the settings page. With this system, you can skip the entire step of searching for solutions and know exactly which settings may affect the behavior you’re experiencing. For example, if my girlfriend were to type “iphone gmail incorrect password” into this settings query box, Google would know that 2-step verification could cause problems with using mobile applications and display the setting to add an application-specific password. This would provide a much better experience than searching through settings tabs and countless forums, hoping that the next random suggestion might solve your problem.

Dear Professor

28 March 2012

At Princeton, I have the fortune of studying with some brilliant thinkers who also happen to be great teachers. As a computer science major, I’ve taken mostly technical classes but occasionally dabble in nontechnical ones – one of which inspired this post today. I initially looked forward to taking this course quite a bit, but I’m sorry to say after seven weeks that the course has been a huge disappointment. Conversations with friends and the fact that most students do not pay any attention during class indicate that many others feel the same way.

How did this happen? As a professor, how do you avoid losing the interest of your students and end up having them care only about getting that passing grade? I’d like to answer this question from the perspective of a student and encourage professors to examine themselves to make sure that they’re not disengaging their students.

Please note that my intention is not to attack or embarrass the professor who’s teaching the class described above but to offer insights that all of us can use in the difficult art of teaching. If I come off too harshly, it’s not meant to be taken personally. I’m very blunt about what I think.

  1. Don’t push your ideas as the correct one in a nontechnical subject.

    Many technical subjects have the luxury of addressing questions that have One Correct Answer. Either your formula for calculating the velocity of an object under constant acceleration is right, or it’s wrong. When it comes to topics like leadership, human relationships, and business, there is no single right answer. There are definitely some techniques and practices that have worked better than others in the past, but that doesn’t mean that a solution to a soft problem is correct in the same way that “2 is a prime number” is correct. When you’re always shutting down the ideas of students and pushing yours as the correct one, it’s hard for us to engage in innovative thinking since it seems like only you have the answers. Classes feel like planned sessions in which you dispense your Correct Answers when they should be meaningful discussions in which we talk about the trade-offs of making some decisions over others.

  2. Don’t base the course off of your work unless you are a thought leader in your field and have been recognized as such.

    If you’re going to establish a framework with which to analyze problems in the real world, I want to know that the framework that we’re using is credible. When the assigned reading consists of some articles you’ve written in the past and the subsequent class consists of teaching your framework instead of having any meaningful discussion about the merits and potential flaws of it, I have trouble seeing the value in your ideas. Too often, it feels as if we’re contorting situations or making up nonsense to force your framework to work instead of expanding the framework or admitting that it doesn’t handle every possible case.

    In other words, if you don’t have a Wikipedia article that talks about the significance of your ideas in the field that you’re teaching, you might want to reconsider using your work as the basis for the class. There are only two exceptions to this: either the class was clearly advertised as being based off of your ideas, or you take some time to convince the class of why you think your ideas are valuable and have an open discussion about it. Why would I want to accept your ideas as the most useful ones when no one outside of the class seems to care about them? Ideas have values in their own right, but knowing that others in the field have recognized yours as significant serves as a quality filter and provides validation.

    Note that talking about personal experience is completely different than what I’m talking about. If you want to talk about what worked for you in the past and why you think it’s valuable, great! Just don’t create a framework based on your experience and try to pass it off as something that can be applied to every situation. Forcing your ideas gives the impression that you only have your agenda in mind.

  3. Do not waste your students’ time with pointless exercises that are completely arbitrary.

    Our time is as valuable as yours. Please don’t waste it with meaningless exercises that don’t help anyone. An example of this is guessing how long a company should take in screening candidates when hiring someone. Obviously, this depends on the needs of the company, the role that you’re trying to fill, and many other factors. Needless to say, taking five minutes to call on various students and have them guess the exact time frame that you have in mind benefits no one. It would be much more valuable if you said something like “large companies typically take 6-8 weeks to accomplish this task” and moved on rather than have us play a pointless guessing game.

  4. Do encourage feedback, especially if you’re new to teaching or are trying an unconventional format for your class.

    My professor has actually been pretty good about being open to feedback, which is why I feel comfortable publishing this. For everyone else, if this is your first time teaching or you’re trying something new, please encourage students to email you on how you can improve. It’s painful when you act like you know exactly what you’re doing when it’s clear that you actually don’t. Help us help you.

The State of Mobile Gaming

27 March 2012

I love the games on the App Store. They’re addicting, cheap, and keep me sane on long train rides. As I continually find and install new games, one thing has struck me: these games are incredibly simple.

As someone who used to spend hours playing flash games, I’m used to the short nature of these kinds of games and the instant gratification that they bring. They’re usually centered around high scores (Fruit Ninja, Temple Run), advancing through various levels (Angry Birds), and traditional games with the magic social sauce mixed in (Draw Something, Zynga games).

But there’s a whole other class of games that’s currently being completely neglected. I think most of us can remember hunching over our Gameboys trying to level up our Charmanders (all of you who chose Bulbasaur can suck it) while trying to avoid all the damn Rattatas hiding in the grass. I poured hours and hours into that game, avoiding the wrath of my furious grandma by hiding under the blanket and stifling my excitement when the screen lit up as my Pokemon evolved. And for those of you who were more into catching fish and decorating your homes, I’m sure you remember Animal Crossing. I still have fond memories of hanging my impressive catches in the museum and paying off my ever-increasing debt to that crook Tom Nook. I even miss that stupid mole that showed up to yell at you every time you quit your game without saving.

As great as the single player gameplay was for these games, there was nothing like playing with friends. Pitting your beloved team of Pokemon against your friends’ was probably more stressful than is healthy for a growing kid. And in Animal Crossing, I loved having people visit my town and then returning the visits to see how they decorated their towns. What good was planting all those flowers and fruit trees if you couldn’t even show it off? The social aspect took these games to a whole new level.

Smartphones have made everyone and their grandmother into a casual gamer, and I’m honestly disappointed that companies like Nintendo have not taken advantage of that. Imagine playing Pokemon or Animal Crossing on a smartphone with the social aspects baked in and fully integrated with the game. In Pokemon, you would be able to trade your Pokemon with whomever you wanted and go on co-op adventures with friends. In Animal Crossing, you could live with your friends in a virtual home and work on paying off your rent together. These are just simple ideas for games that already exist; I can only imagine what innovative concepts developers can cook up. The possibilities are endless.

Being Wrong

26 March 2012

Every day, I go on Hacker News and various blogs to stay up-to-date with the latest tech news and cool projects. After a few months of doing this, I’ve noticed something very scary. I can no longer think for myself.

Replace Hacker News with wherever you get your interesting, thought-provoking content, and many of you will recognize my ritual as your own:

  1. Go on Hacker News
  2. Click on an item
  3. Read what some guy thinks
  4. Go to the comments
  5. Read what a lot of other people think

During this process, I regularly fail to ask an important question between steps 3 and 4: What the hell do I think about what I just read? Too often, I jump straight from the original content to the comments and allow myself to be bombarded with every viewpoint possible. I leave myself no time for reflection, no time to think about the issues raised, no opportunity to develop my own opinion. It’s not that I don’t hold any opinions at all; I’ll read through all the different responses and adopt the one that makes the most sense to me. But that’s completely different from coming up with that opinion all by myself through critical analysis. It’s gotten bad enough that when I engage in conversation about something I’ve already read about, I find myself just parroting what someone else said instead of offering anything original.

Why do I succumb to this? I’m simply too afraid of being wrong. It’s much easier to adopt someone else’s view and point your finger at them if you end up being wrong rather than come up with your own interpretation and take full responsibility for what you think and say. This fear of being wrong has started manifesting itself in other aspects of my life and I find myself always agreeing with someone with a persuasive argument rather than being that someone with a persuasive argument. Obviously, no one wants to look like an idiot; but when the fear of being wrong starts to cripple your development and ability to formulate insightful thoughts, it’s time to do something about it.

If you see some of yourself in what I’ve written above, join me in taking a couple minutes between reading content and reading others’ opinions on it in order to reflect on the piece yourself. Do you agree with what you just read? Why or why not? Let’s bring something new to the table.