Monte Benaresh Resume
Total Page:16
File Type:pdf, Size:1020Kb
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 Firmware 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 device driver 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 interpreter 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 Xcode 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