Portfolio


Leadership
Globally diverse and distributed teams are different from those that are located together. With technology and business leadership experience in the US, Canada, China and working with teams spread across the globe, I bring a wealth of nuanced experience.
More
Technology
I combine both an engineering background and a passion for everything computing. 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.
More
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.
More

Leadership

At Amazon, I lead a team that secures micro-service messaging between a very large number of micro-services that execute on a staggering number of execution instances.

At Smarter Grid Solutions, I lead advances in industrial IoT for Smart Grids from the perspectives of implementation and standardization. I developed the first strategy for contributing to open source software and application of threat modeling approaches to understanding security.

At ChinaNetCloud, I directly managed a team of up to 10 people, interfacing between the founder and the core development group. I helped 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.

At Amazon, I've provided technical leadership on projects and programs from initiation to completion in the general space of very large scale access control. My leadership goes beyond technical and I frequently lead in multiple areas from product management to incident response.

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.

Languages

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.

70%
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/server and Windows desktop applications. OpenPLC (GitHub) xmlstack (BitBucket)
70%
Python
My go to language for rapid development. It isn't just for scripting, I have built websites and full desktop applications in Python. pcb-tools (GitHub) win-lin-django (BitBucket)
70%
Java
I've rediscovered Java multiple times in my career, most recently at Amazon and Smarter Grid Solutions for microservices. Previously, I developed several Android applications and even a desktop application in Swing.
70%
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. VIGSI (GitHub) easyeda-importer (GitHub) xss-by-example (GitHub)
70%
PHP
My first experience was developing a WordPress plugin. Since then, I built backends for ChinaNetCloud in PHP using Laravel. trustedproxies (GitHub)
70%
C#
I dabbled in C# and MEF for a couple of years at National Instruments for LabVIEW. Later at Smarter Grid Solutions, I developed microservices in C# to integrate with devices using industrial protocols.
70%
HTML
Last, but not least, I first wrote HTML nearly 20 years ago. I have built web applications for Smarter Grid Solutions, 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 patented 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.

US patent pending 20170249410

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.