53 Electrifying Minutes (or 20 Minutes, It Depends) with the Stanford superstar - Feross Aboukhadijeh

Total read time: 20-25 minutes

The 13th episode of Princeton Startup TV is coming to you from Mountain View, CA. Our guest is Feross Aboukhadijeh. He’s currently Master’s student at Stanford where he got his BS degree in Computer Science, but more known to the world as a web developer with interests in high-level programming languages, browsers and web framework design. In the past he worked at Quora, Facebook and Intel. What skyrocketed Feross to fame was Youtube Instant - a real-time search engine hack built in 3 hours as a bet with his roommate. The site got immediate worldwide media attention - 1 million visitors in 10 days with hundreds of news stories including stories at NY Times, Sydney Morning Herald, and The Washington Post. Chad Hurley, CEO and co-founder of Youtube, was so impressed that he immediately offered Feross a job at Youtube.

- Let’s start big. What’s your life story, starting from where you grew up?

- That’s a huge question, dude. I was born in Sacramento. My dad is an electrical engineer and my mom is a school teacher. The earliest memories I have are just messing around with electronics in the garage of my house in Sacramento. My dad had a bunch of parts lying around, usually, and I would take them, play with them, pretend that I knew what I was doing. I was always interested in computers from an early age. At some point - I think I might have been five or six - my dad got a computer for us. That was really where it all started.

- What was your first programming language?

- My first programming language was PHP. That was in high school. Actually, I guess maybe Javascript was my first language, because I made websites. I made plain HTML/Javascript sites first. And then, later on, added some PHP to that. I think most of the people I know have started programming with C++, or Java, or something like that, but I was always interested in the Web from the beginning. So PHP it was.

- You have lots of web projects and hacks behind your back. Let’s talk about those, starting from the earliest ones?

- In chronological order? I don’t remember the chronological order. I have a lot of hacks! I remember that I spent most of the first two years of college just focusing on taking a lot of CS classes and learning a lot of stuff. I didn’t do many side projects, just focused on the classes I was taking in school. But then, during the summer after my sophomore year I got an internship in Facebook, and I spent a lot of time building small projects for fun. The one that was really the first big project, the one that people know about, is YouTube Instant.

- Let’s talk about instant.fm.

- instant.fm was something I built during my junior year at college. It’s a music playlist site, like Spotify in a browser. The idea was to make it really easy to make a playlist and share it with your friends, creating a simple URL that you could send to somebody. For example, let them listen to your twenty favorite songs. You could also upload playlists from iTunes. If you had a bunch of playlists and you wanted to get them online to share them, this is actually something that iTunes doesn’t let you do - you can’t share your playlists. So we solved those problems. We have a bunch of users still using the site regularly, but we moved on. We worked on it for three months and launched it, then moved on to other projects. That was fun.

- You also built Study Notes.

- That’s a site to help high school students who are studying for their AP exams, the tests that you take to get into colleges in the US. It’s started out, literally, as a site where I just put all of my own notes I was taking in my own classes. Because I figured that I couldn’t be the only one who didn’t really enjoy reading forty-page chapters in my US History book. It wasn’t an original idea, either, because there were a lot of other sites already doing it. But what was cool about Study Notes is that I took really good notes that I put out there. I got my friends to give me their notes to put on the site as well. I created a way for people to send me their notes and get them added to the site. And so, after just a little while of working on it, we had really good notes for three classes: English, US History and Government. For the last six years, while I’ve been in college, I’ve been working on the site, keeping it alive and going. It’s been pretty awesome. Actually, the timing of this interview is kind of funny - just yesterday was the AP history exam and so all the students in the US were on my site studying. I’m sitting there with Google Analytics open, looking at the traffic, and it was the most awesome thing, seeing ten pageviews per second going through and the server not dying. It was amazing to see. Something I built so long ago, still alive, still being useful. Google ranks it really high in the search results, and that helps people find it.

- Did you put it on EC2?

- No, I just have it on a simple VPS. The company I use is Linode. EC2 would work fine as well, I just happened to use Linode.

