SlideShare a Scribd company logo
JUST IN HALSAL L - @JUICE1 0 
DIRECTOR OF DEVELOPER PROGRAMS 
PRINCIPLES, BACKBONE AND 
BOT T LENOSE
WHO AM I ?
DIRECTOR OF DEVELOPER 
PROGRAMS @
BUI LDING WEBSI TES SINCE 
2002
PROGRAMMING SINCE 2 0 0 4
USING BACKBONE SINCE 2 0 1 2
BOT T LENOSE HISTORY
CONSUMER PRODUCT
Principles, Backbone and Bottlenose
SMART DASHBOARD
MANY CL IENTS AND 
AS FEW SERVERS AS POSSIBLE
ADVANCED PROCESSING IN BROWSER 
• NLP 
• Topic Extraction 
• Sentiment Analysis 
• Interest Classification
MIX THIS WI TH 
BACKBONE & SVG 
• NLP 
• Topic extraction 
• Sentiment 
• Interest classification 
• Backbone.js 
• D3.js 
• SVG
Principles, Backbone and Bottlenose
BIGGEST POWER USERS WERE 
MARKET ING AGENCIES
OCTOBER 2 0 1 3 
SWI TCH TO ENTERPRISE
Great! 
Not Great! 
Not Great! 
WE FEL T L IKE WE HAD A HUGE BL IND SPOT : 
WE ARE GREAT AT NOW, BUT WHAT ABOUT 
THE PAST ? 
Not Great! 
Not Great! 
Not Great!
LETS RUN EVERYTHING ON THE SERVER! 
AND LETS FEED I T CRAZY AMOUNT OF 
MESSAGES!
MANY SERVERS, FEW 
C L I E N T S …
OUR ARCHI TECTURE ON I TS 
H E A D …
ENTERPRISE REVAMP TOOK 3 MONTHS TO 
COMPLETE AND START CHARGING MONEY FOR 
I T
BOT T LENOSE TODAY
PRINCIPLES
( INCIDENTAL ) 
PRRRRRRINCIPLES 
https://www.flickr.com/photos/deerwooduk/579761138
PRINCIPLE# 1 
PROTOTYPE!
BUI LD PROTOTYPES EARLY 
AND OF TEN
HOW WE PROTOTYPED OUR 
TREND DETECT ION SYSTEM
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
PROTOTYPE! 
• Just use the backbone/marionette components you need 
• Start small and build it out 
• If the router isn’t critical for the prototype, postpone adding it!
PRINCIPLE# 2 
MINIMISE T IME BETWEEN 
CHANGING CODE AND SEEING 
RESUL TS 
[photo] http://bit.ly/1y4t8nF
HOTSWAP
FEB 2 0 1 2 HT TP: / /VIMEO.COM/ 3 6 5 7 9 3 6 6 
BRET VICTOR TALK
HT TP: / /BI T . LY/ 1VATPRX
BACKF IN 
HT TP: / /GI THUB.COM/BOT T LENOSE - INC/BACKF IN 
• require.js 
• backbone.js 
https://www.flickr.com/photos/mobilestreetlife/8394430829
“Do not dwell in the past, do not dream of the future, concentrate the 
mind on the present moment.” 
– BUDDHA 
[photo] http://bit.ly/1y4t8nF
PRINCIPLE# 3 
ISOLATE EVERYTHING, I T WI L L BECOME LEGACY 
SOME DAY 
Photo by Sakeeb Sabakka, CC-BY-2.0.
MODULAR (PLUGIN) 
ARCHI TECTURE 
https://www.flickr.com/photos/eepaul/7396791752/
IDEA WAS WE WANT PLUGINS SO THAT USERS 
CAN HAVE A VERY CUSTOM EXPERIENCE 
DEPENDING ON THEIR NEEDS
THIS FORCED US TO MAKE THESE PLUGINS 
SUPER MODULAR AND ISOLATED FROM THE 
REST
EVERY NEW COMPONENT 
BECAME A PLUGIN
CONCEPTS STOLEN FROM NICHOLAS C. ZAKAS 
(SCALABLE JAVASCRIPT APPL ICAT ION 
ARCHI TECTURE) 
http://youtu.be/vXjVFPosQHw https://www.flickr.com/photos/nicole_hugo/4526479595
AURA. JS WAS FOUND AND SOME 
CODE WHERE BORROWED FROM 
THERE 
http://aurajs.com
MARIONET TE HAS A SWEET COMPONENT SYSTEM 
MARIONET TE.MODULE
PUB SUB 
https://www.flickr.com/photos/altemark/337248947
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Principles, Backbone and Bottlenose
Module is missing or broken? 
Nothing happens here…
var eventBroker = _.extend({}, Backbone.Events); 
eventBroker.on("alert", function(msg) { 
alert("Triggered " + msg); 
}); 
eventBroker.trigger("alert", "an event");
eventBroker.on( 
“new-project“, folder.addProject); 
var eventBroker = 
_.extend({}, Backbone.Events); 
eventBroker.on( 
“new-project“, cta.addProject);
eventBroker.on( 
“new-project“, folder.addProject); 
var eventBroker = 
_.extend({}, Backbone.Events); 
eventBroker.trigger( 
“new-project”, projectObject); 
eventBroker.on( 
“new-project“, cta.addProject);
WE CREATED SOMETHING SIMI LAR TO 
BACKBONE.EVENT
Principles, Backbone and Bottlenose
ANOTHER USEFUL PUB -SUB SYSTEM IS 
M A R I O N E T T E ’ S 
BACKBONE.RADIO 
https://www.flickr.com/photos/altemark/337248947
PRINCIPLE# 4 
DON' T DO HUGE 
MIGRAT IONS 
https://www.flickr.com/photos/dkalo/4564484466
AS LONG AS I TS ISOLATED 
I TS OK TO LEAVE OLD CODE LYING 
AROUND 
https://www.flickr.com/photos/3336/10847066964
REPLACE OLD CODE WHEN YOU WORK ON A 
MODULE 
https://www.flickr.com/photos/sigfridlundberg/14219989521
PRINCIPLE# 4 
ALWAYS BE MIGRAT ING
F INAL PRINCIPLE 
DON' T BE DOGMAT IC, BE 
PRAGMAT IC
BONUS PRINCIPLE 
Q U E S T I O N E V E R Y T H I N G … 
WHY?
Q&A YAY! 
Me: Justin Halsall 
Twitter: @juice10 
E-mail: justin@bottlenose.com

