Skip to content

Coursework vs. Production code

22-Feb-12

I’ve been speaking to a number of first-time technical entrepreneurs recently who are starting businesses for the first time. One question I often get is regarding the difficulty involved in writing production code. Given that probably a lot of them (you) have similar experience to what I did, I thought I’d share some reflections I had about the differences between academic work and production coding.

Programming at a startup is, in general, much easier than the work you’ve already done in school.

I’m assuming a lot of things when I say this. Naturally, I’m assuming that you challenged yourself while you were in school. You took some of the hard classes and didn’t just coast through the easy ones [1]. You completed all of your assignments (likely taking multiple late days, but hey, finishing is finishing :P ).

In school you work on problems that get progressively harder. By the time you reach the upper division classes, you working out non-trivial proofs about algorithms that took you multiple lectures to understand. Even if you’re not in a theory track, you’ll be expected to grok papers about the newest research in the field. Not to mention, (since you’re a CS major) you’re probably taking 3-4 of these classes at the same time. [2]

In my opinion, this kind of pencil pushing is way harder than coding! It is very difficult to implement, say, a non-trivial variation on a maximal matching algorithm for bipartite graphs from your brain, with nothing but pencil and paper, on an exam. You don’t even know if you can do the problem or not, let alone write anything down on the paper! If you fudge a “clever hack”, that’s zero credit. Because it’s not clever, it’s just plain wrong.

The real world is not quite so unforgiving. For one, you will almost never a problem in software that you can do nothing about. If you’re stumped on a tough architecture decision, just look up standard practice on Wikipedia. Phone a friend. Take a walk around the neighborhood and then decide that it’s not really a problem that you have to do anything about. It’s software so there has to be a way to get it done.

Unlike the code you write in school, everything you write in production has TONS of bugs in it.

When I was in college, we had unit tests given to us for everything we wrote. For CS140 – Operating Systems (by the way, this was perhaps my favorite class at Stanford, every CS major should take it), our team would have gotten absolutely destroyed if those unit tests did not exist. But because they did, we had a notion of progress. We’d make the tests pass, turn the project in, and call it a night (or early morning). I’d generally know if I did a good job on the programming or not before I had turned in my assignment. Once I’d turned it in, I’d never have to look at it again.

My analogy for unit tests is that they’re like monkey cages. Programmers (myself definitely included) are the monkeys. If left to their own devices, they’ll chaotically bang on their keyboards, and create a total mess for themselves and all of the other monkeys. Sooner or later it’ll be Planet of the Apes. The cages provide structure and prevent the monkeys from making a total mess of things.

In the code I write now, I assume that nothing works unless I’ve tested it and it works. Even then, it still probably doesn’t work, because I probably wrote the test incorrectly. If I find what looks like a JVM error – hold your horses, it’s not a JVM error, you screwed up – I’ll assume that there’s something wrong in my own code. If I didn’t think like this I would probably not find any bugs.

You spend almost as much time getting the requirements correct as you spend building the damn thing.

One of my favorite classes (other than Operating Systems) that I took at Stanford was CS155 – Computer and Network Security taught by John Mitchell and Dan Boneh. When I took it, the class had the Operating Systems class (CS140) was a prerequisite. Since I was just a sophomore at the time, I hadn’t taken Operating Systems, but after sitting in the first lecture found the class so interesting that I signed up for it anyway. [3]

I strongly remember the second project, because that project just about killed me and my partner. In the project, we were asked to implement traceroute, in C. Implementing traceroute itself is challenging enough for a class of students who haven’t taken networking. But we were additionally asked to implement highly non-trivial variants of traceroute. These included firewalking traceroute (if you don’t know what that is don’t worry, it burns just about as hard as it sounds) and ghost traceroute (this was actually illegal, so we were only allowed to test in a small lab provided to us on campus).

If this weren’t hard enough, the documentation left basically the entire assignment ambiguous. To figure out basic information, such as which ICMP headers to send under which circumstances, you’d have to pore through the newsgroup, which contained tons of other confused students and very few actual answers. By the time we had finished the assignment, the newsgroup had something like 3000 posts in it.

My partner (another sophomore) and I read them all. We finished the assignment. Actually, I think we were one of the only teams to finish the assignment because the average score on that assignment was 24/100. By the way, I want to tell you that I attribute our score on that project completely to my partner, who is the best networking engineer that I know. Some people are just that good.