- Do you use Linode for all your projects?

- Yes, I do. It’s simple, it’s really straightforward, and I have not done a project that’s required more than a single server at this point.  So I have a bunch of Linodes, one for the databases, one for the front ends, but that’s even kind of an overkill. I could put everything on one big server, and it would have been fine.

- Yeah, I used it for my master’s thesis as well, and Chris Dixon (of Andreessen Horowitz) recommended it as a really cool service. You also built an HTML5 hard-disk filler. I saw it on HackerNews a couple of months ago, what was it?

- In the midst of my current project I’ve been working on (which we should talk about by the way because it’s awesome and I’m really excited about it) - I was playing around with local storage. Local storage is the HTML feature that is sort of like a super cookie. It allows you to store up to five megabytes of information on the user’s computer. It’s pretty handy, because before this feature it was really hard to store any substantial amount of data on the user’s browser. Anyway, I was playing around with it and I was reading the spec, which is very short. I noticed that the spec says that every single domain should be allowed to have its own storage space allotted by the browser. That way, a given site can’t use more than 5 megabytes, so they can’t fill up your computer’s hard drive. It’s sort of a security precaution. Of course, when I read something like that, I always want to go see if that’s how it actually works, if the browsers have implemented the spec correctly. It turns out that everybody, except for Firefox, did it wrongly. They allow you to make different subdomains on your site, and each subdomain gets its own different allocation of five megabytes of space. So if you make a thousand subdomains on your website, you now have five gigs of space on the user’s computer.

- Questioning assumptions works.

- It really does. So the website I made to demo this. Here’s this site you visited, and without even asking for your permission it fills up your hard drive with pictures of cats. It doesn’t even wait for you to notice what’s going on.

- Anything else we should discuss before PeerCDN? Any other hacks?

-  The one other cool one that I liked. Adobe Flash has the ability to turn on your webcam, since it’s a plug-in that’s running on your computer with root privileges. It can do that. So it’s up to Adobe to make sure that only when the user gives permission would the webcam get turned on and the data get sent to a website. I think Flash is just a security nightmare, and so when I was looking at that, I discovered this weird thing. You know that Flash was created by Macromedia, and Macromedia was later acquired by Adobe. So they redirected all the Macromedia domains to adobe.com, right? Because they acquired Macromedia and incorporated all their products into their own line-up. But there’s one URL that still has macromedia.com in it that they couldn’t redirect. So that made me really curious. It’s the URL for the settings manager, so if you visit it, that URL is allowed to tell the Flash component on your computer to change settings, to whitelist a site to allow it to access your webcam without asking you, or to maybe clear the cookies that Flash puts on your computer. So it’s a very privileged domain. That URL must have been hard-coded into all the different Flash Players that have been installed over the last fifteen years. So they couldn’t change it; they had to keep it exactly the way it was. So the hack that I discovered is built off of a hack that someone else discovered, that lets a random website enable your webcam. It works by taking that settings page and putting it into an iframe, then making that iframe invisible, opacity zero, so that it’s not shown to the user. But then behind that, on the webpage, you put some kind of a game for the user to play and you want them to click on certain locations. Meanwhile, the settings page is actually sitting there invisibly above the page, and when the user clicks, the clicks are going to the Flash element, which enables the webcam. They don’t even realize that they are now being recorded, and hopefully the webcam has a light that tells the user that it’s been turned on. It was really fun to show that to people. They would all go “”No way! You can do that?”” That’s my favorite kind of hack, usually, to show people something they didn’t expect that you could do with the computer.

- Let’s talk about PeerCDN. What is it?

- PeerCDN is my latest project. I’m working with a friend, Abi Raja. 

- And you are working on it full-time?

- Yes. It is a full-time project. I put my Master’s Degree on hold to work on it. The idea is to make it so that when you are on a web page as a visitor; you are basically, sharing your web cache with all the visitors who are on the site with you. So, when a new visitor comes to a website before they get the resources for that page from the server they first ask the peers that are near them if the peers have those resources and if they do they will fetch the resources in a peer to peer fashion and then they can avoid basically, taxing the site server at all. So, the site saves RAM. The site saves servers.

