SlideShare une entreprise Scribd logo
1  sur  93
Télécharger pour lire hors ligne
the Why & What of
patternlab.io
dave olsen, @dmolsen
pattern labcreate atomic design systems
brad frost
@brad_frost
dave olsen
@dmolsen
the pattern lab team:
a roadmap for our talk:
‣ rethinking the web design process
- process: linear vs. collaborative
- communication: clients and RWD
- modular systems: systems vs. pages
‣ deep dive into pattern lab
- quick tour of the front-end
- installation
- working with patterns
- customizing data
- advanced features
Our existing standards,
workflows, & infrastructure
won’t hold up.
A FUTURE-FRIENDLY TRUTH
http://futurefriend.ly
courtesy Ben Callahan, Sparkbox
FRONT-END BACK-ENDDESIGN
THINK ABOUT
USERS
THROW IN
SOME CONTENT
LAUNCH!
Linear Workflow
CONTENT UX
FRONT-END
DESIGNBACK-END
“1 Deliverable” Workflow
courtesy Ben Callahan, Sparkbox
You Are Here
Iterative or Spiral Process
communicate.
Ultimately, process is about how
designers, developers & clients
Creation is a
shared activity.
- Bermon Painter
rethinking the web design process: collaborate
Kick-off Design &
Develop Test Client
Review Production
rethinking how we communicate: deliverables
‣ mood boards
‣ style tiles
‣ wireframes
‣ low-fidelity HTML mock-ups
‣ high-fidelity HTML mock-ups
‣ “cut up” mark-up, CSS, & JS
‣ pattern libraries & style guides
Our hand-offs to clients should allow them
to re-mix common elements that we’ve
developed to build new things.
Our deliverables should
be systems, not pages.
Build, test, and review deliverables in the
place where a project is going to be used.
Get to the browser.
...communicate better with one another?
...build robust systems and not pages?
...review everything in the browser?
So how do we...
introducing
pattern lab
Pattern Lab is a collection of
tools for creating modular
systems that involves your
entire team & your client every
step of the way and lets everyone
review in the browser.
what pattern lab is: your deliverables in one place
Kick-off Design &
Develop Test Client
Review Production
what pattern lab is: a collection of tools
atomic
spectrum
viewport
re-sizer
annotationspage follow
pattern states
shared component library & dynamic data
MQ re-sizer
starter kit auto-reload
code view
auto-build
style guide
working with patterns: systems, not pages
Atomic Design as the basis for Pattern Lab’s pattern types.
what pattern lab ain’t:
‣ a fancy UI framework
‣ dependency heavy
‣ incredibly rigid
You make Pattern Lab what
you want and need it to be.
the requirements:
PHP 5.3+
no web server required*
* - only required for page follow
Mustache is used for patterns.
JSON is used for dynamic data storage.
installation: download from GitHub
changes to pattern lab: github.com/pattern-lab
installation: open the project
installation: generate for the first time
installation: generate for the first time
php	
  core/builder.php	
  -­‐g
just in case you’re a fan of the command line, on linux or on windows.
php	
  core/builder.php	
  -­‐-­‐help will show you all of your options.
installation: review the installation
installation: review source/
the only required directories are _data/ & _patterns/. otherwise,
you can change source/ as much as you want. this is what we mean
about making your own Bootstrap. you can even use Bootstrap.
installation: open pattern lab’s index.html
don’t edit public/. always make changes in source/. public/ is for
your own and your client review purposes.
installation: done!
Pattern Lab doesn’t require Apache so no extra set-up. You can drop
Pattern Lab into a Dropbox folder for clients.
front-end tour: follow along
demo.patternlab.io
front-end tour: default view
front-end tour: pattern list
front-end tour: resizing options
front-end tour: resizing options
front-end tour: resizing options
front-end tour: media query list
front-end tour: pattern search
front-end tour: code view
front-end tour: annotations
front-end tour: code view
working with patterns: intro
What is a pattern?
working with patterns: intro
Each pattern describes a problem that occurs
over and over again in our environment, and
then describes the core of the solution to
that problem, in such a way that you can use
this solution a million times over, without
ever doing it the same way twice.
— Christopher Alexander
working with patterns: intro
Pattern Lab provides a way to
help you develop, describe, &
stitch together mark-up and
style patterns.
Pattern Lab uses conventions
so that the filesystem acts as
its database.
working with patterns: intro
working with patterns: organization
all file paths in this presentation are located under source/.
00-­‐organisms/01-­‐global/00-­‐header.mustache
00-­‐organisms/01-­‐global/00-­‐header.mustache
working with patterns: organization
patternType
the digits are optional and are purely for ordering the navigation.
00-­‐organisms/01-­‐global/00-­‐header.mustache
working with patterns: organization
the digits are optional and are purely for ordering the navigation.
patternSubtype
00-­‐organisms/01-­‐global/00-­‐header.mustache
working with patterns: organization
the digits are optional and are purely for ordering the navigation.
pattern
_00-­‐header.mustache
working with patterns: hiding patterns
the underscore hides a pattern in the navigation but the
pattern is still available for inclusion in other patterns.
00-­‐header@inreview.mustache
working with patterns: pattern states
anything after the “@” gets added as a class to the
pattern’s navigation element. “inprogress,” “inreview,” and
“complete” propagate to downstream patterns.
working with patterns: pattern states
working with patterns: systems, not pages
Atomic Design as the basis for Pattern Lab’s pattern types.
working with patterns: systems, not pages
molecules-search
organisms-header
templates-homepage
Important: You don’t have to use the
Atomic Design metaphor to use Pattern
Lab. Change it to whatever you want.
working with patterns: systems, not pages
working with patterns: atoms
working with patterns: using atoms
Use atoms to help define
general styles. Good first step
for style tiles, mood boards, or
testing style changes. They
most likely won’t be used in
other patterns.
working with patterns: atom example
working with patterns: atom example
<h1>Heading	
  Level	
  1</h1>
<h2>Heading	
  Level	
  2</h2>
<h3>Heading	
  Level	
  3</h3>
<h4>Heading	
  Level	
  4</h4>
<h5>Heading	
  Level	
  5</h5>
<h6>Heading	
  Level	
  6</h6>
