Chance favors the prepared mind.
-Louis Pasteur
Over my career, I have developed skills in a large number of diverse areas in addition to general software engineering. Below are some of the specific technical areas in which I can contribute to your project.
If you don’t see what you need, please don’t hesitate to ask. If I can’t help you, I may be able to put you in touch with someone who can.
Mathematical Programming
Creating production quality software from mathematical equations is not always as straightforward as it seems. I can take your proof-of-concept system, prototype MATLAB code, or even equations written on a napkin and build a high-quality software library for your application.
Network Programming
Building robust, cross-platform, interconnected systems can be a significant design challenge. Whether your solution requires development of a simple REST API or even a custom TCP/IP protocol, I can help.
Hardware Interfacing

Applications today do not exist in a vacuum. Many must acquire data from locally connected sensors and be able to interact with the real-world using motors and actuators. My background in electrical engineering allows me to bridge the gap between the software and the hardware.
Embedded Systems
Some projects require programmable intelligence but a traditional PC is too big (physically and/or financially) for the job. An embedded PC may be required or possibly one of the many inexpensive embedded Linux boards, such as a Beagleboard or a Raspberry Pi. Going even smaller, something in the Arduino family may be a good fit or your application may require a microcontroller on a custom circuit board. I can assist you in selecting the right solution, interfacing to your custom hardware, and writing the embedded software.
Mobile Applications
The cross-platform mobile development tools created by Xamarin are absolutely incredible. Applications for all major mobile platforms can be created from a single C# code base, eliminating duplicated development work, reducing testing requirements, and allowing bugs to be fixed once for all platforms. I can help you move your existing or future mobile app over to Xamarin.
Cloud Computing
The emergence o
f cloud computing has changed the playing field for small companies building internet applications. I have specific experience hosting applications on both Microsoft Azure and Rackspace (OpenStack) and limited experience with Amazon AWS.
Cross-platform Development
Writing software that can compile across several platforms requires an eye for detail and a certain amount of restraint to avoid relying on operating system specific features. For one recent project, I was able to create a C++ library that could be compiled and used on Windows, Linux, Android, OSX, and iOS.
Multithreaded and Parallel Programming
Sometimes a single processor or even a single computer is not enough processing power for the job. I can architect your code to take advantage of multiple cores in a single computer or multiple servers in a local or cloud-based cluster.
Databases
All applications store data somewhere and most choose some form of database. I have worked with embedded databases, such as SQLite, open-source databases, such as MySQL and PostgeSQL, and industrial strength databases, such as SQL Server.
Programming Languages
Most of my current development work is in either C# or C++ but I have worked in several other languages, including C, Python, MATLAB, Java, and Visual Basic. I also learn new languages quickly.
Operating Systems
I have extensive experience developing software for both Microsoft Windows and various flavors of desktop and embedded Linux, including Android.