Todd Coram
todd at maplefish dot com, http://www.maplefish.com/todd
(rev. 02/18/08)

Synopsis


I have over 20 years experience as a professional software developer/designer/architect. My focus lately has been on embedded software using microcontrollers for satellite communication devices. I have a strong interest in very low power devices and efficiency. I am mostly working with Atmel AVR 8-bit and TI MSP430 controllers.

In the past I've concentrated on concurrency-oriented programming (COP), scalability, fault tolerance, high performance system design, commercial application development, Unix style development, and UI design.

Selected Accomplishments


Motion Sensor for Waking Satellite Transceivers
I am responsible for the circuit and firmware design of a motion sensing peripheral device for a Satellite Transceiver. This peripheral is designed around a TI MSP430 and 3 axis accelerometer. The device is configured via a single wire protocol that I designed to reduce the amount of connections to the transceiver. The peripheral circuit consumes less than 200uA active (on average) with a 0.6uA standby. - (ITT EDO Nexgen 2007/2008)
Hand Held Tracker for Iridium Satellite System
Lead designer and implementer of a hand held pager device for the Iridium Satellite system. This device is built around an 8-bit AVR microcontroller and the Nexgen Cutlass transciever. I am responsible for the 8-bit controler which manages the transceiver as well as the overall architecture of the Tracker. In particular, this is the first Iridium Tracker device with a color OLED display and a full USB OTG compliant microcontroller. - (ITT EDO Nexgen 2007/2008)
Hand Held Pager for Iridium Satellite System
Lead designer and implementer of a hand held pager device for the Iridium Satellite system. This device is built around an 8-bit AVR microcontroller and the Nexgen Cutlass transciever. I was responsible for the 8-bit controler which manages the transceiver. I also had to develop an SD card driver for message storage and an encrypted bootloader for upgrades. - (EDO Nexgen 2006/2007)
Cryptographic Software for Embedded Systems
I have worked on cryptographic solutions for transceiver devices on the Iridium Satellite network. The work has involved using AES-256 and ECC (Eliptic Curve Cryptography) to design unique and innovative secure communication products. - (EDO Nexgen 2006/2007)
EFX Content Management System
Creator, designer, programmer and maintainer of a (soon to be released) Open Source website Content Management System (CMS). EFX was developed on my own personal time as an easy to use email-based CMS for small to moderate websites. Between 1995-1997 is was used by a small private primary school to create, populate, publish and manage their website. EFX utilizes XHTML, a namespace-friendly template engine, POP3, SMTP, MIME, and FTP. EFX is coded in Tcl and GAWK using an interesting (and scalable) co-processing approach. An old test staging of the now defunct (they went out of business) primary school's website can be found at http://www.maplefish.com/nvfs/index.html .
Verizon Wireless Email Forwarding System
Designed and developed an email forwarding system for Verizon's migration of 215,000 myvzw.com customers to MSN/Hotmail. This system allows users to opt for their myvzw.com email to be forwarded to MSN/Hotmail. It was developed using qmail, Tcl, C++, PHP and Perl under Linux. The system handled over 120,000 email deliveries per day on a 24/7 availability basis. - (Re-route Corp 2002)
USPS Mailing Online
Project System Engineer for the US Post Office's Mailing Online web service. The back end system was developed using Tcl and Oracle and the front end ran under AOLserver. My job was to deal with requirements through implementation in a fast moving development environment with monthly release cycles. (BAE Systems 2001) - (BAE Systems 2001)
Zope Page Templates
I was the XML Czar for Digital Creations (now Zope Corp). I managed the development of Zope Page Templates (ZPT). ZPT is an XHTML based markup language written in Python designed to replace DTML as the application server's primary markup language. My team included core members of Python Labs. - (Zope Corp 2000-2001)
Other Commercial Products/Services
Over the years I have worked on commercial software products and internet services, including:
Re-route ISP
Email retrieval/forwarding system. - (Re-route Corp 2002)
NMS
Network Management Station. - (iDirect 2001-2002)
SMMS
Sendmail Mobile Messaging Server. - (Sendmail 2001)
Querysmith
An ad-hoc database query application written in Java. - (Blacksmith 1999-2000)
Pulse Pressworks
Website creation and publishing software suite. - (Community Networks 1997)
Domain*View
Network management product - (Digital Analysis Corp 1991-1992)
Scripsit
Unix based wordprocessor - (Nexus 1988-1989)
Misc. Open Source and Free Software
  • I have developed a freeware text processor called Almost Free Text (http://freshmeat.net/projects/aft). It takes a minimally marked up text file and produces HTML, TeX, Lout and RTF. It is written in Perl, and is used by people all over the world to manage their documentation needs. Click here to see some sites using AFT.
  • The game Mancala.
  • A Tuplespace in Tcl.
  • See http://wiki.tcl.tk/2110 for lots of other Tcl stuff.
Design Patterns and Pattern Languages
I have been a member of the Software Pattern Community, where I was a published author and frequent workshop shepherd. I am the co-author of the popular Experiences user interface pattern language (search Google for Experiences "Todd Coram" to see a long list of references to the paper). The paper has been referenced in many UI-related books. I am also the recipient of the PLoP2000 Great Shepherd Award.
Publications
"Demo Prep: A pattern language for software demonstrations" was published as a chapter in the Addison-Wesley book "Pattern Language of Program Design 2". (1996)
Public Speaking
Mobile Technology
I co-authored and delivered an open seminar, regarding wireless and mobile technology in the corporate Enterprise, for Washington DC area executives. - (Blacksmith 2000)
3G Wireless
I gave a presentation titled Enterprise Infrastructures To Support Location-dependent Wireless Devices for the 3G Mobile Communications Global Summit in Japan. - (Blacksmith 2000)

Expertise

Programming language Expertise
C, C++, awk, Tcl/Tk, Perl, unix shell scripting, Python, Java, Lua, Standard ML, Concurrent ML, Erlang, Scheme, Common Lisp and various Forths.
Microcontrollers
AVR 8-bit, TI MSP430, ARM7.
Modeling language Expertise
SPIN Promela model checker.
OS
Unix (FreeBSD, Linux, HPUX, Solaris 8 and 10), Nucleus (for ARM).
Web
Zope, Apache, CGI, Java Servlets and AOLServer.
Database
Berkeley DB, MySQL, Oracle, Postgres, and JDBC.
MTAs
qmail and sendmail.
Design
Multi-paradigm design (functional, procedural, imperative), and Object Oriented Analysis and Design. DOORS requirement management.
Patterns
GOF, Processes, User Interfaces, Architectural--Alexandrian.
Client/Server
Transaction based, workflow systems, database backed websites, concurrent, distributed, Tuplespaces and TCP/IP socket based event driven servers.

Detailed Work Experience

 

Senior Software Engineer, 5/06 to Present, EDO NexGen - A wholly owned subsidiary of ITT Defense, Dulles VA

I am working on all types of embedded device side software solutions for the Iridium Satellite network. I am involved with a number of products and projects involving microcontrollers, encryption, USB, Bluetooth and sensor devices. See Motion Sensor for Waking Satellite Transceivers, Hand Held Tracker for Iridium Satellite System, Hand Held Pager for Iridium Satellite System and Cryptographic Software for Embedded Systems.

 

Senior Systems Engineer, 11/02 to 5/06, L3/Titan, Reston VA

Lead software engineer for a large defense contract called IBS (Integrated Broadcast System). IBS is a soft realtime message processing system with high availability and performance requirements. I am responsible for the design and architecture of the core system (which is implemented by approximately 20 software engineers). The system is coded mainly in C++. I was also the designer and implementor of the L3/Titan OWL (One Way Link) network appliance.

My general day to day work involves figuring out how to get the next generation of the system faster (via concurrency, distributed objects, performance tuning, etc) and firefighting software problems.

 

Staff C++ Developer, Summer 2004, Visual Sciences, Mclean VA

In early 2004, I briefly left L3/Titan (after completing a spiral delivery on IBS) to do development work on a realtime web analytics product for a small start-up. At the time, IBS had no new significant design work on the horizon and I wanted to spend some time honing my C++ skills within a realtime environment.

After a few months, IBS was granted a budget to ramp up R&D on their next generation system. As I had no critical tasking at Visual Sciences, I decided to return to L3/Titan.

 

Chief Software Engineer, 3/02 to 11/02, Re-route Corp, Alexandria VA

Re-route was a small start-up firm specializing in internet email messaging.

Chief engineer of Re-route's email forwarding system. This system allows moving from one ISP to another to have mail automatically retrieved from the old account and forwarded to the new account. The backend was developed using C++, Tcl, Berkeley DB, and PostgresSQL. The system handles over 10,000 emails per day.

Re-route partners included MSN and AOL. Deployed an email forwarding system for Verizon Wireless to handle 215,000 of their customers transitioning over to MSN/Hotmail. The system handled over 120,000 emails per day. It was coded in C++, Tcl and Perl under Linux.

 

Senior Software Engineer, 10/01 to 3/02, iDirect Inc, Reston, VA

I was brought in to lead the client interface development effort for network management software (NMS) used to configure and maintain iDirect's flagship product (a broadband satellite modem). My primary charter was to improve the overall quality of the client desktop software for commercial deployment. This involved extensive GUI reworking (in C++/MFC and Tcl/Tk) and doing the database (MySQL) to user component mapping.

I was also involved with mentoring other developers through the porting of the server side C++ software from NT to a Linux environment.

 

Software Engineering Manager, 5/01 to 10/01, BAE Systems Inc, Reston, VA

I was the software engineering manager for the Business Systems Group (BSG) of BAE Systems. In this role I managed a large development effort: the United States Post Office's Mailing Online (http://www.usps.com/mailingonline) project. We developed the complete solution (from front end web services to back end print site interfacing) in Tcl (with a small amount of Visual Basic used to control document conversion). This system was backed using Oracle.

I was also involved with BSG's process improvement and designing/selecting of CM tools.

 

Senior Software Developer, 3/01 to 5/01, Sendmail, Inc., Herndon, VA

Sendmail was my re-entry into the realm of product development. Here, I was a software developer on a small team producing SMMS (the Sendmail Mobile Messaging Server). This was a critical new product for Sendmail's line of enterprise email solutions. They utilized my experience in Unix, scripting and large software design to help reorganize and extend the current product.

 

XML Czar, 11/00 to 3/01, Digital Creations, Inc. (now Zope, Inc), Fredericksburg, VA

I was responsible for all of Digital Creations' projects in the realm of XML. Digital Creations is the producer of the Zope application server platform. Zope is an Open Source product written in Python.

In this role, my job was to shepherd the XML projects and define the future direction of Zope's XML support. I was also a co-designer of an XML presentation template mechanism that figures prominently in Zope's future XHTML scripting capabilities. This involved working with Digital Creations's Python Labs (the inventors and core maintainers of Python).

Alas, the 54 mile (each way) commute took it's toll...

 

Various roles, 12/97 to 11/00, BLaCKSMITH Inc., McLean, VA

Director of Technology (1/00 to 11/00)

In this role I oversaw the technological direction taken by the organization. I was the developer, teacher and facilitator of the company-wide software development process. I also lead the R&D division of BLaCKSMITH.

In February 2000, I initiated the wireless internet focus for the company. This was officially kicked off, in April 2000, when I gave a presentation regarding location dependent wireless technology at the 3G Mobile Communications Global Summit in Japan.

As part of the wireless initiative, I have led the R&D team in developing a WAP portal site and a WML based consulting product in Java.

In September 2000, I composed and presented a seminar for local area executives titled Unwiring the Enterprise. This seminar was jointly sponsored by BLaCKSMITH and Aether Systems.

Senior Architect

I served as the Chief Java technologist at BLaCKSMITH. I was responsible for evaluating new Java technologies (e.g. Jini, JavaSpaces, etc), overseeing the hiring of new Java developers, advising projects and helping build a strong in- house Java expertise. I was a member of the BLaCKSMITH training staff where I taught courses in Object Oriented Technology and Java Development. I was also author of BLaCKSMITH's Object Oriented Analysis and Design course (a 4 day intensive hands-on course utilizing UML).

Querysmith Project Manager and Lead Developer

I was also the lead developer for BLaCKSMITH's ad-hoc database query application Querysmith. Querysmith was developed in 1997. My task was to refactor, improve and extend the application to become a general purpose commercial product. Querysmith is written in Java (1.1). I added XML capabilities to the product and provided an extension mechanism through JPython.

Software Architect

I have acted as the Chief Software Architect for the NBUS project. NBUS is an enterprise wide budgeting system being developed in Java. This system was architected to provide support for over 251 concurrent users. The centerpiece of the architecture is the dynamically distributed object foundation that sits upon an object oriented database which is synchronized with a legacy RDBMS. Gemstone/J was used as the application server. The design was influenced by various technologies including Jini, InfoBus, JavaSpaces and was implemented using EJB.

 

Senior Software Engineer, 1995 to 1997, BTG Inc, Fairfax, VA

Software Designer and Architect at Community Networks

From January 1997 to December 1997, I worked for a subsidiary of BTG called Community Networks. There I was the lead software designer and architect of Pulse Pressworks (a community based Web site creation and publishing software suite). Pressworks was targeted for the Cable-based Internet market. Pulse Pressworks was developed using Java 1.1, Tcl/Tk, and Netscape's Internet Foundation Classes (IFC). The server side software was completely written in Java. The client side applications consist of a Web Page builder (written in Java using IFC) and a Site Publisher (written in Java with a Tcl/Tk user interface). My primary responsibilities included the overall architecture of the product, maintaining its conceptual integrity and coding the user interfaces. A prototype of Pressworks made its debut at the Cable 97 trade show and was lauded for it's user interface.

Internal OO Consultant

From February 1995 to December 1996, I served as an Object Orientation consultant and technical lead for the Applied Systems Division at BTG. I was brought aboard to help move the division into the world of object oriented software development. This required mentoring new object oriented design efforts, teaching design techniques and defining a C++ framework to support migration from legacy systems (written in C) to a fully object oriented environment. I mentored over a half dozen tasks and developed two documentation systems (AFT and LitC) to support the migration to object oriented development. During the fall and summer of 1996, I spent time evaluating and applying Java (1.02) as a user interface technology framework for a cross platform MPEG video player.

 

Software Developer, 1994 to 1995, Network Imaging Systems, Herndon, VA

I worked in the Storage and Retrieval Division, where I was brought aboard to help design a new commercial storage management product. In preparation, I built a software release generator in Tcl and worked on a dynamic remote procedure call framework in C++.

 

Senior Software Engineer, 1992 to 1994, BTG Inc, Fairfax, VA

At BTG I designed and led the implementation of a distributed graphical mapping display environment (the Cartographer) for their StoryTeller mission system. This mapping environment was designed from scratch to be object oriented, and was implemented in C and incrTcl (an Object Oriented extension to Tcl). In order to support the core development, I designed an object based programming technique for C. The technique was later adopted as a project-wide standard. The Cartographer was designed to be a highly interactive visualization tool for the Storyteller system.

 

Software Developer, 1991 to 1992, Digital Analysis Corporation, Reston, VA

I was the primary designer and coder of the Domain*View application, which served as the user's front end to the commercial network management product OS/EYE*NODE. This involved quite a bit of user interface design and Motif coding. In order to make it easier to modify the product, object based programming techniques were used.

 

Software Engineer, 1989 to 1991, Innovative Technology Incorporated, McLean, VA

My work here involved protocol design (a proprietary protocol for data transfer over noisy serial lines) for an U.S. Army project, and user interface design for one of the Defense Technical Information Center's online catalogs.

 

Software Developer, 1988 to 1989, Nexus, Inc., Vienna, VA

On this job I worked with another developer to port Tandy Corporation's Scripsit wordprocessor from a XENIX platform to System V.3 systems. I also developed a text based windowing system to support the product's online thesaurus.

 

Systems Programmer, 1987 to 1988, University of the District of Columbia

I worked as a systems programmer at the UDC Computer Center. Here I developed system management tools and utilities of a DEC 2060 TOPS-20 system and DEC VAXen under VMS.



This document was generated using AFT v5.096