Jump to my Home Page Send me a message Check out stuff on GitHub Check out my photography on Instagram Check out my profile on LinkedIn Check me out on Facebook

Software Resources

I use a large number of software tools in my daily work as a programmer, data analyst, and system architect. My philosophy is to use a variety of very powerful, dedicated tools together in a flow instead of using large, monolithic, "all in one" solutions. Listed on this page are some of the more important tools I use. Due to popular demand, most of the links are annotated -- with a few rants included for free... :)

 | Programming Languages | Development Tools | Libraries | Visualization & Graphics | DB | 

Mathematics & Statistics

Statistics

  • R -- The environment used by most research statisticians I know.
  • Root -- A nice C++ interpreter (CINT) combined with analysis tools for large data sets.

Interactive Math

  • Maxima -- An fantastic, and FREE, symbolic algebra package.
  • Macaulay2 -- My first stop for computational commutative algebra problems.
  • Singular -- Another nice package for commutative algebra problems.
  • GAP -- Great for groups and computational discrete algebra.
  • Octave -- A fantastic environment for numerical linear algebra.
  • Matlab -- A fantastic environment for numerical linear algebra.
  • Maple -- My favorite commercial symbolic algebra package.
  • Mathematica -- A commercial symbolic algebra package that I don't use anymore.

Document preparation

  • LaTeX -- My favorite document preparation system.
  • aspell -- Great replacement for ispell (knows about LaTeX and Emacs).

Misc

  • NIST -- Home of GAMS, the matrix market, and a ton of other great stuff.
  • UoF Matrix Collection -- The University of Florida Sparse Matrix Collection.

Visualization and Graphics Packages

Rendering

Photo

  • Photoshop -- The one all the "pros" use. Powerful but very expensive!
  • Bibble Pro -- Photographer oriented tool for fixing photos.
  • Photoshop Lightroom -- Nice digital darkroom, but the DAM toolkit is a bit lacking.
  • Media-Pro -- Best DAM tool I have used. No Linux support, but it is great software.
  • Aperture -- Nice digital darkroom with a fair DAM feature set. Resources: aperturepro

2D Art

  • ImageMagick -- A fantastic command line based image processing tool (photoshop without a GUI)
  • Painter X -- Painting/natural media simulation from Corel. Fantastic WACOM tablet support.
  • ArtRage -- A pen based drawing program. Inexpensive, Simple, elegant, and powerful.
  • gimp -- Powerful image processing package -- free Photoshop replacement.
  • inkscape -- Nice vector drawing package -- free Illustrator replacement.
  • Illustrator -- The classic from Adobe is still the best tool for vector-only artwork!
  • Photoshop -- Provides a great selection of drawing tools with good WACOM tablet support.

Science & Medical

  • Photoshop Extended -- Good SDK, scientific image analysis, DICOM, & FITS (FITS Liberator).
  • Madena -- A very nice MRI/Image viewer with a ton of analysis capabilities.
  • ImageJ -- The new, and sorta improved, java implementation of an NIH Image work-alike.
  • MultiSpec -- A free multispectral image data analysis system
  • OsiriX -- The best DICOM viewer and 3D reconstruction tool around (FREE!)

Scientific Visualization

  • SCIRun -- Sports a sophisticated data model and visual programming interface.
  • VisIt -- A turnkey solution for many visualization problems. Fast. Scalable. Flexible. Easy.
  • gnuplot -- A great, and free, tool for simple, quick graphs (2D & 3D).
  • Ploticus -- An flexible package for generating very nice looking graphics from scripts.
  • OpenDX -- Nice, but old. SCIRun is a modern alternative. VisIt is more user friendly option.
  • ParaView -- More of a geometry viewer than a visualization tool, but it is getting better.

3D Modeling

  • Blender -- A nice interactive environment for 3D artists.
  • Maya -- One of the best.
  • Maxon -- Cinema 4D provides a simple interface, and good tools.

Graphs

  • Graphviz -- A very nice, and free, graph layout package. Very useful.
  • Tulip -- A powerful, interactive graph visualization tool.
  • pixelglow's Graphviz -- A kool mac version of Graphviz.

Molecular Visualization

  • RasMol -- This is "old faithful" in the molecular visualization game.
  • Avogadro -- Visualization, molecular construction, and hooks to computational tools.
  • iMol -- A simple molecular visualization tool for MacOS X. It's small, fast, and easy to use.

