I like solving problems. Programming is part of that.
Below is a non-exhaustive list of projects I’ve worked on or contributed to.
- racket-cookies: an RFC6265-compliant implementation of cookies (client- and server-side) for Racket.
- racket-jwt: an implementation of JSON Web Tokens.
2020: A script for generating a paper gradebook and planner for left-handed teachers, written for a teacher friend and documented sufficiently for a competent programmer without Racket experience to experiment with changes to the parameters.
2020: A script that simulates perfect shuffling of a deck of cards:
2018–19: As a choral director and singer, I know it’s helpful for directors to know the vocal ranges of their singers so we can choose music that fits those ranges. I wrote a script that extracts pitch info from a MusicXML file of four-part vocal music, and generates an image of summary histograms that can then be inserted into the last page of the sheet music PDF, permitting directors to see the needed vocal ranges at a glance:
2014: In studying the pancake-sorting problem, I wrote some code to generate trees of possible pancake-stack states using BFS, find critical paths from root to leaves, and render the results:
2008: I implemented an algorithm in Java (working in Eclipse) for finding the quasi-inverse of a database schema mapping.
2000: I developed a prototype language for writing “nanopass” compilers, as described in the subsequent paper A Nanopass Framework for Compiler Education.
A few Quora posts I’ve written about programming:
- What is computer programming?
- As a student of philosophy how can programming help me? Is it worth learning?
- How many complete words can be typed from within the ASDF (left hand) position on the QWERTY keyboard? How about the JKL: (right hand) position?
- Why is there so much hype surrounding monads when it is just a special case of continuation-passing style?
- What is the best explanation of the QuickSort partition algorithm?