You might remember that some time ago I was looking for some kind of hardware registry to handle some kind of database with the configuration data of various computers I support from time to time for friends and customers.
Unfortunately the only solution I found – GLPI – is written in PHP for MySQL, and both are taboo pieces of s…oftware for me, so I simply ignored the whole issue for quite a while. This till the past few days because one computer I patched up in July came back to me: the disk was faulty already, and I warned the owner at the time that it might not have lasted long, and now it was dead in the water.
What became a problem was that the same person brought me three computers at the time, and I had to find out which one of the three this one was when I went looking for the correct Windows XP Home installation CD; luckily I was able to find it by grepping for the product key, but that really upset me since it took me more than it should have to recognize the computer; it’s easier when I have a direct relation between owner and computer, but that wasn’t the case.
So I went looking for some solution; the first problem was, obviously, finding a way to “tag” the computer; either by using some serial number already visible, or by going one step further and create one of mine. Since not all computers have serial numbers, and they are pretty wild to find sometimes, I decided it was much simpler if I were to create my own code for them; but if I used a mnemonic code, it would be understandable by the owner as well, and might actually wonder why I did choose such a name for the system. One step further: I used as identifier a mnemonic’s MD5, so that it could only be seen as 32 random hexadecimal digits.
At that point you might wonder “how the heck are you going to be able to type in all the digits every time you search for the box? Well it’s actually much easier than that: I set up a private URL on my personal server (protected by HTTP digest), using that 32-character string as filename, and then encoded it… in a QR code thanks to Nokia’s service at that point it was only a matter of printing a label (I have them at home) with the code on it, and then attach it to the box. Thankfully, my E75 mobile phone is able to read such codes, and has Internet access, so just opening the barcode reader application and scanning the label is enough for me to access the page with all the details I need.
Of course in this picture I’m still lacking the server-side support; since GLPI is no-go for me (because of the PHP/MySQL dependencies), I first considered using a Wiki; of course it had to be something using what I already had on the system, which meant, mostly, Rails, so I tried Instiki upon Alex’s suggestion. Let me tell you it was a bad choice. It was really meant as a very quick and “dirty” approach: no authentication embedded in the application, added support for SVG and MathML directly into the (X)HTML, included the log on each page, no way to customize the appearance without changing the view files directly… and added to that, pretty unreadable on the phone.
At that point, I remembered that I dislike webapps for semi-static content so I thought about it a couple more minutes: I’m the only one who has to edit that data; I only need it to be searchable when I know what I’m looking for; I usually go around with my laptop; and git is pretty sweet for handling websites. So I ended up just using static HTML pages (for a moment I thought about using XML and a custom XSLT; while I haven’t decided against this just yet, it’s not really that much of a priority for me; if I were to publish fsws then I might actually consider adding something along those lines so that it could be seen as a standard and then used to import/export, maybe auto-generating some data directly on Linux (like logging the PCI IDs and stuff like that). But for now this will do.