Mac OSX comes with a huge collection of tools pre-installed. Xcode has almost everything that a developer needs for C/C++ coding. Other things need to be installed. I mainly used two package managers for this.

  1. Homebrew
  2. Spack

Text editors

For C/C++ coding, I prefer XCode but VS Code is also nice. For Python and Fortran coding, I use MacVim.

Diff tool

OSX comes with a nice diff tool called opendiff which can be invoked from the command line to compare two files side by side.

Version control

git is already available and I use SourceTree as a gui for git.


OSX comes with Python2 but may not have all the packages you need. You can install Python using brew but I use Anaconda (in particular MiniConda) to get a Python installation.

Plotting/visualization tools

Gnuplot is really useful to do some quick and simple visualizations. Install via brew and select the window system as x11

brew install gnuplot --with-x11        # First install Xquartz

To generate line plots for publication, Matplotlib is probably the most useful. Install this from your Python distribution.

VisIt is my favourite program for visualizing PDE solutions coming from finite difference/volume/element methods. You may also want to try Paraview which is also very powerful tool.

Document preparation/viewing

MacTex is a nice way to install all the Latex packages.

To manage my bibliography, I have come to like Zotero a lot.

TexMacs is a wysiwyg editor that seems to be getting very good. I sometimes use it for writing small notes and documents.

Acrobat: For viewing pdf files, but I find this a very heavy application and avoid using it normally. I prefer to use builtin Preview. But there are some times when your PDF doesnt display properly and you absolutely need this. Keep it installed for those times.

Skim is another PDF viewer that is light weight.

djview: For viewing djvu archive files. Most ebooks are packaged as djvu files. The available binaries are old versions; you can install this via brew (brew install djview4).

Keynote is free with OSX and is surprisingly good, even better than PowerPoint. You also get Pages for free which is an alternative to Word.

LibreOffice: Built on openoffice.

File transfer

FileZilla lets you setup some servers so that you can quickly transfer files between your computers.

Image tools

Asymptote: Asymptote is a powerful descriptive vector graphics language that provides a natural coordinate-based framework for technical drawing. Labels and equations are typeset with LaTeX, for high-quality PostScript output. If you installed MaxTex, then you already have asymptote. Otherwise you can install it using brew.

ImageMagick: Use ImageMagick to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bezier curves.

Engauge: This open source, digitizing software converts an image file showing a graph or map, into numbers. The image file can come from a scanner, digital camera or screenshot. The numbers can be read on the screen, and written or copied to a spreadsheet

Inkscape: Inkscape is a Vector Graphics Editor, similar to Adobe Illustrator, that strives to be SVG Compliant, open source, responsive and extensible.

Video player

While I have experimented many, IINA is the one I now use.


While Safari is not bad, Opera is also very nice since it has builtin ad blocking, VPN and seems to be very light weight and fast.

Miscellaneous stuff

If you are behind a proxy server, then to get server settings to be visible under sudo, you need to set some environment variables for http and rsync and do the following

sudo visudo

Enter your password and add the following additional lines and save the file. You need to know how to use vi/vim for this.

Defaults env_keep += "http_proxy HTTP_PROXY"
Defaults env_keep += "https_proxy HTTPS_PROXY"
Defaults env_keep += "ftp_proxy FTP_PROXY"
Defaults env_keep += "rsync_proxy RSYNC_PROXY"

AppCleaner allows you to uninstall apps and all associated files.

To see some info on your wireless connection, click Option + wifi icon in menubar.

Hide Adium dock icon (you may have to reopen Adium)

defaults write /Applications/ LSUIElement true