Begin main content

MacOS Software

Opensource contributions

I have contributed to the following opensource projects/communities at various times (some more than others):

heads up 'tunes

heads up 'tunes shows you what tracks are coming up next.

Pretty much all this program does is display the current and next two iTunes™ tracks in a "heads up" style window. It works fine with genius and party shuffle as well as manual and smart playlists. Results will be disappointing when using regular shuffle mode since it is not possible to determine what track will come next.


SkypeMenuX provides a System Extra menu for Skype.

This menu allows you to:

  • View and change your Skype user status
  • Launch or Quit Skype
  • See your Online buddies and start chats



Send Apple APNS notifications over a persistent connection. This package includes Net::APNS::Feedback which allows you to download the data from Apple's Feedback service. APNS is Apple Push Notification Service which is how third party applications send push notifications to the iPhone.

You can get this Perl module via CPAN or visit the project on GitHub p5-net-apns-persistent.


HTTP::Server::Brick allows you to quickly wrap a prototype web server around some Perl code. The underlying server daemon is HTTP::Daemon and the performance should be fine for demo's, light internal systems, etc.

You can get this Perl module via CPAN or visit the project on GitHub p5-http-server-brick.


I recently took over maintenance of HTTP::Daemon::SSL from the original author, Gisle Aas. HTTP::Daemon::SSL provides support for building SSL servers in Perl and is used by HTTP::Server::Brick.

You can get this Perl module via CPAN or visit the project on GitHub p5-http-daemon-ssl.



nsperl2 is an AOLServer module which bridges, in both directions, between tcl and Perl.

With it you can:

  • call perl functions from tcl (via the perl::call tcl function)
  • call tcl functions from perl (via a number of methods - see Documentation)
  • register perl functions to handle aolserver requests (via Ns::register_url)
  • Github project: nsperl2


BibDesk is *the* BibTex manager for the Mac. BibTex is what you use to manage research and citations etc. for papers when you use LaTex (but you can also use it with MS Word and others). Think an EndNote that doesn't suck. I added the ability to extract the URL for online resources from Google Scholar search (which conveniently gives you bibtex files).<.p>


The LaTex Beamer class allows you to produce powerpoint-style presentations in LaTex. How to present them on a projector is left to the user, and for Mac users SplitShow is the best way. Not only does it allow for easy full screen presentation but it shows your slide on the projector and your notes on your other screen (ie. your laptop). I added support for using your Apple Infrared remote control to control the slide show. (As at Feb '09 this is checked into trunk but not yet in the released version).


GraphViz LaTeX Style

Embed GraphViz in pdflatex documents. (Note that it's not polished enough for CTAN yet - but I'll work on it over time.)


OpenACS (Open Architecture Community System) is a toolkit for building scalable, community-oriented web applications. OpenACS is the foundation for many products and websites, including the .LRN e-learning platform.

Aside from general enhancements and bug fixing, my main contributions are:


The workflow package provides a service to keep track of a process involving multiple people around some object. Workflow keeps track of the process you wish to follow, of where you currently are in the process (the current state), and who's supposed to do what.

While working with Collaboraid I helped finish the new workflow package. My main responsibility on this project was Oracle compatibility.

Bug Tracker

Alongside the workflow, I worked with Collaboraid in the development of the first workflow-based OpenACS package, the OpenACS bug tracker package. I can't exactly remember what I did to help this package, but I do remember convincing Lars (two weeks before delivery) that it should use the content repository. I hope this has helped make the package more usseful and extensible, but it certainly increased the pressure!

Paypal Support

See this forum post for an overview on this package I am developing.

Although useful (I am using it in a production system), this package is not yet polished enough to be part of the main OpenACS repository. I should check it into the contrib directory, but for now you can download it from Github openacs-paypal-support.

Lecture Material

You might also be interested in the following lecture material that I prepared and presented for Sydney University's Web Engineering Group a number of years in a row:


ad_smarty is my fork of the smarty php templating framework. As I rarely do any php development these days I haven't touched this in a long time. It mostly makes it work more the way I like (split code/templates, similar in concept to AOLserver) and may be of no use to anyone else. It is also way behind the current smarty version. In case anyone is interested, it can be downloaded from my subversion repository or browsed in my trac instance.

The simplest way to keep your dyndns entry up to date. I added support for Compex routers.


NB: I have not committed any code to this project, but I do maintain the sourceforge project for posterity (the original distribution location disappearing for various reasons).

sawfish.wm.ext.pager is a c/lisp extension that provides a functional desktop pager for the sawfish window manager. Originally written by Daniel Pfeiffer, it has been minimally supported since 2002, but still (somewhat) widely used. sawfish.wm.ext.pager is distributed under the GNU General Public License.

A pager is a map of your desktop. As maps go, it shows not only the visible part (your current viewport), but, if you are so configured, also the parts that extend beyond the sides of your screen. Also, if you have more than one workspace, the pager will follow you to where you are, or optionally show all workspaces at once. Of course you can select viewports and windows, and also move or raise/lower the latter.



heads up 'tunes