More Related Content

Viewers also liked (8)

PDF
2012_hofhues_geier_griesshammer_fostering_crossmedia_education
Joe Geier
 
PPTX
Foto evidencias
Henry Jaimes
 
PPT
Travels To India And China1
Whitney Vuong
 
PDF
Virtuozzo
ilyale
 
PPS
Buturuga Mica
invitatie.la.vot
 
PDF
Vote Amsterdam For EuRuKo 2012
Justin Halsall
 
PPT
Book Talking & Web 2.0
Mary Danko
 
PDF
HTML5 semantics
Justin Halsall
 
2012_hofhues_geier_griesshammer_fostering_crossmedia_education
Joe Geier
 
Foto evidencias
Henry Jaimes
 
Travels To India And China1
Whitney Vuong
 
Virtuozzo
ilyale
 
Buturuga Mica
invitatie.la.vot
 
Vote Amsterdam For EuRuKo 2012
Justin Halsall
 
Book Talking & Web 2.0
Mary Danko
 
HTML5 semantics
Justin Halsall
 

Similar to Principles, Backbone and Bottlenose (20)

PDF
The Seven Wastes of Software Development
Matt Stine
 
PDF
Work with Developers for Fun and Progress - AppSec California
leifdreizler
 
PDF
200,000 Lines Later: Our Journey to Manageable Puppet Code
David Danzilio
 
PDF
Hacking for Innovation - WPP, New York
Saurabh Sahni
 
PDF
Deployments in one click!
Manuel de la Peña Peña
 
PDF
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
 
KEY
Release management with NuGet/Chocolatey/JIRA
Yaroslav Serhieiev
 
