It’s almost exactly a year since I produced a list of stuff I use, so it’s time for an update. This list excludes Windows programs because I now only have only one use for it: an enormously bloated TFS client.
- Sublime Text 2 - Still the best text editor I’ve ever used.
- VLC - The most versatile media playback program around.
- DiffMerge - 3-way diff tool.
- Mercurial - Distributed version control.
- Dropbox - File syncing in the cloud.
- iTerm2 - Replacement for the standard Terminal.app featuring tabs.
- fish 2.0 - Wonderful bash replacement.
- Vim - Command line text editor of champions.
- Homebrew - Package manager.
- Python 3 - Scripting language.
- Hex Fiend - Because everyone needs a hex editor.
- PlainCalc - Calculator with a console interface.
- Adium - Fantastic IM client.
- KeePassX - Encrypted password storage.
- Acorn - Simple image editor.
- VMWare Fusion - OS virtualisation, great for bloated TFS clients.
- TeamCity - Build server.
- The Unarchiver - Decompressor for zip, 7zip, etc.
- XBMC - Media player.
- Xcode - Standard OSX IDE.
- Safari - Standard OSX browser.
- Mail - Standard OSX mail client.
- JSON Accelerator - JSON prettifier and RESTful web service tester.
- SQLite Data Browser - Examine SQLite databases.
- Texture Packer - Produces graphics for Cocos2d games.
- SoundStudio - Sound sample editor.
- Pixen - Pixel art editor.
- SourceTree - Git/Mercurial UI.
- CrashPlan - Cloud backup.
Bean no longer makes the list not because of problems with the program, but because I just don’t need a word processor. The same is true for FileZilla: I don’t need it.
VirtualBox got cut because VMWare Fusion 4’s support for Linux improved to the point where I preferred to use that instead. VMWare feels faster and has a a better-designed UI than VirtualBox. It does a reasonable job of virtualising OSX, which allows me to run my own source control/build server, though I’ve found that running out of virtualised RAM in an OSX guest results in that guest instacrashing. If only TeamCity was written in something more efficient than Java…
I keep trying to find a more Mac-like replacement for DiffMerge but there isn’t one that can compete on price, features and speed. I was hoping that version 2 of Kaleidoscope would do the job, but I don’t like the way it displays changes or its slow scrolling, which is particularly lethargic on a retina Mac. It’s a shame, because the same guys produced the spectacular SVN client Versions.
Every now and again I try out Git to see what all the fuss is about, but I still detest its back-asswards UI and invariably end up happily back with Mercurial.
The fish 2.0 shell is a new entry to the list. Since becoming a full-time OSX developer I’ve discovered that my former distain for the command line was mainly a result of the Windows CLI (both DOS and PowerShell) being desperately awful. Give me a decent shell, be it bash, zsh or fish, and I’ll happily use it. I tried out zsh and oh-my-zsh, which were a vast improvement over bash, but fish wins out solely due to one feature: auto-suggestions.
I’ve now got a second monitor that I use exclusively for displaying an iTerm 2 window split into four separate panes. Vim is in there because sometimes it’s easier to edit in the CLI than it is to fire up Sublime. I’ve added a bunch of configuration options to my .vimrc file, such as line numbers and syntax highlighting, that make it a far better editor than my previous choice, nano. Homebrew is another command line addition that simplifies updating Mercurial, Git, Python and the rest.
Xcode, Safari and Mail should have been on the list last time. All are the default choices for OSX developers. The more I use Xcode the more I find that I prefer it to Visual Studio, which is high praise if, like me, you think that Visual Studio is one of the only worthwhile products that Microsoft has produced. I just wish Apple would invest more time in improving its stability, though recent releases have improved that aspect. Safari isn’t the most popular browser around, but its UI is easily the most Mac-like and syncs bookmarks with my iOS devices. Mail wins out over other email clients by being fast, simple and free, and by working well enough that I’ve never really considered looking for anything else. I was briefly tempted to use Sparrow, but the team got aqui-hired by Google who promptly killed the project.
JSON Accelerator doesn’t do much, but does it well and it’s free. It can call RESTful web services, post JSON data, and receive JSON data in response. It’ll even verify the structure of JSON objects.
SQLite Data Browser is an open-source GUI for working with SQLite databases, which underpin Core Data. It’s simultaneously excellent (free, open source, comprehensive) and terrible (abandoned, Qt UI, unstable). It’s close enough to what I need to dissuade me from paying for a better program.
Texture Packer is a handy tool for producing sprite sheets in the format required by Cocos2d. There are a few of tools that can do this, but Texture Packer is my favourite. The author even hands out free licence keys if you run a blog (disclaimer: I got one of these free keys a couple of years ago).
SoundStudio is a sound waveform editor that reminds me of programs I used on the Amiga. This is a good thing.
Pixen is a pixel art editor that I used extensively when ripping the graphics for EarthShakerDS. The Spectrum emulator I was using could record video to animated GIF files, which Pixen can import into its animation editor. I would use it more frequently, but it is very slow and not very stable. It has a habit of crashing after you’ve made extensive and fiddly changes to a picture and are about to save the changes, which is infuriating. It is, however, the only pixel art editor with animation support that I’ve found on the Mac, which makes the choices Pixen or DPaint 4.5 in an Amiga emulator.
SourceTree is occasionally useful if I’m trying to do something complicated with a Git repository and don’t want to use Git itself.
I settled on CrashPlan as a cloud-based backup system after copious amounts of research. It’s still doing an excellent job.