SlideShare una empresa de Scribd logo
1 de 114
Descargar para leer sin conexión
CSMESS TO OOCSS
Refactoring CSS With Object Oriented Design
Kate Travers // kate@flatironschool.com // @kttravers // github: ktravers
Modular
Encapsulated
Maintainable
OBJECT ORIENTED DESIGN
└── assets
└── stylesheets
├── admissions
│ ├── index.scss
│ └── show.scss
├── lessons
│ ├── index.scss
│ └── show.scss
├── shared
│ ├── _fonts.scss
│ ├── _vars.scss
│ ├── _mixins.scss
│ ├── footer.scss
│ ├── header.scss
│ └── nav.scss
├── application.scss
├── admissions.scss
├── lessons.scss
├── shared.scss
etc...
#lesson-show {
position: fixed;
width: auto;
top: 10px;
left: 80px;
z-index: 10;
.title {
margin-top: 0;
vertical-align: middle;
}
.btn-row {
line-height: 1;
padding-left: 15px;
background-color: $light-gray;
margin-bottom: 4px;
margin-left: 8px;
}
/* etc... */
}
└── assets
└── stylesheets
├── admissions
│ ├── index.scss
│ └── show.scss
├── lessons
│ ├── index.scss
│ └── show.scss
├── shared
│ ├── _fonts.scss
│ ├── _vars.scss
│ ├── _mixins.scss
│ ├── footer.scss
│ ├── header.scss
│ └── nav.scss
├── application.scss
├── admissions.scss
├── lessons.scss
├── shared.scss
etc...
└── assets
└── stylesheets
├── admissions
│ ├── index.scss
│ └── show.scss
├── lessons
│ ├── index.scss
│ └── show.scss
├── shared
│ ├── _fonts.scss
│ ├── _vars.scss
│ ├── _mixins.scss
│ ├── footer.scss
│ ├── header.scss
│ └── nav.scss
├── application.scss
├── admissions.scss
├── lessons.scss
├── shared.scss
etc...
LEARN_V1
NATIVE
213 stylesheets
1.3 MB
VENDOR
116 stylesheets
848 KB
TOTAL
329 stylesheets
2.1 MB
MODULAR
ENCAPSULATED
MAINTAINABLE
MODULAR
ENCAPSULATED
MAINTAINABLE
MODULAR
Coupled to single view
ENCAPSULATED
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
Specificity wars
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
Specificity wars
Unpredictable behavior
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
Specificity wars
Unpredictable behavior
MAINTAINABLE
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
Specificity wars
Unpredictable behavior
MAINTAINABLE
Writing new CSS for every view
MODULAR
Coupled to single view
Too brittle / specific to re-use
ENCAPSULATED
Specificity wars
Unpredictable behavior
MAINTAINABLE
Writing new CSS for every view
Difficult to onboard new team members
SOLUTION?
OFF-THE-SHELF ROLL YOUR OWN
OFF-THE-SHELF ROLL YOUR OWN
Heavy
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able Extensible
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able Extensible
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able Extensible
Third-party maintainers
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able Extensible
Third-party maintainers Internally maintained
OFF-THE-SHELF ROLL YOUR OWN
Heavy Lightweight
Override-able Extensible
Third-party maintainers Internally maintained
CASE STUDY:
Flatiron School’s
Learn CSS Framework
ROADMAP
1. Take visual inventory of app’s UI/UX
ROADMAP
1. Take visual inventory of app’s UI/UX
2. Build component OOCSS library
ROADMAP
1. Take visual inventory of app’s UI/UX
2. Build component OOCSS library
3. Rewrite CSS and markup
ROADMAP
1. Take visual inventory of app’s UI/UX
2. Build component OOCSS library
3. Rewrite CSS and markup
4. Onboard your team
ROADMAP
STEP 1:
Visual Inventory
header
section
main
section
sidebar
section
multi-part container with borders and white background
multi-part container with text sitting next to media
circular object with image
STEP 2:
COMPONENT
LIBRARY
STEP 2:
Component Library
.site-header
.site-sidebar.site-main
LAYOUT COMPONENTS
.site-subheader
.site-banner
.site-header
.site-sidebar.site-main
LAYOUT >> CONTAINER COMPONENTS
.site-subheader
.site-banner
.module .media-block
.media-block
.media-block
.media-block
.site-header
.site-sidebar.site-main
LAYOUT >> CONTAINER >> OBJECT COMPONENTS
.site-subheader
.site-banner
.module .media-block
.media-block
.media-block
.media-block
.image .text-block .button
.site-header
.site-sidebar.site-main
LAYOUT >> CONTAINER >> OBJECT >> GLOBAL COMPONENTS
.site-subheader
.site-banner
.module .media-block
.media-block
.media-block
.media-block
.image .text-block .button.util--pull-right
Modular components defined through
strong naming conventions
Compartmentalized
Portable
MODULAR COMPONENTS
Compartmentalized
Limited/single responsibility
Portable
MODULAR COMPONENTS
Compartmentalized
Limited/single responsibility
Complexity through combination
Portable
MODULAR COMPONENTS
Compartmentalized
Limited/single responsibility
Complexity through combination
Portable
Interchangeable from view to view
MODULAR COMPONENTS
Compartmentalized
Limited/single responsibility
Complexity through combination
Portable
Interchangeable from view to view
Components don’t affect parent or relative styles
MODULAR COMPONENTS
STRONG NAMING CONVENTIONS
Generic class names
STRONG NAMING CONVENTIONS
Generic class names
Semantic syntax
STRONG NAMING CONVENTIONS
BEM SYNTAX
.block__element--modifier
/* Block component */
.list
/* Child element of parent block */
.list__card
/* Modifier that changes the style of the block */
.list--accordion
.list--spacing-large
└── assets
└── stylesheets
├── layout
│ ├── site-header.scss
│ ├── site-footer.scss
│ └── site-main.scss
├── containers
│ ├── list.scss
│ ├── media-block.scss
│ └── module.scss
├── objects
│ ├── button.scss
│ ├── image-frame.scss
│ └── input.scss
├── global
│ ├── special.scss
│ ├── typography.scss
│ └── vars.scss
└── application.scss
STEP 3:
Rewrite
multi-part container with text sitting next to media
.media-block--side-alt
.media-block--dual-media
.media-block--side-alt
.media-block
MEDIA BLOCK
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
.media-block
.media-block__content.media-block__media
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<!-- Start by outlining the basic container + objects -->
<div class="media-block">
<div class="media-block__media">
<!-- circle with user’s profile picture -->
</div>
<div class="media-block__content">
<!-- text object: user name -->
<!-- text object: time ago -->
<!-- text object: action completed by user -->
</div>
</div>
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<!-- Start by outlining the basic container + objects -->
<div class="media-block">
<div class="media-block__media">
<!-- circle with user’s profile picture -->
</div>
<div class="media-block__content">
<!-- text object: user name -->
<!-- text object: time ago -->
<!-- text object: action completed by user -->
</div>
</div>
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<div class="media-block">
<div class="media-block__media">
<!-- image container that adds circle border radius -->
<div class="image-frame image-frame--border-radius-full">
<!-- image object -->
<img class="image-frame__image" src="img.png"/>
</div>
</div>
<div class="media-block__content">
<!-- text object: user name -->
<!-- text object: time ago -->
<!-- text object: action completed by user -->
</div>
</div>
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<div class="media-block">
<div class="media-block__media">
<!-- image container that adds circle border radius -->
<div class="image-frame image-frame--border-radius-full">
<!-- image object -->
<img class="image-frame__image" src="img.png"/>
</div>
</div>
<div class="media-block__content">
<!-- text object: user name -->
<!-- text object: time ago -->
<!-- text object: action completed by user -->
</div>
</div>
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<div class="media-block">
<div class="media-block__media">
<div class="image-frame image-frame--border-radius-full">
<img class="image-frame__image" src="img.png"/>
</div>
</div>
<div class="media-block__content">
<!-- .heading is an text object component -->
<!-- can be applied to text and non-text DOM elements -->
<span class="heading heading--level-5">Brent...</span>
<span class="heading heading--level-6">5 min ago</span>
<h5 class="heading heading--level-5">Built...</h5>
</div>
</div>
/*
* Overall Rules
*/
.media-block { display: table; }
/*
* Local Descendants
*/
.media-block__content {
display: table-cell;
vertical-align: middle;
}
.media-block__media {
display: table-cell;
vertical-align: middle;
padding-right: $content-spacing;
}
<!-- End product: encapsulated, reusable block of markup -->
<!-- Ready to drop into any view -->
<div class="media-block">
<div class="media-block__media">
<div class="image-frame image-frame--border-radius-full">
<img class="image-frame__image" src="img.png"/>
</div>
</div>
<div class="media-block__content">
<span class="heading heading--level-5">Brent...</span>
<span class="heading heading--level-6">5 min ago</span>
<h5 class="heading heading--level-5">Built...</h5>
</div>
</div>
But what about your
JAVASCRIPT?
BEM SYNTAX
.js--<whatever>
STEP 4:
Onboarding
PHASE 1
New stylesheets and markup shipped behind feature flag
PHASE 1
New stylesheets and markup shipped behind feature flag
Training session on BEM syntax, OOCSS basics
PHASE 1
PHASE 2
QA testing: feature turned on for select user groups
PHASE 2
QA testing: feature turned on for select user groups
Training session on rewriting existing markup
PHASE 2
QA testing: feature turned on for select user groups
Training session on rewriting existing markup
Identify & assign views for “hands-on learning” rewrites
PHASE 2
PHASE 3
Launch: feature 100% live
PHASE 3
Launch: feature 100% live
Ship style guide with full framework documentation
PHASE 3
Launch: feature 100% live
Ship style guide with full framework documentation
Pair with teammates as needed on new feature builds
PHASE 3
CHALLENGES
SCOPE CREEP
Originally prototyped for 3 user-facing views
SCOPE CREEP
Originally prototyped for 3 user-facing views
Grew to cover ALL user-facing views
SCOPE CREEP
Originally prototyped for 3 user-facing views
Grew to cover ALL user-facing views
Packaged with JS refactor
SCOPE CREEP
NEOPHOBES
Comfortable doing things the “old way”
NEOPHOBES
Comfortable doing things the “old way”
Wary of new system
NEOPHOBES
OUTLIERS
New designs introduce “one-off” elements
OUTLIERS
New designs introduce “one-off” elements
Push back on design/product
OUTLIERS
New designs introduce “one-off” elements
Push back on design/product
Justify introduction of stylistic inconsistencies
OUTLIERS
RESULTS
UX GAINS
Faster pageloads
UX GAINS
Faster pageloads
More consistent, cohesive UI
UX GAINS
DEVELOPMENT GAINS
Ship faster
DEVELOPMENT GAINS
Ship faster
Fast, accurate prototyping
DEVELOPMENT GAINS
Ship faster
Fast, accurate prototyping
Accessible, maintainable stylesheets
DEVELOPMENT GAINS
PERFORMANCE GAINS
LEARN_V1 LEARN_V2 (OOCSS)
NATIVE
213 stylesheets 31 stylesheets
1.3 MB 193 KB
VENDOR
116 stylesheets 6 stylesheets
848 KB 49 KB
TOTAL
329 stylesheets 37 stylesheets
2.1 MB 242 KB
LEARN_V1 LEARN_V2 (OOCSS)
NATIVE
213 stylesheets 31 stylesheets
1.3 MB 193 KB
VENDOR
116 stylesheets 6 stylesheets
848 KB 49 KB
TOTAL
329 stylesheets 37 stylesheets
2.1 MB 242 KB
LEARN_V1 LEARN_V2 (OOCSS)
TRACK#SHOW
262 ms 108 ms
LESSON#SHOW
98 ms 48 ms
PUBLIC_LESSON#SHOW
40 ms 21 ms
LEARN_V1 LEARN_V2 (OOCSS)
TRACK#SHOW
262 ms 108 ms
LESSON#SHOW
98 ms 48 ms
PUBLIC_LESSON#SHOW
40 ms 21 ms
Kate Travers // kate@flatironschool.com // @kttravers // github: ktravers
QUESTIONS?
Nicole Sullivan’s OOCSS
https://github.com/stubbornella/oocss/wiki
http://confreaks.tv/presenters/nicole-sullivan
BEM Syntax
https://css-tricks.com/bem-101/
https://en.bem.info/method/key-concepts/
RESOURCES

