Building a Software/Hardware Environment for Research
Sometimes I get asked what software/hardware systems I recommend for research. Below is my standard advice. I am a scientific programmer and student and my day-to-day tasks involve research, data analysis, scientific programming, and writing. Data sets might include satellite images, model output, GPS, seismic, and a variety of other data. Data domains are ocean, atmosphere, and/or ice. I travel a lot, either from home to the office or to the field (which might mean months on a boat with no internet connection). Therefore I try to have a setup that supports high performance computing (HPC) on a laptop.
Purchase
Get a MacBook Pro.
If you need the extreme computing power of a quad-core desktop then you might consider the Mac Pro, but ideally you’d use the MacBook Pro and ssh into your local supercomputer or cluster. If you travel a lot and don’t need a lot of disk space you might consider a Macbook Air.
Computer
Get the 13 inch model. This makes traveling easier and maximizes battery life. Since you’ll have an external monitor at your desktop, even the 17 inch laptop will have a small screen in comparison, so you might as well go for portability.
Other specifications:
- Minimum CPU.
- Maximum hard drive space.
- Minimum RAM from Apple.
- Go get the maximum possible RAM from http://crucial.com 8GB is nice.
Peripherals
- One External monitor.
- Two backup disks, equal in size to your internal disk. Ideally one would be the Apple TimeCapsule, but this is quite expensive, so USB or FireWire disks will suffice. Keep one at home and one at the office. Set a calendar reminder to plug into each one at least once a week if you don’t do it every night by habit.
- Two adapter cables (one for VGA one for DVI) so you can connect to external monitors and/or projectors.
- A USB key to quickly transfer files
Optional Peripherals
- External mouse
- External keyboard
- Wacom tablet (to help with RSI and/or artwork)
- Headphones to tune out office mates
- A USB hub so you can plug in more than 2 peripherals
- A Firewire 400 to 800 adapter if you have old firewire drives not supported by the new laptop interface
Software
The following software list should allow you to write code in almost any language you choose, and to access, display, and analyze almost any data set. The following software will also help you manage your PDF library and write papers.
Official Apple Software
You must install the Apple “Developer Tools” package that is an optional install on the OS X disk provided with your computer. You know you have installed it if you have a “/Developer” folder at the root of your disk.
The Apple iWork suite is nice. It is nicer than MS Office for OS X and provides Pages, Keynote, and Numbers as equivalents to Word, PowerPoint, and Excel. Free alternatives to iWork and Office are Google Docs and Open Office. Or LaTeX for documents, CSV for spreadsheets, and Beamer for presentations.
3rd Party OS X Software
A partial list of useful 3rd party OS X software follows. Drop any of these words into your favorite search engine to get a download link. Software that cost money is starred*.
- Adium (For IM, Google Talk, etc.)
- AntiRSI (Reminds you to take a break from typing)
- Aquamacs (A good code editor)
- BibDesk or Mendeley (Manage your PDF library and references)
- Celestia (Fly through the universe)
- Cyberduck (FTP/SFTP)
- DoubleTake* (or Hugin) (Stitch together panoramic photos)
- Enthought Python Distribution (EPD) (One-stop shopping for all your Python needs)
- Firefox (Browse the web)
- Fluid (Make Gmail (or any other site) a stand-alone desktop application)
- GeoMapApp (Geospatial data browser)
- Gimp (Edit images)
- GoogleEarth
- GrandPerspective (Find out where disk space is getting used)
- Graphviz (Flowcharts)
- Growl (sleek uniform system notices)
- IDL*
- Jumpcut (Global clipboard buffer)
- LaTeXiT
- MATLAB*
- MacFUSE (make any computer appear like a local folder via ssh)
- MenuMeters (monitor your system status in the menubar)
- Mouse Locator (never lose your pointer even on a big screen)
- ODV (Ocean Data Viewer)
- OmniGraphSketcher* (Make pretty charts)
- PDF to Keynote (Convert PDFs to Keynote slides)
- Qgis (A free GIS application)
- Quicksilver (Use your keyboard for everything. Be efficient)
- Sim Daltonism (Simulate color-blind and color-deficiencies so you know your graphs will be readable by everyone, and even print to grayscale well)
- Skim (An enhanced PDF reader if you find Preview.app lacking)
- Stellarium (See the stars)
- SuperDuper!* (Clone a disk for backup, although Time Machine is probably good enough)
- Sysquake (For control or robotics applications)
- Vapor (or Visit) (Advanced visualization software)
From the above list, I want to stress the following:
- A good PDF manager is essential for research and writing. Use BibDesk, Mendeley, or Zotero or CiteULike.
- Firefox is a decent web browser, but what makes it very useful are the extensions and customization it allows:
- Smart bookmarks can make searching any website a breeze. For example you could just type “gsch keywords” as a shortcut for Google Scholar.
- Useful extensions are: DownloadHelper, DownThemAll!, Firefox PDF Plugin for Mac OS X, Flashblock, Permit Cookies, Tab Mix Plus, TabSwitcher, Tree Style Tab, Zotero.
- Jumpcut is amazing.
- Fluid will change the way you use your web browser. If you use FaceBook or Gmail or have some other website that is persistently open in your browser, make it a stand-alone application with its own icon, and free your browser for browsing.
- You might notice no mention of Adobe.
- For basic image work, I use Gimp or GraphicsMagick instead of PhotoShop.
- For posters I use Pages, Keynote, Beamer, or Powerpoint rather than Illustrator.
- For PDFs I use Preview or Skim rather than Acrobat.
Unix Software
Much of the following unix-based software will only work if the Apple Developer tools is installed as suggested above.
The main system that provides access to a variety of unix tools is fink. (OS X is code-named Darwin, and Darwin is linked to Galapagos finches, and fink is the German word for finch, and the main developer of fink is German).
If you prefer not to use fink, you can probably get many of your HPC tools installed via double-clicking. This might be easier, but your choices will be limited compared to fink, and you won’t have one environment that lets you manage all of the software. However, if all you need is one FORTRAN compiler, or one LaTeX installation, then you might want to search through the pages listed in the Other Resources section below.
Fink
Download and install fink. Follow the default options, but then enable the “unstable” tree to get access to a whole lot of additional (perfectly stable) software.
Once fink is installed and set up, you want to use it to install your favorite unix tools. You can find things to install with the “list” command, like this: “fink list fortran”. I find the following tools quite useful, but I like to geo-tag images and write presentations in LaTeX…
fink install base-files bash bash-completion contacts coreutils daemonic ddclient detex exiftags exiv2 fuse g77 gcc44 ghostscript gmt gpsbabel graphicsmagick ispell latex-beamer launch lynx minicom mpack ncarg ncftp ncview proj pstree psutils r-base smartmontools tesseract texlive-base texlive-texmf tree unzip watch wget xtermcontrol
Due to dependency bloat, I prefer graphicsmagick to imagemagick, and avoid using “gv” altogether. Instead of gv I use the less user-friendly “gs” from ghostview, let Preview.app convert it to PDF, or manually convert it to pdf with “ps2pdf”. Again due to dependency bloat, Octave and gnuplot are two of the few “unix” tools that I install without fink, instead using the OS X HPC page listed at the bottom.
Not Fink
Not everything is available in Fink. I have found the following non-fink-packaged software useful:
- csv2latex (convert CSV files to LaTeX tables)
- gpicsync (geotag and produce KML files of photos)
- ViewPoints (multivariate data exploration tool)
Customizing
Now that the software is installed, you’ll need to spend some time customizing it. The following key areas should be customized for efficiency:
- Your bash prompt (.bash_profile)
- Bash aliases (.bash_profile)
- Emacs/Aquamacs (.emacs)
- SSH (.ssh/config) and ssh keys
With a bit of effort adjusting the above files you can, for example, log into your remote machines with just two keystrokes, one of them being the return key.
Windows and Other Operating Systems
If you want to run Windows and/or other flavors of Linux (OS X being based on BSD), you can easily do so. You have four main choices: BootCamp, VMWare, Parallels, or VirtualBox, and some minor choices: Crossover, Wine, etc.
Use VirtualBox to host your Windows installation as a local disk image. Do not use the Apple BootCamp.
If you need to run Windows by itself, and want to use some of the tools mentioned in this page in Linux in Windows, you have a few options. The most popular is a Linux Live CD (try Ubuntu). Less popular but easier (no CD required) is andLinux. Download, double-click, install like regular Windows software, reboot, and you’ll have a bash shell icon on your desktop.
Extra Hardware
- If you program hardware via serial ports you’ll need a USB to Serial adapter. Keyspan makes the best ones. You’ll also want to make sure minicom is installed (fink install minicom).
- If you use Google Earth a lot you will be grateful to invest in a 3D Connexion 6-DOF mouse.
- If you want more than 1 external monitor, the best solution is a new breed of USB-based monitors. You can have, I think, as many as you like.
- If you read a lot of papers an eBook might be a good investment. The only one big enough at the time of this writing to display PDFs as images is the Kindle DX. If you can wait 6 months to a year there should be some good competition and even laptops that have screens that switch to e-ink mode when dimmed.
UCSC Specific Tips
UCSC provides licenses for MATLAB and ENVI (which includes IDL). You can run these for free when you are on the campus network (although I think you have to be wired, or on the “cruznet secure” network, not on the general cruznet network.).
If you want to run the software from home you can set up a VPN. This makes your computer appear as though it is on the UCSC network, even though you can be anywhere in the world. The VPN is also beneficial as it lets you access libraries and journals as though you are on campus, making it easy to download papers into BibDesk.
Other Resources and Alternatives
- http://hpc.sourceforge.net/
- http://www.atmos.washington.edu/~salathe/osx_unix/
- http://www.macresearch.org/
- http://www.osxgnu.org/
- You can use Darwin Ports instead of fink: http://darwinports.com/
March 15th, 2010 at 11:21
Even though I’m not entirely in agreement with your Mac-centric way of doing things, I must admit this is a pretty good setup guide. Thanks also for including Mendeley as a paper management tool. Would you consider hyperlinking the mention in your post above to http://mendeley.com?
Thanks again and all the best!
March 16th, 2010 at 10:07
Links to Mendeley added. Mendeley isn’t as pretty as BibDesk since it isn’t Mac-native, but I think it might be better. Much better importing, and the bulk-editing feature is nice too.
Note that I’m actually a unix geek (hence the Emacs, LaTeX, fink, etc.). This isn’t Mac-centric, it is just that Macs are currently the nicest way to run unix.
March 16th, 2010 at 13:50
Cool. Thanks Ken! Please don’t hesitate to get in touch directly if you have any questions in the future.
March 24th, 2010 at 16:02
An alternative to a backup disk (or to a 2nd backup disk) is Mozy http://mozy.com/
March 29th, 2010 at 18:45
The Apple-supplied X11 is sometimes buggy. A 3rd party version is available here: http://xquartz.macosforge.org/trac/wiki and should be installed (and re-installed after each security update).