PDF
AngularJS
Jéferson Machado
 
PPTX
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
Splunk
 
PDF
0Day Hunting A.K.A. The Story of a Proper CPE Test by Balazs Bacsay
Shakacon
 
PDF
0day hunting a.k.a. The story of a proper CPE test
Balazs Bucsay
 
PDF
SharePoint logging & debugging
Sentri
 
PDF
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Matt Raible
 
PDF
Exploring and Using the Python Ecosystem
Adam Cook
 
PDF
Microservices for the Masses with Spring Boot, JHipster, and OAuth - London J...
Matt Raible
 
PDF
Elasticsearch : petit déjeuner du 13 mars 2014
ALTER WAY
 
PPTX
SplunkLive! Frankfurt 2018 - Getting Hands On with Splunk Enterprise
Splunk
 
PPTX
SplunkLive! Zurich 2018: Getting Started & Hands On
Splunk
 
PDF
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
John Allspaw
 
PDF
Styleguide-Driven Development: The New Web Development
John Albin Wilkins
 
The Seven Wastes of Software Development
Matt Stine
 
Work with Developers for Fun and Progress - AppSec California
leifdreizler
 
200,000 Lines Later: Our Journey to Manageable Puppet Code
David Danzilio
 
Hacking for Innovation - WPP, New York
Saurabh Sahni
 
Deployments in one click!
Manuel de la Peña Peña
 
Dev and Ops Collaboration and Awareness at Etsy and Flickr
John Allspaw
 
Release management with NuGet/Chocolatey/JIRA
Yaroslav Serhieiev
 
SplunkLive! Munich 2018: Getting Started with Splunk Enterprise
Splunk
 
0Day Hunting A.K.A. The Story of a Proper CPE Test by Balazs Bacsay
Shakacon
 
0day hunting a.k.a. The story of a proper CPE test
Balazs Bucsay
 
SharePoint logging & debugging
Sentri
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - Belfast ...
Matt Raible
 
Exploring and Using the Python Ecosystem
Adam Cook
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - London J...
Matt Raible
 
Elasticsearch : petit déjeuner du 13 mars 2014
ALTER WAY
 
SplunkLive! Frankfurt 2018 - Getting Hands On with Splunk Enterprise
Splunk
 
SplunkLive! Zurich 2018: Getting Started & Hands On
Splunk
 
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
John Allspaw
 
Styleguide-Driven Development: The New Web Development
John Albin Wilkins
 
Ad

Recently uploaded (20)

PDF
OpenInfra ID 2025 - Are Containers Dying? Rethinking Isolation with MicroVMs.pdf
Muhammad Yuga Nugraha
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
PDF
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PPTX
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
PPTX
Earn Agentblazer Status with Slack Community Patna.pptx
SanjeetMishra29
 
PPTX
The Future of AI & Machine Learning.pptx
pritsen4700
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
SalesForce Managed Services Benefits (1).pdf
TechForce Services
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PPTX
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
OpenInfra ID 2025 - Are Containers Dying? Rethinking Isolation with MicroVMs.pdf
Muhammad Yuga Nugraha
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PCU Keynote at IEEE World Congress on Services 250710.pptx
Ramesh Jain
 
Earn Agentblazer Status with Slack Community Patna.pptx
SanjeetMishra29
 
The Future of AI & Machine Learning.pptx
pritsen4700
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
RAT Builders - How to Catch Them All [DeepSec 2024]
malmoeb
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
SalesForce Managed Services Benefits (1).pdf
TechForce Services
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
AI Code Generation Risks (Ramkumar Dilli, CIO, Myridius)
Priyanka Aash
 
Ad

Principles, Backbone and Bottlenose

