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. I have benefited from lots of help from my amazing computer-expert brotherAlan J Rosenthal.## Computer languages

I have programmed in many languages (including Basic, Fortran, Pascal, Cobol, and Turing), but my recent programming has mostly been inCand inJavaand inR. I have also written someUNIX shell scriptsand someMathematicaprograms.

## 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 software

I wrote a package AMCMC, in R and C, to run adaptive Markov chain Monte Carlo algorithms on user-supplied density functions.## Parallel computation software

I 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 software

In addition to my Markov chain simulation applets, I have written various C and Mathematica programs for my research, including a computer-vision applet related to this research paper, the program combin.c in connection with this research paper, and the program backmet.c in connection with this research paper.## GNU/Linux system administration

I 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. See also a D-Link Router fix, a MySqlDump Version fix, and a Red Hat timezone fix.

## Free Software

I 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).## "R" Statistical Computing Software

I am a supporting member of The R Foundation. I have written some R functions and R info. I supervised a PhD student who wrote the atmcmc R package to automatically run an Adaptive Metropolis algorithm. I used to host the Canadian CRAN mirror (now hosted on utstat.)## "jcal" -- a simple calendar program

I 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 and run on virtually any unix-based machine. Give it a try! (I used to also make it available to run directly on utstat.toronto.edu or math.toronto.edu, but I recently stopped that; if you do want to run it there then please let me know.)

## "mastermind" -- a computer-strategy program

I 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 thecomputerto 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).## JavaScript Obfuscation

I wrote the simple bash script obfus to create a version of a JavaScript program which runs identically but cannot be easily read, to allow JavaScript programs to be shared for running but not for easy modification.## Thunderbird Invitations Fix

I wrote a short web page about a subtle Thunderbird problem in which the Thunderbird email reader fails to display the "when" information for invitations to Microsoft Teams calls.## 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 Communicator

I 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 life

I once hiredMarko Riedelto program a multi-species xwindows version of Conway's Game of Life for me; I have some research interest in such cellular automaton models.

## TeX

I 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 Joke

I tried discussing computer hardware issues with my family. But it made my motherboard.

[contact me / Home Page]