James sitting in front of his computer console

Hello! My professional skills include designing, engineering, and developing code for safe autonomous vehicles, full-stack distributed applications, and scalable enterprise systems. Below is a showcase of selected work organized into four categories.

 
PORTFOLIO
01 Autonomous vehicles 02 Software research 03 Client/front-end systems 04 Server/back-end systems  
01 Autonomous vehicles

System integration:
In this project, I developed code to safely control an autonomous Lincoln MKZ around a closed-circuit test track. The software correctly identified a stop light under harsh lighting conditions. I assembled, led, and collaborated with an international team (level5-engineers). Tools: ROS, OpenCV, Tensorflow, Unity, C++, Python, Excel, GitHub, and Slack.
View code | View report

3D motion planning:
This project plans a path through an urban environment. I implemented a bi-level A* path planning algorithm - operating with a fine grid and with a coarse graph. The program can follow an itinerary of coordinates to simulate a pickup/delivery drone. Tools: Python, Unity, and Excel.
View code | View report

3D position estimation:
In this study, I track the position and attitude of a quadrotor moving in three dimensions using eight scenarios to refine the estimator. The simulated quad is operated with the custom controller developed earlier. Tools: C++ and Kalman filter.
View code | View report

3D motion control:
Here, I implement a basic flight controller and tune across three scenarios: body rate and roll/pitch, position/velocity and yaw angle, and non-idealities for robustness. Tools: Python, C++, and Excel.
View code | View report

3D autonomous flight:
Demonstrating the phases of flight, I implemented a simple flight plan within an event-driven programming paradigm and experimented with stepping waypoint accuracy analysis using telemetry data. Tools: Python and Excel.
View code | View report

Advanced deep learning:
This project addresses labeling the pixels of a road in images using a Fully Convolutional Network (FCN). I implemented semantic segmentation with an encoder, decoder, skip connections, 1x1 convolution, and inference optimization. Tools: Python, TensorFlow, and Excel.
View code | View report

2D path planning:
In this study, I generate a smooth, safe trajectory for a vehicle to navigate through traffic on a 3-lane highway. To avoid other vehicles, I utilize localization, sensor fusion, map data, environmental prediction, and behavioral planning. Tools: C++, Unity, and Excel.
View code | View report

Model predictive controller:
Here, I implemented a model predictive controller using Ipopt and CppAD to drive a vehicle around the track even with additional latency between commands. Tools: C++, Unity, and Excel.
View code | View report

PID controller:
In this project, I implemented a PID (proportional-integral-derivative) controller to maneuver a vehicle around a virtual track. Tools: C++ and Unity.
View code | View report

Localization: particle filter:
With sensor data and a map, I determine the probabilistic location of a vehicle using the principles of Markov localization. Tools: C++.
View code | View results

Tracking motion:
I implemented Kalman filters in C++, fusing measurements over time from LIDAR and radar sensors. I visualized results with Excel. The extended version tracks linear motion:
View code | View report
The unscented version tracks non-linear motion with sigma point prediction, using the CTRV model:
View code | View report

Vehicle detection and tracking:
In this project, I identify vehicles in a video from a front-facing camera utilizing histogram of gradients, support vector machine, heat map, data normalization, and shuffling. Tools: Python, OpenCV, Keras, Excel, and Illustrator.
View code | View report

Advanced lane detection:
The goal of this project is to identify the lane boundaries and curvature in a video from a front-facing camera on a car. This required calibration and distortion correction, image rectification, color transforms, and gradient thresholding. Tools: Python, OpenCV, Excel, and Illustrator.
View code | View report

Behavioral cloning:
Here, I train a deep network to steer a vehicle using transfer learning and data augmentation. Tools: Python, OpenCV, Keras, Excel, Premiere Pro, and Illustrator.
View code | View report

Traffic sign classifier:
In this project, I classify traffic signs with logistic regression, neural networks, gradient descent, backpropagation, regularization, and convolutional networks. Tools: Python, OpenCV, TensorFlow.
View code | View report

Lane line detection:
In this work, I identify lane lines on the road, first in an image, then in a video stream utilizing image analysis techniques including color channels, thresholding, region masking, Canny edge detection, and Hough transform. Tools: Python, OpenCV, and Jupyter.
View code

02 Software research

Improving logistics:
The current response system to natural disasters still leaves many people homeless and without basic needs. As a volunteer researcher at kynamatrix, I am assisting in the design and engineering of the Proximity Algorithm, a scalable method to rapidly deploy service and residential modules, so that our communities can more effectively support survivors during the rebuild process.
Read more

KnowledgeShare:
Automated categorization and indexing of existing knowledge solutions (such as forums, blogging, structured files, email, etc.) Simple utilities for linking, visualization, and conversation. Structured queries can be answered thereby amplifying expertise. Tools: Python, SQL.
Read more

