Leadership
Globally diverse and distributed teams are different from those that are located together. With technology and business leadership experience in Canada, China and the US working with teams spread across the globe, I bring a wealth of nuanced experience.
Technology
I combine both an engineering background and a passion for everything computing. In fact, I wrote my first website around 1997. Since then, I have developed technologies for embedded systems, desktop applications, mobile and back to web and cloud.
Vision
Vision is one part instinct and two parts engagement. Filtering out the hype is often more important than catching early trends. In addition to leading research in multiple roles, I've also developed novel technologies to give companies a competitive edge.

Leadership

At ChinaNetCloud, I directly managed a team of up to 10 people, interfacing between the founder and the core development group. I help navigate through multiple restructuring events.

At SnapEDA, I built an effective international R&D team consisting of developers, UX, electrical engineers and other domain experts. The team organized around Kanban boards, allowing me to spend time understanding our customers.

Technology

Process

Process is the way software development teams and stakeholders organize in order to achieve objectives.

As the CTO at SnapEDA, I implemented a Kanban-based process using Trello for all R&D tasks. The process is detailed on my blog, with example boards in Trello. I also transformed the development process, eliminating the need to test in production by developing automated build, test environments.

At ChinaNetCloud, I drove experimentation with several Agile processes, including Scrum and Kanban over a half year, eventually settling on Kanban as the best process to support stakeholder objectives, especially a desire to release often.

Recognizing the need for the startup to be able to respond quickly to validated learning and move quickly, I directed the team to progressively reducing the release cadence, starting from every two weeks and ending at multiple times a week through a steady focus on reducing friction in the software development process.

Language

Software isn't about the language - it is about the ideas and the language is how you express your ideas in a concrete way. Still, it is one of the first questions we ask.

100
C/C++
6 years and countless lines of code later, C++ keeps a place in my heart. I have used C/C++ to build Linux embedded and Windows desktop applications.
100
Python
My go to language for rapid development. It isn't just for scripting, I have built websites and full desktop applications in Python.
70
Java
I am currently rediscovering Java at Smarter Grid Solutions. Previously, I developed several Android applications and even a desktop application in Swing.
80
JS/TS
JS has come a long way from my first exposure in the late 90s. Since then, I have built backend applications, mobile and single page applications using ES6 and TS in React and AngularJS.
50
PHP
My first experience was developing a Wordpress plugin. Since then, I built backends for ChinaNetCloud in PHP using Laravel.
30
C#
I dabbled in C# and MEF for a couple of years at National Instruments for LabVIEW.
80
HTML
Last, but not least, I first wrote HTML nearly 20 years ago. I have built web applications for SnapEDA, ChinaNetCloud, and others.

Didn't find what you were looking for? I've also completed commercial projects in Objective-C, MATLAB, IEC 61131, VHDL, Perl, VB.NET and probably more that I've forgotten.

Vision

Smarter Grid Solutions - Packaging for IEC 61131

Industrial software systems are often neglected and the tools and systems often have only rudimentary support for software engineering's best practices.

At Smarter Grid Solutions, we are transforming our software development process for embedded devices to take full advantage of best practices. For our differentiated control applications, we have developed fully automated pipelines that take Simulink-defined state machines and enable developers to compose solutions and automatically deploy then on all major PLC runtimes.

The result? An efficient platform for embedded systems innovation.

SnapEDA - Part Validations

Details in circuit board manufacturing are absolutely critical. Sub-millimeter mistakes can result in poor soldering, bad boards, or even boards that are impossible to assemble. This presents a barrier to acquiring data from 3rd parties such as SnapEDA.

At SnapEDA, I invented a patent-pending verification system that identifies data problems. What makes this powerful was recognizing that the same information is often specified in multiple ways that should be self-consistent. The verification system is able to answer the question of "does this make sense?" and present the results in an easy-to-understand format.

ChinaNetCloud - Adoption of React

OpsStack is ChinaNetCloud's Operations as a Service (OaaS) stack management system. As the software architect, I recognized that jQuery was not going to be an efficient way to develop and maintain future requirements.

I evaluated several frameworks, ultimately selecting React over alternatives such as AngularJS and others. This evaluation included a migration strategy so that we could change the front end piecewise and training plans for developers.

I have spoken about the migration in "Evolving an application architecture".

More?

Much of my work is proprietary which makes it difficult to publish. You can find clues as to what I'm working on in a few places:
And if all else fails - just Google for my name.