Todd Coram
todd at maplefish dot com, http://www.maplefish.com/todd
(rev. 07/26-a)

Synopsis


I have over 25 years experience as a professional software developer/designer/architect. I've worked on large scale distributed systems as well as tiny devices powered by embedded microcontrollers.

I am fluent in many programming languages (Lua, Erlang, Haskell, C, C++, Perl, Tcl, Python, Forth, awk, Java, shell scripting), many flavors of Unix (Linux, FreeBSD, Solaris), networking/Web technologies (Amazon AWS, RabbitMQ, ZeroMQ, low level TCP/IP, UDP, Erlang OTP), design paradigms (OO, Functional, Concurrency Oriented Programming), and microcontrollers (8051,ARM,MSP430).

I am very comfortable with public speaking and have presented at conferences as well as taught programming/technology to children and adults.

I am an enthusiastic learner and habitual explainer.


Selected Projects and Products


Here is a selection projects and products loosely divided into PC/Server/Network/Web and Embedded.

PC/Server/Network/Web

Executive Secure Comms (ESC)
I am currently developing a secure commercial product for Corporate Executives of large companies. ESC monitors laptop hardware and software for physical instrusion and modification. Upon detection of a security breach, the laptop automatically notifies the user as well as the back office (via a secure wi-fi connection). The laptop and back office software is written in a combination of Lua, Erlang, Haskell and Python. - (Novetta 2013)
Home Monitoring System
I'm currently developing (in my spare time) a robust home monitoring system that ties motion, temperature and other sensors to AWS cloud servers. This target audience is the Independent Elderly (your parent or grandparent who lives home alone can be discreetly monitored by your or a caregiver). This system is an ongoing project described in detail at http://eldermonitor.blogspot.com/.
Maunder
I've developed an experimental Mumble VOIP chat server in Erlang. This open source application allows developers to play around with the Mumble protocol to add extensions and new capabilities. Maunder can be found at https://github.com/tcoram/maunder .
IP Packet Router
I combined TUN/TAP with Erlang to provide a multi-hop encrypted packet router for a client proof-of-principle project. The prototype system routed packets in user space through a network of over a dozen virtual servers. - (Novetta 2012)
AFT
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. (It was also used to create this resume!) If you use Ubuntu, you can sudo apt-get install aft to get the latest copy! (1996-2010)
Knit
Knit is a very lightweight Literate Programming system for Awk and C. I wrote it to support otl2aft (a support tool I developed upon request by a VIM Outliner user). (2009)
BLOGnBOX
I am the author of a 100% gawk based blogging system. It produces pages offline and uploads them to your website. Go to http://www.maplefish.com/todd/blognbox/ to take a look at the results. (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 2005-2007 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. (2005-2007)
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 and Tcl, with a little 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 Open Source
Most of my open source code can be found at https://github.com/tcoram .
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)

Embedded

Multi-mode GPS Tracker
I was the designer and implementer of a multi-mode GPS tracker (running on an MSP430) that uses multiple output paths (including SMS and Iridium SBD). The device is the incarnation of a new tracker architecture that allows for rapid prototyping via a lightweight scripting engine (see uForth). - (ITT Nexgen 2010)
Motion Sensor for Waking Satellite Transceivers
I was 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 Nexgen 2007/2008)
Hand Held Tracker for Iridium Satellite System
Lead designer and implementer of a hand held personal tracker 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 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 Nexgen 2007/2008)
Hand Held Transceiver for Iridium Satellite System
Lead designer and implementer of a hand held transceiver 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. - (Nexgen 2006/2007)  
uForth
I am the designer and implementor of a very lightweight scripting system for 16-bit memory constrained microcontrollers (such as the MSP430) based on a subset of ANS Forth. It is written in ANSI C and itself. It runs on an MSP430 with as little as 2KB RAM and 16KB Flash. (2010)

Other Accomplishments


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. 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
Virginia Home School Conference 2012
I gave a presentation on Internet and Web technology to a group of 60+ home school parents. I called the presentation Hack Your World.
NoVA SCOOP
In 2012-2013 I taught a technology class, for the NoVA SCOOP homeschool organization. The class was a 13 session whirlwind tour of technology called Hack You World for homeschooled teenagers.
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
Lua, LuaJIT, C, C++, Haskell, Erlang, various Forths (including SwiftX for MSP430 and 8051), awk/gawk, Tcl/Tk, Perl 5, unix scripting (bash, korn, Plan 9 rc, Busybox), Python, Java, Standard ML, Scratch, LOGO, Scheme, and Common Lisp.
Microcontrollers
TI MSP430, 8051, Atmel AVR 8-bit, ARM7, Cortex-M3.
Modeling language Expertise
SPIN Promela model checker.
OS
Unix (Linux, FreeBSD, Solaris 8 and 10), Nucleus (for ARM).
Databases
SQLite, Berkeley DB, MySQL, Oracle and Postgres
Protocols
TCP/IP, AMQP (RabbitMQ) and STOMP
Design
Procedural, Object Oriented, Relational and Functional
Client/Server
Transaction based, workflow systems, database backed websites, concurrent, distributed, Tuplespaces and TCP/IP socket based event driven servers.


Detailed Work Experience


Senior Computer Scientist, 9/10 to Present, Novetta, various locations in MD and VA

 

I am developing tools in Haskell, Erlang, Lua, C, Perl, Awk, etc (and whatever else that makes sense) to do secure communication software. My ongoing challenge involves both size and time constraints of tools. In dealing with time constraints I have become very familiar with tailoring the linux boot process to produce very slim and fast linux systems.

Some of my work lives in the Amazon Cloud (AWS).

I am also designing microcontroller based gadgets for a variety of security uses.

Principal Software Engineer, 5/06 to 9/10, NexGen - A wholly owned subsidiary of ITT Defense, Dulles VA

 

I worked on all types of embedded device side software solutions for the Iridium Satellite network. I was involved with a number of products and projects involving microcontrollers, encryption, USB, Bluetooth and motion sensor devices. See Multi-mode Tracker, Motion Sensor for Waking Satellite Transceivers, Hand Held Tracker for Iridium Satellite System and Hand Held Transceiver for Iridium Satellite System.

I also designed and implemented protocols for satellite handset authentication under Solaris and Linux.

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 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.098