Here is some of the software that I have written, most of it written in Python . All of the software below is freeware.

Sam_I_Am is a program for communicating with Atmel AT91SAM7S microcontrollers on Linux systems using a USB connection.

Current Version 0.5 (June 25/09)
Platforms Linux
Requirements 2.4/2.6 kernel, Python 2.3 or higher
Download Sam_I_Am-0.5.tar.gz [68K]
Documentation Sam_I_Am Documentation

PFAVR is an ANS Forth implementation for the Atmel AVR microcontroller. It requires 13Kwords of FLASH and 32Kbytes of external RAM, thus can function in an ATmega64 or ATmega128 with external RAM.

Current Version 1.2 (February 28/04)
Platforms Atmel ATmega64/ATmega128 embedded systems
Requirements 32Kbytes of external RAM, 13kwords FLASH
Download pfavr-1.2.tar.gz [759K]
Documentation PFAVR Documentation

PF11 is an ANS Forth implementation for the 68HC11 microcontroller. It can reside in 32K of RAM, or be programmed into ROM/EPROM. Intended to either replace or coexist with the BUFFALO monitor, Forth allows both interactive use and off-line program development.

Current Version 1.0 (July 18/03)
Platforms 68HC11 embedded systems
Requirements 32K of RAM or 32K ROM+32K RAM
Download pf11-1.0.tar.gz [824K]
Documentation PF11 Documentation

GerbMerge is a program for combining (panelizing) Gerber/Excellon files for printed circuit board manufacturing. It can panelize copies of the same job, different jobs, and can also rotate jobs. For installation instructions, see the documentation.

Current Version 1.6 (October 5, 2008)
Platforms All
Requirements Python 2.4 , mxBase 2.0.4 , SimpleParse 2.0.0
Download gerbmerge-1.6.win32.exe [450K] for Win32
gerbmerge-1.6.tar.gz [428K] for Unix systems
Documentation GerbMerge Documentation

EVBU is a simulator for the 68HC11 microcontroller. Within a GUI, it implements a command line interface, very similar to the BUFFALO monitor, and a waveform interface for simulating I/O. For installation instructions, see the documentation. Version 0.4 of EVBU was a command-line-only program. You can download [59K] if you prefer this older version.

Current Version 0.6 (July 17/04)
Platforms All
Download evbu-0.6.win32.exe [188K] for Win32
evbu-0.6.tar.gz [109K] for Unix systems
Documentation EVBU Documentation

Pyepix is a wrapper for the ePiX plotting library for LaTeX. It allows publication-quality plots to be drawn using the underlying ePiX routines but without the need for writing C++ code.

Current Version 6-1.0.4 (May 31, 2005)
Platforms All
Requirements Python 2.3
ePiX version 1.0.4

pyepix-6-1.0.4.tar.gz [622k] source code

Documentation Documentation
ePiX documentation

Previous Version 5-0.8.9 (March 27, 2003)
Platforms All
Requirements Python 2.2
ePiX version 0.8.9 ONLY

pyepix-5-0.8.9.tar.gz [32k] source code
pyepix-2-0.8.6.exe [228k] Win32 installer

ePiX documentation

PyNKOS is a tool for exploring the patterns discussed in Stephen Wolfram's book, "A New Kind of Science."

Current Version 0.1 (June 13, 2002)
Platforms All
Requirements Python 2.2 , wxPython 2.3.2

PyNKOS 0.1 [4K]

PyMat is an interface between NumPy and a MATLAB engine session. It can be used to support NumPy's functionality with the features of MATLAB. An example module is included that presents a very simple interface to MATLAB's plotting functions. This allows you to, for example, plot NumPy arrays in a MATLAB plot window.
There is a PyMat project at SourceForge with more up-to-date files, including a distutils-based installer.

Current Version 6-1.0.4 (May 31, 2005)
Platforms UNIX, Win32
Requirements NumPy, MATLAB V5
PYMAT.ZIP for Python 1.5.2 [18K]
PYMAT20.ZIP for Python 2.0 [18K] [14K] for Python 2.2 and Matlab 6.5 (contributed by Axel Kowald)


Documentation PyMat Documentation

Dot is a tiny module that displays a "progress bar" in a text-mode console (DOS box in Win32). It is meant to be used as a means of keeping a user informed about an algorithm's progress if it will take a long time. The module is hopefully self-documenting. Have a look at the test code at the bottom of the file for example usage.
Note that the module name dot conflicts with the dot function of NumPy. Rename the file to (or something...) if this causes problems.

Platforms All OS's with text-mode consoles
Requirements None
Download [1.5K]

Permute is a function that computes all permutations of the elements in a list of lists. This is also known as the Cartesian product.

Platforms All
Requirements None
Download [3K]

Safestruct serves as a base class for any class that wants to protect its members from misspelling. Since Python allows adding attributes to a class object at runtime, it is a simple mistake to assign to a non-existent attribute somewhere in your code, inadvertently creating a new attribute, and quietly introducing an error that may be very hard to find. The Safestruct class traps all accesses to your class and raises an exception when an assignment is made to a non-existent attribute.

Platforms All
Requirements None
Download [3K]