The funny thing about that assignment was that it was actually more spec’d out that anything I have ever written since graduating. Traceroute has an RFC. Also, once the description of the problem had been cemented, we knew exactly what to write. We never had to delete all of our code because the specification changed. No one ever said: “Wait, are you really building traceroute? wtf, actually what I want is a program that draws a bunch of unicorns on the screen!”

Some final thoughts (as usual):

My undergraduate advisor was Mendel Rosenblum. I went to visit him recently, and asked if he had any advice about creating software for the real world. He just told me that he had no advice for me and that I really ought to just figure it out myself. But actually, after thinking about it that is pretty good advice.

 

[1] You can actually do this now, and it infuriates me! From my point of view as an employer I don’t even know if someone really even knows CS, based on the fact that they have a CS degree alone. I’ll save the rant for some other day, though.

[2] There’s one CS major that know who took 7 classes at the same time. I lived in the same dorm with him and never saw him eat a meal outside of his room (however, he did shower – the whole thing about CS majors never showering is just total BS). Some people are just that good. I mean, it’s Stanford, who am I kidding?

[3] The CS program at Stanford doesn’t really enforce prerequisites, so you can take whatever you want if you can handle it. When I was an undergrad, I tended to do this a lot when I was first getting into CS. However, I would definitely not recommend it even if you think that you can. The gist of my point is that taking classes early is hard because you won’t (in general, myself excepted) have good partners. Also, it means that you’ll have to take the lame easy classes later, because they’re required anyway. Trust my co-founder, you don’t want to be learning about induction in CS103 (Mathematical Foundations of Computing) when you’ve already done it in CS161 (Design and Analysis of Algorithms).

  • Share/Bookmark

This is Your Life

21-Feb-12

Image courtesy of http://blended-ideas.blogspot.com/

Today, I had this Switchfoot song stuck in my head. The song is called “This is Your Life”, and the relevant part of the lyrics are as follows:

Yesterday is a kid in the corner
Yesterday is dead and over

This is your life, are you who you want to be
This is your life, are you who you want to be

Naively, the lyrics have a bit of an emo ring to them because they bring up yesterday several times. It’s as if this is the song you’d listen to the day after you’d done something really stupid and embarrassing. The singer is telling you to wake up and get on with your life. Forget about yesterday. If you spend all of your time in yesterday, you won’t be living for today.

Are you who you want to be?

Even though the song never mentions it explicitly, when I play back the lyrics in my head I feel that they also address the future. To me, the artist is challenging the listener. Are you who you want to be? Or rather, if you want to be person X in the future, are you being person X today? If not, what are you waiting for?

There’s this guy that I learned about recently named Demitri Martin. He dropped out of law school in his final year to become a comedian. Since then, he’s done a lot of cool stuff. Well, he realized when he got to law school (full scholarship at NYU, btw) that he hated it. He’d pass by comedy clubs on his way to the law school and would think about trying it. So he dropped out. I’m sure he got deplored by his parents and many of his peers when he did it. But he did it anyway. And we can all get a good laugh because of it. [1]

Don’t wait for tomorrow to be the person you could be today.

 

[1] I feel that in many respects, my experience with entrepreneurship is the same way. For me, my experience with entrepreneurship is just beginning. But being an entrepreneur is where I want to end up. That’s what I want to do with my life. So much for life path.

  • Share/Bookmark

Sleep Hypopnea and Self Introspection

20-Feb-12
"NICO looks at himself" - Wikipedia

image courtesy of wikipedia

 

 

 

 

 

 

 

 

 

 

I got dinner with one of my good friends yesterday. A few months ago, he had joined a sleep study because he was getting very poor sleep in his graduate student life. So he figured that something must be up and planned to get it checked out. So he paid for a sleep study (these are in generally high demand; you pay them instead of them paying you) and got it checked out over winter break.

Well, the results from the sleep study just came back. As it turns out, that he has sleep hypopnea. It’s a disorder that is in essence the same as sleep apnea, but instead of not being able to breathe, your oxygen flow is greatly reduced. The symptoms are that you’ll be excessively sleepy (due to constant sleep interruption) and snore very loudly.

