Over the weekend, I did the first PHP programming I've done this year, on a whim project to write a Amazon S3 storage manager for KnowledgeTree.

In KnowledgeTree, a storage manager describes where to and how to store and otherwise manage the files attached to documents in KT.  S3 is a remote storage web service from Amazon, allowing reliable, scalable, and net-speed-quick storage for data.  Most of the code ended up being around configuration - particularly in terms of making it easy to check whether the S3 storage manager is properly configured.

This starts with a status dashlet (a dashboard "portlet" - a little bundle of information on the "front page"), which makes it hard to miss if you haven't configured things yet:

(It also tells you if you haven't told KnowledgeTree to use the S3 storage manager.)

The S3 Storage adds an administration page, allowing through-the-web configuration of the plugin.  One of the things I'm sorry I never got around to was getting configuration in KT pushed more into the database - the constant push for "cool" features meant the basics that affect actual users never got any time.  Before configuration, the page looks like this:

The "No" next to testing reminds administrators whether they've done a test of the settings they've entered.  The "Test now" makes it easy to see if the settings are correct without trying to add a document.

The Amazon Web Services settings are quite boring, since they can't be detected.  But, for the S3 configuration, we can query the available storage buckets and present the information to the user:

Once you've set it up, it's actually quite sad how it "just works".  There's no difference in terms of using KnowledgeTree to add, bulk add, or delete documents (except that it's a bit slower for those poor South Africans with not-so-wonderful connectivity).  Downloading is fast, since the files are cached locally.

The entire storage manager is only 250 lines of code, most of which is caused by the immaturity in the storage manager framework, because pretty much the only non-standard storage manager that we wrote was a in-database storage manager (which was quite slow, and thus was forgotten).  The admin page, status dashlet, and so forth come to 500 lines of code.  You can download the plugin in ZIP and tar.gz formats.

It seems KT's doing well - they were invited to attend the Olliance Group's Open Source Think Tank event later this year.  (Nice venue!  The Californian winelands have long been the #1 location I'd love to visit in the US, even before becoming even more enamoured after watching Sideways)

And (belatedly), they seem to be looking for developers again - if you can stand programming in PHP and want to be paid to work on an open source project in beautiful Cape Town, why not apply?

My friends over at KnowledgeTree are making a good start to the year by adding RSS support in KnowledgeTree.  They've got last transactions on subscribed documents available as RSS, and will be adding support for arbitrary documents via RSS using the saved search system.  This was one of those items that kept on cropping up in our want-to-do lists, but always too low on them.

Of course, the other side of the RSS support can be quite weird.  Reading your news on a KnowledgeTree dashlet?  Oh well, at least it makes a good screenshot!  And, who knows, maybe you want some information from something like SugarCRM on your dashboard.

It looks like my baby is doing well - it's also recently been listed in the Optaros Open Source Catalog, which hopefully will bring about a number of good enquiries.

And also in KT-land, the irrepressible Anna seems to be having a ball with her new baby - a much-deserved VM server for testing KT in the many combinations it is tested before she stops beating the developers with a stick and let them release their software.

Another of my KT colleagues, Kevin, has (re)started a web log.  His recent post, "Quick, what is Agility!?" is spot on about the slippery slope from agile and customer/market responsiveness to madness.

In late-mid-December, I'll be leaving Jam Warehouse and my position as lead developer of KnowledgeTree.  Mostly (and especially earlier) it's been a fun ride - great people (Brad being the only one of whom I know with an active personal web log), interesting challenges, and gaining ever more perspective on how to and not to do software development, open source community management, marketing, and management, especially around the start-up stage of a product and group of people.

In January, I'll be starting at CareerJunction (you may recall me posting about them looking for developers).  I'm incredibly excited at the idea of writing Python full-time, and working in a larger team, and not being the sole "the buck stops here" person.

And it seems it should be an easier-than-usual move, since my current KT colleague Bryn also applied for a job there, and we'll be starting there at the same day. 

My current employers, Jam Warehouse, are looking for more developers to work on KnowledgeTree, the open source document management system that Brad, Bryn (Mr. No Web Page), and I have built over the past year or so (and with me alone for another year).

There are two positions - a more senior developer who would take over much of what I've been doing previously, and a less senior developer who would be the lackey and make coffee and tea for the rest of the team.  Both are preferably based in Cape Town, but for the right person, there may be options there.

The more senior developer needs to have about 4 years of experience in a modern programming language in a commercial environment - having worked on teams, preferably having some leadership experience, and so forth.  The less senior develoer needs to have about 2 years in a commercial environment.  (Note - commercial, not necessarily proprietary).

Both would benefit from having used PHP most of that time, from having a great understanding and passion for open source, a technical degree, having speaking/presentation experience, experience in other languages (Python, C#, Java) and so forth.

You can read the more formal job spec on Daniel's web log.

Send me an email (it's on the right-hand-side of my web page) if you think you're suitable.

In May we were pretty ecstatic with the 15354 downloads on Sourceforge, and after settling down a bit between 13000 and 14000, we hit 16254 downloads of KnowledgeTree in August. We're still finding our way in terms of generating interest, but it seems it is growing organically without it.
For the next (open source) version of KnowledgeTree, I've been working on some login improvements. One of the least dynamic parts of the system has always been the login system - you were okay if the user needed to enter a username and password and was already created, whether authenticated internally or via something like LDAP. But not weirder things...
In its current form, KnowledgeTree is a business division of Jam Warehouse, from whence it started. But this isn't the post on KnowledgeTree's history. Being a business division of a software development company like Jam has its advantages. Back when KnowledgeTree meant just me, the availability of software development and business experts amongst my colleagues was invaluable. Even as one of the largest efforts in the company, the new ideas and alternative perspectives are still valuable. (Repost from my KT blog)
One of my (many) job titles on KnowledgeTree is Community Manager, and as part of that, I've been encouraging my colleagues to talk about KnowledgeTree. They now all have their own web logs, and they're all aggregated to people.ktdms.com. Over the next week or two, everyone should at least introduce themselves, and hopefully it will be an interesting way to keep up with what's happening - well, that's what it'll be for me at least...