From charlesreid1

(Created page with "Welcome to the Programs category page. This page links to any pages related to computer programs or pieces of software.")
 
No edit summary
Line 1: Line 1:
Welcome to the Programs category page.
All programs listed on this page are free or open-source... unless they have a big dollar sign next to them.


This page links to any pages related to computer programs or pieces of software.
__TOC__
 
 
= My Build Procedure =
 
When I build programs from source, I use the following setup:
 
* Programs are all installed in the <code>~/pkg</code> directory
 
* Tarballs are downloaded to <code>~/pkg/tarballs</code>
 
* Tarballs are untarred to <code>~/pkg/sources</code> using the command:
 
<syntaxhighlight lang="bash">
tar xvzf program-x.x.x.tar.gz -C ../sources/
</syntaxhighlight>
 
* The usual configure/make/make install procedure is performed, but the configure line used is put into a script named <code>runconfigure.program-x.x.x.operating-system.sh</code>, and I put notes into the configure file's comments, so that I have a detailed record of:
** What configure line options I used
** Whether I used a non-standard series of steps, took any extra steps (e.g. <code>make test</code>), or had to install any dependencies
** The date I last modified the configure line
 
* The program is installed to <code>pkg/program/x.x.x/</code> using the <code>--prefix=$HOME/pkg/program/x.x.x</code> configure option
 
* (Optional) Once the program is installed, I add <code>pkg/program/x.x.x/bin</code> to my <code>$PATH</code> by adding the following line to my <code>$HOME/.profile</code>:
 
<syntaxhighlight lang="bash">
export PATH="${PATH}:${HOME}/pkg/program/x.x.x/bin"
</syntaxhighlight>
 
* Alternately, I can create a link to the "standard version" for my system in <code>$HOME/pkg/program/std</code>, which links to the most up-to-date version of the program; that way, I can install 2 or 3 or more versions of the program, but have the standard version point to the one I want to use.  This way, I don't have to update my <code>$HOME/.profile</code> every time, because the <code>.profile</code> contains:
 
<syntaxhighlight lang="bash">
export PATH="${PATH}:${HOME}/pkg/program/std/bin"
</syntaxhighlight>
 
= Unix System Utilities =
 
{|border="1" class="wikitable"
!Unix system utility
!Wikipedia description
|-
|[[Aptitude]]
|
|-
|[[Awk]]
|[[wikipedia:awk]]
|-
|[[Bash]]
|[[wikipedia:bash]]
|-
|[[Emacs]]
|[[wikipedia:emacs]]
|-
|[[Sed]]
|[[wikipedia:sed]]
|-
|[[SSH]]
|[[wikipedia:secure shell]]
|-
|[[Vim]]
|[[wikipedia:vim (text editor)]]
|-
|[[Xargs]]
|[[wikipedia:xargs]]
|}
 
= Programs Built From Source =
 
 
{|border="1" class="wikitable"
!Program
!Link to webpage
|-
|[[Apache]]
|http://httpd.apache.org/
 
|-
|[[Cantera]]
|http://sourceforge.net/projects/cantera/
 
|-
|Class library for numbers (cln)
|http://www.ginac.de/CLN/
 
|-
|[[CMake]]
|http://www.cmake.org/
 
|-
|[[ctags]]
|http://ctags.sourceforge.net/
 
|-
|[[Doxygen]]
|http://www.stack.nl/~dimitri/doxygen/
 
|-
| [[Emacs]]
| http://www.gnu.org/software/emacs/
 
|-
| [[GDB|GNU debugger (gdb)]]
| http://www.gnu.org/software/gdb/
 
|-
| [[Ginac]]
| http://www.ginac.de/
 
|-
| [[googlecl]]
| https://code.google.com/p/googlecl/
 
|-
| [[gnuplot|gnu plotting program (gnuplot)]]
| http://www.gnuplot.info
 
|-
| [[gpg|gnu privacy guard (gpg)]]
| http://www.gnupg.org/
 
|-
| [[HDF5]]
| http://www.hdfgroup.org/HDF5/
 
|-
| [[Hypre]]
| http://acts.nersc.gov/hypre/
 
|-
| [[LAM MPI]]
| http://www.lam-mpi.org
 
|-
| [[OpenMPI]]
| http://www.open-mpi.org/
 
|-
| [[Petsc]]
| http://www.mcs.anl.gov/petsc/petsc-as/
 
|-
| [[PHP]]
| http://www.php.net/
 
|-
| [[Ruby]]
| http://www.ruby-lang.org/en/
 
|-
|[[Snort]]
|http://www.snort.org/
 
|-
|[[Subversion]]
|http://subversion.tigris.org/
 
|-
|[[Sundials]]
|https://computation.llnl.gov/casc/sundials/main.html
 
|-
|[[Trillinos]]
|http://trilinos.sandia.gov/
|}
 