Of course, he’s had sleep hypopnea his entire life. But he never realized that anything might be wrong because he would always take naps in the middle of the day and never be exposed to the symptoms (ie. excessive sleepiness). It was only this year that his life as a graduate student and continuous scheduled meetings throughout the day and prevented him from taking his usual afternoon nap. Suddenly, he realized that something might be up. Due to his recent change in lifestyle, he now has a better understanding of his own circumstance and can address it appropriately.

I can understand his story because it is strongly related to two recent experiences I had with my own health:

Frog Eyes

I used to consider myself somewhat of a “Super Asian” because my vision was 20/20. Or rather, I thought that it was. So I never wore glasses. I would read from my computer screen, play racket sports, and drive without them. I would even go to the doctor every year and get prescribed a pair of glasses (which I’d promptly forget about after the appointment).

Well, this past summer I was playing (3-set) tennis with a good friend of mine. I was having a particularly good game that day, and picked up the first set. However, we had scheduled a game during the afternoon so by the second set, twilight was starting to approach. Suddenly I stopped playing as well, losing the second set by a good margin. By the time we started playing the third set, it was already almost dark. I lost every single point that set, and wasn’t even able to return my opponent’s serve. Damn, I thought to myself – something must be wrong.

As it turns out, I had been prescribed to wear a set of glasses since the beginning of college but had been to stubborn to ever wear them. I had never noticed that I wasn’t able to see the black board in lecture because I was always that obnoxious kid who sat in the front row and asked question after question. I had studied Computer Science in college, so I generally used my near-distance focusing muscles in front of my computer instead of gazing out into the stars.

So now I wear a pair of glasses. Every day.

Hella Lactose

Believe it or not, I used to be really short. I was in the 25th percentile for height, and if I did as if my doctor predicted I would have been 5’3″. This might be a bit unexpected, since I am  5′ 10-11″ today.

I (perhaps mistakenly) attribute my growth spurt to a conscious decision to drink a lot of milk. When I was in middle school, I used to drink six glasses of milk a day. Our family would literally go to Costco every weekend and stock up on milk because my brother and I would consume so much.

Well, the other day I was getting lunch at Stanford and had a few glasses over there – a bit more than I usually have for lunch. But on this particular day, I felt suddenly bloated after lunch. My stomach felt awful. I was tired. I kept passing a lot of gas. I managed to drag myself home and had to take a nap for a few hours before I was ready to get back to everything.

I’ve had a lot of bloated stomach, stomach pains, and gas in the past, but never attributed them to any kind of lactose intolerance. It was always my mood, or the weather, or the fact that I didn’t get good sleep the night before. But suddenly after ceasing to drink as much milk, I don’t have stomach aches any more. It’s just this realization that wow, this is how my life is supposed to be.

Some Final Thoughts

At the end of the day, we all have our quirks. Just because we don’t see them doesn’t mean that we don’t exist. And it’s damn hard to do something about something you don’t know even exists.

A little bit of introspection can go a long way.

  • Share/Bookmark

Harker High School Speech

18-Jan-12

I was recently invited to give a speech about entrepreneurship at Harker High School as part of the Speaker’s Bureau program. Here’s a transcript of the speech I gave [1]:

Transcript

I’m very thankful to be here today. Thank you, Sarina and Joe, for organizing this speaker series and for inviting me. It’s so great to see all of your shining young faces excited about entrepreneurship. I have no doubt that many of you are already entrepreneurs.

Today, I am not going to tell you what entrepreneurship is like. I’m not going to tell you why you should do it, or give you any sort of specific advice on how to run and grow a company. If you want to learn about that, go read the interwebs. What I’d like to do instead is to give the speech that I would have wanted to hear as a high school student. I’m going to talk about what my life was like when I was your age in high school, and to tell you how that influenced me into eventually becoming an entrepreneur.

I’ve always believed that entrepreneurship is a lifestyle. It is, in my opinion, trying to do what no one, not even necessarily your own self, believes that you are able to do. It’s about saying to yourself – forget it, I don’t care, and I am going to do it anyway. I am not sure if I can actually do it, but there’s one way to find out. Today, I am going to share with you two personally embarrassing stories from my life when I was your age where I tried to do something that I didn’t know that I could do and went for it anyway.

Sometime when I was in seventh grade, I decided that I wanted to be president. I didn’t have any particular notions about whether or not I’d have anything close to a realistic chance in becoming the president. In fact, I was probably one of the most unpopular (not to mention reaaaal nerdy) kids in the school. But somehow in my mind, I had decided that I wanted to be president.

