Copyright © 2010 The G String. All Rights Reserved. Snowblind by Themes by bavotasan.com. Powered by WordPress.
I have been involved in a number of successful projects; each drawing upon my skills in computer analysis, design, implementation and project management. I have expanded on some of them here to explain my role more fully.
- Conic Bellophone
- forbiddenplanet.com – “the megastore online”
- dwscifi.com – news website
- forbiddenplanet.com – Interim website
- titanmagazines.co.uk – Java/Tapestry Web Application
- AGMP University Thesis
- Second-year Group Project
- Mathias Uniform Management System (MUMS)
- Airworld-online
Conic Bellophone

Wide shot of Conic Bellophone in Xj3D
I am involved in a music PhD research project that creates new musical instruments based on micro-tuning theory. My task was to create a 3D virtual reality model of the Conic Bellophone, an extraordinary instrument with 144 individually tuned bells. I drew on my experience of my University thesis to develop a model in X3D that simulates the instrument from a webpage, using Java applets for deployment.
Analysis
Working with open-source software which is supported by arcane academic and military sources, often waywardly documented, is a difficult task that requires plenty of original research, newsgroup activity and experimentation.
- I built a prototype model with only six bells as a proof-of-concept, before moving to a larger, fully-featured model.
- I joined and engaged in the X3D public mailing lists, in order to discover more about the codebase.
Implementation
The model is devloped in X3D, a XML language for high-level definition of 3D space. I use Xj3D to provide a Java-based browser that renders the scene, whilst allowing me to hook-in at the Java level.
- I developed a sophisticated scene that includes user interactivity, live sounds and glissando effects.
- I added Java code that reads in MIDI files and plays them back on the instrument.
Project management
I am solely responsible for this project, liaising with the PhD student who lives in Japan. I am operating on a freelance basis and am responsible for organising my workload. I am able to communicate with colleagues on very different timezones and obtain all the information I require to complete my tasks.
So far the model is at a beta prototype level. The project is expected to continue and expand into an on-line museum exhibit with external backing.
forbiddenplanet.com – “the megastore on-line”
I was the architect of forbiddenplanet.com, an e-commerce website that promotes over 14,000 product lines from graphic novels to uber-cool art toys. The website is the reflection of Forbidden Planet’s chain of retail stores, and is visited by over 50,000 people each month. I took the project from a set of static-pages without on-line fulfilment to a vital revenue stream and growth area, bringing in several hundred orders a week. I am delighted that the site has also created several jobs for web content administrators who write editorial content for the website.
Analysis
For several weeks I functioned as a systems analyst to scope the project and draft formal documentation of the requirements. The consultation process aimed to provide enough information to begin a large software project, and included the following tasks:
- Organising meetings with the senior directors and managers to define and record the business’ requirements. I would produce an agenda that would address the areas that required focus, maintain the documentation and produce reports ahead of each meeting.
- Analysing tools, products, services and technologies to identify solutions that met the requirements. Often this involved producing reports that outlined various options with their advantages and disadvantages, as well as cost implications.
- Performing research and benchmarks of other websites to determine best-practices, and make recommendations on what strengths the project could benefit from benchmarking.
- Producing UML use-case descriptions and models that formalised the required function of the project. In total, twelve use case documents were formally ratified.
Design
- I carefully planned and designed the project to be robust and future-proof. Several months after the site’s launch, all of the infrastructure I designed is still in use and has proven to be stable.
- I used a UML modelling tool to create component, sequence and class diagrams for each of the use case descriptions. This saved invaluable time; both by understanding how the system would work in advance and by using a round-trip code engineering to generate much of the framework code directly from the plan.
- I designed an XML-schema for the business’ metadata relating to product categorisation, effectively designing how the site’s range would be categorised and navigated. I designed a simple hierarchy that would streamline the task of categorising product; I implemented a solution that defined a product’s universe, family, type and genre for the entire range of Forbidden Planet’s vast and diverse stock range.
- I designed a comprehensive system checklist that could allow a tester to assert that the system behaved in the expected way.
- I designed and normalised a database schema capable of holding diverse information about products whilst remaining compact.
Technology & Development
- The project was implemented as a Java-based web application; it is a Tapestry / Spring / Hibernate stack accessing a mySQL database from within a Tomcat cluster.
- Technologies used: Java, Tapestry (4.0), Hibernate, Spring, XML, Tomcat, HTML and CSS.
- I wrote a sophisticated category service that uses an interface to allow product objects to hold polymorphic refernces to category objects. This made the implementation of the user interface logical and organised.
- I designed a URL schema that made the site Google-friendly, simulating a static filesystem folder structure.
- I designed a Java web service that interrogated a FileMaker database server, parses its XML and adds products into a mySQL database, allowing in-house staff to manipulate product records directly from a convenient FileMaker interface.
Project Management
- I recruited for and interviewed a HTML designer and two Java developers to join me on the project, thus forming the web team at Titan. I designed a CSS aptitude test to ensure that our chosen HTML designer was the best candidate for the job.
- I instigated an Extreme Programming (XP) methodology for iterative development at Titan. I introduced several new concepts and now the iterative development approach has been adopted for all web projects.
- I created and maintained a development environment used by the entire team, including Tomcat, Subversion, Cruise Control and mySQL administration.

