November 2000 Issue 7

Our service to you - software development

Outsourcing - have you considered outsourcing the development of your next MS Windows program? There are many benefits, for example, if you want a fixed price contract, then we take the risk of cost-over-run on development.
Specifications - one of the keys to getting the software you want is a good specification. We can write a specification for your next MS Windows program. A specification has an intrinsic value - any programmer can use it to code the program. A good specification will save you money and time.
Software design - the way the program marshalls data and responds to events determines how efficiently and reliably the program will operate. In object-oriented, event-driven languages such as Visual Basic and C++ the requirement to encapsulate data and operations into objects puts a greater emphasis on the design stage. Cambridge Software can design your next MS Windows program for you to suit object-oriented methodology.
Prototyping - we can prototype the appearance of user-interfaces, providing you with screen dumps to approve before coding begins. We can also prototype signal processing algorithms using Matlab or Mathcad so you get a good idea of the results of any processing before coding begins. This reduces the uncertainty and risk associated with development.
Coding - we can code your program in Visual C++ or Visual Basic. These are both event-driven, object-oriented programming languages. You will get a fully functional, 32-bit Windows program.
Installation program - we can provide you with an installation program based upon industry standard products. A good installation program gives a good first-impression of your program.
CD-Rom production - we can create prototype CD-Roms for your application, and we can even manage production.
Mathematical modeling - we can develop mathematical solutions to model physical phenomena and generate numerical solutions. If you don’t have staff with this expertise then we should be able to help (some of our staff are trained to PhD level in physics with many years of experience).
Marketing and promotion service - our marketing and promotion service for businesses covers the UK and Scandinavia and uses native Swedish and English speaking staff. We specialise in businesses entering a new market or businesses from outside the UK wishing to enter the UK market with a new product or service. We provide a low-cost, low-risk way to test new products or services in new markets .
Management consultancy - we provide a service based around financial modeling and risk analysis for business opportunities. If you are not sure where to put your money for business development, we may be able to help. If you have never used this decision-making technique before we can introduce you to the methods and you can use them for yourself in the future to advantage and profit.

Institute of Physics - Christmas family events in Cambridge

Come along and learn about science at the Cavendish Laboratory on 20th December. Do something different, have a bit of fun in Cambridge for children aged 10 and older and adults in the week before Christmas.

Event 1: "Babbling brooks, medical ultrasonic imaging and looking at ultrasound" Public lecture 16.30 to 18.00.

Event 2: "Call my bluff - in science" a panel of scientists and celebrities tries to bluff the audience in matters scientific 19.00 to 20.00.

Both events are organised with younger people in mind, in the age range 10 years and upwards.

The East Anglian branch of the Institute of Physics (IoP) is organising an event on 20th December in Cambridge to help promote interest in science in general but physics in particular. David Andrews of Cambridge Software (ex-Cavendish laboratory) will be teaming-up with Alan Walton of the Cavendish Laboratory to give a public lecture all about ultrasound, with a strong emphasis on demonstrations. If you are familiar with the Royal Institution's Christmas lectures for young people then you will know the format.

An hour later there will be a chance for all ages to pit their wits and knowledge against a panel of leading scientists and celebrities in an adaptation of the popular TV quiz “Call my bluff”. The panel will give various simple explanations of things scientific and technological, not all of them true - anyone under 18 is allowed to vote for the one they think is true. If the largest vote is for the true explanation then the audience wins a point! Will the panel be able to bluff the audience?

There will be a display area for younger people to get hands-on fun between the two events. There will be some robots on display from the BBC TV series Robot Wars.
Malcolm Longair (head of the Cavendish Laboratory) and Rex Garrod (robot maker and TV/film special effects man) will be two of the celebrities more will be announced on www.cambridge-en.com closer to the date.

The first event will not begin until 16.30 so why not make a day of it in Cambridge, do some Christmas shopping then pop-out to the Cavendish (good parking facilities) and have some fun with science at the famous Cavendish Laboratory!

More details will be placed on our web-site www.cambridge-en.com. These events are likely to be popular and limited to tickets (free) so please request tickets if you want to come (camben@cambridge-en.com).

We look forward to seeing you at the Cavendish Laboratory on 20th December.

Marketing, mentoring and sales promotion service

We were approached recently by a company based outside the UK to act as its marketing agents in the UK and Scandinavia. The company is a new E-commerce start-up planning to offer a financial service. Our experience in software development coupled with our experience in dealing with a similar number of customers has been of direct benefit. It is possible that we will provide a software development service to our client in the future but the initial brief was to investigate the market for their services in the UK and Scandinavia.

