SlideShare a Scribd company logo
1 of 37
Scalable UI development at
         a breakneck pace
                      Phil Crosby
Phil Crosby
                             Tech lead of Ooyala Backlot



Ninjawords.com
Vimium - a Vim-like browsing experience for
Chrome
shoulda.js
livecss

                                                           2
Context - what we’re
                         building here

A product with
 Lots of functionality
 Lots of views (pages)
 New stuff each and every day



                                     3
Goals for our development
                        approach

Build lots of high quality UI with only a handful
of developers.
Iterate very quickly, build a malleable product.
No bugs!




                                                    4
Frontend development
            strategies




                     5
Frontend development
                           strategies

1. A thin client philosophy




                                    5
Frontend development
                           strategies

1. A thin client philosophy
2. Standalone views




                                    5
Frontend development
                           strategies

1. A thin client philosophy
2. Standalone views
3. Richness through a very light layer AJAX




                                              5
Frontend development
                           strategies

1. A thin client philosophy
2. Standalone views
3. Richness through a very light layer AJAX
4. Build on powerful primitives, like CSS3.




                                              5
Frontend development
                           strategies

1. A thin client philosophy
2. Standalone views
3. Richness through a very light layer AJAX
4. Build on powerful primitives, like CSS3.
5. Robust server and client side testing pipeline


                                                    5
A thin client philosophy




                       6
A thin client philosophy


Choose a thin client.




                                   6
A thin client philosophy


Choose a thin client.
We love stupid client apps.




                                   6
A thin client philosophy


Choose a thin client.
We love stupid client apps.
No behavior, no smarts => fewer places for
bugs to hide in the client.



                                             6
Standalone views
Goal: work on each view independently of the
others

Mechanics:




                                               7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view




                                               7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view
- is addressable




                                               7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view
- is addressable
- stateless




                                               7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view
- is addressable
- stateless
- has a uniform interface



                                               7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view
- is addressable
- stateless
- has a uniform interface
Every view can serialize itself into query string
params


                                                    7
Standalone views
Goal: work on each view independently of the
others

Mechanics:
Every view
- is addressable
- stateless
- has a uniform interface
Every view can serialize itself into query string
params
Views are connected with a light layer of ajax
                                                    7
Powerful, powerful primitives

jQuery (benefits are well-known)
HTML5
CSS3
SASS
Leverage only cutting-edge browsers.


                                       8
CSS3 - FEEL THE POWER!




                     9
CSS3 - FEEL THE POWER!

Lots of malleability for programmers to refine
UI.
Finally the expressiveness needed to cover
most styling techniques.
Box layouts, rounded corners, shadows,
gradients, and bears!


                                                 9
SASS - Bring structure to CSS


A DSL on top of CSS.
Provides nesting, variables, color arithmetic.
Write custom functions and macros to group
and reuse CSS code.



                                                 10
No love for IE




             11
No love for IE


Chrome Frame should win the 2011
Humanitarian Award.




                                      11
No love for IE


Chrome Frame should win the 2011
Humanitarian Award.
According to StatCounter’s worldwide stats for
this month, IE6 usage is down to 6% and IE7 is
down to 10%.



                                                 11
Our testing pipeline




                   12
Our testing pipeline

Most logic lives in server-side Ruby code, and
so that's where we write all of our tests.




                                                 12
Our testing pipeline

Most logic lives in server-side Ruby code, and
so that's where we write all of our tests.
HTML output is easy to assert against.




                                                 12
Our testing pipeline

Most logic lives in server-side Ruby code, and
so that's where we write all of our tests.
HTML output is easy to assert against.
Our client side testing tools:
- v8: Chrome's command line JavaScript engine
- env.js (also check out JSDom)
- Shoulda.js (github.com/philc/shoulda.js)


                                                 12
Takeaways




        13
Takeaways

We've refined this approach through building
lots of frontend product and tenaciously
enhancing team productivity.




                                               13
Takeaways

We've refined this approach through building
lots of frontend product and tenaciously
enhancing team productivity.
This frontend development approach has
worked really well for us!




                                               13
Takeaways

