Resume

MICHAEL A. MORETTI


OBJECTIVE

I am currently seeking employment as a Principal/Senior Firmware Engineer working in C on embedded MCU applications.


SUMMARY

I’m a firmware/software engineer with 25+ years commercial experience in software development. I started programming at age 12 in Basic and Z80 Assembly and have been in various software related roles ever since, including embedded software, mobile phone software, language and compiler design, firmware QA, web development, training and instructional design, technical support, software architecture, release management, consulting, system administration, entrepreneurial roles, etc, in both full- and part-time permanent and contract capacities and have a well-rounded background.


SKILLS

Languages:   C, C++, Python, etc.
Technologies:     STM32, PSoC4, Embedded Linux, FreeRTOS, Git/SVN
Systems:        Linux, Windows


EXPERIENCE

AndPlus, Southborough, Massachusetts
Senior Firmware Engineer (March 2019 – September 2019)

  • Work in a tight-knit team with two other senior firmware engineers on various contract projects for AndPlus clients. Develop and test firmware functionality for securing customer’s Zigbee RF devices and preventing replay attacks.

Righthand Robotics, Inc., Somerville, Massachusetts
Senior Firmware Engineer (June 2018 – March 2019)

  • Solely responsible for development of next generation of Righthand Robotic’s robotic gripper firmware in C on STM32. Developed drivers and application code for bare metal motor control (PID), sensors, and inter-board (RS485 UART with DMA) and board-to-PC communications (UDP via LWIP) using FreeRTOS, ST’s HAL and LL. Worked closely with electrical, mechanical, and software engineers to ensure the hardware, firmware and software would work together seamlessly without change to the current working software API.

Bose Corporation, Framingham, Massachusetts
Principal Software Engineer (February 2014 – June 2018)

  • Responsible for development of Internet Speaker software and firmware in C and C++ on embedded Linux, STM32 FreeRTOS (HAL and StdPeriph) and Cypress PSoC4.
  • Member of a small initial team to start up a new set of Internet/wireless speaker products. Helped kernel team to build toolchain, linux and bootable images for QualComm ARM Cortex A53 embedded linux, based on OpenEmbedded linux.  Ported 80% of the existing codebase to the new system, refactoring the build system and codebase in the process to support multiple flavors of linux/processors more easily.  Redesigned the software update architecture to use Android-based recovery (for the kernel/rootfs) and built-in linux package management (opkg) for the applications, to make software update more componentalized (it was previously completely monolithic).  Build/rebuild previously used and new 3rd-party open source and commercial libraries for the new system.  Work cross-team with electrical, mechanical, user-experience and other software engineers to bring up the new product hardware/software/firmware.  Research and port open source SPI LCD linux driver to use in the product.  Work with UI to create multiple revisions of a “demo” unit of how the product would operate and interact, using a Raspberry PI, LCD, and other hardware and a current Bose product (for showing SoundTouch functionality).  Work closely with electrical engineering and user experience to develop capacitive touch and LED controller hardware/firmware on PSoC4 and STM32 for user interaction.  Implement software update of the PSoC firmware.  Support the local manufacturing line, with mechanical, audio, and electrical engineers for the initial set of development prototypes for the product, including writing system tests in python and other scripts to perform software update at end of line.  Tech lead the manufacturing and diagnostics software for one of the two products based on the new platform.
  • Loaned out to the Audio for Video team to help with linux app development for the Lifestyle 650 system and SoundTouch 300 soundbar. A month later, the team had more than enough linux resources and not enough linux work but were short on STM32 developers.  Learned STM32/FreeRTOS development to help out with the workload.  Implemented software update for multiple components in the system.  Wrote RFID and NFC chip drivers.  Implemented RFID functionality to provide “last-minute” country, region and other regulatory data to save money in manufacturing.  Mentor and oversee an intern on the project.  Fix issues in the custom STM32 bootloader.
  • Member of the Wireless Speaker group, developing software in C++ on embedded Linux on ARM Cortex A8 for Bose SoundTouch 10, 20 and 30 and Wave SoundTouch system. Developed software for device discovery using ZeroConf/Bonjour/MDNS and SSDP/UPnP.  Refactored WebSocket layer to incorporate new versions of the OpenSource libwebsockets library.  Investigated and found solutions for problems with stack traces being unusable when apps crash; rebuilt the TI (OpenEmbedded) toolchain from scratch to determine why and found it was a compiler flag issue on libc; am still the go-to person for debugging unusable core dumps.  Wrote scripts to track down object dependencies in our monolithic application set to determine the best way to partition them into shared libraries to save memory.  Continually take on work nobody else wants to do, including taking responsiblity over parts of the app that aren’t product/production ready and making them so.  Worked with the cloud software group to help implement data collection of speaker usage.  Implemented software/firmware update for the Lifestyle 525 Series III product.  Became the 2nd knowledge expert on SoundTouch products software update process/system.

