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?

App of the Day: Paint for Mac = Paintbrush

The other day I was looking for a Mac alternative to Windows’ Paint. Thus I discovered Paintbrush. It’s basically a clone of Paint and is great for simple tasks you don’t need Photoshop for (or maybe you don’t own Photoshop). Plus Paintbrush is really lightweight (as you can imagine) so you don’t have to wait for Photoshop to load up. I used Paintbrush to create the mini-icon for my website you see in the tabbed window of your browser.

Paintbursh Screenshot

App of the Day: Sublime Text 2

Sublime Text 2 IconThere are a lot of different text/code editors out there. Some people swear by Coda ($99) or TextMate (~$50). Others prefer TextWrangler because it’s free and still has plenty of power to get the job done. If your a PC person, Notepad++ may be your weapon of choice. This post isn’t meant to be a review or comparison of the different text editors out there, but simply an introduction to another awesome alternative that I think is more unheard of than not.

Last summer a close friend referred me to Sublime Text 2. Before Sublime, I used TextWrangler, and I gotta say, the wrangler is great, but I just didn’t connect with it for some reason. I’ll admit, I didn’t really research all its functionality or install very many plugins, but I’ve heard great things. Regardless, Sublime resonated with me instantly.

Sublime is clean; no buttons all over the place. It’s got this awesome “1000 ft” distance view that can be used to scroll fast through code or find a section of your code through pattern recognition in the line structure. I’ve found it very helpful since I often use it to look through error stack traces, which are very pattern prone and are often thousands of lines long. Sublime has syntax highlighting for just about every language possible (much like other editors). You can control the preferences really easily too, changing just about any functionality. For example if you don’t like the “1000 ft view,” you can turn that off. Did I mention autocomplete? Yup…and while this isn’t language specific, it’s surprisingly smart and very helpful. Not nearly as powerful as autocomplete in Xcode, NetBeans or the like, but still a very useful feature.

These are just a few of the features that came to mind first and that I’ve found very helpful. Here’s a list of a few more (This comes straight from the documentation):

Usage

Customization

Miscellaneous

API

Oh and…Sublime is pretty platform agnostic. It’s available on Mac OS X, Linux and Windows (32- & 64-bit). You can also download “portable” versions for Windows that are self-contained so if you just want to try it out or keep it lite, you don’t have to worry about it installing extra garbage in your registry or system folders.

Sublime isn’t technically “free.” Here’s what the author has to say about that:

Sublime Text 2 may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

So in other words, you can use it indefinitely without any limitations. I think it asks you to buy a license after every 25 saves or something? I didn’t find it very annoying personally. After I realized I really liked it, I just asked my company to buy me a license for work. The downside is that if you can’t work a deal like that then it costs $59 for one license.

Try it out and tell me what you think. What’s it missing? Would you switch?

*UPDATE* You should really check out Tuts+ for a list of very useful tips and tricks for Sublime Text 2. It will blow your mind if you don’t know about these features already.

Sublime Syntax Spell Checking

Syntax Spell Checking

Sublime Syntax Highlighting Javascript in HTML in PHP

Syntax Highlighting Javascript in HTML in PHP? No problem...

Sublime Multiple Selections

Make Multiple Selections

Sublime Find and Replace with Regex

Find and Replace with Regex

Sublime Edit Side-by-Side

Editing side-by-side


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 code.google.com) 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