Favourite Mac OS-X Apps

This guide covers applications that I like to run on the mac. I work on multiple platforms so where possible I prefer to use cross platform software.

Power Tools

I find the following collection of power tools useful:

  • MenuMeters provides resource monitoring on the menubar
  • The Unarchiver is a replacement basic unarchiver that supports more formats

Preference Panes

The following preference pane snap-ins can be very helpful:

  • RCDefaultApp allows default applications to be configured more easily

Browser

I use a mixture of Google Chrome and Firefox depending on what I’m doing and how well the sites work in the browsers. I’m tending to use Chrome most of the time and falling back to Firefox these days - they both have good plugin support these days.

Xmarks, formerly known as Foxmarks, is what I use to sync bookmarks between platforms and browsers. Firefox and Chrome both have plugins for this.

For Chrome I use the following plugins:

  • Google Dictionary
  • RSS Subscriptions Extension (by Google)
  • Xmarks Bookmarks Sync
  • Google Mail Checker
  • Google Reader Notifier
  • Notifier for Google Wave
  • Google Calendar Checker

For Firefox I use the following plugins:

  • Better Gmail 2 - bundle of user scripts for gmail
  • Better Flickr - bundle of user scripts for flickr
  • DownloadHelper - downloading images and video
  • DownThemAll! - mass downloader
  • FiddlerHook - tie in for fiddler (windows)
  • Firebug - dev tools
  • Fission - progress bar (mac)
  • FlashGot - download manager integrator
  • Greasemonkey - user scripts
  • IETab - allows sites to be viewed in firefox using IE (windows)
  • Refractor for Prism - allows creation of dockable apps from websites
  • Web Developer - dev tools
  • Xmarks - cross platform and browser bookmark sync
  • YSlow - extends Firebug to provide suggested improvements for better sites

Notifications

Growl is the notification system for the mac. Many other applications, including apple ones, utilise growl if installed.

Instant messaging

Adium is a generic chat client with support for most chat protocols that also integrates with Growl.

FTP

FTP Client

Filezilla is a free, open source, cross platform ftp client. Cyberduck is a free, open source FTP, SFTP, WebDav and cloud browser for Mac OS-X.

FTP Server

FTP is available as part of OS-X, if enabled.

Media

Codec

Whilst OS-X comes with QuickTime, it only supports a few codecs. Additional codecs can be supported via plugins. I have used the following:

  • flip4mac - plays WMV, pro version allows conversion to mac formats for use in iMovie
  • Perian - many other codecs
  • MPEG2 - apple’s quicktime MPEG2 playback codec (needs to be purchased)

Video Conversion

MPEG Streamclip is a conversion tool that supports the codecs installed.

Player

VLC is a really good cross platform media player with support for most formats.

If you need to play real media then there is a RealPlayer for the mac also.

Transcoder

Handbrake is a good cross platform video transcoder.

Uninstaller

AppZapper is a commercial tool for removing all traces of an installed application. I’ve not used it but may help if there is a really pesky app that needs removing.

Sync

iSync

iSync can be used to sync to your mobile if its supported. My work one (Nokia 3109 Classic - euk) isn’t supported, but there are ways to get it working

File

There are two main applications in this area; Unison is an open source project that is powerful but requires a fair amount of user knowledge, ChronoSync is a commercial application with a much richer user interface.

Dropbox

Dropbox only syncs files you put into it but has the advantage that its software as a service and therefore a backup is stored on a server and you can also access files through the website or mobile phone applications. Its free for up to 2GB of storage.

Text Editor

There are quite a number of text editors available, however, there is a lot of support for TextMate on the mac. This is one of the few applications that is not free in this guide, but I have to say that I think its one of the best I’ve used.

Bundles and Extension

TextMate comes with a large set of “Bundles” for most languages or tasks which can be modified to suit although they are great just out of the box. Open source projects often create bundles to ease adoption and use of their products and libraries, some of my favourites include:

  • http://github.com/aslakhellesoy/cucumber-tmbundle
  • http://github.com/rspec/rspec-tmbundle
  • http://github.com/kuroir/SCSS.tmbundle
  • http://github.com/glennr/uber-glory-tmbundle

These can be installed using a command prompt, for example to install the rspec bundle:

cd ~/Library/Application\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'

Tips

  • http://blogobaggins.com/2009/03/31/waging-war-on-whitespace.html