- And essentially, you’re bringing the costs down and making it more reliable, faster. It’s definitely a revolutionary idea. What is the key insight? How long have you been working on this?

- For like two to three months. Yes, probably, closer to three months. So basically, the way it works is - it uses a WebRTC which is this new browser specification. It’s honestly, the coolest thing I’ve seen in ages. I think more people should know about it. I’m surprised. It’s been sort of talked about on Hacker News and in a few places. The thing that’s sweet about it is that you literally can open up a socket to another browser and talk and send arbitrary data down that connection. This is peer to peer on the web and this is the first time this has been possible. You could have used Flash in the past, but there is a lot of problems with the Flash solution that this addresses. Anyway, I think this is a huge revolutionary thing and there’s going to be all these applications that are going to be built on top of it, from the most obvious things like Bit Torrent clients that you don’t have to install. You literally can imagine going to Torrents site and clicking on a movie you want to watch and then having it play like YouTube. That’s one awesome use case. There is going be a whole bunch of non-obvious ones. I think PeerCDN is another unexpected one. It’s like, woah, we can actually build a content delivery network that is as fast and as reliable as something Amazon offers or what Akamai offers and do it for much cheaper.

- Awesome. I hope when we meet again in a couple years this will be the de facto standard. How do you compare interning at Quora with your internship at Intel?

- Intel was a huge company. When I was there, it was like a hundred thousand employees, spread across the world; very large corporation. It was my first job ever. I was lucky because we lived next to an Intel branch.

- Was it in your high school or your freshman year?

- Yeah. It was in high school. It was a really awesome high school program. I got to do some web design for them and I recorded some videos for internal communication for managers to employees and things like that. It was a good experience, but of course it’s a very large company and one thing I noticed while I was there was that there are a lot of people who are doing pointless work in a way. There are so many people and they could probably do the same thing with less people, fewer people. For example, some of the interns, not me fortunately, were moving boxes around and doing not very interesting work. But of course, Intel does a lot of cool stuff in the chip manufacturing area and that’s just not the part where I worked.

- Andy Grove would not be happy with that kind of management.

- That was just my experience. I’m really glad I had a good experience, but I think that maybe some of the other interns didn’t. And Quora and Facebook were both really awesome experiences for me. When I was at Facebook, I was on the Groups team. Do you know the new version of Facebook groups?

- Yes. The one which lets you add members without their permission, I think.

- Yes. That is why it actually was the fastest growing product in the Facebook’s history. Basically, once people discovered, ‘I can add anyone to my group’, basically, within a very short period of time everyone on Facebook was in a group.

- Well, I think one percent will complain, but 99% percent will actually find it pretty efficient.

- I agree. If you think about how photo tagging works on Facebook. You have some small percentage, no more than five percent of people, who go on Facebook and they obsessively tag every photo. And that little group of people does all the work for all the other 95 percent of the users who maybe don’t even know how to tag or just too lazy to tag. Facebook is really good at doing that kind of empowering; empowering the power users to do work for the non-power users. In that sense, I create a family group and then I add all my family to it. My mom would not think of doing that. She wouldn’t even know how to join, maybe she would. I am probably not being nice to my mom, but anyway once I’ve done it once, the work is done and everyone is in that group.

- What did you work on at Quora?

- At Quora, I added the video feature so you can include videos in your answers. And then the company at the time was in the process of porting their code base from Python to Scala and that was kind of this big project that half the company was working on and so I was a part of that for the last part of my internship. It might sound a little boring porting code from one language to another and frankly, some parts of it was a little boring, but on the whole it was awesome because I got to learn Scala and Scala is a really interesting language. Have you looked at it?

- I have, but not much. Syntactically it’s kind of like Java, but with lots of functional features. Twitter is crazy about it.

- Correct. It has a lot of interesting ideas, all combined into this one language. So, there’s basically, ten ways to do everything you might want to do. It is the opposite of Python in that sense where in Python there is only one right way to do things. So, it can be a little overwhelming, but there is a lot of interesting programming ideas in there. From a perspective of becoming a better programmer and thinking of new paradigms in programming, it was a very good thing to learn.

