Announcing Trinket’s Doughnuts-for-Bugs Program

Trinket users rely on our service to code every day, and we’re committed to 100% reliability.  Today we’re announcing our Doughnuts-for-Bugs program to reward users who spot critical Trinket bugs.  We’re also announcing the inaugural co-recipients, Gever Tully’s SF Brightworks Students (collectively) and Danny Bradbury of Kids Tech News.  Gever’s students and Danny gave us detailed bug reports and helped us diagnose a bad bug back in December.  Details on the bug are below but first, let’s see what our first winners got!

SF Brightworks isn’t your typical school.

Our First Doughnuts For Bugs Winners

 Gever Tully’s SF Brightworks Students

  • Doughnuts from Krispy Kreme delivered on 12/12 (Don’t worry: we brought enough for the whole school!)
  • (Optional) A visit or Skype call from our developers to talk about software development, the bug, or get hands-on with Python!

Danny Bradbury

  • Doughnuts from Krispy Kreme in Vancouver (or doughnut shop of his choice)

Krispy Kreme hails from North Carolina, just like Trinket’s founding team!

Doughnuts for Bugs Details

We’ll publish a page with more information soon, but for now here are the basics:

  • Report a serious bug (one that makes Trinket unusable for you) and give us enough information so we can reproduce the bug
  • Tell us your favorite local doughnut shop (or similar sweets place)
  • We’ll buy you doughnuts!

We hope this program is fun, helps us make Trinket better, and helps you feel like you have a say in improving the site- because you do!

Details of Doughnut Bug #1

The bug reported by these users was making the page reload endlessly when they tried to make a new Trinket, preventing them from being able to do so.  Let’s dive in and see why this was happening.

Modern web apps have a lot of pieces to them, and increasingly they’re using package managers of some sort to keep track of them.  These are like app stores, kind of, except they just contain pieces that are used in an app rather than a whole piece.  Anyways, one of the package managers we use, Bower, updated some of the components of Trinket but not all of them.  This would be fine if it were an app store but since package managers deal with just pieces of an app, the pieces couldn’t work together anymore.  It’s as if a mechanic upgraded your car with monster truck tires, but left just one of the tires normal: it probably wouldn’t work very well.  Neither did Trinket.  It took us awhile to figure out this problem because many parts of the internet cache files (keep a copy of them), so only some users were experiencing the problem.  But we were able to fix this bug before the new file had gotten to most users, preventing a global problem for Trinket users trying to create new Trinkets.  Awesome!

The short, technical answer is our angular-ui package got out of sync with angular because they weren’t both set to auto-update.  We made sure all Bower components were up to date and flushed our Cloudeflare cache.  ISP-level caching may delay the fix getting to all users but it shouldn’t take to long to get out to everyone.

I hope that brief look into how our app works and what went wrong was informative!  If you have a bug to submit for Dougnuts for Bugs program, email us the details!