15+ years of software expertise on Linux/UNIX, commercial RTOS, and other platforms from Windows to DSPs. I turn prototypes into products, solving problems at any level from bootloaders, kernel drivers, and performance-critical code in C and assembly to distributed applications and frameworks in C++, Java, Python, Javascript, Perl, and exotics from OCaml to CLIPS. Technical interests include wirelessly networked voice and video communications, modular design and knowledge representation in network management systems, and denial-of-service resistance in cryptographically secure transports. I strongly prefer roles that include customer interaction and contribution to marketing requirements.
Software Engineer @ Software and systems engineering for Interana's behavioral analytics product. From June 2015 to Present (7 months) Principal Engineer @ Principal engineer for mobile client software and principal architect of cloud services and protocols for MagicCube, a startup in the mobile payments space. Designed strategy for cryptographic validation of the origin of traffic from the mobile device to the cloud, and designed RESTful API to cloud services. Designed and contributed much of the implementation of two tiers of cloud services (in node.js and Python), the application/protocol SDK, and the mobile reference application. From September 2014 to March 2015 (7 months) Principal, Software Development @ Principal engineer for Samsung SimBand wearable device software platform and cryptographic security architecture. Specified platform software stack and worked with contract staff to deliver three iterations of the Linux platform layers and OpenGL ES integration: a hybrid Android/Yocto bringup stack, a full Yocto stack, and a Mobile Ubuntu variant. Developed C++ framework for biosensor data processing pipeline, ported data reduction algorithms to the target system, and filled in missing pieces, including suppression of duplicate heartbeat detection and combination of signals from multiple heartbeat sensor channels. Developed software for in-form-factor device programming jig using Python/Expect. Worked with Mobile division at Samsung headquarters to port application software stack (biosensor processing and GUI) onto Tizen on the second-generation in-form-factor device. From February 2014 to August 2014 (7 months) Principal Engineer @ Kindle Fire HD platform/framework performance. GPU driver and cache management overhaul, plus OpenGL renderer extensions, to enable agile handling of image assets in otherwise straightforward Android-compatible apps. Tools for analyzing physical memory usage patterns in Android-like (and other Linux-based) systems. Investigations of, and solutions to, UI fluidity problems all the way down to kernel locking primitives and the CPU scheduler. From January 2012 to February 2014 (2 years 2 months) Software Technical Lead @ Cisco’s Consumer Telepresence Business Unit adapted an enterprise videoconference system into a set-top device, and launched it into the consumer market. I played a key role in getting the product finished and out the door, and in refocusing the team onto a second-generation platform built around an ARMv7 system-on-chip.
My technical contributions to the first-generation “ūmi” product included:
• solving performance and reliability problems in the graphics stack;
• porting chip support components to a long-term stable kernel, and combining them with up-to-date, maintainable open source components in a fully automated build system; and
• combining portions of two chip vendors’ HDMI repeaters to form a hybrid that passed HDCP certification.
At the application layer, I built a set of C++ framework classes, designed for audio/video architectures that require event-driven interactions among multiple real-time threads. The automated test suite for this system includes 100% branch coverage on the thread/event/logging core, as well as functional tests covering SIP signaling, NAT traversal, DTLS key exchange, and inter-process event exchange using DBus and Google protocol buffers. Using the Valgrind debugging/profiling toolkit, I drove the framework classes and the underlying libraries to a zero-memory-leak standard. Techniques I invented for this system are the subject of several patent disclosures.
The second-generation product will deliver a similar experience at a fraction of the cost. Some of my contributions to this effort:
• full-motion graphics rendered through Qt/OpenGL at full HD resolution (1080p60) in GPU, using 7% of one CPU core;
• implementations of JPEG compression and decoding using NEON SIMD instructions, resulting in accuracy on par with the floating-point reference implementation; and
• demonstration builds of internationalized Pango/Cairo font rendering, Phonon/GStreamer audio/video pipelines, and the mobile Firefox web browser. From February 2010 to August 2011 (1 year 7 months) Systems Deployment Engineer @ The Systems Deployment Engineering team helps software projects launch onto Google's production infrastructure. It's a specialty within Site Reliability Engineering -- a.k.a. Google.com operations. Like any good operations group, our main job is to find patterns in what we're doing day to day and automate them away. So SDE is also a software development team, building launch automation tools specific to the Google environment.
This being Google, our team's principal project is a web app, built using Python and an internal Javascript framework analogous to Dojo. We follow Agile development practice and avoid code ownership, so I've contributed some code to most modules of the system; features in which I've taken the technical lead include:
* The original data persistence layer
* Visualization of the effect of configuration changes on traffic routing
* Representation of the results of template expansion in the language underlying the performance monitoring interface
In my 20% time, I've worked on internal projects in Google's other major languages (C++ and Java) and developed demonstration applications using external-facing platforms (Django and Dojo on AppEngine, GWT). I also had a small hand in launching the Climate Savers Computing Initiative. From May 2007 to May 2009 (2 years 1 month) Consulting Software Developer @ The Core Tech department at Plantronics, under the direction of the CTO, explores new technologies applicable to telephone headsets and related products, and develops reference designs and software / firmware components for use across multiple product lines. I worked with a multi-disciplinary design team to complete and release the first Plantronics product containing an embedded Linux distribution.
Most of the code in the developers' kit is third-party open source, and other software staff and contractors have contributed significantly to the integration effort, but I am responsible for completing the platform integration and getting the whole software package into releasable condition. The release effort also involves a great deal of “people work”: design and documentation of the release process, liaison with the legal department and contract negotiators, and expectation setting with executives and prospective customers. From December 2006 to May 2007 (6 months) Member of Technical Staff @ At the time of my arrival, the first small batch of Mistletoe systems was in customer trials. I restructured the bootloader packet microcode to share more than half of its source code with the main microcode, and met the bootloader and Linux-kernel release goals on the (revised) schedule. These goals included integration with a new family of Ethernet switch chips, restructuring of the memory layout, and implementation of cryptographic certificate verification using the chip's modular exponentiation core.
Working together with the engineering lead on the "host accelerator" project and the principal chip verification engineer, I developed microcode support for the chip's PCI-X interface and designed a “Layer 2+” header used to offload the expensive part of session tracking from the Linux appliance to the ASIC. I wrote an application note used in marketing the reference design, and worked on a prototype implementation of session offloading using two Linux systems. From April 2006 to December 2006 (9 months) Senior R&D Engineer @ My responsibilities included:
- adapting a bootloader, Linux kernel, and userspace environment to new RFID reader hardware;
- porting the ARM-resident portion of the application stack from the existing product;
- porting TI’s DSP/BIOS Link and rewriting much of R&D’s DSP code base to coexist with Linux and DSP/BIOS.
The resulting software stack interoperates with Alien’s existing graphical reader clients.
I worked with colleagues to:
- develop a Windows CE board support package and modify the existing bootloader to also boot WinCE;
- revise processor and FPGA pinouts to accommodate a new synchronous burst mode Flash device;
- extend the opto-isolated I/O interface to be compliant from TTL levels to +28V;
- write the RFID “Q protocol” layer of the DSP code, optimized based on my statistical analysis of tag populations;
- design a new bit recovery layer that, according to simulations, should be more tolerant of timing variations than anything yet seen in the industry. From September 2005 to March 2006 (7 months) Senior Software Engineer @ I served as Linux appliance expert for the Symbol Mobility Services Platform (MSP), a network and wireless device management solution. I completed the Linux port and built a custom Debian distribution, an autobuild system, and a CD-based manufacturing process that recognizes multiple hardware models and installs the operating environment from the firmware up.
Meanwhile, we hit a maintenance crisis in a legacy C++/Python network manager on MSP and Windows. I analyzed and solved the performance problems by adapting the Python hotshot profiler for multi-threaded use. I cut about 10% of the 46,000 lines of Python code, rewrote another 20%, and updated the toolchain and third-party libraries, without damaging the capacity of the permanent team.
Version 1.0 of MSP was released in August 2004, with field upgrade mechanisms already developed and tested; later releases have included migration from Debian to Ubuntu, a new generation of hardware, and the Linux 2.6.10 kernel. From January 2004 to July 2005 (1 year 7 months) Principal @ Employed and managed technical and administrative personnel and served as technical lead on the companys consulting projects serving clients in Silicon Valley, elsewhere in California, and outside the USA.
Networked voice and video applications: agile video recording / playback features for set-top and handheld platforms; scalable VoIP device emulator on Linux.
Revising applications and networking code for portability, performance, and added features: production-quality ports using the Netscape Portable Runtime; adapting an SNMP manager stack written in C for multi-threaded use from Java.
Critical code in special programming environments: embedded devices, kernel drivers, protocol stacks, RDBMS internals, application plug-ins.
Web interfaces using clients choice of platforms and tools: Apache, IIS, and Jakarta Tomcat; Perl, Java, VBScript, and Javascript; CGI scripts, JSP, PHP, and embedded Perl and VB; SQL RDBMS [PostgreSQL, Oracle, MySQL]. From April 1998 to December 2003 (5 years 9 months) Staff Engineer @ Technical lead on an engineering team developing next-generation interactive television / broadband service prototypes on Linux and VxWorks. Responsible for systems programming, including integration of hardware and software MPEG decoders for random access within MPEG2 programs under Linux and ports of an infrared receiver driver and the VxWorks IDE driver to our MIPS-based set-top prototype. Co-presenter on three demos at Sonys Tokyo technology fair. From October 1999 to August 2001 (1 year 11 months) Senior Systems Administrator @ Senior technical member of UNIX support staff for 800-host engineering operation using Vantive workflow and problem tracking tools. Architected High Availability NFS Cluster on Digital Unix with TME-10 NetView SNMP monitoring. Coarchitected High Availability E-Mail Cluster (Veritas FirstWatch on Solaris) and implemented application fail-over. From May 1997 to April 1999 (2 years) Network Administrator / SGI Specialist @ Supported SGI engineering cluster in 40-host engineering lab and managed service relationship with PC-centric corporate MIS. Maintained systems and applications (including open-source software library) and deployed Unix/PC interoperability and collaboration services, including multi-protocol file services, ATM LAN Emulation, and LAN videoconferencing. From August 1996 to March 1997 (8 months) Chief Designer and Senior Project Manager @ Researched, invented, and implemented real-time video processing algorithms for an embedded machine vision system for traffic analysis and control. Sole inventorship on U.S. Patent #5,438,360 (Machine vision camera and video preprocessing system). Implemented real-time software prototype on SGI workstation in C and MIPS Assembly. Selected and ported to core DSP components and supervised contract product engineering firm responsible for hardware prototype. From June 1992 to October 1993 (1 year 5 months)
B. S., Physics @ UC Santa Cruz From 1994 to 1996 Astrophysics / Computer Engineering @ Princeton University From 1988 to 1994 Michael Edwards is skilled in: Software Development, Python, C++, Unix, Linux, Perl, Embedded Systems, JavaScript, Tomcat, Agile Methodologies, MySQL, Mobile Devices, Enterprise Software, Firmware, C, Integration, Apache