osx software suggestions

July 24th, 2008

A while back (2003) I borrowed an iBook from a friend who was looking to sell it. Since then I've used Mac laptops for my personal development (and commercial where possible). With every major rev of the OS the common tools I use changes slightly. A few friends of mine have recently bought Apple laptops and have asked about what they should try out. Those questions have inspired this list. So without any more preface here is my list of must have apps and tools for Leopard:

  • Quicksilver - my favorite launcher (think slickrun but better)
  • Bezel Pro QuickSilver interface - Makes Quicksilver match some Leopard UI elements
  • Adium - The best chat client for OSX. Supports multiple protocols and a host of great features. Including chat encryption and logging.
  • Perian - Effectively ffdshow for OSX. Providing a large number of codecs for the native quicktime media player.
  • VLC - Cross platform. Plays everything media player.
  • Developer Tools - I think this is self explanatory.
  • MacPorts - Almost every piece of free software that I use is covered by MacPorts. sudo port install ruby
  • The Unarchiver - Think 7zip for osx. It's free and has handled every archive I've thrown at it.
  • Handbreak - DVD Ripper
  • Aquamacs - Emacs gone Mac (I generally use vim, but I like to have emacs around in case I need to play sokoban.)
  • MacVim - Vim with some Mac flair
  • VMWare Fusion - I do .net dev and cross platform testing with this. It's key and at the price point a steal. I prefer it over Parallels because the vmware player is free and the vm's are cross platform so if anything goes wrong I can just fire up my image on another machine.
  • Fugu - Simple and Free sftp.
  • OmniGraffle - Like Visio only pretty.
  • Little Snitch - I like to know when my machine decides to "talk" to another one.
  • Xee - A lightweight image viewer. The closest thing I could find to the windows quickview stuff. Apple Preview doesn't iterate over folders.
  • svnX - For those times when I want to use a GUI subversion client. Incidentally those times are becoming rarer and rarer, mainly due to git.
  • iStat Pro - It's nice to see system stats at a glance in dashboard
  • Dashalytics - I'm addicted to stats.
  • TextMate - A very nice text editor

Most of my development is done using Vim in a terminal. Although I've recently been using TextMate a good bit. I tend to use macports for everything, ruby and python development included. Primarily because I've found it easy to maintain and upgrade using the macports installed versions. It's worth noting that the macport for ruby is currently unstable in my opinion, due to their upgrading to ruby 1.8.7.

There you have it, please add your own amendments in the comments.



hardware issue weekend

April 14th, 2008

This weekend I relocated myself and my servers to our temporary stomping grounds. Everything went without a hitch. Except of course for my main server, the trusty dual p3 800 machine that has hosted hasno for a long time. Luckily the drive array was not troubled by the loss of it's brainier compatriot. I picked up a nice new core2duo e6550 and mobo at a local store and had it up and running later in the day. Things are a lot speedier with current hardware. Rest in peace my 800mhz friend.

In addition to the server hardware troubles, my macbook's hard drive has yet again. This is my third hard drive failure. Hitatchi's 160gb sata drives are krud. The laptop itself is great, I just wish I didn't have the hard drive dying every 3-6mo. At least the server migration went through without data loss, I guess I'll just focus on the bright side of the weekend.

As a side note, cablevision can't and won't maintain static ip addresses through a move. So if your a business user hosting content at your office, expect longer downtime due to dns propagation and ip address setup snafus when moving. Make sure you have them unblock ports 80 and 25, since by default on all new ip setup they block them even if they were unblocked for your account previously.

This could alternatively be titled missing spaces. Anyway like many other leopard users, I've run into a little snag with spaces. It seems that it likes to loose random windows, anything from Terminal or Vim to VMware. Not cool. It's not killer, just annoying. I say that because I can still interact with the windows to an extent. I can usually save and close what I'm working on. Restarting the application "fixes" the problem. Hiding and Unhiding the window does not, nor do the missing windows appear in Expose. In the case of VMware I've found that switching the vm to fullscreen allows me to pause it properly and not loose any data. Good luck to anyone else who run's into this. Hopefully enough people have filed bugs, and we'll see a fix in the next maintenance release.

My friend was over yesterday and decided that he would upgrade his macbook to osx leopard (10.5). I'm not sure how it happened but it seems that something got on the dvd and caused a read error and a failed upgrade. After cleaning off the disk, the upgrade completed successfully. The only problem was that his user seemed to be gone. All of his attempts with his various passwords failed. He looked fairly dejected at being locked out of his now leopardized laptop.

The first thing we did to troubleshoot was boot the macbook into target disk mode (hold down T when powering it on). Looking around the filesystem revealed that his user folder still existed in /Users, with the username we expected.

Our next attempt was single user mode (hold down apple-S when powering on). Single user mode drops you into a root shell with readonly access to the filesystem. So we did the following:

fsck -yf 
mount -uw /
launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServices.plist 
launchctl load /System/Library/LaunchDaemons/com.apple.DirectoryServicesLocal.plist 
passwd #this will change root's password, you will be prompted to enter it twice
dscl
That last command will load the directory services command line app (they removed netinfo manager in leopard, otherwise you could easily reboot and fix the problem using a gui from the root account). At the dscl prompt we entered the following:
list Local/Default/Users
create Local/Default/Users/<your_old_username>
create Local/Default/Users/<your_old_username> UniqueID 501
create Local/Default/Users/<your_old_username> PrimaryGroupID 501
create Local/Default/Users/<your_old_username> NFSHomeDirectory /Users/<your_old_username>
create Local/Default/Users/<your_old_username> UserShell /bin/bash
create Local/Default/Users/<your_old_username> RealName 
After that was complete we rebooted the machine by typing shutdown -r now. When the machine booted up again, my friend was able to log into his account. All of his settings had been preserved since they all live in your home directory. The only exceptions were his user account picture, full name and password.

I hope someone else finds this useful, it took a good bit a of playing around to figure this out.

A few days ago I recreated my WinXP vmware image on my mac. Under windows, growing vmware disk images isn't much trouble (from what I remember). There didn't seem to be any tools available for fusion. Windows XP with Office, Visual Studio 2k3 and 2k5 takes up a good bit of space. Not to mention sql server 2k5 and the associated msdn libraries. So I hit the limit, and was going nowhere fast regarding options.

Until I poked around /Applications/VMware\ Fusion.app/Contents/MacOS/ and found diskTool. Disktool allows you to grow or maintain a vmware disk image (vmdk).

(segfault@megumi)(13:57)% /Applications/VMware\ Fusion.app/Contents/MacOS/diskTool 
VMware disk tool.
Usage: /Applications/VMware Fusion.app/Contents/MacOS/diskTool OPTIONS diskName
 Options: 
    ...snip...
   -X                 : grow disk
    ...snip...
I have no idea what capacity's units are. For some reason this made me think of the physics classes I've been in, I could just see some professor lecturing about missing units. I used 25Gb and it worked, so I assume that the Mb, Gb and Tb units are valid. Hope this helps someone.