The more crowded the restaurant the better the food

Or at least you would think. Ajay and I got into that discussion today as we were trying to decide which Taqueria to go to near my Dad's South San Francisco pad. We ended up choosing La Taqueria Menudo thanks to Yelp.

But as we were walking the streets we passed by several empty spots and a few more crowded places. We immediately casted off the empty spots as must-suck's and kept our eye open for places with a crowd. After a second though, I was a little hesitant about my logic. 

I started to recall experiences where a place was super-hyped, filled with lots of people, but I was a little dissappointed by the food. So I began to think to myself, how good of a predictor is crowdedness for the quality of food at a restaurant.

From my research (aka digging through memories of food experiences), I think that usually when I get a great meal the place is pretty packed. I've had experiences in spots where I've had to wait long lines and ended up with not-super-impressive food, but usually something made up for it like the story behind the place, the decor, or the location. The food, though, was never bad. I would just be dissappointed because I expected better.

However... on the other hand of that. I definitely can recall eating crappy food at empty places. Thinking to myself, "ah yeah that's a gem." But turns out it wouldn't be a gem... just a poorly maintained space. 

I think in general the following things are true (in general!):

- When you find yourself eating great food, you probably have a good amount of company.

- When you find yourself eating alone, the food is probably not going to be great and you need to find a friend.

TIL What a Pump and Dump is

I was reading Hacker News a couple days back and saw this post from a guy that he was being pushed stock for a video company that was completely illegitimate. 

TL;DR the company claims that they will help stream HD videos to devices with slower internet connections (e.g. a mobile phone) by using their special software which reduces the size of a currently compressed video to around 10x less. And the guy who wrote the post, took one of their sample videos on their website and realized they just used simple encoding and slowed the frame rate of the video from normal 24/30 fps to about 6 fps...

So this guy was seeing the company, Raystream, have it's penny stock shoot up several fold and had no idea why. Well my friends... it turns out they have a name for that sort of thing: a pump and dump.

Admittedly I don't really have a great handle of exactly what it is and how it works, since everything I learned about a pump and dump I learned from watching the videos here, but here is what I've gathered.

Organizations with newsletters, or just random people, with lots of money and no morals, will spend millions of dollars working to publicize a stock thats worth a few cents. They will get sales people to make calls, post ads on financial newsletters, and basically pull all the stops so they can get a huge volume of this cheap (and completely worthless stock) sold and raise the prices.

