HadronZoo: Bespoke Software Developers
Simple But Effective Realtime Server Solutions from HadronZoo Software.
We write high performance Linux server programs in C++ to provide test platforms, backend number crunchers and a wide veriety of online data services including specialist websites. All are built on a public domain C++ class library formulated for this exact purpose. Our prices are low and the service flexible. You only commit to one stage of development at a time. At the end of each stage you will be given the latest source code, documentation and configs and so are at liberty to take the project back in-house. The low costs don't come from cutting corners on quality. They come from the way we operate. We work remotely, we stick to what we know and most importantly, we limit ourselves to clients who are on the same page. It isn't quite enough to like what we do. You also have to like and understand the way we do it. Below are some of the key points of our design philosophy.
One big program is better than lots of small ones
Many would beg to differ and for the development of client side applications they might have a point. But on the server side, we don't believe there is any real substitute to building systems from the ground up as a minimum set of large end to end C++ programs with as few external dependencies as possible. Multi-server systems notwithstanding, you get one object model, one program space, and one logfile. Such systems are inherently more efficient when running, are just as easy to develop and are a lot easier to debug.
Wheels were discovered, not invented and they do need redesign
The application must be tailored to your business needs, not built around a package that only affords an approximation. Packages and imported classes are there to free developers from having to write the functionality themselves, not to free developers from the need to know how they work and certainly not to dictate how the rest of the system should be written. Integration costs matter and should be properly assessed. Sometimes, when off the shelf wheels won't fit the chariot, hand built wheels are the best answer.
Principle of OCCAM's Razor: 'Non sunt multiplicanda entia praeter necessitatem'
Entities are not to be multiplied beyond necessity. William of OCCAM (1284-1347)
Keep it simple. Software should do the necessary, the whole necessary and nothing but the necessary. And to do it, the software should only have the necessary components. It is OK if the software can do things you don't need as long as it isn't actually doing them. But it is absolutely not OK if the software is doing anything you don't know about. One of the golden rules of server security is "never run a bespoke server program without having the source code and knowing that it compiles into that program". For this and for the sake of further development, it pays to have the source code, config files or other related matter, free of red herrings. No part of the project should be a mystery. It follows that one should not drop in packages or import classes from libraries on faith alone. Black boxes should not stay black. If they do that is one part of the project you don't control. Install scripts are a case in point. For client software there is a point to fancy installation scripts that cope with every possible hardware variant. For server software there isn't. We always aim to supply our software as the full source in a tar file you can position, untar, make and run.
Believe in Math and Physics, not in Mystique
Remember the ONLY determinant of suitability and effectiveness of software in any given scenario, is the underlying object model and algorithms employed. It can never be a function of who wrote it or how well known they are. Buy the enginerering before the brand.