My ten essential Mac programs
Firefox is my browser of choice. No big surprise there. Not much to say except tabbed browsing is great.
Quicksilver, if you are unfamiliar, is an application launcher for Mac OSX. If you’re a fan of analogies:
Spotlight : Documents :: Quicksilver : Applications
That’s a bit simplistic, as Quicksilver can do more than just launch applications, but that’s 99% of what I use it for, so the analogy stands.
TinyGrab is an amazingly simple screen shot app for both Windows and Mac OS X (I use it on both platforms and it works better on Mac). After registering for an account, you keep the app running in the background. Any time you take a screenshot via Command Shift 3 (full screen capture) or Command Shift 4 (area of screen or window capture), the picture is automatically uploaded to the service, and a small url to the picture is copied to your clipboard. All of the icons you see here are hosted on TinyGrab’s servers and were uploaded near instantaneously. I say it works better on Mac than Windows because the Mac one merely hooks onto the act of capturing a screenshot using the already excellent Mac tools; when you press the hotkey to take a picture on Windows, it has to use its own “clip this area of the screen” feature, and it doesn’t work quite as seamlessly as on the Mac.
You may have already seen my previous R posts; R is a programming language intended for statistics. It has dozens of high-quality open source code modules from mathematicians and scientists from around the world. It is a great tool for doing exploratory data analysis.
R can be used both interactively through the R Console program, as well as through scripts.
If you’re programming in Java and you’re not using an IDE, you are wasting your time. Netbeans and Eclipse are the two biggies in the Java world; I prefer Netbeans due to its great built-in keyboard macros. By memorizing a few keyboard shortcuts, you can save dozens of keystrokes from commonly typed phrases. For instance, declaring constants is usually quite verbose in Java:
public static final int BUFFER_SIZE = 1024;
With netbeans you can shorten the 24 characters before the variable name to five: Psfi -> TAB. There are a whole raft of such shortcuts, and they are indispensable for easing the pain of Java’s verbosity.
Other great and essential features include the ability to automatically determine which modules need to be imported; this feature alone makes an IDE superior to a dumb text editor. The other feature that immediately springs to mind is the ability to easily refactor code; you can change the name of a variable in one file and have it propagate to all files that reference it, rather than having to find and replace the string in all the files.
Unlike the other tools in this post, MacPorts is a command line utility. I use it when I need to install some open source library or project and there is no installer available for my platform. If there’s a port version of the software available, it handles all the dependency management, installs the libraries where they need to go, and updates all the necessary environment variables.
Textmate is my text editor of choice for all things non-Java. It makes it very easy to open a directory as a project and then jump around between files within it (with a very smart, intuitive search feature). Just as netbeans has tab code completions, so does Textmate. Common shortcuts (“snippets”) are bundled up and distributed with the software; it is also easy to add your own. It seems to be the de facto standard for web development (every Ruby on Rails developer I’ve ever met uses it).
Two main complaints:
- Some strange default behavior: If I select a bunch of text and hit tab, I would expect that to indent the text rather than delete the contents of it. Similarly for shift tab. Instead, you must hit option tab and option shift tab (that’s a bit of a finger stretcher)
- You cannot split a window and look at two sections of it at the same time.
WriteRoom is the antithesis of Microsoft Word, or any modern text editor. Whereas most programs throw feature after feature at you, WriteRoom strips it down to the barest of feature sets. The minimalist nature extends to the presentation as well; when you boot it up you begin by staring at a full screen blank picture. Text is monochrome green by default, though both the background and foreground colors can be changed. By stripping all user interface elements out of the view, you are free to focus on the task of writing without any distractions.
Obviously this is not well suited to all tasks; if you are doing any sort of work in which you need to simultaneously reference other materials (e.g. look at a website or excel spreadsheet at the same time), this is not for you. But if you need to brainstorm something and get some thoughts down onto paper, this is a great choice.
LaTeX (unfortunately named for Google searching) is a typesetting language/program. It’s used extensively by college professors and others looking for beautifully typeset text and equations. Unlike Microsoft Word, composing a document using LaTeX is most certainly not WYSIWYG, but its creators see that as a feature and not a bug. They claim that people waste an inordinate time fiddling with fonts and presentation rather than content. By formatting your work as a Latex document, you can render it in multiple different ways just by changing a template.
The MacTeX package includes LaTeXIt, TeXShop, and BibDesk, as well as a few other programs I never touch.
LaTeXiT is a small program for creating equations and other snippets to embed in other sources.
TeXShop is a full fledged editor of LaTeX documents; if you’re doing any sort of serious document creation, you’re probably going to do it in TeXShop. There’s nothing stopping you from composing your documents in any plaintext editor, but you will have to manually run the scripts that convert your text into PDF; TeXShop automates some of that hassle.
BibDesk is a program for managing bibliographic entries.
An excellent chat/IM client for Mac that supports all the big formats. Recognize your favorite protocol from the icons it supports?
Why install a chat program on a work computer? IM and chat is a big part of collaborative software development.
Some of these programs are fairly well known (Firefox, Adium, Netbeans), but I hope I have exposed you to some new programs.