We've refined this approach through building
lots of frontend product and tenaciously
enhancing team productivity.
This frontend development approach has
worked really well for us!
Here are a few tools which may come in handy:
livecss
shouda.js
require.js
                                                13
THANK YOU

More Related Content

What's hot

Full stack web development
Full stack web developmentFull stack web development
Full stack web developmentCrampete
 
Agriya services
Agriya servicesAgriya services
Agriya servicesiScripts
 
The Full Stack Web Development
The Full Stack Web DevelopmentThe Full Stack Web Development
The Full Stack Web DevelopmentSam Dias
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...Prasid Pathak
 
1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice
1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice
1.[d2 오픈세미나]on thearchitectureofsocialnetworkserviceNAVER D2
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript FrameworksChristian Gaetano
 
Looking for a place to hang my helmet
Looking for a place to hang my helmetLooking for a place to hang my helmet
Looking for a place to hang my helmetBrad Frost
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017AmarInfotech
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsRasheed Waraich
 
Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Matt Raible
 
Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022Katy Slemon
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationJonathan Abrams
 
Standardization in W3C
Standardization in W3CStandardization in W3C
Standardization in W3CJonathan Jeon
 
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...Shift Conference
 
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)Stephen Hay
 

What's hot (20)

Full stack web development
Full stack web developmentFull stack web development
Full stack web development
 
Agriya services
Agriya servicesAgriya services
Agriya services
 
MEAN Stack
MEAN Stack MEAN Stack
MEAN Stack
 
VisionX Prototyping.
VisionX Prototyping.VisionX Prototyping.
VisionX Prototyping.
 
Vue Storefront Basics
Vue Storefront BasicsVue Storefront Basics
Vue Storefront Basics
 
The Full Stack Web Development
The Full Stack Web DevelopmentThe Full Stack Web Development
The Full Stack Web Development
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
 
1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice
1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice
1.[d2 오픈세미나]on thearchitectureofsocialnetworkservice
 
Get Started with JavaScript Frameworks
Get Started with JavaScript FrameworksGet Started with JavaScript Frameworks
Get Started with JavaScript Frameworks
 
Looking for a place to hang my helmet
Looking for a place to hang my helmetLooking for a place to hang my helmet
Looking for a place to hang my helmet
 
Maintainable design
Maintainable designMaintainable design
Maintainable design
 
Top java script frameworks ppt
Top java script frameworks pptTop java script frameworks ppt
Top java script frameworks ppt
 
Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017Latest Javascript MVC & Front End Frameworks 2017
Latest Javascript MVC & Front End Frameworks 2017
 
Architecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web AppsArchitecture & Workflow of Modern Web Apps
Architecture & Workflow of Modern Web Apps
 
Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010
 
Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022Ultimate guide on how to hire full stack web developer in 2022
Ultimate guide on how to hire full stack web developer in 2022
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig Presentation
 
Standardization in W3C
Standardization in W3CStandardization in W3C
Standardization in W3C
 
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...
Shift Remote FRONTEND: Micro Frontend Architecture: A Look Into the Future - ...
 
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
Responsive Design Workflow (Breaking Development Conference 2012 Orlando)
 

Similar to How to do Scalable UI-Heavy Development at a Breakneck Pace

Build fast word press site in react in 30 mins with frontity
Build fast word press site in react in 30 mins   with frontityBuild fast word press site in react in 30 mins   with frontity
Build fast word press site in react in 30 mins with frontityImran Sayed
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Phil Leggetter
 
5 Powerful Backend Frameworks for Web App Development in 2022
5 Powerful Backend Frameworks for Web App Development in 20225 Powerful Backend Frameworks for Web App Development in 2022
5 Powerful Backend Frameworks for Web App Development in 202275waytechnologies
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx75waytechnologies
 
RightScale User Conference: Why RightScale?
RightScale User Conference: Why RightScale?RightScale User Conference: Why RightScale?
RightScale User Conference: Why RightScale?Erik Osterman
 
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP frameworkbibakis
 
WebAssembly with Rust
WebAssembly with RustWebAssembly with Rust
WebAssembly with RustKnoldus Inc.
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppRené Winkelmeyer
 