The way that elections work in middle school is that there is a week or so of campaigning, and at the end of that week you make a public speech in front of the entire school.

Anyway, for election week I had carefully devised a slogan. The slogan was “Join the Party, Vote for Marty”. During election week, I would walk around with a party hat and ask people “Are you joining the party?” or tell them “It’s not a party, without Marty”. And they’d reply with something like, “Marty, of course I’m joining the party” or you know, something like that. I would say that election week went pretty well.

After election week, I was supposed to speak in front of the entire school. You know, in the front – the sixth graders, behind them – the seventh graders, all the way up to the eighth graders and teachers standing on the side of the auditorium judging me. But it was OK, because I had prepared a speech beforehand and all I would have to do is read off of it. In these speeches, generally how they go is that the speaker talks about how they have so-and-so experience with the student government (I didn’t have any), and how they’d have so-and-so many ideas for what they’d do as President (I didn’t really have any). So my speech, while having mostly vacuous content, did have one thing going for it, which was a short knock knock joke at the end of the speech.

This is how it went. I’ll need your cooperation for this:

Me: Knock Knock!

Audience: Who’s there?

Me: Marty!

Audience: Marty … who?

Me: That’s me! (You see, this works because my last name is Hu)

Anyway, come Election Day, about to deliver the speech, I was definitely bat-shit nervous. I remember walking up to the podium and visibly trembling. I was so nervous that when I went up there to read off my speech, I totally messed up the knock-knock joke.

This is what I said. Again, I’ll need your cooperation for this:

Me: Knock Knock!

Audience: Who’s there?

Me: Marty Hu! (uhhh… derp?)

At this point, the entire auditorium goes silent. No one is laughing – everyone is just kind of staring up at me awkwardly. I’m sort of standing there awkwardly, knowing that I had totally butchered that one and not really knowing what to do next. Then the audience just starts clapping. I just look at them and quietly bow off the stage, generally embarrassed for myself. My speech was definitely over.

You’re probably wondering if I won the election of not. I’ll tell you straight up that I lost. But ultimately, I was fine with it and I was glad that I did it. Even though I didn’t ultimately become President, it made a real difference for me.

To be continued… [2]

[1] This is a very rough transcript, because I did not use any notes or a slide deck when I gave the speech. I have tried to maintain the integrity of the content as much as possible, although the exact details will obviously be different. I’ve tried to write the post in more of my speaking voice (which is notoriously unedited) than my writing voice.

[2] Actually, this transcript is looking like it’s going to end up becoming a lot longer to write out than I originally thought that it would be (the speech itself was only about 10-15 mins). I’ll finish the second story and wrap up in a later blog post, probably the next blog post.

  • Share/Bookmark

Startup Diet: The Real Lowdown

17-Jan-12

Do startups really eat ramen anymore?

 

 

 

 

 

 

 

 

 

Everyone seems to think that because I’m starting a company, I do nothing but eat ramen all of the time [1]. Nothing could be further from the truth; in fact I haven’t eaten ramen once since starting this company. I think it’s just plain unhealthy and doesn’t taste very good. If I had to eat ramen, that would be a real low point of my life.

Even without ramen, we still manage to be very scrappy when it comes to food:

  • Our food budget is currently averaging $1 per person, per meal. We do this by cooking nearly every meal and by never going out to eat on company money. The dishes that we cook regularly include lettuce wraps (with ground beef and Yoshida’s sauce), spaghetti (with ground beef, garlic, and onions), tacos (with ground beef, tomatoes, onions, cilantro, beans, and rice) and fried rice (with ground beef, eggs, and broccoli). We get the ground beef that’s two days to expiration from Safeway, because it’s about half-price from the normal ground beef. It comes out to slightly less than $2 per pound.
  • We eat a lot of rice and potatoes – our house has almost finished the 50-pound bag of rice that we bought from Costco earlier this summer. The bag of rice cost us less than $20 and feeds way more than it’s fifty pounds worth of food.
  • We eat a lot of eggs, and drink a lot of milk. The last time we went to Costco, we picked up 144 eggs and six gallons of milk for the six of us in the house. After barely over a week, all of the eggs were eaten, and all of the milk was gone. On a typical day, our fridge is literally completely filled with eggs and milk.
  • We use the microwave all of the time. Generally, whenever I cook anything (e.g fried rice) I will cook around six to eight servings on top of what I’m going to eat. Then I’ll tupperware the rest of the food, put it in the refrigerator, and eat the leftovers from it for the next couple of days.
  • We buy lots of fruits and vegetables (they’re by far and away the most expensive item that we buy foodwise) and stack them up in the fridge alongside all of our sausage, eggs, and milk. Most of the time, we eat vegetables raw. I like to take my vegetables (e.g celery, bell peppers, cucumber) and just put them by my computer to eat while I work.