Editor's Notes

  • #3: Director of Developer Programs @ Bottlenose Full Stack guy Ruby & Rails JavaScript Backbone.js
  • #4: working at bottlenose 2 years, started at lead product developer
  • #6: Suffering through timezone issues since 2004
  • #7: explain backbone.js explain marionette.js
  • #9: Founded early 2011 first LOC 2010
  • #10: Started as consumer product - a smart dashboard for Twitter & Facebook
  • #11: Started as consumer product - a smart dashboard for Twitter & Facebook
  • #12: Technically: The idea was, less pressure on the server means maximum amount of scalability. We where using local storage to store nearly everything Minimising the round trips to our servers as much as possible API calls to twitter and Facebook would be done in browser as much as possible removing any need to hit our servers. Basically we built a web based desktop client that could mainly operate without our servers allowing us to scale up infinitely.
  • #14: Putting many of these things together together with some Backbone and SVG got us: Sonar
  • #15: Putting many of these things together together with some Backbone and SVG got us: Sonar
  • #16: We where getting some signals that PR/Advertising agencies where using our free product to monitor brands & campaigns. This gave us a good idea of where to monetise and cater the product to.
  • #19: To do this we would have to extract all the analysis done in the front-end and run it constantly on our - 60M+ messages per day
  • #20: This turned all of our architecture on its head Used to be many clients, few servers. Most calculations happening in browser. Now we switched to massive amounts of data running on many servers for one client.
  • #22: thanks to node and re-using javascript modules
  • #26: results early and often
  • #27: get feedback/results early and often
  • #28: what is trend detection? analyst in a box start light and make each prototype a bit more full fledged
  • #29: tool to view and annotate time series for trend detection green line is detected trend, orange: possible trend, light line: possible trend very low confidence
  • #30: many iterations later we got this
  • #31: we tried lots of things some failed some didn’t important to note its ok for a prototype to fail, it gives insights what we have today
  • #32: nice thing about backbone is that it really supports these principles, you don't have to use everything from the get-go
  • #33: hotswap and thin prototypes are ideal allows you to stay in the flow “Do not dwell in the past, do not dream of the future, concentrate the mind on the present moment.” - Buddha
  • #36: only available for dialogs in the beginning backfin on top of requirejs and backbone.js
  • #38: hotswap and thin prototypes are ideal allows you to stay in the flow “Do not dwell in the past, do not dream of the future, concentrate the mind on the present moment.” - Buddha
  • #39: and you will want to replace it…
  • #46: why did we introduce marionette, what does it do?
  • #47: for communication between plugins we used: pubsub/event broker/message pattern
  • #48: We have one widget that shows the user what projects he/she has. One more widget is concerned with how many projects there are, because if you have 5 projects that widget will start displaying a red toolbar and ask you to buy a bigger account. One widget that allows users to create new projects.
  • #49: We have one widget that shows the user what projects he/she has. One more widget is concerned with how many projects there are, because if you have 5 projects that widget will start displaying a red toolbar and ask you to buy a bigger account. One widget that allows users to create new projects.
  • #50: We have one widget that shows the user what projects he/she has. One more widget is concerned with how many projects there are, because if you have 5 projects that widget will start displaying a red toolbar and ask you to buy a bigger account. One widget that allows users to create new projects.
  • #51: We have one widget that shows the user what projects he/she has. One more widget is concerned with how many projects there are, because if you have 5 projects that widget will start displaying a red toolbar and ask you to buy a bigger account. One widget that allows users to create new projects.
  • #52: We have one widget that shows the user what projects he/she has. One more widget is concerned with how many projects there are, because if you have 5 projects that widget will start displaying a red toolbar and ask you to buy a bigger account. One widget that allows users to create new projects.
  • #53: what we want part 1
  • #54: what we want part 2.
  • #55: how
  • #56: how
  • #57: how
  • #58: how
  • #59: what happens if one of these is broken?
  • #61: how
  • #62: how
  • #64: aura.js has their own version
  • #65: way more advanced than backbone’s version
  • #66: make sure you deploy your changes fast & often do many small increments as opposed to a big bang deploy the work in progress and hide it behind a flag
  • #68: sometimes you can delete a whole module without having wasted time migrating it months before former job we decided to switch all legacy code from prototype to jQuery and two months later our ceo decided to do a complete rewrite of the site
  • #69: clubjudge story
  • #70: backbone helps with not being dogmatic as it doesn’t dictate anything
  • #71: backbone helps with not being dogmatic as it doesn’t dictate anything