- Sharpening the saw - one of the 7 habits of highly effective people. Was it in Palo Alto before they moved to Castro Street?

- Yeah. That was back in Palo Alto.

-  Awesome. From the professors, entrepreneurs, and hackers that you’ve met in your life, worked together, or attended a talk by, who impressed or influenced you the most and what specific things did you learn from them?

- Good question. One thing is when I was at Facebook I got to interact with Mark Zuckerberg a bit. The way the team worked was there were three full-time engineers and two interns. I was one of the interns on the Groups team. What happened was, the team had just formed before I got there. The mission of the team was like Facebook Groups currently suck because no one uses them for actual communication with their friends. It’s all these memes and these stupid things so let’s throw them away and do something better. It was interesting to see how the team interacted with the leadership in the company and how that process worked. For example, for the last two months of the summer, our team had its own room, called the War room, where everybody was basically working really hard to finish. Zuck would come by in the evenings around 8:00 or 9:00pm. and of course most of the team was still there. And he’d come by and I’d be like “Hey” and he would say,  ”Show me what you’re working on”. He would talk to interns all the time. He would ask, “Show me what you’re working on”. I thought that was really good leadership strategy. Especially, at the size they were at, at the time. To see the CEO go around and talk to interns is very, very, good thing. Actually, I think it is quite rare in other companies to see that.

- Were you assigned to the Groups team?

- Yes. When I was first assigned I was actually really mad because Groups is a terrible product and I was like, I don’t want to work on this thing that is the worst feature in Facebook. Why am I going to work on this? But then I found out they were building a whole new version and it was very exciting at that point. And one thing that Zuck does really well is that he has a very, very good product sense. He understands the psychological motivations of Facebook users very well. He is able to take a look at a product, and be very perceptive and anticipates how a particular feature or UI change or messaging in the product will affect the users and affect the way that it gets used. He anticipated a lot of things that I initially disagreed with in terms of the product but it turned out to be right after we did testing and I thought that was a really cool thing to see and I learned a lot from that.

- Any professors?

- Yeah. We have this one professor at Stanford who teaches Operating Systems. His name is John Ousterhout and he was a generally, awesome professor in terms of teaching the material, but this one thing he did, that was above and beyond just being a good teacher of material, was that every Friday he would spend the last fifteen minutes of class just giving a life lesson for the week. He called it “Thought for the weekend.” It was something very inspiring or an insightful idea about life. He is an older guy, so he has lived for a while and he’s been doing software his whole life. He still programs and he is around sixty. He’s still working on cutting edge amazing stuff. His current project is RAMCloud. It’s this idea to make this cloud that lives totally in RAM so it’s super fast. And for particular workloads it’s really well-suited. Anyway, one of his lessons that he told us about was if somebody is better than you at something - their skill level is up here and yours is here - you shouldn’t let that make you sad or feel like you’ll never be able to catch them. Because a little bit of slope makes up a lot for y-intercept. So if your slope is this, and their slope is like this - maybe they’re a software engineer, they’re not learning anything new, or they’re just doing their job but they seem sort of god-like in that they’re so good. But you learn really fast, really quickly, and can catch up to them and start to pass them if you keep your slope very high. So the most important thing is the slope and not the y-intercept.

- That’s a really good lesson. Tell me about other classes. What are your five most memorable classes at Stanford?

- I actually took a little bit of time off. I took off fall quarter and then this quarter. For the one quarter I went back to in the winter I was doing a project working on PeerCDN, so it’s been almost a year since I took any classes. One of my favorite classes was algorithms because it’s really the heart of computer science. It’s manipulating data in ways that are beyond the trivial solutions and there’s a lot of interesting stuff in algorithms.

- Is Professor Ullman teaching it?

- No, it was Roughgarden. Tim Roughgarden.

- Maybe some classes outside of CS?

