Compare Files Line-by-Line (or Image-to-Image)

Two of my favorite tools for line-by-line text comparison are diff and FileMerge. One reason why I like them so much is because they are lightweight alternatives for word processors like Microsoft Word, which you wouldn’t be inclined to open for coding (that’s one of my primary uses).

diff is a simple CLI-based tool accessible on most *nix systems. The basic format is diff <options> <file1> <file2>. It comes with a lot of powerful options too. To list a few:

  • Ignore tab expansion, blank lines, and other white space
  • Ignore case
  • Ignore matching lines
  • Side-by-side output
  • Compare files in directories
  • Recurse through subdirectories
  • Reporting identical files or simply whether or not differences exist

FileMerge is as simple as it gets for file comparison with a GUI. FileMerge comes with any installation of Xcode so it’s basically free. However, you’ll have to download the whole Xcode package (~1 GB) to get it unless you can find it floating around on the net alone.

FileMerge Screenshot

FileMerge allows you to select the changes you want to keep through a menu at the bottom-right that designates the favored document. By default, the right (as opposed to left) document is selected. Below the two separate documents is the final output that will result from the merge. FileMerge also allows you to edit/add content in this section before merging and saving.

As I was writing this post, I got a referral from Russ to a cross-platform comparison tool called Perforce. The cool thing about Perforce (besides being platform agnostic) is it compares not only files and folders, but images too. Not to mention it’s FREE. I only briefly read about it and watched some sample videos on the site, but it’s pretty powerful. It also can be used in parallel with Git. Read about it here.

After the recommendation to checkout Perforce, I started doing some more research and stumbled upon a couple other tools. First off, free code editor TextWrangler (Mac) includes file comparison. Diffmerge seems like a really cool alternative. It’s also free, available on multiple pllatforms and includes merging of 3 files and integration with Windows Explorer. Kaleidoscope is another option, though you’ll have to pay ~$40. It includes many of the same features as Perforce.

What do you use when you need to compare files? Have any recommendations?

Show/Hide Invisible Files on Mac & Other Secrets

Showing hidden files can be somewhat of a pain in Mac OS X. I’ve come up with a number of ways to make it easier for myself.

The simplest, most direct way of doing this is a command in the Terminal. One way is to navigate to the appropriate directory in Terminal and type ls -lha. Alternatively, you can type ls -lha <path/to/directory>. This will give you a list of all the hidden files for that directory. But maybe you aren’t proficient with Terminal commands and/or you need to do some file manipulation and/or you don’t want to use the CLI.

Much like my post Hide Desktop Icons on Mac, I’ve created a little script I call hidden that automatically shows and hides hidden files.


# checks file visibility and stores value in a variable
isVisible="$(defaults read AppleShowAllFiles)"

# toggle file visibility based on variable
if [ "$isVisible" = 1 ]; then
	defaults write AppleShowAllFiles -bool false
	defaults write AppleShowAllFiles -bool true

# force changes by restarting Finder
killall Finder

Paste that code into a text editor, save it to a directory in your $PATH and make it executable (chmod 755 <filename>).

HideSwitch ScreenshotTwo other alternatives I’ve stumbled upon are HideSwitch and Secrets Prefpane (at the time of this post the site was down. Get it at MacUpdate instead.) HideSwitch is just a simple mini-app with two buttons to hide and show hidden files. Secrets Prefpane is a just that: a button that shows up as a system preference and turns into a prefpane once clicked. However Secrets is quite powerful and can do a lot more than just show and hide files. Secrets includes a variety of features, such as:

  • Selecting the format and destination folder of saved screenshots
  • Changing the login window desktop picture
  • Changing Dock effects
  • Seeing the contents of folders when QuickLooking (I don’t think this works on Lion)
  • Enabling the debug menu in iCal

Those are just a few that I’ve found useful and interesting. Since it’s free, you may want to download it and check it out. Might have a feature you’ve been dying to have. Secrets also taps into many of the preferences of your other programs such as Adium, iTunes, Cyberduck, Skype, Preview, Transmission, etc.

Secrets Prefpane Screenshot

Mini-App of the Day: BetterTouchTool

BetterTouchTool IconIf you don’t know what BetterTouchTool is, you should read this post. If you have a Mac, you should really read this post. If you have a PC, you should still read this post. It will be worth your time to see what you are missing out on either way. It will also answer why you’d ever want to buy a Magic Trackpad if you are a Mac user and you’re saying to yourself, “Isn’t a mouse better in all regards?” For those of you who know what BetterTouchTool is and currently use it…just glory in your preeminence. ;)

BetterTouchTool is a big reason why I have loved my switch to a Mac for the last 2 years. I’ve always been a PC user. I have nothing against PC’s in general. I had some bad luck with a Dell laptop once, but I’ve seen plenty of Macs crash and burn too (some of you are probably sitting there saying, “You should have bought an HP” or “…a Lenovo.”). Though, those Asus Ultrabooks are looking pretty slick if you want the PC version of a MacBook Air.

BetterTouchTool is a utility designed to give you more control of gestures on your trackpad.  Apple did us a huge favor by making trackpads a lot bigger and by integrating the button into the pad. Genious. Apple also did us a great favor by eliminating (and returning to their old standard I might add) the second button because now if you want those menus, you just tap with two fingers. Also genious. (I realize this is up for debate depending on preference and habit, but if you are going to just argue more is better, I won’t humor you. I will entertain that two buttons–one on the left, one on the right–is just as good.)