The last time we ate out as a company at the beginning of this past summer, we went to IKEA and lined up for the $3.99 IKEA meatballs, with lingonberry jam, gravy and mashed potatoes. It turns out that at IKEA, you can pay $1 extra and get eight extra meatballs. None of us paid for the extra meatballs.

When we raise money, we’ll be able to afford the extra $1 for the extra IKEA meatballs.

[1] This probably comes from the fact that startups in the dot-com bubble ate ramen all of the time. I speculate that they did so because they raised too much money and worked in offices, where you couldn’t fit much inside other than a microwave and a shelf full of ramen. In that situation, if you didn’t cook your food at home (you couldn’t cook in the office, as we do) and you wanted to eat, you had better be eating ramen. So ramen profitability comes to mind when I think of the slightly-better-off than scrappy company, that has enough funding to have an office, but not enough to be profitable catering professional chefs who serve luxuries like steak and lobster for dinner.

  • Share/Bookmark

For Martin Luther King Jr.

16-Jan-12

 

This past weekend, I picked up a copy of Autobiography of Martin Luther King Jr. on audio CD. The recording is a narrative pieced together from historian Clayborne Carson, who was given all of the private memoirs of the late Martin Luther King Jr. from his wife, Coretta Scott King. The tape is told in the first person, as if it were his autobiography.

For me, the content in the tape is some of the most compelling that I have ever heard. In honor of Martin Luther King Jr. day, I wanted to share some of it that I remember:

  • Martin Luther King Jr. was first introduced to his future wife, singer Coretta Scott, through a mutual friend over the telephone. Over the phone, he very politely asked her for a first date. She agreed. During their first date, MLK told her that he was impressed that she could not only sing, but that she also had a good mind. He asked her to marry him. A year later, they were married.
  • At one point of his life, MLK was working on his doctorate studies at Boston University and living in Boston. Since he was living in the North, he and his wife lived in a mostly segregation-free world. However, he had originally grown up in the South, and felt a sense of civic service to his brethren still living there. So he moved south to Montgomery, Alabama to become minister for Dexter Avenue Baptist Church.
  • Over the course of his life, both MLK’s house and church are bombed multiple times. In one particularly bad incident, his entire front porch is blown away. By the time MLK gets home, a mob of blacks has gathered outside, carrying weapons and threatening the police. He urges them to under no circumstance engage in violence, and to put down their weapons and head home. He succeeds. Everyone heads home.
  • After the Supreme Court’s verdict came out that Alabama’s Montgomery Bus System was unconstitutional, the reactionary KKK announced that they were going on a raid, threatening to undermine the successes of the black social liberalization movement. Ordinarily when the KKK makes such threats, blacks hide in their homes and “play dead”, turning off the lights to the house. However this time MLK persuaded everyone not to hide, but to instead turn on all of the lights in their houses and leave their doors open. As the KKK drove past, some blacks even waved at the hooded members. Ultimately, the KKK did not conduct any raid at all, but instead drove away, embarrassed.

I wish you a happy Martin Luther King Jr. day.

 

“Darkness cannot drive out darkness: only light can do that. Hate cannot drive out hate: only love can do that.”

– Martin Luther King, Jr.

  • Share/Bookmark

Believe in Yourself

02-Jan-12

Impossibility

For the longest time, the four-minute mile was deemed physically impossible. The invisible barrier was so completely accepted that many doctors believed that running at such a speed would be fatal to the human body.

Then on May 6th 1954, medical student Roger Bannister shattered the record with a mile time of 3:59.4. Six weeks later, athlete John Landy broke the world record again with a time of 3:58.0.

Now that someone could run the four minute mile, everyone began to do it. Within the next few years, swathes of runners were breaking the four minute barrier. To this day, thousands of runners have run the sub-four minute mile. The four-minute mile is now the standard for nearly all professional mile runners. Even high school runners have broken it.

