11. Implements Of Failure
• Grouping + Encapsulation
- Server-side includes essentially state of the art
• Shared Context
- HTML/CSS/JS stack wickedly hard to learn
• Patterns of Practice
- Microformats, CSS as emergent semantics
• Separation of Concerns
• Forgiveness
- XML pipe dreams persist, Semantic Web faffery
12. Semantic Differences
• HTML gives us:
- Platform
- Some security
- Social capacity
- Patterns of practice
- Shared context (common vocabulary)
• The failure to provide sustainable platform
competition leaves us arguing over the scraps
15. Ajax: The “Get Out Of Jail Free” Card
• Within a small band of capabilities, JavaScript
allows us to dig our way out
- Cost is enormous
• Toolkits have exhibited competition and platform
capacity behaviors
• Integration nowhere to be seen
- Example: mirrored validation
- REST? Something else?
17. How The Web Gets New Semantics
(decreasing order of leverage)
1.Standardization (W3C, ECMA, etc.)
• Byproduct of competition
2.Invention
• JavaScript “upgrades” or “hot-patches” to pages
3.Convention
• Microformats, CSS patterns of practice
19. Invention vs. Completeness
• Invented semantics via JS are disadvantaged:
- On the wire
- In performance and integration
- In access to assistive technologies
- In look-and-feel cohesiveness
• Only medium/large-scale investment yeild
complete results today
- Product vs. project
20. A Toolkit That Invents
Semantics Is Responsible For
All Of These Concerns*
* this argument is both self-serving and disingenuous, however that doesn’t make it false
24. a11y & i18n Concerns
• Incredibly robust keyboard handling code
• All Dijit widgets fully WAI ARIA augmented
- role=quot;wairole:dialogquot;
- System support for easily adding role/state info
to your own widgets
• Detection/support for high-contrast mode
- separate theme applied for high-contrast
- structured CSS cascade allows you to easily
provide a11y rules for custom themes and
widgets
25. Performance Responsiblity
• Time on the wire
• Time-to-render
• Data caching, storage
• Encourage usage of faster paths through better
API design
• “Pay-as-you-go” performance optimization
strategies
- Make each step on the path as painless as
possible
26. Performance Responsiblity
• Stragegies:
- Tiny Core
- Tightly controlled, curated APIs
- CDN edge-cached, gzip always enabled
- The Build Process
- Completely optional, gradual adoption
- Package system reduces complexity through
grouping
27. You Can’t Tack These On Later,
i.e., Systemization Matters