Slide 1

Slide 1 text

The Four Noble Truths (of Stylesheets) Saturday, June 30, 12

Slide 2

Slide 2 text

You are suffering. (we were too) http://inguen.blogspot.com/2009_02_01_archive.html Saturday, June 30, 12

Slide 3

Slide 3 text

STYLESHEETS are the source of your suffering http://wikibon.org/blog/wp-content/uploads/2011/10/5.„eg Saturday, June 30, 12 It is the nature of CSS to devolve into madness. Duplicated styles, code spaghetti, inconsistent UI, lots of decision-making and no clear path.

Slide 4

Slide 4 text

You can be free from suffering. http://www.indiegamemag.com/media/lightbulb.jpg Saturday, June 30, 12 You don’t have to live like this.

Slide 5

Slide 5 text

Living style guides & self-discipline will free you from your suffering http://www.tsf.net.au/gallery/var/albums/Tidy-Cabling/46-cluster_back2.„g?m=1294131614 Saturday, June 30, 12

Slide 6

Slide 6 text

Development Speed Re-use Flexibility Repetition Requires Reduces Requires Reduces Saturday, June 30, 12 These tradeoffs are fundamental to software.

Slide 7

Slide 7 text

“Why is it so slow to make new pages that look similar?” Hand coded CSS Saturday, June 30, 12

Slide 8

Slide 8 text

I need to reuse my classnames. Saturday, June 30, 12

Slide 9

Slide 9 text

and save time Saturday, June 30, 12

Slide 10

Slide 10 text

There we go Saturday, June 30, 12

Slide 11

Slide 11 text

I’m so fast now. CSS FRAMEWORKS Saturday, June 30, 12

Slide 12

Slide 12 text

“Change this bit here, will ya?” Saturday, June 30, 12

Slide 13

Slide 13 text

But if I change that, it will affect these other things. Saturday, June 30, 12

Slide 14

Slide 14 text

“Why? They’re not related.” Saturday, June 30, 12

Slide 15

Slide 15 text

I need to NOT reuse my classnames. Sometimes. Saturday, June 30, 12

Slide 16

Slide 16 text

I’m so flexible now. Scoped Sass Styles & Content Semantics Saturday, June 30, 12

Slide 17

Slide 17 text

“Why is it so hard to roll out this change across the site?” Saturday, June 30, 12 It’s faster than it was,

Slide 18

Slide 18 text

I didn’t know those things were related. Saturday, June 30, 12

Slide 19

Slide 19 text

“Of course they are!” Saturday, June 30, 12

Slide 20

Slide 20 text

Make design-oriented concepts that can vary in appearance. Saturday, June 30, 12

Slide 21

Slide 21 text

Application Concept Framework Let’s work on this together. Saturday, June 30, 12

Slide 22

Slide 22 text

“Change how this concept looks?” “Use this concept instead.” Saturday, June 30, 12

Slide 23

Slide 23 text

No problem. Saturday, June 30, 12

Slide 24

Slide 24 text

“Perfect!” Saturday, June 30, 12

Slide 25

Slide 25 text

Good naming of appropriate concepts is the key to maintainable software. Saturday, June 30, 12 This is not just a stylesheet concept. This is a fundamental truth of software development.

Slide 26

Slide 26 text

How do I know if a concept is appropriate? Saturday, June 30, 12 a concept is appropriate if is independent of other concepts or when its relationship to other concepts is unambiguous. a concept is appropriate if it lives in the application domain. a concept is appropriate if it supports the creation of appropriate concepts.

Slide 27

Slide 27 text

What makes a good name? Saturday, June 30, 12 A good name is short. A good name conveys understanding about a concept. A good name is omits little knowledge about its concept.

Slide 28

Slide 28 text

Naming a concept changes it. Saturday, June 30, 12 Once you name a concept you change the concept into whatever concept that name invokes in another person. Any concept worth creating is a concept worth naming well. Take the time to name it right, or it will be misunderstood and misused. This is the source of most software defects. This is hard for designers because they speak a visual language. they can concisely convey concepts visually for which there is no concise terminology. It’s ok to make up words.

Slide 29

Slide 29 text

Accept your Constraints http://candidkerry.files.wordpress.com/2011/09/bound-with-chains-of-the-spirit-and-of-men11.jpg Saturday, June 30, 12 We work with browsers and we are beholden to how they work. You cannot fight this. You cannot escape it. Accept it.

Slide 30

Slide 30 text

Fundamentals • Reset • Additive-only • Page Layout • Containers • Typography • Background • Foreground • Spacers • Interaction States • Medias • Height • Differences OK Saturday, June 30, 12 We must embrace these fundamentals. Our concepts cannot fight them or they are not appropriate to our application.

