
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 dont 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.
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.
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.
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:
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 - Im 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 doesnt 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 GFEs 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!