Checking for deprecated Wordpress functions

A script to help make Wordpress development a little less painful.

One of the major pains involved in Wordpress development and work (and one of the reasons why this isn’t hosted on Wordpress anymore) is that of their quickly changing API. I’ve encountered issues where plugins have suddenly (and quietly) stopped functioning, due to a deprecated function call being removed from the Wordpress API. I’m sharing my “solution” to this issue, which is a script (which can be integrated into a CI system), which scans your plugin and/or theme code and gives you a list of the deprecated functions you’re using, as well as where they exist in your code.

Written By
Jeff

Building Ganglia for OpenBSD 4.3

Building the Ganglia monitoring system for OpenBSD 4.3

I recently had to build a modern version of the Ganglia monitoring system for an OpenBSD 4.3 firewall, which hadn’t been upgraded to a modern version of OpenBSD in quite some time. I documented the process, which I’m sharing here.

Written By
Jeff

Expanding Ganglia RRD files

I figured this out trying to resize RRDs for Ganglia in a rrdcached-enabled environment, since expanding initial RRD parameters in gmetad doesn’t affect existing RRD files. Essentially you simply have to declare the RRA index and the expanded size, and this does the rest. rrdtool unfortunately doesn’t make it particularly easy to do this on a large scale, hence the scripting. One-liner to expand RRDs: /etc/init.d/gmetad stop; /etc/init.d/rrdcached stop ; find .

Written By
Jeff

Project Review 2011

I’ve been a bit lax in posting about my work here, mainly because Twitter makes you lazy. (Why write complete sentences when you can summarize in 140 characters or less?) Here are some of the projects I’ve been working on over 2011, with some links. I’m sure I have left some out. FreeMED – opensource electronic medical record/practice management system. Did a fair amount of retooling, including i18n, for the installation in Xela.

Written By
Jeff

Xela Redux 2011

Better late than never, these are the blog entries I had put together from the Xela trip this year, which I had never gotten around to posting. Day One: Sunday November 6, 2011 I’m going to try to chronicle my time this year working with the POP-WUJ Clinic in Xela (Quetzeltenanga), Guatemala, as I did last year. Work circumstances, over-zealous customs officials, and simple bad luck contributed to some of the issues we experienced with the installation last year, so I have traveled back down to attempt to make this work better.

Written By
Jeff

Designing applications for clustering

I have been recently been trying to redesign FreeMED (my opensource GPL’d EMR/PM system) in order to work in a “clustered” environment, so that I could support scenarios where multiple application servers were load-balanced to handle larger quantities of traffic. The latest piece of this has been to move filesystem-based storage into the database layer so that I don’t have to mess around with clustered file storage and replication. Some of the highlights of this have been:

Written By
Jeff

Updated: Linux support for ADS DVD Xpress DX2

In 2007, I had posted a patch for the ADS DVD Xpress DX2 device to work on Linux, but it had been based on an antiquated kernel version, etc. Since then, someone was nice enough to post an updated version of the driver, but without DVD Xpress DX2 support. I put together a patch which ensures that the drivers now compile and use the new I2C and V4L2 APIs. I can’t guarantee that it works, only that it compiles the driver properly now.

Written By
Jeff

JasperWrapper

I have just wrapped up (no pun intended) work on an initial version of a CLI JasperReports wrapper, based heavily off the work of jasperCall. It’s also quite similar to the work being done on RunJasperReports, although it was specifically designed to be integrated into FreeMED’s reporting engine, as it is put together as a fatjar. It currently supports PDF, XML, XLS and HTML output, and should theoretically support parameter passing, though I haven’t tried it out yet.

Written By
Jeff

IMAP Synchronization

I hate it. IMAP Synchronization, that is. In an effort to migrate users from one *shudder* Exchange provider to another (after getting shot down for proposing first Zimbra, then standard mail server stuff, then Openchange), I have been going through all of the available IMAP sync software that I could find. mbsync () – We use this for IMAP backup, so I figured it would be a good idea to try it for syncing between two IMAP servers.

Written By
Jeff

Exposing SOAP Services with Apache’s ProxyPass

I have recently had cause to proxy a J2EE CXF service through an apache 2.2 instance, and thought it would be nice to share my findings. (This was all done on a Debian system.) First of all, the mod_proxy pieces have to be enabled using a2enmod proxy. A fragment has to be added with the proxying bits and some limitation: Order allow,deny Allow from all ProxyPass /EXPOSEDURL http://SERVER:PORT/URL ProxyPassReverse /EXPOSEDURL http://SERVER:PORT/URL Reloading apache configuration should enable the proxy properly.

Written By
Jeff

Community projects and bug fail