Slide 31

Slide 31 text

Saturday, June 30, 12 Eric Meyer’s Reset. TURN OFF ALL THE STYLES.

Slide 32

Slide 32 text

Additive by Nature Styles Inherit and Cascade. “Turning off” styles is a code smell. Saturday, June 30, 12

Slide 33

Slide 33 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 34

Slide 34 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 35

Slide 35 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 36

Slide 36 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 37

Slide 37 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 38

Slide 38 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 39

Slide 39 text

Constructing an Object Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 40

Slide 40 text

Constructing an Object Unstyled Background Container Typography Foreground Margin/Padding Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 41

Slide 41 text

Constructing an Object .calming .shadow-box .reading-text .green-bg-type .vertically-padded Saturday, June 30, 12 From each category you can usually only pick 1 class to apply to the same element.

Slide 42

Slide 42 text

Style Concern: Layout • Grid - Provides the structure of a page. CSS3 will bring alternate layout methods. • Page layouts - Defines how primary elements adhere to the grid and respond. Blog Post Saturday, June 30, 12

Slide 43

Slide 43 text

Style Concern: Typography • Defines how a collection of typographic elements are styled. • Vertical Rhythm • There is no default typography. Saturday, June 30, 12 opt-in typography is not the industry standard approach. The industry is mostly wrong about this. Typographic inheritance is annoying.

Slide 44

Slide 44 text

Style Concern: Typography • Defines how a collection of typographic elements are styled. • Vertical Rhythm • There is no default typography. Opt-in To Typography Saturday, June 30, 12 opt-in typography is not the industry standard approach. The industry is mostly wrong about this. Typographic inheritance is annoying.

Slide 45

Slide 45 text

Style Concern: Typography • Defines how a collection of typographic elements are styled. • Vertical Rhythm • There is no default typography. Saturday, June 30, 12 opt-in typography is not the industry standard approach. The industry is mostly wrong about this. Typographic inheritance is annoying.

Slide 46

Slide 46 text

Style Concern: Widgets • Styles for your interactive elements • SMACSS - Jonathan Snook Saturday, June 30, 12

Slide 47

Slide 47 text

Saturday, June 30, 12 In order to have consistent breakpoint behavior, Sass 3.2 has new abilities to define abstractions around styles using @content.

Slide 48

Slide 48 text

Saturday, June 30, 12

Slide 49

Slide 49 text

Height Is a Scary Word http://edge.ebaumsworld.com/mediaFiles/picture/1918624/81886902.jpg Saturday, June 30, 12 except for positioned content, You almost never want to set the hight of anything that has a variable width or variable content (hint: that’s almost everything)

Slide 50

Slide 50 text

Differences are OK http://www.snvdiversityrt.zoomshare.com/files/Diversity_Matters_photo_without_wording_.jpg Saturday, June 30, 12 Pixel perfection is a pipe dream. Embrace progressive enhancement. Krys: tell designers this is ok. do you have some tips for how to design with enhancement/ degredation in mind?

Slide 51

Slide 51 text

Designer Saturday, June 30, 12 Naming for Intent Design is not art. Design is science with an artistic flair. Suddenly your designs change, as intent becomes more of a focus than art.

Slide 52

Slide 52 text

Naming is a Collaboration Designers must pick or approve the name. Unfortunately, designers are not often good at naming things. Saturday, June 30, 12 Coders have to name everything they make, but designers don’t. Naming is a skill that must be developed. You have to learn to explain your intuition and instinct.

Slide 53

Slide 53 text

Naming is Hard http://funnyphotosto.com/wp-content/uploads/2012/03/12/screaming.„g Saturday, June 30, 12 Because designers think visually, sometimes a description is actually a paragraph, not just one or two words.

Slide 54

Slide 54 text

Naming Docent Developers, your job is to help designers develop a shared vocabulary. Saturday, June 30, 12 If you are a developer and a designer, you now have an excuse for talking to yourself.

Slide 55

Slide 55 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 56

Slide 56 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 57

Slide 57 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 58

Slide 58 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 59

Slide 59 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 60

Slide 60 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 61

Slide 61 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 62

Slide 62 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 63

Slide 63 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 64

Slide 64 text

The Name Game Saturday, June 30, 12 THESAURUS!!!

Slide 65

Slide 65 text

Losing the Name Game Saturday, June 30, 12 Sometimes you cannot find a good name, or you find some use of a design that doesn’t match the current name.

Slide 66

Slide 66 text

