Code
I've done numerous small pieces of code in the process of learning languages, and I'm not including these. What I am including as examples are probably my two largest coding projects to date.

xix
The content management system for this website (and now other websites) is on its fourth revision and this revision (a complete re-write) is now named 'xix'. There's a page devoted entirely to xix and its features here.
xix was written in object oriented PHP 4, and uses a MySQL database as its storage medium.

Given I have the at least vague intention of selling copies of xix, the source code is not available, and this site is the main working example of it. To give some indication of the size of the project, including all the control panel code (that I regard as a very important aspect of it) it totals over 5500 lines.

Mobile Map Service: Group Project
All second year (part IB) computer science students at Cambridge are required to partake in a group development project, I was assigned a project that wasn't one of my three preferences (Which is apparently rare). My group's project was to design a mobile map service, whereby mobile phone users could get text directions to locations and computer users were presented with an attractive Java applet with rendered maps.

I took the role as one of the main coders of the project, and was also involved in the design stage. This left me with a section of code which I didn't particuarly want to do, and nobody else wanted to do, namely the map rendering.

The code for this was pretty ugly, and although didn't take that long to write, it took forever and a day to debug! Roughly speaking the MapRenderer class generated the maps using Scalable Vector Graphics (SVG) as an intermediate step and then they were transfered to the Client as serialised MapImage objects, where the chosen route was then highlighted on top using Java Graphics2D calls. A lot of the very ugly code was involved in getting all the cases of roads being rendered when one (or both) the end points were off the map but the road might intersect the map. The roads and road names were dynamically rendered and the background of the river and buildings et cetera was static, the test dataset was the Cambridge University map of Cambridge.

The group project taught me that however good your product, without presenting it well it won't succeed, that I can just hammer out code if need be even if it isn't on a project I wanted to do and started as being enthusiastic for. Finally it also taught me the importance of object oriented programming and good design, this is because I knew what other sections of the programs were supposed to do and roughly how they worked... but couldn't care less about exactly how they were implemented.

Our group came 2nd in the over all rankings, which was fairly disappointing given the amount of work I put in in the last few days of the project, but given it was out of a total of 14 groups still a reasonable achievement.
To the best of my knowledge the project is still running at http://www.monkeymap.tk and for WAP users at http://ajrn.co.uk/map/

The three files that were my largest (most important) contribution in code are:
http://www.ajrn.co.uk/src/kilo/MapRenderer.java
http://www.ajrn.co.uk/src/kilo/Renderer.java
http://www.ajrn.co.uk/src/kilo/RouteRenderer.java
All source code is copyright the kilo project team 2004, duplication and dissemination is forbidden, all rights are reserved. The code is only presented in its messy form for educational and exemplar purposes.
I also wrote code for performing tests on the classes I'd written and so other odds and ends in other people's files.
In total I contributed a little bit more than 1500 lines, some of it JavaDoc and ordinary comments.




Page created: 22:30 17 Mar 2004, Last modified: 00:31 18 Mar 2004
© Copyright Alaric Nightingale, 2003. All rights reserved, offenders will be annihilated.
Site generated by xix content management system version 0.2.0.

Valid XHTML 1.1 Valid CSS! informationStorm.co.uk