Computing
Work in various areas of computation
I have contributed to the free/open-source (FOSS) software movement since the early days. I have worked on a variety of projects and also contributed to the coordination of FOSS: I sit on the board of directors of Software Freedom Conservancy.
- eCos
- In the late 1990s Cygnus developed The Embedded Cygnus Operating System (eCos), which later got renamed to Embedded Configurable Operating System.
- GNU Scientific Library (GSL)
- In the mid-1990s James Theiler and I spent a lot of time discussing the state of numerical analysis libraries. Prompted by the deep problems with the licensing of code from Numerical Recipes, we decided to design and start implementing a general library for numerical analysis. When Brian Gough joined the effort it really took off.
-
Laura Fortunato and I have published a paper on free and open source software (also available on SocArXiv), using the GNU Scientific Library as a case study. The full library documentation is at the official project home page.
- Genie
- Los Alamos genetic programming approach to image classification. Some information can be found at the old Los Alamos web page for Genie.
- GNOME desktop environment
- When Miguel and Federico announced the GNOME project I jumped in right away. I made small contributions to code and significant contributions to developer documentation early in the project.
- eCos
- In the late 1990s Cygnus developed The Embedded Cygnus Operating System (eCos), which later got renamed to Embedded Configurable Operating System.
- Docbook tools
- Ian Taylor and Jason Molenda recommended DocBook as a markup language for computer documentation. At the time (late 1990s) I liked the thought of extremely structured markup, so I worked at it, preparing stylesheets, writing tutorials, and maintaining the Linux DocBook tools for a while.
- GNU Guile Interpreter
- In the 1990s I was intrigued by the Scheme programming language and I contributed to Guile in its early and somewhat troubled times. I had hoped that Scheme might become a language widely used, possibly replacing the offerings of the time (TCL and Perl). This did not come to pass: the LISP syntax is too much of a hurdle, and eventually Python did very nicely what these other languages had tried to do.
- Evolving cellular automata with genetic algorithms
- A long time ago Norm Packard introduced the idea of using genetic algorithms to evolve cellular automata (very simple computer organisms). Melanie Mitchell and Jim Crutchfield explored this idea in depth and I did a bit of work in that area as well in the 1990s. I have a lot of pretty pictures, and some intriguing plots that I should at some point collect and put online.
- Evolving strategies for Reversi
- In early 2019 I taught myself to program in Rust by writing a program that played the game of Reversi, with a trivial algorithm. But the algorithm had several tunable parameters, and I then added a genetic algorithm to find which balance of those parameters would play best. The genetic algorithms was fun to implement, but I have not yet sat down to wade through the results and make good visualizations of them.
- The GNU Dominion game
- When I was in graduate school in the late 1980s and early 1990s I
worked with a group of sharp young computer science students who
wanted to learn to program on UNIX. To give them a taste of what
collaborative development might look like, I took a weekend to write
the skeleton of a turn-based world simulation game, using the
“curses” library. Then I had the students join, and we eventually
posted to
comp.sources.games
. It was first called “Stony Brook World”, but we then changed the name to Dominion.Dominion was widely played in the early 1990s, but it faded as graphical displays became common and the days of terminal graphics came to an end.
- Release Engineering
- I love the process of preparing a softare release for end users. Large complex scientific software is particularly hard to package. The field moves quickly, so there is not much of permanent value to link to, but to capture what I thought was the best practices in 2010 I wrote a self-referential HOWTO paper also available as a technical report.
- System administration
- I have been doing UNIX (and then Linux) system administration since 1984, and I treat it as a lovely challenge: how to make everyone on your team be as productive as possible! I still do it recreationally and for my collaborations, although it is not a formal part of my job right now. I believe that good system administration knowledge gives a programmer a deeper view of how their software fits into the big picture.