How to Completely Update an Eclipse Workspace

Over the years that I’ve been using Eclipse, my main workspace has been accumulating bit rot. Older versions of plugins have left settings around, many small configuration details have been “not quite right”, and I never really figured out how to deal with the glitches, so I just tolerated them.

But the Europa build, or PDT, or something in my configuration brought in “Buckminster”. In my workspace, Buckminster had an annoying habit of pausing for several seconds, dumping a bunch of error messages about deprecated constructs in some meta data file (to which I say “it’s your damn file, you deal with it” to no avail).

While trying to deal with a major annoyance in Eclipse, namely that settings for tabs/spaces are Workspace global (duh), I gave in to this limitation and set up a new workspace and imported some of my tab based projects. (more…)

An Open Letter to Computer Manufacturers

I originally sent this to a specific company, but I think it applies more broadly, so here’s a generic version:

Last week, I purchased a new laptop from your company. I plan to use Linux on this system. Although Ubuntu installs and runs successfully, there are several issues with the display, sound system, and other features (I haven’t even got to the web cam yet). These issues limit my ability to enjoy the new system.

As a highly technical user, I am confident that I will overcome these issues. However I should not have to. There is a lot of support for your older hardware in the community, but not for newer systems. This implies that as a company, you offer little to no support to the community and they have to figure things out by trial and error.
(more…)

AP5L: The Abivia PHP5 Library Now Available

This is more a case of “release prematurely, release often” than anything else, but I’ve just completed the move of my PHP5 libraries up to a Google Code repository, with a GPLv3 license attached.

The primary reason for the release is to get the generic ACL code out in the wild.

As the project description says, documentation is thin to nonexistent, and significant parts of the code are just straight copies of the equivalent PHP4 library. I’ll be “porting” code as the opportunity arises. (more…)

Abstracting Data Storage in PHP

One of the problems with so-called “generic” PHP libraries is that they frequently contain dependencies that are either in conflict with an application, or that require a large amount of duplicate code.

This really shows up in database interfaces. If the library needs to manage persistent data, then there’s going to be a database interface. There are a lot of packages out there that aim to ease the challenges of interfacing to various SQL databases. Being a fan of PEAR, I tend to use MDB2. Others use ADODB. Application frameworks such as Joomla provide their own.
(more…)

Generic Access Control in PHP

Almost every application with multiple user groups requires an Access Control List (ACL) system. There are dozens of ACL implementations. Most of them are buried deep in the applications that use them. Some of them even provide generic capabilities that can be used by extensions (or applications, plug-ins, whatever) to that system.

So one would think that there would be a good generic ACL system out there, or that it would be possible to extract a good general purpose ACL module from another application. Not so. There’s one, phpGACL, that has a lot of capability. But the implementation is monolithic… it looks like another case of sticking a class declaration around a bunch of procedural code and calling it object based. That just won’t do.

There are quite capable applications for implementing ACL. LDAP being one of the best and most popular. But asking the administrator of a relatively simple application to install and configure LDAP on their shared hosting system is a lot to ask. Ideally, the mechanics of the ACL system should be intuitive to the user, if not essentially transparent.

So what else to do but write a new one? (more…)