Self-Concept

When Roger Bannister set out to run a four-minute mile, everyone knew that what he was trying to achieve was impossible. He just ignored them and did it anyway. The man changed the face of running because he wouldn’t let anyone else dictate who he was or what he could or couldn’t do.

If you live your life trying to be the person whom others want you to be, you’ll end up miserable and exhausted. Society has such ridiculous standards for everything that you’ll never be satisfied: there will always be someone who is better looking, wealthier, or more famous than you are. Living for the eyes of others is a deprivation of what it means to be alive. Your own self-concept is vastly more important than what anyone else thinks about you.

I’ve always believed that the biggest limitation to our ability to change the world is inside of our own mind. This is because it is from the mind that we define and shape our own world. Everything – from our dreams and aspirations to whether or not we will admit defeat – is in our head. The tragedy of mankind is that there are so many of us who are really capable of changing the world, but stop shy due to lack of ambition.

No one ever did what they didn’t believe they could do.

  • Share/Bookmark

Talent

16-Dec-11

I had lunch with one of my mentors yesterday. He has a son, who just started the second grade. For a good part of the lunch, we discussed his concern that his son may not be as successful as he is. He told me that he feels clueless about what to do if his son does not end up being naturally talented.

My mentor explained that he never learned that lesson for himself, because for him by some fluke raw talent always ended up being good enough for him. As he told me, he was always naturally the best in everything that he did. He never did extracurricular work, because he was always at the top of his class. He doesn’t understand the notion of summer internships because throughout all of grade school, his summers were devoted solely to vacation. Even in college, he spent all of his time playing sports and hardly did any work. His most well-acclaimed paper (that landed him his professorship at Stanford) took him a single all-nighter to compose and was completed the morning of the conference deadline.

His story made me reflect a bit on my own experiences growing up. For me, I can definitely say that raw talent was never quite good enough. I’ve never been the most talented one in anything I’ve ever done. Any notable success I have ever had was always due to legwork.

One of my early memories from elementary school was the first time I took a standardized test. As I remember, each category of the test had a percentile rank next to it. In math, I was in the 99th percential. However, in reading comprehension I was in something like the 85th percentile. I don’t remember what my rank was exactly, but I do remember that my parents were seething (oh, heeellll noo) when they saw the report card. For the next several years of my life, they would send me to an after school program for three hours a day, where I would do various drills that included reading comprehension and other academic work. It was only after scoring in the 99th percentile for two consecutive years that I was finally allowed to leave the program.

At the end of the sixth grade, my math teacher pulled me aside after class one day to tell me that she was planning to recommend that I skip a grade in math. To do this, I would have a few weeks to prepare for and take a test that covered all of the seventh grade pre-algebra. If I passed, I would advance to the eighth grade algebra level. Oh and by the way, she could only recommend a few kids to do this each year so I had better pass (I really liked my sixth grade teacher, so impressing her was a big deal for me). I don’t remember studying for that exam, but I do know that I have a pile somewhere in my garage of several workbooks that I went through during that time period and that I passed by a margin of about two questions.

During junior year of high school, I was cutting a very close shave to getting the A- that I wanted in BC calculus. I had gotten a 51/100 on the last exam, which had dropped my grade in the class to around an 86%. The only exam remaining was the final, which would be after the Christmas holiday. To get the 90% that I wanted for the A-, I would have to score 108% on the final (this was actually possible, since the exams would gave extra credit).

Our family had already planned a two-week vacation for the Christmas holiday to go to New York to visit my uncle and his family. While the rest of the family went touring in New York, I ultimately spent my entire vacation in the New York library, diligently redoing all of my homework for the entire semester. At one point I had actually worked through all of the problems in the textbook, so I picked up a rather beaten Calc book from the library and worked through that one as well. So much for New York. Ultimately, I got every single problem correct on that final – which translated to 110%. My teacher was so impressed that she bumped up my grade to an A [1].

Listening to my mentor talk brought back all of the memories of my life before college and the world of academia that is so foreign to me now [2]. The entire conversation makes me believe that if I ever had to parent a naturally talented kid, I might be just as clueless as he is now. Because for me (through some fluke), unnatural talent always ended up being good enough. I wish my mentor’s kid the best of luck if he doesn’t score in the 99th percentile on his first standardized examination ;) .

