When I sit down to work on a new website project, I boot up a computer which runs linux. On it, is a whole bunch of software I use to do everything from edit website graphics, to coding the backend logic, to invoicing my clients. Most of this software is freely available and open source. Without it, my freelancing career would, most probably, never have begun. Here’s my kit.
The Gimp (Bitmap Graphics)
The Gimp gets a lot of press, good and bad, and many people criticise it for its lack of support for high colour depth (among other things). For me, however it serves a very useful purpose. On the web, I have no need for 32 bit floating point colour depth, and The Gimp is sophisticated enough to do what I need. It even opens Photoshop files when clients or designers occasionally send them to me.
Inkscape (Vector Graphics)
Inkscape is a program I started using way back when it was at version 0.46, and it’s one that gets better and better with each release. Nowadays, it’s a highly competent vector graphics editor which comes in handy for doing everything from custom graphical elements, to tracing bitmaps into vectors to resuscitate the logos and low resolution images I’m often sent.
Agave (Colour Schemes)
Agave comes in handy when I need to expand a particular set of colours from a client. It allows you to put in a colour, and generate colour schemes based on it in a variety of ways. It’s a simple program, but it does what it does really well.
LibreOffice (Office Suite)
Formerly, an OpenOffice user, I switched to LibreOffice after Oracle acquired Sun (and thus OpenOffice) and began breaking things. LibreOffice is essentially the same, and provides me with all the office suite functionality I need. It’s compatible with Microsoft Word (98% of the time, which is more than I can say for Word itself, often) so opening files from clients isn’t a problem. My only problem with it is that, being Java based, it’s quite slow.
Scribus (Desktop Publishing)
Scribus is a complete (if somewhat ugly) desktop publishing program. I use it on the rare occasions when I do print design work, or need to produce an ebook. It copes nicely with typography adjustments, baseline grids, page templates and the like, which are often beyond the grasp of LibreOffice.
Gnucash is a very powerful accounting program which does all the fancy double-entry stuff, and deals with invoicing, balance sheets, profit and loss statements etc. It’s a bit clunky, but it does the job nicely. One thing I have issues with is the awful invoices it generates, so I generally re-do them in Scribus or LibreOffice for sending to clients.
The Mighty LAMP Stack (for the Server)
This is the real reason for running linux on a web development machine. It makes so much sense, when your website will most likely end up running on linux, to do the development there too. The stack consists of Linux, Apache (the web server software), MySQL (the database server), and PHP (the programming language most popular on the web). I do almost all of my coding in PHP (for web projects anyway).
Netbeans (PHP IDE)
Netbeans is, in my opinion, the best PHP IDE available. It does everything you need in an IDE: code completion, folding, class browsing, reference lookup and phpdoc support. In addition, it’s cross-platform (being Java) which means I can use it when I’m away from my home computer, or on my (Mac) laptop.
When I’m not using a fully-fledged IDE to code, I need a text editor that is capable of doing syntax highlighting and auto-indentation (among other things). Because I tend to desktop hop, I’ve put a few ones here. If I’m using Gnome, it’s gedit, if it’s KDE, it’s Kate, and if it’s the commandline on a server (or just when I’m feeling geeky, it’s Vim or Gvim/MacVim.
Codeigniter and CakePHP (PHP Frameworks)
I’ve used Codeigniter on a number of projects, and have recently started using CakePHP for some things. Both these frameworks take the repetitive work out of developing web applications. They help with handling form data, database abstraction and the like, as well as giving you a clear structure around which to organise your code. I highly recommend them to any web developer to try once you’ve got the basics of PHP.
These are the tools I use to do most of my work. Without them, I would either be out of business, or several thousand dollars poorer.
Oh, and my flavour of linux: Arch, of course…