Más contenido relacionado

Similar a CSMess to OOCSS: Refactoring CSS with Object Oriented Design

CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreRuss Weakley
 
Dynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and MobileDynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and Mobilepeychevi
 
Front-End Methodologies
Front-End MethodologiesFront-End Methodologies
Front-End MethodologiesArash Manteghi
 
Hardboiled Front End Development — Found.ation
Hardboiled Front End Development — Found.ationHardboiled Front End Development — Found.ation
Hardboiled Front End Development — Found.ationSpiros Martzoukos
 
Tailwind Navbar A Complete Guide for Stunning User Experience.pdf
Tailwind Navbar A Complete Guide for Stunning User Experience.pdfTailwind Navbar A Complete Guide for Stunning User Experience.pdf
Tailwind Navbar A Complete Guide for Stunning User Experience.pdfRonDosh
 
CSS Frameworks
CSS FrameworksCSS Frameworks
CSS FrameworksMike Crabb
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosMatteo Papadopoulos
 
ViA Bootstrap 4
ViA Bootstrap 4ViA Bootstrap 4
ViA Bootstrap 4imdurgesh
 
Twitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptTwitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptRadheshyam Kori
 
Introduction to BOOTSTRAP
Introduction to BOOTSTRAPIntroduction to BOOTSTRAP
Introduction to BOOTSTRAPJeanie Arnoco
 
