The best kittens, technology, and video games blog in the world.

Friday, April 23, 2010

How to configure OSX for software development

Grimlock vs Munkzilla by Fanboy30 from flickr (CC-NC-SA)

In my previous post about OSX and Linux I mentioned that I maintain a very long document explaining how to turn a fresh OSX into something usable for software development and general use. Well, here it is - but be warned I only mildly cleaned it up.

This is all based on OSX 10.5 Leopard. For some reason OSX 10.6 Snow Leopard crashes like Windows 98 - at least once a day - and I cannot work like that, so I downgraded back after the upgrade. This seems to affect quite a few people, and 10.6 enhancements are nowhere near good enough to deal with such crashes.

Install all necessary applications

First of course - upgrade the system, as installation DVD is always rather outdated. Then install applications - this is more difficult than apt-get line, so here's list of links, sorted by category. All is open source or at least free download unless noted.

Browsers:

Drivers:
  • MacFUSE - drivers required by NTFS drivers
  • NTFS-3G drivers - NTFS is essentially the only reasonably portable filesystem for external drives as FAT doesn't support files larger than 4GB.
  • Arduino drivers - ok, you most likely won't need these.
  • Microsoft Keyboard drivers (I like binding those extra keys to something useful - Mac doesn't even see them by default). You won't need it unless you have Microsoft Keyboard or care about such extras.
  • Perian - a pack of media codecs.
Software development:
  • Xcode - this is a bundle of gcc and other development essentials - but instead of giving it a straight download Apple hides it under registrationwall on some horribly failful page.
  • TextMate - the only reason I even use Mac. Only trial version is free.
  • Xulrunner - Firefox-based environment in which you can make your own XUL-based applications
Basic system functionality:
  • Witch - it fixes alt-tab to work. Alt-tab is broken by default in OSX, has always been, and they don't plan to fix it ever - so this is absolutely essential. It's supposedly a trial version
  • Unarchiver - Mac supports most common archive formats, but you will need this sooner or later.
  • mysql - I don't remember exactly what was wrong with MacPorts' version (it was long time ago), but due to some brokenness I use this DMG version.
  • MacPorts - however much it sucks, it's absolutely necessary. Fink might seem like a nicer (apt-get based) alternative, but it just lacks most packages, and mixing them is a recipe for fail.

Internet communication:
  • Adium - multi-protocol IM program
  • Skype - another IM program (Adium doesn't support Skype) - these two should cover all your IM needs
  • Transmission - all bittorrent clients for OSX suck, but this seems to suck relatively less.
Desktop applications:
  • OpenOffice.org - there's native version these days, or at least decently native-ish
  • Stepmania - if you're into DDR
  • VLC - music player (OSX version of mplayer isn't as good as Linux's, so it's nice to have a backup)
  • Xee - image browser (OSX has none)
Others:
  • Growl - notifier system
  • Isolator - a really nice gadget which lets you blur all but active window, if you need to concentrate.
Pamuk & Pebbles by Sil & Hasenbande from flickr (CC-NC-SA)


System settings

After basic applications are installed it's useful to create some symlinks that make OSX more Linux-compatible (sudo ln -s /Volumes /mnt; sudo ln -s /Volumes /media; sudo mv /home /home-old; sudo ln -s /Users /home) in case your scripts or you want to switch seamlessly between the two.

Then clean up the dock - it's filled with every stupid Apple program ever made (Garage Band ...), except for the most useful one (Terminal). So remove everything you won't be using, add all you will be (start application; right click; "Keep in Dock"), and mark applications you want to start when you login as such - typically Adium/Skype/Terminal/Firefox (start application; right click; "Open at login")

Now here's a long list of configuration tweaks:

  • Settings > Mouse > faster - I wish installer asked me if I have Parkinson's disease or not, or default to assumption that I don't. Protip for OS designers: Most people have reasonable control over they hand movement.
  • Settings > Keyboard > faster - likewise
  • Settings > Keyboard > Use all F1, F2, etc. keys as standard function keys - you use them about 50x more often than laptop controls, and the only common control - volume up/down/zero - has dedicated keys on my external keyboard anyway
  • Settings > Keyboard & Mouse > Ignore trackpad when mouse is present - it was extremely useful, except the most recent update of OSX 10.5 broke it - it's no longer there, even messing with registry file won't give it back
  • Settings > Universal Access > enable - needed by witch driver
  • Settings > Energy Saver > Power Adapter > Performance + no brightness reduction - it's just annoying
  • Settings > Displays > Automatically adjust brightness as ambient light changes > off - equally annoying
  • Settings > Displays > Make external display the main one
  • Settings > Displays > Show displays in menu bar (so you can quickly fix resolution if Mac autodetects it wrong as it does every 10 or so times)
  • Settings > Time Machine > Show Time Machine status in menu bar > off - unless you use Time Machine
  • Settings > System > Play user interface sound effects > off - now to stay sane you absolute need to turn off system bell - this setting needs to be repeated in multiple places
  • Settings > Sound > Alert volume 0%
  • Terminal > Advanced > Audible Bell off
  • Terminal > Shell > Close if exited cleanly - no idea why it's not a default, get rid of useless dead windows
  • Terminal > Window > Dimensions - disable - less clutter
  • Terminal > Text > Antialias text - without antialiasing Terminal.app looks like shit. Not antialiasing in terminal is just like making "look like shit" option and turning it on by default. WTF Apple?
  • Terminal > Monaco 14pt font, line and character spacing 0.90/0.90 - somewhat nicer than defaults.
Because I want access to development console in Safari, I need to mess in registry: defaults write com.apple.Safari IncludeDebugMenu 1.

It's also a good idea to get rid of crash reporter - especially if you develop XUL applications wink wink - defaults write com.apple.CrashReporter DialogType none.

Russian Dwarf Hamster by cdrussorusso from flickr (CC-BY)

Configuring applications and shell

Now let's go to shell and copy my .bash_profile and such.

It's a good time to find that TextMate license and install it.


Then get the most recent bundles:


mkdir -p /Library/Application\ Support/TextMate 
cd /Library/Application\ Support/TextMate/svn co http://svn.textmate.org/trunk .


I have some TextMate hacks which I install at this point - I'll write about them in another post.

Now start Adium / Skype and enter your logins and passwords.

Start Transmission, make sure incomplete downloads are in ~/Downloads/Incomplete/ and are not mixed up with completes. You may also change your share ratio settings at this point if you're an asshole ;-)

StepMania needs a link to songs located on external drive:

rm -rfv /Applications/StepMania/Songs/
ln -s ~/e/Dancing/Songs /Applications/StepMania/

And now install some packages from MacPorts/rubygems/CPAN. This set is related to what I'm working on right now and will probably differ for you - but everyone needs git, wget, unrar, pstree etc.:

sudo port -v selfupdate
sudo port install mplayer unrar ruby19 mc git-core pstree rb-rubygems wget mp3infosudo port install octave ImageMagick id3v2 p5-libwww-perl p5-dbi p5-heap p5-yaml
sudo gem install rak hpricot objectiveflickr url_escape mongrel s3sync mechanize RMagick
sudo cpan Sys::Mmap DBD::mysql Socket::GetAddrInfo

Have fun

At this point it's almost usable. There are some extra steps related to building stuff in my repository, configuring mysql for my applications etc. - all totally me-specific and of little use to anyone else.

Not that the rest of the advice is in any way universal - but it should be a good starting point for you.

6 comments:

tom said...

thanks for the list

i will throw in xGestures, USB Overdrive, Launchbar and SizeUp.
i absolutely hate the way macosx handles the mouse cursor. but i guess a professional like yourself doesn't use the mouse in the first place ;)

fundoo said...

Thanks for the information, we will add this story to our blog, as we have a audience in this sector that loves reading like this” web development

Anonymous said...

Did you have a look at MacVim?

taw said...

Anonymous: Using vim when I can use TextMate doesn't sound like the most sensible idea ever, to put it mildly.

Anonymous said...

i am a free designer, any chance you like to show some of my pics? i think it would be nice and fit on your articles :-)
really admire your design! write me a email please in case you want to colaborate

yajur said...

interesting blog. It would be great if you can provide more details about it. Thanks you












Agile Software Development