Database Tools

Database Stuff

  • SQLite -- Embeddable, fast, small, server-less, light weight, file based database.
  • PostgreSQL -- My choice for all small database work.
  • Oracle -- Oracle is my first choice for databases bigger than a few hundred gigabytes.
  • PostgreSQL Autodoc -- Automatically generates UML diagrams from PostgreSQL DBs.
  • Berkeley DB -- One of the fastest, best designed key-value pair DBs you can find.

Programming languages I use frequently

C & C++

  • GCC -- Free C/C++ compiler (and a lot more)
  • Apple GCC -- Apple tweaks along with Objective C++ and Objective C.
  • GNU libstdc++ -- Standard C++ library for GCC
  • STL at SGI -- An old, nonstandard STL implementation. Good documentation.
  • BOOST -- Good source of high quality C++ goodies.

Scripting

  • Bash -- The best shell ever...
  • GNU sed -- One of the best sed's available.
  • GNU awk -- This is one of the best awk's available
  • Perl -- The original scripting language that changed the game. Get modules at CPAN
  • Ruby -- All the good bits of Perl & lisp rolled into an elegant little language.
  • Expect -- Great little scripting tool and library for interacting with terminal based programs.
  • Python -- A great scripting language -- if you can get over the forced indentation rules...

Java & JVM

  • ABCL -- Armed Bear Common Lisp runs inside a JVM.
  • Processing -- neat little Java based language for simple graphics programs

Javascript

  • jqPlot -- Client side plotting with a clean look and nice API.
  • miso -- Cool little javascript components for data manipulation.
  • dygraphs -- A fantastic time series plotting tool.
  • ProcessingJS -- A javascript version of Processing!

Fortran

  • GNU gfortran -- This is a good Fortran compiler considering the price.
  • AbSoft -- Very, VERY nice compilers for x86 Linux, x86 Windows, and MacOS X
  • Intel -- Good compilers for x86 Linux and Windows

LISP

  • SBCL -- Steel Bank Common Lisp is very robust and FAST -- My favorite LISP!!
  • ECL -- An easily embedable Common Lisp that can produce standalone compiled binaries.
  • CLISP -- A very portable and quite complete Common Lisp Implementation. A little slow.
  • CMUCL -- A full featured Common Lisp, but not very portable.
  • SLIME -- Fantastic Lisp environment for Emacs.
  • cliki -- Great resource for common lisp
  • ASDF -- Another System Definition Facility -- A great way to load packages.
  • Quicklisp -- Best thing to happen to LISP in years -- think rubygems/pip/CPAN for LISP.

Programming Tools

Editors

  • GNU Emacs -- The gold standard in editors. :)
  • XEmacs -- An alternative Emacs.
  • VIM -- The ultimate incarnation of VI -- a great editor.
  • TextWrangler -- A free editor for MacOS from the people at BareBones.

Formatting

  • GNU indent -- Re-indent all the horrible code other people send you! Yippie!!!
  • GNU Enscript -- Transform code into a form suitable for publication as HTML, PDF, and PS.
  • Highlight -- Transform code into a form suitable for publication as HTML.

Documenting

  • Doxygen -- The best looking code documentation generator I have ever found.

Building

  • GNU make-- Old reliable in the UNIX software development world.
  • Ant -- What all the kool kids (especially Java developers) are using now days.

Portability

  • GNU Autoconf -- Great way to make sure your project will work on various UNIX-ish platforms.
  • CMake -- More of a "make maker" than a build tool. Good Windows and UNIX-ish support.

Lexers & Parsers

  • Flex & Bison-- Reliable GNU versions of the good old Lex & Yacc tools
  • ANTLR -- ANTLR is a modern, popular, and full featured parser with a good guide book.
  • re2c -- re2c is a very fast, simple, easy to use, and well implemented parser.

Revision control

  • RCS -- This old gem is still useful for small, single developer projects.
  • CVS -- The old standard for projects requiring collaboration among far flung developers.
  • SVN -- What all the cool FOSS kids are using instead of CVS.
  • GIT -- My favorite for traditional (C/C++/Java) software development.
  • ClearCase -- Fantastic feature set, expensive, crusty, and unbelievably complex to manage.
  • Vesta -- Free, ClearCase-like feature set, good for large scale development organizations.

