The Tools: Version Control System

Version Control System (VCS) is a must for every computer programmer, even if he's not working in a team. It is important for a coder, because coding and experimenting are inseparable sisters. Sometimes, experiments fail and you have to (or at least - you want to) go back to where you were three days ago. Usually, in such situations, a coder would get really frustrated because he doesn't have any backups. However, if you are using VCS - you all of your backups. You jest check the log, figure out which revision do you need, and then you can easily roll back to that revision. I don't think I have to explain why it is a must when you're working in a team...

So, what is the VCS of my choice? It's Subversion (SVN) + TortoiseSVN. Yes, I have heard about Perforce, and it is probably very good (because there was a lot of people who suggested it on various forums). However, Perforce is not free (you have to buy the commercial Perforce license if you want more than 2 users or 5 workstations) - although I'm working alone, some people might join me in the future. Also, I don't really want to limit myself to open source projects - I might want to release some closed source projects as well. So, I just use the most popular free tool on earth.

Well, actually, I didn't really choose SVN - I already had it my computer (because of some open source projects in which I participate), so I'm really familiar with it and I don't really want to install anything else.

One thing to note. If you're worried that your computer might die one day - you can make backups of your SVN repositories. Personally, I make one backup each week - I actually sleep better that way.


The Tools: Integrated Development Environment

Integrated Development Environment (IDE) is probably the most important tool. It's the tool that you use to accomplish many things:

  • Managing the projects.
  • Managing build settings for your projects and individual files.
  • Code writing.
  • Building.
  • Debugging.
So, what IDE do I choose? I choose Microsoft Visual C++ 2005 Express Edition. Why you ask? Well, first of all - it's the best free IDE for my platform. I only code on Windows (though, I always think about portability while coding). I do not use the .NET features (C++/CLI), but it still is the best tool. It takes a little time to set it up (I have to manually download the Platform SDK and DirectX SDK) but I think it's worth it.

Before Microsoft released this great edition for free - I was using all sorts of other IDEs and compilers and was never happy about them. The thing is - whatever IDE you are using - it must not get in the way. It must be intuitive to use. Other IDEs couldn't give me that. So, most of the times, I was using the free Microsoft Visual C++ 2003 .NET compiler (can't find the link anymore) and I was writing makefiles by hand (that's right!). But when the free 2005 Express Edition came out - I pick it up very fast, because it was very intuitive. I didn't have to spend hours struggling to figure out how to properly configure everything - it just worked right after I installed it.

As a last note, I'd like to point out, that although Microsoft Visual C++ 2005 Express Edition is stripped version (you can't use plugins), but it still has some extensibility features. One of them is that you can use the custom project wizards, and the other is that you can extend it with some external tools that it can run in the build process. If you think that these two are minor features that no one is using - you are wrong. After I experimented a little with them - I developed my own custom project wizards and I added some third party tools into the build process (the one I use the most is the UPX tool to compress my release binaries and I can configure it just as I configure the C++ compiler settings - in project properties).


The Tools: Intro

So, I decided that the first series of articles I'm going to write is about the development tools. It is important to choose wisely. Basically, it isn't just about "choosing the tools that meets your needs". You must actually look forward and keep in mind that some time in the future your needs might change. If that happens, you might find yourself struggling with the limitation of the toolsor you might need to migrate your work to some other tools.

Personally, I already have the tools set up and ready, but I want write about how and why I chose them instead of some other alternatives.


Starting the blog

I was never eager to start my own blog. I always considered blogs as a waste of time and I always though that it is a real pain in the ass to maintain one. However, I have to agree, that it is, by far, the best way to publish and exchange ideas. Yes, ideas! Oh, how many times I had The Best Idea Ever and then next morning totally forgot about it. So here I am - starting my own blog, so that I could publish my ideas, respond to other bloggers and let people know that I exist.

My name is Paulius Maruška. I'm from Lithuania. I am 24 years old. I'm studying Informatics (something similar to Computer Science). If you are wondering how do I look - you can see my picture on the left. Yes, that is me. As you can see I'm a nerdy looking guy. Oh and, before you ask - no, I don't have a girlfriend - I'm a True Nerd! ;)

What will be the content of this blog? Well, first of all - I love to write C++ code. So you can expect a lot of stuff about it. You can also expect some random ramblings about something else. I often find myself pissed off by some stupid politicians or celebrities and I want to let everyone know what I think about them. But for the most part - it will be about programming.

So, that's it for now. If you're a programmer like me, and you have your own blog somewhere - leave a comment, I promise I will bookmark it and I promise I'll check it out. Take care!