Shawn T. Rutledge
2314 E. Earll, Phoenix, AZ 85016
A creative, meticulous, results-oriented engineer who consistently delivers a quality product. Signiﬁcant long-term experience in object-oriented design and implementation of multi-threaded, client-server, interactive, and web-based software systems. Recent experience with embedded systems, including digital hardware design, microcontroller ﬁrmware, and multimedia Linux software. Major strengths are: learning quickly, thorough problem analysis, innovative solutions, and effective written communication.
· A2DP, AVRCP
· Atmel AVR
· QT Embedded
· libMAD, Helix
· Digital design
· Eagle schematic/PCB
· Thin-client GUIs
· Java2D graphics
· AWT, Swing
· Servlets, JSP
· Scheme (Chez, Chicken, Guile)
· bash, tcsh
· Design patterns
· SQL Server
· CVS, PVCS, ClearCase
Aug 2004 - May 2007 Senior Staff Engineer Motorola, Tempe, Arizona
iRadio is a Motorola project to bring low-maintenance pre-programmed radio-like music and talk channels to cell phones, so that users can expect to have several hours daily of interesting, fresh material available for listening, at home or on the go. In addition to listening on headphones, one can use Bluetooth to stream the music to a stereo system; and it was envisioned that one could use the Bluetooth cell phone to remote-control a PC playing music either locally or via a uPnP media receiver.
In 2004, the ﬁrst goal was to demonstrate a prototype at CES. So I was working on two projects - a software application on the E680i Linux phone, and a Bluetooth streaming receiver.
· QT C++ app on the cell phone, using the Helix player for on-phone playing
· In streaming mode: Multiplex metadata, MP3 packets and control packets across a single SPP link to the streaming receiver
· In remote-control mode: Transmit control packets and receive metadata packets on an SPP link with the PC
· First version of the streaming receiver: a Linux application using the BlueZ Bluetooth stack and libMAD for MP3 decoding. This was deployed on an ARM single-board computer with a CompactFlash Bluetooth card.
The CES demo went well. Then A2DP began to be deployed on Motorola phones, so for the next version we no longer needed SPP multiplexing; and marketing decided to remove the PC remote-control feature. So I needed to develop a reliable, portable phone application which can play media either locally or via A2DP.
· Extended the E680i application to support A2DP and AVRCP APIs, with menus for Bluetooth connection and discovery
· Was named co-inventor of a method to send metadata across the AVRCP channel to the car stereo
· Worked around bugs in the phone Bluetooth stack to increase reliability of the iRadio application
· Helped a coworker to port this C++ application to a J2ME version
· Created an efficient binary XML representation, with implementations in C++ and Java. A YABX ﬁle consists of a string table, followed by a tree which references the strings in the table and stores other datatypes directly in binary form. The result is drastic savings in ﬁle size and very quick reading. This became popular among the team and was used everywhere in the iRadio ecosystem, whenever data needed to be exchanged between the phone, the home gateway, and the server.
Due to the fact that my coworker who took over the streaming car stereo receiver project had become overwhelmed with work, I moved back to that project. During 2005 it had evolved to a custom board containing a CSR BC03 Bluetooth chip, which implemented typical handsfree car kit functionality in addition to streaming audio; and an Atmel microcontroller to interface with various aftermarket car stereos. Alpine began to show interest in collaborating with Motorola to develop a Bluetooth handsfree box as a companion to the 2007 model stereos, to daisy-chain between the head unit and the iPod.
· Learned how to develop real-time software on a microcontroller, without an OS, and wrote all of the Atmel code for this project. It manages two serial ports, audio and serial switches so that the head unit can switch between Bluetooth and iPod modes, does a lot of serial protocol translation with various timing requirements, and stores the phonebook in SRAM.
· Worked with Alpine’s contracted Chinese software arm to do the integration, testing, and debugging. This required a lot of patience, several months of 60-hour weeks, some technical negotiation, and two week-long trips to China.
· Managed to satisfy this conservative Japanese company with the quality of the product, which is now sold retail.
I wrote new ﬁrmware for an existing BC03-based iPod Bluetooth adapter, which can stream music to our existing devices.
· Look at iPod playlists and map them to channels
· Handle all key-release events from AVRCP and control the iPod (change tracks, playlists, etc.)
· Display a logo/status image on the iPod
· Send iPod audio via A2DP, and metadata via AVRCP, to the receiver
· Now implementing the new extended metadata speciﬁcation
After completing the Alpine project, I proposed to develop an evaluation/demo board for a future smaller Bluetooth module.
· Having some experience with Eagle, I used it to develop the schematic for this board.
· After getting feedback from the rest of the team, routed the PCB and ordered some prototypes.
· Wrote Atmel ﬁrmware to manage the SPI-bus VFD, buttons, LEDs, serial link to the BC03, I2C volume control chip, and a SPI ﬂash memory for phonebook storage.
· Developed a user-friendly UI which resembles a car stereo, but has more than the usual set of Bluetooth features.
· Wrote a user manual
Apr 2002 - Aug 2004 Senior software engineer Abstrax, Mesa, Arizona
Abstrax has several vertical-market instances of an expert system for build-to-order sales and fulﬁllment. A salesperson can create highly customized conﬁgurations of products such as window shutters or computers using one program, and other programs guide the factory workers and operates the automated equipment in manufacturing that custom “long-tail” product. This software is written in Scheme (a simpliﬁed, high-performance dialect of Lisp).
· My ﬁrst project was a Java thin client to enable web-based remote access for this existing software.
· Designed DTD for generic remote-GUI speciﬁcation
· Implemented servlets to maintain HTTP communications with a Scheme application session.
· Wrote generic remote-GUI viewer applet which realizes widgets as speciﬁed in XML
· Advanced List widget and dynamic Menu classes
· Buffered canvas widget which parses XML 2D drawing commands (similar to SVG)
· Translator from GUI speciﬁcation auto-generated from Scheme application, to my DTD
· Wrote an extremely fast XML parser which produces much less garbage than KXML (temporary Strings, etc.)
Since completing that project, I was adding features to the window shutter sales software.
· Compiler for a custom scripting language, run-time framework for shutter pricing models, and a lot of pricing models using this framework for various clients
· Framework to output invoices and assembly instructions by substituting live variables in PostScript templates
· Windows DLL to enable printing from Scheme to GhostScript, including pixmap images; and to generate PDF ﬁles.
· Generic textual-table utility, used to generate onscreen previews of the invoices
· GUI screen for customizing shutter frame elements
· Complex optimization algorithms to align louver positions, rail sizes, shutter tops, bottoms, and sizes of shutters
· Mentored new hires, especially regarding pricing models and GUI components
· GUI screen for designing bypass shutters, as used for patio doors
· Basic contact-management features for customers’ clients and employees, via GUI forms interfacing with SQL Server
Oct 1999 - Feb 2002 Software design engineer HomeStore, Scottsdale, Arizona
Weblogic EJB real estate web sites. This office began life as HomeBid.com; we built a customer-oriented real estate web site, and then were acquired by HomeStore, after we started to build another site to help real estate agents track the tasks and documents associated with all of their transactions, and facilitate communications among the parties involved.
· Image management interface which real estate agents use to upload images of homes
· XML/HTML parser and XML generation utility
· JMS notiﬁcation system to build email messages from XML templates.
· Email layout engine (to interpret a small subset of HTML tags, do word-wrapping, line breaks etc.)
· Wrote a tool to parse XML email templates and insert them into database CLOBs, another tool to generate a report, and wrote the DTD for the XML templates. Non-programmers can use these to write notiﬁcations using an XML editor.
· Generic Table class to store an entire ResultSet from a JDBC query, sort, and do some limited queries
· Wrote XML documentation maintenance tools
· Wrote and maintained all makeﬁles for the projects; CVS administration; Unix and Gnome support
· Mentoring regarding SOAP, XML and other technologies
· SOAP integration of a Windows-based faxback system. Agents can use barcoded coversheets to upload documents for a speciﬁc transaction, and they become electronic documents associated with that transaction (PDFs stored in Oracle BLOBs).
· Implemented “ZIP stream” functionality for archiving all documents associated with the transaction into a ZIP ﬁle in another BLOB, to save space for closed transactions. The ZIP ﬁle is created on-the-ﬂy as it is streaming into the BLOB.
May 1999 - Oct 1999 Software design engineer ExpressBill, Scottsdale, Arizona
Text parsing application to extract data from “print images” of medical bills into a database; integrated via CORBA.
· Java “string grid” component for selecting coordinate regions within a text ﬁle
· Used Rational Rose to design a modular OO architecture in which “rule” objects extract the various snippets of data.
· Java applet, servlet and JSP mentoring
Jan 1998 - Apr 1999 Software design engineer Essential Wisdom L. L. C., Scottsdale, Arizona
Built a general-purpose drawing and diagramming application in Java. Then, converted it into a client-server application tailored for web-based sales and consulting on customizable products (pools, landscape irrigation systems, furniture, homes, computer networks, ﬂight itineraries, etc.) We veriﬁed that it really does “run everywhere” (tested on Windows, Macintosh and Linux).
· Designed and implemented the complete “view” and “control” portions of the MVC architecture, including advanced features such as arbitrary zoom, zoomable rulers, “inﬁnite canvas” drawing area, several kinds of object-snap, object nesting, labeling, grouping (mostly done with intuitive mouse gestures rather than obscure menu commands), collaboration (multiple people editing the same drawing), etc.
· Worked directly with a Human Factors/Usability expert to reﬁne its ease-of-use.
· Wrote library of reusable geometry functions
· Implemented printing capability
· Wrote native code for some time-consuming functions
· Implemented portions of Java2D functionality on JDK 1.1
· Managed server-side development (LDAP/JNDI for the directory of users and their drawing ﬁles, HTML launch page to start up the applet, setup and maintenance of Apache, JServ, and OpenLDAP on Linux, etc.)
· Built and maintained Linux mail server/internet gateway for the whole company
Jun 1996 - Dec 1997 Software design engineer Gateway Data Sciences, Phoenix, Arizona
One of the world’s ﬁrst 100% Java point-of-sale packages, intended for use in small-to-medium sized retail stores.
· Architected and implemented a prototype of the Java POS application on the Taligent WebRunner application framework. With the addition of many other features by other team members, this evolved into the product that we ultimately shipped.
· Created a method to display Java AWT components on the VFD shopper display and the receipt printers.
· Several Java AWT receipt-printer drivers, which facilitated reuse of existing “view” functionality such as layout managers, text centering, justiﬁcation, multiple fonts and styles, while maintaining the speed of printing text with control codes.
· Schema and code for storing “tabular view” layout information in a relational database.
· Implemented fully conﬁgurable receipts with this framework.
· Barcode and credit card scanning functionality.
Open Source projects:
· Thin-client portable UI system
· gcode2eps (CNC code preview utility)
· NetteBook web-based PIM
· Caller ID broadcast server and clients
1990 – 1994 Arizona State University Bachelor of Science in Electrical Engineering
Key courses: computer graphics, artiﬁcial intelligence, system design with microprocessors, multimedia information systems.
1988 - 1990 Central Arizona College
Engineering core, physics, mathematics, and electronics technology courses.
· Member of the Bluetooth SIG and AV Working Group
· Hobbies include Linux, open-source projects, home automation, metalworking, electronics, Russian language & culture.
An up-to-date version of this resume can always be found at http://ecloud.org/resume.html. This copy last upated February 21, 2007.