atoms-headings:
working with patterns: molecules
working with patterns: using molecules
Use molecules as your base
for common patterns that
will be included further up.
In general, they shouldn’t
have partial dependencies.
Will use variables.
working with patterns: molecule example
working with patterns: molecule example
<li	
  class="comment-­‐container">
	
   <div	
  class="comment-­‐meta">
	
   	
   <img	
  src=”{{	
  img.avatar	
  }}”	
  class=”avatar”>
	
   	
   <h4	
  class="comment-­‐name">
<a	
  href="#">{{	
  name.first	
  }}	
  {{	
  name.last	
  }}</a>
	
   	
   </h4>
	
   </div>
	
   <div	
  class="comment-­‐text">
	
   	
   <p>{{	
  description	
  }}</p>
	
   </div>
</li>
molecules-single-comment:
working with patterns: molecule example
<li	
  class="comment-­‐container">
	
   <div	
  class="comment-­‐meta">
	
   	
   <img	
  src=”{{	
  img.avatar	
  }}”	
  class=”avatar”>
	
   	
   <h4	
  class="comment-­‐name">
<a	
  href="#">{{	
  name.first	
  }}	
  {{	
  name.last	
  }}</a>
	
   	
   </h4>
	
   </div>
	
   <div	
  class="comment-­‐text">
	
   	
   <p>{{	
  description	
  }}</p>
	
   </div>
</li>
these are variables and are defined in various JSON files.
molecules-single-comment:
customizing data: JSON & mustache vars
	
   <div>
	
   	
   <h4>
<a	
  href="#">{{	
  name.first	
  }}	
  {{	
  name.last	
  }}</a>
	
   	
   </h4>
	
   </div>
	
   <div	
  class="comment-­‐text">
	
   	
   <p>{{	
  description	
  }}</p>
	
   </div>
Mustache:
JSON:
{
	
  	
  	
  “name”:	
  {
	
  	
  	
  	
  	
  	
  “first”:	
  “Dave”,
	
  	
  	
  	
  	
  	
  “last”:	
  “Olsen”
	
  	
  	
  },
	
  	
  	
  “description”:	
  “Long	
  text	
  goes	
  here.”
}
customizing data: where to define it
Global data:
_data/_data.js
00-­‐pages/00-­‐homepage.json
Pattern-specific data:
00-­‐pages/00-­‐homepage~emergency.json
Pseudo-pattern:
specificity
customizing data: system/default data
<ul>
	
  	
  {{#	
  listItems.four	
  }}
	
  	
  	
  	
  <li>{{	
  name.first	
  }}	
  {{	
  name.last	
  }}</li>
	
  	
  {{/	
  listItems.four	
  }}
</ul>
the “listItems” variable:
the “link” variable:
<a	
  href=”{{	
  link.pages-­‐blog	
  }}”>
provides the real path to a pattern
provides an easy-to-use set of data to iterate over for your mock-
ups. supports up to twelve iterations. randomized every time the
site is generated. more info: http://bit.ly/1jojXKR
working with patterns: organisms
working with patterns: using organisms
Use organisms when you
need combinations of
molecules. Also good when
defining patterns that may
match partials in a CMS.
working with patterns: organism example
working with patterns: organism example
<section	
  class="comments	
  section">
	
   <div	
  class="comments-­‐container"	
  id="comments-­‐container">
	
   	
   <h2	
  class="section-­‐title">59	
  Comments</h2>
	
   	
   {{>	
  molecules-­‐comment-­‐form	
  }}	
  
	
   	
   <ul	
  class="comment-­‐list">
	
   	
   	
   {{#	
  listItems.five	
  }}
	
   	
   	
   	
   {{>	
  molecules-­‐single-­‐comment	
  }}	
  
	
   	
   	
   {{/	
  listItems.five	
  }}
	
   	
   </ul>
	
   </div>
	
   {{>	
  molecules-­‐pagination	
  }}	
  
</section>
organisms-comment-thread:
working with patterns: organism example
<section	
  class="comments	
  section">
	
   <div	
  class="comments-­‐container"	
  id="comments-­‐container">
	
   	
   <h2	
  class="section-­‐title">59	
  Comments</h2>
	
   	
   {{>	
  molecules-­‐comment-­‐form	
  }}	
  
	
   	
   <ul	
  class="comment-­‐list">
	
   	
   	
   {{#	
  listItems.five	
  }}
	
   	
   	
   	
   {{>	
  molecules-­‐single-­‐comment	
  }}	
  
	
   	
   	
   {{/	
  listItems.five	
  }}
	
   	
   </ul>
	
   </div>
	
   {{>	
  molecules-­‐pagination	
  }}	
  
</section>
these are mustache partials and are how we include one
pattern within another.
organisms-comment-thread:
00-­‐organisms/01-­‐global/00-­‐header.mustache
working with patterns: partial syntax
if we want to include this pattern in another pattern...
default partial syntax uses only the pattern type and pattern name...
{{>	
  organisms-­‐header	
  }}
fuzzy matching of the pattern name...
{{>	
  organisms-­‐head	
  }}
{{>	
  00-­‐organisms/01-­‐global/00-­‐header	
  }}
traditional mustache partial...
customizing data: pattern parameters
{{>	
  molecule-­‐alert(message:	
  “hello”)	
  }}
<div	
  class=”alert”>
	
  	
  {{	
  message	
  }}
</div>
<div	
  class=”alert”>
	
  	
  hello
</div>
Mustache:
Partial:
Rendered:
pattern parameters allow for defining of variable replacement right in the partial.
customizing data: style modifiers
{{>	
  molecule-­‐alert:error	
  }}
<div	
  class=”alert	
  {{	
  styleModifier	
  }}”>
	
  	
  Message
</div>
<div	
  class=”alert	
  error”>
	
  	
  Message
