How a Penny helped ship a Billion dollar Product

Dhaval Shah
Produkt

--

How often have you thought about the importance of a mouse or a keyboard or any other input device? Until it stops working. And then, all hell breaks loose.

During my time at the Windows Devices Team, we were all working hard on shipping Windows 8. At the time, Windows development used to be a multi-year project and involved several teams and engineers (6000 of us!). As expected, it was a fairly complex engineering project with a lot of moving parts.

Input devices is a big ecosystem. There are thousands of manufacturers making more than a billion input devices. The input software stack has to work with the device quirkiness to give the user a consistent experience.

Microsoft has a long tradition of dogfooding its own products. Many critical bugs were found via self-hosting. Input devices get a lot of coverage through this self-hosting program. Every user that was self-hosting Windows would be using an input device and in turn helping test the input stack functionality (and all the device quirkiness).

Right around Windows release timeframe, few critical changes were made to the input stack. Given the shortened timeframe, it was not possible to comprehensively test the input stack using the dogfooding program.

For a big project like Windows, shipping date gets decided well in advance (and is communicated fairly widely to the developer community and users). Postponing those shipping dates can create a major loss of revenue and change of plans for many of our ecosystem partners.

So, clearly, there was a need to comprehensively test the input stack in a shortened timeframe. The changes mostly affected the input stack that helped control the touchpad devices. There are a variety of ways to test the input stack, which includes unit testing, integration testing, and software simulation among others. Since every laptop manufacturer packages and integrates the touchpads in its own unique way, it was necessary to do real device testing on physical machines.

The problem was that these unique touchpad matrix needed to be tested. Manually testing them would take a long time. As they say, necessity is the mother of invention. I started exploring options on how I could automate this process. I started experimenting with everything that I could find. Spoons, pens, clips, scissors, pennies. Wait, what … pennies ? I realized that if I put my finger on the penny and moved it around on the touchpad, it caused the cursor to move. If I used an insulating material around my finger and then moved the penny, the cursor would not move. Aha, Eureka!

The next hour was spent understanding the physics behind touchpads. How can I automate this thing? I needed something that could make the penny move the cursor and make/break the circuit.

I went to my local RadioShack to look for parts. I bought a vibration motor and few capacitors. My co-worker donated a programmable USB stick which could power the vibrator and make/break the circuit. Out came the soldering iron and the penny was attached to a vibrator and to a USB power source.

I could programmatically control the USB stick and the power to the vibrator/penny. I taped the penny so that its movement would be limited to the touchpad surface. Here is the setup in action:

Once the penny device was set up was done, I quickly wrote an application that allowed me to capture the cursor movements. Now I needed to answer a few questions — does the touchpad work after resuming from sleep, does it work reliably for long hours, does the touchpad wake the machine from sleep and several other critical scenarios.

I then made several of these devices, plugged them in touchpads, ran my capture application, streamed the output over the interwebs and validated several device configurations at once.

We made improvements to this device over time. In its current form, the device tapped on the touchpad randomly. Later versions of the device could simulate precise gestures. Mechanical contact variation was replaced by electrical capacitive variation.

One unexpected casualty of this experiment was my office neighbor. He did not like the buzzing noise of pennies and I fixed it by putting a card box to muffle the noise.

And that’s the story of how we shipped Windows 8. On time.

What are your product shipping stories? Leave them in comments.

— These opinions are entirely my own, distilled from my experience at Microsoft.

--

--

Dhaval Shah
Produkt
Editor for

Product @sysdig | Alum @circleci @coverity @microsoft @notredame | ❤️ building products