13.0 MONTE BENARESH [email protected] San Jose, CA (408) 746-3797

WORK EXPERIENCE Itron (January 2018 to Present) Silver Spring Networks ( January 2017 to January 2018) Silver Spring Networks developed an ecosystem of IoT networking products and back-end systems for the collection, transmission and analysis of utility-meter data, as well as for the control of streetlights and utility distribution. It was the world's #1 IoT company by units deployed when acquired by Itron in January 2018.

Senior Engineer for various models of utility-meter network interface cards and access-points. ! Investigated and fixed numerous bugs in bare-metal drivers for UART, USB, ADC, I2C, pulse counters, and other peripherals. ! Acted as FW lead for AP (access point) products, including support for new WAN modems, and for the new IoT Edge Router. ! Used GDB to perform live JTAG debugging and core dump file investigation. ! Took initiative in debugging prototype HW by studying schematics and soldering test leads and JTAG connectors. ! Integrated 3rd-party USB into FW code base, including support for CCD/ACM functionality. Helped to find and fix low-level bugs and sent fixes to vendor. Implemented a UART-over-USB emulation driver for the FW system. Used a USB analyzer to capture trafc and evaluate performance. ! Wrote a UART interface to an Eagle Research electronic volume corrector (EVC) for gas metering. This supported gathering of metering data and alarm notifications from the EVC and execution of utility functions, such as setting the EVC clock and querying configuration parameters. Wrote command-line tools for test and debugging of the communication functions. Added support for queueing up to 2 asynchronous calls to the EVC interface. ! Added driver support for lithium-phosophate backup batteries for 4th- and 5th- generation Access Point products. Worked with HW engineer to investigate issues with new components. ! Performed required code reviews of FW changes, sometimes in areas outside of my familiarity. Earned a reputation for finding potential bugs and for encouraging code maintainability. ! Discovered coding and design problems that prevented long-used memory tests from working efectively. Recommended the use of ARM memory-barrier instructions, among other changes. ! Added time zone and daylight-saving time (DST) awareness to a new code base, including support for a configured DST transitions table. Wrote command-line tools for testing. Wrote a build tool to extract DST transition times from UNIX timezone files. ! Maintained tracking states in JIRA for all code and documentation tasks. ! Supported partners in HW, QA, End-to-end testing, HW test, product management and customer support. ! All SVN code submissions required reviews by at least 2 fellow engineers.

GoPro (July 2014 to December 2016) GoPro develops the world's leading action cameras.

Camera Firmware Engineer responsible for UI implementation. ! Quickly learned the TARA development environment and UI framework. The TARA Embedded Wizard is a visual design tool and IDE that includes the Chora C-like object-oriented language. This environment generates C code to be included in our FW build. ! Re-implemented all camera capture UI screens for a major revision of the TARA framework. ! Revised code base and drawing layers for products with new display formats. ! Fixed dozens of issues in the UI and the rest of the firmware. ! Resolved localization issues in Chinese-language release. ! Worked on multiple camera projects simultaneously. ! Implemented 3-level git submodule scheme for UI code base. ! Documented submodule repository commit procedures for ofshore team.

PACE Anti-Piracy – Contractor (March 2009 to June 2012) PACE develops hardware, software tools, and web services for software copy protection. I worked on a number of projects as an outside contractor for PACE since 1995. See www.paceap.com.

Assisted in development of firmware for second-generation iLok USB dongle based on the Atmel AT91SC with an ARM7 core. My assignment was to write a custom USB transport layer, and to modify Atmel's chip initialization, interrupt and peripheral code. ! Managed firmware build process and implemented custom ROM memory map. ! Implemented a custom USB transport layer using BULK transfers; made use of a state machine for interrupt-time handling of SETUP and custom handling of USB protocol. ! Debugged and fixed transfer problems in Atmel's USB firmware. In some cases, transfer routines were re-written. This included the characterization and work-around of several undocumented problems in the Atmel hardware. ! Purchased a USB protocol analyzer from International Test Instruments and used it repeatedly to debug USB initialization and timing issues. ! Wrote extensive functional, limit and destructive USB transport tests, including data checksumming, in firmware and on client side (MacOS). Exercised these in long, randomized runs with logging until they could run indefinitely without failure. ! Designed a C function dispatch/patching scheme for firmware code, and wrote assembly-language stub macros and other compiler macros to support it. Wrote macros for defining fixed-address globals to support interoperability with future patches. Converted hundreds of firmware routines to this scheme using sed. Added high- security patch installation code to firmware. ! Added debug logging to USB protocol-handling code to assist in diagnosing real-time initialization/sleep issues, using the on-board timer to provide event time-stamping. ! Stripped out unused toolbox routines and interrupt handlers from Atmel firmware. ! Used advanced features of the IAR EWARM IDE, including emulator macros for dumping my event log to the host, custom stack and data segment definitions, exclusion of "unsafe" locations from the memory layout (due to an Atmel firmware bug), and a custom fixed-address area for C globals. ! Reviewed NIST SHA-3 candidate algorithms and adapted selected ones to run under my test bed for evaluation of memory/speed performance in consideration for use in iLok2. ! Ported the PACE-developed Authex token-language for use in iLok2 and did full security review to find any vulnerabilities to being crashed by a program. ! Worked with Apple DTS to resolve USB issues we discovered. ! Hand-programmed and verified the first 2000 iLok2 production units.