[1] I wanted to prove that the final wasn’t due to some fluke, so the next semester I got an A+ in her class and consequently won the math department award. She would later recommend me to continue studying math at Stanford, which would be one of the best opportunities I ever had in high school.

[2] Actually, in the startup world I am mildly ashamed about my strong academic record, since it seems that most successful entrepreneurs tend not to be exceptional students (they go against the grain by nature). The grand majority of the work that I do now does not require any sort of academic record. But that’s okay. I’m not planning on going back to academia anytime soon :P .

  • Share/Bookmark

Work Life Balance

05-Oct-11

The modern work life balance equation is interesting to me in that people seem to have all of these rules for when they should or shouldn’t be working. I have some friends at tech companies who work something like: “long enough to get all three meals in the office, weekends when it’s urgent, at least eight hours a weekday, never after 9pm”. der…? what?

To be contrarian, I prefer to distill my work balance into a few rules that are easy enough for my brain to wrap around. This is what I do:

  1. If I’m awake, I should be working.
  2. If I can’t focus enough to do my work well, I should take a break.
  3. If I’m too tired to work after taking a break, I should be sleeping.

I once asked one of my most diligent friends in college how he was able to take all of the hardest CS classes, work a part-time job, and do academic research in his spare time.

me: “How do you manage your work/life balance?”

friend: “Well, that’s an easy one. Let’s postulate that I have no life. Then really, there’s nothing to balance, is there?”

  • Share/Bookmark

Enter the Matrix

16-Jun-11

Very nerdy, technical blog post here. Probably boring to anyone who isn’t fanatical about CS.

What is this programming thing all about?

I am in essence a self-taught programmer. I probably learned most of what I know from just plain hacking around – at the beginning with web stuff, then with the Linux operating system, then with networked applications. One of the earliest applications I was involved with at a young age was a refresher program for my favorite online game: Neopets [1]. I would probably say that nearly everything I’ve learned on my own has been primarily in order to build things I think are cool and useful to me.

My attitude changed significantly from gaining a formal CS education. Somehow over these four years of study, I realized that I actually like math, and I like proofs. Or more simply, I like the raw elegance of knowing for certain that something will or will not work. Nowadays, I will always work out a tough algorithm on paper before writing any code. This generally makes my life a lot simpler and leaves me feeling better about the end result. +1.

Enter the Matrix

Well, sometime last week I started to change my attitude toward programming once again. What I did was to really start reading other people’s source code. I’m currently working with Apache Nutch and the Google Analytics Export API, so I downloaded the source code for both of those and read through them. I had an annoying bug in my python code, so I downloaded the Python 2.7.1 source, found the module, read the source code there, and fixed it. It was surprising just how readable other people’s source code actually was. No black magic here, just good work by programmers who know how to write solid, well documented code. The whole experience has basically made me decide to start taking a look at the source code for everything [2].

Well, one of my favorite movies is the Matrix (not the sequels, mind you). One of the things that was pretty cool (but which I always thought was corny in real life) was the terminals that the humans visualize the matrix through. These things pretty much just showed green text flowing down the screen – Cipher says during the movie that he can’t make any sense of it. Well, for me this whole “source code revelation” is making me realize that you really can read that green text, and that you don’t have to strain your eyes to do so.

Open source is open for a reason – and I was pleasantly surprised to find out that the open source gurus write very readable code.These guys are probably better programmers than I’ll ever be – but at least they’re mortal too :P .

[1] For those of you who may not be familiar with Neopets, the website features an online virtual world where you can raise virtual pets, buy them stuff, play games with them, and interact with other players. The website was (absurdly) popular around the time I was bridging elementary/middle school and probably still is. Anyway, presumably to encourage users to stay on the site for longer, one element of the game was to give players rare items with a certain probability each time a player loaded a new page. The script I ended up using would open up several windows (no firefox – believe it or not there was no tabbed browsing at the time) and keep loading them over and over again hoping for a lucky random event. I got a handful of pretty decent items out of this :P .

[2] My side project is to take a look at the Android source code so I can get some idea of what’s going on in the phone so I can eventually seriously hack that thing. The other one that seems interesting in the Linux OS. One of my friends (also, one of the best programmers I know) took off a full quarter from Stanford to teach himself the linux kernel (no joke). He seriously kicks butt at systems. Too much fun.

  • Share/Bookmark