The brief from our client was to start talking to their prospective customers, to get an initial reaction to the new service on offer and to identify potential corporate customers. We have done this, focusing mainly on the UK market due to the larger size than Scandinavia. In three months we created a short-list of approximately 150 potential customers, including full contact details, contact names, telephone numbers and e-mail addresses. We created a custom database of contacts in Access, which is something tangible we will transfer back to the client in due course. We visited or contacted most of the potential customers for preliminary discussions and to develop market intelligence.

In the course of our market survey we identified two new market niches with considerable potential for our client, making three market niches in total. We have developed financial models for each of them. Using the model results we have proposed a marketing strategy to the client to maximise profits and generate an early positive cash-flow. The importance of early positive cash-flows cannot be over-stressed for E-commerce businesses where, business confidence is crucial to their existence.

We are now preparing sales literature for the client. Since three market niches have been identified there is a need for three different sets of literature. Our DTP skills have been used to advantage.

Another way we have tried to help our client was by writing a proposal to the European Commission for financial support for a collaborative development project. In preparing the project we were able to advise our client of the existence of emerging European Union standards on E-commerce. The client intends to adopt best-practice so our role may be expanded to help in preparing a quality manual for them covering compliance with European Union E-commerce standards.

The benefits to our client in using Cambridge Software have been: a low-cost way to establish a presence in their market, development of market-niche intelligence, development of a database of potential customers, cash-flow modeling of future sales and recommendations on strategic marketing policy.

Another business we have been assisting is altogether different: Swavesey Fine Art is a new fine-art sales business concentrating on 18th and 19th century British paintings. Its strategy is to use the Internet to cut its marketing costs and so gain a competitive advantage. Basically, its cheaper to buy direct from Swavesey Fine Art than from a gallery. Since fine art paintings have risen in value faster than inflation they have historically always been a good investment. We have been providing a mentoring service to Swavesey Fine Art as well as preparing their sales brochures. Our help has saved them several thousand pounds in the crucial early stage of trading. We are also guiding them in how to manage their internet-site and how to contact new customers (www.swaveseyfineart.co.uk).

It is possible we will enter into a business agreement with Simon and Jan Poole, the proprietors pf Swavesey Fine Art, to develop some specialised software products, unrelated to fine art. This is an example of how mentoring can lead to unexpected benefits.

Register your e-mail address

Please send your e-mail address to and we will notify you by e-mail when new copies of Innovation News are posted on our web-site. You will also be informed of any other news, such as collaboration opportunities, new services and products.

We would be grateful if you would also kindly send us your latest contact details so that we can keep our records up to date.

The essential information we need is:

Your e-mail address.
We would also like to have the following information:

Our policy on your contact details is:

 

Hot hints - Copy and Paste-Link, OLE, OLE automation, COM objects and Direct X drivers

What do the following have in common: Copy and Paste-Link, OLE, OLE automation, COM and Direct X drivers? Answer: they form a Microsoft evolutionary chain. Its like primaeval soup, early fishes, Neanderthal man, homo sapiens and an Olympic athlete.

A recent project might be of interest to you if you are thinking of delving into the world of inter-program communications using OLE. Cambridge Software was contracted to write a program in Visual C++ with the development name GFE (Graphical Front End). As the name implies GFE is a graphical front-end to an existing program, called OneTest which had been developed using LabWindows. OneTest was essentially an experimental control and data logging program that could only display one set of data at a time. However, OneTest makes a pass/fail decision on the quality of an inspected sample based upon several sets of data. Our client wanted to display simultaneously all the sets of data used in making a pass/fail decision. Ideally, OneTest should have been re-written to do this but apparently this was either too difficult to do using LabWindows or too expensive or both. Anyway, the client made a decision to use a second program that would act as a graphical front end to OneTest and then called in Cambridge Software to write it.

Initially we recommended using VisualBasic for speed of development but the client wanted C++. We used MS Visual C++ wizards to make the skeleton of the program, which was a Multiple Document Interface (MDI). A MDI interface allows GFE to have more than one document loaded at a time, which is a distinct advantage because GFE allows the user to edit graphically (click and drag) the visual appearance and arrangement of the many data sets sent by OneTest; being able to save different arrangements and compare them quickly on screen was a real advantage.

A novel feature in how data was arranged was the use of multiple views. In GFE the document saved to file is the information on how to arrange all the data created by OneTest. A document does not contain the data sent by OneTest. You can think of it as a Word document without the text, just the formatting. So the multiple views are not viewing the document they use the document to view the data - a subtle difference. You may be familiar with how to split views in Word or Excel so that you can look at different parts of the same document on the same screen. In GFE the user can add or remove many views on the fly and drag and re-size them graphically as individual windows. The user can also allocate different sets of data from OneTest into different views, grouping them in suitable ways. Managing the views presented a number of difficulties. Another problem was that the client wanted each view to have a name chosen by the user, instead of the name that MFC likes to give each view derived from the file name. We solved all these problems and allowed optional scrolling of the data in each view. It all works beautifully and the visual appearance is stunning.