- There was this CS class called C++ Programming Laboratory, which was just a class about C++ and nothing else, which is a rare thing at Stanford because usually they try to teach programming principles and ideas and not just sort of teach you, “Here’s this one language and how it works”, because that’s not very far-sighted. They have this exception for this one class for one unit where you can learn all about C++ and it was taught by Keith Schwarz who started teaching the class as a sophomore undergrad and he’s probably the most bad-ass person I know. He thought of making this class and went and created it and was a junior when I was taking it as a freshman. It was literally one of the first classes I took at Stanford in the fall quarter I joined. And he was such a good teacher. So inspiring, so in love with the material. He would literally bounce when he was teaching and his enthusiasm was so infectious and made it so obvious that I should declare Computer Science as my major. It was very influential on me. He’s now a lecturer at Stanford. He was so good at this class that he taught as an undergrad that they hired him to teach. Now he teaches all the intro classes at Stanford.

- If you could have dinner with anyone in history, who would those people be?

- Someone who’s alive that I would love to meet is TJ Holowaychuk. I was joking with a friend that if I ever see him I’m just going to walk up to him and give him a hug. He’s a node.js developer who has written so many modules for the community that it’s impossible to make a project using node.js and not use something that he’s written. He writes all these core infrastructure features that everybody else includes in their projects. His output is just prolific. If you follow him on GitHub you’ll see that he does a hundred commits a day, opens and closes all these issues, and he’s managing hundreds of repositories. He started this project called Component, the idea which is to make a package manager for web components, like date pickers, forum elements and things that include CSS and Javascript. That project has thousands of little components under it and he’s constantly working on all of them and accepting pull and push requests and, just in terms of something to aspire to as a programmer, he’s super-inspirational to me. I’d just love to talk to him about how he does it and why he does it. I want to know how much time he spends in front of a computer. He really doesn’t go a day without having tons of stuff on GitHub. So I wonder, does he go outside? I want to ask him that. TJ, if you’re watching this, send me an email - feross [at] feross [dot] org. I want to know the answer.

- A day in the life of Feross! How does your typical day look like? What time do you wake up?

- Good question. Lately, between 10am and noon. I go to Philz Coffee in Palo Alto, buy a large iced coffee. This is pretty regular. I’ve been doing this every day for the last four months. I love their iced coffees. And I love working there. Then I just start programming when I get there. I’ve been working on PeerCDN for the last few months and just going through whatever the day’s task is. Lately it’s been trying to make the performance really good. And then I go to dinner and hang out with friends in the evening. That’s usually my weekday. Weekends are obviously more different. I do different things like last Friday where I ran 40 miles from Half Moon Bay to Sausalito across the Golden Gate Bridge, going along the whole coast. It took 14 hours - I woke up at 4:30am, and then we ran until 6:30pm.

- 14 hours?

- 14 hours of running but we walked some parts and took breaks, but it was 14 hours from start to finish.

- What was your preparation before?

- None. That was the most ridiculous part. I had this friend and she had this idea and said, “I want to run 40 miles to Sausalito”, and I said, “You’re crazy, you can’t do that, you have to train for this, people train for months before they run a marathon, what are you thinking?”. I was very skeptical at first but I thought about it and the next day I was thinking, I haven’t had a really epic adventure in my life in a while and I think that it’s important to have some sort of epic adventure every 3 months at the least - I hope preferably more often than that. So I just decided to do it and thought - worst-case we would stop after 15 miles and have a very nice workout, but we adopted the only rule was that we can’t say anything negative. We can’t say that we’re not going to finish. You have to be completely sold and bought into the idea that we’re going to succeed. There’s a lot of parallel to start-ups. What’s a reasonable distance to run? 10 miles, maybe? And we said we’re going to do 40, which is 4 times more - beyond what’s reasonable. Everyone’s telling you that it’s not going to work that your body’s going to break down. So we said okay, maybe you’re right but I don’t care. I’m going to try anyway.

- No side-effects on Saturday or Sunday?

