Pachyderm Asset Management
Posted by: dnorman in Uncategorized, tags: metadata, pachyderm, principlesI’ve just worked up a drop-dead simple asset metadata database for the Pachyderm project. It’s just a MySQL database, with a single table that has 10 fields (including primary key). This simple database will serve basic metadata needs for the Pachyderm beta.
I also built a simple asset management system to test out the database. I decided to do a lightweight PHP “application” to stretch my legs in a non-WebObjects non-Java environment. This is about as far from the elegant Model View Controller design pattern as it gets. Raw SQL is littered throughout the PHP code. But, you know what? It works. And is unbelievably simple to debug.
I’m thinking a version of this PHP asset management app, running on top of a simple asset metadata database, may form a valuable Small Piece, patterned after del.icio.us, but giving us the ability to extend for our purposes.
My previous thinking about metadata storage was stuck in the conventional “hardened”, enterprise-class thinking that only storing an IEEE LOM would satisfy. Bollocks. This simple metadata database will gladly be coerced to spit out IEEE LOM records on demand, or Dublin Core, or whatever else is required.
There’s a meme going around that says something like “the best solution is the absolute simplest thing that could possibly work” (I’ve heard it in a couple ITConversations sessions, and on a couple blogs - I’ll have to track down who started it…) This solution is in that vein, and it’s really striking a cord with me.
Give it a shot, if you like. But, be gentle, since it’s my first real PHP work, and was cobbled together with the help of my on-demand guidance system. (oh, and I know it looks like crap - I haven’t even started thinking about UI for it)
UPDATE: I’ve been slowly working on the asset manager test app when I get the chance. It strikes me just how simple it is to build. With the use of includes, it should be entirely possible to approach nice OOP design, although it won’t be all MVC. But, if it’s this simple to do, maybe you don’t need MVC… I added file upload and MIME type recording in maybe 15 minutes, including the google-time to figure out what to do. I’m really enjoying PHP as a language - having some flashbacks to Lingo. The power of small pieces…
UPDATE: As I’m adding/tweaking stuff in this simple asset manager, I’ve realized that it is probably only a week or 2 of effort away from replicating the functionality of CAREO. I could use simple stylesheet switching to replace the “themes” in CAREO. All that is really left to add is authentication, activity tracking, RSS views, and a few other types of queries. But, as a few simple PHP scripts (currently maybe a total of 100 lines of code spread over a handful of files) instead of large java frameworks and applications, it should be much easier for others to extend and adapt for their needs… I do realize that my current attempt at PHP code is rather inelegant, but I’m hoping to follow some of the patterns and techniques used in WordPress to keep it clean, modular, and extensible.
Yet Another UPDATE: I’ve updated the asset database to store the full Dublin Core set of elements, so it should serve as a pretty solid foundation for any asset management use… I’ll try porting the Teaching Resources Database over to it to see how it goes… Using an XML database is overkill for that anyway, and if I use the asset manager, I get to throw in the add/edit functionality for free (something that’s on my plate for Teaching Resources anyway, so if I can just re-use this code, I’m further ahead already).







Entries (RSS)
Nice work, as always.
I’ll bet the source of the “simplest thing that could possibly work” meme is Ward Cunningham’s ancient (1995) definition of a wiki:
“The simplest online database that could possibly work.”
http://wiki.org/wiki.cgi?WhatIsWiki
Bernie, I’d bet money that you’re right on that… Sounds like a wiki concept! I’m going to write it across the top of my whiteboard in big letters, right above “small pieces, loosely joined”
Nice.
If you add a button which sends the following URL, people can automatically submit their collection RSS feed to Edu_RSS:
http://www.downes.ca/cgi-bin/edurss02.cgi?action=Suggest&url=URL
where URL is the URL of the collection’s RSS feed.
I’d do it as a web service or XML-RPC or something fancy, but I don’t know how to do those. Anyhow, this works just fine.
I will eventually create a registry of implementations of Edu_RSS, so the collection owner can choose which collection to submit it to.
Also, note that I have posted a link to a CC license rather than the typical copyright notice in the copyright field. Ideally, the user here would have a drop-down of available license models; the value of the field would be a link to the (XML version) of that license.
Any how - very nice implementation, and I really like the fact that you’ve written a nice simple application that will be easy to customize and (even more importantly) easy to communicate with.
Stephen, thanks for the comments.
I’m planning on rolling in RSS support, as well as tying in authentication (so everyone doesn’t just trip over each other’s stuff). In my head, I’m seeing something like del.icio.us, where several people can “tag” a piece of media, and it can show you lists of everyone who tagged it, as well as how they describe it. This would be less useful for things that are uploaded (which is the initial primary purpose of the system), so these features will trickle out when I get time…
I definitely plan on polishing a REST interface to make it easy for folks to work with, as well as bookmarklets for easy tagging of online media, and integration with the Creative Commons license generators.
It’s not ready to be harvested quite yet, but when it is, I’ll integrate a call to EduRSS!
Your meme about the best solution being the absolute simplest, sounds like the principal that a scientific theory should be “as simple as possible, but no simpler” (attributed to Einstein, the only reference I can find is the Readers’ Digest, 1977).
pm I’ve just updated our Teaching Resources database to use a copy of the lightweight asset management system I built for the Pachyderm project. Previous [...]
oject Dashboard Asset Metadata Database We’ve implemented a simple MySQL database to store asset metadata. The database is designed to be fu [...]