YUI – The Elephant in the room  Christian Heilmann and Nate Koechley  UK Open Hack Day – London – 16 th  June 2007 [email_address]  &  [email_address]  & creative commons by: 3.0
Following is a transcript of a chat I had a week before I joined Yahoo! a bit over a year ago. I had just finished writing my book on JavaScript.
[chris]  Hey, I took the job at Yahoo in London! [friend]  Congrats, so much for you coding. I guess now it is all YUI for you.  [chris]  Nah, I honestly haven’t done much with it, but what I saw seems a bit bloated, I guess for most of the stuff I will code my own scripts. It is an OK library, but I am not convinced.
Now I am standing here, talking to you about the YUI and why it is a good thing. What happened?
To: Mechanical Turk Subject: I can has beat-up for Chris?
To: Mechanical Turk Subject: I can has beat-up for Chris?
 
 
Pragmatism
Let me show you some of the things I spend money on…
 
This is our third Henry, … the first … lasted five years, the only reason it went was because it was used and abused but still worked. The second lasted about ten years went for the same reason as the first.  Our last Henry was a bit of a disappointment it blew up after  fifteen years  but we have still purchased another one.
 
Air cushioned Resistant to Oil Fat Acid Petrol Alkali Steel Toes Perfect to wear on the tube
And this is what the YUI is. Industrial-strength solutions for every day problems If it works for our web sites it should work for you (or do you have more users?).
Using the YUI also means another, very important step towards producing big products.  It takes the random element out of web development.  Normally we have the following scenario:
HKR 1 Prod 1 Own conventions Own testing methods  Own environment  Own coding style  Own sense of who uses the product
HKR 2 Prod 1 Own conventions Own testing methods  Own environment  Own coding style  Own sense of who uses the product
HKR 3 Prod 1 Own conventions Own testing methods  Own environment  Own coding style  Own sense of who uses the product
Prod 1
HKR 2 Prod 1 HKR 3 HKR 1 YUI Magic!
YUI allows simple collaboration by enforcing a strict namespace. This is what I considered “bloated” until I realized the benefits of it.  Namespacing of the different YUI components and clever namespacing of your objects ensures readability.
YAHOO.util.Dom.addClass YAHOO.util.Event.getTarget YAHOO.widget.Tooltip YAHOO.util.DragDrop YAHOO.util.Connect.isCallInProgress   All do what they say on the tin.
By coming up with your own namespace and sticking to it, you ensure that your code will play well with others. You can cut your applications up into several components and develop them in parallel without interfering. File size of your scripts can be easily reduced by minifying and gzipping the scripts – long names pack nicely.
The best thing: Readable method names = half a good comment Agreed namespace = understanding what your predecessors have done.
The next best thing: Submitted hacks should either use a BBC or a Yahoo! API.
The next best thing: Submitted hacks should either use a BBC or a Yahoo! API. yahoo-min.js  is  1kb , gives you the namespace and satisfies this rule :-)
HKR 1 Prod 1
HKR 1 Prod 1 The INTERNETS
HKR 1 Prod 1 The INTERNETS DA DAH DUUUUUMMMM…
The INTERNETS are scary, as they mean: Different Browsers Different Assistive Technology Different Operating Systems Different Configurations Different Hardware
HKR 1 Prod 1 The INTERNETS 20% 80%
HKR 1 Prod 1 HKR 3 HKR 2 HKR 4 HKR 5
HKR 1 Prod 1 Secret YUI lair! HKR 3 HKR 2 HKR 4 HKR 5
HKR 1 Prod 1 Secret YUI lair! HKR 3 HKR 2 HKR 4 HKR 5 Battle And Tame  The Internets!
HKR 1 Secret YUI lair! HKR 3 HKR 2 HKR 4 HKR 5 HKR Several hundreds in world-wide locations X
And now we need you to help us make this even better.
Photo Credits Numatic Henry  http://www.flickr.com/photos/nicohogg/516490143/ Docs  http://www.flickr.com/photos/davetron5000/276535342/ Elephant  http://www.flickr.com/photos/euromagic/318774561/ Vic20 Game  http://www.flickr.com/photos/lifeontheedge/84913291/   Chris and the babes:  http://www.flickr.com/photos/72169999@N00/348839862/   Nate  http://www.flickr.com/photos/freshelectrons/400135496/   Spaghetti  http://www.flickr.com/photos/hikikomori/155256307/ Kitten  http://www.flickr.com/photos/miller-lowe/346191736/ Puppy  http://www.cuteoverload.com
YUI Goodies Industrial strength cross-browser JavaScript and CSS, free for all
The YUI Team
“ You bring the skills. We bring the ingredients.”
What’s YUI got?
[primitives] [compounds] [idioms] Connection Manager (Ajax) Event Utility Dom Collection Drag & Drop Animation CSS Reset, Fonts, Grids The Yahoo! User Interface Library Logger Control Menu Control Slider Tree Control Calendar Control AutoComplete DHTML Windowing TabView
DOM Utility Positioning HTML Elements  Get/set Styles  Client/Viewport/Doc Size  Manage Class Names  Regions & points
Event Utility Attach to one or many Auto-deferral if nodes aren’t yet available; execute onAvailable Auto scope correction (or assign)  Can send objects Automatic listener cleanup  Custom Events (pub/sub)
Animation Beautiful API  Size/opacity/color/position/etc Bezier math
Good for spicing up hacks: Slider AutoComplete DragDrop Menu / Tabs / Trees Container Reset / Fonts / Grids
But wait, there’s more!
Design Patterns
Design Patterns
What happens when the mouse is pressed on the draggable object but dragging has not initiated? Storyboard Template for Drag & Drop
A full pantry web services & data  + YUI (interface code) + Y design patterns -------------------- = tasty hack goodness
Getting Started
Wide-open BSD License
Free hardcore hosting http://yui.yahooapis.com/2.2.2/build/dom/dom-min.js http://yui.yahooapis.com/2.2.2/build/event/event-min.js   http://yui.yahooapis.com/2.2.2/build/utilities/utilities.js   http://yui.yahooapis.com/2.2.2/build/reset-fonts-grids/reset-fonts-grids.css
 
