Front End Ops Conference, San Francisco, 2014
Front End Ops Conf 2014San Francisco • @rmurpheyapps that talk back
View Slide
˒˒˒ ➞ $$$
apps that talk back
keep you from doing a bad thing
var spawn = require('child_process').spawn; var command = 'grunt'; var commandOpts = ['check:push']; !function onExit (code) { if (code !== 0) { throw new Error('Prepush check failed with exit code: ' + code); } process.exit(code); } !// Run it !! var child = spawn( command, commandOpts, { stdio : 'inherit' } ); child.on('exit', onExit);
BVReporter.assert( this.componentId, 'View ' + this.name + ' must have componentId' );
tell you when you did a bad thing
BVTracker.error('No productId is defined');
BVTracker.error({ name : errorMessages.IMPLEMENTATION, detail1 : 'No productId is defined', detail2 : component.name });
define({ errors : { IMPLEMENTATION : 'Implementation Error', API : 'API Error', UNCAUGHT : 'Uncaught Exception', CONFIG : 'Configuration Error', THIRD_PARTY : 'Third Party Service Error', TIMEOUT : 'Request Timeout', UI : 'User Interface Error', FRAMEWORK : 'Framework Error' } });
“scout” filecustomer requests component(s)core application filedatarender of component 1render of component 2submission interactionsubmission resourcessubmission render* not to scale (i hope)
“scout” filecustomer requests component(s)core application filedatarender of component 1render of component 2submission interactionsubmission resourcessubmission render
identify things beforethey are things
help fix the things
priorities
✅ assertions✅ git hooks (jshint, jscs, unit tests)✅ error classification & reporting✅ production monitoring⬆️ production debugging⬆️ build optimization via coverage analysis⬆️ build size monitoring⬆️ performance instrumentation❌ error alerting❌ performance monitoring
@rmurphey • rmurphey.combazaarvoice.com