SlideShare a Scribd company logo
Performance Considerations for
   Custom Theme Development
                   Kevin Weisser
                  Noriaki Tatsumi
Overview


•   Introduction to Themes
•   Blackboard Customization Approach
•   Introduction to CSS
•   CSS Performance Considerations
•   Image Performance Considerations
•   Front-end Analysis Tools
Blackboard Custom Themes
Blackboard Custom Themes
Blackboard Custom Themes


• Blackboard 9.x contains a flexible user interface
  which can be easily branded to have the look
  and feel of your institution
• This can be accomplished by changing any of
  the following:
  – Themes/Color Palettes
  – Images
  – Customizing Login Page
Blackboard’s Recommended
           Customization Approach
1.   Access Learn as System Administrator
2.   Navigate to System Admin tab
3.   Click on Brands and Themes
4.   Click on Theme and Palette Catalog
5.   Click icon beside BbLearn Theme
6.   Download the theme and save it to your
     desktop
Blackboard’s Recommended
          Customization Approach
7. From Theme and Palette Catalog, select Create
    Theme
8. Provide the required fields (Theme Name and
    Reference Name) and click Browse My Computer
9. Select the recently downloaded theme
10. Click Submit
11. Open the file on the application server (Bb root-
    >content->vii->BBLEARN->branding->themes-
    >Your Theme Folder) in your favorite editor and
    proceed to make your changes
Blackboard’s Recommended
Customization Approach Cont.
Performance Stories From the Field


• Customized login page loads slowly
  – Mitigated by limiting the requests to those used by
    the browser
• Drag and drop functionality appears choppy
  – Mitigated by cleaning up poor performing CSS
    selectors
• Pages load slowly in areas with limited
  connectivity
  – Mitigated by leveraging browser cache and
    ensuring that requests were compressed/minified
Introduction to CSS


• Imagine the following block:
       ...
       ul#summer-drinks li {
          font-weight: normal;
          font-size: 12px;
          color: black;
       }
       …
       <ul id="summer-drinks">
         <li>Whiskey and Ginger Ale</li>
         <li>Wheat Beer</li>
         <li>Mint Julip</li>
       </ul>
       …
Introduction to CSS


• You want to designate a favorite:
    …
    ul#summer-drinks li {
       font-weight: normal;
       font-size: 12px;
       color: black;
    }
    .favorite {
      color: red;
      font-weight: bold;
    }
    …
           <ul id="summer-drinks“>
                 <li class=“favorite”>Whiskey and Ginger Ale</li>
                 <li>Wheat Beer</li>
                 <li>Mint Julip</li>
           </ul>
Introduction to CSS
Selector                Specificity

*                       0,0,0,0

li                      0,0,0,1

ul li                   0,0,0,2

ul ol li.red            0,0,1,3

li.red.level            0,0,2,1

#x34y                   0,1,0,0

style=“display:none”    1,0,0,0
Introduction to CSS


• Higher specificity selectors are applied

• Last style declared is applied when a tie exists

• !important overrides the specificity
Quantifying Impact
CSS Performance Considerations


• Anti-patterns
  –   Unused Selectors
  –   Universal Selectors
  –   Over Qualified Selectors
  –   :hover Pseudo Selector
  –   Descendant Selectors
  –   @import Usage
• Optimization
  – Minification
Unused Selectors


• What are unused selectors?
  – Declared selectors which are not applied to any
    element of the DOM
• How does this impact performance?
  – CSS is blocking
  – More Styles = Larger Files = Longer download
    times
  – More Styles = More Parsing
  – More Styles = More Evaluations
Unused Selectors


• Mitigation techniques
  – Split external CSS into smaller files grouped by
    related functionality/styles
  – When adding styles:
     • Be aware of already defined styles
     • Be aware of selector specificity
     • Be aware of which attributes are available various
       DOM elements
Universal Selector


