Jobs

The Macaulay2 free software project ( http://macaulay2.com/ ) seeks one or more part-time programmers. Macaulay2 is a free software computer algebra system designed for research in mathematics and related fields. It contains its own high-level interpreted user language, and the program is written in a combination of C and C++, another language that we created to help write the interpreter that gets translated into C, and the user language. Macaulay2 depends on a number of other free software libraries.

This is a temporary position funded by an NSF contract that terminates in August, 2015, but other funding may be available after that. Applications received by Friday, November 18, 2011 will receive full consideration.

The candidate will be expected to set and manage his/her own development and delivery schedules with minimal supervision.

To apply, send email to Mike Stillman (mike@math.cornell.edu), with "M2 Programmer" in the subject line. Pay will be competitive, and will depend on experience.

There are several projects available, and there will be others in the future. An applicant may be suitable for all, or for only one.

1. Release Manager: prepare releases for Macaulay2, and maintain the web site and wiki

The preparation of releases includes the following duties: The successful applicant will be familiar with building software under GNU-Linux and Mac OS X, will be familiar with autoconf, make, sh, gdb, and related tools, and will have experience with the errors that arise when porting software to new platforms or operating systems.

Note: our build system currently builds to many major systems.

2. Project: Port Macaulay2 to (native) Windows

Currently, Macaulay2 runs on Windows under Cygwin, and many variants of Unix, GNU-Linux, and Mac OS X. The applicant will port Macaulay2, and the software that it depends on, to Windows by compiling it either with Visual C/C++, or with GNU's MINGW, whichever seems most appropriate.

The successful applicant will be familiar with programming in C and C++ on Windows, and with porting Unix software to Windows.

Something will have to be done about Macaulay2's top-level function "fork" and its use by at least one package.

3. Project: Multicore and multithreaded Macaulay2

We have recently added multithreaded support to Macaulay2. Currently, this support is very basic. The applicant will extend its capabilities and make the multithreaded base reliable and efficient.

The successful applicant will be familiar with programming for multiple cores, in C and C++ under GNU-Linux and Mac OS X, including debugging such programs. It will be necessary to know or be able to learn quickly the Macaulay2 user language.

4. Project: improve the TeXmacs interface

TeXmacs is a free visual mathematics and scientific text editor that supports interaction with computer algebra systems, including Macaulay2, and is available at http://www.texmacs.org/. A screen shot including an interaction with Macaulay2 is at http://www.math.uiuc.edu/Macaulay2/Screenshots/. The applicant will improve the interface between TeXmacs and Macaulay2. Much of that will involve designing good visual displays of various types of Macaulay2 objects in the TeXmacs environment.

The successful applicant will be expert at programming in C++ and to know or to be able to learn quickly the internals of both TeXmacs and Macaulay2.