I loved Lego as a kid, and I still like building things. I believe a blank sheet of paper is a challenge to be accepted. I enjoy confronting a software-design problem: working out a solution and implementing it. Presented with the big picture, I try to find a way to make my work fit in harmoniously. I like to write code. Getting the details right matters. I’m not dogmatic: Building something that works as needed is more important than a specific technology or tool. It’s been more than ten years, and I still enjoy building with code.

Principal Consultant

Bitovi (April 2019)

Work with clients to create effective software solutions including: the development process, system and software architecture, team staffing, and software development team leadership.

Led a mutli-disciplinary team for a client over several years during a period of rapid growth. The team included individuals in UX / design, software development, devops, and product development.

Senior Software Developer

Omni-ID (July 2017 - December 2018)

Added and updated features in the ProVIEW single-page application. Refactored large multi-control templates into reusable composable components in a hybrid Angular application (the application uses both AngularJS and Angular frameworks). Integrated third party UI controls creating interfaces and adapters to allow for reuse among different views. Debugged and fixed various issues including memory leaks and UI display performance.

Created new or updated existing server endpoints to return required information. These changes often resulted in new business objects being created in both .Net (C#) and Node.js environments to communicate with other application components or hardware devices.

Software Architect / Software Project Lead / Senior Software Developer

Kodak Alaris (September 2005 - July 2017)

Designed and implemented an HTML5 single-page application that creates and fulfills photo products using Kodak Alaris REST services. To create the best customer experience emphasis was placed on: fast UI updates, minimizing network requests, and optimizing resource downloads. To achieve these goals a variety of client-side toolkits and components are used including: React, Redux, React-Intl, WebWorkers, and ServiceWorker. These were supplemented at build time using Node.js and Gulp to automate the compression of resources, such as PNG images, and concatenation and minification of Javascript and SASS files. Source code is managed by Github and organized in modules which are transpiled to browser compatible ES5 Javascript using Webpack. The application deploys automatically from GitHub to an Azure server when code is committed.

Architected and implemented the Kiosk Web Apps API and Javascript SDK which allows 3rd party partners to implement Web-based embedded applications with controlled access to the kiosk’s environment and devices. This API allows new products and services to be added to the kiosk without requiring code changes by Kodak Alaris. Development involved designing the API, implementing the kiosk components that display and interact with the Web app, writing developer documentation to be shared with partners, creating test tools for partner developers (including IIS served ASP.Net Web pages and REST service examples), and providing technical support.

Designed and implemented the components that allow the Kodak Picture Kiosk to interact with Facebook, Instagram, and other services, allowing customers to make photo products from their images. The architecture reduces the time to add new photo services from weeks to days or hours. The data-driven design based on XSLT and loosely coupled late-binding interfaces reduces the time and effort needed to update the kiosk when Internet services modify their API.

Project Quality Lead / Software Quality Engineer

Kodak Alaris (January 2000 - September 2005)

Worked with the project’s Commercialization Manager to schedule and plan the project’s quality activities for both software and hardware. Supervised activities of test engineers and technicians. Reviewed software test plans for quality metrics and procedures. Worked with the software lead to finalize the processes for incident reports and change requests.

As a quality engineer, designed and documented software functionality test procedures based on requirements. Compiled test results for presentation during gate reviews. Designed and documented hardware quality plans for EMC compliance, environmental testing, robustness and reliability, and shipping and packaging requirements.