</div>
Mustache:
Partial:
Rendered:
style modifiers allow for DRY patterns.
working with patterns: templates
working with patterns: using templates
Use templates to wireframe
and provide a low-fidelity
version of final pages. They’re
all about layout. Template
mark-up can and should
include sections that might not
show by default. After atoms,
templates will be the other
thing you show clients.
working with patterns: template example
working with patterns: template example
<div	
  class="page"	
  id="page">
	
   {{>	
  organisms-­‐header	
  }}
	
   <div	
  role="main">
	
   	
   {{#	
  emergency	
  }}
	
   	
   	
   {{>	
  molecules-­‐alert:error	
  }}
	
   	
   {{/	
  emergency	
  }}
	
   	
   {{#	
  hero	
  }}
	
   	
   	
   {{>	
  molecules-­‐block-­‐hero	
  }}
	
   	
   {{/	
  hero}}
	
   	
   <div	
  class="g	
  g-­‐3up">
	
   	
   	
   {{#	
  touts}}
	
   	
   	
   	
   <div	
  class="gi">
	
   	
   	
   	
   	
   {{>	
  molecules-­‐block-­‐inset	
  }}
	
   	
   	
   	
   </div>
	
   	
   	
   {{/	
  touts}}
	
   	
   </div><!-­‐-­‐end	
  3up-­‐-­‐>
templates-homepage:
working with patterns: common header & footer
00-­‐atoms/00-­‐meta/_00-­‐header.mustache
00-­‐atoms/00-­‐meta/_01-­‐footer.mustache
if these patterns exist Pattern Lab automatically includes them as
your header and footer.
working with patterns: template example
<div	
  class="page"	
  id="page">
	
   {{>	
  organisms-­‐header	
  }}
	
   <div	
  role="main">
	
   	
   {{#	
  emergency	
  }}
	
   	
   	
   {{>	
  molecules-­‐alert:error	
  }}
	
   	
   {{/	
  emergency	
  }}
	
   	
   {{#	
  hero	
  }}
	
   	
   	
   {{>	
  molecules-­‐block-­‐hero	
  }}
	
   	
   {{/	
  hero}}	
  
	
   	
   ...
these are quasi-“if statements” and allow for the inclusion of multiple
layout possibilities for a template. turned on via JSON variables.
templates-homepage:
working with patterns: pages
working with patterns: using pages
Use pages to provide high-
fidelity versions of a template.
They should include very
specific data.They’re all about
showing “real” content in the
wireframe.
working with patterns: page example
working with patterns: page example
{{>	
  templates-­‐homepage	
  }}
pages should simply include/reference templates. the majority of the power
of a page is in its associated JSON file and by using pseudo-patterns.
annotations: _data/annotations.js
{
	
  	
  "el":	
  "header[role=banner]",
	
  	
  "title"	
  :	
  "Masthead",
	
  	
  "comment":	
  "The	
  main	
  header..."
}
JSON:
Front-end:
advanced tools:
‣ auto-regenerate
‣ auto-reload
‣ page follow
‣ keyboard shortcuts
‣ query string params
‣ QR code generator
documentation: patternlab.io/docs/
common workflow with advanced tools:
1. start watcher & auto-reload server at
the same time
2. edit & save files in source/
3. watch things change in your browser
integrating with grunt:
npm	
  install	
  -­‐-­‐save-­‐dev	
  grunt-­‐shell
shell:	
  {
	
  	
  patternlab:	
  {
	
  	
  	
  	
  command:	
  "php	
  core/builder.php	
  -­‐gp"
	
  	
  }
},
shell:patternlab
install grunt-shell:
add to initConfig:
add to registerTask:
pattern lab’s future:
‣ KSS
‣ custom starter kits
‣ export/converter
‣ better annotations
summing up:
‣ Our workflows are going to change.
‣ Involve entire team in the process.
‣ Create modular systems of mark-
up.
‣ Pattern Lab can be a central tool in
helping that happen.
pattern lab
patternlab.io
thanks and questions:

Contenu connexe

Tendances

Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10Derek Jacoby
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsSauce Labs
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Tom Brander
 
Two scoops of Django - Deployment
Two scoops of Django - DeploymentTwo scoops of Django - Deployment
Two scoops of Django - Deploymentflywindy
 
2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the TrenchesNicolas Fränkel
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, SuccessfullySauce Labs
 
Selenium Best Practices with Jason Huggins
Selenium Best Practices with Jason HugginsSelenium Best Practices with Jason Huggins
Selenium Best Practices with Jason HugginsSauce Labs
 
Node.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.jsNode.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.jskiyanwang
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsLuís Bastião Silva
 
UI Testing Automation - Alex Kalinovsky - CreamTec LLC
UI Testing Automation - Alex Kalinovsky - CreamTec LLCUI Testing Automation - Alex Kalinovsky - CreamTec LLC
UI Testing Automation - Alex Kalinovsky - CreamTec LLCJim Lane
 
Testing Code.org's Interactive CS Curriculum
Testing Code.org's Interactive CS CurriculumTesting Code.org's Interactive CS Curriculum
Testing Code.org's Interactive CS CurriculumBrian Jordan
 
Auditing Drupal Sites
Auditing Drupal SitesAuditing Drupal Sites
Auditing Drupal SitesExove
 
Djangocon 2014 angular + django
Djangocon 2014 angular + djangoDjangocon 2014 angular + django
Djangocon 2014 angular + djangoNina Zakharenko
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for BeginnersJason Davies
 
Nexthink Library - replacing a ruby on rails application with Scala and Spray
Nexthink Library - replacing a ruby on rails application with Scala and SprayNexthink Library - replacing a ruby on rails application with Scala and Spray
Nexthink Library - replacing a ruby on rails application with Scala and SprayMatthew Farwell
 
Test your Javascript! v1.1
Test your Javascript! v1.1Test your Javascript! v1.1
Test your Javascript! v1.1Eric Wendelin
 

Tendances (20)

Untangling spring week10
Untangling spring week10Untangling spring week10
Untangling spring week10
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page Objects
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?
 
Two scoops of Django - Deployment
Two scoops of Django - DeploymentTwo scoops of Django - Deployment
Two scoops of Django - Deployment
 
2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches
 
How to Use Selenium, Successfully
How to Use Selenium, SuccessfullyHow to Use Selenium, Successfully
How to Use Selenium, Successfully
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Selenium Best Practices with Jason Huggins
Selenium Best Practices with Jason HugginsSelenium Best Practices with Jason Huggins
Selenium Best Practices with Jason Huggins
 
