Computers and Scientific Programming Links


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 Sun Microsystems 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.