Mike Puckett

Principle Firmware Engineer at Sensel
  • Claim this Profile
Contact Information
us****@****om
(386) 825-5501
Location
San Francisco Bay Area, US

Topline Score

Topline score feature will be out soon.

Bio

Generated by
Topline AI

5.0

/5.0
/ Based on 2 ratings
  • (2)
  • (0)
  • (0)
  • (0)
  • (0)

Filter reviews by:

Jack Wei

Mike is an extremely capable Software Engineer who has a great understanding of both software and hardware. He has always impressed me with his attention to detail, innovative ideas, grasp of the big picture and his tireless work. I look forward to the day I can work with Mike again.

Marshall Zerbo

I worked with Mike at Apple & was always extremely impressed. I hope to be able to work with him again in the future. Most memorable about Mike: Extreme attention to detail; Highly organized; Ability to easily explain complex topics; Tireless energy; Clever ideas & novel solutions to complex problems; Extremely thorough; Motivates others through actions not just words; Always helpful.

You need to have a working account to view this content.
You need to have a working account to view this content.

Experience

    • United States
    • Computer Hardware Manufacturing
    • 1 - 100 Employee
    • Principle Firmware Engineer
      • Sep 2022 - Present

    • United States
    • Wellness and Fitness Services
    • Software Engineer
      • Jul 2018 - May 2022

      UDP Labs developed a platform for non-invasive, no-touch high-resolution sensors for use in biomedical businesses, such as remote patient monitoring and aging in place. For this platform, I did the following:* Wrote the Linux kernel driver that read raw data from the sensors and the user-space daemon that read data from the driver and published it.* Wrote the MQTT device-side pub/sub client, using a hierarchical topics model; the hierarchy was driven by various on-device entities, each having its own top-level domain in the hierarchy.* Wrote the intra-device pub/sub library that ferried data both internally to various on-device entities as well as to the MQTT client. This library was based on NNG.* Wrote the user-space daemon whose job it was to provide a common wrapper for the algorithm team, thereby abstracting the algorithms from the specifics of our pub/sub model.* Wrote the software that hooked into the Linux RFS at boot to get the device onto the internet if it wasn't, apply any needed software or configuration updates from our server, and then run our environment. * The initial hardware we developed was for Raspberry Pi. Our goal was to move away from the PiOS, using something along the lines of Yocto. Because we were still using the PiOS, our software update mechanism also modified it in ways we needed (such as adding our own logging facility). The hardware we developed worked on both the Pi3B+ as well as the Pi4B. Moving to Yocto would allow us to move to other hardware as well.* On the server side, ported our algorithm mechanism to the algorithms running there.* Using our pub/sub model as well as our algorithm abstraction mechanism, added support for a demo that would respond to triggers for various IoT device, such as lights and switches.* For testing/verification, wrote software that had the device request a range of raw data from the server and then play it back as though it were being run again live.

    • United States
    • Wellness and Fitness Services
    • 1 - 100 Employee
    • Device Software Engineering Manager
      • Sep 2015 - Jun 2018

      Once BAM Labs, Inc. (see below), was acquired by Sleep Number (SN), we were reorganized, and I managed the team working on the device software.During this time, we produced low-cost versions of our devices, and we made it so that the same software ran on both the original and low-cost versions, simplifying the update process.We also created an entirely different product that no longer used a pump for changing one's SN but instead used presence/absence to lower/raise the SN. While it was physically different from the original devices, it was virtually identical from a software point of view and we were able to use the same software bundle for it.The final device I helped guide to production involved physically combining our devices. They were still logically connected via USB to make porting the software simpler. With this product, we were also able to add a few new software features. For example, we added a feature known as Responsive Air. This allowed us to monitor the bed's pressure and, when it changed, it could restore it, thereby maintaining a more constant pressure for sleep. We made this a preference that one could enable or not along with others, such as turning off/on the underbed lighting automatically due to presence/absence as well having the footwarming pads turn on BEFORE one gets into bed, on a schedule, so they'd be warm by the time one got into bed. The footwarming pads were a new hardware feature with this bed.We worked very closely with various teams across the company. This involved two different factories, the hardware team, mobile app team, server team, algorithm team, QA team, as well as remote members of our team. We also helped the customer support, home delivery, and devops teams.By the time I left SN, we were supporting 330K beds of all types, from the originals to the very latest, all running the same software. The 330K beds represented approximately 627K customers (i.e., not all beds had 2 sleepers but most did).

    • Device Software Engineering Lead
      • Dec 2012 - Sep 2015

      As part of a small team, ported BAM's medical-oriented OEM'd device to a custom device designed to operate Sleep Number (SN) beds as well as collect biomedical data for use in a proprietary algorithm that generated bed presence/absence, heart rate, and breathing rate.The custom device was composed of two parts--the Sleep Expert (SE) and the Smart Pump (SP). The SE was an embedded Linux platform using WiFi to connect to a server for storing the data it collected. The SP was connected to the SE via USB and housed sensors that collected the data. That data was then sent to the SE, which then either stored the data (up to 4 hours worth if it was offline) or sent it to the server.The SP also housed the BLE and 802.15.4 radios used for remotely controlling aspects of the bed, like the SN, the head/foot levels, underbed lighting, and massage. BLE was for use by a mobile app which, in addition to controlling the bed locally, could remotely contact the server to retrieve information about one's sleep. The 802.15.4 radio was used for physical remotes as well as for communication with the bed's foundation (articulation, lights, and massage) controller.The SE housed the firmware images for the SP as well as for other peripherals (physical remotes and foundation controller), and would contact the server whenever it or any of the SP's software needed updating. The SP and its peripherals were controlled by an RTOS known as MQX. BLE was mostly TI but with custom changes that allowed it to communicate with MQX over a UART. The SE contained the firmware image for updating the BLE stack, too.We also worked with the factory that manufactured the SE and SP. To help with this, as well as to support customers in the field, we created a mechanism to remotely access the SE.In addition to adult beds, we also created a version of the SP for child beds. The changes were to magnify the sensors for children as they are smaller and lighter than adults.

    • United States
    • Software Development
    • 700 & Above Employee
    • Senior Software Engineer
      • Mar 2006 - Nov 2012

      Wrote Linux-based software for Amazon Kindle:* Updated bootloader (u-boot) to support a custom OneNAND (Flash) partition scheme for updates to the device's software, including bad-block management and support for non-volatile environment variables.* Updated u-boot so that the graphics controller could be used to put up the device's boot screen as well as for using it to do primitive customer diagnostics on screen.* Updated u-boot to support primitive power management.* Updated u-boot to support a custom RAM-disked based booting and software-update scheme for both software developers and for general users.* Updated u-boot and kernel to support a structured method of communicating between them in a shared RAM space.* Added a display driver to the kernel, and provided power management screens in the driver for sleep, wake, powering off, powering on, rebooting, and USB drive mode.* Simulated alpha-blending and non-rectangular regional updating in the display driver for a high-level environment that couldn't respond quickly enough.* Updated the boot scripts to support updating the various firmware the device uses.For the Amazon Kindle 2, Amazon Kindle 3, and Amazon Kindle DX Series:* Rewrote the display driver as a plug-in architecture allowing various graphics controllers to be used without affecting the high-level software, including adding backwards compatibility to it for the original Kindle.* Wrote the plug-in modules for the Kindle 2, Kindle 3, and Kindle DX Series.* Added support for display rotation in the middleware between the high-level framework and the low-level display driver.* Migrated the graphics environment from 4 shades of gray to 16.* Continued to pitch in to support the rest of the OS as necessary, especially with respect to helping the factory team get various devices builds through the manufacturing process.After working on Kindle, worked in the Emerging Technologies group on a variety of early-concept items.

    • Senior Software Engineer
      • Oct 2004 - Jan 2006

      Wrote embedded software & PC/Mac tools for thin, rear projection TV (RPTV):* CES 2005--Programmed Silicon Optix (SO) scaler to correct image from RPTV.* CES 2006--Began using SO's embedded design (Nucleus PLUS/microITRON RTOS & Cygwin tool chain).* Abandoned SO design in favor of own ASIC. Supported ASIC with simulation on a Mac in C: CodeWarrior/Xcode. OpenGL for graphics. Ported to PC: CodeWarrior/Visual Studio.* Built a VPN so that remote partner could share only prototype. Added webcam, remote reboot, and VNC for debug.* Built PCs for ASIC simulation and partner software.* Learned PICBasic/PICC/MPLab for RPTV's controller.* Worked with China team to develop US/China software engineering and QA processes. VoIP-conferenced China to reduce cost.* Once partner's code (in Visual Studio C++) acquired, began refactoring for manufacturing. Idea: OEMs to replace modules as necessary. Used Visual SourceSafe for source control.

    • United States
    • Computers and Electronics Manufacturing
    • 700 & Above Employee
    • CPU Software Manager
      • Jun 2001 - Jun 2004

      CPU Software, PowerMac TeamResponsible for all software/firmware needed to ship PowerMacs:* When supporting Mac OS 9/X dual-booting, ensured both OSs completed & worked together.* Ensured that ancillary software, like factory diagnostics, was available at production.* Coordinated activities of both internal & external software teams.* Drove both hardware & software bug reviews to focus tasks.* Attended daily status calls with teams around the world, especially manufacturers.* Worked closely with, and often directed activities of, QA.* Managed distribution of prototypes within CPU Software.* Set up & monitored CPUs in lab for engineering, QA, and automated tests. Regularly monitored tests, especially when working to resolve factory issues.* Worked with various teams (e.g., Product Marketing, Customer Care) to ensure software met requirements.* Reported status to executives.

    • Senior Software Engineer
      • May 2000 - May 2001

      CPU Software, PowerBook TeamWorked with Mac OS 9 software engineering team to resolve customer-satisfaction issues reported against PowerBooks & iBooks. Added support to Mac OS 9 for Titanium G4 PowerBook. Substantially rewrote Mac OS 9 Power Manager for entire line of Macs (iBook, iMac, PowerBook, Power Mac) to meet year 2000 Energy Star compliance.

    • United States
    • Software Development
    • 300 - 400 Employee
    • Senior Software Engineer
      • Jun 1999 - Apr 2000

      Palm OS Platform Engineering TeamCo-Tech Lead for Palm OS 3.5, Palm's first platform release of its OS. This included rewriting parts of the OS and various built-in applications to support 8-bit color instead of 1-bit black & white. Worked with Palm's own in-house and external QA organizations to resolve defects in the OS on a variety of Palm devices (Palm III, Palm V, Palm VII, and Palm IIIc). Coordinated the 3.5 release among various device groups within Palm, resolving all problems associated with shipping a particular group's device on schedule.

    • United States
    • Computers and Electronics Manufacturing
    • 700 & Above Employee
    • Senior Software Engineer
      • May 1997 - May 1999

      Audio/Video Technologies GroupHardware DVD Decoder Lead for Apple DVD Decoder, versions 1.0 through 1.2 (Mac OS 8.1, 8.5, and 8.6); also, did initial work for version 1.3 (Mac OS 9). Worked with QuickTime's Apple DVD Player team to develop plug-in-style architecture for various hardware DVD decoders implemented for PowerBook G3 Series and Desktop G3 Series CPUs. Worked closely with the third-party companies (ATI and C-Cube) that supplied the hardware DVD decoders to Apple. Led investigation into whether Apple should either buy a third-party solution to implement its software-based DVD decoder or to implement such a solution itself. Traveled to various companies working on software-based decoders, including a company in Germany, to get their software building on Macs.

    • Senior Software Engineer
      • Feb 1996 - Apr 1997

      PowerBook Group* PowerBook Software Continuation Engineering Lead for Mac OS 8. Rolled PowerBook-specific features and bug fixes from various split-off source-bases back into main Mac OS 8 sources. Implemented on-screen display button panels for LCD brightness & contrast and for sound volume & mute for all PowerBooks through the original PowerBook G3 Series.* CPU System Disk Project Lead for the PowerBook 2400 & 3400 Series CPUs (Mac OS 7.6 and 7.6.1). Brought together all the software teams around Apple necessary to integrate Apple's PCI-based technologies into PowerBook line.

    • Senior Software Engineer
      • Mar 1995 - Jan 1996

      Apple Video Products GroupCPU ROM Project Lead for Apple Set Top Box. Created self-contained Mac OS System 7.1-based diskless boot ROM. Once booted, CPU would establish a network connection and run a single Mac application, including a web browser and an MPEG-1 video player. Worked with British Telecomm, our only customer, to support their mid-1990s set top box trial.

    • Senior Software Engineer
      • Jan 1993 - Feb 1995

      Portable Hardware Products Group* Led ROM & System Disk projects for PowerPC Upgrades to the PowerBook 500-series and Duos.* Led ROM project for PowerBook 550.* Led System Disk projects for PowerBooks 100- & 500-series, including providing Built-in Video and Built-in External Video for both series.* Provided ROM & System Disk support for Built-in Video on the Duos. Consulted on ROM development for MiniDock & DuoDock. Provided Built-in External Video support for Duo Dock II and Plus.* Provided low-level support for Display Manager, including developing first implementation of video sleep-docking for the PowerBook 500- & 100-series CPUs. This resulted in Apple patent #5,682,529 (issued October 28, 1997).* Consulted on software effort required for the release of the Apple 14", 17", and 20" Multiple Scan Displays.

    • Senior Software Engineer
      • Jun 1992 - Dec 1992

      RISC Hardware Products Group* Did low-level ROM integration to port Motorola 68K boot code to PowerPC.* Provided Built-in Video, Slot Manager, and Display Manager support for the first set of PowerPC CPUs. Consulted on development of High-Performance Video-out & Video-in cards for the PowerPC CPUs.* Continued providing Built-in Video, Slot Manager, and QuickDraw support to the High Performance 68K group as needed for the release of the LC III, LC 575, Quadra 605, Centris 610, Quadra 610, Quadra 650, and Quadra 800 CPUs. Consulted on the development of the Built-in Video & Video-in subsystems of the Quadra 660av & 840av CPUs.

    • Software Engineer
      • Jun 1990 - May 1992

      High Performance Macintosh (68K) CPU/OS Group, System Software Engineering* Provided Built-in Video, Slot Manager, and QuickDraw support for new Mac CPUs, new Mac Video Displays, and System Software. The CPUs included the Classic II, Quadras 700, 900, and 950, as well as the PowerBooks 140, 145, 145B, and 170; the System Software included releases 7.0.1 & 7.1.* Provided support for new Mac Video Displays for the 8*24 and 8*24 GC Display Cards. The Displays included the Apple 16" and 21" Color Displays.* Provided Monitors (Control Panel) support for System Software 7.0, 7.0.1, and 7.1.

    • Software Quality Assurance Engineer
      • Jun 1988 - May 1990

      Macintosh CPU SQA, Product Quality & Support Group* Designed & wrote software tools for the testing of new Mac CPUs and new System Software. The CPUs included the Mac SE/30, IIx, IIcx, IIci, IIfx, LC, and IIsi; the System Software included System Releases 6.0.2 through 6.0.7. These tools were primarily written in C and 68K assembly. In some cases, this included the coordination of a team of two to three people. And, in all cases, this included the tracking, regression, and reporting of bugs to the appropriate System Software Engineers. Specific areas of responsibility were: Time Manager, Deferred Task Manager, Retrace Manager, Slot Manager, SCSI Manager, Device Manager, and 8/32-bit QuickDraw.* Provided extensive technical support to other members of the QA team. This included the writing & documenting of a source-code library consisting of more than 350 utility routines for use in test tools. * Reviewed Apple publications for technical accuracy.

    • Student
      • Oct 1987 - May 1988

      * Provided AppleTalk LAN and Telecommunication Information to J. L. Humphrey & Associates.* Provided HyperTalk programming advice to Mark D. Shermis (UT Department of Education) for a computer adaptive testing research project. * Provided AppleTalk LAN and Telecommunication Information to J. L. Humphrey & Associates.* Provided HyperTalk programming advice to Mark D. Shermis (UT Department of Education) for a computer adaptive testing research project.

    • Student
      • Aug 1984 - May 1988

      Technical Consultant/Instructor* Wrote a "desk accessory" in 68K assembly and C to aid in the MicroCenter's gathering of consulting statistics.* Provided technical assistance (hardware/software) to customers over the phone and in person.* Taught various classes on supported software.* Wrote technical articles for the monthly newsletter.* Attended several technical training seminars provided by Apple, HP, IBM, and Zenith.Service Repair Technician* Took in, diagnosed, and repaired customer equipment (Apple Macintosh and peripherals).* Assisted hotline staff by answering technical questions.Store Clerk/Product Demonstrator* Consulted with customers on equipment purchases.* Demonstrated various products (for Macintoshes, HPs, IBMs, Zeniths).

    • United States
    • Computers and Electronics Manufacturing
    • 700 & Above Employee
    • Summer Intern
      • May 1987 - Aug 1987

      Programmer for MicroComputing Support Group (MCSG of IS&T).* Wrote a "desk accessory" in 68K assembly and C for facilitating the tracking of MCSG consulting activities.* Provided technical support to other Apple employees.* Wrote technical articles for an Apple-distributed publication.* Wrote various software classes. Programmer for MicroComputing Support Group (MCSG of IS&T).* Wrote a "desk accessory" in 68K assembly and C for facilitating the tracking of MCSG consulting activities.* Provided technical support to other Apple employees.* Wrote technical articles for an Apple-distributed publication.* Wrote various software classes.

    • Student Programmer
      • May 1983 - Jan 1984

      * Rewrote various subroutines in FORTRAN to graphically display on HP terminals and Data General electrostatic plotters the raw data gathered from sound recording instruments.* Debugged, regrouped, and catalogued a package of BASIC math routines written for Data General minicomputers running AOS.* Wrote a FORTRAN program to calculate the positions a sound probe would take as it traversed the insides of a pipe under examination for flaws and stress.* Wrote a simple database program in PL/I to automate the cataloging of project materials.

Education

  • University of Texas at Austin
    BA, Computer Science
    1984 - 1988

Community

You need to have a working account to view this content. Click here to join now