• What is a universal selector?
  – Universal selectors are denoted by the ‘*’ symbol
     • Example: .itemGallery *{zoom:1;}
• How does this impact performance?
  – Right to left evaluation
  – Reflow in interactive pages
• Mitigation techniques
  – Be specific
Universal Selector
Universal Selector
Over Qualified Selectors


• What is an over qualified selector?
  – ID selectors denoted by ‘#’ that has a preceding
    element tag
     • Example: div#lightboxContent h2{position:relative};
  – Class selectors denoted by ‘.’ that has a preceding
    element tag
     • Example: div.stopped p img{background:#fff -180px;}
Over Qualified Selectors


• How does this impact performance
  – One more comparison is required during evaluation
• Mitigation techniques
  – Don’t specify the element before the ID/Class
    selector
  – IDs should be unique
  – Classes can be unique
:hover Psuedo Selector


• What is the :hover pseudo selector?
  – Elements that specify a different style when the
    mouse hovers over the element element
     • Example:
        – tr.S {background-color:#000000}
        – tr.S:hover {background-color:#FFFFFF}
• How does this impact performance?
  – IE degradation on non-anchor elements
  – IE9 may correct this problem
:hover Psuedo Selector
• Mitigation techniques
        <style type="text/css">
          tr.S {background-color:#000000}
          tr.S:hover {background-color:#FFFFFF}
        </style>
        <table>
        <tr class="S">
          <td>foo bar</td>
        </tr>
        </table>

        <table>
        <tr style="background-color:#FFFFFF"
        onmouseover="this.style.backgroundColor='#000000'"
        onmouseout="this.style.backgroundColor='#FFFFFF'">
          <td>foo bar</td>
        </tr>
        </table>
Descendant Selector


• What are descendant selectors?
  – Descendant selectors filter based criteria
     • Example: treehead treerow treecell {…}
• How does this impact performance?
  – More evaluations
Descendant Selector


• Mitigation techniques
  – Use of child selectors prevent DOM traversal
     • treehead > treerow > treecell {…}
  – Class selector is preferred
     • .treecell-header {…}
  – Use caution this approach can reduce reusability
@import Usage


• What does @import do?
  – Allows stylesheets to include other stylesheets
• How does this impact performance?
  – Set number of connections available to request
    resources
  – Eliminates parallelism
• Mitigation techniques
  – <link> tags alllow for parallel CSS download
CSS Minification


• Process which removes comments, return
  characters, and unnecessary white space
• Sacrifices readability for smaller file sizes
• Free tools available (ex. YUICompressor)
• Themes uploaded from the System Admin tab
  are immediately compressed
CSS Minification
Image Performance Considerations


• Anti-patterns
  – Inappropriate image format
  – Unreachable images
  – Unused Images
Inappropriate Image Format:
                  JPEG
• Recommended for realistic pictures with smooth
  gradients and color tones
• Not lossless
• Sacrifice compression for resolution
• JPEGTran optimization
Inappropriate Image Format:
               PNG and GIF
• PNG and GIF should be used for solid color images
  (charts or logos)
• Use PNG over GIF unless
  – Image contains animation
  – Image is extremely small (a few hundred bytes),
    because GIF tends to be smaller than PNG
• PNG is superior because
  – Copyright free
  – More efficient compression
  – Stores all bit depths
• OptiPNG, PNGCrush for optimization
Unreachable Images


• Make sure path to image is correct
• 404 status on any request is a wasted request
  – Request may be blocking
  – Reduces parallelism
• Verify all images are reachable via browser
  profile tools, such as Firebug
Unused Images


• Request to unused images creates unnecessary
  delays
• Longer download times
• Reduced parallelism
Front End Analysis Tools

• Firebug (http://getfirebug.com/)
   – Inspect HTML and modify style/layout in real-time
   – Debug JavaScript
   – Analyze network usage and performance
• PageSpeed (http://code.google.com/speed/page-speed/)
   – Optimize with Web performance best practices
   – Rules of particular interest
      • Avoid bad requests
      • Avoid CSS @import
      • Combine external CSS
      • Minify CSS
      • Optimize Images
      • Use efficient CSS Selectors
Questions & Answers
Please provide feedback for this session by emailing
         DevConFeedback@blackboard.com.


            The title of this session is:
Performance Considerations for Custom Theme (CSS)
                   Development

More Related Content

What's hot

Basic-CSS-tutorial
Basic-CSS-tutorialBasic-CSS-tutorial
Basic-CSS-tutorial
tutorialsruby
 
Material design
Material designMaterial design
Material design
Mathi Rajalingam
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS Troubleshooting
Denise Jacobs
 
Class vs. id
Class vs. idClass vs. id
Class vs. id
krichardson233
 
Css
CssCss
Websites With Wordpress
Websites With WordpressWebsites With Wordpress
Websites With Wordpress
Charly Leetham
 
Building Webs Better
Building Webs BetterBuilding Webs Better
Building Webs Better
David Eldridge
 
Responsive web design with html5 and css3
Responsive web design with html5 and css3Responsive web design with html5 and css3
Responsive web design with html5 and css3
Divya Tiwari
 
Html
HtmlHtml
Css 1. -_introduction_2010-11_
Css 1. -_introduction_2010-11_Css 1. -_introduction_2010-11_
Css 1. -_introduction_2010-11_
Jupiterstar Ko
 
Css
CssCss
SilverlightDevIntro
SilverlightDevIntroSilverlightDevIntro
SilverlightDevIntro
Pratik Aggarwal
 
Ppt ch05
Ppt ch05Ppt ch05
Ppt ch05
1geassking
 
Cine scope
Cine scopeCine scope
Cine scope
Mayuresh Wadekar
 
Ppt ch08
Ppt ch08Ppt ch08
Ppt ch08
1geassking
 
Cascading style sheets - CSS
Cascading style sheets - CSSCascading style sheets - CSS
Cascading style sheets - CSS
iFour Institute - Sustainable Learning
 
Chapter 17: Responsive Web Design
Chapter 17: Responsive Web DesignChapter 17: Responsive Web Design
Chapter 17: Responsive Web Design
Steve Guinan
 
Cascading Style Sheets By Mukesh
Cascading Style Sheets By MukeshCascading Style Sheets By Mukesh
Cascading Style Sheets By Mukesh
Mukesh Kumar
 
Css week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandourCss week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Colors In CSS3
Colors In CSS3Colors In CSS3
Colors In CSS3
Lea Verou
 

What's hot (20)

Basic-CSS-tutorial
Basic-CSS-tutorialBasic-CSS-tutorial
Basic-CSS-tutorial
 
Material design
Material designMaterial design
Material design
 
Advanced CSS Troubleshooting
Advanced CSS TroubleshootingAdvanced CSS Troubleshooting
Advanced CSS Troubleshooting
 
Class vs. id
Class vs. idClass vs. id
Class vs. id
 
Css
CssCss
Css
 
Websites With Wordpress
Websites With WordpressWebsites With Wordpress
Websites With Wordpress
 
Building Webs Better
Building Webs BetterBuilding Webs Better
Building Webs Better
 
Responsive web design with html5 and css3
Responsive web design with html5 and css3Responsive web design with html5 and css3
Responsive web design with html5 and css3
 
Html
HtmlHtml
Html
 
Css 1. -_introduction_2010-11_
Css 1. -_introduction_2010-11_Css 1. -_introduction_2010-11_
Css 1. -_introduction_2010-11_
 
Css
CssCss
Css
 
SilverlightDevIntro
SilverlightDevIntroSilverlightDevIntro
SilverlightDevIntro
 
Ppt ch05
Ppt ch05Ppt ch05
Ppt ch05
 
Cine scope
Cine scopeCine scope
Cine scope
 
Ppt ch08
Ppt ch08Ppt ch08
Ppt ch08
 
Cascading style sheets - CSS
Cascading style sheets - CSSCascading style sheets - CSS
Cascading style sheets - CSS
 
Chapter 17: Responsive Web Design
Chapter 17: Responsive Web DesignChapter 17: Responsive Web Design
Chapter 17: Responsive Web Design
 
Cascading Style Sheets By Mukesh
Cascading Style Sheets By MukeshCascading Style Sheets By Mukesh
Cascading Style Sheets By Mukesh
 
Css week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandourCss week10 2019 2020 for g10 by eng.osama ghandour
Css week10 2019 2020 for g10 by eng.osama ghandour
 
Colors In CSS3
Colors In CSS3Colors In CSS3
Colors In CSS3
 

Similar to Blackboard DevCon 2011 - Performance Considerations for Custom Theme Development

Theme Development: From an idea to getting approved to wordpress.org
Theme Development: From an idea to getting approved to wordpress.orgTheme Development: From an idea to getting approved to wordpress.org
Theme Development: From an idea to getting approved to wordpress.org
ThemeHorse
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01
Likitha47
 
uptu web technology unit 2 Css
uptu web technology unit 2 Cssuptu web technology unit 2 Css
uptu web technology unit 2 Css
Abhishek Kesharwani
 
Artdm171 Week5 Css
Artdm171 Week5 CssArtdm171 Week5 Css
Artdm171 Week5 Css
Gilbert Guerrero
 
CSS workshop @ OutSystems
CSS workshop @ OutSystemsCSS workshop @ OutSystems
CSS workshop @ OutSystems
Ruben Goncalves
 
DevCon - Branding the LMS for your institution - Michael Garner, Blackboard
DevCon - Branding the LMS for your institution - Michael Garner, BlackboardDevCon - Branding the LMS for your institution - Michael Garner, Blackboard
DevCon - Branding the LMS for your institution - Michael Garner, Blackboard
Blackboard APAC
 
Web Development - Lecture 5
Web Development - Lecture 5Web Development - Lecture 5
Web Development - Lecture 5
Syed Shahzaib Sohail
 
css v1 guru
css v1 gurucss v1 guru
css v1 guru
GuruPada Das
 
How to get your theme in WordPress
How to get your theme in WordPressHow to get your theme in WordPress
How to get your theme in WordPress
Nisha Singh
 
Css week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandourCss week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandour
Osama Ghandour Geris
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
Ferdous Mahmud Shaon
 
Css
CssCss
Efficient theming in Drupal
Efficient theming in DrupalEfficient theming in Drupal
Efficient theming in Drupal
Cedric Spillebeen
 
DHTML
DHTMLDHTML
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
Fu Cheng
 
Cascading style sheet an introduction
Cascading style sheet   an introductionCascading style sheet   an introduction
Cascading style sheet an introduction
Himanshu Pathak
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSS
Sun Technlogies
 
howcssworks-100207024009-phpapp01.pptx
howcssworks-100207024009-phpapp01.pptxhowcssworks-100207024009-phpapp01.pptx
howcssworks-100207024009-phpapp01.pptx
RavneetSingh343801
 
Cascading Styling Sheets(CSS) simple design language intended to transform th...
Cascading Styling Sheets(CSS) simple design language intended to transform th...Cascading Styling Sheets(CSS) simple design language intended to transform th...
Cascading Styling Sheets(CSS) simple design language intended to transform th...
JebaRaj26
 
dmBridge & dmMonocle
dmBridge & dmMonocledmBridge & dmMonocle
dmBridge & dmMonocle
University of Nevada, Las Vegas
 

Similar to Blackboard DevCon 2011 - Performance Considerations for Custom Theme Development (20)

Theme Development: From an idea to getting approved to wordpress.org
Theme Development: From an idea to getting approved to wordpress.orgTheme Development: From an idea to getting approved to wordpress.org
Theme Development: From an idea to getting approved to wordpress.org
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01
 
uptu web technology unit 2 Css
uptu web technology unit 2 Cssuptu web technology unit 2 Css
uptu web technology unit 2 Css
 
Artdm171 Week5 Css
Artdm171 Week5 CssArtdm171 Week5 Css
Artdm171 Week5 Css
 
CSS workshop @ OutSystems
CSS workshop @ OutSystemsCSS workshop @ OutSystems
CSS workshop @ OutSystems
 
DevCon - Branding the LMS for your institution - Michael Garner, Blackboard
DevCon - Branding the LMS for your institution - Michael Garner, BlackboardDevCon - Branding the LMS for your institution - Michael Garner, Blackboard
DevCon - Branding the LMS for your institution - Michael Garner, Blackboard
 
Web Development - Lecture 5
Web Development - Lecture 5Web Development - Lecture 5
Web Development - Lecture 5
 
css v1 guru
css v1 gurucss v1 guru
css v1 guru
 
How to get your theme in WordPress
How to get your theme in WordPressHow to get your theme in WordPress
How to get your theme in WordPress
 
Css week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandourCss week11 2019 2020 for g10 by eng.osama ghandour
Css week11 2019 2020 for g10 by eng.osama ghandour
 
Introduction to HTML and CSS
Introduction to HTML and CSSIntroduction to HTML and CSS
Introduction to HTML and CSS
 
Css
CssCss
Css
 
Efficient theming in Drupal
Efficient theming in DrupalEfficient theming in Drupal
Efficient theming in Drupal
 
DHTML
DHTMLDHTML
DHTML
 
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
 
Cascading style sheet an introduction
Cascading style sheet   an introductionCascading style sheet   an introduction
Cascading style sheet an introduction
 
Cascading Style Sheets - CSS
Cascading Style Sheets - CSSCascading Style Sheets - CSS
Cascading Style Sheets - CSS
 
howcssworks-100207024009-phpapp01.pptx
howcssworks-100207024009-phpapp01.pptxhowcssworks-100207024009-phpapp01.pptx
howcssworks-100207024009-phpapp01.pptx
 
Cascading Styling Sheets(CSS) simple design language intended to transform th...
Cascading Styling Sheets(CSS) simple design language intended to transform th...Cascading Styling Sheets(CSS) simple design language intended to transform th...
Cascading Styling Sheets(CSS) simple design language intended to transform th...
 
dmBridge & dmMonocle
dmBridge & dmMonocledmBridge & dmMonocle
dmBridge & dmMonocle
 

More from Noriaki Tatsumi

Feature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scaleFeature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scale
Noriaki Tatsumi
 
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
Noriaki Tatsumi
 
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
Noriaki Tatsumi
 
Microservices, Continuous Delivery, and Elasticsearch at Capital One
Microservices, Continuous Delivery, and Elasticsearch at Capital OneMicroservices, Continuous Delivery, and Elasticsearch at Capital One
Microservices, Continuous Delivery, and Elasticsearch at Capital One
Noriaki Tatsumi
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
Noriaki Tatsumi
 
Application Performance Management
Application Performance ManagementApplication Performance Management
Application Performance Management
Noriaki Tatsumi
 
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
Noriaki Tatsumi
 
Blackboard DevCon 2013 - Hackathon
Blackboard DevCon 2013 - HackathonBlackboard DevCon 2013 - Hackathon
Blackboard DevCon 2013 - Hackathon
Noriaki Tatsumi
 
Blackboard DevCon 2012 - Ensuring Code Quality
Blackboard DevCon 2012 - Ensuring Code QualityBlackboard DevCon 2012 - Ensuring Code Quality
Blackboard DevCon 2012 - Ensuring Code Quality
Noriaki Tatsumi
 
Blackboard DevCon 2011 - Developing B2 for Performance and Scalability
Blackboard DevCon 2011 - Developing B2 for Performance and ScalabilityBlackboard DevCon 2011 - Developing B2 for Performance and Scalability
Blackboard DevCon 2011 - Developing B2 for Performance and Scalability
Noriaki Tatsumi
 
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
Noriaki Tatsumi
 

More from Noriaki Tatsumi (11)

Feature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scaleFeature drift monitoring as a service for machine learning models at scale
Feature drift monitoring as a service for machine learning models at scale
 
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
GraphQL Summit 2019 - Configuration Driven Data as a Service Gateway with Gra...
 
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
Voice Summit 2018 - Millions of Dollars in Helping Customers Through Searchin...
 
Microservices, Continuous Delivery, and Elasticsearch at Capital One
Microservices, Continuous Delivery, and Elasticsearch at Capital OneMicroservices, Continuous Delivery, and Elasticsearch at Capital One
Microservices, Continuous Delivery, and Elasticsearch at Capital One
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
Application Performance Management
Application Performance ManagementApplication Performance Management
Application Performance Management
 
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
Blackboard DevCon 2013 - Advanced Caching in Blackboard Learn Using Redis Bui...
 
Blackboard DevCon 2013 - Hackathon
Blackboard DevCon 2013 - HackathonBlackboard DevCon 2013 - Hackathon
Blackboard DevCon 2013 - Hackathon
 
Blackboard DevCon 2012 - Ensuring Code Quality
Blackboard DevCon 2012 - Ensuring Code QualityBlackboard DevCon 2012 - Ensuring Code Quality
Blackboard DevCon 2012 - Ensuring Code Quality
 
Blackboard DevCon 2011 - Developing B2 for Performance and Scalability
Blackboard DevCon 2011 - Developing B2 for Performance and ScalabilityBlackboard DevCon 2011 - Developing B2 for Performance and Scalability
Blackboard DevCon 2011 - Developing B2 for Performance and Scalability
 
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
Blackboard DevCon 2012 - How to Turn on the Lights to Your Blackboard Learn E...
 

Recently uploaded

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

Blackboard DevCon 2011 - Performance Considerations for Custom Theme Development

  • 1. Performance Considerations for Custom Theme Development Kevin Weisser Noriaki Tatsumi
  • 2. Overview • Introduction to Themes • Blackboard Customization Approach • Introduction to CSS • CSS Performance Considerations • Image Performance Considerations • Front-end Analysis Tools
  • 5. Blackboard Custom Themes • Blackboard 9.x contains a flexible user interface which can be easily branded to have the look and feel of your institution • This can be accomplished by changing any of the following: – Themes/Color Palettes – Images – Customizing Login Page
  • 6. Blackboard’s Recommended Customization Approach 1. Access Learn as System Administrator 2. Navigate to System Admin tab 3. Click on Brands and Themes 4. Click on Theme and Palette Catalog 5. Click icon beside BbLearn Theme 6. Download the theme and save it to your desktop
  • 7. Blackboard’s Recommended Customization Approach 7. From Theme and Palette Catalog, select Create Theme 8. Provide the required fields (Theme Name and Reference Name) and click Browse My Computer 9. Select the recently downloaded theme 10. Click Submit 11. Open the file on the application server (Bb root- >content->vii->BBLEARN->branding->themes- >Your Theme Folder) in your favorite editor and proceed to make your changes
  • 9. Performance Stories From the Field • Customized login page loads slowly – Mitigated by limiting the requests to those used by the browser • Drag and drop functionality appears choppy – Mitigated by cleaning up poor performing CSS selectors • Pages load slowly in areas with limited connectivity – Mitigated by leveraging browser cache and ensuring that requests were compressed/minified
  • 10. Introduction to CSS • Imagine the following block: ... ul#summer-drinks li { font-weight: normal; font-size: 12px; color: black; } … <ul id="summer-drinks"> <li>Whiskey and Ginger Ale</li> <li>Wheat Beer</li> <li>Mint Julip</li> </ul> …
  • 11. Introduction to CSS • You want to designate a favorite: … ul#summer-drinks li { font-weight: normal; font-size: 12px; color: black; } .favorite { color: red; font-weight: bold; } … <ul id="summer-drinks“> <li class=“favorite”>Whiskey and Ginger Ale</li> <li>Wheat Beer</li> <li>Mint Julip</li> </ul>
  • 12. Introduction to CSS Selector Specificity * 0,0,0,0 li 0,0,0,1 ul li 0,0,0,2 ul ol li.red 0,0,1,3 li.red.level 0,0,2,1 #x34y 0,1,0,0 style=“display:none” 1,0,0,0
  • 13. Introduction to CSS • Higher specificity selectors are applied • Last style declared is applied when a tie exists • !important overrides the specificity
  • 15. CSS Performance Considerations • Anti-patterns – Unused Selectors – Universal Selectors – Over Qualified Selectors – :hover Pseudo Selector – Descendant Selectors – @import Usage • Optimization – Minification
  • 16. Unused Selectors • What are unused selectors? – Declared selectors which are not applied to any element of the DOM • How does this impact performance? – CSS is blocking – More Styles = Larger Files = Longer download times – More Styles = More Parsing – More Styles = More Evaluations
  • 17. Unused Selectors • Mitigation techniques – Split external CSS into smaller files grouped by related functionality/styles – When adding styles: • Be aware of already defined styles • Be aware of selector specificity • Be aware of which attributes are available various DOM elements
  • 18. Universal Selector • What is a universal selector? – Universal selectors are denoted by the ‘*’ symbol • Example: .itemGallery *{zoom:1;} • How does this impact performance? – Right to left evaluation – Reflow in interactive pages • Mitigation techniques – Be specific
  • 21. Over Qualified Selectors • What is an over qualified selector? – ID selectors denoted by ‘#’ that has a preceding element tag • Example: div#lightboxContent h2{position:relative}; – Class selectors denoted by ‘.’ that has a preceding element tag • Example: div.stopped p img{background:#fff -180px;}
  • 22. Over Qualified Selectors • How does this impact performance – One more comparison is required during evaluation • Mitigation techniques – Don’t specify the element before the ID/Class selector – IDs should be unique – Classes can be unique
  • 23. :hover Psuedo Selector • What is the :hover pseudo selector? – Elements that specify a different style when the mouse hovers over the element element • Example: – tr.S {background-color:#000000} – tr.S:hover {background-color:#FFFFFF} • How does this impact performance? – IE degradation on non-anchor elements – IE9 may correct this problem
  • 24. :hover Psuedo Selector • Mitigation techniques <style type="text/css"> tr.S {background-color:#000000} tr.S:hover {background-color:#FFFFFF} </style> <table> <tr class="S"> <td>foo bar</td> </tr> </table> <table> <tr style="background-color:#FFFFFF" onmouseover="this.style.backgroundColor='#000000'" onmouseout="this.style.backgroundColor='#FFFFFF'"> <td>foo bar</td> </tr> </table>
  • 25. Descendant Selector • What are descendant selectors? – Descendant selectors filter based criteria • Example: treehead treerow treecell {…} • How does this impact performance? – More evaluations
  • 26. Descendant Selector • Mitigation techniques – Use of child selectors prevent DOM traversal • treehead > treerow > treecell {…} – Class selector is preferred • .treecell-header {…} – Use caution this approach can reduce reusability
  • 27. @import Usage • What does @import do? – Allows stylesheets to include other stylesheets • How does this impact performance? – Set number of connections available to request resources – Eliminates parallelism • Mitigation techniques – <link> tags alllow for parallel CSS download
  • 28. CSS Minification • Process which removes comments, return characters, and unnecessary white space • Sacrifices readability for smaller file sizes • Free tools available (ex. YUICompressor) • Themes uploaded from the System Admin tab are immediately compressed
  • 30. Image Performance Considerations • Anti-patterns – Inappropriate image format – Unreachable images – Unused Images
  • 31. Inappropriate Image Format: JPEG • Recommended for realistic pictures with smooth gradients and color tones • Not lossless • Sacrifice compression for resolution • JPEGTran optimization
  • 32. Inappropriate Image Format: PNG and GIF • PNG and GIF should be used for solid color images (charts or logos) • Use PNG over GIF unless – Image contains animation – Image is extremely small (a few hundred bytes), because GIF tends to be smaller than PNG • PNG is superior because – Copyright free – More efficient compression – Stores all bit depths • OptiPNG, PNGCrush for optimization
  • 33. Unreachable Images • Make sure path to image is correct • 404 status on any request is a wasted request – Request may be blocking – Reduces parallelism • Verify all images are reachable via browser profile tools, such as Firebug
  • 34. Unused Images • Request to unused images creates unnecessary delays • Longer download times • Reduced parallelism
  • 35. Front End Analysis Tools • Firebug (http://getfirebug.com/) – Inspect HTML and modify style/layout in real-time – Debug JavaScript – Analyze network usage and performance • PageSpeed (http://code.google.com/speed/page-speed/) – Optimize with Web performance best practices – Rules of particular interest • Avoid bad requests • Avoid CSS @import • Combine external CSS • Minify CSS • Optimize Images • Use efficient CSS Selectors
  • 37. Please provide feedback for this session by emailing DevConFeedback@blackboard.com. The title of this session is: Performance Considerations for Custom Theme (CSS) Development

Editor's Notes

  1. Goal is to prevent the user from getting themselves into trouble
  2. Look familiar? What’s a theme?
  3. ThemeUnifying idea that is a recurrent elementIncludes layout, color, fonts, navigation, and buttonsColor PaletteExtensions to the themeSets color schemes for the entire siteOverride any color specifications found in themePoll audience
  4. Template helps to avoid most of the common problems
  5. Demonstration on how to disable the “Manage My Announcements Module”Disable the Manage My Announcements Module Settings image .edit_controls img[alt=&quot;Manage My Announcements Module Settings&quot;]{display:none;}
  6. The template isn’t enough, one can still get themselves into trouble when not following best practices.
  7. http://css-tricks.com/specifics-on-css-specificity/What does the C stand for?Browser parses the CSS fileSome optimized browsers group selectors into several MapsID MapClass MapTag MapMiscellaneous MapRight to Left evaluationIf a match is found, the CSS Engine must determine the specificity of the selector before applying the declaration blockIf a mismatch is found, the CSS Engine moves to the next selector to evaluateAll selectors in the file are evaluated
  8. What font color will your favorite drink be?
  9. The CSS Specification calculates specificity as follows:A equals 1 if the declaration is from is a &apos;style&apos; attribute rather than a rule with a selector, 0 otherwiseB equals the number of ID attributesC equals the number classes, pseudo-classes, and attributes D equals the number of elements and pseudo-elementsConcatenating the four numbers A-B-C-D gives the specificity
  10. ul#summer-drinks li has specificity of 0,1,0,2.favorite has specifity 0,0,1,0
  11. Some repeated pattern of action, process or structure that initially appears to be beneficial, but ultimately produces more bad consequences than beneficial resultsA refactored solution exists that is clearly documented, proven in actual practice and repeatable. -Definition from WikipediaExperiment showing load times across different browsers when different selectors are used (~6,000 DOM Elements)
  12. http://www.w3.org/TR/CSS21/cascade.html#specificityDOM either because the elements/classes/styles don’t exist or another higher priority style has been declared
  13. http://webworksconsultant.com/frontend/what-is-wrong-with-universal-css-selector/
  14. Create replication
  15. Create replication
  16. DemoFind a complex page (Course module?)Apply changeset 766696
  17. http://www.slideshare.net/stoyan/high-performance-web-pages-20-new-best-practices
  18. Call Out Rules