Usually the price will spike up for about 3 days (that's usually the max it will last) sometimes from 2 cents to 2 dollars (for those who can't do math that's a 10,000% increase btw) and then come crashing down. It sucks for the people who got in late, but is hugely successful for those who got in early (the promoters and some other lucky few) and those who were able to by the few shorts available.

So just watch out for those. But if you see one of these pump and dump's happening, you think it's still going to go up, and you're willing to take the risk, you could make a lot of money. But if you time it wrong... you're toast.

 

 

 

Any smart person can code: How to go from a manual task, to an automated program

My goal in this post is to give to any programmer who has a friend that wants to learn to code, or any person who wants to teach themselves to code, the proper tools/perspective to take the first step.

In my opinion, every smart person has the ability to code. It's just a matter of doing 2 things: learning what kind of things are possible with code and then learn the syntax to execute those things. That being said, that can still be a tremendous hurdle. Though overcoming the syntactical barrier is probably easiest, because it has become a simple matter of Googling something like:

How to split a string in python

Or basically how do I do x task in y language.

The bigger challenge is figuring out what x task needs to be if you're unfamiliar with programming and don't know what it can do. Now my proposition is that the challenge is not as big as it seems, and there is a simple way to over come it. All you have to do is tell the person to be so overly consious of the actions they take when completing a task, that they would be able to write down each step, give it to 1000 idiots, and have said idiots complete the task with a 100% success rate.

Tell them to dig deep and remember what every good science teacher they hard harked on: create a flawless and fool-proof procedure for your experiment (or task rather). Being able to do this, helps you overcome that first barrier of figuring out what procedures code can do and that you can Google the syntax for.

Let me show you an example. Let's figure out how we would do this for a task that's trivial for experienced programmers, but not-so-trivial for a beginner. 

Task: given a text file with student scores, figure out the final letter grade each student deserves.

Here's the text file:

Now let's just think out loud, not as programmers, but as humans. How would we do this? We know already that we need to first open the file, figure out which scores belong to which kid, add those scores up, find the average, then based off that average assign the kid a letter grade.

Now we can break this down even further.

  1. Open a text file called student_scores.txt

  2. Read the first line of text for the first kid

  3. Figure out the name of the first kid is Joe

  4. Add every test score of Joe's up, and divide it by the total number of test scores

  5. Take that number and assign it a letter grade

  6. Repeat steps 3 - 5 for Kim, Alex, and Sam.

And to break it down further so that it comes closer and closer to pseudo-code and something Google-able, you have to keep asking "How do you do step x" until you can't be any more specific. For instance I'd ask for step 3: how do you know the kid in the line is Joe? For step 4: How do you know what in that line is a test score? For step 5: How do you know what letter grade to assign it? For step 6: How do you repeat it for the three other kids?

The answers will get you a more broken down procedure like this:

  1. Open a text file called student_scores.txt

  2. Read the first line of text for the first kid

  3. Take the word that comes before the ":" (colon) character and that is the name of the first kid.

  4 a. Take the sum of all the numbers separated by commas

  4 b. Divide that sum by the total numbers separated by commas

  5 a. If that average score is greater than or equal to 90, assign the person an "A"

  5 b. Otherwise, if the score is greater than or equal to 80, assign the person a "B"

  5 c. Otherwise ...etc...

  6 a. Skip the next line in the text file.

  6 b. Starting with the line after that, repeat steps 3 through 5.

  7. Repeat step 6 until there are no more lines in the text file.

Now it just takes a little more guidance and a little more asking "how" to turn all that into perfectly good pseudo-code that a noob can go Google and find that syntax for the language they want to use.

And since every smart person is going to be able to write a good scientific procedure, every smart person is going to be able to get the hang of thinking through tasks like a coder, which means every smart person is going to be able to write pseudo-code. And since they are smart, they will also be able to figure out how to Google that to figure out exactly how to do it in their language :). There, problem solved. Now go help all your friends become programmers!

The Google OAuth Playground - finally a glimpse of hope for the OAuth nightmare

I'm not sure about everyone, but I personally have a lot of issues with OAuth based authentication in API's, especially when there are no high level libraries (which is true for Tumblr). And I know from first hand experience that dealing with Tumblr's API, where they tell you auth is OAuth based and that's about all, it gets a little confusing when you don't understand exactly how everything works. My experience with authing with Facebook and LinkedIn have been pretty good since they will walk you through how to do it and even add some abstraction for OAuth in their libraries.

But for all the slightly-confused devs out there who aren't that familiar with OAuth, Google has launched an OAuth Playground. Here you can play around with calling for authorization tokens, access tokens, request tokens, whatever other tokens, and all for whatever API you want. They have some pre-loaded ones, but you can copy paste your own in. This will let you learn through experience how the whole OAuth process works (with all the back and forth calling/requesting) and let you do some test runs on whichever API you plan on using for your next project!

I am definitely going to use this for whenever I have my next project that requires OAuth authentication. Since I am much more of a learn-by-doing than learn-by-reading, I think this will help educate me for all future projects too.

Here is the article from Hacker News where I found the OAuth playground: Google Launches OAuth 2.0 Playground.

Be extremely attentive to your first users

This post is mostly a reflection of the great points from this post: It’s the CEO’s job to email the first 1000 signups.

I'm going to try to tell you the points that I got most from that post from memory, and try to avoid looking back on it. The reason being that I would assume the points that resonated the most with me, I would remember.

So the post highlights two major rules when sending your emails out to your 1000 signups:

  1. Actually do it manually.
  2. Don't be pushy.