Losing the Name Game Wait: Don’t name it Saturday, June 30, 12 Sometimes you cannot find a good name, or you find some use of a design that doesn’t match the current name.

Slide 67

Slide 67 text

Losing the Name Game Consistency: Change the design Wait: Don’t name it Saturday, June 30, 12 Sometimes you cannot find a good name, or you find some use of a design that doesn’t match the current name.

Slide 68

Slide 68 text

Losing the Name Game Give up: Pick two names Consistency: Change the design Wait: Don’t name it Saturday, June 30, 12 Sometimes you cannot find a good name, or you find some use of a design that doesn’t match the current name.

Slide 69

Slide 69 text

The Designer Wins http://blog.hubspot.com/Portals/53/images/charlie-sheen-winning.png Saturday, June 30, 12 Don’t force a design change just because a name doesn’t match. Intuition is a tricky thing, if you trust your designer, trust their gut feeling. If you don’t trust your designer... :(

Slide 70

Slide 70 text

Now you understand. • My site is so big • But I grok the fundamentals • But OMG where do I start? Saturday, June 30, 12

Slide 71

Slide 71 text

CHANGE how you think Saturday, June 30, 12 Think of each page, each project, each feature as part of a whole When you do this, living styleguide is almost inevitable

Slide 72

Slide 72 text

Re-approach the Fundamentals Saturday, June 30, 12

Slide 73

Slide 73 text

Styleguides Must Live in Code Saturday, June 30, 12 styleguides traditionally are a document but no one refers to them so what’s the point consistency is the point - so apply the principals of usability and make a styleguide people can use make it in code. This is an actual screenshot of a page of our styleguide. But where do you start? It's better to show than to tell. Make a living styleguide for documentation and prototyping. This is your design catalog. Teach the design, don't just exemplify it.

Slide 74

Slide 74 text

Elements Saturday, June 30, 12 It’s common to think of pages in terms of areas, elements, and relationships. Have to break that down fundamentally and think of the building blocks of your elements. Add to traditional design mindset: Interchangeable elements Start with your content inventory. Then look carefully at the elements that live around and within your content.

Slide 75

Slide 75 text

Elements Saturday, June 30, 12 It’s common to think of pages in terms of areas, elements, and relationships. Have to break that down fundamentally and think of the building blocks of your elements. Add to traditional design mindset: Interchangeable elements Start with your content inventory. Then look carefully at the elements that live around and within your content.

Slide 76

Slide 76 text

Saturday, June 30, 12 It’s common to think of pages in terms of areas, elements, and relationships. Have to break that down fundamentally and think of the building blocks of your elements. Add to traditional design mindset: Interchangeable elements Start with your content inventory. Then look carefully at the elements that live around and within your content.

Slide 77

Slide 77 text

Property Soup Le average sass stylesheet. Saturday, June 30, 12 How should we organize our style properties? Alphabetize them! We can do better than this. We will organize our properties by style concern.

Slide 78

Slide 78 text

Property Soup Le average sass stylesheet. Alphabetized Saturday, June 30, 12 How should we organize our style properties? Alphabetize them! We can do better than this. We will organize our properties by style concern.

Slide 79

Slide 79 text

Property Soup Le average sass stylesheet. Alphabetized Saturday, June 30, 12 How should we organize our style properties? Alphabetize them! We can do better than this. We will organize our properties by style concern.

Slide 80

Slide 80 text

Typography The non-color aspects of text. Saturday, June 30, 12 Note how the typography and foreground are mixed up?

Slide 81

Slide 81 text

Typography Typographic properties: font-xxx, line- height, bullets, text-xxx, margin Saturday, June 30, 12 Explain the placeholder selector

Slide 82

Slide 82 text

Container Not all paddings are from the same concern. Saturday, June 30, 12

Slide 83

Slide 83 text

Container border, box shadow, padding Saturday, June 30, 12

Slide 84

Slide 84 text

Background Background - this one is easy :) Saturday, June 30, 12

Slide 85

Slide 85 text

Foreground border-color, color, shadow-color Saturday, June 30, 12 you can’t declare text shadow color explicitly, so we have to put all text shadows in the foreground, otherwise the shadow details would be in the typography.

Slide 86

Slide 86 text

Spacers margin & padding on non-typographic elements Saturday, June 30, 12

Slide 87

Slide 87 text

An Object Description In Sass, we describe objects using words and high-level concepts, not style primitives. Saturday, June 30, 12 Isn’t this simpler to understand if you’re reading the code? We read code more often than we write it. Be nice to your future self.

Slide 88

Slide 88 text

