Hacks & Contributions

Whenever I use a program, I cannot help but to want to modify it. This invariably gets me involved in either a plugin, patch or other type of contribution for the project. Below is a list of hacks I have done for various programs.

Cross Conversation Plugin (Gaim)
This plugin for Gaim allows you to maintain a list of screennames to which your message will be sent. For instance, if you are trying to tell a story and you don't want to bother everyone with starting a chat, then you can add people to the list and each message will be sent to the screennames on the list.
Docklet Activity Patch (Gaim)
The Gaim docklet plugin provides the option to "hide new messages while away," which queues the messages and adds an envelop emblem to the icon in the system tray. While this feature is helpful, it doesn't help with conversations that are already active. This patch adds the emblem to the docklet icon when a new instant message appears in an ongoing conversation.
CDargs (bash)
CDargs heavily enhances the navigation of the common unix file-system inside the shell. It plugs into the built-in cd-command (via a shell function or an alias) and thus adds bookmarks and a browser to it. It enables you to move to a very distant place in the file-system with just a few keystrokes. This is the kind of thing that power shell users invent when even the almighty and wonderful TAB-completion is too much typing.
Net_User_Agent_Detect (PEAR)
The Net_UserAgent object does a number of tests on an HTTP user agent string. The results of these tests are available via methods of the object.
Php.XPath (PHP)
Long before PHP 4.3 became available, I worked on this project to fill the XML void in PHP. Php.XPath is a PHP class for searching an XML document using XPath, and making modifications using a DOM style API. Does not require the DOM XML PHP library.
System_Command (PEAR)
System_Command is a commandline execution interface. Running functions from the commandline can be risky if the proper precautions are not taken to escape the shell arguments and reaping the exit status properly. This class provides a formal interface to both, so that you can run a system command as comfortably as you would run a php function, with full pear error handling as results on failure.
The best way to describe this library is to classify it as a template system for generating cascading style sheets (CSS) from XML markup. It can be driven with either the libxslt pear extenstion (part of xmldom) or the xslt extension (part of the sablotron libraries).
The PEAR::XML_XPath class provided an XPath/DOM XML manipulation, maneuvering and query interface.