The point of doing it manually is that you get the opportunity to personalize each email and you completely avoid the probability of messing up the first/last name in some mass mailing thing. The first 1000 or so sign ups are going to be some of the most important customers (reasons I'll get to later), and so it's crucial that you treat them as such and devote personal time to each one.

The point of not being pushy really has to do with, respect the person's time because they're doing you a favor for signing up. Don't make the email long and boring to read, and don't push any surveys on to the person. Say "Hi" and let them know you're available for help/suggestions. That's that. 

And the biggest reason, which I gleaned from the post, for sticking to these rules in your email is that your biggest evangalists/fans will probably come from your first 1000 or so sign ups. So use the email as an opportunity to both identify those fan boy/girls and to not piss any of them off. The ones who respond with suggestions, questions, and excitement, are the ones you should keep track of, pay special attention to, and follow up with.

I imagine there are several startups which were able to really gain a lot of value and traction from the amount of passion the first couple evangalizing customers had. One that immediately comes to mind is Mint.com's success with a small marketing budget. They were able to really get their first customers involved, keep them happy/excited, and really use that to their advantage in growing so quickly. Many startups have probably been able to get some virality from this and it's something I look to do on my next startup.

What the Node

I personally don't see what all the fuss is about when it comes to Node. I admit it's a pretty cool concept, and from looking at some benchmarks it is admittedly pretty fast as well. But are the performance beneftits so significant that it can really make or break a product?

I recently wrote a post about Why you should never worry about scalability (at least in the beginning) which referenced the Hustler's Manifesto. This post falls along the same lines in the realization that you should really spend your time focusing on building a great product that people find valuable (hopefully enough to give you a buck or so).

Node.js may be a great thing to learn far far down the line, when you begin to think about handling loads of millions and millions of people at the time. But most of the Node.js hype I hear is not from developers planning on working at big companies, or developers already working at those big companies, but rather potential startup founders/technical founders. Hm, now that's a little odd to me.

I agree that thinking ahead is great and that sometimes it's fun to try new things as a technologist (I find myself falling in this bucket), but startup founders and technologists should be more hyped about what the big markets to attack or what problems they just heard some consumers crying about. I think that Node is cool and should be looked at, but I just think that there is too much buzz right now in porportion to how valuable it is to the crowd talking about it.

Why you should never worry about scalability (in the beginning)

I really began consiouly thinking about my own nerdy process after reading The Hustler's Manifesto  - TLDR; 1) don't test all your code, 2) stop being such a nerd, 3) take ownership of all your features.

I realized that I easily fell into the traps of 2 & 3 of the manifesto in that (2) even though I'm not the smartest nor most experienced nerd, I love figuring out what's best practice, what little things I can do to tweak to make things more efficient, and generally geeking out. And (3) thinking about cool other features to code up, because I love coding, rather than figuring out how valuable the current implented features are by getting measurable metrics.

I talked to fellow nerd Arthur Chang (Fanvibe/BeRecruited) about it, we discussed it, and I concluded that you should never worry about scalability (at least not in the beginning). It's a waste of time.

Well... actually that line is a little sensationalized. What I really mean is it is usually more harmful than helpful to worry about the little nerdy things in the beginning. The reason is because most problems that you will try to tackle and find a solution for, will only present themselves as real problems if you suddenly get a lot of traction and scale/efficiency really begins to make a difference.

And in the case that things break.. well then you are probably in a good position. With those types of problems, you can probably go out and raise money. And with that money you can go out and hire people to work out those problems while you continue to focus on the vision of your product!

So basically, when the nerd within begins to spend that extra second worrying about efficiency remember that your time is better spent working on getting your product built and distributed. Because most likely there will never even be a sign of a problem - in which case if you spent time working on solving that problem you wasted your time - but if there is a problem then you are ready to raise money to find someone to spend the time solving that problem.

There are definitely plenty of exceptions to this, but I feel that generally following this works. You should definitely make sure there are no gaping wholes in what you're building but don't worry too much about it! Though... do what I say and not as I do. As I will probably fall into this trap.

