It was built in a single day of running across the street between coding in a coffee shop, and testing the product on the microwave in seven-eleven.<p>It is actually just a mobile-first (mobile-only?) single page web app.<p>Built using no JS framework, has no build stage, or server side code. Uses Bootstrap for templating, and a lot of hacky vanilla JS code to quickly create this MVP.<p>We use the Web Audio JS API to listen for pops using device's microphone. The pop detection logic is as follows: if the current microphone sample volume is 10 times higher than the average of the last 6 samples of volume, it is a pop.<p>The logic on when to stop the microwave is as follows: first wait for 5 pops with less than 1 second in between them. We call this the "peak popping stage". Then we wait for either 3 pops with longer than 1.5 seconds in between. or 3 seconds without a single pop. We fine tuned the parameters with a lot of testing.<p>Hope this helps people avoid burnt or unpopped popcorn, and enjoy perfect microwaved popcorn every time.