Provided engineering-level support to PACE developers adopting Fusion Hybrid, PACE's new interim technology for software copy-protection using source-level injections of license checks and checksumming code. This sophisticated suite of tools for VS and ran at multiple stages during a build and was controlled by many selectable parameters. The only other individuals at PACE familiar with FH were the President and one other engineer. ! Was the sole first-contact support engineer for all PACE developers using FH. ! Achieved excellent customer satisfaction, according to feedback given to the President and Business Manager. ! Maintained and enhanced the external and internal development tools in the FH suite for Xcode and VS2005/2008 (32- and 64-bit). These consisted of multiple layers of scripts and compiled tools which hooked into Xcode and VS project builds. ! Diagnosed customers' build and runtime problems and crashes, often related to the C++ STL. ! Implemented support for having 2 major revisions of FH concurrently installed under Xcode, and for easily choosing which one to use in a given project. ! Assisted customers with security design and performance tuning. ! Maintained, re-organized and contributed to all customer documentation on FH, including tutorials and guides, through multiple architectural changes to the toolset. ! Hand-processed hundreds of individual customer builds before all tools were available to them, and inspected each resulting log for problems. ! Participated in design meetings with PACE partners providing technology in FH. ! Wrote technical communications to customers and partners, including a comprehensive technical description of FH. ! Investigated migration of SDK to Xcode 4 and LLVM-GCC (including MacOS 10.7 compatibility) and documented necessary changes to existing projects. ! Updated PACE Xcode plugins for Xcode 4 compatibility and to support PACE's future Eden architecture. ! Occasionally fielded end-user issues with customer products built with FH protection. ! In anticipation of leaving PACE, authored a wiki article for handling common support issues, including respective symptom charts for Xcode and VS. Researched my entire support ticket history and populated the wiki with this info.

Took over responsibility for Mac installers for existing and new products, including direct-customer and end-user products. Authored metapackages and subpackages using the Iceberg and Packages tools. ! Maintained Xcode makefile project to build PACE installers and DMGs. ! Managed installation of PACE's MacOS daemon, including plist and socket configuration and the use of the launchctl interface from installer scripts. ! Revised preflight and postflight bash scripts for PACE's various install components, including InstallaitonCheck scripts in some installers. ! Built subpackages with documentation for inclusion by PACE developers in their installers. ! Diagnosed installer issues encountered by our partners, developers and end-users. ! Converted PACE's external MacOS products to flat-package installers using the Packages tool.

Contributed to various client-side projects for PACE's upcoming Eden products and to support the iLok2. I worked extensively in Xcode and VS 2005/2008 within PACE's highly mature dual-platform code base. Most coding was done in C++ with heavy use of STL and some use of Boost. ! Tools included SmartSVN, Hudson, FogBugz, SWIG. ! Made changes to PACE's USB interface code base for iLok2. ! Revised PACE's internal tools and diagnostics for iLok2, including code to carry out secure PACE protocols. ! Made various code changes to support the new Eden architecture. ! Investigated user-reported crash logs for MacOS components. ! Wrote and maintained various scripts in Python, bash, BAT and Perl. ! Added automated unit tests for utilities I had added to the PACE code base. ! Briefly maintained PACE's VS plugin for Fusion Hybrid in C#, including revisions for Eden. iPhone App Developer – Self-Employed (August 2008 to April 2009)

Learned iOS and developed ContactGo, a sophisticated contact-sharing app that was released in April, 2009 by MonteWare. Working alone, I designed and implemented the following features: ! User can choose which fields to send for each contact ! User controls which fields are selected by default ! Easily send all contacts ! Remembers contact selections and settings from the previous use ! User can select or deselect contacts by group ! "At Least One" feature, which allows the user to set a preferred phone number or address, like "mobile," but will substitute another one for contacts that don't have the preferred choice ! Contacts are sorted according to the system setting ! Supports inclusion of company, department, position, nickname, phonetic name, related names, birthday, special dates, note ! Built-in help sheet ! Can include the country in the address always, never or only if it is foreign ! “Easter Eggs” that the user can “discover” by using some features a certain number of times -- the discovery of each ivory, silver or gold star is accompanied by a simple animation and sound and the About Box shows the number of stars of each type that the user has found.

Developed the first iPhone prototype of MessagEase as a favor to its inventor. I ported code from his JavaScript implementation and created a demo app which could be used to enter text for inclusion in the body of an email message or to be sent to Safari as a URL. The MessagEase key entry worked perfectly.

Palm (PalmOne) – PalmOS Smart Phone SW (April 2005 to April 2006)