Node.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.jsNode.js Development Workflow Automation with Grunt.js
Node.js Development Workflow Automation with Grunt.js
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
Browser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.jsBrowser Automated Testing Frameworks - Nightwatch.js
Browser Automated Testing Frameworks - Nightwatch.js
 
UI Testing Automation - Alex Kalinovsky - CreamTec LLC
UI Testing Automation - Alex Kalinovsky - CreamTec LLCUI Testing Automation - Alex Kalinovsky - CreamTec LLC
UI Testing Automation - Alex Kalinovsky - CreamTec LLC
 
Testing Code.org's Interactive CS Curriculum
Testing Code.org's Interactive CS CurriculumTesting Code.org's Interactive CS Curriculum
Testing Code.org's Interactive CS Curriculum
 
Auditing Drupal Sites
Auditing Drupal SitesAuditing Drupal Sites
Auditing Drupal Sites
 
Django Best Practices
Django Best PracticesDjango Best Practices
Django Best Practices
 
Djangocon 2014 angular + django
Djangocon 2014 angular + djangoDjangocon 2014 angular + django
Djangocon 2014 angular + django
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for Beginners
 
Nexthink Library - replacing a ruby on rails application with Scala and Spray
Nexthink Library - replacing a ruby on rails application with Scala and SprayNexthink Library - replacing a ruby on rails application with Scala and Spray
Nexthink Library - replacing a ruby on rails application with Scala and Spray
 
Test your Javascript! v1.1
Test your Javascript! v1.1Test your Javascript! v1.1
Test your Javascript! v1.1
 

En vedette

The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)
The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)
The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)Dave Olsen
 
Admissions Brain Dump
Admissions Brain DumpAdmissions Brain Dump
Admissions Brain DumpDave Olsen
 
The What & Why of Pattern Lab
The What & Why of Pattern LabThe What & Why of Pattern Lab
The What & Why of Pattern LabDave Olsen
 
Atomic Design, Living Style Guides and the Holy Grail
Atomic Design, Living Style Guides and the Holy GrailAtomic Design, Living Style Guides and the Holy Grail
Atomic Design, Living Style Guides and the Holy GrailNetcetera
 
Optimizing web performance (Fronteers edition)
Optimizing web performance (Fronteers edition)Optimizing web performance (Fronteers edition)
Optimizing web performance (Fronteers edition)Dave Olsen
 
Case Study: Automating Outage Monitoring & Communication
Case Study: Automating Outage Monitoring & CommunicationCase Study: Automating Outage Monitoring & Communication
Case Study: Automating Outage Monitoring & CommunicationDave Olsen
 
Progressive Mobile Strategy Redux: The Future Friendly Enterprise
Progressive Mobile Strategy Redux: The Future Friendly EnterpriseProgressive Mobile Strategy Redux: The Future Friendly Enterprise
Progressive Mobile Strategy Redux: The Future Friendly EnterpriseDave Olsen
 
Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)webdagene
 
Our Best Practices Are Killing Us
Our Best Practices Are Killing UsOur Best Practices Are Killing Us
Our Best Practices Are Killing UsNicole Sullivan
 
School safety programme in India
School safety programme in IndiaSchool safety programme in India
School safety programme in IndiaKunal Ashar
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...Jer Clarke
 
The Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentThe Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentDave Olsen
 
Дизайн и верстка рассылок - Портфолио
Дизайн и верстка рассылок - ПортфолиоДизайн и верстка рассылок - Портфолио
Дизайн и верстка рассылок - ПортфолиоEmailSoldiers
 
Контент, который переступает зону кофморта потребителя
Контент, который переступает зону кофморта потребителяКонтент, который переступает зону кофморта потребителя
Контент, который переступает зону кофморта потребителяSkykillers
 
Reimagining Your Website: What are prospective students looking for and how a...
Reimagining Your Website: What are prospective students looking for and how a...Reimagining Your Website: What are prospective students looking for and how a...
Reimagining Your Website: What are prospective students looking for and how a...Dave Olsen
 
National implementation report for sms billing and mobile payments in slovakia
National implementation report for sms billing and mobile payments in slovakiaNational implementation report for sms billing and mobile payments in slovakia
National implementation report for sms billing and mobile payments in slovakiaA.N.
 
Beeline subscription rules
Beeline subscription rulesBeeline subscription rules
Beeline subscription rulesA.N.
 

En vedette (20)

Atomic design
Atomic designAtomic design
Atomic design
 
Use Qualities
Use QualitiesUse Qualities
Use Qualities
 
The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)
The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)
The Death of Lorem Ipsum and Pixel-Perfect Content (MinneWebCon version)
 
Admissions Brain Dump
Admissions Brain DumpAdmissions Brain Dump
Admissions Brain Dump
 
The What & Why of Pattern Lab
The What & Why of Pattern LabThe What & Why of Pattern Lab
The What & Why of Pattern Lab
 
Atomic Design, Living Style Guides and the Holy Grail
Atomic Design, Living Style Guides and the Holy GrailAtomic Design, Living Style Guides and the Holy Grail
Atomic Design, Living Style Guides and the Holy Grail
 
Optimizing web performance (Fronteers edition)
Optimizing web performance (Fronteers edition)Optimizing web performance (Fronteers edition)
Optimizing web performance (Fronteers edition)
 
Case Study: Automating Outage Monitoring & Communication
Case Study: Automating Outage Monitoring & CommunicationCase Study: Automating Outage Monitoring & Communication
Case Study: Automating Outage Monitoring & Communication
 
Progressive Mobile Strategy Redux: The Future Friendly Enterprise
Progressive Mobile Strategy Redux: The Future Friendly EnterpriseProgressive Mobile Strategy Redux: The Future Friendly Enterprise
Progressive Mobile Strategy Redux: The Future Friendly Enterprise
 
Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)
 
Our Best Practices Are Killing Us
Our Best Practices Are Killing UsOur Best Practices Are Killing Us
Our Best Practices Are Killing Us
 
School safety programme in India
School safety programme in IndiaSchool safety programme in India
School safety programme in India
 
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
DRY CSS A don’t-repeat-yourself methodology for creating efficient, unified a...
 
The Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentThe Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect Content
 
Дизайн и верстка рассылок - Портфолио
Дизайн и верстка рассылок - ПортфолиоДизайн и верстка рассылок - Портфолио
Дизайн и верстка рассылок - Портфолио
 
