HadronZoo: Bespoke Software Developers
Meet the Founder

My name is Russell Ballard and as architect and founder of HadronZoo, I am here to explain the thinking behind the products and services offered on this site, so that they are seen in their proper context. HadronZoo is a serious venture rather than a commercial venture because I am a serious, rather than a commercial person! I need to pay my bills but I don't really need to become a multi-millionaire. I am maybe, just a little too old for that! I am in this because I want to create my own job and do things my own way - but I also wanted to publish something useful.

My interests include theoretical physics, material science, civil, mechanical and chemical engineering, astronomy, psychology, philosophy, economics, history and geopolitics. Yes I am a geek and I need to get a life but that is my problem! I have always been driven to understand the how and the why of the world. After graduating in physics, I pursued a career in computing because apart from being interesting in its own right, all my other interests pointed to the use of a computer. I stared out as an embedded programmer, working on such things as automated PCB drilling machines. Back in those days, particularly with embedded, you had to be good at counting clock cycles and I carried this thinking with me when the market led me to data processing. This cast the die. It always fell to me to cure performance bottlenecks and I liked it that way. It is true what they say about little boys never growing up! I have never ceased to be fascinated by how fast old software runs on new hardware, and I find things like the binary chop algorithum as thrilling today as the day I first learned of it.

Hardware of course, has improved immensely since then, both in terms of processing power and capacity. In some application areas such as gaming, banking and meterology, there is no such thing as too much computer power. However in many other areas there is and I know this because since the early 2000s, people lost interest in my C++ and real time skills. I am not a gamer or a meterologist and I would hope nobody would mistake me for a banker. The market was telling me I needed Java and PHP, and it generally pays to listen to the market. Well I listened but could not concur. Java has extensive libraries but as a language it confers no advantage over C++. It took me a while to work out that one was supposed to build systems as a series of applets rather than try to put everything in a single program - not quite at the level where each function call is replaced by a applet call, but learning in that general direction. It is a neat concept perhaps, but to anyone used to building large programs, with all the variables within the one program space, function calls are easier. Likewise for PHP, except that there is the added problem of horrible syntax. Personally I find that Java and PHP, lack the adrenaline of C++. In other words they are an utter chore and I don't want to use them.

Design Philosophy: Believe in the Math and Physics, not in Mystique.

One question I always ask is this: Do you see a house as a large number of bricks or a small number of rooms? If the latter you can just bolt prefabricated modules together and job done! Well maybe. What if the doorways in the modules don't quite line up? You are either going to have an odd looking house or a lot of work to do - quite possibly a lot more than you would, had you chosen to build it with bricks. This is the classic system integration conundrum.

There is usually a choice between developing the functionality yourself or incorporating a package, and a complexity threshold beyond which the package wins. For me, that threshold tends to be on the high side. For example, if complex queries were potentially involved, like everyone else I'd feel safer with a standard RDBMS. But if I knew the possible set of queries would be limited and simple as they very often are, I would at least consider a regime of collection classes and files. Most don't even ask the question. Their motto is if you are storing data, use a database. And if there is a package out there that performs the function, don't re-invent the wheel. It is easy to see why. Packages usually have a good reputation and there are lots of people out there who can work on them. But not asking the question is blind faith and blind faith in anything including tried and tested packages, is never a good idea. Integration costs are very easy to underestimate and can spiral out of control. I have witnessed this many times! Sometimes it is even worse. The package is a poor choice to begin with. Either it is hopelessly inefficient or does not actually do what is required.

I am firmly in the brick camp. My instincts are to write systems end to end in C++ and if I am honest, I take this way too far! Be that as it may, I don't believe there is any real alternative to understanding and in some depth, what all the project components need to do and how they will do it. The package might well do what it says on the tin, but what else is it doing? I am a great believer in the principle of OCCAM's razor: Non sunt multiplicanda entia praeter necessitatem; Entities are not to be multiplied beyond necessity. If this principle is not applied there will be a price to pay somewhere. Unless the inner workings of packages are described in detail, the only way you can be sure the software is doing the necessary, the whole necessary and nothing but the necessary, is the brick approach.

That I take writing systems end to end in C++ too far, does at least mean you don't have to. And it means the HadronZoo download is pretty extensive and comes with no dependencies except Linux itself and the gcc compiler.

The Rules of the House

Ventures can do worse things than fall over due to a lack of money. They can all too easiliy turn into a Frankenstein's monster. So how will I keep the monster at bay? As far as I reasonably can, Iam going to stick to the rules. The math and physics and the application of OCCAM's razor. It is said that the customer is always right but with respect, they are not always right. Many want or think they want, bells and whistles they don't actually need. Most software suppliers see this as extra money and so smile sweetly and go along with every little whim and fancy. HadronZoo will push back on this because while the extra money might be nice, the extra hassle isn't. We can't shave with OCCAM if you don't. We will sell you the bells and whistles if you insist, but you are going to have to insist!

Thanks for listening. Enjoy HadronZoo!