Maintained a zealous commitment to quality and to the user experience despite an environment which emphasized achievement of metrics and short-term goals. ! Made general bug fixes and enhancements as part of a small team working on the final Treo 650 SW update for Cingular/ATT. ! Made general system fixes for the final Treo 650 rest-of-world GSM SW update. ! Substantially revised the Treo Date/Time Panel for the 700p and 680p, most notably to allow to user to specify whether he wants the time zone to be set from the network. Also, implemented a revised UI in 5 languages for the final Verizon update. ! Devised and implemented a new method for remembering when the current time was set from the network, and drove changes to other system modules to support it. ! Revised the Treo “Welcome” App to support factory touchscreen calibration and keyboard type selection, automatic activation of the phone on first startup and retrieval of carrier-developed defaults (Varnish data). ! Implemented a new UI for the Treo Language Picker and added support for up to 10 choices.

Apple Computer - Diagnostics (March 2002 to March 2003)

Implemented and delivered server-side tcshell scripts for the first XServe RAID product to invoke diagnostics and retrieve, interpret and report results. This was the only diagnostics project owned by this team which could not leverage any previous work and had to be built from scratch. ! Attended hardware team meetings and conference calls with partner in Taiwan. ! Named co-inventor on US patent #7213103 “Accessing data storage systems without waiting for read errors” ! Supported factory test engineers at Apple's Sacramento site. ! Participated in production ramp tasks.

Studied PowerPC processor designs in anticipation of transition to the Processor Validation Team.

Firepad - Programmer (September 2000 to July 2001)

Added features to the FireViewer imaging engine and file format, such as 8-bit indexed color, 16-bit RGB and large image support, which made FireViewer the first Palm product to allow viewing of images of arbitrary size with no loading from storage. Added support for multiple compression formats.

Continued other work begun as a consultant (see below), including application debugging and the addition of Palm VII wireless support. Developed, refined and documented an API to allow developers to use FireViewer's imaging and network facilities from other Palm applications and from PQA's. Produced an SDK to support this API, including interface libraries, sample application code and formal documentation.

Software Consultant (September 1996 to August 2000)

Ported Firepad's FireViewer application for PalmOS from Pila Assembler to MPW Asm and then to CodeWarrior C. Working as the sole engineer, added features to the product through several releases, and continued as part of a 7-engineer development team. Modified desktop user image conversion utility implemented in to support new image formats I defined.

Wrote several revisions of custom floppy driver modifications to implement copy protection for PACE Anti-Piracy. Ported a strong encryption algorithm from 6805 to a Cyrix microcontroller for a USB dongle. Later ported the same algorithm to the Motorola 56000 DSP microprocessor, and finished early and under budget.

Open Firmware Consultant (September 1995 to July 1999)

Developed and debugged glue code in PowerPC assembly to allow compiled code to be run under an Open Firmware FCode driver, and to call Open Firmware services. Wrote a PEF container loader in FCode. This project allowed Advanced System Products to leverage their private C libraries in developing an Open Firmware boot driver for their SCSI cards.

Consulted for 14 months at FirePower, Inc., Implemented glue and a console driver to allow video cards to be initialized on a PowerPC platform via BIOS emulation under Open Firmware. Served as Open Firmware engineer for their CHRP laptop project (which was cancelled by Apple 9/97).

Wrote 2300 lines of Open Firmware FCode to support a bus device and two types of bootable expansion devices for Apple's Hooper PowerBook. Authored a Code Description document and a Testing Issues document for this project, and provided integration support to Apple.

Provided miscellaneous Open Firmware support to Apple's Developer Tech Support organization, including resolving developer problems, developing training material and teaching support engineers.

Completed other small Open Firmware projects for various clients.

Apple Computer – PowerPC Desktop ROM Engineer (July 1993 to July 1995)

Acted as integrator and technical liaison for the Open Firmware component, responsible for build issues and general Open Firmware support for the ROM team. Established and maintained Apple's Open Firmware source base. Participated in discussion/resolution of PCI and Open Firmware technical issues. Provided technical support to third-party developers directly and through Apple DTS. Authored documentation and simple tools for the PCI Driver Development Kit (DDK).

Modified the system floppy disk driver to use vectorized routines to access DMA hardware, and to allow for flexibility in the mapping of device registers; wrote DMA access routines for the PCI Power Mac family.

Performed general bug analysis and resolution for system software.

Authored general internal utilities, including a configuration display tool and a performance measurement application.

Apple Computer - Modular Mac Diagnostics (April 1992 to July 1993)

Designed, implemented, debugged and integrated diagnostics in C for several products. Performed extensive debugging using low-level software debugger, logic analyzer, oscilloscope.

Apple Computer - Apple II System Software (July 1988 to April 1992)

ArchiverGS - Conceived, designed, and implemented a full-featured backup utility as a desktop application for the Apple IIgs the most unusual and challenging feature was a custom 3.5” floppy driver to write block data during format, effectively tripling writing speed.

DOS 3.3 File System Translator for GS/OS

High-Speed SCSI Card Utilities - Revised utilities for DMA SCSI card on accelerated schedule.

ProDOS File System Translator for GS/OS - Worked on enhancements and bug fixes on primary file system module for GS/OS.

ProDOS 8 - Responsible for maintaining Apple's oldest shipping . Implemented several fixes in very tight code without introducing a single new bug.