Lai, Albert Yu Cheong
A GUI for editing logic formulas and sending them to a backend (a theorem prover). (This GUI is still clumsy to use because it lacks keyboard support.) This program uses Java, AWT, the model-view-control and the visitor patterns (and the composite pattern, but that's just syntax trees), and a bit of SML (glue code to the theorem prover HOL4, which uses SML).
A GUI example of entering text in one panel, processing it internally, and putting the result in another panel. If the processing takes too long and you don't want to wait, you can press a button to stop it. This program uses Haskell, GTK, and multi-threading (properly with GTK): web page
A program to save boilerplates in a series of xhtml files. In particular it adds to every file a side table of all other files in the series. This program is in XSLT: xsl. (See also the input files and the first output file in the series.)
A program to save boilerplates (again!) in a series of similar xhtml files (such as many tutorial articles with a common structure and styling). It reads a template xml file and fills in holes with content from an input file. In addition, for my desire to write math tutorials, to follow the typographical convention in math books that certain special function names (sin, cos, lim, the + sign) are upright but other function names and variables (f, x) are italic, but with minimal manual work, this program does the following. If the input file goes like:
<reserved>sin cos</reserved> ... <m>sin x + cos x + f(x)</m>
then the generated xhtml goes like:
<span class="mathres">sin</span> <span class="mathvar">x</span> + <span class="mathres">cos</span> <span class="mathvar">x</span> + <span class="mathvar">f</span>(<span class="mathvar">x</span>)
and then I can use CSS to customize what mathres and mathvar respectively should look like,
e.g., *.mathvar { font-style: italic }
to make f and x italic.
This program uses Haskell and an XML library: tarball. Most articles in my weblog, Haskell notes, and math tutorials are processed with this program. A particularly intensive example full of math formulas: input file result
A program that connects to both an Eggdrop IRC bot and an IRC server, and takes user commands. I wrote it to help me administer channels against trolls and mischiefs. While most commands are just passed through to Eggdrop, this program adds a few commands of its own, mainly delayed execution: “execute this Eggdrop command 30 minutes later”. Since this program also connects to IRC and listens to channels, it could also be programmed to act upon specific bad patterns. (Eggdrop already does a lot, but not enough; I could add Tcl code to Eggdrop to do more, but I prefer Haskell. Here is an example in the program: Eggdrop kicks flooders, but does not ban, which in practice does not help; so this program adds banning if the same nick is kicked for flooding twice in 5 minutes.) This program uses Haskell and crazy multi-threading: tarball
Two programs that use number-theoretic algorithms: one to spit out a random large prime (you enter a number, it spits out the first prime after); another to attempt factoring a large number (by trying small primes, then Pollard's rho, then Pollard's p-1, then the elliptic curve method). This is written in Haskell: tarball
A web page that helps entering many Unicode math symbols. One button per symbol, click on a button to add the symbol to a line buffer, then use normal copy-paste or (if IE) there is a copy button. It is easy to modify the source code of the web page to change the symbols supported. This uses Javascript and DOM: web page
A web page that takes parameters and shows the steps of running through the extended Euclidean algorithm on those parameters. This uses Javascript and DOM: web page
A web page that takes parameters to produce variations of the Missing Dollar non-puzzle. This uses Javascript and DOM: web page
Also my GitHub account.