Three Versions of each File http://yuiblog.com/blog/2006/10/16/pageweight-yui0114/
À la carte  Dependencies
 
Download full dist  with  all  docs & examples http://developer.yahoo.com/yui/download/
Landing Page Quick Start Guides
Complete API Documentation
Examples and Tutorials
The YUI Cheat Sheets
ydn-javascript list
YUI Logger and Firebug alert(“stop the insanity”); YAHOO.log(“There IS a better way”); Debug with Logger or Firebug directly.
Things we’re proud of: Good page citizens We like javascript We care about accessibility and browser support
Graded Browser Support
Senior Architectural Leadership Douglas Crockford: “ Yoda of lambda programming and JavaScript” according to Brendan Eich (Inventor of JavaScript) Rasmus Lerdorf  Father of PHP
Now Hack! And come find me anytime.

YUI The Elephant In The Room

  • 1.
    YUI – TheElephant in the room Christian Heilmann and Nate Koechley UK Open Hack Day – London – 16 th June 2007 [email_address] & [email_address] & creative commons by: 3.0
  • 2.
    Following is atranscript of a chat I had a week before I joined Yahoo! a bit over a year ago. I had just finished writing my book on JavaScript.
  • 3.
    [chris] Hey,I took the job at Yahoo in London! [friend] Congrats, so much for you coding. I guess now it is all YUI for you. [chris] Nah, I honestly haven’t done much with it, but what I saw seems a bit bloated, I guess for most of the stuff I will code my own scripts. It is an OK library, but I am not convinced.
  • 4.
    Now I amstanding here, talking to you about the YUI and why it is a good thing. What happened?
  • 5.
    To: Mechanical TurkSubject: I can has beat-up for Chris?
  • 6.
    To: Mechanical TurkSubject: I can has beat-up for Chris?
  • 7.
  • 8.
  • 9.
  • 10.
    Let me showyou some of the things I spend money on…
  • 11.
  • 12.
    This is ourthird Henry, … the first … lasted five years, the only reason it went was because it was used and abused but still worked. The second lasted about ten years went for the same reason as the first. Our last Henry was a bit of a disappointment it blew up after fifteen years but we have still purchased another one.
  • 13.
  • 14.
    Air cushioned Resistantto Oil Fat Acid Petrol Alkali Steel Toes Perfect to wear on the tube
  • 15.
    And this iswhat the YUI is. Industrial-strength solutions for every day problems If it works for our web sites it should work for you (or do you have more users?).
  • 16.
    Using the YUIalso means another, very important step towards producing big products. It takes the random element out of web development. Normally we have the following scenario:
  • 17.
    HKR 1 Prod1 Own conventions Own testing methods Own environment Own coding style Own sense of who uses the product
  • 18.
    HKR 2 Prod1 Own conventions Own testing methods Own environment Own coding style Own sense of who uses the product
  • 19.
    HKR 3 Prod1 Own conventions Own testing methods Own environment Own coding style Own sense of who uses the product
  • 20.
  • 21.
    HKR 2 Prod1 HKR 3 HKR 1 YUI Magic!
  • 22.
    YUI allows simplecollaboration by enforcing a strict namespace. This is what I considered “bloated” until I realized the benefits of it. Namespacing of the different YUI components and clever namespacing of your objects ensures readability.
  • 23.
    YAHOO.util.Dom.addClass YAHOO.util.Event.getTarget YAHOO.widget.TooltipYAHOO.util.DragDrop YAHOO.util.Connect.isCallInProgress All do what they say on the tin.
  • 24.
    By coming upwith your own namespace and sticking to it, you ensure that your code will play well with others. You can cut your applications up into several components and develop them in parallel without interfering. File size of your scripts can be easily reduced by minifying and gzipping the scripts – long names pack nicely.
  • 25.
    The best thing:Readable method names = half a good comment Agreed namespace = understanding what your predecessors have done.
  • 26.
    The next bestthing: Submitted hacks should either use a BBC or a Yahoo! API.
  • 27.
    The next bestthing: Submitted hacks should either use a BBC or a Yahoo! API. yahoo-min.js is 1kb , gives you the namespace and satisfies this rule :-)
  • 28.
  • 29.
    HKR 1 Prod1 The INTERNETS
  • 30.
    HKR 1 Prod1 The INTERNETS DA DAH DUUUUUMMMM…
  • 31.
    The INTERNETS arescary, as they mean: Different Browsers Different Assistive Technology Different Operating Systems Different Configurations Different Hardware
  • 32.
    HKR 1 Prod1 The INTERNETS 20% 80%
  • 33.
    HKR 1 Prod1 HKR 3 HKR 2 HKR 4 HKR 5
  • 34.
    HKR 1 Prod1 Secret YUI lair! HKR 3 HKR 2 HKR 4 HKR 5
  • 35.
    HKR 1 Prod1 Secret YUI lair! HKR 3 HKR 2 HKR 4 HKR 5 Battle And Tame The Internets!
  • 36.
    HKR 1 SecretYUI lair! HKR 3 HKR 2 HKR 4 HKR 5 HKR Several hundreds in world-wide locations X
  • 37.
    And now weneed you to help us make this even better.
  • 38.
    Photo Credits NumaticHenry http://www.flickr.com/photos/nicohogg/516490143/ Docs http://www.flickr.com/photos/davetron5000/276535342/ Elephant http://www.flickr.com/photos/euromagic/318774561/ Vic20 Game http://www.flickr.com/photos/lifeontheedge/84913291/ Chris and the babes: http://www.flickr.com/photos/72169999@N00/348839862/ Nate http://www.flickr.com/photos/freshelectrons/400135496/ Spaghetti http://www.flickr.com/photos/hikikomori/155256307/ Kitten http://www.flickr.com/photos/miller-lowe/346191736/ Puppy http://www.cuteoverload.com
  • 39.
    YUI Goodies Industrialstrength cross-browser JavaScript and CSS, free for all
  • 40.
  • 41.
    “ You bringthe skills. We bring the ingredients.”
  • 42.
  • 43.
    [primitives] [compounds] [idioms]Connection Manager (Ajax) Event Utility Dom Collection Drag & Drop Animation CSS Reset, Fonts, Grids The Yahoo! User Interface Library Logger Control Menu Control Slider Tree Control Calendar Control AutoComplete DHTML Windowing TabView
  • 44.
    DOM Utility PositioningHTML Elements Get/set Styles Client/Viewport/Doc Size Manage Class Names Regions & points
  • 45.
    Event Utility Attachto one or many Auto-deferral if nodes aren’t yet available; execute onAvailable Auto scope correction (or assign) Can send objects Automatic listener cleanup Custom Events (pub/sub)
  • 46.
    Animation Beautiful API Size/opacity/color/position/etc Bezier math
  • 47.
    Good for spicingup hacks: Slider AutoComplete DragDrop Menu / Tabs / Trees Container Reset / Fonts / Grids
  • 48.
  • 49.
  • 50.
  • 51.
    What happens whenthe mouse is pressed on the draggable object but dragging has not initiated? Storyboard Template for Drag & Drop
  • 52.
    A full pantryweb services & data + YUI (interface code) + Y design patterns -------------------- = tasty hack goodness
  • 53.
  • 54.
  • 55.
    Free hardcore hostinghttp://yui.yahooapis.com/2.2.2/build/dom/dom-min.js http://yui.yahooapis.com/2.2.2/build/event/event-min.js http://yui.yahooapis.com/2.2.2/build/utilities/utilities.js http://yui.yahooapis.com/2.2.2/build/reset-fonts-grids/reset-fonts-grids.css
  • 56.
  • 57.
    Three Versions ofeach File http://yuiblog.com/blog/2006/10/16/pageweight-yui0114/
  • 58.
    À la carte Dependencies
  • 59.
  • 60.
    Download full dist with all docs & examples http://developer.yahoo.com/yui/download/
  • 61.
    Landing Page QuickStart Guides
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
    YUI Logger andFirebug alert(“stop the insanity”); YAHOO.log(“There IS a better way”); Debug with Logger or Firebug directly.
  • 67.
    Things we’re proudof: Good page citizens We like javascript We care about accessibility and browser support
  • 68.
  • 69.
    Senior Architectural LeadershipDouglas Crockford: “ Yoda of lambda programming and JavaScript” according to Brendan Eich (Inventor of JavaScript) Rasmus Lerdorf Father of PHP
  • 70.
    Now Hack! Andcome find me anytime.