SlideShare a Scribd company logo
1 of 91
Dear DIWD,

Slides: 
slideshare.com/zappos-fez/diwd-2011

Twitter: 
@zappos_diwd

Jeorbs: 
goo.gl/mwiwk
jobs.zappos.com

Love,
Zappos
We represent Zappos, Drupal was raised out in Holland




                                            photo by Adria Richards
                                            http://www.flickr.com/photos/adriarichards/
Introductions
Alex Kirmse @alexkirmse
History of early days pre-CMS, pre-Drupal, first Drupal project,
Drupal growth and Advanced Landing Pages

Geoff Berger @geoffberger
Technical look into Advanced Landing Pages, Baffin and what’s
under the hood.

Daniel Lopez @deshawnbw
Dynamic Components and building on top of the Baffin platform

Stephen Hayden @mestevo
Application, End-User Support and Documentation with Drupal
the early days…
(2006-2008)

Our small front-end team….
10+ sites to maintain
Zappos Classic

- Perl/MySQL platform, proprietary templating system
- non e-commerce content needed managing
- Many requests to make link, image and wording changes
- No Content Management System!
Typical Requests…
   Baaah
   Baaah
     !!    "We need a simple FAQ..."

                                           "Please change the
                                           image and link on
                                           page..."




     "We need to change the
     3rd sentence in the
     Terms and
     Conditions….baah!"


                                Photo by: Aunt Owwee http://www.flickr.com/photos/aunto
Blogs and the first taste of a CMS
 - End of 2007 implemented a 3rd party Blogs platform for blogs.zappos.com

 - Clearspace, J2EE Enterprise Social Collaboration Platform

 - Used for blogs, but potentially planned for forums, wikis and customer
 interaction

 + Feature rich out of the box:
 User management, Forums, Wikis, Friends, Commenting, themeing

 + Nice to have content be manageable via a CMS
Blogs.Zappos.com - In The Wild
        By early 2008 Clearspace was in production, under active use:

        Developers we’re theming and customizing Blogs

        Sys admins in production, sending traffic to site and managing the servers

        Bloggers we’re writing 3-4 blog posts a day




Photo by Eric Miraglia
http://www.flickr.com/photos/equanimity/
Blogs Feedback
  Development Team:                   Sys Admins
  - not easily customizable           - Performance and logging issues
  - strange template conventions      - Tough upgrade path
  - front-end issues                  - Longer deploy cycles

                     End Users/Bloggers
                     - Problematic rich text editor
                     - Lack of 3rd party tools
                                                      photo by Patricia van Casteren
                                                      http://www.flickr.com/photos/patries71/
Sidebar: Why Clearspace and not
Wordpress?


- Sys team questioned the "enterprise"ness of Wordpress

- Engineer: Single Sign-on easier with Java than with PHP

- New site revamp is Java
Hearing about Drupal
- SXSW 2008 CMS Roundup

- IA Summit, talked to maintainers of the Yahoo Designs
Pattern library that uses Drupal

- Very flexible platform, but definitely requires deeper
knowledge if you customize it
                                                     photo by Stephen hizKNITS
                                                     http://www.flickr.com/photos/hmalbert
An opportunity...
- Tony had an idea to create a new site: About.Zappos.com

- Primarily static content or content that needed easy updating
by business users

- No e-commerce parts

- Stand-alone site

- New site, not replacing

Let's give Drupal a try!



                            Tony Hsieh, CEO Zappos.com
Compare both platforms:
-Clearspace (theme and add new Blogs)
-Drupal on About.Zappos.com
-Switch developers!

Which is easier to develop on, customize,
extend?
About.Zappos.com – POWERED BY Drupal

  - Easy updates and maintenance – no code pushes or deploys
  - Quick turnaround on projects
  - Customization and plugins easily available
Zappos ZETA

- In 2008, Zappos was building a new Zappos site from the ground up
- New templating system, new back-end code (Java), cleaner front-end
code, new search indexer (SOLR)
- Let's optimize the front-end to be more self-service and include a
CMS for all the static content
- FAQ, Legal, Customer Service pages to be managed in Drupal
FAQ, Customer Service Pages and Terms & Conditions

   -   Simple static content, frequent updates and additions
   -   No complicated functionality
   -   Simple for Drupal, Some challenges to combine 2 platforms
Challenge 1: Combining two technology stacks into 1 experience

Solution 1: Use our in-house proxy/rewrite engine to combine into
1 experience.



                      Drupal                         Zeta
                Apache, PHP, MySQL           Tomcat, Java, MySQL,
                                                     SOLR




                            Proxy/Rewrite technology



                              Zappos Experience




                        Customer
Challenge 2: Dealing with common/shared code on both platforms.
Make updates on both platforms?

Solution 2: Parse blank Zeta template into Drupal to share common
code.




                     Drupal                  Zeta
               Apache, PHP, MySQL   Tomcat, Java, MySQL,
                                            SOLR
Mission: Create category shopping landing pages

Requirements:

-Expose categories
-Independent management of links
-Image management
-Pull information dynamically from product catalog
Challenge 1: Pull information product catalog

