When you have a good idea where you want to go, we are here to provide you with the “how to get there”.
We provide consulting solutions, for the realization, research, or development of high performance applications. As show on the figure below, the exact nature of our expertise will differ greatly, depending on your status.
Let us explain the “big picture”. It describe the creation process, from a general idea to a commercial application. The length of the figure can be roughly view as an order of magnitude of the investment (in time and money) needed. For example, going from a optimized application to commercial one is faster (and cheaper) than going from an application to the optimization, which itself is faster than going from a working case to an application…
A good method can be better than a good idea.
The first step, the order of ideas, ranges from “we need a code to solve <that specific problem>” to an educated, literature-supported (comm in the above figure), guess. It doesn’t have to be your idea, nor does it have to be a rigid goal for your future applications. Countless projects on “how to make B from A” end up in an application that “takes C to produce D”.
At that point, though, you are going to need to move to the equations step. This step, which does not necessarily involve real equations, can be viewed as a “we have a way to make things work… on paper”. During that research and development first step (R&D on the figure), there is honestly little we can do – unless you are willing to invest a very large amount of money in that step, with a time scale counting in years. The best we can do is provide names, which you probably already know from literature (comm) anyway.
From paper to real case…
In the second step, from paper to a real case, we can provide you with some estimate of what can be done, using a given materials, and within which time-frame. Of course, depending on the application, we can even start working from here with you. It is still a long and expensive process, but we can provide you some shortcuts, which can shorten the next steps too.
Importantly, the first case often dominates the orientation of the whole project. This is where it pays the most to use general, documented, and proven methods. Suppose you have a big piece of Python/Matlab/R script which can, using obscure mathematics, work out your problem. Chances are that it will remain a big piece of script, unless complete (and detailed) documentation is also provided. That kind of codes often disappear when the original author does not maintain them. Simply the work necessary to re-understand them is bigger than that of restarting anew.
From solving your problem to solving others’.
Going from a working case to an application, or general case, is where your idea and method will prove to be of most value. In ideal conditions, this will only mean adjusting your code a little to match wilder specification. Unfortunately, in real world, this often means going back up to equation level, and loosing precious time dealing with problem that went unnoticed at previous steps. Having a panel of users with close, yet different problems and backgrounds is going to help us designing a successful application.
This is also the point where a business model should be decided, and this will have consequences for the future application (see a brief description of business models, below).
Efficient application is the fastest to do the most, using the less resources.
When the application point is reach, the road is far from over. Now, the application can answer some problem for you and others, but it still have to do it efficiently. This does not necessarily means that your application should be the fastest – though it can help – but it means that it have to be:
- User friendly: if a regular user have to spend several month just to perform the most basic task with your application, it means he will probably tries to get a more simple one. In case of an application for very specialized audience, it also means that the use should be simplified to the most widely accepted terms of that community.
- Attractive: that’s a point often discarded, but having a nice interface to your application – if possible a graphical user interface (GUI) is always better than having an user filling by hand columns of data in an obscure format.
- Fast: if the application takes several weeks to perform a task that other applications can do in several days, even if your application have valuable additions, it will still not be used. This implies that it have to be up-to-date with the latest optimization hardware and software, to the maximum of its ability.
- Portable: if your application can only be run on an hand-made hardware that only few laboratories in the world possesses, no user but the member of said laboratories will show any interest. This is also true for software dependence, if your application depend on libraries, they have to be reliable, ubiquitous, and well maintained.
At OVHPA – High Performance Applications we have experience with designing interface sizing from supercomputers down to microcontrollers, and ranging from specialized submission scripts for the former to size-optimized compiled-code for the later. But also 3D GUIs for computers and simple display for embedded technologies. See the Interfaces page for more detail.
We also have a lot of experience in optimizing programs for multi-nodes, multi-CPU, multi-cores, and multi-GPUs systems. This can be beneficial for applications targeting supercomputers down to personal computers (and sometimes including some embedded systems), while smaller systems usually favor security and size (embedded systems, internet of things, and microcontrollers). See the Programming page for more details.
Once the “optimized application” level is reach, the work is almost over… or at least this is what we would like to tell you. But there are many more troublesome issue to take care.
Even if you have already chosen a business model (see below for examples), we have to make sure that the application fits the model. For example, the licensing must be chosen to reflect any third party code you may use. There is actually a lot of legal trouble that awaits, and if we can help with a few, you should know that you will probably at some point need to seek some legal advice from a law firm. They will be able to provide you with the necessary disclaimer, term of service, and others legal documents that will prevent you to get sue and/or go bankrupt, which is worth the initial expense they will cost. We can at least help you to prepare the questions they will ask you, or we can even direct you to some professional service (which we are not affiliated to), at least in Japan.
At that point you should be the owner of a nice application and you and your users should enjoy it for a long time, congratulations! This also means that it will be the end of our collaboration. Please remember us when you reach success!
The process of designing an application.
Countless very good applications have failed due to a poorly chosen business model.
Even when a powerful and efficient design have been created for an application, the choice of a proper business model can be critical for its future. There are a lot of possibilities, most of which depend on the size and the support abilities of the source company. Some example among the most popular are:
- A closed-source, commercial application is a model that comes naturally in mind, as historical biggest software provider chose this model for their products. It is a sustainable model only if a dedicated team that will take care of support of the application for years is present. Additionally, some responsible developers should also be dedicated to improve the software as the material and demand evolves. This is the least cost-efficient model for a small to medium company, especially one without a dedicated IT team.
- A distributed-source, commercial system is often considered for medium-sized company. Here, the source code of an application is also made available to a client after payment. The main advantage is that it leverage the need of having a big IT team dedicated to support and development. Especially users may partly adapt the code of your application by themselves and let the community benefit from their experience. This is enforced by licenses usually urging users to make public each modification done to the code. However, in this model, the cost of including change periodically and provide a continuous support is still too high for some companies.
- A free open-source distribution with a commercial support is the model of choice for small (and medium) company. However, it strongly relies on the ability to form a community around the application. In such case, only limited support team for commercial purpose is required. Benefits for the application are the same as for open-source models.
- A open-source / closed-source model with a free and extended paid applications, respectively, is also a possible model. In such case, the features of the applications must be wisely chosen between freely available and paid ones. That choice is difficult: if the free application have too much feature, users won’t feel any needs for the paid one; conversely, if the free application is not attractive enough, there will be no push for the paid one either. In this model the maintenance is simplified due to the fact that the most interesting development on the free version can be automatically added to the paid one.
- Finally a free, open-source, distribution is also possible. In such model, the income is moved to another part of the application. It can come from advertising (for example for a mobile application) or material – in case the application is linked to a specific hardware. Solutions based on donation and charity, as well as crowd-funding are quite popular for very small teams down to one-man team. Also let’s not forget public or government grants, which may actually forbid to take any income on an application they funded.
The choice is up to you – though we will of course advise you – just remember that whatever the business model of your choice, it is always possible to go more open, and more free! Going the other way, however, is as easy as swimming against the Niagara falls stream.