I really like Ubuntu — I use it for all of my workstations/laptops, and have for the last several years. I do not, however, like it when people tell me that something that’s clearly and demonstrably a bug in a system [simply isn’t a bug][1]. Fie on your crappy PPA build system, I’m just not going to build more Ubuntu packages for things. I’ll just go back to only packaging Debian server packages.

Written By
Jeff

Serial and Parallel Interfaces in Java

To sum up before I even begin: they *suck*. One of Java’s exceptionally weak points is serial and parallel interfaces, since it’s not within the normal bundled class library specification. In developing for Linux systems, I found that there are two basic routes you can take, being Java Communications API and RXTX, with the latter being a reimplementation/extension of the former. To say that these are painful to work with doesn’t adequately state the gravity of the situation.

Written By
Jeff

J2EE and “sane” application deployment

As I have been delving deeper into the J2EE Servlet specification during the rewrite of REMITT, I have been learning some very interesting, and sometimes very painful, lessons about trying to package something without requiring complicated installations. To get authentication working in Tomcat, the normal way is to define a Context and Realm in TOMCAT_HOME/conf/server.xml. A relatively undocumented file called META-INF/context.xml allows fragments to be distributed with war files. This would be a great solution if it didn’t mean that authentication was now deeply dependent on editing a file in the web archive, which kind of takes the advantage completely out of having one.

Written By
Jeff

Rewriting REMITT, the J2EE Way

For those people who are unfamiliar with my programming ventures, I had written a three stage extensible billing system a few years back called REMITT (which stands for REMITT Electronic Medical Information Translation and Transmission). I had created the majority of the code in about a week and the XSL transforms required for it to function in another two weeks or so. Since then, the project has been somewhat languishing, due to it being written in Perl, which is a minor pain to get running for most people on a good day, compounded with it using XML-RPC with sessions as a remote procedural call dialect.

Written By
Jeff

haproxy 1.3.15.8 and 1.3.16-rc1 for NSLU2

I have packaged up haproxy for the newest released versions as of today for the Linksys NSLU2. Stable: http://www.mediafire.com/file/bmhtdnzndu2/haproxy_1.3.15.8-1_armeb.ipk RC: http://www.mediafire.com/file/dmdynmtdjdm/haproxy_1.3.16-rc1-1_armeb.ipk

Written By
Jeff

WRT54G Toolchain

I pulled the mipsel toolkit for the WRT54G from the 180 MB kit from Linksys for easy access. hndtools-mipsel-linux-3.2.3.tar.bz2 hndtools-mipsel-uclibc-0.9.19.tar.bz2

Written By
Jeff

Modding that old XBox

If you’ve got an old junky XBox around, and would like to put something, well, *useful* on it, like XBMC, then I’ve got a great link for you which allows soft modding without having a copy of any of the exploitable games. Patched xboxhdm 1.9 with exploits will allow you to boot another PC while hotswapping your XBox hard drive into that machine. It has all of the known exploits on it, I believe, so you don’t have to have your XBox connected to another machine or anything, nice and simple.

Written By
Jeff

Deploying GWT Applications with Jetty

I’m not a big fan of tomcat, preferring Jetty where possible. Unfortunately there are a lot of catches involved with getting GWT applications working. I’ll try to break the changes down here. This assumes that you already have a GWT project built and made with projectCreator which you are migrating into Jetty. Pull the start.jar, bin/jetty.sh script (which will be moved to the base of your distribution), lib and etc directories from your Jetty distribution, and put them in $DIST (your distribution directory)

Written By
Jeff

Improved Film Noir rendering

Thanks to my brother, who is much better with gimp-perl than I am, there’s a vastly improved version of the original RenderFilmNoir.pl script, available here. If you get a chance (shameless plug), please patronize his Flickr page, as we does work very hard at being a great photographer …

Written By
Jeff

Linux support for ADS DVD Xpress DX2

I take no credit for this at all, but the maintainer of the go7007 linux driver recently added support for the ADS DVD Xpress DX2 (which until recently was conveniently available at Walmart and other retail stores) after I took a picture of the board and asked him *very* nicely. If you get any kind of mileage out of it and decide that you really *have* to send someone money, please send it to him.

Written By
Jeff

Cisco VPN Client with Ubuntu Feisty

I worked out a simple patch to get the Cisco VPN client working with Ubuntu Feisty, which I’m attaching here.

Written By
Jeff

Slowly but surely

I’m still hard at work on FreeMED 0.9.0 ; it is turning out to be a very long and involved process. A ton of new functionality is making its way in, along with architectural improvements and porting old functionality. The majority of the codebase has been torn out and rewritten, mostly to allow for complete separation between UI and the data model. This entire process has been very educational, and I think I have learned more than I ever *wanted* to learn about UI programming.

Written By
Jeff

New Year, Caching, etc