Beechwoods Software, Inc., Boston, Massachusetts
Principal Software Engineer (July 2011 – February 2014)

  • Responsible for development of cable set top box software in C, C++ and Java on embedded Linux, for Beechwoods’ client, DirecTV.
  • Assisted in bring-up of two new low-cost cable set top boxes for the Brazil and Latin America markets. Configured the buildroot, kernel, etc for the new boxes.  Developed an initramfs script and associated C applications and kernel modules for flashing the Linux rootfs via UBI to NAND (the normal bootloader did not support UBI flashing) and displaying boot/flash progress via the low-level graphics layer.  Port the DirecTV middleware stack to the new boxes and fix bugs in it relating to the new hardware.
  • Redesigned parts of the software stack to allow the newest DVR boxes to continue to function upon hard disk failure, in a slightly less capable mode. Changes included kernel recognition of extra SSD JFFS partition, runtime checks for disk failure via a watchdog and graceful failing/rebooting, fixing local and remote video client buffering and thread starvation issues, and automatically partitioning SSD JFFS filesystem to replace hard disk upon boot.

Jaybridge Robotics, Inc., Cambridge, Massachusetts
Senior Software Engineer (January 2012 – July 2012)

  • Develop and maintain software in C++ and Python that autonomously drives tractors in the field to aid in harvesting crops. Work on a tightly-knit team designing algorithms for obstacle detection and dodging, vehicle safety, tractor simulation, and other functions of autonomous vehicle operation.

Nokia, Burlington, Massachusetts
Principal Software Engineer (June 2008 – July 2011)

  • Member of the Browser team, responsible for developing new features and providing maintainance for Nokia’s WebKit/Qt based HTML5 browser for S60 mobile phones. Implemented functionality for gesture handling and virtual keyboard input.  Worked directly with Qt team member in Finland to help implement and fix problems in Qt/S60 split screen virtual keyboard support.  Ported the initial version of the browser to Maemo (N900) phones.  Fix bugs in WebKit and submit them back to the open source community.  A “go-to” person for many members of my team and other teams, including the release engineering and QA teams.

Massachusetts Institute of Technology, Cambridge, Massachusetts
Senior Software Engineer (October 2004 – June 2008)

  • In addition to my normal duties, provided part-time volunteer software engineering leadership as the Software Team Lead for the Mars Gravity Biosatellite program (www.marsgravity.org). Mentored and led students on the team in writing requirements and specifications, and designing, developing and testing real-time embedded software for the payload system, which needs to keep 15 mice alive in low Earth orbit for 35 days.
  • As a member of the Infrastructure Software Development and Architecture (ISDA) department, developed and maintained course management software, Stellar (http://stellar.mit.edu), used by MIT’s faculty and students for online access to course materials, etc, for courses at MIT.
  • Assisted team members and others, providing support and mentoring for programming, IDE, system administration, software architecture, etc.
  • Developed MIT administrative enterprise applications for the InsideMIT portal.

Mordent Software, Waltham, Massachusetts
Sole Proprietor (Consultant) (August 1994 – September 2003)

  • Provided software engineering and development services for various companies in the Boston area.

Many other companies/organizations, Boston Area, Massachusetts
Software Engineer (June 1990 – )

  • Experience in various languages and technologies removed for brevity’s sake and because it’s no longer relevant.

EDUCATION

University of Massachusetts, Lowell, Massachusetts
Completed half requirements towards Master of Science in Computer Science (1993)
Courses: Graphics, Software Engineering, Algorithms, Operating Systems

Northeastern University, Boston, Massachusetts
Bachelor of Science in Computer Science, June 1990
Courses: Graphics, Software Engineering, Compiler Design, Operating Systems


INTERESTS

Music (analog/modular synthesizers, cello, button accordion, banjo, etc), Electronics (Arduino, STM32, analog synthesizer design, etc), Metalsmithing (jewelry and forging steel), Strategic board-gaming, Canoeing, Community volunteering, Learning new things!


References will be furnished upon request.