= OS-Agnostic (Binary) =
 
{|border="1" class="wikitable"
!Program
!Description
!Website
|-
|Audacity
|a nice audio recording/editing program
|http://audacity.sourceforge.net/
|-
|[[ffmpeg]]
|all-in-one video processing swiss-army-knife
|http://www.ffmpeg.org/
|-
|[[ffmpeg]]x
|GUI interface for ffmpeg
|http://www.ffmpegx.com/
|-
|[[Fink]]
|Package manager for Mac OS X; makes installing many Unix-based programs much less of a hassle
|http://fink.org
|-
|Gimp
|open-source image editor
|http://www.gimp.org/
|-
|[[Git]]
|a version control system, differs from subversion in a number of ways, designed with a focus on making it easy to branch and merge
|http://git-scm.com/
|-
|Handbrake
|similar to ffmpegx, a GUI interface for converting different video formats
|http://handbrake.fr/
|-
|[[Lapack]]
|Linear algebra package for matrix and vector operations
|http://www.netlib.org/
|-
|[[LyX]]
|a really handy GUI WYSIWYM Latex editor
|http://www.lyx.org/
|-
| [[Matlab]]
| computational package
| http://www.mathworks.com
|-
| Octave
| open-source Matlab alternative 
| http://www.gnu.org/software/octave/ 
|-
| Open Office
| open-source Microsoft Office alternative
| http://www.openoffice.org/
|-
| [[Python]]
| programming language
| http://www.python.org/
|-
|[[Sage]]
|open-source Matlab, Maple, Mathematica alternatives rolled into a Python Swiss Army Knife contained on a VMWare image so it can run cross-platform
|http://www.sagemath.org/
|-
|TexMaker
|Latex text editor
|http://www.xm1math.net/texmaker/
|-
|VLC
|open-source video player that can play just about any video format
|http://www.videolan.org/vlc/
|-
|[[VirtualBox]]
|virtual computer program
|http://www.virtualbox.org/
|-
|Wireshark
|Wireless network traffic analyzer
|http://www.wireshark.org/
|-
|[[x11vnc]]
|a nice VNC program that allows me to set up a remote desktop server (you can then connect to it using your VNC client of choice, I use [[Programs_I_Use#chicken_of_the_vnc|Chicken of the VNC]] on a Mac).
| http://www.karlrunge.com/x11vnc/
|}
 
= Mac-Only Software =
 
{|border="1" class="wikitable"
!Program
!Description
!Webpage
|-
|Aquaterm
|version of Emacs that uses Aqua (Mac window style)
|http://aquamacs.org/
|-
|<div id="chicken_of_the_vnc">
Chicken of the VNC
</div>
| remote desktop (or VNC) client for Mac
| http://sourceforge.net/projects/cotvnc/
|-
|Chmox
|utility to read .chm files
|http://chmox.sourceforge.net/
|-
|Disk Inventory X
|gives you a graphical depiction of what's using space on your hard drive
|http://www.derlien.com/
|-
|Divvy
|nice Mac utility to easily resize windows; shareware, but the demo never expires
|http://www.mizage.com/divvy/
|-
|DjView
|utility to read .djvu files (ebook format)
|http://djvu.sourceforge.net/
|-
|[[DynDNS]]
|Syncs IP information with DynDNS servers; allows computers with dynamic IP address to run a web server that DynDNS "knows about"
|http://www.dyndns.com/
|-
|Evernote
|program to take notes, and sync them with a server, on the cloud
|http://www.evernote.com/
|-
|[[Fink]]
|a content-management system (like yum or aptitude) for Mac
|http://www.finkproject.org/
|-
|Fugu
|GUI interface for ftp/ssh/etc to a remote client (Don't use "Son of Fugu", it's not as good as Fugu)
|http://rsug.itd.umich.edu/software/fugu/
|-
|Inkscape
|open-source image editor
|http://inkscape.org/
|-
|iTerm
|alternative to Mac's "Terminal" application (a really nice feature is its full-screen mode: good way to eliminate distractions)
|http://iterm.sourceforge.net/
|-
|[[MacFuse]]
|allows you to mount various file systems on your Mac
|https://code.google.com/p/macfuse/
|-
|[[MacFusion]]
|GUI for using MacFuse to mount different filesystem types
|http://www.macfusionapp.org/
|-
|Mac The Ripper
|used to rip DVDs to your hard drive (extracts to VIDEO_TS and AUDIO_TS, not .mov or .avi, but you can open the VIDEO_TS and AUDIO_TS contents with most DVD players)
|http://www.macupdate.com/info.php/id/14414/mactheripper
|-
|MacPorts
|Don't use Macports, it tries to compile everything, every single last dependency, EVERYTHING, from source (this includes programs that take 5 hours to compile and are already available on your machine and on your path - like gcc).  Building anything using MacPorts takes at least 2 hours and MacPorts is a complete waste of time. 
 
I highly recommend Fink.  If you're already using MacPorts, I suggest you abandon ship and join Fink... before it's too late.
|
|-
|MacVim
|version of Vim that uses Aqua (Mac window manager)
|https://code.google.com/p/macvim/
|-
|MPlayer
|media player for Mac
|http://www.mplayerhq.hu/design7/news.html
|-
|Shark
|C++ profiler for Mac
|Simple tutorial: http://tuvix.apple.com/tools/sharkoptimize.html
 
Getting started: http://bit.ly/a4XYEv
 
Advanced profiling: http://bit.ly/9ffZd7
|-
|Saturn
|another profiler for Mac
| http://adrianboeing.blogspot.com/2010/02/profiling-on-mac-osx-with-saturn.html
|}

Revision as of 17:12, 8 April 2011

All programs listed on this page are free or open-source... unless they have a big dollar sign next to them.


My Build Procedure

When I build programs from source, I use the following setup:

  • Programs are all installed in the ~/pkg directory
  • Tarballs are downloaded to ~/pkg/tarballs
  • Tarballs are untarred to ~/pkg/sources using the command:
tar xvzf program-x.x.x.tar.gz -C ../sources/
  • The usual configure/make/make install procedure is performed, but the configure line used is put into a script named runconfigure.program-x.x.x.operating-system.sh, and I put notes into the configure file's comments, so that I have a detailed record of:
    • What configure line options I used
    • Whether I used a non-standard series of steps, took any extra steps (e.g. make test), or had to install any dependencies
    • The date I last modified the configure line
  • The program is installed to pkg/program/x.x.x/ using the --prefix=$HOME/pkg/program/x.x.x configure option
  • (Optional) Once the program is installed, I add pkg/program/x.x.x/bin to my $PATH by adding the following line to my $HOME/.profile:
export PATH="${PATH}:${HOME}/pkg/program/x.x.x/bin"
  • Alternately, I can create a link to the "standard version" for my system in $HOME/pkg/program/std, which links to the most up-to-date version of the program; that way, I can install 2 or 3 or more versions of the program, but have the standard version point to the one I want to use. This way, I don't have to update my $HOME/.profile every time, because the .profile contains:
export PATH="${PATH}:${HOME}/pkg/program/std/bin"

Unix System Utilities

Unix system utility Wikipedia description
Aptitude
Awk wikipedia:awk
Bash wikipedia:bash
Emacs wikipedia:emacs
Sed wikipedia:sed
SSH wikipedia:secure shell
Vim wikipedia:vim (text editor)
Xargs wikipedia:xargs

Programs Built From Source

Program Link to webpage
Apache http://httpd.apache.org/
Cantera http://sourceforge.net/projects/cantera/
Class library for numbers (cln) http://www.ginac.de/CLN/
CMake http://www.cmake.org/
ctags http://ctags.sourceforge.net/
Doxygen http://www.stack.nl/~dimitri/doxygen/
Emacs http://www.gnu.org/software/emacs/
GNU debugger (gdb) http://www.gnu.org/software/gdb/
Ginac http://www.ginac.de/
googlecl https://code.google.com/p/googlecl/
gnu plotting program (gnuplot) http://www.gnuplot.info
gnu privacy guard (gpg) http://www.gnupg.org/
HDF5 http://www.hdfgroup.org/HDF5/
Hypre http://acts.nersc.gov/hypre/
LAM MPI http://www.lam-mpi.org
OpenMPI http://www.open-mpi.org/
Petsc http://www.mcs.anl.gov/petsc/petsc-as/
PHP http://www.php.net/
Ruby http://www.ruby-lang.org/en/
Snort http://www.snort.org/
Subversion http://subversion.tigris.org/
Sundials https://computation.llnl.gov/casc/sundials/main.html
Trillinos http://trilinos.sandia.gov/

OS-Agnostic (Binary)

Program Description Website
Audacity a nice audio recording/editing program http://audacity.sourceforge.net/
ffmpeg all-in-one video processing swiss-army-knife http://www.ffmpeg.org/
ffmpegx GUI interface for ffmpeg http://www.ffmpegx.com/
Fink Package manager for Mac OS X; makes installing many Unix-based programs much less of a hassle http://fink.org
Gimp open-source image editor http://www.gimp.org/
Git a version control system, differs from subversion in a number of ways, designed with a focus on making it easy to branch and merge http://git-scm.com/
Handbrake similar to ffmpegx, a GUI interface for converting different video formats http://handbrake.fr/
Lapack Linear algebra package for matrix and vector operations http://www.netlib.org/
LyX a really handy GUI WYSIWYM Latex editor http://www.lyx.org/
Matlab computational package http://www.mathworks.com
Octave open-source Matlab alternative http://www.gnu.org/software/octave/
Open Office open-source Microsoft Office alternative http://www.openoffice.org/
Python programming language http://www.python.org/
Sage open-source Matlab, Maple, Mathematica alternatives rolled into a Python Swiss Army Knife contained on a VMWare image so it can run cross-platform http://www.sagemath.org/
TexMaker Latex text editor http://www.xm1math.net/texmaker/
VLC open-source video player that can play just about any video format http://www.videolan.org/vlc/
VirtualBox virtual computer program http://www.virtualbox.org/
Wireshark Wireless network traffic analyzer http://www.wireshark.org/
x11vnc a nice VNC program that allows me to set up a remote desktop server (you can then connect to it using your VNC client of choice, I use Chicken of the VNC on a Mac). http://www.karlrunge.com/x11vnc/

Mac-Only Software

Program Description Webpage
Aquaterm version of Emacs that uses Aqua (Mac window style) http://aquamacs.org/

Chicken of the VNC

remote desktop (or VNC) client for Mac http://sourceforge.net/projects/cotvnc/
Chmox utility to read .chm files http://chmox.sourceforge.net/
Disk Inventory X gives you a graphical depiction of what's using space on your hard drive http://www.derlien.com/
Divvy nice Mac utility to easily resize windows; shareware, but the demo never expires http://www.mizage.com/divvy/
DjView utility to read .djvu files (ebook format) http://djvu.sourceforge.net/
DynDNS Syncs IP information with DynDNS servers; allows computers with dynamic IP address to run a web server that DynDNS "knows about" http://www.dyndns.com/
Evernote program to take notes, and sync them with a server, on the cloud http://www.evernote.com/
Fink a content-management system (like yum or aptitude) for Mac http://www.finkproject.org/
Fugu GUI interface for ftp/ssh/etc to a remote client (Don't use "Son of Fugu", it's not as good as Fugu) http://rsug.itd.umich.edu/software/fugu/
Inkscape open-source image editor http://inkscape.org/
iTerm alternative to Mac's "Terminal" application (a really nice feature is its full-screen mode: good way to eliminate distractions) http://iterm.sourceforge.net/
MacFuse allows you to mount various file systems on your Mac https://code.google.com/p/macfuse/
MacFusion GUI for using MacFuse to mount different filesystem types http://www.macfusionapp.org/
Mac The Ripper used to rip DVDs to your hard drive (extracts to VIDEO_TS and AUDIO_TS, not .mov or .avi, but you can open the VIDEO_TS and AUDIO_TS contents with most DVD players) http://www.macupdate.com/info.php/id/14414/mactheripper
MacPorts Don't use Macports, it tries to compile everything, every single last dependency, EVERYTHING, from source (this includes programs that take 5 hours to compile and are already available on your machine and on your path - like gcc). Building anything using MacPorts takes at least 2 hours and MacPorts is a complete waste of time.

I highly recommend Fink. If you're already using MacPorts, I suggest you abandon ship and join Fink... before it's too late.

MacVim version of Vim that uses Aqua (Mac window manager) https://code.google.com/p/macvim/
MPlayer media player for Mac http://www.mplayerhq.hu/design7/news.html
Shark C++ profiler for Mac Simple tutorial: http://tuvix.apple.com/tools/sharkoptimize.html

Getting started: http://bit.ly/a4XYEv

Advanced profiling: http://bit.ly/9ffZd7

Saturn another profiler for Mac http://adrianboeing.blogspot.com/2010/02/profiling-on-mac-osx-with-saturn.html