- I was really sore the next day and it was kind of painful to walk up and down the stairs in the house. But I’m fine now, I can run around right now. It’s been only 5 days and I’m already fully-recovered. I think that it’s really something that anybody could do. It’s not like you need to be a runner. If you go slow enough and you pace yourself you can achieve quite a surprising distance - another start-up parallel. If you show up and regularly work and push forward you can achieve amazing things over the long-term. It’s not like pulling an all-nighter and hammering out tons of code.

- I believe in habits as well. When do you call it a day? When Philz Coffee closes or sometime after that?

- Philz Coffee closes at 9pm on weekdays, 8pm on weekends and when that happens I’ve got to get up and move. At that point it’s the question whether I’m going to keep working at home or go and hangout. Usually it’s 50-50.

- Let’s talk about how you program. Do you plan things out on paper and then execute in short, high-intensity bursts? Do you listen to music? What is your approach?

- For most of college my programming was very “bursty”. I wouldn’t program any side projects for months because I’m focused on school, I’m doing homework assignments - it’s just hard to have any extra time to do that stuff. But then I’d have one weekend where I’d have some extra time, go all-out and have a hack that I’d post on my blog and maybe on Hacker News. That was super satisfying, I really liked doing that kind of “bursty” programming where you just pull all-nighters. But it’s not sustainable at all. So with PeerCDN, we’re both being very reasonable and thinking long-term about what’s healthy for us to do. We’re not working more than 8-10 hours a day.

- It’s a marathon, not a sprint.

- Exactly. So that’s how we’re doing it. Now in terms of the hacks I did in college. I just got an idea and I’m just going to go build it and don’t care about planning anything. I’m just going to figure all of it out as I go. The worst case I wasted a day in my life. No big deal. I probably learned something new in the process. But with what we are doing now it requires a little bit more planning. Little bit more strategy. You don’t want to go waste time building a feature. Building something that’s not thought out and having to throw it away. It’s just not efficient.

- On a micro level, when you have to develop a certain feature, do you plan things out on paper and then look things up on Stack Overflow? When you’re ready to go, you code in a one hour burst and then go back to do some planning or do you mix those two stages?

- Typically mix the two stages. So if I know there’s a bug I want to fix or a feature I want to build. I go to the code that’s related to that area and then I start to look at it and try to understand what change I need to do. Typically I can just start to program it right away and I look up things on Stack Overflow and Google as I go. It’s kind of fun to not do too much planning when you’re doing that kind of thing. If you over-strategize and plan it out, then the actual existing code, that you are trying to integrate your new code into, will dictate a lot more of the design that you originally anticipated. So you will end up having to change it as you go anyway. So I don’t think too much up front planning is actually a good thing.

- The reason why I am asking is quite a few competitive programmers when they start doing industrial software engineering they apply those competitive programming experiences at the new place. The way they do it is - ‘Don’t touch the keyboard unless you know 60% of the solution’. So they really plan things out and they do it in a TopCoder Single Round Match style in an hour and half. Then they take time off. Then they think about the next step and then do it in another 90-minute round. If you do 3 rounds a day, then you’re good. Sort of cool to look at the different ways to work.

- I like that idea. I’m going to try that. There’s something to be said for time limits. I’m a huge fan of time limits on projects. Typically I do those on hackathons. I’m curious what it would be like to set an arbitrary time limit like I’m going to spend 90 minutes on this feature and see how it works. That’s interesting.

- What else do you do outside of programming, running and traveling to Japan?

- I’m actually traveling to Croatia tomorrow to give a talk at a startup conference. I’m into music so I’ve been going to lots of concerts lately. I used to play video games a lot more but now, that I’m doing this startup, it’s hard to find time for that. I used to like playing Counter Strike a lot. My friends would do game parties and things like that.

- Talking about music. Do you listen to music while coding? What kind?

- Yes. I listen to Daft Punk or something without words. If I know the song really well, then the words in the song don’t bother me because my brain won’t have to process the words. It’s a sound at that point. It’s gone from being a language I have to parse. it’s part of the background noise.

- That’s exactly the recommendation from Max Levchin: ‘Listen to music with no words so it doesn’t activate the language part of your brain’.

