Accomplished Software Engineer and Architect with proven project and personnel management skills and a
mastery of the SDLC from inception/design, through development and testing, to deployment/ship/support
and maintenance. Extensive experience with C++, STL, Boost, C, OOAD, TMP, UML, and design patterns
targeting Windows, Linux, Android, iOS, and proprietary embedded devices. Extremely strong Windows
and Linux development and administration skills. Proven ability to collaborate with both local and remote
multilingual teams around the world and to deliver high quality maintainable products on time and on
budget. Trained as an Electronics Engineer; firmware and 'on the metal' programming of various firmware
applications are well within area of expertise.
Exceptional communication, documentation, and conflict resolution skills.
Principled, fastidious and ambitious (very driven) with extremely strong work ethic.
Quality, reliable and robust software solutions delivered in a timely manner.
Dec. 2007 - Present
Software Engineer and Owner
imp software is my software consulting business providing solutions mainly for the legalized gaming industry. Leveraging my expert knowledge of this highly regulated industry I specialize in implementing IGT SAS communication protocols and developing firmware/software solutions for Electronic Gaming Machines, or EGMs, to meet industry regulations.
- Developed communication sub-system for RC quad-copter including flight controls, telemetry, image/video download, and live streaming video. Utilized Mavlink, boost asio and UDP. Targeted iOS (flight control app) and embedded Linux (quad-copter).
- Developed software/firmware for a Class III Bingo EGM approved for sale in the CA, AZ, OK, and NM markets by GLI and BMM. This slot machine
supported five game themes, two hardware platforms, dual screens and all the complexity mandated by state gaming regulations.
- Developed to spec. iOS (iPhone/iPod Touch) game Subway Bingo for Insanely Ridiculous Inc.
- Developed real-time SAS I/O in native code on Android for FriendlyARM (tiny/mini-210; S5PV210 ARM Cortex-A8 SOC) platform, which included enhancements to Samsung serial I/O [Linux kernel] device driver and JNI code for Android applications.
Developed real-time firmware for proprietary embedded device with four processors (from scratch), which made
heavy use of I2C, RS-232, RS-422, and bit I/O. Included development of several proprietary P2P and
shared bus packet based serial protocols.
Developed C, C++, and C#/.NET server side software components to facilitate communication between real-time
embedded firmware devices and Windows based PC servers.
- Developed first version of EGM interface board software/firmware for Reel TV . Built on PPC/Linux it plays advertisements on EGM touch screen displays during idle time by monitoring machine state via the IGT SAS protocol and myriad machine peripherals.
Aug. 2010 - May 2013
Lead Architect/Software Manager
Established new development team and satellite office after previous development team left. Restaffed with minimal personnel with an emphasis on skill and efficiency rather than volume. Responsible for setting up IT as well as getting the current gaming machine software into a healthy state able to pass regulations.
- Set up satellite office for software development (in Bozeman, MT; main office in Billing, MT).
- Set up and managed IT infrastructure and servers for software development including Linux routers and local servers for: CVS, svn, Jira, Confluence, samba. Daily on site and off site backups.
- Managed and participated in development and completion of incomplete products left by departed development and IT staff, which were a total disaster. All products completed and delivered to customer satisfaction. Revenue received. Good customer relationships maintained.
- Managed and participated in continued development and refactoring of existing gaming machine, which has been brought to a state of good health.
- Provided guidance and supported development of work-flow procedures for new game development pipeline, i.e. interaction between teams, deliverables, expectations. Implemented game definition/configuration specification and supporting software components to formalize definition of game assets, rules, and behavior, which allows the game designers and artists to change UX without programming or the need to have it done for them.
- Implemented five additional games: Around The Board (keno), Monster Mania (reel), La Cucaracha (reel), Full Moon Money (reel), Duck Duck Goose (keno).
- Completely reimplemented and automated deployment system and root/chain of trust: scripted Linux system image generation (including configuration), implemented PCI PnP option BIOS, patched PC system BIOS, hash tables in external ROM. Every build always produces identical Linux image and ROM images. Build is a single step with no additional human interaction. Wrote documentation and created VMware build VM for regulators.
- Implemented GAT protocol support: created xplat GAT protocol host application, added GAT support to gaming machine.
Jan. 2008 - Jan. 2010
- Implemented RTE and AFT IGT-SAS communication protocols.
- Exclusively retained by Bluberi Gaming, Canada to develop real-time serial and network
communications infrastructure for Casino back-office/floor device integration for GnSYS casino
management system which Bluberi purchased from GATE+, S.A. and imp software.
Aug. 2004 - Feb. 2007
Interfaced with multinational/multilingual teams to provide firmware and software development on the GnSYS product for the European and South American markets. GnSys is a .NET based framework implemented in C# with a real-time sub-system implemented in C++ and C.
- Provided system integration, technical support and on-site deployment support in multiple locations throughout France and South America.
- Gathered functional requirements, created the specification and developed a real-time IGT-SAS communication solution.
- Implemented the subsystem software/firmware in C++ and C on several PIC micro-controllers.
- Provided high-level .NET application developers with an intuitive, easy-to-use and reliable method of communicating with EGMs.
June 2002 - Nov. 2007
Lead Architect/Software Manager
Led development on the flagship product: a bleeding edge, always on, power loss fault tolerant electronic gaming machine (EGM) which conforms to both hard and soft real-time constraints in the highly regulated legalized gaming market. It plays poker and keno, sports a 24" cinema style true color video display, touch screen, surround sound, conforms to both hard and soft real-time constraints, and includes myriad atypical features for a device of its type.
- Provided hands on technical leadership and designed and implemented nearly all core software technology.
- Hired, managed and mentored junior and senior software engineers.
- Coordinated software development, game design and Q.C. Teams.
- Functioned as IT for the first three years during company startup. Setup and managed LAN, Windows 2000 servers (active directory, DHCP, DNS, etc), and Linux servers (subversion, samba, ssh, etc).
VLC (now a division of IGT)
June 1999 - June 2002
Software Engineer III
- Developed a PC based "Front End Processor" (FEP) simulator, which is used for the development, testing, and maintenance of Video Lottery accounting and control systems. Primarily used for load testing and as baseline for serial communications protocol and encryption/validation algorithm development.
- Developed a PC based "Gaming Machine" (GM) simulator, which is used for the development, testing, and maintenance of Video Lottery accounting and control systems. Primarily used for load testing and as baseline for serial communications protocol and encryption/validation algorithm development.
- Developed a multithreaded 68360 based operating system, including POSIX thread API, C++ infrastructure, and Java (FastJ) support to be used for dedicated secure gaming, i.e. gambling/casino machines.
- Received two letters of commendation for my efforts in eliminating the jeopardy that was identified with regard to having production test equipment ready for delivery to the customer by developing a single threaded operating system for firmware integrity testing using Motorola 68360 assembler, C, and C++ compilers.
May 1998 - May 1999
Senior Software Engineer
- Developed shopping cart and payment services using Inprise VisiBroker CORBA and Sun Workshop C++ on Solaris.
- Developed core development components including collections, intelligent pointers, observer pattern, observable native types, SMTP, telnet, and object oriented threading using Sun Workshop C++ on Solaris.
- Developed e-mail auto-responder CGI using Sun Workshop C++ on Solaris.
- Developed a syslog message demultiplexer service using Sun Workshop C++ on Solaris. This service scanned all messages sent to syslog and redirected them to the appropriate log based on message content.
May 1996 - May 1998
Senior Software Engineer
- Developed a discrete simulation engine task scheduler using Visual C++ on Windows 95/NT 4.0.
- Developed a discrete simulation engine virtual machine, including instruction set and theory of operation, using Visual C++ on Windows 95/NT 4.0. This is similar to the Java Virtual Machine.
- Developed a discrete simulation engine virtual machine debugger using Visual C++ and MFC on Windows 95/NT 4.0. This is similar to the Visual C++ debugger.
- Developed core development components including collections, intelligent pointers, observer pattern, observable native types, and object oriented threading using Visual C++ on Windows 95/NT 4.0.
- Developed two language grammars: an assembly language and a high level language, both used for the definition of discrete event simulation logic.
1996 - 1999
Dementia Software is a software business I started in late 1996 to create Microsoft Windows based shareware/freeware. To date, I have developed DSLogoCycler and SSThingy. Both products, originally released as shareware, were successful in the market place. Now that they are out of date, they have been released as freeware.
Ameritech Library Services
Oct. 1994 - May 1996
- Continued development of "Good Reads", a Windows 3.1 application developed using Borland C++, OWL, and the POET object database, which allows a library patron to search for materials based on some combination of title, ISBN, genre, author, subject, etc.
- Developed a natural language parser using Borland C++ and OWL for Windows 3.1. This application converts magazine articles into MARC Twain database records.
Hybrid Microsystems Inc.
Jan. 1993 - July 1994
Software/Embedded System Engineer
- Developed several lenscard-machine embedded subsystems using 6805 assembly language and associated hardware tools.
- Developed lenscard-machine supervisor software using Borland C++, Turbo Vision, and a DMPI extender on Microsoft DOS.
- Developed a macro assembler for both the 6805 and 6811 microcontrollers using Borland C++ for Windows 3.1.
- Developed thermal film processing embedded system software using C, 6811 assembly, EPROM emulator, logic analyzer, and proprietary 68HC11 based embedded system.
- Developed film transport/management embedded system software using C, 6811 assembly, 6805 assembly, EPROM emulator, logic analyzer, and 68HC11/68HC05 based embedded system.