SlideShare a Scribd company logo
1 of 114
Download to read offline
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

More Related Content

Similar to 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 to 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
 

Recently uploaded

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
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
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
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
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

CSMess to OOCSS: Refactoring CSS with Object Oriented Design