An Object Description In Sass, we describe objects using words and high-level concepts, not style primitives. Saturday, June 30, 12 Isn’t this simpler to understand if you’re reading the code? We read code more often than we write it. Be nice to your future self.

Slide 89

Slide 89 text

An Object Description Our object description is longer now. Saturday, June 30, 12

Slide 90

Slide 90 text

An Object Description Our object description is longer now. Not Re-Usable Re-Usable Saturday, June 30, 12

Slide 91

Slide 91 text

A Sad Reality If you use @extend like this, your stylesheets will be huge. Saturday, June 30, 12 So unless you need the flexibility that semantic markup brings for shared content, etc

Slide 92

Slide 92 text

A Sad Reality Classitis provides a better user experience. Saturday, June 30, 12

Slide 93

Slide 93 text

A Sad Reality Classitis provides a better user experience. Saturday, June 30, 12

Slide 94

Slide 94 text

This is a GOOD Start Saturday, June 30, 12

Slide 95

Slide 95 text

Progression of a Design Prototype Variations Multiple Uses Domain Concepts Presentational Concepts Concept App Styles Foundation Classes Mixin Library Saturday, June 30, 12 This is a generalization, not a rule. Sometimes you skip a step, some concepts never appear in the foundation.

Slide 96

Slide 96 text

Progression of a Design Prototype Variations Multiple Uses Domain Concepts Presentational Concepts Concept App Styles Foundation Classes Mixin Library Saturday, June 30, 12 This is a generalization, not a rule. Sometimes you skip a step, some concepts never appear in the foundation.

Slide 97

Slide 97 text

Library: ‣No output. ‣Mostly presentational in nature. Foundation: ‣Core, Shared Styles. ‣Maps Presentation to Domain. Application: ‣Features. ‣One-off Pages. ‣Experimental styles. ‣Server traffic patterns Saturday, June 30, 12

Slide 98

Slide 98 text

Library: ‣No output. ‣Mostly presentational in nature. Foundation: ‣Core, Shared Styles. ‣Maps Presentation to Domain. Application: ‣Features. ‣One-off Pages. ‣Experimental styles. ‣Server traffic patterns Saturday, June 30, 12

Slide 99

Slide 99 text

Library: ‣No output. ‣Mostly presentational in nature. Foundation: ‣Core, Shared Styles. ‣Maps Presentation to Domain. Application: ‣Features. ‣One-off Pages. ‣Experimental styles. ‣Server traffic patterns Saturday, June 30, 12

Slide 100

Slide 100 text

Design Design Saturday, June 30, 12

Slide 101

Slide 101 text

Saturday, June 30, 12

Slide 102

Slide 102 text

Saturday, June 30, 12

Slide 103

Slide 103 text

Interactions are essential design elements Saturday, June 30, 12

Slide 104

Slide 104 text

Design Process || Dev Process Saturday, June 30, 12 Do this and suddenly your design process and development process start to look alike. Hell, if you think that way, suddenly you start being able to design IN CODE. (I don’t think that way)

Slide 105

Slide 105 text

Don’t worry, we’re almost done. Saturday, June 30, 12

Slide 106

Slide 106 text

Benefits Everything has a place http://www.ultracraft.com/system/accessories/0000/0425/Drawer-Organizer-Metal_full.„g Saturday, June 30, 12

Slide 107

Slide 107 text

Benefits File Size 3.5 MB 1.2 MB Saturday, June 30, 12 Better factorization => less duplication. 2/3 reduction of total site-wide styles.

Slide 108

Slide 108 text

Benefits Efficient communication Saturday, June 30, 12 More efficient team thru better communication thanks to new vocabulary. completely Describing a page design can be done in ~15 minutes.

Slide 109

Slide 109 text

Benefits Low Coupling Saturday, June 30, 12 a clean separation in responsibilities, means changes breaks things less often in unexpected ways

Slide 110

Slide 110 text

Benefits Built to last http://www.flickr.com/photos/wilhelmja/4233621517/ Saturday, June 30, 12 Ok. Pyramids are probably a bit of an exaggeration. These styles will be used and evolved for several years -- an eternity on the internet.

Slide 111

Slide 111 text

Downsides ‣Learning curve ‣Harder to debug ‣Classitis ‣A lot of work Saturday, June 30, 12 1-2 days of training to become capable. 3-4 weeks to be competent. It will take > 1 month for an experienced team to build a comprehensive styleguide. These styles will be used by a team. For the love of god, don't do this for your blog or a marketing/promotional site.

Slide 112

Slide 112 text

Questions? Saturday, June 30, 12

Slide 113

Slide 113 text

We like you. @shodoshan @chriseppstein Saturday, June 30, 12