Happy New Year, as well as happy whatever solstice holiday you choose to celebrate! Once again, I’m slacking in the “blogging” department. I recently made a few changes to the server, the most important of which will speed this up by fixing the memory map cache used to render pages, thereby removing the molasses from the page loading process. There are also a few new tracks under Artists and Projects on the site, so please feel free to take a listen.

Written By
Jeff

Forms – Too Many Forms

I’m working on a new concept/feature in FreeMED to try to alleviate the persistent problem of providers not being able to create their own forms with custom data, without having an advanced degree in advanced something (besides being a provider, of course). This, coupled with the new packaging format for FreeMED modules that I’m working on, will probably be the next big features in the next non-bug release, which is currently scheduled to be version 0.

Written By
Jeff

Slack

I’m slacking in keeping up this weblog-thing, but in my defense, I have been a bit busy. FreeMED released version 0.8.1 to the world, and I have been working in the studio a lot lately as well, working on both the Heirs of Centack audiobook and musical projects. Hopefully the BCF-2000 that has been ordered will get here soon, to make mixing less of a pain. I’m also halfway through a platform change to use PlanetCCRMA as the new studio platform, since the latencies appear good with the 2.

Written By
Jeff

Pluggable Authentication for FreeMED

I finally mustered up the spare time to move from the old system of FreeMED authentication to a pluggable system. I have only coded up two plugins for now: a “Password” plugin, which uses the old system of authentication and password checking, and a “Basic” plugin, supporting HTTP Basic Authentication. I’m also currently considering writing an LDAP plugin to allow FreeMED credentials and basic ACL information to be stored on an LDAP server, to really allow for enterprise deployments.

Written By
Jeff

Secure Data Warehousing

My newest project with FreeMED has been to implement a way to securely warehouse medical data offsite. This relates to Dr Gnu’s article about disaster recovery. I have been using SSL WebDAV with a slim C client built on neon to push gnupg-encrypted SQL dumps (both incremental and full) to the archive server, which is perhaps temporarily residing at https://archive.freemedsoftare.net/. In this way, whoever is hosting the archive cannot read the medical data without the gnupg keys held only by the provider who “owns” the medical records.

Written By
Jeff

Lab HL7 Interface

I have been working on an interface with Quest Diagnostics to be able to automagically import HL7 v2.3 messages into FreeMED. They were nice enough to furnish me with some documentation, and I have an alpha-quality implementation ready for some beating in one of our alpha sites. Now that 0.8.0 is out, I’m working steadily on a 0.8.1 release, with mostly bugfixes, some rearchitecturing, and a few nice features like this one (hopefully).

Written By
Jeff

FreeMED and REMITT released

I have released the FreeMED 0.8.0 and REMITT 0.3 combination, along with phpwebtools 0.4.5. I’ve found that Subversion rapidly decreases my development time, as it allows me to focus more on the programming and less on annoying problems. I have also been working on some of Irv’s ideas regarding secure data warehousing, and the next version of FreeMED should support that “out of the box”, without the need to configure anything complicated.

Written By
Jeff

FreeMED Live CD

I’m currently finishing up the final touches on the FreeMED 0.8.0 release right now, as REMITT 0.3 and phpwebtools 0.4.5 are already “ready to ship”. I’m also touching up a nice FreeMED Live CD, based on the kubuntu “Hoary Hedgehog” live CD, so everyone will be able to try out FreeMED REMITT without having to make the commitment of formatting a machine. Thanks to B-MAS, Inc for funding (and helping out with) the development of this live CD.

Written By
Jeff

Subversion

It’s final; I have moved FreeMED, a six-year old project with a CVS tree that old, to a new replicated subversion repository system. This should let me spend far less time fighting with sourceforge’s CVS servers, as well as provide an easier way to maintain the large number of files and directories in FreeMED. We’re less than a week from the launch of FreeMED 0.8.0, REMITT 0.3 and phpwebtools 0.4.5, which will be released together, and everything is in deep freeze, so I will be only committing packaging changes and extreme paper bag bug fixes over the next week.

Written By
Jeff

REMITT and Statements

I have been hard at work, getting our favorite medical billing engine to support generating patient statements, in addition to its current payer billing capabilities. In addition, I have been adding some rich font support for PDFs, while all font attributes are stripped out or ignored when generating plain text or other formats which do not support it. In addition, I was reading an article on building an extremely low-latency box for professional audio, when I was appalled to see a comment that “the most obvious choice of operating system for musicians is still Windows XP Professional”.

Written By
Jeff

Ubuntu and Pro Audio

I have been starting to consider changing distributions for the studio machine, lulled away from the safe confines of the known to something which seems to be much nicer in terms of user experience. Unfortunately, it isn’t quite ready in the realm of low-latency audio, so I have been working at packaging up the most important applications, as well as putting together a nice low-latency kernel package for the 2.6.x series of kernels which Ubuntu uses.

Written By
Jeff