Such was the success of the project that much of it was re-used for the Titan Books website. The website has also attracted the interest of Aardman Animations, who are looking to use the software for their online retail outlets.
You can see the completed project at www.forbiddenplanet.com
dwscifi.com – Ruby on Rails news website

In the spirit of rapid application development, I responded to a business requirement to develop a news and archive website in two weeks, using Ruby on Rails. The site has now built up an archive of several hundred articles and has a team of editors who author content exclusively for the website.
Analysis and Design
- With time being the critical factor, I quickly established the requirements of the business and editorial team, and identified that both the front-end website and a content management system would be needed. I identified Ruby on Rails as being the best choice to rapidly produce a single system that would act as both the front-end presentation and the content management system.
Technology & Development
- Technologies used: Ruby on Rails, HTML, CSS, mySQL.
- I implemented a simple category system that would allow the editors to decide which categories appear on the menubar.
- I implemented the means for the editors to create articles and upload imagery, thus allowing them to operate independently of the I.T. department.
- I configured our webservers to use the fastcgi Apache module to maximise performance.
Project Management
- I successfully completed the project on time in what was an extremely ambitous task given the deadline. I made the most of Rails’ inherent ability to prototype effectively, obtaining feedback more early-on to ensure that the project met the requirements.You can see the completed project at www.dwscifi.com
forbiddenplanet.com – Interim website
Proir to the full software project on Forbidden Planet, I was tasked with rapidly developing an interim system that would provide this service to respond to the Christmas sales season.
As time was short I had to try and utilise existing tools and services where possible. I wrote a program in Java that performed an XSLT transform from a Filemaker product database into HTML, thus automatically generating the list views on the pages. Using Server-Side Includes (SSI) we could combine this with the framework templates and create a website that is trivial to update and maintain.
Analysis and Design
- As I did not have the time to utilise formal development methodologies, I had to research into tools that could be employed that fit the requirements. I sourced a payment and transaction processor, and the tools that I would need.
Technology & Development
- Technologies used: HTML, CSS, XML, XSLT, Lasso.
- I wrote an effective shopping basket implementation using Lasso, which interfaced with our existing Filemaker systems. Using Lasso has minimised the impact of the new system on existing systems and has tessellated into the overall architecture perfectly.
- I wrote a Java program that transformed XML data from a Filemaker database into XHTML, so that the content on the website could be database-driven without using server-side technology. This involved writing namespaces and stylesheets to effectively parse the exported XML.
Project Management
- I managed to complete this project in a very tight deadline, which required that I effectively planned what I would need, so that I would not be waiting on third parties for tools or services. I also had to identify what formal methodologies I could bypass for the sake of speed, and consequently how I could minimise the complexity and risk of the project.
As the site was launched by the given deadline, it was proved to have been a great success. On a budget of little under £600, the website has generated tens of thousands of pounds worth of sales.
titanmagazines.com – Java/Tapestry Web Application