Solution 2: Make a bunch of calls to internal APIs including SOLR
Challenge 2: Make an admin for non-technical users

Solution 2: Use a variety of contributed Drupal modules including:


- CCK
- Filefield
- Link
- Nodehierachy
- Views
Lessons Learned
Use a platform that works for your company, culture and development
style.

Clearspace == Feature rich, out of the box, not meant to be modified heavily or
often, not easily upgraded

Zappos == heavy customization, iterative changes, rapid deploys, flexible

Drupal better fit for Zappos company and development style
Leverage the creativity of your team to bend technologies to meet business
needs

Solutions don’t have to be documented or blessed

Remote template

Hybrid

Usage of API’s
Moving on from ALPs

• Quick Turn Around
• Automation isn’t always
  the answer
• Limitations of the
  existing toolset
• Allow for more
  configuration/flexibility
  within reason
Baffin
Baffin: Layouts
Baffin: Components
Baffin: Request Cycle
Baffin: Layouts




                  info file | template file | class file
Baffin: Components
Baffin: Components




                     class file | view file
CCK: Leveraging (?:In|Ex)ternal APIs

•   Search
•   Product
•   Generated Imagery
•   Reviews
Baffin: Shoes Page
Baffin: Shoes Internally
Baffin: Internal Admin
Baffin: Admin Management
Baffin: CCK Field
Baffin: Final Outcome
Components With Attitude

      Super awesome ya
Content Management System / ALP
System Solidarity / Iterations


Content Management System / ALP
Super awesomely cool stuff

    System Solidarity / Iterations


Content Management System / ALP
Cat-Skillz


Super awesomely cool stuff

    System Solidarity / Iterations


Content Management System / ALP
Open Source
              Maybe?
           ...Hopefully?
           (probably not)



             Cat-Skillz


Super awesomely cool stuff

    System Solidarity / Iterations


Content Management System / ALP
Mo Problems Mo Solutions




                      flickr.com/people/rakkhi/
Product Ticker




 link            video
Geolocation Product Ticker




  link                       video
Hero Video




 link        video
Zappos Video




 link          video
Grid Selector




 link           video
Limited Access




 link            video
Limited Access




 link            video
A Top Secret City For


             ?
Zappos VIP?

            ?                   ?
                                ?

            ?
                            ?


            ?   ?
                    ?
                        ?
                            ?
                            ?   ?
 link                               flickr.com/people/snoguitar/
on Flickr by INTVGene
Application Support
Where I come from…




Started in ZCLT in 2005

Helped manage
Powered by Zappos sites
2006-2010

Became an ASS in 2010
Application Support Specialist


Get It? ... GET IT???!




                                  spice  via Daniel
                                 photo via: flickr.com/people/alces/
Great, we have help, now what?

Own some processes, stop the frustration
• Permissions
• Login pages
• Documentation

Help the business collaborate
• Do more with existing tools

Listen to business needs, identify pain points
 • JIRA
Put all that together...
Stop, Collaborate and Listen...
Permissions

Permission levels

Layouts                      Fields
 • Homepage                   • URL aliases
 • Three-Column               • Google Analytics settings
 • Vertical
 • Trends

Components
• Category Navigation
• Page Content
• ...and a bunch of others
Permissions

User categories

Teams that own pages
 • Visual Merchandising
 • Information Architecture

Teams that update pages
 • Visual Design
 • Content
Permissions: Versatile Roles
Permissions: Well, kinda versatile.
Permissions: Examples
Information Architecture team
Permissions: Examples
Visual Design
Documentation

Just in case someone reads it, we put some together...
Documentation
Documentation: Components
Documentation: Visual Diagrams
    Homepage layout   Three-Column Layout
Documentation: Visual Diagrams
    Homepage layout   Three-Column Layout
BCP: Baffin Control Panel

Acronyms are cool, especially if they don't make sense

• Just a way to view our content internally
• Diving into the admin to find content wasnt fun
BCP: Baffin Control Panel
Login Pages
Uninspiring and generally useless login page:
New and improved!
JIRA

• Our Swiss Army Knife that we use Task management
• 60 projects, 450 custom fields
• All IT requests, asset management, customer feedback, lost
  shoes/items
• Prioritization, resourcing
JIRA: Landing Page Queue

• Purpose
• How will this page be
  found
• Expectations
• Live Date
• Expiration
JIRA: Landing Page Queue

• Notify relevant   • Track pages to completion
  departments         and beyond
Just the tip of the iceberg

• Role grows as the platform does
• Doing more with less
• Every day is different
Drupal Progression 2008 to Present

         early 2008
      (about.zappos.com)


                                     Internal User
          Static content


                                 Drupal


                      Customer
late 2008
(FAQ, Customer Service, Terms and Conditions)



Static content


                     Drupal              Website
2009



                            Information Architecture Team

Static content


   Internal       Drupal                        Website
 API, DB, Solr


                 Advanced Landing
                   Pages (ALPS)
2010
                  + Power End Users
                                      Application Support


Static content



   Internal       Drupal                 Website
 API, DB, Solr


                      Baffin
3rd Party API's
2011
                  + Business End Users

                                              Application Support



 Static content



   Internal
 API, DB, Solr
                     Drupal                     Website


