MICHAEL A. MORETTI
I am currently seeking employment as a principal software engineer working in C or C++ in embedded applications.
I’m a software engineer with over 27 years commercial experience in software development, 37+ years overall. 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.
Languages: C, C++, Python, Java, Perl, SQL, etc.
Technologies: STM32, PSoC4, Embedded Linux, FreeRTOS, Qt, WebKit, SVN/Git/Mercurial
Systems: Linux, Windows, Solaris, Oracle, MySQL
Bose Corporation, Framingham, Massachusetts
Principal Software Engineer (February 2014 – Present)
- 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.
- Member of the Ovi.com team, responsible for developing the Ovi Web 2.0 portal site in Java using Spring 2.5, SpringMVC, Velocity, jQuery, YahooUI, Oracle, and other technologies. Assist and mentor other team members in developing with Subversion, Eclipse, Java, Spring, etc. Performed initial release engineering and system administration for the development and build servers for the project as it was being moved in-house.
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 full-time member of the Content and Collaboration Services team 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, homework grading, class forums, wikis etc, for courses at MIT. Used Spring, Struts, Freemarker, Hibernate, JPA, and other J2EE technologies in implementation of Stellar.
- Assisted other developers on the team and in the department, providing support and mentoring for programming, IDE use, system administration, software architecture, etc.
- Developed MIT administrative enterprise web applications and web services using J2EE, Struts, Spring, Hibernate, Axis and SAP/JCO for the Student and Administrative Systems (SAIS) department as a member of the InsideMIT Design and Development Team (IDD).
- Installed and configured various portal platforms, including uPortal and Oracle Portal, to prototype the InsideMIT administrative intranet portal. Developed WSRP/JSR-168 portlets for the InsideMIT portal, for various administrative applications, including Commuting (parking/T-pass information), MIT’s events calendar, etc.
- Developed a framework/skeleton based on Struts, Spring, Hibernate and SAP/JCO to allow developers to rapidly deliver new applications in a consistent and easy to maintain manner.
- Provided software architecture guidance and reviews, assuring that applications were developed to IDD’s and MIT’s standard J2EE coding practices, and that they meet load and stability requirements.
- Provided production support and system administration, including bug fixes and database support, for several of SAIS’ Java-based SAP and legacy non-SAP C, Perl and Java web applications and Oracle databases.
- Responsible for consolidating multiple legacy applications, in various languages running on separate servers, onto a more managable and scalable set of shared systems. Created a common development environment and web hosting platform, including Apache, Tomcat, Oracle Application server and Subversion, for these apps and for future apps, to make maintanence and new development more efficient.
- Installed and maintained the Lenya content management system that IS&T used for content authoring, including help and manuals for the SAIS enterprise applications, etc.
Shoebuy.com, Boston, Massachusetts
Senior Software Engineer (September 2003 – October 2004)
- Lead engineer responsible for all projects that created new revenue streams for the company, including partnerships with other retailers like Amazon.com, B2B e-commerce, etc. Developed software to interface with partners and external B2B systems in Java Servlets, JSP, Perl and Oracle on Solaris. Designed and implemented a B2B site architecture for easy rollout of partner sites, using templatized JSP fragments and taglibs.
Commonwealth of Massachusetts, Boston, Massachusetts
Contract Content Management Software Engineer (September 2002 – August 2003)
- Worked in a small team as the lead architect and software engineer to redevelop the Mass.gov portal in Java, Perl, XML and Oracle and using Interwoven’s Teamsite and Epicentric’s Portal software. Responsible for administration of the entire Commonwealth’s Teamsite content management system and provided Solaris system administration for the servers that run it.
Mordent Software, Waltham, Massachusetts
Sole Proprietor (Internet Consultant) (August 1994 – September 2003)
- Provided web application development and other services such as release engineering and system administration for various businesses in the Boston area, including:a web front end to Harvard Business School’s CRSP and COMPUSTAT stock information databases in Perl;Survey software for Market Perspectives in C and Java using VisualParse++ to develop a domain specific language for survey design;Job search in Perl using MySQL for Kenda, a recruiting firm;network storage server software in Perl for Applianceware, Inc;a content export plugin in Java for Refresh Software’s content management software, SiteRefresh;a system to deliver trademark reports online in PDF format using C and Perl for Thomson & Thomson, Inc.;e-commerce software for NECX’ computer store in C and Sybase on Solaris;compiler software extensions to Harmonix Inc.’s SFL parallel assembly language compiler to add C-like syntax elements, using Bison/Flex in C++ and C.
- Designed, hosted and maintained dynamic web sites for a number of small companies in the Boston area, including The Boston Early Music Festival, The von Huene Workshop, Capriccio Stravagante, the Cambridge Society for Early Music, Three Apples Storytelling Festival, Dogwatch, and Sedona Software.
- Provided system administration services including Beowulf cluster and MPI configuration with Linux for JuniusTech, Inc. a nanotech company, and ProfitLogic, Inc. a retail price optimization company.
- Provided Oracle DBA and release engineering services to Flashpoint, Inc. a web-based photo sharing software company.
- Founded, developed and managed the XMLOatmeal open source project, a tool that provides automatic serialization of Java classes to XML, using Java, JavaCC, Antlr and SAX/Xerces.
- Contributed to articles about web-site development and maintenance in PC Week (Feb 5 and May 20, 1996 issues). Developed survey software in Perl for PC Week.
New England Technology Center, Inc., Marlborough, Massachusetts
Instructional Designer/Instructor (February 2001 – April 2002)
- Developed courseware for Interwoven TeamSite 4. Responsibilities included rapidly learning and understanding product functionality, determining course objectives and content, developing relevant use cases for classroom exercises, and preparing classroom install scripts in Perl.
80/20 Technologies, Inc., Arlington, Massachusetts
VP of Software Engineering (July 1999 – September 2000)
- Founded the company with three others. Responsible for the entire engineering side of the business. Developed web-based personalized coupon service in Perl (mod_perl) using Oracle (PL/SQL) on Linux. Contributed bug fixes to DBD::Oracle to the open source community.
Object House, Inc., Wellesley, Massachusetts
Software Engineer (January 1994 – February 1995)
- Founded company with two colleagues to develop Porfolio Management Software in C++ and POET (OODB). Deployed the application and a custom release management system to Jardine Fleming, a Hong Kong bank.
Advanced Visual Systems, Inc., Waltham, Massachusetts
Software Engineer (April 1993 – December 1993)
- Developed a UI for and API between AVS 3D visualization software and Kingfisher 2D graphing/plotting software to add 2D capabilities to AVS. Also responsible for maintenance of the VMS versions of AVS.
The MathWorks, Inc., Natick, Massachusetts
Software Engineer (August 1990 – April 1993)
- Worked in a team of four to design and implement a platform-independent graphics architecture for Matlab v4 in C. Researched, designed, and implemented algorithms for surface/quad-mesh plots, interpolated shading, texture-mapping, hidden-surface removal, 3D transformations, and color/monochrome dithering. Responsible for release engineering and tool configuration for Matlab on multiple platforms. Ported many GNU utils to VMS. Assisted the technical support team daily with all aspects of Matlab.
Northeastern University, Boston, Massachusetts
Systems Programmer (Part-time) (January 1987 – August 1990)
- Performed system administration and security monitoring on the university’s VMS systems.
KAINOS Software, Ltd, Belfast, Northern Ireland
Software Engineer (Co-op) (June 1989 – December 1989)
- Developed and maintained DINIS(e), an application for designing and planning electric and gas networks for cities and towns in England and Wales, in C on SunOS.
General Electric, Pittsfield, Massachusetts
Software Engineer/QA Engineer (Co-op 18 months) (June 1986 – December 1988)
- Developed embedded software in C and Assembly on VMS and proprietary O/Ses for various Trident II Submarine subsystems. Developed QA tests using Assembly.
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
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.