Resume of Ted Merrill, Retired Software Architect
emBuild Software Design
Santa Cruz, California
software <at - no spam> emBuildSw < dot > com
October 2014 to May 2015: System Architect for Nomizo, Santa Cruz
Pull together team contributions for hardware and software
architecture of a new device.
July 2010 to September 2014: Semi-retired.
March/April 2011: Developed for Atheros a basic simulation framework and adapted firmware
to this framework to allow hardware-less new product prototyping.
Volunteer work (October 2012 to March 2014): webmaster for a dance camp
organization (http:ncdcdances.org); wrote and maintained registration website
Volunteer work (March 2012 to present): webmaster for local sierra club group
converted previous website to drupal for easy content addition
by other volunteers.
Volunteer work (January 2013): wrote original website for a summer day camp
October 2007 to July 2010: Special Projects Engineer at Atheros
Communications, San Jose
Atheros Communications is a leading provider of chips for WiFi and
other networking applications.
My work at Atheros included:
Developed a WPS server solution for Atheros WiFi access points.
Developed a software management and control framework for
home gateway boxes, including remote management via TR-069,
firmware upgrade, and flash-based database.
Guided development of a turnkey gateway box software distribution
based upon this management framework.
Developed VoIP addon for home gateway box, including adaptation of
free software, hardware drivers, and management software.
October 2003 to September 2007: Software Consultant (emBuild
January 1996 to September 2007: Software Fellow at ArrayComm, Inc.,
ArrayComm is a provider of wireless cellular telephony and Internet
I worked full time for ArrayComm until Oct. 2003 and then for four
years as a part time employee providing software tool support.
Most of the following items that I have designed and written were in
by ArrayComm engineers every day and/or part of several products.
- Compact realtime kernels for arm7 and m56300 processors.
Call-compatible with core vxWorks functionality, except that interrupts
are handled in a superior way.
- Embedded target debug menu system. Easy addition by all
developers of menu items and submenus, including help messages.
Host-resident talk program provides command line editing and history,
plus command completion and help messages by pressing TAB key.
- Memory management system. Provides basic memory allocation, plus
free-list handling, and associates allocated or registered memory
blocks with the source code describing the data (for debug purposes).
- Embedded target data editor. C structs automatically parsed
during compile to produce tables for data editor. Data structs may be
walked, displayed, modified, etc. from the debug menu system. Works
with memory manager so that pointers may be followed to the actual
memory definition. Also works with examining memory of slave processors.
- Slave processor control system. The concept of a slave processor
is abstracted, and made portable. Slave initialization and
communication done in unified way, with modules having a host side
which talks to module slave side. Access is made to fields in C data
structs on the slave using C struct field notation on the host, thus
greatly simplifying such coding. Minimal conditional code required to
- Multiprocessor system simulator core code for simulation programs
running on development host. Programs simulate in a single thread
multiple processors running the actual product C code; context
switching accomplished by swapping anchor pointer values via memory
manager system. Target debug menus, memory management system, slave
control system are all functional with only minor conditional
- The atool software development system. Make system is very easy
to use but very rigorous (automatically finds and tracks dependencies).
Libraries and programs built for many different targets with little
more than a list of input files and a list of targets. Target aliases
simplify listing targets. Required libraries are found using recursive
include files which are automatically generated when a library is
built. All files found using path lists which may be different for each
version, thus providing path portability. Version system allows
creating lightweight versions, with only some code specific to the
version and the rest borrowed from another version. Version control
system is module-based and controls object as well as source code.
Template files ease generation of new modules. This system has been
released into the public domain by agreement of all involved.
- Miscellaneous: Compact IP/TCP stack. Embedded drivers for USB,
PCMCIA, FLASH memory, UART. Linux drivers using USB and PCMCIA.
Configuration and customization of vxWorks. Boot code for power pc,
arm7 and m56300 based systems. Target configuration system code. Some
experience with GCC internals. System for data collection for SNMP
reporting. Design of a read-only filesystem.
May 1993 to January 1996: Sr. Software Engineer at Park Scientific
Park Scientific Instruments manufactured the AutoProbe line of scanning
probe microscopes. They have since been absorbed into another company.
- Wrote the data acquisition and microscope control software for
all of the models in highly optimized assembler for m56000 DSP. The
software features a large number of optional features which are plugged
and unplugged using carefully designed self-modifying code.
- Wrote host (Windows 3.1) control/acquisition layer to manage the
DSP code. The acquisition rate of the DSP is automatically adjusted to
be the highest possible given the selected features. The (worst-case)
compute time for each feature is calibrated at startup.
- Wrote extensive documentation of all features. The documentation
system is strongly organized based on enumerations, and ties in to the
machine database system and user interface, as well as the machine
control and acquisition system.
May 1991 to May 1993: Software Architect at InVision Technologies
InVision Technologies manufacturers CT-based airport baggage inspection
systems. It is now based in Newark, CA, and has done quite well
since the recent terrorist attacks.
- Half time meeting with engineers to negotiate module requirements
and interfaces between software components.
- Half time developer of miscellaneous interface software, database
software, and software tools, including what has now become atool.
- With a co-worker, handled Unix system administration.
June 1989 to May 1991: Sr. Software Engineer at Resonex, Sunnyvale
Resonex was the manufacturer of a very cost-effective yet high quality
MRI scanner. The company never gained market acceptance and
closed it's doors in 1995.
- Wrote high-performance object-oriented graphics display system
used for MRI control and display interface.
- Maintained realtime scanner control software.
August 1983 to April 1985 and July 1986 to June 1989: Sr. Software
Engineer at Imatron, Inc., South San Francisco
Imatron introduced an innovative cinematic CT-scan machine in 1983. The
company was acquired by GE in 2001 and is still in the same business as
- Interactive graphical data analysis software.
- Extensive experience at cramming way too much code into way too
little memory. Wrote voluntary task scheduler, printf, etc.
April 1985 to July 1986: Software Engineer at Docugraphix Inc.,
Docugraphix manufactured a mechanical CAD / tech pubs workstation.
- Wrote graphics display library for proprietary graphics card.
August 1981 to August 1983: Research Engineer at Ampex, Redwood City
- No major accomplishments at this job.
June 1981: Graduated with MS in Mechanical Engineering from UC
August 1979 to June 1981: Research Assistant at Impact Lab, UC
- Created dubious 3-D simulation of whiplash in the human neck.
- Created debug and graphical tools for the simulation development.
June 1979: Graduated with BS in Engineering Mathematics from UC
June 1978 to June 1979: Research Aide at Impact Lab, UC Berkeley