Dynamic Image            Baffin
 creation API
                      Components


                                     caching,
3rd Party API's                     multivariate,   Mobile
                                  domain manager
Do It With Us!
Jobs.zappos.com

Check out our booth at DIWD

Thanks for coming!
Dear DIWD,

Slides: 
slideshare.com/zappos-fez/diwd-2011

Twitter: 
@zappos_diwd

Jeorbs: 
goo.gl/mwiwk
jobs.zappos.com

Love,
Zappos

More Related Content

What's hot

From WordPress With Love
From WordPress With LoveFrom WordPress With Love
From WordPress With LoveUp2 Technology
 
Drupal vs. the Others
Drupal vs. the OthersDrupal vs. the Others
Drupal vs. the Othersdrupalcampest
 
Drupal vs. the Others
Drupal vs. the OthersDrupal vs. the Others
Drupal vs. the OthersExove
 
Wordpress website development
Wordpress website developmentWordpress website development
Wordpress website developmentJohn Faust
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPALBrahm
 
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal Intro
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal IntroDrupal Global Training Day by Drupal Mumbai 6th Sep - Drupal Intro
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal IntroDrupalMumbai
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerNicole Szigeti
 
Going from Zero to Sixty in Drupal with Acquia
Going from Zero to Sixty in Drupal with AcquiaGoing from Zero to Sixty in Drupal with Acquia
Going from Zero to Sixty in Drupal with AcquiaAcquia
 
Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At Yahooelliando dias
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
 
Joomladay Es 2009 - Nooku Framework
Joomladay Es 2009  - Nooku FrameworkJoomladay Es 2009  - Nooku Framework
Joomladay Es 2009 - Nooku FrameworkNooku
 
Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At Yahoonarkoza
 
Contextual Tour of Plone - (a top open source web content management system)
Contextual   Tour of Plone - (a top open source web content management system)Contextual   Tour of Plone - (a top open source web content management system)
Contextual Tour of Plone - (a top open source web content management system)Ken Wasetis
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityTony McGuckin
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareAlfresco Software
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterBob Paulin
 

What's hot (20)

From WordPress With Love
From WordPress With LoveFrom WordPress With Love
From WordPress With Love
 
Drupal vs. the Others
Drupal vs. the OthersDrupal vs. the Others
Drupal vs. the Others
 
Drupal vs. the Others
Drupal vs. the OthersDrupal vs. the Others
Drupal vs. the Others
 
Wordpress website development
Wordpress website developmentWordpress website development
Wordpress website development
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPAL
 
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal Intro
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal IntroDrupal Global Training Day by Drupal Mumbai 6th Sep - Drupal Intro
Drupal Global Training Day by Drupal Mumbai 6th Sep - Drupal Intro
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
 
Going from Zero to Sixty in Drupal with Acquia
Going from Zero to Sixty in Drupal with AcquiaGoing from Zero to Sixty in Drupal with Acquia
Going from Zero to Sixty in Drupal with Acquia
 
Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At Yahoo
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Joomladay Es 2009 - Nooku Framework
Joomladay Es 2009  - Nooku FrameworkJoomladay Es 2009  - Nooku Framework
Joomladay Es 2009 - Nooku Framework
 
Building A Platform From Open Source At Yahoo
Building A Platform From Open Source At YahooBuilding A Platform From Open Source At Yahoo
Building A Platform From Open Source At Yahoo
 
Frontend State of the union
Frontend State of the unionFrontend State of the union
Frontend State of the union
 
Drupal
DrupalDrupal
Drupal
 
Contextual Tour of Plone - (a top open source web content management system)
Contextual   Tour of Plone - (a top open source web content management system)Contextual   Tour of Plone - (a top open source web content management system)
Contextual Tour of Plone - (a top open source web content management system)
 
JMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages ScalabilityJMP401: Masterclass: XPages Scalability
JMP401: Masterclass: XPages Scalability
 
Getting into WordPress
Getting into WordPressGetting into WordPress
Getting into WordPress
 
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco ShareCUST-10 Customizing the Upload File(s) dialog in Alfresco Share
CUST-10 Customizing the Upload File(s) dialog in Alfresco Share
 
Modular Open Source in Java for Now and Later
Modular Open Source in Java for Now and LaterModular Open Source in Java for Now and Later
Modular Open Source in Java for Now and Later
 

Viewers also liked

Viewers also liked (6)

Belenes primaria
Belenes primariaBelenes primaria
Belenes primaria
 
Practica 5
Practica 5Practica 5
Practica 5
 
House music
House music   House music
House music
 
KUSHETUTA FRANCEZE
KUSHETUTA FRANCEZEKUSHETUTA FRANCEZE
KUSHETUTA FRANCEZE
 
10 lecture 1 principles of disease managment
10 lecture 1 principles of  disease managment10 lecture 1 principles of  disease managment
10 lecture 1 principles of disease managment
 
E drejta romake
E drejta romakeE drejta romake
E drejta romake
 

Similar to Diwd 2011-111011223430-phpapp01

Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyMarcos Labad
 