- What about you? Do you listen to music?

- I do listen to music. I mostly listen to instrumental music with no words at all. I listen to the music by Joe Hisaishi, Japanese composer; Ennio Morricone, and Paul Mauriat. I like also Hans Zimmer.

- Hans Zimmer is so good. The movie soundtracks are the best.

- ‘The Last Samurai’ is one of my favorites.

- Nice. That’s a really good soundtrack.

- Let’s talk about books. Which 5 books shaped who you are and effectively changed your life?

- There’s this one book that I read in middle school called “His Dark Materials”. The book that people might recognize is “The Golden Compass” which is the first book in that series. It’s a young adult fantasy novel which involves talking animals and things like that. It was a profoundly influential book for me because it was the first real epic adventure book I read. I remember it being really inspirational for me. It made me realize I want to go travel the world and do awesome things with my life after I read that book. I think if I read “Lord of the Rings” or “Harry Potter”, I would have said those books. I read Steve Jobs biography. I’m sure a lot of people say that as their answer. I thought it was good, but not that influential.

There is this book called “You’re a Strange Loop”. It’s about humans being sort of a feedback loop system where stuff is coming in where processing is happening and you’re interacting through the environment. It convincingly breaks down the argument of free will. People don’t have free will. I really like the ideas in it but not because I should try to do things in my life. I like a lot of the implications that come out of that. A world without free will means that people are not responsible for their faults. But they also don’t get to take credit for their achievements. It creates this nice world view where you don’t worship people who are awesome because they are really awesome from different circumstances which they don’t get to take credit for. They were in the right place and the right time. They had the right environment. They had the right genes. They had the right upbringing. Similarly when you see a bad person, you shouldn’t feel superior to them or you shouldn’t punish them for retribution for a crime. It’s unfortunate the way they are. I kind of like a lot of stuff that came out of that. I actually wrote a blog post about my thoughts on free will after reading that.

- I think that we have to explain our successes with luck, but find reasons for our failures within ourselves. This is the most effective paradigm, so you constantly look forward and don’t enjoy your current success for too long.

- It’s never as good or bad as the media would make it seem. So when people are celebrating you for being an awesome success and saying all these things about you that are obvious exaggerations you shouldn’t let it go to your head. Similarly when people are talking down about you and saying you are doing a terrible job it’s not actually that bad. The truth is somewhere in the middle

- What about blogs? Which blogs do you find yourself reading the most, other than writing your own blog?

- I read Hacker News. That’s my main source of news at this point. I follow a bunch of things on Google Reader. It sucks that Google Reader is going away, by the way, because I use it daily. One of my favorite blogs lately is called “Programming in the 21st Century”. I forget the name of the guy that writes it. It’s an amazing blog. This guy writes about his experiences as a recovering programmer. That’s what he calls it. He argues that programmers have this way of thinking that develops from using a computer for a really long period of time. It’s broken in a way. It changes the way you think and it’s not normal. That’s one of his points. In general what he writes about is how he went through this process where he learned functional programming and esoteric languages that are philosophically interesting and elegant. He would obsess about language design and pick a good language that would give nice aesthetics in the code. For a while, he would miss the entire point of programming, which is that you’re supposed to make stuff.

Why is programming an interesting thing? Why do we program? You program because we can change the world. We can build things that didn’t exist before.

While it may be interesting to build a beautiful program because it’s pretty and makes you happy, if it doesn’t do anything useful then you shouldn’t kid yourself. Don’t think you’ve done something useful. That’s only useful for your own satisfaction with the beauty of it. Most people aren’t programming for that purpose. They forget the purpose of programming.

That’s why I laugh at the whole meme on Hacker News where people make fun of Javascript or PHP. I think both those languages have problems, but I think that the kinds of people who spend all day writing long rants on those languages aren’t spending their days being productive in their language of choice. What are they doing? They’re missing the point. There are people out there using Javascript to build awesome things. We shouldn’t listen to people who don’t have output.

That’s his thesis: remember the point of programming. The point of programming is to make things.