University collaborations:
At kynamatrix, I volunteered my engineering skills on the ResearcHDiscovery project. The 2-way high definition experience opened virtual windows between university labs connecting researchers at Carnegie Mellon University, Georgia Institute of Technology, Harvard University, Massachusetts Institute of Technology, Stanford University, and University of Washington. Tools: LifeSize codec and H.264.
View project | View specs

Interactive graphics:
I designed and implemented a browser-based framework to simplify the creation of interactive graphic sketches. The API includes a full set of drawing functionality, a built-in state manager, optimized mathematics routines, and customizable animation. Multiple canvases can be managed and rendered in 2D and 3D. Tools: JavaScript, PixiJS, and three.js

Experimental interfaces:
While at Honeywell Bull, I researched alternative approaches to explore corporate repositories and expert system knowledge bases. I prototyped a visual database navigator and a menu-based natural language interface. These investigations were extensions of my artificial intelligence focus at Arizona State University. Tools: C, Windows, and SQL.

03 Client/front-end systems

p5.EasyCam library:
Simple 3D camera control for p5.js with inertial pan, zoom, and rotate. This JavaScript library is forked from previous contributions by Thomas Diewald. Recent updates include support for new versions of p5js and multiple offset canvases.
View repository

Cross-platform app:
Collaborated with a designer to create a game application called BinaryFallz. I implemented the app in JavaScript using oCanvas and jQuery. Distributed cross-platform via PhoneGap Build.

Motion graphics:
Collaborated with a designer to build, edit, and deliver a music video (Nightflight) and instructional guide. Tools: Adobe Premiere Pro, After Effects, Media Encoder, Processing, and JavaScript.
View work

Responsive websites:
At Motivara, I implemented and delivered hand-crafted websites and interactive presentations to clients in the Seattle area. In all cases, I collaborated with the principal designer to refine the user interface. Tools: HTML, CSS, JavaScript, jQuery, PHP, MySQL, Wordpress (CMS), and Adobe Illustrator.

Decision support tool:
At Microsoft, I lead a team of 5 developers to implement YRM 2.0. It provides forecasting and analysis for hotel room reservations at the Mirage to optimize pricing and maximize the yield. Tools: Microsoft Project, Visual Basic, and SQL Server.

Supply chain planner:
At Microsoft, I implemented a global logistics planning wizard for Intel Corporation. Users schedule capacity and route output from microprocessor wafer factories (fabs) to assembly/test facilities. I captured and embodied expertise in the form of business rules to replace the legacy process of emails, spreadsheets, and phone calls. Tools: Visual Basic and SQL Server.

Analysis system:
At Microsoft, I implemented RAS, a spreadsheet-based tool to help retail managers at the Mirage maximize profits through improved analysis of sales data. It also monitors vendor performance and assists in planning merchandise inventory levels. Tools: Microsoft Excel, macros, command shell scripts, SQL Server stored procedures, and C.

Order/inquiry system:
At MicroAge, I designed, developed, and released the first and second major versions of ZDATA, a distributed inventory database and order creation system for franchisees. Tools: C, Btrieve, Greenleaf, ZMODEM, Unix, and LU6.2.

04 Server/back-end systems

dbAnimator:
An open-source software testing tool for simulating multi-client transactional pressure against a database server. The original VB6 version is now converted to VB16 and C#.
View repository

Data center architecture:
At Microsoft, I drove the editing and shipment of the Reference Architecture Guide in Internet Data Center v1.5. This product provided customers with guidance on planning, building, and operating a complete Internet-facing data center.
View guide | View diagram

Scalable architecture:
Based on learnings from the BN.com project, I authored and published a whitepaper at Microsoft on the subject of designing scalable, highly-available systems using Windows DNA technologies. The scalable workflow architecture predates what we now call a microservices architecture. This paper is referenced by nine technical articles and two patents (6542902 and 7114158).
View paper

eCommerce optimization:
At Microsoft, I collaborated with Barnes & Noble to aid their early adoption of updated server technology. In a lab on the Redmond campus, we replicated the order processing component of the BN.com datacenter in New Jersey. The scaled version included 32 multi-way servers and 15 storage arrays. Working with customer developers, I optimized the order processing workflow and with engineers from Cluster Server, Message Queuing, and SQL Server, I improved product quality.

Database optimization:
At Microsoft, I provided consulting services to clients in the Southwest region who needed custom assistance with various Microsoft technologies including SQL Server installation, administration, programming, and performance optimization. Customers included Intel, Allied Signal, American Express, and Mirage Resorts.

POS optimization:
During my studies at Arizona State University, I provided support for daily operations of a Honeywell Level 6 computer at ASU Bookstore. To handle peak point-of-sale loads during rush week at the beginning of each semester, I optimized the system to more reliably process higher volumes of data. Tools: BASIC, TCL, and Pick operating system.
Wiki: Level 6 | Wiki: Pick OS

