Computers are a very important part of my research, my teaching, my communicating, and my fun. I write many different sorts of computer programs, including Markov chain simulations, numerical computations, student grade processing, text manipulation, computer games, etc.
Computer languagesI have programmed in many languages (including Basic, Fortran, Pascal, Cobol, and Turing), but my recent programming has mostly been in C and in Java and in R. I have also written some UNIX shell scripts and some Mathematica programs.
Java applets (games, Markov chains, etc.)I have written a number of Java applets. This includes some games such as tennismatch, soccer, and spacetag (which have received thousands of hits). It also includes some Markov chain simulation applets related to my research. I have also written some animated cartoons. In a related direction, I have experimented with creating animated gifs. Many web pages around the internet have links to my applets.
Adaptive MCMC softwareI wrote a package AMCMC, in R and C, to run adaptive Markov chain Monte Carlo algorithms on user-supplied density functions.
Parallel computation softwareI have gotten interested in parallel computing issues related to Monte Carlo algorithms. I have written a simple, general-purpose program jpar.c for use in running a number of different commands (e.g. on different computers), and then computing a weighted average of the results. I also wrote some associated programs unifavr.c, normalmc.c, and james.c, designed to be run in conjunction with jpar.c, simultaneously on many different computers. All of these programs are licensed for general use according to the GNU General Public License. They were written in conjunction with my research paper Parallel computing and Monte Carlo algorithms.
Other research-related softwareIn addition to my Markov chain simulation applets, I have written various C and Mathematica programs for my research, including the program combin.c in connection with this research paper, and the program backmet.c in connection with this research paper.
GNU/Linux system administrationI am now the primary system administrator for the GNU/Linux computer markov.utstat.toronto.edu, and also run the domain probability.ca. (I have also at times been somewhat involved with administering our departmental computing.) As a result, I have learned a lot about UNIX systems, and about administering multi-user computer environments. I have benefited from lots of help from Alan J Rosenthal. See also a D-Link Router fix, a MySqlDump Version fix, and a Red Hat timezone fix.
Free SoftwareI am a big believer in free software, i.e. software that comes with free, publicly-available, modifiable source code. I am proud to be an associate member of the Free Software Foundation (why don't you join too!). I work almost exclusively with the open-source GNU/Linux operating system (check out this Toronto Linux retail store and this Ottawa Linux store), and with open-source software (e.g. C and TeX). I release software under the GNU General Public License (and encourage others to do the same). I also host the Canadian CRAN mirror (see my R functions), and am a supporting member of The R Foundation.
"jcal" -- a simple calendar programI wrote a program jcal.c, and associated documentation jcal.doc, licensed for general use according to the GNU General Public License. This program is a simple, convenient, easy-to-use, plain-text calendar program for keeping track of appointments. It may be compiled on virtually any unix-based machine, or run from utstat.toronto.edu or math.toronto.edu by typing~jeff/jcal(i.e., "tilde jeff slash jcal") at the usual unix prompt. [Alternatively, type "/u/jeff/jcal" on utstat, or "/usr/people/jeff/jcal" on math.] Give it a try!
"mastermind" -- a computer-strategy programI wrote a program mastermind.c, to play the classic game "Mastermind", licensed for general use according to the GNU General Public License. It may be compiled on virtually any unix-based machine, or run from utstat.toronto.edu or math.toronto.edu by typing "~jeff/mastermind" (i.e., "tilde jeff slash mastermind") at the usual unix prompt. While there are already many free implementations of Mastermind available (see e.g. here and here), most of them do not allow the computer to guess. My program allows either the player or computer to guess, and the computer's strategy is simple but surprisingly effective (usually winning in 4-5 guesses).
Interactive Fiction (Text Adventures)I enjoy interactive fiction (text adventure) computer games, as an alternative to the "flashing lights and sound but little content" style of modern computer games. Also, I've gradually been writing my own simple text adventure called Galactic Peace. For more information see my Interactive Fiction page.
The Math CommunicatorI am a proud sponsor of the Math Communicator software being developed by Marco Pollanen and Darron Brewster. This software assists with communicating mathematical symbols, formulas, graphs, diagrams, etc. over the web (either live or via e-mail), for teaching and research purposes. Try it!
The game of lifeI once hired Marko Riedel to program a multi-species xwindows version of Conway's Game of Life for me; I have some research interest in such cellular automaton models.
TeXI am also an avid and enthusiastic user of TeX, by Donald Knuth (see also CTAN). I use it for nearly all of my document preparation for research and teaching. I have programmed quite a number of TeX macros, and also the shell script mktex.
Lean Computing (My Computer Philosophy)It seems that everyone who uses computers a lot has various strong opinions about them, so why should I be any different? I believe that computer use should be "lean", without a lot of unnecessary and bulky "features". Also, I'm opposed to the sending of e-mail in needlessly complicated and proprietary file formats (e.g. Microsoft Word documents). For more on this, see my lean computing page and my No Microsoft Word Attachments page.
A Computer JokeI tried discussing computer hardware issues with my family. But it made my motherboard.