During the week, I make PC games. I'm not part of a 20-man team. Heck, I'm not even part of a three-man team. No, it's just me and one other guy, coding our hearts out to hit the release date for our latest title. As a result, we often have to wear many hats — designer, coder, web developer and IT dude, to name a few. We don't have the luxury of a budget to spend on commercial software so, instead, we do what we can with what's freely available online to make those hats more comfortable.
It's an operating system, sure, but all the programs that come with it definitely count as tools. I'm a die-hard Windows user and while installing some programs on Linux can be complicated — especially if you're not used to getting your hands dirty with scripts — getting complex applications up and running is surprisingly easy. It was the perfect OS for my build machine.
Loading up Apache, PHP and MySQL were painless exercises and I had several WordPress installations running and configured in a few hours. Off and on-site backups are handled with a number of scripts that execute tar at scheduled times. Whenever I need my build server to take on extra functionality, it's usually only an "apt-get install" command away.
I currently use version 11.04 with the classic GNOME interface, as Unity made me want to kill myself.
I've used Perforce and SVN previously to handle source control and when I started as an indie, I had a chance to start fresh on this front. Online recommendations constantly pointed to Git, but I was apprehensive, as it supported a lot of functionality I didn't need and just sounded complicated. Going from the GUI-friendliness of TortoiseSVN and Perforce was unappealing.
Then I discovered TortoiseGit. TortoiseGit provides a layer of abstraction over Git's powerful command-line backend and is designed to emulate the look of the popular TortoiseSVN.
On one hand, it's not great that I'm hiding away Git's full functionality, but on the other, I know that if I ever need that functionality, it'll be right there. For now, I'm happy to make commits to my local machine, then push them to the central repository on my build server when I'm ready, without using branches, patches and the like. It's a similar workflow to SVN, but built on a Git backbone.
Visual C# 2010 Express Edition
If I can't find it online (or I find myself unhappy with what's on offer) I turn to C#. Scripting can only take you so far — sometime you need the power of a compiled executable. Languages such as Python and Perl can arguably provide the same flexibility, but it's hard to justify learning these if your current skill set is sufficient.
As an indie, you have to pick and choose your battles. Time is the one resource you don't have a lot of, so stuffing around in a new language is a bad move, unless it's absolutely necessary. While it's tempting to educate yourself mid-development, you often can't afford it.
Emails and collaboration sites will only get you so far. Sometimes, you just need to talk to your fellow developers. Google Hangouts proved the perfect, lightweight solution for getting regular, much-needed face time with my business partner and co-programmer/designer.
Skype was going to be my first choice, but I wasn't interested in installing more software on my machine. With Google Hangouts, I can jump online and get a video chat going with minimal fuss, be it on my desktop, laptop or even someone else's machine.
Sadly, it's all I ever use Google+ for. Then again, I barely touch Facebook either.
My choice of WordPress as a catch-all content management system comes from my familiarity with it — not because it's excessively better than the alternatives. What does appeal to me is the ability to whack on a theme and completely change the functionality of the site from a blog to, say, a bug tracker or collaboration site. This modularity means I don't have to learn two or three different content systems and stay constantly abreast of their quirks.
I believe it was WordPress 2.8 that introduced taxonomies, making it simpler to customise the software. Instead of being limited to posts and pages, you can create custom data types — so to speak. The bug tracker I run, for example, stores "tickets", while my collaboration site uses "ideas" and "answers".
OK, so it won't magically transform you into a web designer, but PSPad does manage to deliver just enough power without feeling bloated. It's a sturdy alternative to Notepad and I've come to rely on it.
I tried to use Visual Studio Express to do my web design work, but for some reason, editing HTML or HTML-like syntax was agonisingly slow and I didn't want to confuse my integrated development environments by having a combination of C# and HTML source files open in the same program.
Dishonourable mention: Adobe Photoshop CS5
After trying to use The GIMP and failing miserably, I made the decision to spend a bit on Photoshop. It's not free — in fact, it's about as commercial as it gets — but the saved productivity more than makes up for the expense. Sometimes, it's about using the best tool for the job... and that tool isn't necessarily free.