Debuggers

  • GDB -- Nice debugger with broad platform availability and supportive user community
  • MDB -- The only real choice for Solaris kernel debugging
  • DDD -- A nice GUI for GDB and DBX.

Libraries

MPI

  • OpenMPI -- This is one of the best MPI implementations around.
  • MPICH -- A very frequently used, and free, implementation.
  • MPI Forum -- Good source for MPI standards information.

CORBA

  • IONA -- Probably the leading, commercial CORBA vendor (They make Orbix and Orbacus)
  • ACE/TAO --Really more than just an ORB. Open source. High quality. Large user base.
  • omniORB -- Very nice ORB (Free, clean, easy to use, FAST, large user base).

Linear Algebra Libraries

Scientific Libraries

  • GMP -- The GNU arithmetic library is very capable and robust (it is GPL)
  • Ginac -- A C++/CAS library
  • GSL -- GNU Scientific Library (it is GPL)
  • NHSE-- HPCC Software
  • Blitz++-- C++ Num. Library
  • petsc-2 -- Numerical linear algebra, PDEs, random numbers, etc...

Random Numbers for Simulation

  • RANLIB -- Old, but very capable random number generator at NetLib
  • BOOST -- The C++ library has a nice random number generator.
  • GSL -- The GNU Scientific Library has a nice random number generator API
  • PRNG -- The people at pLab have put together
  • PRANF -- NERSC hosts Dr. Mark J. Durst's portable implementation of the Cray ranf library
  • Mersenne Twister -- Makoto Matsumoto's very nice random number generator

Scientific Data Libraries

  • NetCDF -- A very nice file format and API (very easy to use) from UNIDATA.
  • NCO & NCView -- Great tools for working with NetCDF files at the command line.
  • HDF5 -- HDF5 is a very nice file format and API.

2D & 3D Visualization

  • Cairo -- Not a visulization tool, but a very nice raster graphics library.
  • Coin3D -- An open source implementation of SGI's Open Inventor.
  • OGRE3D -- A very popular game engine.
  • Panda3d -- A game engine that is usable for scientific visualization applications too.
  • VTK -- High level visualization library. One of my favorite tools for high level work.
  • VRjuggler -- Very good place to start for VR application development.
  • OpenSceneGraph -- A very nice C++ scene graph (much like SGI's Performer)
  • NCAR -- A language and graphics library (NCL) for high quality 2 & 3D scientific graphics.
  • GNU Plotutils -- This is a simple library for drawing 3D vector graphics.
  • Mesa -- An open source OpenGL library
  • OpenGL. -- The bottom of the graphics stack for most high performance applications.

GUIs with C & C++

  • FLTK -- Very fast, small, portable GUI toolkit with good GLUT and OpenGL support.
  • wxWidgets -- A well organized application framework, with a few ugly code metaphors.
  • Fox Toolkit -- A small and well organized application framework with a great Ruby framework.
  • QT -- A full featured application framework with an annoying 'pre-compiler'.

Other Libraries

  • GNU readline -- Provides much of the command line awesomeness of great tools like bash.
  • zlib -- The original, free compression library for UNIX.
  • bzip2 -- A command line tool, but also a very nice compression library
  • ICU -- Comprehensive Unicode library

Misc

Astronomy

  • celestia -- Very nice planetarium program.
  • stellarium -- Simple planetarium program
  • xephem -- Sophisticated planetarium program with many more advanced features.
  • sofa -- Software for various astronomy calculations
  • novas -- Positional astronomy calculations
  • ORSA -- Gravitational system simulator

UNIX Network Tools

  • OpenSSL -- Swiss army knife for encryption.
  • OpenSSH -- Best SSH client and server available.
  • netcat -- Move bits around a network.
  • nmap -- Network scanning and system finger printing tool
  • fping -- Parallel ping tool.
  • TCPdump -- Snoop network traffic.

UNIX User Productivity

  • screen -- Terminal abstraction tool allowing terminal disconnect and reconnect.
  • fvwm2 -- Best X11 window manager ever.

Internet Tools

  • mairix -- E-mail folder search tool.
  • procmail -- Filter and process e-mail messages.
  • fetchmail -- POP3/IMAP client that can run in daemon mode and pass off messages to MDAs.
  • alpine -- Very nice text based e-mail client.
  • mutt -- Very nice text based e-mail client.
  • firefox -- The only browser I use.
© 2009 Mitch Richling