Digital Design
Contact Me
Bookmark & Share: Add to Favorites Share on Facebook Tweet This E-Mail a Friend Print this Page

Custom Software

Software Development

My skill set includes C++, C, Java, JavaScript, PHP, Perl, Assembler, Pascal, Basic, SQL etc., including embedded, multithreaded, and real-time systems.

I have extensive API experience (both Windows APIs and Linux APIs), and I use development tools such as Microsoft Visual Studio, Eclipse IDE, and Qt.

Generally I prefer to work in C++ as this gives me the most scope for cross-platform development. I don't use C# and the .NET framework as this commits you solely to Microsoft, which would be a mistake given the dramatic rise in the popularity of Linux, Mac OS X, and mobile devices.

For mobile app development I use Qt. It allows you to write the code once, and then deploy it for Android, iOS (iPhone, iPad etc.) and BlackBerry. This significantly reduces the time it takes to get a product to market.

Microsoft Visual Studio


High Standard of Documentation and Source Code Readability

I have always strongly believed in the following rule:
"Do it right the first time. Finish it properly. Document it properly. Only then do you move on."

This takes discipline.

Many young engineers don't follow this rule. They may be intellectually brilliant, but they throw themselves at the problem, do it at a lightning fast pace, and get distracted by the next job before they've even finished the first one. When they need to go back they have to do it all over again because they can no longer remember what they did the first time.

I have always been able to go back to past work to make changes and improvements, even a decade or more after the code was first written.

And if anything were to happen to me there is enough information in place for another engineer to pick up where I left off.

Software Documentation All of my software is fully documented in separate word processor files. This covers the software's architecture, detailed operation, function call parameters and operation, and revision records.

The code itself is heavily commented and is made as readable as possible. This is essential for maintenance. The following examples show the typical structure of software written by me, and the detailed level of commenting present:

  Example of C++ Code

  Example of Assembler Code


Modular Software for Use in Applications

I maintain a library of general purpose software modules for use in my projects. There are literally hundreds of thousands of lines of original code that I have developed over the years. It can reduce development times for complex projects literally by years.

  More Information