Profile: Doug Rogers
Resume (Word .doc format) Resume (html)Skills
- Embedded Software Design/Development
- Device Drivers
- IP Networks
- Scientific Software Design/Development
Info
I started out programming in assembly language for TI calculators and TRS-80s - the one's with 4k of RAM and eventually even cassette tape drives. I've always been into mathematics - a discipline that runs in the family. I used programming as a way to follow trails into that endless wilderness.
The first job that took advantage of my interest in programming and mathematics was a co-op student stint with M/A-Com Linkabit, where I worked with Borland's Turbo (and later Microsoft) Pascal, FORTRAN, DCL, and AM-29116 assembly language. I encounter VAX systems with DCL scripting. Many fun hours were spent writing toys for such beasties. Mixed in with that were programs controlling test equipment through HPIB, using Turbo Pascal and HP Basic.
After finishing my math degree at the University of Maryland, I took a job at Innovative Concepts, working with some of the same folks I worked with at Linkabit. There were many C programs, and occasional Pascal and FORTRAN programs.
I left ICI for a year to work with another ICIer at a company that consisted chiefly of the two of us - Merit Technology. I wrote some fun communications software for embedded 186 and 8051 based controllers. There were two trips to Germany and two trips to Detroit to install software into factory systems. That was very cool - huge blocks of steel glowing red, shaking the whole building; spools and spools of plastic running through width meters at (what I thought were) fantastic speeds.
I returned to ICI after a year at Merit. With the military mandate in place, ICI was beginning to use Ada for its embedded development on an Intel 80960. I was responsible for bringing the boot code up and adding functionality over the years. The hardware included a nasty Intel ethernet controller that ran at 4 Mbps, a MIL-STD-1553 controller, and the always present UART. After that I spent many an hour developing in Ada and C for the application side of the same project.
Then I was pulled in to support development of the Constellation Side Emulator (CSE), a simulator for the Iridium constellation. I ported the NORAD propagator from FORTRAN to Ada to allow calculation of the position of each Iridium satellite and to apply the proper propagation delay and Doppler shift to simulated signal.
This code was a good segue into my next project - porting of scientific code developed by the Naval Research Lab. The code relied heavily on linear algebra to solve both linear and non-linear systems. Cool stuff. NRL scientists wrote it IDL and PV-Wave with many assumptions, and without consideration for the operational aspects of ground data analysis software. My job was to convert that code to Ada 83 on DEC Alpha systems running OpenVMS and to add the necessary refinements for operation in the real world (ellipsoidal earth, real-time data ingest, etc.). Ada - even Ada 83 - allows for some niceties to make value/variance pair arithmetic easy to implement with operator overloading. C++ allows for similar things, but C++ was in its infancy then and not reliable. Besides, there was the military mandate.
The next project was a product for ICI - PCIDM, a modem for sending various digital message sets over voice grade military radios by way of a few MIL-STD protocols. I was in on it from the beginning, taking the LynxOS boot-loader and tweaking its memory controller initialization, FLASH support, etc., to boot on our custom hardware. I wrote the device drivers and some of the application libraries and military protocols running on the device. I still support the product and am one of a small team that adds features to it over time.
I'm also back at the NRL job, this time porting it to C/C++ under Sparc Solaris using SunStudio. Besides the NRL job, ICI is porting from Ada to C some of its other projects in order to make them available for platforms that do not provide Ada compilers (like DSPs).
Besides my official work, I've done a few small side jobs. One used SDCC (Small Device C compiler) to program an 8051 to read a bank of ADCs and send the resulting data to a server via a RIM cell phone modem (the Blackberry company). Another project was to forward serial port communications over a TCP/IP connection to provide remote operations for a system that was previously tied to one place. This used a Nano Engine running Linux on an ARM processor, so it was a relatively simple job once the kernel and init process were up.
I've also taken a great liking to the embedding and extending language Lua. I find its simplicity beautiful, yet it has enough syntax to avoid the plague of parentheses the Lisp and Scheme require. And it is oh so small. I run Linux at home and on my desktop at work. I develop many scripts and tools myself for scanning the web and gathering information that might be important to me.
Outside of my work and programming interests, I'm a card-carrying member of NSCAA and a season ticket holder to DC United - Go United! I am married with three children in their teens who never cease to amaze me with their mixture of insight and stupidity. I enjoy reading most things from Charles Dickens to Greg Egan. I love music from bluegrass to classical to Metallica. And I always enjoy a good beer, cold and crisp, from Budweiser to Oak Barrel Stout to any weird thing that Barry brings back from his trips to Belgium.
I can offer the well-rounded background that most problems need, applying my knowledge of many disciplines to help find a suitable solution that does not tie the client to a futureless track. I'm easy to work with and I look forward to helping you solve your problems.