The Creative New World of CSS
The Creative New World of CSSThe Creative New World of CSS
The Creative New World of CSSRachel Andrew
 
Design Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPressDesign Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPressJesse James Arnold
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by MukeshMukesh Kumar
 

Similar a CSMess to OOCSS: Refactoring CSS with Object Oriented Design (20)

Death of a Themer
Death of a ThemerDeath of a Themer
Death of a Themer
 
CSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and moreCSS - OOCSS, SMACSS and more
CSS - OOCSS, SMACSS and more
 
Nuxtjs cheat-sheet
Nuxtjs cheat-sheetNuxtjs cheat-sheet
Nuxtjs cheat-sheet
 
Dynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and MobileDynamic User Interfaces for Desktop and Mobile
Dynamic User Interfaces for Desktop and Mobile
 
Front-End Methodologies
Front-End MethodologiesFront-End Methodologies
Front-End Methodologies
 
Hardboiled Front End Development — Found.ation
Hardboiled Front End Development — Found.ationHardboiled Front End Development — Found.ation
Hardboiled Front End Development — Found.ation
 
Tailwind Navbar A Complete Guide for Stunning User Experience.pdf
Tailwind Navbar A Complete Guide for Stunning User Experience.pdfTailwind Navbar A Complete Guide for Stunning User Experience.pdf
Tailwind Navbar A Complete Guide for Stunning User Experience.pdf
 
