nimble: agility results meet the web
nimble is a play on a much-wanted attribute in agility and of course, it is a huge beast of a project. Therefore this page is quite long.
A not very short history
Ever since I was a kid my parents competed in agility. It is a fast-paced dog agility sport, which bears at least some resemblence to jumping with horses. There are - for obvious reasons - differences. I become involved when I got dragged to most shows and especially when I started programming.
My first applications were in dBase III, but at some point I wanted to create something actually usable in Windows. GameHandler was born and we still use it to this day. It is ... uh... over 10 years old now and some changes have been made, but a lot of it is still as it was in the beginning. I learned handling larger codebases there.
In the same period it became possible for "normal" people to script serverside and I quickly jumped on the PHP bandwagon. Version 3 had just seen the light and I used it to create my first dynamic website: mcdogs.nl The name came from the agility training school of my parents. Again, I learned a lot, tried out different stuff. We even did a live coverage (with Java applet) of the world championships in Portugal.
But the site was first and foremost a front for an administration done by my parents: rankings in the Dutch competitions. My father had created the dBase software, my mother and I punched in all the results from shows and voila. The dBase got replaced by some experimental code of my own and mcdogs was the site to go to for rankings.Then I went to a university at the other end of the country and all development halted. Not much time, old code, other things to do. In the mean time some competition came up with more features, became used by the official bodies and took over. I did not mind the take-over, I did mind the bad design and flaky uptime.
I did not stop thinking about the software and discussed it often during shows where we did results using GameHandler. I started creating a new version in Java so I could use my new Mac as well. It had to be sharp, inventive and architecture astronauting was allowed to a certain extent. It had the working name 'agile' and that was a required property: as little hard-coding as possible.
In the mean time, things went bad on the internet; the other site seemed to go down forever and our site did nothing but competitions. My mother using her own blend of guerilla tactics and maternal love convinced me to work on the site. This is 2006 and I just started playing around with Django and I loved it; it opened a new door to make a new site quickly (and have fun!).
nimble.nl was born after going through variants of agile and the .nl-whois database.
The project
nimble manages everything on the competition-side of agility: dogs, people, licenses, shows, results and competitions. The first version came out in may of 2008 and featured only show administration - competitions where still on mcdogs.nl - but later got extended with results and most recently competitions.
It runs on the earlier mentioned Django platform with a MySQL database behind it. Some views can get quite heavy, especially in the competitions, so some caching is done, but mostly it just runs dynamically. For all intents and purposes, it is a first version with typical first-gen quirks. In the end I am quite pleased with the performance on a pretty slow machine.
But you learn quite a lot from the first version and a second version has been in the works for quite some time. But on top of that came a lot of features from the to-do list. At the moment, the entire project consists of three code bases, two primaries and a hobby project.
nimble.nl v2
The second version incorporates changes to further smoothen the show administration. Better handling of the workflow done by administrators and a better interface for doing so. The whole site got reviewed and mostly axed for better versions, building on feedback from users. There is no better lesson in a-designer-is-not-a-typical-user. It also meant I could pick up new technologies like CSS3 and update the urls so they actually made more sense.
New tech also means new requirements. Since it is a site for the home, we can demand a recent browser and because of the small user base using the backend, we can even limit it to specific browsers. The new site will have a requirement of IE9 for example, but will not be launched before that one is common in the field. New features uses tech like websockets for notification and a live system. But also old systems are overhauled and try to make things really, really idiot proof.
Django itself has not been standing still in the mean time and third-party applications are also getting pretty mature. As a basis for the other two code bases, django-piston came into play to create a backing API for applications. The first one is something which was on the wish and to-do list: new results software.
nimble
The java software I created as 'agile' changed names to nimble, but it was nowhere finished. We used it for the European Open (which features the most horrible and complex calculations) and it worked quite well. We got a lot of positive comments on the quality and speed of the results and rankings. I was also pleased with the code backing it. But it lacked one major thing: management.
That management was also in the website and a direct coupling between site and software was always a wish. The software got upgraded with JSON-capabilities and is currently waiting to get an interface for managing a show.
iOS
This started as a test for the JSON REST-API and of iOS APIs, but I received some requests for it as well. It has the lowest priority, but also the most potential for user-satisfaction. There are a lot of ideas for making the show experience a lot more interactive and easy. Will be continued.