Shortcuts

  • Toggle comments - ⌘ /
  • Drawer - ⌃ ⌥ ⌘ D
  • Bracket Select - ⇧ ⌘ B
  • Select Item - ⌃ ⌘ T
  • Amend Lines - ⌥ ⌘ A
  • Delete to EOL - ⌃ D
  • Next Line - ⌘ ↩
  • Goto file - ⌘ T
  • Goto Symbol - ⇧ ⌘ T

Remote Desktop

Remote Desktop for Mac allows a windows machine to be controlled from your mac.

Cisco VPN Client

Cisco VPN Client can be used to connect to a Cisco VPN.

Mac Development

XCode

Xcode is a suite of development tools used to create Mac and iPhone applications. It provides a number of building blocks for other applications, such as build tools and compilers.

Command Line

Homebrew

Homebrew is the latest package manager to hit OS-X and is gaining a large following. I was using Macports but I’ve just switched and uninstalled it.

Xcode is a prerequisite for some packages (aka formulae in homebrew), providing gcc and other important tools.

To install homebrew (as per the instructions):

sudo chown -R $USER /usr/local
curl -L http://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C /usr/local

I have installed the following formulae (and their dependencies):

ack
bash-completion
dos2unix
gist
git
imagemagick
ncursesw
node
rename
sl
sqlite
subversion
tree
v8
wakeonlan
wget
xmlstarlet

Macports

I’m no longer using macports but I’ve listed it here as homebrew might be too fresh for some people. Macports is a collection of common ports from unix / linux, most of which are very useful for command line use. Fink is an alternative that has a larger number of packages but seems to be less frequently updated.

Xcode is a prerequisite, providing gcc and other important tools.

When I was using macports I installed the following ports (and their dependencies):

bzip2
curl
git-core +svn +bash_completion
gzip
meld
ncurses
python_select
python26
py26-markdown
py26-pygments
ruby
rb-rubygems
sqlite3
subversion +bash_completion
unison
wget
xmlstarlet

Some handy commands:

  • sudo port -u install <package> : install the supplied package, uninstalling the old version
  • sudo port uninstall <package> : uninstall the supplied package
  • sudo port selfupdate : update port itself
  • sudo port -u upgrade installed : upgrade the installed packages
  • sudo port clean --all installed : cleans installation files for all installed packages
  • sudo port deactivate <package> @<version>+<variant> : deactivate a package
  • sudo port activate <package> @<version>+<variant> : activate a package
  • sudo port uninstall inactive : uninstall inactive packages

If you need to switch versions, or variants, you need to deactivate the current version and then activate the one you want.

Bash init scripts

.bashrc

This tends to be run for bash scripts so should contain path vars and such. This is a good place to add a bin directory to the path for housing your custom scripts.

# non-login shells
# echo "calling .bashrc"

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
  PATH=~/bin:"${PATH}"
  export PATH
fi

# enable bash completion
if [ -f `brew --prefix`/etc/bash_completion ]; then
  . `brew --prefix`/etc/bash_completion
fi

# editor
export EDITOR=nano

# java
export JAVA14_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.4/Home
export JAVA15_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
export JAVA16_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
export JAVA_HOME=$JAVA16_HOME

# maven
export M2_HOME=~/tools/maven/2.2.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export MAVEN_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m"

# prompt format
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

# bash history niceness
export HISTIGNORE="&:ls:[bf]g:exit"

.bash_profile

This is run when logging in or creating a new bash session, so its not used as much. Its a good idea to call .bashrc to setup the environment in a DRY fashion.

# login shells
# echo "calling .bash_profile"

if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi

Visual Diff

Xcode contains an application called FileMerge but its very lightweight. DiffMerge is a free cross platform visual diff application that is worth trying out.

GitX

A gitk like repository viewer designed for OS X. brotherbard’s fork is worth looking at.

Java Development

The tools I use for java development are covered in a recent article, however, there are some specifics that are needed to get older versions of java installed if you don’t happen to be working with the latest versions.

JDKs

OS-X Leopard comes with JDK 1.4, 1.5 and 1.6 pre installed. The java tools are available on the command line (e.g. java, javac, jconsole, etc).

Note: Snow Leopard removed JDK 1.4 and 1.5, so there are some steps you can take to reinstall them:

  1. download the last release from leopard.
  2. use pacifist to copy the following to the same location on your machine: * /System/Library/Frameworks/JavaVM.framework/Versions/1.4 * /System/Library/Frameworks/JavaVM.framework/Versions/1.4.2 * /System/Library/Frameworks/JavaVM.framework/Versions/1.5 * /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0

You can then verify by accessing the java preferences app in Applications -> Utilities -> Java Preferences.

Comments

blog comments powered by Disqus
Fork me on GitHub