On Github alienresident / edui-2014
I am using reveal.js for my slides. They're on githubYou can follow along on bit.ly/edu_pig
I'll post a PDF of these slides afterwards to Slideshare.Mark Reilly
WHO: am I? [down]User Experience ~ User InterfaceUX~UI T-Shirt at UIStencils.com
What: do I do? [down]@alien_resident - Twitteralienresident - GithubMark Reilly - LinkedIn
Background How to get in TouchA web designer or developer is tasked with adding the institutional branding and colors to a vendor’s software.
Background [down] Most software products these days are created with this in mind: Allowing you to add some lines of CSS and an image. It’s usually straight forward. Find (and skim) the documentation and add the styles and images.A product:
Pretty Interface Graphics Previously Installed by another Group Prioritized Integrations over Goals Poorly Implemented GUITo ‘tart’ up the product by adding your institution’s branding.
What you’ll Learn [down]The Muppets Take Manhattan - 1984 (TriStar Pictures) Youtube
So, when I google this last week I learnt that there was a rivalry between Miss Piggy and Joan Rivers. It’s all on the HSN and youtube. [down]Users aren’t satisfied
You’re frustrated
Selecting Open Source products is a good start.
How Can We Change this Cycle? [down]What is free software? gnu.org
Why Open Source is Different [down]NYU decided to move from BlackBoard to Sakai in the Fall 2011.
Sakai to Replace BlackBoard [down] Bringing it back to my recent experience... I was tasked with adding our branding to Sakai and make NYU Classes.“When fixing problems, always do the least you can.”
“Focus Ruthlessly on Fixing the Most Serious Problems First”
Steve Krug, Rocket Surgery Made Easy
Communicating the Results? [down] Steve Krug — of Don’t Make Me Think and Rocket Surgery Made Easy fame If there’s one issue that’s tripping up your users: what’s an easy fix?Create a reusable, well organized, and easily extendable UI.
We’re not designing pages, we’re designing systems of components.
Stephen Hay
Beyond Quick Fixes? [down] In the past, when we designed web pages, we usually started by converting Photoshop mockups to HTML and CSS. We would start in the top left corner and work down the page. We may start with the homepage design or if we were more adventurous we’d start with an interior content page. This pattern is often referred to as designing from the outside in. This worked fairly well with simple static sites. There were only a few templates to worry about. But with more complex content management system this pattern started to be less useful. Often there were pages or variations of pages that were not captured by the initial mockups. The markup was sufficiently different and our styles were too closely coupled that it started to break. We ended up with a lot of half styled pages. In more dynamic system components may be on a page based on context. We can’t always know what’s forsee what's going to be on every page. We now realize that we need to design web systems and not web pages. We need to design from the inside out not the outside in. Design the small discrete chunks of functionality that comprise parts of our sites. In such a way they can be on any part of our site and not tied to one location on a particular page.There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
Beyond Quick Fixes? [down] Naming things is hard. Organizing a UI system is hard too. Rather than reinvent the wheel I looked at what others were doing and chose the one that made most sense to me and the projects’ needs.learn more at sass-lang.com/guide
Getting SASSY: [down]$instution-color: #fc3; a { color: $instution-color; } nav { background-color: $instution-color; }SASSY: Variables [down]
@mixin default-type-size { font-size: 16px; line-height: 1.5em; } p { @include default-type-size; } footer { @include default-type-size; }
p { font-size: 16px; line-height: 1.5em; } footer { font-size: 16px; line-height: 1.5em; }SASSY: Mixins [down]
@mixin default-type-size($color) { font-size: 16px; color: $color; } p { @include default-type-size(#333); } footer { @include default-type-size(#eee); }
p { font-size: 16px; color: #333333; } footer { font-size: 16px; color: #eeeeee; }SASSY: Mixins() [down]
@mixin type-size($size, $color) { font-size: $size; color: $color; } p { @include type-size(16px, #333); } footer { @include type-size(14px, #eee); }
p { font-size: 16px; color: #333333; } footer { font-size: 14px; color: #eeeeee; }SASSY: Mixins() [down]
%default-type-size { font-size: 16px; line-height: 1.5em; } p { @extend %default-type-size; } footer { @extend %default-type-size; }
p, footer { font-size: 16px; line-height: 1.5em; }SASSY: Extends [down]
%default-type-size { font-size: 16px; line-height: 1.5em; } p { @extend %default-type-size; } footer { @extend %default-type-size; color: #eeeeee; }
p, footer { font-size: 16px; line-height: 1.5em; } footer { color: #eeeeee; }SASSY: Extends more Great for Buttons and Messages [down]
nav { ul { margin: 0; padding: 0; list-style: none; li { display: inline-block; } } }
nav ul { margin: 0; padding: 0; list-style: none; } nav ul li { display: inline-block; }SASSY: Extends more Great for Buttons and Messages [down]
// _reset.scss html, body, ul, ol { margin: 0; padding: 0; }
// base.scss @import 'reset'; body { font-size: 100% Helvetica, sans-serif; background-color: #efefef; }
/* base.css */ html, body, ul, ol { margin: 0; padding: 0; } body { font-size: 100% Helvetica, sans-serif; background-color: #efefef; }SASSY: @import & Partials [down]
Sass while powerful can be misused. You can create brittle, inflexible, and unmaintainable CSS with Sass as with vanilla CSS.
What you need is an architecture that is modular and scalable.
SASSY: Conclusion [next]By Jonathan Snook a web developer and designer, formerly at Yahoo!, He worked on the redesign of Yahoo! mail
learn more at smacss.com
Getting SMACKY: [down]At the very core of SMACSS is categorization
There are five types of categories:
Base Layout Module State Theme Getting SMACSS: [down]Base rules are the defaults.
html, body, form { margin: 0; padding: 0; } input[type="text"] { border: 1px solid #999; } a { color: #039; } a:hover { color: #03C; }Getting SMACSS: Base Essentially, a base style says that wherever this element is on the page, it should look like this. [down]
Layout rules divide the page into sections. Layouts hold one or more modules together.
#article { width: 80%; float: left; } #sidebar { width: 20%; float: right; } .l-fixed #article { width: 600px; } .l-fixed #sidebar { width: 200px; }Getting SMACSS: Layout [down]
Modules are the reusable, modular parts of our design. They are the callouts, the sidebar sections, the product lists and so on.
.pod { width: 100%; background: #ddd; } .pod input[type=text] { width: 50%; border: 1px solid #666; }Getting SMACSS: Module [down]
.pod { width: 100%; background: #ddd; } .pod input[type=text] { width: 50%; border: 1px solid #666; } .pod-callout { width: 200px; } .pod-callout input[type=text] { width: 180px; }
<div class="pod pod-callout"> ... </div>Getting SMACSS: Module [down]
State rules are ways to describe how our modules or layouts will look when in a particular state. Is it hidden or expanded? Is it active or inactive?
.tab { background-color: purple; color: white; } .is-tab-active { background-color: white; color: black; }Getting SMACSS: State [down]
Theme rules are similar to state rules in that they describe how modules or layouts might look.
/* in module-name.css */ .mod { border: 1px solid; } /* in theme.css */ .mod { border-color: blue; }Getting SMACSS: Theme [down]
.maintext { color: #333333; } [...] .maintext { color: red !important; }Contributing to an Open Source Community [down] It doesn’t matter what system you use but that you use a system. What you want to create is a consistent system that is approachable to others. The goal is to empower developers where they aren’t forced to just add counter styles to the both of your stylesheet.
It's a long process
Bringing Innovation to a Risk Averse Culture: [down] It took an additional year to get the new User Interface into production. As the original deadline approached and QA work was well underway. The plug was pulled on adding the new UI to the project. The pilot had been a success. The full migration was underway and within in 3 months of the project‘s final deadline. The heads of the project were nervous and were afraid of changing things at the last minute. The wanted to tie a neat bow on the project and throw the wrap party. This to say the least was difficult for me. I had put a lot of work into the new UI and really believe it was going to be helpful and solve problems that I knew our users faced. Fortunately, I had taken a UX leadership course with Kim Goodwin. I knew that change is not easy and doesn’t happen overnight. Kim stated that it can take 3-5 years to get an organization to change. but that it’s takes a long time but it’s vital to get one project out there that can be an example to others of how UX works. I knew I had to persevere and no take no for an answer. Kim had talk a lot about culture and how this was a vital part of change. The university was a clan like structure. Lots of little groups that want to have their say and need to be listened too. It took about a month to get an outline of the concerns that the project leads had. They were wary of changing things and upsetting the users. They outlined a number of steps that needed to be done for them to see this project through. I suggested that we follow the example of Google and Facebook and have a opt-in design preview. An ability to toggle between the new and the old interface. Allowing users to look at the new design in a time of their choosing and allowing them to submit feedback.It's was a very long process!