FaceBook Apps


This is a calendar of events. It is built upon an old calendar and uses a flat-file database. I wrote a back-end to read and write to this database. The app communicates with the back-end via ajax and xml.

By making this a FaceBook app, I was able to utilize FaceBook's oauth security system, insuring that only those who registered an event would be able to modify it. There is also an iOS app which provides a view into the same data.

There is also a companion iOS app.

Click here to view jGigCal.

Jazz Alley

This is a musicians' referral service. It is a LAMP application as data is kept in a mySql database. It's a FaceBook app to take advantage of FaceBook's oauth services, as well as their profile pictures.

Jazz Alley uses geolocation to determine where you are (if permitted). It uses geocasting from Google to determine distances between you and a potential musician you're attempting to reach.

I also created the artwork using Adobe Illustrator.

There is also a companion iOS app.

Click here to view Jazz Alley.

PHP Apps


A replacement for majordomo, this php script reads an xml config file at startup, then opens a socket to the configured pop socket (default 110) and checks for mail. If it finds any, it remails a copy to the configured smtp socket (default 587) for each configured member of the list.

MinorDomo was written for web hosts without majordomo and only ezmlm. Ezmlm doesn't really work all that well unless you're a trusted user, and on the cheaper web hosts that may be hard to get.

MinorDomo simply requires a cron job running at short intervals to curl its url.


This utility was written for the Jazz Society of Santa Cruz County, and it was necessitated by the fact that they insisted on doing their newsletter in Thunderbird, an open-source mail reader. So instead of creating a web page and mailing it out, or better yet, mailing a link to it out, I devised this system.

One of the recipients on the mailing list is paperboy, who periodically checks his mail and if any is found, opens a pop socket and reads the mail. He then creates a temporary html file from the html component of the email (the plaintext is ignored). Email attachments are encoded and identified as cids in the email, so he decodes the attachemts, saves them as files, and makes a table to corellate the cids with the files. When they're all processed, he goes back through the temporary html file and replaces the cids with the file names.