We have skills in most of the IT area, but our specialities include:

 Software Analysis and Specification

Before any software can be produced, you need to know what it is going to do. This may seem obvious, but putting together a coherent and well-order document that provides the Functional Specification can be more difficult than it seems. What questions need to be asked to put this together? Who needs to contribute? What security does the system need? Where will it be used? Does it need to support accented letters?

We can assist you with this, and create the Functional Specification for you.

The second stage of a software project is to produce the Technical Specification. This is written by the people who will be creating the software – it is their interpretation of the Functional Specification, describing the software they will create to fulfil it. This can include a lot of technical detail and I can analyse these for you, and spot errors and omissions before the software is commissioned.

 Software Project Management

Getting a software project to come in on time seems to be a rare skill. It all depends on how you manage the project.

One reason for delays in software is unrealistic estimates as to the amount of work involved. Something that is often underestimated is the amount of testing required before software is fit for release. Indeed, there is one school of thought that suggests that one third of a project’s time should be spent on specification and design, one third on development, and the remaining third of the time on testing.

Having been involved with software projects on a variety of scales, from one-man developments to projects that have spanned both teams and countries, we have considerable insight in the running of software projects. Other important factors are managing “change control” – what to do when features change – and ensuring that the development remains responsive to the client’s needs.

 Software Architecture and Design

At the technical level, a piece of computer software must be designed. It needs to be split into components, and the interaction between the components defined. The components can be on the gross level, as in separate pieces of software running on servers in different countries, and on the most detailed level, such as objects within the same program.

It is important to remember that the whole architecture of the software does not have to be completed in advance, and that the design must be flexible as the system evolves.


These days everyone needs a website. If it is to do more than advertise services, it needs some functionality behind it. This is something that I can provide.

We have three websites as examples:

  • Gypsy Genealogy – this site uses PHP scripting to provide a simple content management system that indexes the names of the people found in the articles. The entire site design, including graphics from photos supplied by the client, was created in house.
  • Welwyn Garden Concert Club – because of the way this site is hosted, server side scripting is not possible. So a modest amount of JavaScript is used on the home page to control which concert is shown as “our next concert”, which means that the website only needs to be updated at the end of each season. To simplify the construction of the pages – to avoid copying headers and margins every time – AJAX is used to load the concert information.
  • Nebula Technology – the site you are currently reading! This is a very simple website and employs just a bit of JavaScript on this page to open and close the sections.

 Multi-Platform Software

Multi-platform software is a particular passion. It should not be necessary for a user to have to buy a particular system – Windows or Mac – to run certain software; it should run on both and squeeze every jot of performance possible out of a modern PC.

The established way of writing multi-platform software is to use Java, but this has drawbacks – not least that it does not use the operating system’s own user interface elements, and so things can work in a slightly unexpected way. It is also dependent on you having the correct version of the runtime installed.

Our preference is to use C++, a very mature programming language that harnesses the raw power available in the modern PC. Using the wxWidgets toolkit enables the software to be ported to other platforms with relative ease, so you can have your bespoke package running on Windows, Mac and even Linux machines with very few changes.

 Database Design

The structure of the data in an application is of fundamental importance. It needs to be such that it can be extended over time. When designing a database, it is also vital to consider the uses to which the data will be put. Often, the reports generated from a database dictate its structure, rather than the input data. Should complex queries be required on a regular basis, they need to be designed out of the database to reduce the resources required to run it.

 Data Mining

You have a large quantity of data, and you want to analyse it for evidence of various trends in your marketing or sales – but the system doesn’t provide that sort of report.

What’s needed is some data mining. Looking into the underlying database, finding out how the tables are linked and then extracting trend data – maybe pulling the data into Excel to use pivot tables to provide further analysis.