# Software

Over the years, I've written lots of software. A few things have been posted at GitHub, including:

- some code samples; and
- the source for this website, which has been written by hand as an exercise to learn CSS.

## Mathematical software

Much of my mathematical research has been helped by the use of the Macaulay2 computer algebra system. Along the way, I've made a few contributions to the project, including two packages:

**VectorFields**provides useful functions for computing with modules of vector fields on affine space (Lie bracket, module of logarithmic vector fields, etc.).**RunExternalM2**provides a way to run Macaulay2 functions in an external Macaulay2 process. This allows you to use operating system features to limit resource usage (CPU time, memory, etc.), even for specific parts of your computation.

Though these packages should be included in Macaulay2 version 1.9 and later,
you can manually install a package by starting Macaulay2 and executing, e.g.,
```
getPackage("VectorFields",Repository=>"http://www.brianpike.info/software/");
```

Then you may use use the package by running, e.g.,
```
needsPackage "VectorFields";
```

Older versions of these packages are
viewable on GitHub.

I also wrote several programs to compute singular Milnor numbers. They were used for "Solvable Groups, Free Divisors and Nonisolated Matrix Singularities II: Vanishing Topology" (joint with James Damon):

- calc_smn.m2 provides methods for computing singular Milnor numbers. I also provide a method implementing the Le-Greuel formula to compute the Milnor number of an ICIS.
- mat2x3.m2 uses calc_smn.m2 to compute the vanishing Euler characteristics of 2x3 matrix singularities by the formula in the paper.
- mat2x3verify.m2 uses mat2x3.m2 to compute the examples listed at the end of the paper.