- At the same time - balance that by writing highly maintainable code, right?

- Yes, if you want to be able to make things a year from now, you have to design it well.

- What is your approach to code-refactoring? Do you refactor at all?

- I refactor as I go, all the time. As I look at a new feature, it makes me cringe if it doesn’t integrate well with the other parts of the codebase well. When I see that I fix it right away, immediately, because I don’t want to let that code smell build up. I just deal with it right away.

- Are there any routines you’ve developed to be more productive, other than going to Philz Coffee?

- Coffee is amazing.

- That’s what Justin Kan told me as well. He drinks coffee first thing in the morning.

- Yeah, I recently bought some Philz coffee beans for brewing at home because I spend too much money there. I’ve been going there for 4 months and I’ve spent $700 on coffee. It’s not normal. It’s a little bit ridiculous. So I bought my own beans and I’ve been brewing it at home. I looked up the techniques they use and I’m emulating everything they do. One thing they do at the store is they double brew which means you brew once, and then you put the coffee through the beans again. It makes it super strong. The last few days since I’ve been doing that, I’ve been really caffeinated.

- How do you make sure that you stay interruption-free and on ‘maker’s schedule’?

- I try to not schedule meetings during the week at all. I have four days that are blocked off completely, Monday through Friday. If I try to put a meeting or a lunch in the middle of the day, it will ruin my flow. I save that for the weekend or Friday. I turn off or ignore my phone when I’m working. All my text messages accumulate during the day and I deal with them later. It makes people a little mad, but at the end of the day, you have to prioritize yourself.

- Batch processing!

- Yes!

- In which areas of your life would you like to improve?

- I’m perfect! There’s nothing to improve. Just kidding! I think I could be even better at not letting people distract me. I tend to overcommit to things. A lot of people - myself included - have a fear of missing out. If you see something happen, your instinct is to go to it. If someone wants to meet with you and talk, you want to. You might learn something cool and it might be fun. No one wants to miss out. It’s very easy to get caught up in things that make you feel busy, but don’t help you reach your goals.

- How do you balance your time between working on projects and learning about new technologies that are useful, but postpone the project?

- The best way to learn a new technology is to think of a use case for it. Find something specific you want to build that will use it. Then you focus, not on learning the technology, but on building that thing you want. As a side effect, you’ll learn the technology. You do it as you go.

- Would that be a subfeature of the current project?

- It could be an entirely new project. You could go to a hackathon and say ‘I want to learn WebRTC’ or ‘I want to build something using WebRTC.’ The goal isn’t really to learn WebRTC, the goal is to build the thing. That makes the learning an organic process of building something. I’ve found that when I first was learning programming, I would get a book and read it front to back, and then when I would try to use it, it was very ineffective. It’s the worst way to learn. I would never do that again. By the time I got to the end, I forgot what I read at the beginning. The only way to solidify your understanding is to use it.

- It’s getting colder here and the sun is setting. The last questions are: what are your future plans, and what piece of advice would you give to young hackers?

- My most obvious future plan is to finish working on peerCDN. We have an awesome prototype out there now at peerCDN.com and we want to have a public product people can use as soon as possible. That’s my plan for the future. Keep visiting peerCDN.com looking for updates. 

My advice to future hackers is to focus on building stuff. Be very diligent about being a doer and not just a talker. The world is full of talkers. The ratio is some ungodly number like ten talkers for every doer. These people just like to talk all day about projects. They’re very smart people. They know about a lot of things. But at the end of the day, they don’t produce anything. They don’t execute. They don’t build. Be a person who balances those things very well. Spend some time thinking high-level about what you want to build and then spend a block of time building that thing. Maybe it will fail. Maybe it will succeed. Don’t just have it at the idea stage forever, just talking about it. Once somebody else does it, don’t say “That was that idea I had a year ago, I thought of it before they did.” So many people do that, just think of Facebook. Be relentlessly focused on building and doing.

Guest of the episode: Feross Aboukhadijeh
Creator and host: Arman Suleimenov

  1. princetonstartuptv posted this
Blog comments powered by Disqus