WordPress 3.x for the sake of your sanity
WordPress 3.x for the sake of your sanityWordPress 3.x for the sake of your sanity
WordPress 3.x for the sake of your sanityShelley Keith, MSIQ
 
Absolute Beginners Guide to Drupal
Absolute Beginners Guide to DrupalAbsolute Beginners Guide to Drupal
Absolute Beginners Guide to DrupalRod Martin
 
Move past bootstrap and build our lightweight responsive framework w.v1.2
Move past bootstrap and build our lightweight responsive framework w.v1.2Move past bootstrap and build our lightweight responsive framework w.v1.2
Move past bootstrap and build our lightweight responsive framework w.v1.2Eric Overfield
 
Drupal for Webmasters by Brett Baker
Drupal for Webmasters by Brett BakerDrupal for Webmasters by Brett Baker
Drupal for Webmasters by Brett Bakerwebfinearts
 
Upgrading your site from Drupal 6 to Drupal 7
Upgrading your site from Drupal 6 to Drupal 7Upgrading your site from Drupal 6 to Drupal 7
Upgrading your site from Drupal 6 to Drupal 7Andrew Martha
 
Wordpress intro
Wordpress introWordpress intro
Wordpress introthe-colab
 
Cloud and agile software projects: Overview and Benefits
Cloud and agile software projects: Overview and BenefitsCloud and agile software projects: Overview and Benefits
Cloud and agile software projects: Overview and BenefitsGuillaume Berche
 
Spree framework overview
Spree framework overviewSpree framework overview
Spree framework overviewmartin_hong91
 
WordPress as a CMS - Case Study of an Organizational Intranet
WordPress as a CMS - Case Study of an Organizational IntranetWordPress as a CMS - Case Study of an Organizational Intranet
WordPress as a CMS - Case Study of an Organizational IntranetTech Liminal
 
Drupal Distributions
Drupal DistributionsDrupal Distributions
Drupal DistributionsAnne Stefanyk
 
Building User-Centred Websites with Drupal
Building User-Centred Websites with DrupalBuilding User-Centred Websites with Drupal
Building User-Centred Websites with Drupalamanda etches
 
Massively maintained accessibility: WordPress
Massively maintained accessibility: WordPressMassively maintained accessibility: WordPress
Massively maintained accessibility: WordPressJoseph Dolson
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Nicole Szigeti
 
In-Fisherman.com - Building an Enterprise Level Drupal Site
In-Fisherman.com - Building an Enterprise Level Drupal SiteIn-Fisherman.com - Building an Enterprise Level Drupal Site
In-Fisherman.com - Building an Enterprise Level Drupal SiteMediacurrent
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
 
Lazy Coder Camp Edition 1
Lazy Coder Camp Edition 1Lazy Coder Camp Edition 1
Lazy Coder Camp Edition 1phpfactory
 
Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaGeorge Wilson
 
Drupal 6x Installation
Drupal 6x Installation Drupal 6x Installation
Drupal 6x Installation Micky Metts
 
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and DevelopersIntroduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and DevelopersNetwoven Inc.
 

Similar to Diwd 2011-111011223430-phpapp01 (20)

Implementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing CompanyImplementing a Symfony Based CMS in a Publishing Company
Implementing a Symfony Based CMS in a Publishing Company
 
WordPress 3.x for the sake of your sanity
WordPress 3.x for the sake of your sanityWordPress 3.x for the sake of your sanity
WordPress 3.x for the sake of your sanity
 
Absolute Beginners Guide to Drupal
Absolute Beginners Guide to DrupalAbsolute Beginners Guide to Drupal
Absolute Beginners Guide to Drupal
 
Move past bootstrap and build our lightweight responsive framework w.v1.2
Move past bootstrap and build our lightweight responsive framework w.v1.2Move past bootstrap and build our lightweight responsive framework w.v1.2
Move past bootstrap and build our lightweight responsive framework w.v1.2
 
Drupal for Webmasters by Brett Baker
Drupal for Webmasters by Brett BakerDrupal for Webmasters by Brett Baker
Drupal for Webmasters by Brett Baker
 
Upgrading your site from Drupal 6 to Drupal 7
Upgrading your site from Drupal 6 to Drupal 7Upgrading your site from Drupal 6 to Drupal 7
Upgrading your site from Drupal 6 to Drupal 7
 
Wordpress intro
Wordpress introWordpress intro
Wordpress intro
 
Cloud and agile software projects: Overview and Benefits
Cloud and agile software projects: Overview and BenefitsCloud and agile software projects: Overview and Benefits
Cloud and agile software projects: Overview and Benefits
 
Spree framework overview
Spree framework overviewSpree framework overview
Spree framework overview
 
WordPress as a CMS - Case Study of an Organizational Intranet
WordPress as a CMS - Case Study of an Organizational IntranetWordPress as a CMS - Case Study of an Organizational Intranet
WordPress as a CMS - Case Study of an Organizational Intranet
 
Drupal Distributions
Drupal DistributionsDrupal Distributions
Drupal Distributions
 
Building User-Centred Websites with Drupal
Building User-Centred Websites with DrupalBuilding User-Centred Websites with Drupal
Building User-Centred Websites with Drupal
 