So what does this mean? Well, Apple included a few gestures in Leopard, then a few more in Snow Leopard, then a few more in Lion. Maybe they’ll finally have a sufficient amount in Mountain Lion, though I doubt it. BetterTouchTool (BTT) makes up the lack thereof. You can go ahead and turn off most of the default gestures Apple gives you and re-program them how you want. That’s what I did. BTT allows you to add almost as many gestures as you can think of and assign them any number of preconfigured actions or a shortcut key. So now, instead of having to move your cursor everywhere or even reach to your keyboard for a shortcut, you can just use your trackpad.

For example, if you want to open and close tabs in your Internet browser, or go back and forward in your navigation history, you can do that with a gesture. You don’t need to click the button with your cursor or press Ctrl/Cmd + T or Ctrl/Cmd + [. Just program those shortcuts into gestures. This goes for any program.

Since it’s kind of hard to demo this with screenshots because you would need to verify I’m not using the keyboard, I went ahead and made a simple screencast video.

The following video gives you a short idea of how to actually “program” these gestures.

One limitation to gestures is that you inevitably run out of easy to remember and easily executed gestures. There are a lot of different gestures available, but some of them are hard to execute so chances are you will just resort back to keyboard shortcuts or cursor clicking. That said, I would encourage you to not give up after the first couple attempts to use some of the gestures. Putting all five fingers on the track pad and clicking is a little awkward the first time (just like the first time you played Halo and had to get used to the strange joystick combination or the first time you drove stick shift or rode a bike). Naturally, your muscles will adapt and you will react on muscle memory as soon as your mind thinks “Finder” or “New Tab.”

For your convenience and demo-ing. I’ve included a download of my current BetterTouchTool configuration below. I admit there is a lot of room for expansion into other apps I don’t use regularly; however, the basic and most powerful functionality that I need is there and I use it everyday. I highly encourage you to check this out and spend some time customizing it to your needs. It will highly improve your Mac experience.

Download BetterTouchTool.
Download BTT Functionality Demo Video or view on YouTube.
Download BTT Preferences Demo Video or view on YouTube.
Download My BTT Configuration File (you’ll want to remove the .txt extension before importing).

Mini-App of the Day: SmartSleep

SmartSleepSmartSleep is great for those who are constantly on the go, opening and closing their Macbook. SmartSleep gives the user great control over how and when the computer sleeps and hibernates.

Typically, you’ll probably want your Macbook to sleep when you close it (keep the contents of open files and apps that are running in RAM). Sleep is conveniently fast. If you’re a student like me, you don’t want to have to worry about corrupting your hardrive after throwing your laptop in a bag of some sort and running around campus or dropping it on the floor.

However, what if the batter charge is less than 10%? If you sleep your Macbook and the battery dies, you will lose anything stored in RAM that wasn’t previously saved to your hardrive. Thus, you’ll want to hibernate. But keeping track of the battery charge and changing this setting manually is cumbersome. This is where SmartSleep excels. You can set your computer to sleep until it reaches a certain charge level (e.g. 10%), at which point it will hibernate to protect your data in the event your battery dies.

Another nice thing about SmartSleep is it just sits in your preference pane; no extra menubar icons necessary.

If you don’t want to pay for the new version, I’d suggest downloading the older, free version from Softsonic.

SmartSleep Screenshor


App of the Day: Audacity

Audacity Logo

As a follow-up to my post on Soundflower, I thought it would be appropriate to make a post about Audacity. To quote directly from the Audacity website:

Audacity is a free, easy-to-use and multilingual audio editor and recorder for Windows, Mac OS X, GNU/Linux and other operating systems. You can use Audacity to:

  • Record live audio.
  • Convert tapes and records into digital recordings or CDs.
  • Edit Ogg Vorbis, MP3, WAV or AIFF sound files.
  • Cut, copy, splice or mix sounds together.
  • Change the speed or pitch of a recording.
  • And more! See the complete list of features.

In the past I’ve used Audacity to edit music for content and quality, convert audio files to different formats, record music and record lectures. I highly recommend it to anyone who loves working with audio for fun. There are a variety of plugins available on the web too.

Audacity Screenshot

Mini-App of the Day: Soundflower

Soundflower (also available from is a simple, free app that allows you to pass audio from one program to another. It basically masks as a virtual audio device. For example, if you want to record the audio from a certain video, you can play the video in VLC, iTunes or another player of your choice and send it to an input device or software such as Audacity or Max via Soundflower. Once installed, the Soundflower options are easily accessed by pressing alt/option and clicking the speaker volume button in the menubar. From there you have the option of changing the output and input devices. Another alternative is to run Soundflower Bed, which is just a menu app that gives access to more of the functionality. By making Soundflower both the input and output device it becomes your virtual microphone and speakers, effectively recording any audio output to the input device/software of your choice. Unfortunately, it is only available for Mac OS X.

An alternative to Soundflower that has received high ratings is JackOSX.

Soundflower Screenshot

Mini-App of the Day: Caffeine

Do you hate it when your screen dims or the screensaver comes on continually? But at the same time you don’t want to get rid of the functionality to save battery power when necessary? Perhaps you are viewing something on your computer as a reference, but you don’t use the keyboard or move the mouse much?

Personally I notice screen dimming the most when I’m not plugged into a power source and I’m working with someone on a project or trying to explain something to another person and the screen keeps dimming or the screensaver comes on because I’m not moving the mouse or typing on the keyboard.

Caffeine is the best solution I’ve found for this problem. It sits in the menubar as a little coffee cup. When you don’t want the screen to dim, you simply click it. When you want to turn automatic screen dimming or your screensaver back on, click it again. You can even set it with a timeout. So say you only want it to leave the screen on for an hour or even 5 hours before returning to automatic dimming–you can tell it to do that too.

Check it out. I promise you won’t regret it. Caffeine.

Oh yeah…and it’s FREE.