Контент, который переступает зону кофморта потребителя
Контент, который переступает зону кофморта потребителяКонтент, который переступает зону кофморта потребителя
Контент, который переступает зону кофморта потребителя
 
Reimagining Your Website: What are prospective students looking for and how a...
Reimagining Your Website: What are prospective students looking for and how a...Reimagining Your Website: What are prospective students looking for and how a...
Reimagining Your Website: What are prospective students looking for and how a...
 
National implementation report for sms billing and mobile payments in slovakia
National implementation report for sms billing and mobile payments in slovakiaNational implementation report for sms billing and mobile payments in slovakia
National implementation report for sms billing and mobile payments in slovakia
 
Beeline subscription rules
Beeline subscription rulesBeeline subscription rules
Beeline subscription rules
 
Beeline Brandbook
Beeline BrandbookBeeline Brandbook
Beeline Brandbook
 

Similaire à The Why and What of Pattern Lab

Ruby on Rails Plugins - Rich Collins
Ruby on Rails Plugins - Rich CollinsRuby on Rails Plugins - Rich Collins
Ruby on Rails Plugins - Rich CollinsRich Collins
 
Future proofing design work with Web components
Future proofing design work with Web componentsFuture proofing design work with Web components
Future proofing design work with Web componentsbtopro
 
Computer Tools for Academic Research
Computer Tools for Academic ResearchComputer Tools for Academic Research
Computer Tools for Academic ResearchMiklos Koren
 
Vipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentationVipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentationVipul Divyanshu
 
Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4openerpwiki
 
Efficient Rails Test Driven Development (class 4) by Wolfram Arnold
Efficient Rails Test Driven Development (class 4) by Wolfram ArnoldEfficient Rails Test Driven Development (class 4) by Wolfram Arnold
Efficient Rails Test Driven Development (class 4) by Wolfram ArnoldMarakana Inc.
 
Open Source RAD with OpenERP 7.0
Open Source RAD with OpenERP 7.0Open Source RAD with OpenERP 7.0
Open Source RAD with OpenERP 7.0Quang Ngoc
 
Adapter design-pattern2015
Adapter design-pattern2015Adapter design-pattern2015
Adapter design-pattern2015Vic Tarchenko
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009marcelesser
 
33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmodwalkmod
 
3stages Wdn08 V3
3stages Wdn08 V33stages Wdn08 V3
3stages Wdn08 V3Boris Mann
 
OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3Borni DHIFI
 
Machine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy CrossMachine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy CrossAndrew Flatters
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural PatternsSameh Deabes
 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsJarrod Overson
 
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011jbarclay
 

Similaire à The Why and What of Pattern Lab (20)

Ruby on Rails Plugins - Rich Collins
Ruby on Rails Plugins - Rich CollinsRuby on Rails Plugins - Rich Collins
Ruby on Rails Plugins - Rich Collins
 
Future proofing design work with Web components
Future proofing design work with Web componentsFuture proofing design work with Web components
Future proofing design work with Web components
 
L03 Design Patterns
L03 Design PatternsL03 Design Patterns
L03 Design Patterns
 
Computer Tools for Academic Research
Computer Tools for Academic ResearchComputer Tools for Academic Research
Computer Tools for Academic Research
 
10 Ways To Improve Your Code
10 Ways To Improve Your Code10 Ways To Improve Your Code
10 Ways To Improve Your Code
 
Vipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentationVipul divyanshu mahout_documentation
Vipul divyanshu mahout_documentation
 
Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4Open erp technical_memento_v0.6.3_a4
Open erp technical_memento_v0.6.3_a4
 
Efficient Rails Test Driven Development (class 4) by Wolfram Arnold
Efficient Rails Test Driven Development (class 4) by Wolfram ArnoldEfficient Rails Test Driven Development (class 4) by Wolfram Arnold
Efficient Rails Test Driven Development (class 4) by Wolfram Arnold
 
Open Source RAD with OpenERP 7.0
Open Source RAD with OpenERP 7.0Open Source RAD with OpenERP 7.0
Open Source RAD with OpenERP 7.0
 
Adapter design-pattern2015
Adapter design-pattern2015Adapter design-pattern2015
Adapter design-pattern2015
 
Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009Clustered PHP - DC PHP 2009
Clustered PHP - DC PHP 2009
 
33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod33rd degree talk: open and automatic coding conventions with walkmod
33rd degree talk: open and automatic coding conventions with walkmod
 
L05 Design Patterns
L05 Design PatternsL05 Design Patterns
L05 Design Patterns
 
3stages Wdn08 V3
3stages Wdn08 V33stages Wdn08 V3
3stages Wdn08 V3
 
OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3OpenERP Technical Memento V0.7.3
OpenERP Technical Memento V0.7.3
 
Recsys 2016
Recsys 2016Recsys 2016
Recsys 2016
 
Machine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy CrossMachine Learning with ML.NET and Azure - Andy Cross
Machine Learning with ML.NET and Azure - Andy Cross
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
 
How to Reverse Engineer Web Applications
How to Reverse Engineer Web ApplicationsHow to Reverse Engineer Web Applications
How to Reverse Engineer Web Applications
 
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011
Drupal 7 Feeds Intro Drupal Camp Indianapolis 2011
 

Plus de Dave Olsen

Taking Your HTML Email Communications from "Ew" to "Wow"
Taking Your HTML Email Communications from "Ew" to "Wow"Taking Your HTML Email Communications from "Ew" to "Wow"
Taking Your HTML Email Communications from "Ew" to "Wow"Dave Olsen
 
The Google Marketing Workflow Workshop
The Google Marketing Workflow WorkshopThe Google Marketing Workflow Workshop
The Google Marketing Workflow WorkshopDave Olsen
 
Building an Academic Program Database and API with Contentful and Amazon Web ...
Building an Academic Program Database and API with Contentful and Amazon Web ...Building an Academic Program Database and API with Contentful and Amazon Web ...
Building an Academic Program Database and API with Contentful and Amazon Web ...Dave Olsen
 
Case Study: Rebuilding an Admissions Web Presence
Case Study: Rebuilding an Admissions Web PresenceCase Study: Rebuilding an Admissions Web Presence
Case Study: Rebuilding an Admissions Web PresenceDave Olsen
 