Computer operations:
My first direct interaction with a computer was at Stuyvesant High School on an IBM 1130 system. I learned to program in Fortran and then taught other students. Fascinated by the technology, I volunteered as a computer operator, running jobs and performing supervisory functions. Tools: Assembly language, Fortran, BASIC, Hollerith cards, and keypunch machines!
Wiki: 1130

 
COMMENDATIONS

Below is feedback I've received on performance reviews from managers and clients:

"Strategic architectural design is the area where James shines the most, he was responsible for the architecture, design, and implementation of a major system (YRM) at the Mirage, where the customer was satisfied with the results." -Walid Abu-hadba, manager

"Quality of work is very high. James does what it takes to satisfy the customer and they ask for him by name." -Mike Kinney, manager

"James' technical skills are unquestionable. He makes it a point to analyze and understand every aspect of a project on which he is working." -Paramesh Vaidyanathan, manager

"The BN.com project has been a phenomenal success, providing significant product feedback (including 30 critical bugs) and increased order processing capacity for the customer. What stands out is that James did this single handedly." -Daryl Wray, manager

"James is truly gifted in analysis, design, and execution." -Microsoft client

"His strongest trait is his high quality work and his attention to detail. Whenever James sets about doing something, you know it will be done right!" -Mike Kinney, manager

"James has a strong ability to illustrate difficult concepts." -Microsoft client

 
ABOUT

At an early age, I realized an interest in science, mathematics, and technology: I mixed compounds using my chemistry set, explored circuits with a modular electronics kit, and poked at the keys of demonstration calculators in department stores. I was especially fascinated by those that were programmable.

A decisive moment in my life was being admitted to Stuyvesant High School in downtown New York City. It was there that I discovered an IBM computer that students could program. (This was before the PC came along.) The encounter led to learning Fortran and Assembly language, and volunteering as an operator: running jobs and performing supervisory functions.

A few years later, to help make ends meet during college, I secured a part-time job in the shipping department of Arizona State University Bookstore. Ultimately, management recognized they had a computer science major on their team and promoted me to support their inventory management and point-of-sale system.

In this new position, I was responsible for downloading transaction data from a digital tape attached to each cash register and keeping the nightly batch process on track. There were evenings when I would stay late to observe the progression of the many steps in the sequence. Occasionally, the system went off the rails because of a tape machine fault, a process crash, or an excessively long procedure.

The most notable issues occurred during "rush" week at the beginning of each semester when thousands of students need to buy books. At times, the lines at all fifteen cash registers extended deep into the warehouse-sized store. The collective increase in volume of data revealed choke points that needed refinement or re-engineering. To simultaneously optimize transaction processing and maintain the vital daily workflow required careful change planning and lots of testing. Over the course of my tenure, I was able to streamline the system to handle all loads - I could launch the nightly process and go home with confidence that it would complete successfully by the morning.

I ntrospective by nature, I wondered if a computer program could modify itself or be the author of another program. This naturally led to a concentration on artificial intelligence courses including computer vision, robotics, computational linguistics, natural language processing, and expert systems. After graduation, in a research position with Honeywell, I experimented with natural language interfaces to query databases. Using the C language and early versions of Microsoft Windows, I detected similarities between the event-driven programming model and the rule-execution loop of an expert system.

At MicroAge, I was tasked with righting a failed attempt to create a PC-based distributed order entry system. The intent was to eliminate the personnel who, over the phone, manually keyed in orders from franchisees. It was my job to pick up the pieces and deliver a working version within three months. I examined the prior design and identified several programs with many overlapping components. I proposed a completely new architecture which combined all functionality on a Windows-like interface. With some great team-members, we delivered on time.

A few years later, I accepted a position with Microsoft as the third consultant in the Phoenix office. My first assignment was at the colorful Mirage in Las Vegas. Originally planned as a three-week project, the consultation rapidly expanded to diverse projects. Over the next seven years, consulting with customers across the Southwest area, I specialized in database optimization and system architecture.

As Microsoft was shifting focus from the desktop platform to mission-critical enterprise systems, I moved up to Redmond to assist with this transition. I worked with select clients wishing to adopt the latest Microsoft server technologies. One of these customers, Barnes & Noble, was ramping up their online bookstore capacity. Implementing a scaled duplicate of the BN.com order processing data center on campus, I worked with customer developers to improve throughput and other Microsoft engineers to resolve product issues.

After twelve years with Microsoft, I decided to pursue personal interests including music. Eventually, I joined a startup managed by a talented graphic designer. At Motivara, I deliver customized software solutions ranging from interactive presentations to responsive websites.

Presently, I also volunteer my software engineering skills at kynamatrix Research Network. One of the initiatives involves defining a scalable algorithm to assist those left homeless in the aftermath of disaster. An emergency urban environment with service centers and residential areas can more effectively support survivors during the rebuild process. The plan incorporates existing service providers and proposes technology assistance in the form of robotic construction and autonomous systems.

 
CONTACT

email: jwdunn.scientist at gmail dot com

 
James William Dunn
SOFTWARE ENGINEER
Portfolio About Contact