|
Are you the Trevor Blackwell I met at X? Here are some times and places you might have met me: Saskatoon, (1969-1985), Ottawa (1985-1993), Gloucester High School (1985-1988), Carleton Unversity, B.Eng (1988-1992), BNR/Nortel, Ottawa (1988-1993), Harvard University, Ph.D in Computer Science (1993-1998), Viaweb (1995-1998), Los Altos, CA (1998-2005), Yahoo (1998-2001), Mountain View, CA (2005-), Anybots (2001-), Y Combinator (2005-). You might have seen me talk at: Stanford University (2003, 2004), Harvard University (1993-1998), Carnegie Mellon University (2004), IEEE Infocom (1996), ACM Sigcomm (1994, 1996), The Hackers Conference (2003-2006), USENIX (1995, 2006). I've also been at: the International Physics Olypiad (1988), the ACM Programming contest (1993), the Spam Conference (2003), RoboNexus (2004), IROS (2002, 2004), Burning Man (2001, 2005). I've vacationed in Hawaii (1999, 2000, 2003), Istanbul (2005), Iceland (2004), France (1996), England (1984), Munich (1997). I play Unicycle basketball in Berkeley (2004-). I've been at the Homebrew Robotics Club in Mountain View (2001-). I am not any of these guys with the same name. Can I have the source code for your balancing scooter? You can download the source code for the electric unicycle. All the hard parts are the same; it's just missing the steering control. There's a bug in one of your open-source software packages. Send me email: tlb at tlb dot org. Include as much detail as you can: what you did before the crash, any error messages, what operating system and compiler you used, etc. Best of all, send a patch. Some of your predictions are wrong! I'll let history be the judge. Only send me your arguments if you think I'm unlikely to have heard that point of view before. You say spam cannot be stopped, but I have a foolproof plan to stop spam. Well, get to work on it then. Will you invest in my company? I don't invest personally except in people I've known for a long time, but Y Combinator, in which I'm a partner, invests in dozens of early-stage startups every year. We do two funding cycles per year. Will you come to work for my company? Will you consult on a project? Sorry, I'm fully committed to Anybots. Can I come to work for your company? Anybots is hiring a small number of very talented people with multiple talents relevant to robotics. Send your resume (plain text, HTML or PDF please) to tlb at anybots dot com. What programming language should I learn? Start with Python. It's clean, powerful, aesthetically pleasing, and simple to learn. Squeak, a modern version of Smalltalk, is also excellent, but it's out of the mainstream. You'll need to learn C at some point, but you'll write better programs if you think in terms of the high-level abstractions provided by Python and translate to C as you type. At some point, you should learn Lisp. Besides their intrinsic characteristics, languages define commmunities of programmers. You want to choose one that lets you communicate with good programmers, because you'll learn from them. They tend to prefer powerful languages like Python, Lisp, and C++. So for example, although Visual Basic is actually a powerful and complete language, few good programmers use it. C++, on the other hand, is a rather poorly designed language, but for historical reasons a lot of smart people use it so at least you'll be in good company. The principle applies to operating systems too. Although Windows 2000 and its successors are actually decent operating systems, few of the good programmers use them, so if you do, most of your colleagues will be mediocre. FreeBSD or Linux have much better communities around them. How should I become a better programmer? Spend time reading other people's well-written programs. Sadly, a lot of Linux and Gnome open source is poorly written. Good code bases that I know of include:
If you want to recommend another good code base to include here, send me email. I'm an expert programmer. Can you recommend good books? Algorithms by Cormen, Leiserson and Rivest; The Structure and Interpretation of Computer Programs by Abelson and Sussman; On Lisp by Paul Graham (whether or not you use Lisp); all of Don Knuth's books, though you'll have to buckle down to get through them. Some good books on specific topics include: Unix Network Programming by Stevens; Garbage Collection by Jones and Lin; A Retargetable C Compiler: Design and Implementation by Fraser & Hanson. I want to get into robotics. How should I start? Get a robot kit you can program from a PC, and start making it do interesting things. I think the best one is the Bioloid, a kit that can make anything from a humanoid to a snake and has a usable programming interface from the PC. Their actuators are much more smooth and reliable than the hobby servos that people used to build such robots out of. Robotics is a huge, multidisciplinary field. Anything you learn in mechanical engineering, electronics, real-time software, machine vision, or learning or planning techniques will be useful. I just got my Bachelor's degree in CS. Should I get a Ph.D.? I did, and I value the experience greatly. It was much more satisfying and more fun than my undergrad degree. I learned something from taking classes, something from writing papers and grant applications, and a measure of self-discipline from having to actually produce a thesis. But the best part was interacting with all the smart people there. I learned a lot from them, and met people who became important friends and business partners. On the other hand, some of the smartest and most successful people I've known in industry didn't have any degree at all. Programming courses aren't the place to learn programming -- you can only learn it by doing. (However, grad school is an excellent time and place to work on cool extracurricular programming projects with friends.) What important technical projects should I work on? If you want to make money fast in a startup, work on a new service for the web. You can start such a startup with little money. You don't need VC-scale money to buy racks full of servers and hire cube farms full of marketers. All you need is a good idea and a few smart friends to implement it. If it's good, people will find it. Many of the most popular things on the web such as Hot or Not, OK Cupid, and the Facebook had no marketing budget. There are still lots of ideas waiting to be discovered. Many don't require great technical depth. For example, the blog has little technical content, but has created great social change. Someone could have written blog software in 1994, but nobody did until 1999. I think there are still hundreds of ideas with equal potential waiting to be discovered. If you have a longer time horizon, I think the most promising fields are robotics and biotechnology. How can I reduce global warming?. OK, nobody has actually asked me this question. But I'm going to answer it anyway, because I have a theory. Global warming is caused by taking carbon out of the ground (as oil or coal) and burning it, releasing the carbon into the atmosphere. Besides using less energy, you can help correct the imbalance by burying carbon back in the ground. One convenient way to do this is by not recycling paper products. Harvesting trees to produce paper and then burying the paper in the ground is an easy and effective way to sequester carbon from the atmosphere. Contrary to popular belief, leaving forests alone does not sequester carbon, because when the trees die the carbon is released back to the atmosphere as the wood rots. It's also worthwhile to not recycle yard waste, though most cities won't accept large amounts of waste in the regular garbage. By the way, recycling glass, plastic, and steel cans is useless. It doesn't use significantly less energy to recycle them than to make new ones. The only household things worth recycling are aluminium cans and batteries. |