Implementing Brand Patterns
Implementing Brand PatternsImplementing Brand Patterns
Implementing Brand PatternsDave Olsen
 
The Squishy Future of Content - HEEMAC Edition
The Squishy Future of Content - HEEMAC EditionThe Squishy Future of Content - HEEMAC Edition
The Squishy Future of Content - HEEMAC EditionDave Olsen
 
The Squishy Future of Content - Key Communicators Edition
The Squishy Future of Content - Key Communicators EditionThe Squishy Future of Content - Key Communicators Edition
The Squishy Future of Content - Key Communicators EditionDave Olsen
 
The Squishy Future of Content - Penn State Edition
The Squishy Future of Content - Penn State EditionThe Squishy Future of Content - Penn State Edition
The Squishy Future of Content - Penn State EditionDave Olsen
 
The Squishy Future of Content
The Squishy Future of ContentThe Squishy Future of Content
The Squishy Future of ContentDave Olsen
 
The Server Side of Responsive Web Design
The Server Side of Responsive Web DesignThe Server Side of Responsive Web Design
The Server Side of Responsive Web DesignDave Olsen
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionDave Olsen
 
Web Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionWeb Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionDave Olsen
 
Web Performance & You
Web Performance & YouWeb Performance & You
Web Performance & YouDave Olsen
 
Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)Dave Olsen
 
Measuring Web Performance
Measuring Web Performance Measuring Web Performance
Measuring Web Performance Dave Olsen
 
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Dave Olsen
 
The Future Friendly Campus (Workshop Edition)
The Future Friendly Campus (Workshop Edition)The Future Friendly Campus (Workshop Edition)
The Future Friendly Campus (Workshop Edition)Dave Olsen
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignDave Olsen
 
Developing a Progressive Mobile Strategy (J. Boye edition)
Developing a Progressive Mobile Strategy (J. Boye edition)Developing a Progressive Mobile Strategy (J. Boye edition)
Developing a Progressive Mobile Strategy (J. Boye edition)Dave Olsen
 
The Future Friendly Campus
The Future Friendly CampusThe Future Friendly Campus
The Future Friendly CampusDave Olsen
 

Plus de Dave Olsen (20)

Taking Your HTML Email Communications from "Ew" to "Wow"
Taking Your HTML Email Communications from "Ew" to "Wow"Taking Your HTML Email Communications from "Ew" to "Wow"
Taking Your HTML Email Communications from "Ew" to "Wow"
 
The Google Marketing Workflow Workshop
The Google Marketing Workflow WorkshopThe Google Marketing Workflow Workshop
The Google Marketing Workflow Workshop
 
Building an Academic Program Database and API with Contentful and Amazon Web ...
Building an Academic Program Database and API with Contentful and Amazon Web ...Building an Academic Program Database and API with Contentful and Amazon Web ...
Building an Academic Program Database and API with Contentful and Amazon Web ...
 
Case Study: Rebuilding an Admissions Web Presence
Case Study: Rebuilding an Admissions Web PresenceCase Study: Rebuilding an Admissions Web Presence
Case Study: Rebuilding an Admissions Web Presence
 
Implementing Brand Patterns
Implementing Brand PatternsImplementing Brand Patterns
Implementing Brand Patterns
 
The Squishy Future of Content - HEEMAC Edition
The Squishy Future of Content - HEEMAC EditionThe Squishy Future of Content - HEEMAC Edition
The Squishy Future of Content - HEEMAC Edition
 
The Squishy Future of Content - Key Communicators Edition
The Squishy Future of Content - Key Communicators EditionThe Squishy Future of Content - Key Communicators Edition
The Squishy Future of Content - Key Communicators Edition
 
The Squishy Future of Content - Penn State Edition
The Squishy Future of Content - Penn State EditionThe Squishy Future of Content - Penn State Edition
The Squishy Future of Content - Penn State Edition
 
The Squishy Future of Content
The Squishy Future of ContentThe Squishy Future of Content
The Squishy Future of Content
 
The Server Side of Responsive Web Design
The Server Side of Responsive Web DesignThe Server Side of Responsive Web Design
The Server Side of Responsive Web Design
 
Measuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb EditionMeasuring Web Performance - HighEdWeb Edition
Measuring Web Performance - HighEdWeb Edition
 
Web Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas VersionWeb Performance & You - HighEdWeb Arkansas Version
Web Performance & You - HighEdWeb Arkansas Version
 
Web Performance & You
Web Performance & YouWeb Performance & You
Web Performance & You
 
Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)Measuring Web Performance (HighEdWeb FL Edition)
Measuring Web Performance (HighEdWeb FL Edition)
 
Measuring Web Performance
Measuring Web Performance Measuring Web Performance
Measuring Web Performance
 
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
Everything You Know is Not Quite Right Anymore: Rethinking Best Practices to ...
 
The Future Friendly Campus (Workshop Edition)
The Future Friendly Campus (Workshop Edition)The Future Friendly Campus (Workshop Edition)
The Future Friendly Campus (Workshop Edition)
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web Design
 
Developing a Progressive Mobile Strategy (J. Boye edition)
Developing a Progressive Mobile Strategy (J. Boye edition)Developing a Progressive Mobile Strategy (J. Boye edition)
Developing a Progressive Mobile Strategy (J. Boye edition)
 
The Future Friendly Campus
The Future Friendly CampusThe Future Friendly Campus
The Future Friendly Campus
 

Dernier

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 

