Welcome to our continuing series of CodeProject interviews in which we talk to developers about their backgrounds, projects, interests and pet peeves. In this installment we talk to Peteris Krumins, co-founder of Browserling and Testling.
Who are you?
My name is Peteris Krumins. I live in Riga, Latvia and I'm the co-founder of Browserling and Testling. I also run the popular programming blog catonmat.net.
What projects have you worked on?
I've worked on over a hundred different projects. I tend to push all my code to GitHub. You can check my GitHub profile. I love writing code in a dozen different languages. I've an unorganized list of the project that I've done on my projects page. Currently my two largest projects are Browserling and Testling. Browserling lets you cross-browser test websites interactively in Internet Explorer and other browsers. Testling lets you run automatic JavaScript tests in various browsers.
Lately I've also started writing books. So far I've written three titles about the essential Unix tools - Awk, Sed and Perl. My latest book about Perl is currently being republished by No Starch Press and will be available in October this year. My next title, currently work in progress, is about Bash. I publish all the book chapters for free on my blog. Once I've written all the chapters I put together the book and publish the announcement on my blog. People can then either buy the whole book or read it for free.
I like sticking to a plan and a daily schedule. At all times I have a list of things to do on my desk on a sheet of paper. Here's an example of a recent todo list. As I finish things, I cross them off. I also keep a printed calendar in front of me with the most important things to do. Here's an example from June 2011. I also sketch a lot when thinking about things. Here's an example of what my thought process looks like for one of the projects that I did in 2007. I've been using this method since 2002 and it works for me really well.
What is your development environment?
Here's an image from a few years ago that shows my development environment. I use desktop PCs only. I still run Windows XP on my workstation. It's a 3.2Ghz Pentium 4 with 2 gigs of memory from 2004. It gets the job done. I use two shared screens and a Microsoft Natural keyboard. I don't enjoy laptops because of the small keyboard and the impossible to use mouse (touchpad) that they have. I also run two Slackware Linux servers. One as a file server and the other as a development server. The file server runs Samba and is mapped on Windows XP. I also have a bunch of servers for testing and experimenting.
My favorite development tool is Visual Studio 2008. I do most of the C and C++ development in it. Nothing beats IntelliSense and MSDN documentation. I use vim to write in JavaScript, HTML, Python, Perl and other languages. My favorite language is Perl because it's so concise and I can prototype things in it very quickly. I don't enjoy frameworks as it's often much quicker to write a basic version of the same thing than to learn how to use the framework.
What new tools, languages or frameworks interest you?
I'm currently not playing with any new tools because I love to get things done with the existing tools. The new tools are often confusing, change too fast and/or are too experimental. I only adopt the new tools once they've become old and have survived.
What is your coding pet peeve?
It depends on the language that I use and the environment and context I'm working in. For example, if I'm writing a C program from scratch I stick with the_following_naming_convention and 4 spaces for a tab. However if I'm contributing to some project, I'm using the naming convention, and indentation style of the existing project so that my contributions get accepted. If I'm writing a Windows program in MCF, I stick to Hungarian notation. If I'm writing Java, I mostly use camelCase, etc.
How did you get started programming?
I learned a bunch of different languages at once very quickly. I learned Pascal, mIRC scripts, HTML, JavaScript, C and Visual Basic all at once. I got my first computer on September 1st, 2000. It was was a Celeron 400 with 256mb of memory and it ran Windows 98. Before that I was writing code on paper at home and trying it out at a local university. A friend of mine called Zombie also helped me a lot with learning programming and Linux.
How has the developer community influenced your coding?
I don't enjoy communities in general. As soon as you're part of a community people assign all the philosophy that goes with the community to you. I like being an individual.
What one piece of advice would you give to an up-and-coming programmer?
Get things done and move on.