Web based, mobile enterprise applications
Web based, mobile enterprise applicationsWeb based, mobile enterprise applications
Web based, mobile enterprise applicationsManish Garg
 
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Katy Slemon
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...GreeceJS
 
Leading Node.JS Development Services Company in India.docx
Leading Node.JS Development Services Company in India.docxLeading Node.JS Development Services Company in India.docx
Leading Node.JS Development Services Company in India.docxShilsha Technologies
 
Leading Node.JS Development Services Company in India.pdf
Leading Node.JS Development Services Company in India.pdfLeading Node.JS Development Services Company in India.pdf
Leading Node.JS Development Services Company in India.pdfShilsha Technologies
 
Choosing a JVM Web Framework
Choosing a JVM Web FrameworkChoosing a JVM Web Framework
Choosing a JVM Web FrameworkMatt Raible
 
Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016PixelCrayons
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project Elad Hirsch
 
WebAssembly with Rust
WebAssembly with RustWebAssembly with Rust
WebAssembly with RustKnoldus Inc.
 
JavaScript Frameworks Popularity
JavaScript Frameworks PopularityJavaScript Frameworks Popularity
JavaScript Frameworks PopularityAlbiorix Technology
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angularBasarat Syed
 

Similar to How to do Scalable UI-Heavy Development at a Breakneck Pace (20)

Build fast word press site in react in 30 mins with frontity
Build fast word press site in react in 30 mins   with frontityBuild fast word press site in react in 30 mins   with frontity
Build fast word press site in react in 30 mins with frontity
 
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
Using BladeRunnerJS to Build Front-End Apps that Scale - Fluent 2014
 
5 Powerful Backend Frameworks for Web App Development in 2022
5 Powerful Backend Frameworks for Web App Development in 20225 Powerful Backend Frameworks for Web App Development in 2022
5 Powerful Backend Frameworks for Web App Development in 2022
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
 
RightScale User Conference: Why RightScale?
RightScale User Conference: Why RightScale?RightScale User Conference: Why RightScale?
RightScale User Conference: Why RightScale?
 
Mainframe, the fast PHP framework
Mainframe, the fast PHP frameworkMainframe, the fast PHP framework
Mainframe, the fast PHP framework
 
WebAssembly with Rust
WebAssembly with RustWebAssembly with Rust
WebAssembly with Rust
 
ICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To AppICONUK 2014 - From Idea To App
ICONUK 2014 - From Idea To App
 
Web based, mobile enterprise applications
Web based, mobile enterprise applicationsWeb based, mobile enterprise applications
Web based, mobile enterprise applications
 
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Leading Node.JS Development Services Company in India.docx
Leading Node.JS Development Services Company in India.docxLeading Node.JS Development Services Company in India.docx
Leading Node.JS Development Services Company in India.docx
 
Leading Node.JS Development Services Company in India.pdf
Leading Node.JS Development Services Company in India.pdfLeading Node.JS Development Services Company in India.pdf
Leading Node.JS Development Services Company in India.pdf
 
Choosing a JVM Web Framework
Choosing a JVM Web FrameworkChoosing a JVM Web Framework
Choosing a JVM Web Framework
 
Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016Hybrid Mobile App Development Frameworks 2016
Hybrid Mobile App Development Frameworks 2016
 
AngularJS - Architecture decisions in a large project 
AngularJS - Architecture decisionsin a large project AngularJS - Architecture decisionsin a large project 
AngularJS - Architecture decisions in a large project 
 
WebAssembly with Rust
WebAssembly with RustWebAssembly with Rust
WebAssembly with Rust
 
Web frameworks
Web frameworksWeb frameworks
Web frameworks
 
JavaScript Frameworks Popularity
JavaScript Frameworks PopularityJavaScript Frameworks Popularity
JavaScript Frameworks Popularity
 
Mvvm knockout vs angular
Mvvm knockout vs angularMvvm knockout vs angular
Mvvm knockout vs angular
 

Recently uploaded

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