As well as using the many standard classes created by the compiler wizard we also created several new classes to hold the document data and the incoming data from OneTest. These new classes only included serialisation function members, used in filing activities, so they were little more than data structures. We also used Microsoft's array and list templates, to create arrays and lists of these classes. These templates are not part of ANSI C++ but they are useful because the program only learns at run time how much data is going to be generated. Template arrays of custom classes of data amounted to a fairly complex but elegant solution to the data requirements of GFE.

Communications between OneTest and GFE were chosen to be OLE automation by an advisor working for the client. You may remember the original OLE, object linking and embedding, which allows you to drop an Excel chart into a Word spreadsheet. My experience is that I have never got an Excel chart to work properly in a Word document using OLE, particularly if you select link-data. It is painfully slow and usually results in the use of Ctrl-Alt-Del! I have to confess I was a little anxious about using OLE for this reason - I’m pleased to report it worked much more reliably than I expected.

OLE has come a long way since the days of the Clipboard's Copy and Paste-Link. It now has several other names like: OLE automation and COM. Within the GFE project the use of OLE automation was relatively straightforward. Cambridge Software created a specification for a set of communication functions in collaboration with the client's engineer responsible for OneTest. These were coded into OneTest, making it the Server of information. The OneTest compiler created a couple of files that were read by an automation wizard within our Visual C++ compiler, making GFE the Client for information. The wizard created a new class whose member functions were the communication functions. That just left the job of writing the code in GFE to access the member functions. Within GFE we made the Frame class, which is only ever instantiated once during program execution, to be a local server of OneTest data to the multiple (client) documents that can exist within GFE. This too was relatively painless.

So much for OLE communications but there was an aspect to the communications we had not anticipated from the outset. Two programs communicating without any synchronisation will inevitably result in lost data. We had to add handshaking control functions to make certain that the two programs stayed sychronised: its like an RS232 serial interface or IEE 488 parallel interface both are asynchronous and need handshaking to control the efficient flow of data. Between GFE and OneTest we used a simple locking function to stop OneTest racing ahead until communications had completed. Communications in GFE now proceed without a hitch.

We had assumed that OneTest would mark the end of a set of data and a pass/fail decision by invalidating the old data, unfortunately OneTest doesn’t invalidate data until it is just about to be over-written. The client expected GFE to invalidate the old data at the end of a decision. This caused an unexpected problem in GFE’s state machine but we were able to fix it. Since we offered a fixed-price contract for this project our client benefitted by no increase in cost.

Communications have been utterly reliable. As for speed, well when the specification with the client was drawn-up it was agreed not to specify any particular speed because Windows is not a real-time operating system. GFE runs fairly quickly but the client would have liked something faster. So the moral of this project is if speed is not an issue then OLE automation is a good choice. If speed is an issue then you might like to consider using shared memory or a shared file that is kept in RAM - otherwise there is nothing to beat a single application!

You have probably already used an extension of OLE automation in the form of COM objects Visual Basic is festooned with COM objects. All those libraries of extra objects like data grids and database control bars use OLE automation. You can create your own COM objects using C++, for example, encapsulating some functionality with OLE automation wrapper functions, then exporting them for use within Visual Basic or Visual C++ or Java. The philosophy of COM is the same as the object-oriented approach: encapsulate data and functionality then incorporate into an application as required. One difficulty with COM objects is that their action is dependent upon them being registered first with the operating system in the Registry. If that registration gets corrupted at any time, its happened many times on our PCs, then the COM object affected won't work properly, the application crashes and you need to re-install. Manual editing of the Registry needs a certain amount of nerve! The OLE automation in GFE results in 28 different entries in the Registry! We use Norton Utilities to view the registry and edit it. If something goes wrong then the last resort is to delete all references to the application and re-install.

Direct X has been a huge boost to the popularity of Windows 9x over the last few years. Why? Because Direct X makes games programs go faster. Direct X is an alternative method of playing sounds over a soundcard and drawing graphics on the screen, particularly 2D and 3D graphics. It seems that every month there is a newer, faster version of Direct X. The manufacturers of video cards seem to like it as well. Are you surprised that Direct X is made up of COM objects?

Some data-capture boards provide drivers in the form of COM objects. This approach makes them widely available to different compilers. However, a PCI board can communicate data at 64 Mbytest/sec according to the latest standard. How does the use of COM affect the speed of operations in this case? Proceed with caution!