SMACSS Workshop
SMACSS WorkshopSMACSS Workshop
SMACSS Workshop
 
CSS Frameworks
CSS FrameworksCSS Frameworks
CSS Frameworks
 
Web Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaosWeb Frontend development: tools and good practices to (re)organize the chaos
Web Frontend development: tools and good practices to (re)organize the chaos
 
Pfnp slides
Pfnp slidesPfnp slides
Pfnp slides
 
SCSS Styleguide
SCSS StyleguideSCSS Styleguide
SCSS Styleguide
 
Intro to Bootstrap
Intro to BootstrapIntro to Bootstrap
Intro to Bootstrap
 
ViA Bootstrap 4
ViA Bootstrap 4ViA Bootstrap 4
ViA Bootstrap 4
 
Twitter bootstrap training_session_ppt
Twitter bootstrap training_session_pptTwitter bootstrap training_session_ppt
Twitter bootstrap training_session_ppt
 
Introduction to BOOTSTRAP
Introduction to BOOTSTRAPIntroduction to BOOTSTRAP
Introduction to BOOTSTRAP
 
Bootstrap Framework
Bootstrap Framework Bootstrap Framework
Bootstrap Framework
 
The Creative New World of CSS
The Creative New World of CSSThe Creative New World of CSS
The Creative New World of CSS
 
Design Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPressDesign Systems, Pattern Libraries & WordPress
Design Systems, Pattern Libraries & WordPress
 
Bootstrap PPT by Mukesh
Bootstrap PPT by MukeshBootstrap PPT by Mukesh
Bootstrap PPT by Mukesh
 

Último

Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024TopCSSGallery
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoUXDXConf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastUXDXConf
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfFIDO Alliance
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCzechDreamin
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 

Último (20)

Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024Top 10 Symfony Development Companies 2024
Top 10 Symfony Development Companies 2024
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdfHow Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
How Red Hat Uses FDO in Device Lifecycle _ Costin and Vitaliy at Red Hat.pdf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 

CSMess to OOCSS: Refactoring CSS with Object Oriented Design