How an hour of trolling helped me get over 3,000 users

Over 2,000 3,000 people have downloaded a chrome extension I built in less than an hour. I do it for the lulz.

I'm both a little upset and super happy about this right meow. A little upset because usually after putting a lot more effort in coming up with an ambitious idea and a lot more time into building it, I get either similar or worse results. Super happy, because I'm incredibly delighted at how many people I've made smile with my Facebook Me-Gusta Chrome Extension!

It all started with my love for /r/f7u12. And one afternoon, I searched 'Me gusta' on Facebook just for the heck of it and came up with this Facebook page: Change the "like" button to "Me Gusta" for a day.

As soon as I saw this, I LOFLMAO'd (lulzd on the floor laughing my arse off). I immediately pictured what it would be like and lulz'd again. 

And then... I realized... Wait. I can make this happen. And that's when pigs began to fly.

I used what I learned from building a really basic chrome extension to make my dreams into reality. A little over an hour later, a star was born.

Anyone who downloaded my chrome extension, could now navigate to Facebook and see all the "Like" buttons turn into a Me Gusta face with the text "Me Gusta" next to it!! TROLOLOL. :).

I really only built it for my own amusement (and believe me, I was amused) and shared it with just some friends on Facebook. I let it just simmer for about a month and then I checked in on my extension and WOAH.


The WOAH in the analytics

That big spike you see is a result of someone posting a screenshot on /r/funny and someone noticed their "Like" button actually said "Me Gusta." The author of the post (thanks NotANoveltyUser) was asked how s/he did it and they posted the url to my extension!! That spike in users also got my extension featured on the "Fun" Chrome extension section (though not above the fold).

 

The reddit post, and subsequent comment

And the rest is history :). So basically it turns out that if you build something for fun or personal fulfillment, you sometimes end up with a really cool result. And the moral of the story is, if you do it for the lulz, people will lulz with you.

How Paul Graham's essay on wealth got me to learn how to code, then got me an interview with the man himself

My sister went to Wharton and she became a banker, and when I began my first year there that's what I thought I was going to be too. Albeit, my sister has since come to her senses and now is out of that game (congrats Linda!).

I thought going into banking would be a pretty safe track for me. I knew I wanted to start a company one day, but I wasn't sure I would be able to if I didn't have any money. At that time, I also had no idea how angel investing or VC money worked so I really thought that putting up my own capital was the only way. My plan was to get into banking, like all the other Whartonintes, get a sizable nest egg, then go and start a kickass company. Boy was I delusional.

But today, I potentially would have been that same delusional future MBA-er if it wasn't for this Paul Graham article - "How to Make Wealth". (BTW since that title is in quotes, does the period go after or before it?).

Well it was really a series of events and the first domino was Ajay getting me to read this essay. Ajay had always been a little more in tune with the tech scene than I was. He constantly tried to get me to read TechCrunch, told me about things like Y Combinator, and sent links my way. It wasn't until one bored hour during Thanksgiving Break of 2010 did I finally give in. 

I read that PG article and, wow, it blew my mind. It was then that I started to think about the possibilities of starting a startup, and how inherently good that would be for the world and for myself. The article is a fairly long read and PG covers a lot from how wealth is not conserved but can be created, how good startups are just 40 years of hard work concentrated into 5, how providing something that people want is wealth, etc etc. 

This really began to shape my philosophy on how the world should work.

After reading that essay, I began reading more essays. After break, I went back to school and heard about several Wharton startups making some big exits and creating a lot of wealth (Milo, InviteMedia, Quidsi). I was bombarded with the perfect storm of startup tech news and success.

And that's when I forced myself to learn how to code and build web apps. During Winter Break, Ajay and I taught ourselves web dev and we built our first couple of apps. Before we knew it, we we got a viral success on CNN/Mashable. And before we knew it, again, we were getting interviewed by the man himself, PG. It's been a roller coaster ride, and it all began with a new found perspective on wealth. 

I highly recommend you read that essay. One of my favorites.