I'm a long time software developer who has worked with very nearly every procedural programming language under the sun (I've not done anything with functional programming, but I'm working to remedy that). I started on the TRS-80 Model I and have worked on everything from DEC-10 mainframes to 8051 embedded processors and pretty much everything in between. I've done machine control, instrumentation, web back ends and front ends, security, computer generated poetry and other things that I can't remember at the moment. I'm a quick learner and am skilled at maintaining, debugging and enhancing legacy code. In addition to the on the job experience listed below, I'm a fair shadetree mechanic and like to tinker with electronics and robotics in my free time.
Software Developer, PNC Bank (through Tek Systems), October 2018 - Present
I am working on a contract basis on the back end of the bank's main web site (pnc.com). My primary responsibilities currently are helping to reduce the backlog of maintenance issues and minor outstanding vulnerabilities. I also determined the cause and fix for a major file handle leak that was causing AEM to crash approximately every three days. This required analysis of the entire code base and extensive study of logs and documentation.
Software Developer, Cyberitas Technologies, November 2015 - July 2018
c++, java, aem 6.2, spring, hibernate, mysql, php, bamboo ci, vagrant, docker
Additionally, I worked on the backend of an AEM (Adobe Experience Manager) 6.2 project to integrate its login and user management system with an existing customer solution. This involved a deep dive into the JCR and other AEM internals. I also assisted in developing a custom document manager interface and news feed built on top of the supplied AEM infrastructure.
Finally, I worked with DevOps to transition a large customer website from internal hosting to being hosted on AWS. This also involved a transition to RedHat Enterprise Linux 7 from 6 as well as rebuilding a number of custom C based PHP and Apache modules. In the process, I worked with CodeCeption and other tools to automate the testing of the sites. I also developed provisioning scripts for the various servers and produced documentation for a number of previously undocumented processes.
Software Engineer, SRC, Inc, April 2015 - November 2015
c++, qnx, java, netbeans-platform, netbeans, xml, protobuf, c#, python
I worked in a team with four other developers to create GUI and management software for radar units fielded by the U.S. military and other entities. The radar management side is in C++ running mostly on QNX based single board computers with a GUI written in Java (using the Netbeans Platform) and running on Windows and Linux laptops. My primary responsibilities were debugging and enhancing existing code to provide new features and make use of the radar and other sensors in new ways. I spent a fair amount of time working on simultaneous C# and Java projects, getting them to communicate and interoperate. The C# tool was a WPF based app that was used as an interface converter for a camera. I had to add some new features to the interface conversion and use it to test new Java code in the primary user interface. Within the first week on the job, I created a test tool in C++ now used by a number of other people within the company for testing and verifying the radars. I also wrote a number of Python scripts to manipulate radar data in order to produce testing data for other sensor inputs.
Owner, Odd Job Computing, January 2013 - August 2015
General computer consulting and web design for local businesses. I mostly handled IT work for local businesses and consumers, with the occasional foray into web design. As it turned out, the local market wasn't really big enough for another company doing this and it wasn't really something I enjoyed.
Software Developer, Thomson Reuters, September 1999 - January 2013
I worked on a wide range of projects, ranging from implementing and managing a local GForge (a SourceForge fork) installation to developing standards based authentication and authorization systems in C#, C and Java. Thomson Reuters became a Microsoft shop soon after I started and we began using C# almost from the day it was released, working our way through .Net versions from 1.0 to 3.5.
I spent a significant amount of time (more than a year) working on certificate management and web service security using .Net's WCF. This involved implementing a WS-Trust token server and SAML processors. I implemented an authentication filter in C# that could be placed on an IIS server in front of a web application. The filter translated user credentials from the single sign on provided by Thomson Reuters to the format and system used by the underlying web application. I also developed and maintained a Java version of the authentication system using JAAS that accomplished the same thing for Java based web applications. This system allowed users to log in using the credentials they were familiar with, then be authenticated and authorized on systems using different authentication methods and credentials, essentially, it was SSO (Single Sign On) on steroids. These filters were particularly important given that Thomson Reuters was aggregating web applications from a wide variety of acquisitions that all used their own internal authentication and authorization systems. In addition, I implemented sample clients in a variety of languages for the previously mention WS-Trust secure token server, allowing third party clients to connect securely to Thomson Reuters services.
Other projects included implementing a multi-language indexing and search system for the online help system as well as implementing localization and internationalization of the online help system using C# and ASP.Net. I was also responsible for implementing an internal cloud computing pilot environment using Nimbula Director. Finally, I oversaw the implementation of CVS (in a migration from a number of disparate, disconnected source control systems) as a source control system (in conjunction with the GForge implementation mentioned) and then, ultimately, the migration of those source repositories into Subversion.
Software Developer, Cybeq Nano Technologies, January 1998 - August 1999
qnx, c++, tcl, tk, embedded, state-machines, robotics
I developed the control system for an automated CMP tool for the semiconductor industry. The control system was responsible for managing the movement of 300mm wafers safely through the system as well as determining the recipes to be applied to the wafer at any given step. The software and tool were developed concurrently over a period of less than 18 months from conception to shipment of the prototype tool.
The overall tool was designed as a network of independent tools, each with a small controller PC running QNX. There was a central "manager" controller PC (also running QNX) that controlled the robots and managed the flow of silicon wafers through the machine. The user interface was written in TCL/Tk and ran on a standard PC under Windows and was connected to the management controller via ethernet using a custom protocol (If I were to redo this today, I'd use a web browser as the UI with a server running on the management console, but HTML wasn't up to the task at the time).
Software Developer, IPEC, February 1997 - January 1998
visual-basic, machine-control, c, c++, embedded, robotics
I developed the control software for wafer cleaning and polishing tools for the semiconductor industry. I was responsible for the software controlling prototype tools, working alongside the electrical and mechanical engineers to fully integrate the tool as quickly as possible. Additionally, I was the chief "firefighter" for the production tools, I was responsible for finding and fixing software (and often electrical and mechanical) issues that were plaguing customers.
Software / Hardware Designer, Calibron Systems, July 1993 - January 1997
c, c++, assembly, hardware-design, pcboard-layout, calibration
I designed and developed both hardware and software for the flow control industry, including densitometer control software, flow meter calibration software and calibration equipment control software. I also designed the electronics for vibrating tube densitometers and other flow measurement equipment. I wrote a complete flow meter calibration suite in C++. The densitometer electronics and control software was 8051 based and compensated for temperature, pressure and flow using fixed point arithmetic. It supported a small LCD display as well as current loop outputs.
Developer, Older Stuff, 1982 - 1993
c, forth, pascal, clipper
During this period I worked on a wide variety of projects for a range of small employers that encompassed everything from mortgage trading to automobile management to computer generated poetry.
Unnamed Blogging Platform
java, spring boot, sling, kafka, htl
I'm currently working (slowly) on a blogging platform for my own use. It's currently based on SpringBoot (although I'm looking at using Apache Sling instead) and I'm using it to explore a number of technologies that are interesting to me. This includes Sightly/HTL for templating, Apache Kafka for providing RSS feeds, Redis for content caching. It's vastly over designed and developed for my purposes, but it's a good way to keep my skills sharp and learn new technologies.
GitHub - msged, https://github.com/jrnutt/msged, August 2014
The FidoNet BBS message editor for point nodes and sysops. It's mostly a historical curiosity at this point
I wrote the entire editor in portable C, from design to final implementation. It was written to be portable across all the major C compilers of the time (MSC, Watcom, Zortech, Borland).
Ham Radio Operator, KI7FHZ, June 2016
I obtained my General class Amateur Radio license on 6-22-2016. I've constructed my own SDR and antennas and enjoy the tinkering side of the hobby.