Programming

Working knowledge of many Free and Open-Source Software (FOSS) applications has rendered all aspects of my work into organized and modular chunks. If you are required to develop scientific computing-based simulation models that stand the test of time, you many find some useful information in this section.

Operating system: Ubuntu has come a long way and is really useful if you want to hit the ground running. Get a Long Term Support (LTS) version, released every 2 years in April. All following entries are alphabetical.

Code flow generation: Doxygen. Helps generate code flow charts and build dependency maps.

Editor: Sublime text (free-ish), gedit (free; get the plugins!), vim (terminal). I haven't tried to learn emacs; have not felt the calling.

File comparison: kompare or diff

File sharing: Dropbox (free; paid expansion), Google drive, Bitbucket, Github, ... options abound

Fortran compilers: gfortran (free), nvfortran (supports CUDA) and ifort. Use OPENMP/MPI/CUDA for parallel execution

Latex front-end: Texmaker (free, cross-platform)

Mobile ssh client: JuiceSSH. Really quick way to login to a machine from a phone/tablet.

PDF viewer: evince, okular. Evince updates and refreshes when latex recompiles a document, useful to read drafts immediately.

Presentation: Google slides - free. Warrants mention for being really well made and allowing multiple people to edit simultaneously

Scripting: Python3. Also add matplotlib (plotting), scipy (scientific computing), numpy (array manipulation), f90wrap (Fortran 90 wrapping for 1-d derived types + nesting support), oct2py (for MATLAB/Octave scripts), pyyaml (i/o files) and pyCUDA (python to CUDA-C interface) + dependencies. Spam scripting and text/file processing & plotting codes with this language - it reduces a lot of repetitive tasks (e.g. running and checking test cases) to a single button press. Combine with latex-based report generation to place a file into your online storage that you can check on your smartphone with the app.

Version control: smartgit (free, non-commercial), Sourcetree. Supports pulls over ssh, slick front-end. I've since changed to use only CUI

Where to learn coding: coursera.org, codecademy.com