jQuery Conference: San Francisco Bay Area 2011
Table of Contents
- Overview
- Sessions
- Day 1: April 16
- 10:00AM: jQuery Keynote, John Resig
- Free O'Reilly e-book
- Mobile versions of the conference: aknosis.com
- 1.6 is in planning stage, no further 1.5 minor releases expected
- .attr() updates
- .prop() updates
- TODO .valHooks(), cf. cssHooks()
- :focus now supported
- .is(), .filter(), .find() convenience methods
- Animations grouped using 15ms timer
- TODO requestAnimationFrame used when available
- TODO Use Function.protopyte.bind when available
- Relative .css()
- jQuery Mobile is in ongoing beta
- .portrait and .landscape classes added to body for orientation
- Supported data attribute namespacing to minimize conflicts
- Tooling: jQuery uglify, node.js support, templates outside of DOM
- 11:30AM: jQuery Mobile, Todd Parker and Scott Jehl
- Still Alpha
- jQuery Mobile Gallery
- Not in Google CDN but may when more popular
- Custom theming should be used rather than defaults
- Don't share iPad and mobile, use a grid system and dump components
- Working towards more docs and not just demos
- TODO Read: Responsive Web Design, by ETHAN MARCOTTE
- Begin moving toward using Respond.js
- Cleaner URLs with history.pushState()
- Move toward better JSON driven pages
- data-role= is critical to an implementation (header, footer, button)
- Using jQuery Mobile
- Lists: listview('refresh') with data inserts
- Input: Use correct type for html5
- Events: More for tap, swipe, orientationchange, pagecreate (vs. DOMContentLoaded)
- New nightly CDN releases for testing
- 1:30PM: Mobile Performance, Steve Souders
- Cuzillion useful for abstracting load ordering
- No assurance of image load ordering for MSIE7
- Focus became on the business benefit of performance
- WPO based companies
- Tool: Blaze
- Tool: Web Page Test
- Tool: pcapperf
- Tool: http://tinysrc.net/
- Tool: JDrop
- Save files saved in local storage then just inline
- HTTP Archive
- 2:30PM: Progressive Enhancement 2.0 - Because the Web isn't Print, Nicholas Zakas
- Meta
- Browsers History
- 1998: Policy: Browser Wars: "Best Viewed In"
- 2000: Policy: Graceful Degredation
- 2007: Policy: Progressive Enhancement
- Origin analysis: find a metaphor for a page
- Quality becomes looking exactly the same everywhere
- Consistency requires all experiences from the user is the same
- Don't limit the features just because it can't be supported everywhere
- Use stacked layers of JavaScript and CSS features
- Need to find what the easy things to do that have value
- Rounded Corners: only implement with CSS
- Can you believe that humans in 2011 are creating gradients
- Trying to make old browsers do new things = bugs, performance, cost
- How many product managers understand this point
- Will people notice?
- How, as an organization, do you balance resource allocation and browser capabilities?
- People only use one many, developer use many: false consistency
- If people see new functionality when upgrading that is a feature
- Feature availability is based on resources and product impact
- Building full products specs based on comps
- Use: web browser: web page :: television: tv program
- 3:30PM: Integrating Code Quality tools into your jQuery Development Workflow, Anton Kovalyov (#2)
- 4:15PM: Getting Truth Out of the DOM, Yehuda Katz (#2)
- What happens when you start getting big
- Traditional jQuery setup
- Custom event setup
- Data Centric Approach
- Better to update data than to try the DOM
- Revised Data Centric Approach
- Data Cetric Approach performance
- Work around with bulk transactions
- Observers can fail with bulk/queued activities
- Example: triggerLater
- Truth in DOM vs. Truth in Model
- SC MVC: Declarative Bindings
- Property Observing systems and Handlebars.js
- TODO amber.js
- 5:15PM: Prototyping and Unit Testing with Mockjax & mockJSON, Elijah Manor (#2)
- 10:00AM: jQuery Keynote, John Resig
- Day 2: April 17
- 10:30AM: jQuery UI Keynote, Richard D. Worth
- 11:15AM: Filling the HTML5 & CSS3 Gaps with Polyfills and Shims, Rey Bango (#2)
- shim: Regressive Enhancement
- polyfill: shim that mimics a future API
- Modernizr being shipped w/ ASP.NET MVC 3 Tools
- IE developer tools have been updated
- Semantic tags
- Modernizr is required as a blocking call at the top of the page
- Would likely require html5reset.css
- article, aside,details sb. block level
- How far should polyfills go to make the best experience for a browser
- Always put mp4 first in sourc element for video for iOS
- Convert file:
- 1:00PM: Nailing the Interactions on Pageless Apps (with Backbone.js), Matt Kelly
- Meta
- Specify a context and attempt 1s or less load
- SEO; hash bang
- Models: defaults + initialize
- Bind changes in the model to code
- Controller: Watches the URL, define routes and handlers
- View: Consumes a model, creates container, render(), append()
- Example: postView, annotateView
- postView: tempate, events, initialize, render
- Can contain sub-views: postView -> notesView -> commentView
- Goal is separation of concerns for views
- $(event.currentTarget) vs. $(this)
- Controller support for history.pushState
- 1:45PM: Harnessing jQuery Templates and jQuery Data Link, to build dynamic data-driven browser apps, Boris Moore
- 2:45PM: Sneaking structure into your DOM-based application, Garann Means (#2)
- 3:45PM: jQuery Development Productivity++, Paul Irish (#2)
- Inspect the inspector to increase the font-size
- Can clear styles by inspecting the inspector
- Chrome tools (qua Inspector) are just JavaScript
- Styles: Inspector autocompletes
- Styles: Click color to switch approch and toggle
- Styles: Mistakes no longer clear out the style
- Resources: Styles include a versioned history
- Resources: Free-form editor to consolidate
- console.log can consume multiple parameters
- inspect() DOM node
- esc opens/closes the console on all tabs
- keys()
- copy() from console
- Scripts: command-L + ? shows all keys
- Scripts: Live script editing + console log +
- Script: breakpoint states toggle in bottom left
- Script: DOM mutation breakpoints
- Script: Event listener breakpoints
- Tentative: –remote-debugging-port=9000
- Tentative: Devtools extensions: beautify minify script
- Use Chrome dev channel
- 4:30PM: Natural Language UI Testing using Behavior Driven Development with Pavlov and QUnit, Eric DeLabar
- 5:30PM: Understanding jQuery Events, and working new HTML5 APIs, Boaz Sender
- 6:15PM: Panel
- Day 1: April 16
- Tasks
- TODO Archive performance results
- TODO Create supported browsers against supported capabilities discussion
- TODO Add JSHint to the example linters
- TODO Prototype a property observers system
- TODO Test jQuery UI Grid
- TODO Get prototypes working with mocked data before Designer and back-end
- TODO Ensure migration plan for jQuery UI 1.8 -> 1.9
- TODO Review incorporation of Modernizr
- Do shims and polyfills waste developer time
- What rights management are needed by video producers
- Create search context as
- Backbone should also have underscore
- Test playground
- Use $.deferred and $.ajax validation
- Needle CSS testing
Overview
- Mobile web development (including testing and performance) continues to be a top priority.
- JavaScript templating continued to get attention: Handlebars, mustache, underscore, and jQuery templates all were considered particularly in the context of client-side MVC frameworks.
- Separation of the underlying object representation from the DOM is essential for the maintainability of the system. jQuery-driven applications can quickly lose structure given the heavy coupling between the DOM and objects.
- MVC and data-binding will be increasingly important in the next six months as a way to ensure maintainability. $.databind() and Backbone.js were featured.
- Testing seemed to move away from unit testing more toward BDD (likely reflecting the Rails influence) and JavaScript analysis tools.
- The best sessions seemed to be those that focused on the strategic view of front-end engineering: better architecture, consolidated tooling, and browser support policies that consider the entire cost of a product rather than just presentation outside of context.
- The metaphors we use to describe the role should not continue to be print but ought move to one that internalizes the concept of device capabilities: television.
Sessions
Day 1: April 16
10:00AM: jQuery Keynote, John Resig
The state of the jQuery project in 2011. Covers details regarding jQuery core, jQuery mobile, and the project as a whole.
Free O'Reilly e-book
Free e-book: http://oreilly.com/go/ugebook
Mobile versions of the conference: aknosis.com
#jqcon for Twitter, @jqcon
Look at jQuery UI Grid; under active development and the most requested UI component.
1.6 is in planning stage, no further 1.5 minor releases expected
.attr() updates
.prop() updates
This switches to use getAttribute by default rather than an "expando" such as input.type (as used by id)
TODO .valHooks(), cf. cssHooks()
:focus now supported
.is(), .filter(), .find() convenience methods
Animations grouped using 15ms timer
TODO requestAnimationFrame used when available
TODO Use Function.protopyte.bind when available
http://api.jquery.com/jQuery.proxy/
Use instead of $.proxy().
Relative .css()
.css("height", "+10px") instead of dimension the height.
jQuery Mobile is in ongoing beta
The baseline for suport is a check if media queries are supported.
Will use pushState().
.portrait and .landscape classes added to body for orientation
Supported data attribute namespacing to minimize conflicts
data-jqm-data
Tooling: jQuery uglify, node.js support, templates outside of DOM
11:30AM: jQuery Mobile, Todd Parker and Scott Jehl
jQuery Mobile Team Design and Dev leads Todd Parker and Scott Jehl will discuss the challenges and philosophy of the jQuery Mobile Framework, and how to use it to create websites and apps that provide a cohesive, touch-optimized experience in the latest mobile browsers while maintaining universal accessibility in older and under-featured browsers, and for users of assistive technology. Todd and Scott will also bring us up to speed with recent developments in the jQuery Mobile framework and its roadmap for future releases and features.
Still Alpha
jQuery Mobile Gallery
http://jqmgallery.com has examples
Not in Google CDN but may when more popular
Custom theming should be used rather than defaults
Don't share iPad and mobile, use a grid system and dump components
Working towards more docs and not just demos
TODO Read: Responsive Web Design, by ETHAN MARCOTTE
Begin moving toward using Respond.js
Cleaner URLs with history.pushState()
This would allow full resolution of test.html#/product.html could /product.html
Move toward better JSON driven pages
Currently mostly document driven. Some of the work is on consolidating the Ajax calls or JSON + templates.
data-role= is critical to an implementation (header, footer, button)
Using jQuery Mobile
- HTML5 doctype
- Set the doctype http://www.blog.highub.com/mobile-2/a-fix-for-iphone-viewport-scale-bug/
- data-ajax="false" for multipage sites
- dialog support
- Global disable for transision support
Lists: listview('refresh') with data inserts
Input: Use correct type for html5
Events: More for tap, swipe, orientationchange, pagecreate (vs. DOMContentLoaded)
New nightly CDN releases for testing
1:30PM: Mobile Performance, Steve Souders
Before Firebug existed it was hard to know what the browser was doing with your web page. Firebug (and more recent tools like dynaTrace Ajax Edition, Speed Tracer, Web Inspector, and HttpWatch) let us see how HTTP, JavaScript, CSS, the DOM, and rendering take up time as the user waits for the page to load. This visibility into browser performance has generated many web performance best practices as captured in tools like YSlow and Page Speed. The performance evolution that took place on the desktop (tools and research resulting in best practices) is starting in mobile. Right now we’re at step 1: gaining visibility into what’s happening in the mobile browser. Without this visibility, mobile web developers are flying blind. In this session Steve Souders shows how to analyze mobile performance across all the popular devices. He demonstrates analysis tools, services for accessing devices remotely, and quirks he’s discovered that show mobile performance is full of surprises.
Cuzillion useful for abstracting load ordering
No assurance of image load ordering for MSIE7
Focus became on the business benefit of performance
WPO based companies
Evangelical approach to defining Web Performance Optimiation (WPO).
Tool: Blaze
Tool: Web Page Test
Tool: pcapperf
http://calendar.perfplanet.com/2010/mobile-performance-analysis-using-pcapperf/
This would be used in conjunction with Wire Shark or tcpdump.
This is converted to HAR from pcapperf.appspot.com
Tool: http://tinysrc.net/
Tool: JDrop
Save files saved in local storage then just inline
Used by Google and Bing. Use the Storager application.
HTTP Archive
Show how trending occurs for HTTP requests not just the final page.
2:30PM: Progressive Enhancement 2.0 - Because the Web isn't Print, Nicholas Zakas
In the beginning, progressive enhancement was simple: HTML layered with CSS layered with JavaScript. That worked fine when there were two browsers, but in today's world of multiple devices and multiple browsers, it's time for a progressive enhancement reboot. At the core is the understanding that the web is not print - the same rules don't apply. As developers and consumers we've been fooled into thinking about print paradigms for too long. In this talk, you'll learn just how different the web is and how the evolution of progressive enhancement can lead to better user experiences as well as happier developers and users.
Meta
Internal jokes for the community.
- Keep Paul Irish away from your mom.
- @raybango if you don't like the talk
- Doesn't know jQuery
Browsers History
Browsers and how to get the newest features.
- Mosaic
- Netscape 1
- Netscape 2
- Netscape 3: Now has color
- MSIE 3
Thus started the browser wars…
1998: Policy: Browser Wars: "Best Viewed In"
Show a button for upgrading.
2000: Policy: Graceful Degredation
Browser sniffing or check for functionality.
<noscript>
Testing is based on the idea that things shouldn't break so you still need a support matrix.
2007: Policy: Progressive Enhancement
Naked CSS day. Use semantic markup.
See the division between content, presention, client-side scripting.
But is this a standard nomenclature.
Yahoo! Graded Browser support is based on progressive enhancement. Assume you define the level of the view.
Origin analysis: find a metaphor for a page
The problem came in because we (business and developers) though we understood what a "page" was supposed to be.
All books look the same.
Quality becomes looking exactly the same everywhere
Consistency requires all experiences from the user is the same
Don't limit the features just because it can't be supported everywhere
Use stacked layers of JavaScript and CSS features
But this creates a testing nightmare if it needs to be fully supported.
But this might be the wrong goal.
Need to find what the easy things to do that have value
Historically we've spent a massive amount of time supporting IE6 / IE7 for pixel perfect rendering.
Rounded Corners: only implement with CSS
Image, sprite, position, CDN, need to update. This isn't a worthwhile use of resources.
Can you believe that humans in 2011 are creating gradients
Trying to make old browsers do new things = bugs, performance, cost
How many product managers understand this point
Will people notice?
How, as an organization, do you balance resource allocation and browser capabilities?
People only use one many, developer use many: false consistency
If people see new functionality when upgrading that is a feature
Feature availability is based on resources and product impact
Building full products specs based on comps
Use: web browser: web page :: television: tv program
3:30PM: Integrating Code Quality tools into your jQuery Development Workflow, Anton Kovalyov (#2)
JavaScript is a very powerful and flexible language that allows you to write very elegant programs. However, it has some parts of it that are easily breakable and no matter what you are writing, new jQuery plugin or nice interface for your web application, it is very important to not to ship broken code. Fortunately, there are tools that were designed to catch potential problems in your code and report about them before the deployment of your code.
This talk is about integrating such tools into your daily development workflow. It will give you basic idea of problems that JavaScript has and approaches you can take to prevent those problems. It will also cover JSHint — a community-driven code quality tool — and how we use it at Disqus to make sure that we don't ship broken code to 400m+ visitors.
History
Browser wars -> DOM issues. Incompatibilities in the DOM0 vs. DOM2…switching between trivial selection mechanism (e.g., document.all vs. getElement{sByTagName, sClassName, ById}) made non-trivial applications impossible.
What is the value of a safe subset of the language
Should coerction be used for null or undefined; does jQuery do the right thing?
Standard mistakes: function hosting and closure
Example was a test with a function defined in a conditional that is hoisted to the top of the scope.
The second was a function defined in a for loop with returned values.
Installation: npm install jshint
Use: Detecting globals
Either run in strict mode to detect incorrect use of this as the global object (window).
Tooling: Git hooks
Install as a git hook; scripts are available in github.
git -n
skips all of the hooks.
4:15PM: Getting Truth Out of the DOM, Yehuda Katz (#2)
"How do I build larger applications using jQuery?" It's a question that starts to creep into the minds of virtually every jQuery developer after building one or two non-trivial web applications. There are many good answers to this question, and even some talks at this conference that describe ways to use code organization and other techniques to help scale applications.
http://dl.dropbox.com/u/2285145/Getting%20Truth%20Out%20of%20the%20DOM.pdf
What happens when you start getting big
Fighting against the file size issue.
Also fighting against the desire to build the solutions that match to the particular project.
Would need to have the abstractions done as a larger projects.
What happens in the lifecycle of a project.
Traditional jQuery setup
event -> [Handler] -> DOM update
Custom event setup
event -> native handler -> [Custom event]
custome event -> [Handler]
Event simulation becomes the issue since you still need to find the underlying object.
Data Centric Approach
Within the last two years. Most of the underlying work done in data and events.
Uses property observing library. Need to wrap to check that the update won't self trigger.
Example provides is for todo:
var ToDo = function() {} ToDo.prototype.set …
Uses a model as part of an underlying object. Set properties then look up the underlying DOM representation.
Better to update data than to try the DOM
Revised Data Centric Approach
event -> native -> update data data event -> native -> update DOM
This could work with Backbone or $.data() event listeners.
- Todo item has state isDone = false
- item state changes to true
- List changes by removing the item
- Update the number of items
This lives by looking at a changeData event handler when using $.data().
Data Cetric Approach performance
This occurs only when there isn't a 1 to 1 map between data and DOM state.
- native change handler
- set is done on object
- object change handler
- recalcuate
This all cascade and the tasks are repeated.
Work around with bulk transactions
List now begins to have bulk property to true for the update.
This is very similar to the logic used for the layout calculation system used in rendering engines.
Observers can fail with bulk/queued activities
Example is deleting all contacts. Does this flag an updater state?
Example: triggerLater
- start native handler
- triggerLater calls
- end native
- triggerLater starts
Truth in DOM vs. Truth in Model
Examples: New Twitter, GitHub issue handler, WordPress comment management.
Each requires that a single interaction will push to many other UI elements in the DOM.
- Have a list of four
- Check clear all
- Add new events -> uncheck clear all
- Delete new event -> check clear all?
SC MVC: Declarative Bindings
Focus on what a function like allAreDone actually means.
Binding occurs in the template back to the model that is used to define what the data means for the system.
Key property is the notion of "dirty" based on changed that are made or dependencies changed that aren't reflect in DOM.
Property Observing systems and Handlebars.js
How close is this to the goal of having a JSON structure poured into the template that defers rendering to the point where the underlying model is effectively complete and we no longer have active "dirty" work happening?
Not that close. You still need a property observing libraries which means you need to handle intermediate state.
Reality gets reflected in the DOM…
TODO amber.js
http://blog.sproutcore.com/post/3075780393/sproutcore-amber-a-report-by-yehuda
Runtime: Handlebars, jQuery eventing, templates
http://amber-todos.strobeapp.com
Uses boilerplate as well.
5:15PM: Prototyping and Unit Testing with Mockjax & mockJSON, Elijah Manor (#2)
The front-end and back-end of your application inevitably progress at different speeds. In order for each layer to develop independently it is optimal if the front-end piece can work regardless of the back-end, which is where the Mockjax plugin comes in. Mockjax can intercept and simulate ajax requests made with jQuery with minimal effort and impact to your code. Another tool that works well with Mockjax is mockJSON which provides a random data templating feature. This can be very handy when you want to mock a JSON response from a AJAX call, but instead of manually building the response you can build a template to do it for you.
MockJax
http://enterprisejquery.com/2010/07/mock-your-ajax-requests-with-mockjax-for-rapid-development/
Includes a latency option as well.
Mock is just defined as part of a test configuration.
Amplify
Create routes and JSON constructors.
Can override Amplify definitions of the resource -> URL mapping needed for the mock data.
Has decoder functions when using external live data instead of mockJSON.
Day 2: April 17
10:30AM: jQuery UI Keynote, Richard D. Worth
1.9 release will require backward-compatibility: false
Getting involved
Color
Grid
11:15AM: Filling the HTML5 & CSS3 Gaps with Polyfills and Shims, Rey Bango (#2)
shim: Regressive Enhancement
polyfill: shim that mimics a future API
Modernizr being shipped w/ ASP.NET MVC 3 Tools
IE developer tools have been updated
Should be more like Firebug.
Semantic tags
What would the actual benefit be for semantic HTML.
Doesn't this have too much of a document focus.
Modernizr is required as a blocking call at the top of the page
Would likely require html5reset.css
article, aside,details sb. block level
How far should polyfills go to make the best experience for a browser
Always put mp4 first in sourc element for video for iOS
Convert file:
1:00PM: Nailing the Interactions on Pageless Apps (with Backbone.js), Matt Kelly
Meta
"Backbone.js is a suzuki Samuri" after a failed jump.
You could do it with jQuery but it's going to hurt.
Specify a context and attempt 1s or less load
SEO; hash bang
The actual flow is
site.com#!state site.com?escapedfragment=state
Models: defaults + initialize
Bind changes in the model to code
…bind('change.text', function () {});
Controller: Watches the URL, define routes and handlers
View: Consumes a model, creates container, render(), append()
Example: postView, annotateView
postView: tempate, events, initialize, render
Can contain sub-views: postView -> notesView -> commentView
Goal is separation of concerns for views
$(event.currentTarget) vs. $(this)
Controller support for history.pushState
1:45PM: Harnessing jQuery Templates and jQuery Data Link, to build dynamic data-driven browser apps, Boris Moore
Thie just updates https://github.com/borismoore/jsviews/
Goal: Have data, change data, want the UI to reflect
Currently depends on the DOM but shouldn't; planned for future
Tags: Content: Encoding: ${}, {{html}}
Look at preprocessing hierarchtical data
Structure
- HTML: <script>
2:45PM: Sneaking structure into your DOM-based application, Garann Means (#2)
Be wary of data embedded in DOM that isn't necessary.
The key area would be JavaScript values in option values: page weight with odd selection rules and limited inspection.
Don't need to namespace all widgets under $
Keeps the jQuery object clean. Comes at a cost of not binding to site functionality.
Move to pub/sub
Reduce anonymous function
jwalsh.event.publish("search.loaded") jwalsh.event.subscribe("search.loaded)
jwalsh.event.publish("page.changed", 5)
Focus on the jQuery version updates
Limited prediction capabilities.
3:45PM: jQuery Development Productivity++, Paul Irish (#2)
Inspect the inspector to increase the font-size
Can clear styles by inspecting the inspector
Chrome tools (qua Inspector) are just JavaScript
Can look at the Google code search
Styles: Inspector autocompletes
Styles: Click color to switch approch and toggle
Styles: Mistakes no longer clear out the style
Useful for debugging
Resources: Styles include a versioned history
Update the style inline then move to the resources
Resources: Free-form editor to consolidate
console.log can consume multiple parameters
inspect() DOM node
esc opens/closes the console on all tabs
keys()
copy() from console
Scripts: command-L + ? shows all keys
Scripts: Live script editing + console log +
Script: breakpoint states toggle in bottom left
Script: DOM mutation breakpoints
Script: Event listener breakpoints
Tentative: –remote-debugging-port=9000
RIM now includes this so desktops could connect.
Tentative: Devtools extensions: beautify minify script
This will use uglify.js
Use Chrome dev channel
4:30PM: Natural Language UI Testing using Behavior Driven Development with Pavlov and QUnit, Eric DeLabar
5:30PM: Understanding jQuery Events, and working new HTML5 APIs, Boaz Sender
What is an event object: e of window.addEventListener
jQuery doesn't provide access to new HTML elements
These are synthetic events.
event.originalEvent has more than one would think
Look at all of the e.original events for click that aren't in the jQuery event.
original event: … extra props: []
New HTML5 Events
Now shortcut methods for new events.
- haschange
- popstate
Fired when the history state changes.
- message
event.originalEvent.{data, source}
- drop (used with fileReader from File API)
Creaete a drop-zone.
- timeupdate
$(this.get(0),currentTime
- MozAudioAvailable
$('#audio').bind('timeupdate', function() { console.log(event.originalEvent.frameBuffer) });
This would allow for visualization of the frame buffers.
jQuery.event.props
$.event.props ["altKey", "attrChange", "attrName", "bubbles", "button", "cancelable", "charCode", "clientX", "clientY", "ctrlKey", "currentTarget", "data", "detail", "eventPhase", "fromElement", "handler", "keyCode", "layerX", "layerY", "metaKey", "newValue", "offsetX", "offsetY", "originalTarget", "pageX", "pageY", "prevValue", "relatedNode", "relatedTarget", "screenX", "screenY", "shiftKey", "srcElement", "target", "toElement", "view", "wheelDelta", "which"]
6:15PM: Panel
Update device width defined, media queries, use only fluid layout
jQuery UI 1.9 will grow in size for compat with 2.0+1.8
Tasks
TODO Archive performance results
I have the three performance runs from Web Page Test
The original site scores from the mock version would also be available.
04/14/11 13:36:44 Dulles, VA - IE7 - DSL (video) http://www.classmates.com 04/12/11 16:56:04 Dulles, VA - IE8 dynaTrace - DSL http://www.classmates.com 04/11/11 15:44:46 Dulles, VA - IE7 - DSL http://www.classmates.com 04/08/11 15:04:34 Dulles, VA - IE7 - DSL (video) http://www.classmates.com/ 04/08/11 15:01:04 Dulles, VA - IE8 - DSL (video) http://www.classmates.com/ 04/08/11 14:13:33 Dulles, VA - IE8 - DSL (video) http://www.classmates.com/ 04/07/11 11:53:24 Dulles, VA - IE8 - DSL ML:Home:56k http://www.classmates.com/ 04/07/11 11:25:02 Dulles, VA - IE8 dynaTrace - DSL http://www.classmates.com 04/07/11 11:22:55 Dulles, VA - IE7 - DSL (video) ML:Yearbooks http://www.classmates.com/yearbooks/? 04/07/11 11:22:55 Dulles, VA - IE7 - DSL (video) ML:Video http://www.classmates.com/feature/video… 04/07/11 11:22:54 Dulles, VA - IE7 - DSL (video) ML:Home http://www.classmates.com 03/17/11 15:08:24 Dulles, VA - IE7 - DSL http://www.classmates.com 03/15/11 13:47:14 Dulles, VA - IE7 - DSL http://classmates.com
TODO Create supported browsers against supported capabilities discussion
TODO Add JSHint to the example linters
TODO Prototype a property observers system
Get resources dedicated to derive a concensus of the approach to take for architecture.
TODO Test jQuery UI Grid
TODO Get prototypes working with mocked data before Designer and back-end
TODO Ensure migration plan for jQuery UI 1.8 -> 1.9
TODO Review incorporation of Modernizr
Do shims and polyfills waste developer time
Look at the different.
What rights management are needed by video producers
Create search context as
Backbone should also have underscore
Test playground
Several examples used.