Massively maintained accessibility: WordPress
Massively maintained accessibility: WordPressMassively maintained accessibility: WordPress
Massively maintained accessibility: WordPress
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
In-Fisherman.com - Building an Enterprise Level Drupal Site
In-Fisherman.com - Building an Enterprise Level Drupal SiteIn-Fisherman.com - Building an Enterprise Level Drupal Site
In-Fisherman.com - Building an Enterprise Level Drupal Site
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Lazy Coder Camp Edition 1
Lazy Coder Camp Edition 1Lazy Coder Camp Edition 1
Lazy Coder Camp Edition 1
 
Modern websites in 2020 and Joomla
Modern websites in 2020 and JoomlaModern websites in 2020 and Joomla
Modern websites in 2020 and Joomla
 
Drupal 6x Installation
Drupal 6x Installation Drupal 6x Installation
Drupal 6x Installation
 
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and DevelopersIntroduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
Introduction to SharePoint 2013 WCM-DM-ECM for Business Users and Developers
 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
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
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
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
 
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!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
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
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 

Diwd 2011-111011223430-phpapp01

Editor's Notes

  1. This is the Drupal Case Study of Zappos. We’ve been using Drupal since early 2008 and while it doesn’t power transactional parts of the site currently a major player in our tech stack
  2. - I’m Alex - Former head of Front-End Development and User Experience With Mobile team since June Talking about: History of Drupal and the progression of how we’ve gotten to where we are now Walkthrough the pre-CMS, pre-Drupal days. first Drupal project and beyond Geoff Technical look into Advanced Landing Pages, Baffin and what’s under the hood. Daniel Dynamic Components and building on top of the Baffin platform Stephen Application Support, End-User Support and Documentation with Drupal Progression
  3. Our small front-end development team This is an actual picture of our team in a San Francisco Apple Store during our outing
  4. 10 plus sites to maintain including: international sites, lifestyle sites white label sites called Powered By Zappos, which were sites that were themed like the brand but were powered by the Zappos infrastructure and maintain by the front-end team Powered by Zappos program ended in 2010
  5. Our old “classic platform” Perl/MySQL platform Lots of static and non-ecommerce content Lots of requests to make small link updates and changes
  6. “ Please Change the image and link on page” Definitely got bogged down in small updates. Baaah!!! We need a CMS of some sort! Not sustainable
  7. - First taste of a CMS - End of 2007 implemented a 3rd party Blogs platform for blogs.zappos.com - Clearspace, J2EE Enterprise Social Collaboration Platform - Used for blogs, but potentially planned for forums, wikis and customer interaction + Feature rich out of the box: User management, Forums, Wikis, Friends, Commenting, themeing   + Nice to have content be manageable via a CMS Looked promising and I have diagrams of how we were potentially going to build out our future CMS strategy using Clearspace. But….
  8. - Early 2008 had Blogs.Zappos.com in the wild In production for about 6 months 3 groups monkeying around with Clearspace Developers customizing/themeing Blogs Sys Admins managing servers, receiving traffic, deploying code Bloggers writing 3-4 blogs posts a day
  9. But after 6 months of monkeying around…. Starting to get the sense that this isn’t a great fit for Zappos…. Developers : Tough to customize and weird templating Written without front-end developers on the team CSS appending (1 monster CSS file for all themes, bottom theme is the most active) Sys Admins : Performance laggy, many reboots, heavy logging Upgrade path tough with any customizations Deploys tougher with Java Bloggers: Rich text editor sucked Not a lot of great 3 rd party sharing and plugins
  10. Why not Wordpress? Probably the most popular Blog platform Sys team questioned the " enterprise "ness of Wordpress Traffic concerns - Engineer: Single Sign-on easier with Java than with PHP - New site revamp is Java
  11. - At SXSW 2008, session called Content Management System Roundup - SharePoint ,  Expression Engine ,  Collage  and Drupal -  Jeff Eaton , from  Lullabot gave a great presentation on Drupal - He showcased of some higher profile sites that were running Drupal. - I was impressed with the variety of sites running Drupal and the fact that they were high-traffic sites. Sony BMG, MTV etc.. - I had a chance to talk to Jeff Eaton and Mike Essl after the sessions about the strengths and weaknesses of Drupal and Expression Engine - both agreed for the things we'd use a CMS for at Zappos, Drupal would be a solid solution. - A few months later at IA Summit I talked to Christian Crumlisch from Yahoo Curator of Design Patterns Library. He said it was a solid platform, flexible and feature rich but you would need somebody that understood the internals if you were going to customize and modify it a bit.
  12. Tony had an idea to create a new site: About.Zappos.com Culture, Company information etc.. Great to try Drupal on because: - Primarily static content or content that needed easy updating by business users - No e-commerce parts - Stand-alone site - New site, not replacing  - Little risk and can throttle traffic Let's give Drupal a try!
  13. About.Zappos.com – also a compare project! 2 Developers and 2 CMS’s (Geoff new hire, really smart) - Let’s have both Fabio and Geoff work on both projects and compare the two systems - Fabio working on Themeing and building out new Blogs - Geoff working on About.Zappos.com - Switch half way through and continue at the end compare and contrast - Drupal wins
  14. We have our first Drupal Site!  - Easy to maintain and update Little code pushes Quick turnaround on projects Customization and plenty of plugins available Awesome to have a Content Management System! 
  15. Middle of 2008 we began redoing our Zappos site architecture Ground up redesign of the site From Perl/MySQL to JAVA/MySQL/SOLR New templating system, cleaner front-end code Let’s optimize the site to leverage a CMS, therefore making content more self-service Let’s use Drupal for all our Customer Service pages, Frequently Asked Questions and Legal pages!
  16. Frequently Asked Questions, Customer Service Pages and Terms and Conditions were great to put into Drupal Simple static content that required frequent updates and additions No complicated functionality Pretty straight forward for Drupal to handle But we had some challenges to combine 2 platforms
  17. Challenge #1: How do you combine two technology stacks into 1 seemless experience. Different URLs, different servers, linking between sites Solution: Use our in-house proxy and rewrite engine to combine the two stacks into one, unified experience.
  18. Challenge 2 : Dealing with common/shared code on both platforms. Make updates on both platforms? Solution 2: Parse blank Zeta (JAVA) template into Drupal to share common code. Have this blank template from the Java platform that could be parsed by Drupal and inject it’s own content into the blank space
  19. New Project We had a new Mission Advanced Landing Pages Requirements: Expose categories Independent management of links Image management Pull information dynamically from product catalog - Drupal wasn’t the automatic choice! - Drupal is a star but we have other contenders because of deep integration with e-commerce platform - Riot Family (JAVA as back-end) vs. Drupal (our static CMS star) - After a quick 1 week prototype we chose Drupal - Drupal wins again...first step to becoming a consumer of external API's (see Jeff Eaton's talk at DrupalCon DC)
  20. Challenge 1 : Pull information product catalog Solution 2: Make a bunch of calls to internal APIs including SOLR
  21. Challenge 2 : Make an admin for non-technical users Solution 2: Use a variety of contributed Drupal modules including: - CCK - Filefield - Link - Nodehierachy - Views Entire project was done very quickly. Geoff worked on it and it was in production after only 6 weeks of development Saw heavy traffic relatively soon and was serving up some of the 10 most visited landing pages on our site Geoff is going to do a brief overview of Advanced Landing Pages But also go into the second generation of Advanced Landing Pages called Baffin.
  22. Use a platform that works for your company, culture and development style.  Clearspace == Feature rich, out of the box, not meant to be modified heavily or often, not easily upgraded Zappos == we’re going to heavily customize our software, lots of iterative changes, lots of rapid deploys, We need a very flexible platform Drupal better fit for Zappos company and development style Leverage the creativity of your team to bend technologies to meet business needs Solutions don’t have to be documented or blessed Remote template Hybrid tech stack Usage of API’s Are all examples of using Drupal in a non-traditional way but in a way that meets our needs.
  23. Quick Turn Around - Due to business deadlines, we didn't have much time for design and development. - Development time took about 4 weeks. This allowed us to get something out to market rather quickly. - However, the development and scaling of what was put together could have been done much better. - In having such a quick turn around, it was much "easier" for us to learn from what went wrong or what surprisingly went well. Automation isn ’t always the answer - Even though only a small portion of these pages were automated, the business was seeing unexpected/undesired products, search listing, and brand results. - For our purposes, it made sense for us to allow for the best of both worlds. The ability for our business users to automate when it makes sense but allow for manually intervention for the cases where it makes sense. Limitations of the existing toolset - Drupal offers quite a bit out of the box. In the interest of time, we used whatever we could at the time, i.e. out of the box functionality from views and CCK amongst a slew of other modules. - We learned that if we wanted to scale and extend the system, we needed to build on top of Drupal using the built in APIs. This also included the ability to theme on much granular levels. - Instead of using what is available (with limited flexibility), it made the most sense for Zappos to develop something that was more inline with our business that hooks into the underlining infrastructure of Drupal. Allow for more configuration within reason - Not much configuration or flexibility was given with this iteration of landing pages. - The business was asking for the ability to repurpose these pages for things outside of boutiques (although that was the purpose of them). - Instead of looking to create a mechanism for just building landing pages, it made sense to build out a platform on top of Drupal that would adhere to the way that Zappos operates. In this platform, boutique pages would be a consumer of this, along with various other types of pages that had been requested in the past.
  24. Framework Approach - As previously mentioned, instead of tailoring towards a single solution (i.e. boutique pages), this second iteration would allow for the creation of boutiques but other types of pages with very minimal development work. - Like most frameworks, this approach would entail very little development (handle redundant tasks) and allow for flexibility where applicable. One of the big pluses to using Drupal and PHP.
  25. Layouts Components - This approach would be broken out into two destinct parts, layouts and components. Both of these would come from one centralized moudle we refer to as Baffin. - Baffin takes on an MVC-like approach that is two layers deep (maybe talk about what MVC is?). The first layer is handled on a layout level where layouts render the top layer including any page specific and region specific. The second layer is the component level where the base information is passed to the component where the component can hit various APIs, do additional queries, processing, mesaging of the data, custom view work, and a bunch of other things which acts. Anything controller related is handled by the baffin module to help in automated redundant tasks. - Baffin is responsible for permissions, reordering, removing, configuration of layouts, grandular theming, the reusing of content, API related tasks, and to name a few. Baffin by itself does nothing, its the creation of layout and components that make it useful. Its geared towards developers developing on top of it verses it being an out of the box solution.
  26. - Layouts are the initial starting point for baffin. Layout are responsible for:   - Configuration for the layout   - The output of assigned regions   - The output handled on a layout level (verses component level)   - The gathering of additional data on on a layout level and any additional views that are needed. - Each region contains a set of nodes which are broken down into components which will be discussed next.
  27. - A component essentially is a content type. However, a content type is treated essentially as a template for a piece of content to a layout. - A component consists of two parts, a model and view. The model handles basic operations like making API calls, post processing of data, settings view variables, the handling of views, and so on. - The view_directory is being set within the baffin_component hook. The baffin_component hook acts as more as a configuration which includes a number of options such as what directory the backend components come from, what directory the views come from, whether the view should cascade to the active theme, and so on. - The base view is located based upon what is set when the baffin_component hook is invoked. Depending if the option has been set in the hook, there is a cascading system that relates to a specific view. It goes as following: theme/view_directory/layout -> theme/view_directory -> module/view_directory/layout -> module/view_directory - We use components instead of blocks because these components are based on a page level verses a site level and the maintenance would be a nightmare if it wasn't done on such a granular level.
  28. - A component essentially is a content type. However, a content type is treated essentially as a template for a piece of content to a layout. - A component consists of two parts, a model and view. The model handles basic operations like making API calls, post processing of data, settings view variables, the handling of views, and so on. - The base view is located based upon what is set when the baffin_component hook is invoked. Depending if the option has been set in the hook, there is a cascading system that relates to a specific view. It goes as following: theme/view_directory/layout -> theme/view_directory -> module/view_directory/layout -> module/view_directory - The view_directory is being set within the baffin_component hook. The baffin_component hook acts as more as a configuration which includes a number of options such as what directory the backend components come from, what directory the views come from, whether the view should cascade to the active theme, and so on. - We use components instead of blocks because these components are based on a page level verses a site level and the maintenance would be a nightmare if it wasn't done on such a granular level.
  29. Search - We created a CCK field that allows a user to perform a search, return back a set of facets, or just simply get back the results entered in by the user. Essentially the user will select a set of rules and the desired results are returned back. - In CCK, the settings form allows a user to select which fields a search can perform on (productTypeFacet, categoryFacet, subCategoryFacets, attributeFacets, and so on), the ability to facet on search results, provide a search term, sorting, field aliasing, and a slew of other things. - The field itself (the process callback) displays what parts have been selected from the settings. The field or filters selected on the settings dynamically update once an onchange event occurs. Therefore, if a user selects productTypeFacet = Shoes, then the categoryFacet would only contain facet values that correlate to that. This is being done with hitting the Zappos API through our taxonomy or product catalog. - The values that are selected as saved out to the database and serves basic search results. Where baffin comes into play is this CCK widget can be repurposed for various uses. For example: returning back facet values, displaying search results, obtaining brand information, or getting back the resutls and doing some JavaScript with it. In the cases of doing something with the data, we are hitting the Zappos API to get search results or facet values. Product - We have a simple CCK field that allows a user to enter in a single productId or styleId (a styleId is a productId + colorId). - The settings form allows for the use of selecting a productId or styleId for the business user. - The field itself (the process callback) contains what was reflected in the settings. - By default, the field displays the product and determines whether the product has stock or not. The field will talk to the Zappos API to obtain the product information. - In cases where the business wants to display an individual product, this works out quite well. However, like most things in life, products run out of stock, so in these cases, we will have a backup search that acts as a catch all. Generated Imagery - We have a bit more complex CCK field where you select a template and based upon what template has been selected, will display an unknown set of fields (based upon the idea of a discovery service approach). This template is managed and maintained from another internal tool and is used elsewhere for other services. - For example, if you select template xyz, template xyz may contain an angle, styleId, another styleId, or some other undetermined field at that point. Once these fields have been filled in, a preview option is available that will talk to another service to make sure the values that were filled in and are valid. If they are valid, based upon the values set on that template, an image will be dynamically generated based upon what is set in that template. Once the preview is valid, a user can enter in alt text, title, link, and a publish option will appear. Reviews - Our oldest CCK field of this kind talks to our Reviews Solr core to show reviews based upon our taxonomy (Make sure we can say Solr). - The field itself (the process callback) contains all the available fields based upon our taxonomy. - On the forward facing side, based upon what has been selected, we talk to the Reviews core based upon what has been selected by the business. Others - We have other CCK fields that aren't API related that we are using that benefit the business that Daniel will discuss in a bit.
  30. - Discuss how the contents of the page contains a number of dynamic and static elements - Components to discuss:   - Category Navigation: Using the search CCK Field on the backend and then talks to an internal API to display links. The back end component will read in the values from the node and talk to an internal API that will then pass the values to the front end component where it will be rendered.   - Image Gallery: Builds ontop of filefield to create our own version of this CCK widget. This allows us to do things that does not affect or impact filefield. The images are static and the JavaScript that is used for this component is contained and rendered on the Java platform.   - Recommendations: The business sets the rules for what sort of recommendation should be displayed. Then on the front end we talk to our recommendation engine based upon what is set by the business as to what should be displayed.   - Product Feed: Uses the search CCK field to displays search results. The filters are set by the business. The back end component will then talk to the Zappos API to get the results set by the business where the view will render the result.
  31. Geoff Covered: Basics / Fundamentals of Baffin Creating Components / Layouts with code Standard Zappos Page’s Components I’ll be covering Non-standard components Experimental / trying out ideas Common theme: Moving / Interactive But first I want to: Re-iterate or piggy back off Alex’s points Explain how we got to a point where we can: Experiment for the site Play with new ideas for the site
  32. Moslow’s BG is Maslow Important Psychologist Born / raised in Brooklyn Human beings are naturally good Studied superb human beings rather than non-functional ones Hierarchy Human Needs Order in which attempted Typically Don’t Skip a step Water VS Belonging Air VS Friends
  33. Physiological Needs: Food, Air Water For us: CMS Barraged with content updates We were just trying to get some AIR to breath! First Iteration of ALP’s
  34. Safety Needs Shelter, Financial Security Personal Safety For US Second Iteration (Baffin) Solidification of Baffin through iteration Re-worked a quite a bit (API / Other Features)
  35. Love / Belonging Belonging to social groups Making new friends Falling In Love, etc. For us Super awesomely cool stuff Really fun stuff Interactive, Flash, Moving Experimenting / Playing with new Idea’s
  36. Esteem Seeking Recognition Attempting to win awards For us: Cat-skillz (mountain range) Next Iteration Probably Drupal 7/8
  37. Self-Actualization Gandhi, Einstein, Ben Stein, and Nelson Mandela Attempting to win awards Not everyone reaches self-actualization For us: Just like Maslow thinks humans naturally good I think Zappos is inherently good as well Future: Open Source (Where it makes sense) Future: More Involved In Community We are definitely not anywhere near there yet
  38. More Feature Requests / Solutions Completed The more solutions to future problems we have.
  39. I have a couple of solid Examples of this But first Going to show just some stuff that “moves” or “animates” (This slide is pretty pointless)
  40. Uses the Zappos API Specifically The Search Controller Admin uses “Patron Field” aka Zappos API Field, for filtering/faceting on results
  41. Also the Zappos API Specifically The Statistics Controller (This API is open folks) Backend Magic Gives us rough City/State Information Admin Also “Patron Field” aka Zappos API Field, for filtering/faceting on results
  42. Simple, yet cool. I love it Laurie who works a lot with video and multimedia Came up to me and showed me an example of what she wanted Code example: JavaScript from 1999 Uses HTML5 Video Fallback to Regular Hero Image
  43. Result of abusing WYSIWYG’s in Drupal <object> for our video player doesn’t scale If we change our player, we are screwed / hard to find random pieces all over Used Community Module (Video filter, added our custom filter the module) Two ways: [video=http://example.flv] and Component
  44. ZCLT: Exposure to and encourage adoption of Wiki usage PBZ: Drupal exposure, I was the  business client for the front end team ASS: Helped facilitate all of the above and take it to the next level
  45. ZCLT: Exposure to and encourage adoption of Wiki usage PBZ: Drupal exposure, I was the  business client for the front end team ASS: Helped facilitate all of the above and take it to the next level
  46. Started with About.Zappos.com Standalone site with static content Typical usage of Drupal, very similar to most Drupal installations out in the wild A few internal users and some light traffic from customers
  47. Late 2008, Used Drupal to power Frequently Asked Questions, Terms and Conditions Still pulled in static content and had light traffic but was incorporated into the e-commerce site Used the remote template parsing I mentioned in my talk
  48. Advanced Landing Pages was the first time we had to pull in product catalog information from SOLR, Databases and other internal API’s. Our information architecture team under UX was put in charge of managing the landing pages. We also started using Drupal on multiple sites for static content. Traffic wise, Drupal was hosting some of the most visited landing pages on Zappos.com
  49. 2010 brought Baffin, which is what Geoff did a deep dive on We continued to hit internal API’s and additionally started hitting some external API’s as well With the increasing number of end-users that were managing Advanced Landing Pages and then Baffin, we brought on App Support App Support is what Stephen Hayden talked about
  50. By 2011 and currently, our stack looks something like this: We additionally hit a Dynamic Image Creation API that can generate images on the fly Baffin has increasingly been used as a platform to develop and extend upon. - Daniel talked about building Components on top of Baffin With the increased traffic we started seeing: Caching for performance Multivariate for testing Domain manager for multisite capability Finally we started to expose our Baffin content to be leveraged for our Mobile Apps
  51. Do It With Us! We’re hiring for Drupal positions, check jobs.zappos.com!  We have a booth here at Do It With Drupal. Both Jen and Tonya are attending it! We also have a prize wheel where you can win various prizes. Thanks for coming to our Do It With Drupal presentation