Skip to main content

Mac tools for profs

Macs seem to be insanely popular amongst CS faculty. Most conferences and faculty meetings I go to are dominated by Mac users. No big surprises, since (a) Macs work, and (b) they're sexy. I switched from Linux to Mac a couple of years ago after I got tired of editing three configuration files and rebooting to join a wireless LAN. That worked when I was a grad student, but now I'm too busy for that kind of crap.

I wanted to share some links to good Mac specific tools that I've found to be very useful in my job. If you have other suggestions, please share them as comments!

OmniGraffle is a great figure drawing program and produces very professional results. It's also easy as hell since it can do most of the layout for you, making sure that the boxes and arrows all line up correctly. The PDF output looks very slick and I've been using it for most of the figures in my papers; see Figure 1 in our SenSys'08 paper on Pixie for an example. Be sure to get the educational pricing.

Papers is one of my favorite Mac apps. It's like iPhoto for PDF files -- it will keep track of all of your papers, index them by title, author, keyword, etc. I use this program to keep track of my ever-growing reading list (rather than printing out a bunch of papers and letting them collect dust on my desk.) It also has a pretty slick interface for matching metadata about a paper (e.g., to pull in full citation information from the ACM Digital Library or Google Scholar) and for exporting to BibTeX and other formats. You can take notes and there's even an iPhone app (and soon, an iPad app) to let you read and take notes on papers on the go. (Yes, reading a two-column paper on the iPhone screen works -- if you zoom in on a single column and go widescreen, the text is the same size as on a printed page.) The only downside is that you have to manually synchronize the Papers library across multiple machines, easily accomplished with Unison, but I wish that were simpler.

BibDesk is a BibTeX library organizer. To import a new BibTeX entry, just copy it to your clipboard and paste it in BibTeX -- everything appears in the correct fields. You can also drag and drop BibTeX entries between files. This is infinitely easier than editing BibTeX files by hand and keeps the formatting right.

OmmWriter is a fantastic little app that is a essentially a Zen text editor -- it clears your entire screen and shows you only the text that you are writing. This is a great way of minimizing distractions and focusing while you write. WriteRoom is similar but I find OmmWriter's interface more appealing.

Finally, Caffeine is a little app I could not do without -- it puts an icon in your menu bar that, when clicked, disables your screensaver. This is very important when giving talks and avoids the embarrassing moment when your screen saver kicks in mid-presentation.


  1. Two notes about Papers:

    Papers has student pricing too.

    Also, you didn't mention one of the best parts about Papers, which is that if your university/corporate library provides a proxy link, Papers will proxy your connections to ACM, IEEE, &c. so that you can download papers from off-campus. [University of Washington -- see here:]

  2. Hey Matt.
    Nice post!
    Quick note, Papers has moved. It's now here:

  3. My own additions:

    a) latexit: great tool for creating quick equation graphics to drop into slides or diagrams (works well with Omnigraffle).

    b) Aquamacs-Skim combination for writing latex files.

  4. Though Papers is great, you should check out Mendeley too. It syncs with multiple machines too and is free.

  5. Apart from the many tiresome beachballs and a tendency to leak memory, I like the OS. A fine user experience for the most part, and it's hard to envision switching away.

    The hardware on the other hand has been pretty finicky. (I've seen more disk deaths in my iMac population the last couple of years than in fifteen years of PCs.) Not quite the premium german machines Apple like to pretend that they're selling.

  6. Another text editor with good full screen support is Bean:

    Nice plus: it's free, so go give it a try.

  7. A quick question: Have you found a way to get USENIX papers easily and accurately into Papers?

  8. By far the most useful useful app I use is Devonthink Pro, in the style described by Steven Berlin Johnson. I've become an evangelist for the program and now use it to organize my own research. It might be geared more towards liberal arts, at least as described, but I can still see it being very useful for, say, abstracts and conclusions.


Post a Comment

Popular posts from this blog

Why I'm leaving Harvard

The word is out that I have decided to resign my tenured faculty job at Harvard to remain at Google. Obviously this will be a big change in my career, and one that I have spent a tremendous amount of time mulling over the last few months.

Rather than let rumors spread about the reasons for my move, I think I should be pretty direct in explaining my thinking here.

I should say first of all that I'm not leaving because of any problems with Harvard. On the contrary, I love Harvard, and will miss it a lot. The computer science faculty are absolutely top-notch, and the students are the best a professor could ever hope to work with. It is a fantastic environment, very supportive, and full of great people. They were crazy enough to give me tenure, and I feel no small pang of guilt for leaving now. I joined Harvard because it offered the opportunity to make a big impact on a great department at an important school, and I have no regrets about my decision to go there eight years ago. But m…

Rewriting a large production system in Go

My team at Google is wrapping up an effort to rewrite a large production system (almost) entirely in Go. I say "almost" because one component of the system -- a library for transcoding between image formats -- works perfectly well in C++, so we decided to leave it as-is. But the rest of the system is 100% Go, not just wrappers to existing modules in C++ or another language. It's been a fun experience and I thought I'd share some lessons learned.

Why rewrite?

The first question we must answer is why we considered a rewrite in the first place. When we started this project, we adopted an existing C++ based system, which had been developed over the course of a couple of years by two of our sister teams at Google. It's a good system and does its job remarkably well. However, it has been used in several different projects with vastly different goals, leading to a nontrivial accretion of cruft. Over time, it became apparent that for us to continue to innovate rapidly wo…

Running a software team at Google

I'm often asked what my job is like at Google since I left academia. I guess going from tenured professor to software engineer sounds like a big step down. Job titles aside, I'm much happier and more productive in my new role than I was in the 8 years at Harvard, though there are actually a lot of similarities between being a professor and running a software team.

I lead a team at Google's Seattle office which is responsible for a range of projects in the mobile web performance area (for more background on my team's work see my earlier blog post on the topic). One of our projects is the recently-announced data compression proxy support in Chrome Mobile. We also work on the PageSpeed suite of technologies, specifically focusing on mobile web optimization, as well as a bunch of other cool stuff that I can't talk about just yet.

My official job title is just "software engineer," which is the most common (and coveted) role at Google. (I say "coveted&quo…