Titan Magazines is the UK’s leading publisher of cult entertainment and science-fiction titles, and I was tasked with the creation of a new website that met the new requirements of the business. Following some high-level requirements analysis, I defined the list of requirements, supported with UML use case documents. The requirements for the new website were:
- A stylish and well-presented front-end that reflected the quality and professionalism of the magazines it would promote.
- A website that facilitated on-line sales of subscriptions and back-issues.
- The ability to produce a preview of a new webpage before it goes live, so that it could be send to third-party licensors. The preview would have to exactly like the page that went up on the website.
- A minimal amount of maintenance; so that it was easy to update each month, and did not rely on the I.T. department.
- Territory-driven content; so that the latest magazine on the newsstand for a particular locale would be displayed depending on where the user is from.
I decided to build a database-driven web application based upon the Tapestry framework, using Java. Tapestry was eventually the best choice for the task, for several reasons:
- Tapestry leverages the model-view-controller design pattern fundamentally in its design. It uses HTML templates to define placeholders for dynamic content, which allows offline-preview of the resulting page before it is run; something not possible with JSP. In Titan’s case, this use of HTML templates fulfilled the requirement to ensure that the resulting page would exactly match what was sent to third-party licensors and therefore fulfilling our obligation to only display approved content on-line.
- Tapestry also favours a component-based architecture, allowing extensive re-use of code and components. Given the tight time constraints, and knowing that future projects would require similar features, I created Tapestry components that could be re-used in later development.
- Tapestry implements a pool of page objects so that once a page is constructed it can be re-used. This caching ability ensures that the website runs efficiently under high loads.
- Tapestry is written on Java, which offered us platform-independence. Titan Magazines made extensive use of both PCs and the Macintosh platform, and so Java allowed us to defer the choice of target platform until later in the project.
- Tapestry is open-source software which saved the company from the licensing costs of purchasing .NET and Windows Server 2003.
The Titan Magazines project consisted of several aspects:
Front-end
Firstly, the front-end design was a component-based Tapestry web application.
- The system would select the latest magazine product for a subscription by referring to a production schedule stored in a mySQL database.
- The system would dynamically show content based upon the location of the user.
- The system supports promotional campaigns through the use of session variables to select the relevant offer and drive the relevant offer in the shopping basket.
- The system would then display content that would be derived from information in a database.
- The system would allow users to register for e-zine newsletters through means of an email-based confirmation mechanism.
- The system then builds a URL for a supplier’s website based upon the current product selection and renders the link, to facilitate the order.
- The system would automatically consider a magazine title that is prior to the on sale date of the latest magazine to be available for sale as a back-issue, removing the content management requirements for back-issue titles every month. The system will also link to the content for the back-issue, if it is available.
Back-end / Content Management System
Secondly, to drive the content for the website I created a dynamic framework written in Java, to convert database content into web pages on the fly. This was done to allow the creation of a Content Management System that could edit the database content.
- I created a package of classes that utilised the Composite design pattern, so that the front-end could take an interface class and render it, with all the details hidden. The front-end Tapestry component calls a method getHTML() to return the content.
- I then wrote several classes to implement the interface, to support as diverse components as text, images, flash objects, applets and quick-time. These classes could then be compositied as part of a tree structure to build up larger content components.
- The framework uses XML and XSLT to convert the information based upon what context the content is being viewed in; this means that the same content tree is used on the front-end as is used within the content management system.
- I then wrote a web-based content management system in Tapestry to allow non I.T. staff to add products to the database, create content for the products, upload imagery and approve content.
Analysis and Design
- I produced a design based on UML diagrams. I created collaboration, class and sequence diagrams to provide the basis for implementation.
- I produced a system test checklist and designed unit tests based upon the class diagrams I produced.
Technology & Development
- Technologies used: Java, Tapestry, XML, XSLT, HTML, CSS.
- I created a database schema normalised to third-normal form.
- I implemented the project using extreme programming techniques, including extensive use of JUnit testing.
- I installed, configured and administered a Tomcat server, and configured Apache to route requests to it using the mod_jk module.
- I used XML to build a platform and content-independent view of the content, so that it could be used either on the main website or within the content management system.
- I wrote a generic class to act as the database layer, to ensure that access to the database were managed effectively. The class is designed to prevent connections from being left open, and make effective use of connection pooling.
Project Management
- I planned the project, providing management with a critical task list, gantt chart, a set of milestones a delivery date for launch.
The resulting project proved to be a great success and is currently live and taking subscriptions and back issues sales. The creation of content is done by non-I.T. staff, greatly reducing the lead-time for page creation and approval, enabling over fifty products to be updated regularly with a minimal amount of effort.
The website now drives 90% of Titan magazine’s sales in the US.
You can see the completed website at titanmagazines.co.uk.
AMGP: Abstract Multiplayer Game Protocol
Following my interest in 3D graphics, the Internet, and their applications in virtual reality, my thesis examined a network protocol for 3D Internet applications.I researched the market trends in 3D and Internet applications and identified the requirement to allow a persistent state to exist between heterogeneous virtual realities, requiring the use of a standard protocol to convey geometrical information between several arbitrary clients. The application for this protocol would be to facilitate genre amalgamation in computer games, and for a single physical state to be rendered on different clients whilst maintaining virtual consistency.
The thesis examines a number of approaches currently used and identifies the role of new technology in addressing the problem. The project uses X3D, the new XML format for VRML, to store a physical state on a server. This server can then be connected to by a client compatible with my protocol; effectively facilitating client independence. I implemented a server and client using Java’s networking classes, and designed an application layer protocol that describes high-level actions to manipulate objects in the scene-graph.
Analysis & Design
- The project required extensive analysis skills: I studied and criticised a number of existing protocols, algorithms and design approaches; giving reasoned explanations for the chosen design
- The project required careful design. A network protocol must be static in order for the different clients to understand each other; the design therefore considered what the protocol should communicate and what the most efficient method was.
- I utilised adapter, factory, and state design patterns. I used the state pattern to consider a connection object as being in a particular phase of communication; adjusting the state object to denote when a client was ready to receive data. I used factory patterns to abstract the creation of X3D manager objects, and I used the adapter to abstract the different types of packet I had defined in my protocol.
Technology & Development
- Technologies used : Java, XML, X3D, UDP.
- I developed a derivative of stop-and-wait to maximise throughput; after analysing existing network protocols, I designed a protocol based on UDP to transmit both reliable and unreliable packets depending on the context, allowing maximum throughput.
- I implemented a server that kept an X3D scene-graph and updated it with client information, in Java. The server supported multiple clients, and used frames to reduce network traffic.
- I implemented a client that co-ordinated with the central server, in Java. This used the java.net datagram classes.
- The physical state was represented using an X3D scene-graph; the new ISO standard for representing 3D data on the web. This scene-graph would then be altered dynamically by the clients using my protocol.
- I implemented a thread-pool in Java.
Project Management
- I kept and maintained my project website, to post news and files during the year. I found this motivated me to log my progress, and provided my project supervisor a convenient method of quickly obtaining progress updates at a suitable time.
- I managed my time effectively; setting milestones and estimating complexity.
- I set my own scope and focus for the project, specifying a list of goals that I wanted the project to achieve.
You can download and read my thesis document here.
Second-year Group Project
During my second-year of University, students were required to complete a year-long group programming project. I led a group of five students to develop a software mp3 music player that interfaced with a hardware mp3 player. The project was completed in C.
Analysis & Design
- As a group, we held several meetings to decide what the software should do, deciding on the scope of the project and estimating the complexity of each component. We used the ‘black box’ approach; compartmentalising functionality so that tasks could be allocated to a particular team member.
- As I had the idea for the project, I took on extra responsibility in the research required to understand how we could achieve our goals.
Technology & Development
- We developed the software entirely in C, using the Linux platform.
- I used the GTK+ toolkit to develop the GUI interface.
- I used the pthread library to develop the threading model for the GUI, so that we could effectively handle user interaction.
- I used low-level driver libraries to communicate with the mp3 player device using USB.
Project Management
- As the group leader for the project, I was responsible for the administration of the group; handing in the work, milestone setting, task allocation and prioritisation and version control.
- Early on in the project, we lost a team member who left the course due to family issues. Consequently, we had to re-adjust our goals, milestones and time management to accommodate. Unfortunately, this entailed the decision to discard some functionality; but we managed to re-assign most of the work around the team. This taught me how to plan our time effectively and how to manage the scale of a project.
- Later in the project, tension grew between two members because one felt that the other was not working sufficiently hard enough. It elapsed that this was due to demotivation surrounding the extra effort required to learn a new library API. To resolve this issue, I took it upon myself to learn the API so that I could assist with the actual work. After the initial inertia was overcome, my teammate found it easier to continue and so the equilibrium in the group was restored.
Mathias Uniform Management System (MUMS)
“Mums has been a revelation, improving control and providing excellent Management Information. A unique selling point in this sector”
Scottish Courage Procurement Manager
I developed the STEP award-winning Mathias Uniform Management System during my time at Mathias and Sons. It is a web application that allows authorised users to place orders whilst providing budgetary controls to prevent overspending.
Site: http://www.mathiasandsons.com/
Analysis & Design
- I prioritised my time at the start of the project to learn more about Mathias and Son’s core business; understanding how they work and identify areas where automation could improve efficiency. I drew upon this information when designing the on-line ordering system, so that the web application could amalgamate with existing systems where possible.
- I composed a number of high-level strategies and presented them to management; outlining potential time-frames and costings. It is a strength of mine to research and collect a large pool of information and digest it into a manageable report, to aid decision making.
- I held several interviews with staff and Mathias’ clients to fully understand the needs of the user; how the site should look and how it should work. This required effective management of the information and the resolution of conflicting requirements.
- I created a design for the entire website and database schema; and from an early stage I tried to avoid decisions that could affect the scalability and maintainability of the site. For example, I designed the site so that it avoided the use of the ASP session variables; which would have prevented the web application being scaled up to run on multiple web servers in future.
- I utilised the best practices involved with the iterative software development process, opting to complete four iterations of analysis, design, implementation and testing.
Technology & Development
- The web application was developed in ASP. The website would generate SQL queries that would interrogate an Access database.
- I wrote a login component in Visual Basic 6 that would prevent unauthorised access to the site. This component would also display content relevant to the particular user.
- The website would generate sales orders and transfer them seamlessly and automatically into Mathias’ Sage Line 50 software. This removed the need to manually input this data, saving time and effort.
Project Management
- I was responsible for setting and meeting my own deadlines and milestones. I kept a policy of setting milestones and estimating the complexity of particular tasks. This sometimes meant that I had to negotiate with the Management as to what new functionality could feasibly be included in the next iteration
- I managed to keep effective communication open with the staff at Mathias; so that I could rely on their cooperation in obtaining quality feedback and opinions whilst keeping the management informed of the status of the project.
Airword-Online
I joined with two colleagues to create Airworld-Online.com; an on-line marketplace for adhoc air-charter. The site aims to match buyers and sellers of air charter capacity.
Analysis & Design
- Airworld is an initiative we have attempted on an entrepreneurial basis. Consequently, I needed to set my own goals and objectives before I could start an analysis.
- I met with a number of operations managers at prominent airlines to understand what information potential users would need to see when using the service.
Technology & Development
- I designed a web application built using ASP and an access database. The site used SQL queries to build a search facility, that matched the potential buyers and sellers.
- I successfully completed two iterations of the software life cycle; the first alpha version of the site was used to pitch for investors and to potential clients; the second was a full version.
Project Management
- As I was working under my own motivation, I needed to set all my own deadlines, targets and milestones.
- I was also involved with the wider management of the project, including efforts to source finance and the marketing of the project.


August 4, 2009 at 12:09 am
[...] Projects [...]