I use a large number of software tools in my daily work as a programmer, data analyst, and system
architect. Myphilosophy 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... :)
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 (comparable with Matlab).
- Maple -- My favorite commercial symbolic algebra package.
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
2D Art
- Painter X -- Painting/natural media simulation from Corel. Fantastic WACOM tablet support.
- ArtRage -- A pen based drawing program. Inexpensive, Simple, elegant, and powerful.
- gimp
- inkscape
- 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 powerfull, interactive graph visalazation 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++
- JTC1/SC22/WG21 -- The standards body working on 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
Fortran
- GNU gfortran -- This is a good Fortran compiler considering the price.
- AbSoft -- Very, VERY nice compilers for x86/PPC Linux, x86 Windows, MacOS 9, and MacOS X
- g95 -- This project is still in it's beginnings -- It is NOT part of GNU.
LISP
- CLISP -- A very portable and quite complete Common Lisp Implementation. A little slow.
- SBCL -- Steel Bank Common Lisp is very robust and FAST.
- ECL -- An easily embedable Common Lisp that can produce standalone compiled binaries.
- CMUCL -- A full featured Common Lisp, but not very portable.
- SLIME -- Fantastic Lisp environment for Emacs.
- cliki -- Great resource for common 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.
Documenting
- Doxygen -- The best looking code documentation generator I have ever found.
- JavaDoc -- The standard solution for Java programmers -- I still like Doxygen better...
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
- 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).
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 numers, 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
- Coin3D -- An open source implementation of SGI's Open Inventor.
- OGRE3D -- A very popular game engine.
- Panda3d -- A game engine that is useable 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 ausomness of great tools like bash.
- zlib -- The origonal, free compression library for UNIX.
- bzip2 -- A command line tool, but also a very nice compression 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.