How to do Scalable UI-Heavy Development at a Breakneck Pace

  • 1. Scalable UI development at a breakneck pace Phil Crosby
  • 2. Phil Crosby Tech lead of Ooyala Backlot Ninjawords.com Vimium - a Vim-like browsing experience for Chrome shoulda.js livecss 2
  • 3. Context - what we’re building here A product with Lots of functionality Lots of views (pages) New stuff each and every day 3
  • 4. Goals for our development approach Build lots of high quality UI with only a handful of developers. Iterate very quickly, build a malleable product. No bugs! 4
  • 5. Frontend development strategies 5
  • 6. Frontend development strategies 1. A thin client philosophy 5
  • 7. Frontend development strategies 1. A thin client philosophy 2. Standalone views 5
  • 8. Frontend development strategies 1. A thin client philosophy 2. Standalone views 3. Richness through a very light layer AJAX 5
  • 9. Frontend development strategies 1. A thin client philosophy 2. Standalone views 3. Richness through a very light layer AJAX 4. Build on powerful primitives, like CSS3. 5
  • 10. Frontend development strategies 1. A thin client philosophy 2. Standalone views 3. Richness through a very light layer AJAX 4. Build on powerful primitives, like CSS3. 5. Robust server and client side testing pipeline 5
  • 11. A thin client philosophy 6
  • 12. A thin client philosophy Choose a thin client. 6
  • 13. A thin client philosophy Choose a thin client. We love stupid client apps. 6
  • 14. A thin client philosophy Choose a thin client. We love stupid client apps. No behavior, no smarts => fewer places for bugs to hide in the client. 6
  • 15. Standalone views Goal: work on each view independently of the others Mechanics: 7
  • 16. Standalone views Goal: work on each view independently of the others Mechanics: Every view 7
  • 17. Standalone views Goal: work on each view independently of the others Mechanics: Every view - is addressable 7
  • 18. Standalone views Goal: work on each view independently of the others Mechanics: Every view - is addressable - stateless 7
  • 19. Standalone views Goal: work on each view independently of the others Mechanics: Every view - is addressable - stateless - has a uniform interface 7
  • 20. Standalone views Goal: work on each view independently of the others Mechanics: Every view - is addressable - stateless - has a uniform interface Every view can serialize itself into query string params 7
  • 21. Standalone views Goal: work on each view independently of the others Mechanics: Every view - is addressable - stateless - has a uniform interface Every view can serialize itself into query string params Views are connected with a light layer of ajax 7
  • 22. Powerful, powerful primitives jQuery (benefits are well-known) HTML5 CSS3 SASS Leverage only cutting-edge browsers. 8
  • 23. CSS3 - FEEL THE POWER! 9
  • 24. CSS3 - FEEL THE POWER! Lots of malleability for programmers to refine UI. Finally the expressiveness needed to cover most styling techniques. Box layouts, rounded corners, shadows, gradients, and bears! 9
  • 25. SASS - Bring structure to CSS A DSL on top of CSS. Provides nesting, variables, color arithmetic. Write custom functions and macros to group and reuse CSS code. 10
  • 26. No love for IE 11
  • 27. No love for IE Chrome Frame should win the 2011 Humanitarian Award. 11
  • 28. No love for IE Chrome Frame should win the 2011 Humanitarian Award. According to StatCounter’s worldwide stats for this month, IE6 usage is down to 6% and IE7 is down to 10%. 11
  • 30. Our testing pipeline Most logic lives in server-side Ruby code, and so that's where we write all of our tests. 12
  • 31. Our testing pipeline Most logic lives in server-side Ruby code, and so that's where we write all of our tests. HTML output is easy to assert against. 12
  • 32. Our testing pipeline Most logic lives in server-side Ruby code, and so that's where we write all of our tests. HTML output is easy to assert against. Our client side testing tools: - v8: Chrome's command line JavaScript engine - env.js (also check out JSDom) - Shoulda.js (github.com/philc/shoulda.js) 12
  • 33. Takeaways 13
  • 34. Takeaways We've refined this approach through building lots of frontend product and tenaciously enhancing team productivity. 13
  • 35. Takeaways We've refined this approach through building lots of frontend product and tenaciously enhancing team productivity. This frontend development approach has worked really well for us! 13
  • 36. Takeaways We've refined this approach through building lots of frontend product and tenaciously enhancing team productivity. This frontend development approach has worked really well for us! Here are a few tools which may come in handy: livecss shouda.js require.js 13

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n