# Programming

## Big projects

### Gap.app

A current project of note is my Gap.app Mac-based frontend and distribution for the GAP computer algebra system. Easily download and install GAP, easily save and load GAP sessions. Gap.app also supports XGAP functionality, including interactive viewing of subgroup lattices.

Hosted on SourceForge.

### WinDraft (older, non-mathematical)

A significant project of mine that has nothing to do with mathematics: I did most of the C/C++ coding for the WinDraft document assembly system at Eidelman Associates. WinDraft was a system that made it easy for an expert to build a series of questions, which could be used to automatically create legal (or other) documents. It's kind of like US-based tax software, but more focused on text. Here's a screenshot:

For a while, systems based on WinDraft were pretty competitive in the estate-planning space, where WinDraft was used to create complex wills and related documents. You can see a review from back in the day here; and a comparison of WinDraft with some competitors is here.

Here are some other things I've created:

## Mathematical code

- invgen GitHub project:

GAP and C code related to my preprint with Bob Guralnick and John Shareshian “On invariable generation of alternating groups by elements of prime and prime power order”. This paper asks whether every alternating group is invariably generated by elements of prime-power and prime order. Using this code, we verified this condition holds for out to degree of 1 quadrillion = 10^{15}. - rooted-tree.g:

GAP code that will display rooted trees in XGAP or Gap.app. Created in response to this Math Stackexchange post. - partition-lat.g:

GAP code that will display small partition lattices in XGAP or Gap.app. - sgdiv_pub.g:

GAP code related to my paper with John Shareshian “Divisibility of binomial coefficients and generation of alternating groups”. This paper examines prime divisibility of binomial coefficients; in particular we ask whether every row of Pascal's triangle has a pair of primes so that every entry in the row is divisible by one of the two. We used this code to verify that this condition holds for the first billion rows. (Obsolete, superseded by invgen GitHub project.) - hvector.g (Sept 2009 version):

GAP code that computes the*f*-vector and*h*-vector of a simplicial complex. Also included is a function to compute the pure*k*-skeleton of a complex. Finally, there is some slow-but-working code to compute the*f*-triangle and*h*-triangle of a non-pure complex.

In addition to GAP itself, hvector.g requires the GAP simplicial homology share package.

## Other software related to mathematics

- DeTeX: A web form which converts pseudo-TeX to lightweight HTML. Suitable for converting TeX abstracts for posting on a webpage, for quickly writing mathematical notation in homework problems to be posted to the web, etc. It is far from knowing all TeX notation, but will handle a good bit of e.g. the subset used in abstracts. It can be useful for places where MathJax is too heavy-weight or not available.
- I wrote the xfig export for XGAP (included in XGAP as of version 4.22).
- I've also had several of my patches incorporated into LyX, the LaTeX based document processor (available in the latest version), including a question environment, fixes to the case environment, fixes to the starred environments, etc.

For mathematicians unfamiliar with LyX, I recommend George Grätzer's review in the*Notices of the American Mathematical Society*.

## Older stuff

These are both from Windows 95 days:

- FatWaste: a Win32 console app that determines the space wasted in FAT filesystem overhead on your hard drive. This was potentially useful in deciding what partition sizes to use, back in the day. It might even still work, although I haven't tried it for a while.
- Dropsy:
a Win95 taskbar app. Dropsy adds an icon
to your taskbar which you can click on to turn your cursor into a magic wand.
You can then click on the window of an application and drag from there to
create a shortcut to that application.

Dropsy was pretty cool back in Windows 95 days, but probably doesn't work on any recent versions of Windows.

And this one is even older:

- Unzip //e: an Apple //e unzipper. A readme file is here, and a review (from the good old days of 1998) is here. I have this up here mostly as a historical document, and leave it intact; although the contact information in the readme is no longer accurate, and I no longer expect or desire shareware payments for this. Please be aware that I downloaded this off an Apple // archive myself, and have not verified that it 'works'.