General
computing
yousendit.com
A free, easy way to transmit a large file (up to 1 GB) that
is too large to
be emailed as
an attachment. Upload your file to the website
and yousendit.com will email your recipient a
link
(not an attachment) that allows him/her to download the file from the
website.
autohotkey.com Free software for mapping keyboard
combinations to text or commands.
For instance, set ctrl-F1 to type a commonly used phrase (such as
"Smith-Kettlewell Eye
Research Institute") and save many keystrokes.
Voice recognition:
Dragon
NaturallySpeaking v. 8 (released in late 2004) is significantly more
accurate than previous versions. See a free video demonstration (by the
New York Times) at
http://www.nuance.com/naturallyspeaking/nyt/partners/
(V. 9 is now available as of late 2006 but I haven't tried it yet.)
Scientific
programming
Where's
the Real Bottleneck in Scientific Computing?
(article in American
Scientist) Programming is a major bottleneck in most scientific
research whose importance is generally underestimated. Many scientists
(such as me) without a background in computer science
are self-taught programmers who have learned just enough about
computers to "get by." While this level of proficiency may be
enough to get research done, even a modest increase
in efficiency
brought about by learning some useful programming tools can amount to a
huge productivity gain over the course of years or decades.
"Programming language notation is different from the working notations
of mathematicians and physicists and chemists. Why can't we bring them
close together?"
Fortress
is a language being developed at to
do just that.
Python is a free
(open
source), elegant and versatile interpreted programming language that
works on all major platforms. The syntax is clean and makes for
concise, readable code.
SciPy
is a useful Python module geared to scientific computations (i.e. the
kinds that Matlab was developed for), which builds on Numeric Python's
support for multi-dimensional matrices and efficient linear algebra
functions.
Matplotlib
provides Matlab-style plotting functionality.
Try
Python within your browser (without having to download and
install it).
Like Matlab, Python code is most efficient when it is vectorized
to eliminate explicit for-loops. Here are some tools for speeding up
Python when vectorization is impractical or insufficient:
SWIG
simplifies the process of calling C/C++ code from Python
SciPy includes the
Weave
module, which allows C/C++ code to be
embedded in Python
code as a string
Psyco is a
specializing compiler that lets you speed up many Python programs
by adding
just a few
lines of code. (Note: When trying Psyco, keep in mind that
it speeds up
functions
but not top-level code.)
Pyrex
is a module that "lets you write code that mixes Python and C data
types any way
you want, and compiles it into a C extension for Python."
Shed Skin
is an "Optimizing Python-to-C++ Compiler" that compiles ordinary Python
code to C++ in order to speed up the code, typically by an order of
magnitude or more over standard Python (and even over Psyco). Still in
experimental form, but it works on a variety of real-world examples.
(Full disclosure: I co-wrote the tutorial for it.)
Texify is an online
LaTeX formula interpreter: go to the website, type in a LaTeX formula
(e.g. $f(x) = \sum_i a_i(x)$) and it will generate an image of the
formula that can be copied or saved (e.g. for use in a document or
presentation).
Last updated Jan. 2008.