John Deere

I have worked 3 consecutive summers (2000,2001,2002) for John Deere, on a variety of desktop and embedded software projects. Some projects were production oriented, others experimental or targetted toward the createion of enhanced development tools. Brief descriptions of the significant projects I worked on follow; more detailed descriptions may be uploaded here as time and confidentiality permit.

Feel free to contact me at

John Deere Operating System (JDOS)

The John Deere embedded Operating System provides minimal functionality common to the requirements of various embedded controllers used in John Deere's modern tractors, such as memory management, task scheduling, and network commincations via the Controller Area Network (CAN) protocol. I have not had significant involvement in it's development, I mention it here as many of the software projects mentioned below involve its use, or are based on the standardization it provides to the controllers which use it.

Win32-hosted J1939 CAN protocol stack

During my first summer with Deere I was involved in the development of diagnostic and reprogramming tools for use with the electronic controllers used on tractors. Previously, most such tools had been created by each software developer who required some new communications functionality; frequently, such tools were implemented only the minimal subset of of network functionality which was necessary for the tool to operate in that developer's test environment, with minimal (or no) emphasis on reuseability or.

However, even the implementation of minimal functionality represented a significant portion of wasted effort in development and testing. In any case, the tools to which I was assigned were intended for wider distribution, which required that they implement the communications protocol in a much more complete and robust manner. Therefore, prior to beginning work on the tools to which I was assigned the process of creating a framework for these tools, a generalized Protocol Stack for win32 was developed based on the code used in the JDOS itself.