Dernier (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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
 

The Why and What of Pattern Lab

  • 1. the Why & What of patternlab.io dave olsen, @dmolsen pattern labcreate atomic design systems
  • 3. a roadmap for our talk: ‣ rethinking the web design process - process: linear vs. collaborative - communication: clients and RWD - modular systems: systems vs. pages ‣ deep dive into pattern lab - quick tour of the front-end - installation - working with patterns - customizing data - advanced features
  • 4. Our existing standards, workflows, & infrastructure won’t hold up. A FUTURE-FRIENDLY TRUTH http://futurefriend.ly
  • 5. courtesy Ben Callahan, Sparkbox FRONT-END BACK-ENDDESIGN THINK ABOUT USERS THROW IN SOME CONTENT LAUNCH! Linear Workflow
  • 6. CONTENT UX FRONT-END DESIGNBACK-END “1 Deliverable” Workflow courtesy Ben Callahan, Sparkbox You Are Here Iterative or Spiral Process
  • 7. communicate. Ultimately, process is about how designers, developers & clients
  • 8. Creation is a shared activity. - Bermon Painter
  • 9. rethinking the web design process: collaborate Kick-off Design & Develop Test Client Review Production
  • 10. rethinking how we communicate: deliverables ‣ mood boards ‣ style tiles ‣ wireframes ‣ low-fidelity HTML mock-ups ‣ high-fidelity HTML mock-ups ‣ “cut up” mark-up, CSS, & JS ‣ pattern libraries & style guides
  • 11. Our hand-offs to clients should allow them to re-mix common elements that we’ve developed to build new things. Our deliverables should be systems, not pages.
  • 12. Build, test, and review deliverables in the place where a project is going to be used. Get to the browser.
  • 13. ...communicate better with one another? ...build robust systems and not pages? ...review everything in the browser? So how do we...
  • 15. Pattern Lab is a collection of tools for creating modular systems that involves your entire team & your client every step of the way and lets everyone review in the browser.
  • 16. what pattern lab is: your deliverables in one place
  • 17. Kick-off Design & Develop Test Client Review Production what pattern lab is: a collection of tools atomic spectrum viewport re-sizer annotationspage follow pattern states shared component library & dynamic data MQ re-sizer starter kit auto-reload code view auto-build style guide
  • 18. working with patterns: systems, not pages Atomic Design as the basis for Pattern Lab’s pattern types.
  • 19. what pattern lab ain’t: ‣ a fancy UI framework ‣ dependency heavy ‣ incredibly rigid
  • 20. You make Pattern Lab what you want and need it to be.
  • 21. the requirements: PHP 5.3+ no web server required* * - only required for page follow Mustache is used for patterns. JSON is used for dynamic data storage.
  • 23. changes to pattern lab: github.com/pattern-lab
  • 25. installation: generate for the first time
  • 26. installation: generate for the first time php  core/builder.php  -­‐g just in case you’re a fan of the command line, on linux or on windows. php  core/builder.php  -­‐-­‐help will show you all of your options.
  • 27. installation: review the installation
  • 28. installation: review source/ the only required directories are _data/ & _patterns/. otherwise, you can change source/ as much as you want. this is what we mean about making your own Bootstrap. you can even use Bootstrap.
  • 29. installation: open pattern lab’s index.html don’t edit public/. always make changes in source/. public/ is for your own and your client review purposes.
  • 30. installation: done! Pattern Lab doesn’t require Apache so no extra set-up. You can drop Pattern Lab into a Dropbox folder for clients.
  • 31. front-end tour: follow along demo.patternlab.io
  • 37. front-end tour: media query list
  • 42. working with patterns: intro What is a pattern?
  • 43. working with patterns: intro Each pattern describes a problem that occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. — Christopher Alexander
  • 44. working with patterns: intro Pattern Lab provides a way to help you develop, describe, & stitch together mark-up and style patterns.
  • 45. Pattern Lab uses conventions so that the filesystem acts as its database. working with patterns: intro
  • 46. working with patterns: organization all file paths in this presentation are located under source/. 00-­‐organisms/01-­‐global/00-­‐header.mustache
  • 47. 00-­‐organisms/01-­‐global/00-­‐header.mustache working with patterns: organization patternType the digits are optional and are purely for ordering the navigation.
  • 48. 00-­‐organisms/01-­‐global/00-­‐header.mustache working with patterns: organization the digits are optional and are purely for ordering the navigation. patternSubtype
  • 49. 00-­‐organisms/01-­‐global/00-­‐header.mustache working with patterns: organization the digits are optional and are purely for ordering the navigation. pattern
  • 50. _00-­‐header.mustache working with patterns: hiding patterns the underscore hides a pattern in the navigation but the pattern is still available for inclusion in other patterns.
  • 51. 00-­‐header@inreview.mustache working with patterns: pattern states anything after the “@” gets added as a class to the pattern’s navigation element. “inprogress,” “inreview,” and “complete” propagate to downstream patterns.
  • 52. working with patterns: pattern states
  • 53. working with patterns: systems, not pages Atomic Design as the basis for Pattern Lab’s pattern types.
  • 54. working with patterns: systems, not pages molecules-search organisms-header templates-homepage
  • 55. Important: You don’t have to use the Atomic Design metaphor to use Pattern Lab. Change it to whatever you want. working with patterns: systems, not pages
  • 57. working with patterns: using atoms Use atoms to help define general styles. Good first step for style tiles, mood boards, or testing style changes. They most likely won’t be used in other patterns.
  • 58. working with patterns: atom example
  • 59. working with patterns: atom example <h1>Heading  Level  1</h1> <h2>Heading  Level  2</h2> <h3>Heading  Level  3</h3> <h4>Heading  Level  4</h4> <h5>Heading  Level  5</h5> <h6>Heading  Level  6</h6> atoms-headings:
  • 61. working with patterns: using molecules Use molecules as your base for common patterns that will be included further up. In general, they shouldn’t have partial dependencies. Will use variables.
  • 62. working with patterns: molecule example
  • 63. working with patterns: molecule example <li  class="comment-­‐container">   <div  class="comment-­‐meta">     <img  src=”{{  img.avatar  }}”  class=”avatar”>     <h4  class="comment-­‐name"> <a  href="#">{{  name.first  }}  {{  name.last  }}</a>     </h4>   </div>   <div  class="comment-­‐text">     <p>{{  description  }}</p>   </div> </li> molecules-single-comment:
  • 64. working with patterns: molecule example <li  class="comment-­‐container">   <div  class="comment-­‐meta">     <img  src=”{{  img.avatar  }}”  class=”avatar”>     <h4  class="comment-­‐name"> <a  href="#">{{  name.first  }}  {{  name.last  }}</a>     </h4>   </div>   <div  class="comment-­‐text">     <p>{{  description  }}</p>   </div> </li> these are variables and are defined in various JSON files. molecules-single-comment:
  • 65. customizing data: JSON & mustache vars   <div>     <h4> <a  href="#">{{  name.first  }}  {{  name.last  }}</a>     </h4>   </div>   <div  class="comment-­‐text">     <p>{{  description  }}</p>   </div> Mustache: JSON: {      “name”:  {            “first”:  “Dave”,            “last”:  “Olsen”      },      “description”:  “Long  text  goes  here.” }
  • 66. customizing data: where to define it Global data: _data/_data.js 00-­‐pages/00-­‐homepage.json Pattern-specific data: 00-­‐pages/00-­‐homepage~emergency.json Pseudo-pattern: specificity
  • 67. customizing data: system/default data <ul>    {{#  listItems.four  }}        <li>{{  name.first  }}  {{  name.last  }}</li>    {{/  listItems.four  }} </ul> the “listItems” variable: the “link” variable: <a  href=”{{  link.pages-­‐blog  }}”> provides the real path to a pattern provides an easy-to-use set of data to iterate over for your mock- ups. supports up to twelve iterations. randomized every time the site is generated. more info: http://bit.ly/1jojXKR
  • 69. working with patterns: using organisms Use organisms when you need combinations of molecules. Also good when defining patterns that may match partials in a CMS.
  • 70. working with patterns: organism example
  • 71. working with patterns: organism example <section  class="comments  section">   <div  class="comments-­‐container"  id="comments-­‐container">     <h2  class="section-­‐title">59  Comments</h2>     {{>  molecules-­‐comment-­‐form  }}       <ul  class="comment-­‐list">       {{#  listItems.five  }}         {{>  molecules-­‐single-­‐comment  }}         {{/  listItems.five  }}     </ul>   </div>   {{>  molecules-­‐pagination  }}   </section> organisms-comment-thread:
  • 72. working with patterns: organism example <section  class="comments  section">   <div  class="comments-­‐container"  id="comments-­‐container">     <h2  class="section-­‐title">59  Comments</h2>     {{>  molecules-­‐comment-­‐form  }}       <ul  class="comment-­‐list">       {{#  listItems.five  }}         {{>  molecules-­‐single-­‐comment  }}         {{/  listItems.five  }}     </ul>   </div>   {{>  molecules-­‐pagination  }}   </section> these are mustache partials and are how we include one pattern within another. organisms-comment-thread:
  • 73. 00-­‐organisms/01-­‐global/00-­‐header.mustache working with patterns: partial syntax if we want to include this pattern in another pattern... default partial syntax uses only the pattern type and pattern name... {{>  organisms-­‐header  }} fuzzy matching of the pattern name... {{>  organisms-­‐head  }} {{>  00-­‐organisms/01-­‐global/00-­‐header  }} traditional mustache partial...
  • 74. customizing data: pattern parameters {{>  molecule-­‐alert(message:  “hello”)  }} <div  class=”alert”>    {{  message  }} </div> <div  class=”alert”>    hello </div> Mustache: Partial: Rendered: pattern parameters allow for defining of variable replacement right in the partial.
  • 75. customizing data: style modifiers {{>  molecule-­‐alert:error  }} <div  class=”alert  {{  styleModifier  }}”>    Message </div> <div  class=”alert  error”>    Message </div> Mustache: Partial: Rendered: style modifiers allow for DRY patterns.
  • 77. working with patterns: using templates Use templates to wireframe and provide a low-fidelity version of final pages. They’re all about layout. Template mark-up can and should include sections that might not show by default. After atoms, templates will be the other thing you show clients.
  • 78. working with patterns: template example
  • 79. working with patterns: template example <div  class="page"  id="page">   {{>  organisms-­‐header  }}   <div  role="main">     {{#  emergency  }}       {{>  molecules-­‐alert:error  }}     {{/  emergency  }}     {{#  hero  }}       {{>  molecules-­‐block-­‐hero  }}     {{/  hero}}     <div  class="g  g-­‐3up">       {{#  touts}}         <div  class="gi">           {{>  molecules-­‐block-­‐inset  }}         </div>       {{/  touts}}     </div><!-­‐-­‐end  3up-­‐-­‐> templates-homepage:
  • 80. working with patterns: common header & footer 00-­‐atoms/00-­‐meta/_00-­‐header.mustache 00-­‐atoms/00-­‐meta/_01-­‐footer.mustache if these patterns exist Pattern Lab automatically includes them as your header and footer.
  • 81. working with patterns: template example <div  class="page"  id="page">   {{>  organisms-­‐header  }}   <div  role="main">     {{#  emergency  }}       {{>  molecules-­‐alert:error  }}     {{/  emergency  }}     {{#  hero  }}       {{>  molecules-­‐block-­‐hero  }}     {{/  hero}}       ... these are quasi-“if statements” and allow for the inclusion of multiple layout possibilities for a template. turned on via JSON variables. templates-homepage:
  • 83. working with patterns: using pages Use pages to provide high- fidelity versions of a template. They should include very specific data.They’re all about showing “real” content in the wireframe.
  • 84. working with patterns: page example
  • 85. working with patterns: page example {{>  templates-­‐homepage  }} pages should simply include/reference templates. the majority of the power of a page is in its associated JSON file and by using pseudo-patterns.
  • 86. annotations: _data/annotations.js {    "el":  "header[role=banner]",    "title"  :  "Masthead",    "comment":  "The  main  header..." } JSON: Front-end:
  • 87. advanced tools: ‣ auto-regenerate ‣ auto-reload ‣ page follow ‣ keyboard shortcuts ‣ query string params ‣ QR code generator
  • 89. common workflow with advanced tools: 1. start watcher & auto-reload server at the same time 2. edit & save files in source/ 3. watch things change in your browser
  • 90. integrating with grunt: npm  install  -­‐-­‐save-­‐dev  grunt-­‐shell shell:  {    patternlab:  {        command:  "php  core/builder.php  -­‐gp"    } }, shell:patternlab install grunt-shell: add to initConfig: add to registerTask:
  • 91. pattern lab’s future: ‣ KSS ‣ custom starter kits ‣ export/converter ‣ better annotations
  • 92. summing up: ‣ Our workflows are going to change. ‣ Involve entire team in the process. ‣ Create modular systems of mark- up. ‣ Pattern Lab can be a central tool in helping that happen.