SlideShare a Scribd company logo
So good, it hurts.
Workshop Demo Download:
bit.ly/TaskListDemo
10 %
Read
20%
Hear
30% See
50% Hear + See
70% Say + Write
90% Experience
Hello, my name is…
@toddanglin
VP, Technology & Developer Relations
Telerik (a Progress Company)
AM
oBrowsers & Debugging
oNew web APIs
o Markup
o Media
o Storage
o Offline
PM
oModern JavaScript (ES6)
oModern CSS
o Styling
o Layouts
o Mobile & Media Queries
1. Expand awareness of modern web
technologies
2. Introduce techniques for using modern web
3. Enhance knowledge of existing web
technologies
4. Provide practical “next steps” on modern
web journey
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Source: Wikipedia, https://en.wikipedia.org/wiki/HTML5
22:31
Edge of the Web
Edge of the Web
Edge of the Web
<HTML>
CSS:3;
ECMAScript();
“HTML5”
“Living Standard”
WebSockets FileAPI
WebGL
HTML5 Forms
Geolocation
Offline
Canvas Video
Audio
Canvas
Video
Geolocation
Semantic
Tags
SVG
WHATWG | W3C | IETF
Where the word “standard” reeks with irony
Edge of the Web
Edge of the Web
WD LC CR PR REC
Browser
Layout/Rendering Engine
JavaScript Engine
Browser Layout Engine JavaScript Engine
Mozilla Gecko Spidermonkey
Chrome/Opera
Blink
(fork from WebKit)
V8
Safari WebKit JavaScriptCore
IE/Edge Trident/EdgeHTML Chakra
Node.js V8
Edge of the Web
Edge of the Web
of internet browses with
IE, FF, Safari, Chrome, or Opera
99%
Edge of the Web
StatCounter NetMarketShare
Records data from 3 million websites Analyzes data from 40 thousand websites
Analyzes 17.5 billion page views per month Analyzes 160 million unique visits per month
Make no adjustments or weightings other than
removing bot activity and pre-rendering
Applies country weightings according to CIA
Internet Traffic data. For example, if Brazil
accounts for 4% of global traffic but only 2% of
NetMarketShare data, the results are doubled
Is independent and has no commercial partners
Is a commercial company with partners paying
for data
Reports are based on page views Reports are based on daily unique visitors
Source: http://www.sitepoint.com/browser-trends-april-2015-statcounter-vs-netmarketshare/
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
“Evergreen” Versioned
WinXP
WinVista
< v9
IE Evergreen
Edge of the Web
Source: Morgan Stanley
Edge of the Web
Edge of the Web
Edge of the Web
0
20
40
60
80
100
120
140
160
180
200
IE7 IE8 IE9 IE10 IE11 Edge
(13)
FeatureCount
Supported HTML5/CSS3 Features
As reported by CanIUse.com
Selectors (2.1)
position:fixed
7.0 LocalStorage
DragDrop API
JSON
querySelector
8.0
Video
Audio
WOFF
SVG
Canvas
Geolocation
Semantic Tags
Lots of CSS3
9.0
XHR2
Web Workers
Web Sockets
IndexedDB
History API
File API
CORS
Blob URLs
Typed Arrays
Defer/Async
Form Validation
New Input Types
Offline App Cache
Much more CSS3
10.0
Selectors (2.1)
position:fixed
7.0 LocalStorage
DragDrop API
JSON
querySelector
8.0
Video
Audio
WOFF
SVG
Canvas
Geolocation
Semantic Tags
Lots of CSS3
9.0
XHR2
Web Workers
Web Sockets
IndexedDB
History API
File API
CORS
Blob URLs
Typed Arrays
Defer/Async
Form Validation
New Input Types
Offline App Cache
Much more CSS3
10.0
3D Transforms
Web Crypto
CustomEvent
X-Doc Messaging
DeviceOrientation
FileReader API
HTTP/2
CSP 1.0
SVG effects
Touch events
Video tracks
ES6
getUserMedia
Templates
Picture
Meter
PointerLock API
ASM.js
Gamepad API
Date/time inputs
…
Edge (13)
status.modern.ie
17 18 33
113 113
222 250 270 300 304 322 329 346
396 396 396 405
449 452 467 470 493 497 501 526
0
100
200
300
400
500
600
IE10
IE11
Edge
Edge of the Web
Edge of the Web
Edge of the Web
X X X X X
X X X
X X
X X X
X X
Only use features
natively available in all
target browsers
X X X X X
X X X
X X
X X X
X X
Only use features
either natively available
OR available via
JavaScript polyfill
X X
Edge of the Web
X X X X X
X X X
X X
X X X
X X
Only use features
available in target
browsers AND design
alternate experience
for other browsers
X X
X X X
X X
22:31
graceful
degradation
[Source: Aaron Olaf, Flickr]
22:31
[Source: Mercedes USA, http://mbusa.com/]22:31
X X X X X
X X X
X X
X X X
X X
Create experiences
targeted at specific
browsers (or classes of
browsers)
X X
X X X
X X
22:31
Edge of the Web
Edge of the Web
Edge of the Web
Modernizr.[featureName]
if (Modernizr.canvas) { //Use It! }
.[featureName] || .no-[featureName]
.no-canvas { //Styles }
.canvas { //Other Styles}
Modernizr
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
It’s more than the DOM and Images
DOM/Markup
JavaScript API
CSS States
WebAPI
Edge of the Web
(or today, too, if IE support is not critical)
Edge of the Web
Edge of the Web
HTML5 Forms
Geolocation
Video
CSS3
{Web Sockets}
{Storage}
{IndexedDb}
{Semantic Data}
Edge of the Web
Edge of the Web
tag: <header> <footer> <nav> <article> <hgroup>
support: IE9, FF3.5, Safari, Chrome, Opera
<body>
<div id=“header”>
</div>
<div id=“content”>
<div id=“nav”></div>
</div>
<div id=“footer”>
</div>
</body>
<body>
<header>
</header>
<section>
<nav></nav>
</section>
<footer></footer>
</body>
VS.
oAccessibility*
oSEO*
oCode readability
oDeveloper street cred
oWhy not?
data-*
Valid approach to storing data in HTML
<!--Store values in data-* attributes-->
<div id="mydiv" data-key="26" data-name="My product name">
...
</div>
<!--Access values with JavaScript-->
var key = mydiv.getAttribute("data-key")
//OR
var key = mydiv.dataset.key
support: IE9, FF3.5, Safari, Chrome, Opera
oEmbed data in page
22:31
Semantic rich media
Reach more people on more devices
Container
Codec
Silverlight
FlashHTML5
<video src="clip.mp4" controls type="video/mp4">
<object classid="...">
<param name="flashvars" value="file=clip.mp4" />
<param name="movie" value=“player.swf" />
<embed src="player.swf” type="application/x-shockwave-
flash” flashvars="file=clip.mp4" />
Your browser does not support video
</object>
</video>
support: IE9, FF3.6, Safari, Chrome, Opera
22:31
oVideo for plug-less mobile
devices
oEliminate dependencies
on Flash/Silverlight (future
proofing)
22:31
tag: time, date, search, email, etc.
Web Forms 2.0 HTML5 Forms
<form>
<input type="email" autofocus="autofocus"
placeholder="Enter your email" />
</form>
support: Safari, FF4*, Chrome, Opera
oHTML: Required, Type, Pattern
oJS: checkValidity()
oCSS: :invalid, :valid, :required
<form>
<input type="email" placeholder="Enter your email" required title="Please
enter a valid email address" />
<input type="submit" value="Go" />
</form>
via A List Apart (bit.ly/html5validation)
22:31
Edge of the Web
22:31
iOS 7 & 8 deprecated datetime support
& handles week poorly
22:31
22:31
“Consuming raw or undercooked meat, poultry,
seafood, shellfish or eggs may increase risk of
foodborne illness.”
COOKEDRAW
22:31
Available heat:
- Kendo UI (validation + UI)
- jQuery HTML5 Form
- H5F
oMobile input
oImproved form behavior in
modern browsers
oSemantic forms
oNew styling options
22:31
navigator.geolocation.getCurrentPosition(callback);
function callback(position){
var lat = position.coords.latitude;
var lng = position.coords.longitude;
var acc = position.coords.accuracy;
}
support: IE9, Safari, FF3.5, Chrome, Opera
opt-in user feature to share physical position
COOKEDRAW
22:31
oEnrich apps with location
awareness
oTrack user position
22:31
sessionStorage = per window
localStorage = per browser
<script>
sessionStorage.setItem('value', this.value);
localStorage.setItem('value', this.value);
sessionStorage.getItem(‘value’);
sessionStorage.clear();
localStorage.clear();
</script>
support: IE9, FF3.5, Safari, Chrome, Opera
5 MB limit
protocol
host port
(+ browser mode)
COOKEDRAW
22:31
Available heat:
- localstorage polyfill
- amplifyJS
- lawnchairJS
oBetter than cookies
oSimple API
22:31
easy drag & drop for any HTML element
<!-- Make an HTML element draggable -->
<div id=“myDiv” draggable=“true”>...</div>
//Handle the DnD events, such as Drop
function onDrop(e){
//e.target is the current target element
if(e.stopPropigation) e.stopPropigation(); //Prevent redirect
//Do something with payload
return false;
}
support: IE9, FF, Safari, Chrome, Opera
IMG
File
HTML
draggable
dragstart
drag
dragenter
dragleave
dragover
drop
dragend
Change appearance,
Set payload
Change drop target
appearance
Process DnD
payload
dragstart
drop
e.dataTransfer.setData([MIME type], [payload])
e.dataTransfer.getData([MIME type])
e.dataTransfer.files; //FileList object
COOKEDRAW
22:31
Available heat:
- Kendo UI (DnD & Upload)
- jQuery UI Draggable
oSupport DnD files in the
browser
oReduce JS footprint
22:31
access to local file system & data streaming
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function (event) {
var dataUrl = event.target.result;
};
reader.readAsDataURL(file);
.readAsBinaryString(file);
.readAsText(file);
.readAsArrayBuffer(file);
support: IE10, FF4, Chrome, Opera 11.1
COOKEDRAW
22:31
oProcess files with fewer
server trips
oImprove usability
oDesktop-like experiences
oBetter file upload
22:31
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
<div id="slider">
<input checked="" type="radio" name="slider" id="slide1" selected="false">
<input type="radio" name="slider" id="slide2" selected="false">
<input type="radio" name="slider" id="slide3" selected="false">
<input type="radio" name="slider" id="slide4" selected="false">
<div id="slides">
<div id="overflow">
<div class="inner">
<img src="images//rock.jpg">
<img src="images/grooves.jpg">
<img src="images/arch.jpg">
<img src="images/sunset.jpg">
</div>
</div>
</div>
<label for="slide1"></label>
<label for="slide2"></label>
<label for="slide3"></label>
<label for="slide4"></label>
</div>
<img-slider>
<img src="images/sunset.jpg" alt="a dramatic sunset”>
<img src="images/arch.jpg" alt="a rock arch”>
<img src="images/grooves.jpg" alt="some neat grooves”>
<img src="images/rock.jpg" alt="an interesting rock”>
</img-slider>
1. Custom Elements
2. Shadow DOM
3. Templates
4. HTML Imports
<head>
<link rel=“import” href=“/components/my-tag.html”>
...
</head>
<body>
<my-tag ranking=“2” />
</body>
Shadow Root
<img-slider>
</img-slider>
Shadow Host Shadow Boundary
Component CSS
Component JS
Component DOM
COOKEDRAW
22:31
Available heat:
- X-Tags
- Polymer
Polymer
(Google)
IE10+
X-Tag
(Mozilla)
IE9+
*Custom Elements only
<kendo-dropdownlist style="width: 100%;">
<option value="male" selected>Male</option>
<option value="female">Female</option>
<option value="notsay">Rather not say</option>
</kendo-dropdownlist>
<select id="ddl" style="width: 100%;">
<option value="male" selected>Male</option>
<option value="female">Female</option>
<option value="notsay">Rather not say</option>
</select>
<script>
$("#ddl").kendoDropDownList();
</script>
oImproved page composition
oEncapsulate/isolate related DOM/CSS
oHigher cohesion
oCreate reusable building blocks
oEasier to ready
api: openDatabase
db = openDatabase("html5demos", "1.0", "HTML 5 Database API example",
200000);
if (db) {
db.transaction(function(tx) {
tx.executeSql("CREATE TABLE IF NOT EXISTS tweets (id REAL UNIQUE,
text TEXT, created_at TEXT, screen_name TEXT,
mention BOOLEAN)", [], callback);
});
}
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM tweets WHERE mention = ? AND id > ? ORDER
BY id DESC', [mention, latest], callbackFunc);});
support: Safari, Chrome, Opera
“This specification has reached an impasse: all
interested implementors have used the same
SQL backend (Sqlite), but we need multiple
independent implementations to proceed along
a standardisation path.”
–W3C
JavaScript API for indexed local storage
var request = window.indexedDB.open("CandyDB",
"My candy store database");
request.onsuccess = function(event) {
var db = event.result;
if (db.version != "1") {
// User's first visit, initialize database.
...
}
}
support: IE9*, FF4, (Chrome)
COOKEDRAW
22:31
Available heat:
- IDBWrapper
- PouchDB
- lawnchairJS
oBrowser storage of larger
datasets
oOffline data
oBetter than local storage
for complex data
operations
22:31
api: WebSocket
ws = new WebSocket("ws://localhost:8282/test”);
ws.onopen = WSonOpen;
ws.onmessage = WSonMessage;
ws.onclose = WSonClose;
ws.onerror = WSonError;
function WSonMessage(event) {
$(“#myDiv”).html(event.data);
};
support: IE9**, Safari 5, Chrome, FF4*, Opera 11*
Edge of the Web
COOKEDRAW
22:31
Available heat:
- SignalR
- Socket.IO
- Sockjs
o2-way real-time messaging
oReplace long-polling &
interval “hacks”
oEliminate dependencies
on plug-ins
22:31
tag: <html manifest="html5demo.manifest">
MIME type: text/cache-manifest
CACHE MANIFEST
# Files you want cached for your app to work offline
myLogo.jpg
//Interacting with cache
window.applicationCache.update();
alert(window.applicationCache.status);
support: FF3.5, Safari, Chrome, Opera 10.6
COOKEDRAW
22:31
oAggressive resource
caching
oFoundation for offline
22:31
Service Workers
Superior to AppCache by providing programmatic control offline
cache. Background thread for web apps with control over network
requests.
Edge of the Web
ECMAScript 6
Edge of the Web
<TODO: HAPPY PLACE IMAGE>
Why
JavaScript?
WHY?!
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
No, really.
Brendan Eich.
Netscape.
Edge of the Web
:
::
:
Sept 1995
Netscape
Aug 1996
Microsoft
June 1997
ECMAScript
//
Mar 1999
XHR
Feb 2005
Ajax
Aug 2001
IE6
Firefox
Safari
Chrome
Mobile
Scott Koon
Faster. Easier. Better.
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
1. Slow Execution
2. Memory leaks
3. Poor Code Organization
4. Lack of Understanding
Edge of the Web
jQuery is a friend…
…that will stab you in the back.
Prove It
CACHE OBJECTS
$("#myDiv").css("color","red");
$("#myDiv").css("opacity",1);
BAD
$("#myDiv").css("color","red")
.css("opacity",1);
BETTER
var $myDiv = $("#myDiv");
$myDiv.css("color","red");
$myDiv.css("opacity",1);
BEST*
Prove It
NATIVE LOOPS
$.each(arr, function (i) {i / 2;});
BAD
arr.forEach(function (i) {i / 2;});
BETTER
var i = 0, len = arr.length;
for (i = 0; i < len; i += 1) {
i / 2;
}
BEST*
Prove It
Avoid Global Variables
They're slow & rude.
function add(num1, num2){
return num1 + num2;
}
var result = add(5, 10);
22:31
Prove It
var name = "Todd";
function sayHello(){
alert(name);
}
function sayHello(){
var name = "Todd";
alert(name);
}
22:31
BAD
BETTER
Edge of the Web
function doInitStuff(){
...
}
function loadSomething(){
...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
function doInitStuff(){
var user = "Todd";
}
function loadSomething(){
if (user == "Todd") ...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
var user = "";
function doInitStuff(){
user = "Todd";
}
function loadSomething(){
if (user == "Todd") ...
}
function handleButtonClick(){
...
}
function harlemShake(){
...
}
yourFile.js
var [window].user = "";
function [window].doInitStuff(){
user = "Todd";
}
function [window].loadSomething(){
if (user == "Todd") ...
}
function
[window].handleButtonClick(){
...
}
function [window].harlemShake(){
...
yourFile.js
var app = (function(){
var _name = "Todd";
return{
sayHello: function(){
alert(_name);
}
}
}());
app.sayHello();
22:31
BEST(ISH)
var app = (function(){
var _name = "Todd";
return{
sayHello: function(){
alert(_name);
},
sayGoodbye: function(){
alert(_name);
}
}
}());
22:31
BEST(ISH)
Your
“Public” API
SUPER PATTERN
(function(window,$,c){
var _private = "Todd";
function privateClass(){}
function myWidget(){}
myWidget.doSomething = function(){};
window.myWidget = myWidget;
}(window,jQuery,console));
Immediately Invoked Function Expressions (IIFE) +
Global Imports + [Prototype]
Prove It
Bind to Events & Pub/Sub
Just listen.
<button id="btn" onclick="sayHello();">
Click Me
</button>
$(function(){
$(“#btn").on("click",sayHello);
});
22:31
BAD
BETTER
$(document).on("click",
"button", sayHello);
22:31
BEST
Why?
Compare A Compare B
function doSomthing{
...
doSomethingElse();
doOneMoreThing();
}
22:31
BAD
function doSomething() {
...
$(document).trigger("DO_SOMETHING_DONE");
}
$(document).on("DO_SOMETHING_DONE",
function(){
doSomethingElse();
});
22:31
BETTER
Example
function doSomething(successCallback, failCb){
//Do something async...
if(error){
failCb();
} else {
successCallback();
}
}
function doSomethingElse(){
doSomething(function(){...}, function()...);
}
22:31
ANOTHER PROBLEM
function doSomething(){
var dfd = new $.Deferred();
//Do something async, then...
//dfd.resolve();
//OR
//dfd.reject();
return dfd.promise(); //Returns immediately!
}
function doSomethingElse(){
doSomething().done(//Success!).fail(//Error);
}
22:31
ANOTHER SOLUTION
Don't fondle the DOM.
Go with the flow.
My Awesome Page
Copyright Fo'eva
Lorem ipsumy samplish
jibber jabbish text only
meant to serve as a
placeholder, and much like
Pi, should never repeat or
be read much beyond the
first few characters.
function doSomething{
...
var $list = $("body").append("<ul>");
for(var i = 0; i < 10; i++){
$list.append("<li>"+ i +"</li>")
}
}
22:31
BAD
function doSomething{
...
var $domChunk = $("<ul>");
for(var i = 0; i < 10; i += 1){
$domChunk.append("<li>"+ i +"</li>");
}
$("body").append($domChunk);
}
22:31
BETTER
DOM SPEED WITH
STRINGS & INNERHTML
function doSomething{
...
var domString = "<ul>";
for(var i = 0; i < 10; i += 1){
domString += "<li>"+ i +"</li>";
}
domString += "</ul>"
$("body")[0].innerHTML = domString;
}
Prove It
<script type="text/x-kendo-template" id="tmp">
<ul>
#for(var i = 0; i < data.length; i += 1){#
<li>#= data[i] #</li>
#}#
</ul>
</script>
function doSomething(){
var myData = [1,..,10];
var template = kendo.template($("#tmp").html());
$("body").append(template(myData));
}
22:31
BEST
Prove It
Begin adopting ES6.
(Just get ready to compile your
JavaScript)
Edge of the Web
obreak
ocase
ocatch
ocontinue
odebugger
odefault
odelete
oelse
ofinally
ofor
ofunction
oif
oin
oinstanceof
onew
oreturn
oswitch
othis
othrow
otry
otypeof
ovar
owhile
owith
o break
o case
o class
o catch
o const
o continue
o debugger
o default
o delete
o else
o export
o extends
o finally
o for
o function
o if
o import
o in
o instanceof
o let
o new
o return
o super
o switch
o this
o throw
o try
o typeof
o var
o while
o with
o yield
o arrows
o classes
o enhanced object literals
o template strings
o destructuring
o default + rest + spread
o let + const
o iterators + for..of
o generators
o unicode
o modules
o module loaders
o map + set + weakmap +
weakset
o proxies
o symbols
o subclassable built-ins
o promises
o math + number + string + array
+ object APIs
o binary and octal literals
o reflect api
o tail calls
oShort-hand for function
BEFORE:
myArray.forEach(function(item){
alert(item);
});
NOW:
myArray.forEach(item => {
alert(item);
});
Example:
Edge of the Web
Edge of the Web
Edge of the Web
Edge of the Web
Guaranteed to Hurt Your Feelings™
22:31
MINIFY YOUR JS
Words are for humans.
MASTER BROWSER
DEV TOOLS
Debug JavaScript where it runs.
Edge of the Web
Everything you always wanted in CSS
<html>
<head>…</head>
<body>
<table>
<tr><td>
<font size=“3” color=“red”>
<h1>Hello World!</h1>
</font>
</td></tr>
<font color=“green”>
<font face=“Tahoma”>
<h2>I’m green! I think.</h2>
</font>
<p>Lorem ipsum</p>
</font>
</table>
</body>
</html>
{HTML}
<html>
<head>…</head>
<body>
<header>…</header>
<article>
<h1>Hello!</h1>
<p>Lorem ipsum</p>
</article>
<nav>…</nav>
<footer>…</footer>
</body>
</html>
structure
body { color:#FFF; }
header { margin:5px; }
article {
margin:5px 0;
padding: 10px;
background: #333;
}
style
{HTML} {CSS}
22:31
Edge of the Web
CSS 2.0++++
Module Status
Animations WD
2D/3D Transformations WD
Selectors (Level 3) REC
Media Queries (Level 3) REC
Backgrounds & Borders (rounded corners) CR
Text Decoration (text shadows, outline) CR
CSS 2.1 REC
WD LC CR PR REC
WD LC CR PR REC
CSS 2.1
CSS3 Color
Selectors
Media Queries
Backgrounds &
Borders
Multi-column
Flex Box
Marquee
25+ Drafts
Transitions
Transformations
Animations
Gradients
CSS3 Text
-webkit
-moz
-o
-ms
"standard" way
browsers
implement custom
features.
22:31
RECENT NEWS
Browser "flags" will handle emerging feature
-moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 2px 2px 2px #333;
-webkit-box-shadow: 2px 2px 2px #333;
box-shadow: 2px 2px 2px #333;
-webkit-background-size: 137px 50px;
-o-background-size: 137px 50px;
background-size: 137px 50px;
Edge of the Web
Edge of the Web
*
E[foo]
E[foo="bar"]
E[foo~="bar"]
E[foo|="en"]
E:first-child
E:lang(fr)
E:hover
E:focus
E:disabled
E::before
E::after
E > F
E + F
E
E:link
E:active
E:visited
E::first-line
E::first-letter
E.warning
E#myid
E F
E[foo^="bar"]
E[foo$="bar"]
E[foo*="bar"]
E:root
E:nth-child(n)
E:nth-last-child(n)
E:nth-of-type(n)
E:nth-last-of-type(n)
E:last-child
E:first-of-type
E:last-of-type
E:only-child
E:only-of-type
E:empty
E:target
E:enabled
E:checked
E:not(s)
E ~ F
oPowerful new selector options
//Alternating Items
li:nth-child(odd) { color: blue; }
li:nth-child(even) { color: green; }
li:nth-child(3n) { color: red; } //Every 3rd item
//First/Last Items
li:first-of-type { color: blue; }
li:not(:first-of-type):not(:last-of-type) { color: orange; } //All *but*
first/last
//Enabled/Disabled
input:enabled { border: 2px solid green; }
input:disabled { background-color: #BBB; }
*Use jQuery to support legacy browsers
22:31
Licensing.
(And then file format.)
(And then performance.)
(And then Comic Sans.)
@font-face {
font-family: Delicious;
src: url('Delicious-Roman.otf') format(“opentype”);
}
//Usage
h3 { font-family: Delicious, sans-serif; }
22:31
22:31
-moz-border-radius: 5px 5px 5px 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-moz-box-shadow: 2px 2px 2px #333;
-webkit-box-shadow: 2px 2px 2px #333;
box-shadow: 2px 2px 2px #333;
-webkit-background-size: 137px 50px;
-o-background-size: 137px 50px;
background-size: 137px 50px;
22:31
22:31
22:31
Edge of the Web
/*These two rules do the same thing*/
@media all and (min-width:500px) { … }
@media (min-width:500px) { … }
/*Multiple conditions*/
@media screen and (min-width: 600px) and (max-width: 900px) {
.class {
background: #333;
}
}
• width/height
• device-width/height
• aspect-ratio
• orientation
• color/color-index
• resolution
+
media type & logical operators
Edge of the Web
(Eventually.)
Flex Container
display: flex;
Flex
Item
Flex
Item
Flex
Item
Flex container
controls items
width/ height/
order
Flex Container
display: flex;
Flex
Item
Flex
Item
Flex
Item
order: -1;
Flex Container
display: flex;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
flex-direction: column;
Flex Item
Flex Item
flex: 2;
Flex Item
order: -1;
Flex Container
display: flex;
justify-content: flex-start;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
justify-content: flex-end;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
justify-content: center;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
align-items: flex-start;
Flex
Item Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
align-items: flex-end;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
Flex Container
display: flex;
align-items: stretch;
Flex
Item
Flex Item
flex: 2;
Flex
Item
order:
-1;
display: flex;
margin:auto;
Extra
.parent .parent {
display:grid;
grid-columns: auto 100px 1fr 2fr;
grid-rows: 50px 5em auto;
}
100px 1fr 2frauto
50px
5em
.header {
grid-column-span: 3;
grid-row: 1;
}
100px 1fr 2frauto
50px
5em
.header
.side
.side {
grid-column: 4;
grid-row: 2;
grid-row-span: 2;
}
Edge of the Web
Edge of the Web
Good Bye. Adios. Auf Wiedersehen.
E: anglin@telerik.com
T: @toddanglin
S: slideshare.net/toddanglin
Ad

More Related Content

What's hot (20)

Echo HTML5
Echo HTML5Echo HTML5
Echo HTML5
Nathan Smith
 
Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011
Zi Bin Cheah
 
Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)
Peter Lubbers
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
[In Control 2010] HTML5
[In Control 2010] HTML5[In Control 2010] HTML5
[In Control 2010] HTML5
Christopher Schmitt
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
Ryan Roemer
 
What is HTML 5?
What is HTML 5?What is HTML 5?
What is HTML 5?
Susan Winters
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
Nicholas Zakas
 
HTML5
HTML5HTML5
HTML5
Hatem Mahmoud
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
Ashlimarie
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
Simon Willison
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
dynamis
 
Html5 Basics
Html5 BasicsHtml5 Basics
Html5 Basics
Pankaj Bajaj
 
State of jQuery June 2013 - Portland
State of jQuery June 2013 - PortlandState of jQuery June 2013 - Portland
State of jQuery June 2013 - Portland
dmethvin
 
Html 5
Html 5Html 5
Html 5
manujayarajkm
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Web Standards And Protocols
Web Standards And ProtocolsWeb Standards And Protocols
Web Standards And Protocols
Steven Cahill
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
Robert Nyman
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat Videos
Greg Schechter
 
Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011Taiwan Web Standards Talk 2011
Taiwan Web Standards Talk 2011
Zi Bin Cheah
 
Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)Getting Started with HTML5 in Tech Com (STC 2012)
Getting Started with HTML5 in Tech Com (STC 2012)
Peter Lubbers
 
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile designDreamweaver CS6, jQuery, PhoneGap, mobile design
Dreamweaver CS6, jQuery, PhoneGap, mobile design
Dee Sadler
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
Ryan Roemer
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
Nicholas Zakas
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
Ashlimarie
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
Simon Willison
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
dynamis
 
State of jQuery June 2013 - Portland
State of jQuery June 2013 - PortlandState of jQuery June 2013 - Portland
State of jQuery June 2013 - Portland
dmethvin
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
James Pearce
 
Web Standards And Protocols
Web Standards And ProtocolsWeb Standards And Protocols
Web Standards And Protocols
Steven Cahill
 
The web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - IstanbulThe web - What it has, what it lacks and where it must go - Istanbul
The web - What it has, what it lacks and where it must go - Istanbul
Robert Nyman
 
JS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat VideosJS Days HTML5 Flash and the Battle for Faster Cat Videos
JS Days HTML5 Flash and the Battle for Faster Cat Videos
Greg Schechter
 

Viewers also liked (13)

Making HTML5 Work Everywhere
Making HTML5 Work EverywhereMaking HTML5 Work Everywhere
Making HTML5 Work Everywhere
Todd Anglin
 
Building RESTful Applications with OData
Building RESTful Applications with ODataBuilding RESTful Applications with OData
Building RESTful Applications with OData
Todd Anglin
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Todd Anglin
 
Using HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile AppsUsing HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile Apps
Todd Anglin
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Simplify360
 
10 Lessons Graphic Designers Can Learn From Sports Celebrities
10 Lessons Graphic Designers Can Learn From Sports Celebrities10 Lessons Graphic Designers Can Learn From Sports Celebrities
10 Lessons Graphic Designers Can Learn From Sports Celebrities
ZillionDesigns
 
Games Sense to Coaching Basketball
Games Sense to Coaching BasketballGames Sense to Coaching Basketball
Games Sense to Coaching Basketball
Chris Oliver
 
A World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
A World of Talent: What Perennial NBA Contenders Teach Us About CollaborationA World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
A World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
Cureo
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right Technology
Neo4j
 
Webinar: RDBMS to Graphs
Webinar: RDBMS to GraphsWebinar: RDBMS to Graphs
Webinar: RDBMS to Graphs
Neo4j
 
Apple Inc Presentatioin
Apple Inc PresentatioinApple Inc Presentatioin
Apple Inc Presentatioin
2AM
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigital
Aleyda Solís
 
Making HTML5 Work Everywhere
Making HTML5 Work EverywhereMaking HTML5 Work Everywhere
Making HTML5 Work Everywhere
Todd Anglin
 
Building RESTful Applications with OData
Building RESTful Applications with ODataBuilding RESTful Applications with OData
Building RESTful Applications with OData
Todd Anglin
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Todd Anglin
 
Using HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile AppsUsing HTML5 to Build Mobile Apps
Using HTML5 to Build Mobile Apps
Todd Anglin
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
Todd Anglin
 
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Los Angeles Lakers tops, Miami Heat and Chicago Bulls follow as the most soci...
Simplify360
 
10 Lessons Graphic Designers Can Learn From Sports Celebrities
10 Lessons Graphic Designers Can Learn From Sports Celebrities10 Lessons Graphic Designers Can Learn From Sports Celebrities
10 Lessons Graphic Designers Can Learn From Sports Celebrities
ZillionDesigns
 
Games Sense to Coaching Basketball
Games Sense to Coaching BasketballGames Sense to Coaching Basketball
Games Sense to Coaching Basketball
Chris Oliver
 
A World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
A World of Talent: What Perennial NBA Contenders Teach Us About CollaborationA World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
A World of Talent: What Perennial NBA Contenders Teach Us About Collaboration
Cureo
 
GraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right TechnologyGraphTalks Rome - Selecting the right Technology
GraphTalks Rome - Selecting the right Technology
Neo4j
 
Webinar: RDBMS to Graphs
Webinar: RDBMS to GraphsWebinar: RDBMS to Graphs
Webinar: RDBMS to Graphs
Neo4j
 
Apple Inc Presentatioin
Apple Inc PresentatioinApple Inc Presentatioin
Apple Inc Presentatioin
2AM
 
Mobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigitalMobile-First SEO - The Marketers Edition #3XEDigital
Mobile-First SEO - The Marketers Edition #3XEDigital
Aleyda Solís
 
Ad

Similar to Edge of the Web (20)

Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
George Kanellopoulos
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
GreekTuts Ελληνικά Βοηθήματα
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
Panagiotis Grigoropoulos
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
Sadaaki HIRAI
 
Html5 browser api_support
Html5 browser api_supportHtml5 browser api_support
Html5 browser api_support
상길 안
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
Matt Casto
 
Html5
Html5Html5
Html5
Zahin Omar Alwa
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti
 
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
 
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Frédéric Harper
 
HTML5
HTML5HTML5
HTML5
Maurice De Beijer [MVP]
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
soft-shake.ch
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
Pablo Garaizar
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User Experience
Mahbubur Rahman
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
Gil Fink
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
Yan Shi
 
Html5 and css3
Html5 and css3Html5 and css3
Html5 and css3
Deniss Platonov
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
George Kanellopoulos
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
Sadaaki HIRAI
 
Html5 browser api_support
Html5 browser api_supportHtml5 browser api_support
Html5 browser api_support
상길 안
 
HTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile appsHTML5 & CSS3 refresher for mobile apps
HTML5 & CSS3 refresher for mobile apps
Ivano Malavolta
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
Matt Casto
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
Sascha Corti
 
Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~Attractive HTML5~開発者の視点から~
Attractive HTML5~開発者の視点から~
Sho Ito
 
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Windows 8 Pure Imagination - 2012-11-24 - Getting your HTML5 game Windows 8 r...
Frédéric Harper
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
soft-shake.ch
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
Pablo Garaizar
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User Experience
Mahbubur Rahman
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
Gil Fink
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
Yan Shi
 
Ad

More from Todd Anglin (7)

Developing a Modern Mobile App Strategy
Developing a Modern Mobile App StrategyDeveloping a Modern Mobile App Strategy
Developing a Modern Mobile App Strategy
Todd Anglin
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
Todd Anglin
 
50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers
Todd Anglin
 
HTML5 for Tablets and Mobile
HTML5 for Tablets and MobileHTML5 for Tablets and Mobile
HTML5 for Tablets and Mobile
Todd Anglin
 
Building a Testable Data Access Layer
Building a Testable Data Access LayerBuilding a Testable Data Access Layer
Building a Testable Data Access Layer
Todd Anglin
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
Todd Anglin
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4
Todd Anglin
 
Developing a Modern Mobile App Strategy
Developing a Modern Mobile App StrategyDeveloping a Modern Mobile App Strategy
Developing a Modern Mobile App Strategy
Todd Anglin
 
5 Tips for Better JavaScript
5 Tips for Better JavaScript5 Tips for Better JavaScript
5 Tips for Better JavaScript
Todd Anglin
 
50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers50in50: Resources for HTML5, CSS3, & JavaScript Developers
50in50: Resources for HTML5, CSS3, & JavaScript Developers
Todd Anglin
 
HTML5 for Tablets and Mobile
HTML5 for Tablets and MobileHTML5 for Tablets and Mobile
HTML5 for Tablets and Mobile
Todd Anglin
 
Building a Testable Data Access Layer
Building a Testable Data Access LayerBuilding a Testable Data Access Layer
Building a Testable Data Access Layer
Todd Anglin
 
HTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use TodayHTML5 and CSS3 Techniques You Can Use Today
HTML5 and CSS3 Techniques You Can Use Today
Todd Anglin
 
What’s New in ASP.NET 4
What’s New in ASP.NET 4What’s New in ASP.NET 4
What’s New in ASP.NET 4
Todd Anglin
 

Recently uploaded (20)

Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
Interactive odoo dashboards for sales, CRM , Inventory, Invoice, Purchase, Pr...
AxisTechnolabs
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Maxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINKMaxon CINEMA 4D 2025 Crack FREE Download LINK
Maxon CINEMA 4D 2025 Crack FREE Download LINK
younisnoman75
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software DevelopmentSecure Test Infrastructure: The Backbone of Trustworthy Software Development
Secure Test Infrastructure: The Backbone of Trustworthy Software Development
Shubham Joshi
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Revolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptxRevolutionizing Residential Wi-Fi PPT.pptx
Revolutionizing Residential Wi-Fi PPT.pptx
nidhisingh691197
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025Adobe Lightroom Classic Crack FREE Latest link 2025
Adobe Lightroom Classic Crack FREE Latest link 2025
kashifyounis067
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 

Edge of the Web

Editor's Notes

  • #2: The web platform has evolved significantly over the last several years, giving developers more power than ever to create rich, interactive applications delivered via browsers. New capabilities in HTML, CSS and JavaScript paired with constantly updating browsers make it possible to do things on the web that used to be the exclusive domain of plugins and native apps. In this workshop, you’ll be introduced to some of the most powerful and useful techniques available to the modern web developer that will change the way you think about web app development. Topics covered include: Emerging browser capabilities for creating high performance, offline-enabled apps (Application Cache, Service Workers, Offline APIs, Web Storage) Next generation of HTML UI component technology (Web Components, Shadow DOM) Powerful new layout systems in CSS that eliminate the need for floats (Flexbox, Grid) Techniques and frameworks for creating mobile-friendly, responsive layouts (Media Queries) Exciting new language features in JavaScript (ES6) that improve code structure in large JavaScript apps Key improvements in browsers and browser developer tools that are critical to the modern web developer (Evergreen, Browser Flags, Profiling, Debugging, Screen Emulation, Mobile Debugging) The future of web app development is exciting, and these are the technologies that will underpin and drive that change. Don’t get left behind with IE8-era knowledge. Get ahead of the curve and master the edge of the web.
  • #3: Bogus chart – based on “research” by Wiman & Meirhenry, and Edgar Dale 1960 Research since proven to be made-up. Still, fun slide and anecdotally true… DEBUNKING: http://www.willatworklearning.com/2006/05/people_remember.html http://www.conversionrate.com.au/2008/06/16/retention-myth-people-remember-50-of-what-they-see-and-hear-and-only-10-of-what-they-read/
  • #15: Talk about the major “platforms” for the web. Introduce the players.
  • #20: WHATWG FAQs on Living Standard: http://wiki.whatwg.org/wiki/FAQ#What_does_.22Living_Standard.22_mean.3F
  • #26: Trick question: Common answers will be the popular browsers. Right answer: The browsers that YOUR users use (based on analytics)
  • #28: Source: http://marketshare.hitslink.com/browser-market-share.aspx?qprid=0&qpcustomd=0&qptimeframe=Q Updated: May 2015 March, 2015 56.54% 24.99% 11.89% 5.00% 1.15% 0.42%
  • #30: Source: http://www.sitepoint.com/browser-trends-april-2015-statcounter-vs-netmarketshare/
  • #31: Browser Versions Updated: September 2015
  • #37: Mobile browsers are just as important for today's web developer.
  • #38: http://mashable.com/2010/04/13/mobile-web-stats/
  • #43: CanIUse.com IE 11 (versus 10): Pointer Events Flexbox Viewpoint Units xDoc Messaging Full Screen API CSS3 Border Images WebGL* dataset
  • #44: CanIUse.com IE 11 (versus 10): Pointer Events Flexbox Viewpoint Units xDoc Messaging Full Screen API CSS3 Border Images WebGL* dataset
  • #46: Scores from HTML5Test.com (updated Oct 2013)
  • #47: Sun Spider benchmark test: http://www.webkit.org/perf/sunspider/sunspider.html
  • #48: Show off some HTML5 in action
  • #49: This is not a question with a single correct answer. It all depends on your audience and strategy. There are several general strategies for defining what is “usable” today.
  • #52: Useful for adding HTML5 to both older browsers + new browsers that do not have a specific HTML5 feature http://remysharp.com/2010/10/08/what-is-a-polyfill/ https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
  • #55: Strategy: Design for lowest common denominator, Enrich/Enhance as more capabilities are available Image Source: http://www.flickr.com/photos/aaronolaf/833342657/
  • #56: Strategy: Design for best case scenario (premium features), and gracefully remove features as resources are not available Image Source: http://www.mbusa.com/mercedes/index
  • #58: Modern adoption of HTML5 is done by checking for individual feature support, NOT by checking for specific browsers/browser versions. This helps you adopt as much of HTML5 as possible in a progressively optimistic manner.
  • #60: http://www.modernizr.com/
  • #61: http://www.modernizr.com http://www.alistapart.com/articles/taking-advantage-of-html5-and-css3-with-modernizr/ Modernizr now ships with ASP.NET MVC 3
  • #71: Important to define the scope and vastness of HTML5
  • #72: Focusing on features most popular in use today by HTML5 developers. Sources: http://css-tricks.com/poll-results-html5-features-in-use-on-production-sites/ http://css.dzone.com/articles/what-are-most-common-html5
  • #73: Demo End Result Goal
  • #75: Focusing on features most popular in use today by HTML5 developers. Sources: http://css-tricks.com/poll-results-html5-features-in-use-on-production-sites/ http://css.dzone.com/articles/what-are-most-common-html5
  • #76: http://www.w3.org/TR/html5/text-level-semantics.html http://media.smashingmagazine.com/cdn_smash/wp-content/uploads/images/html5-cheat-sheet/html5-cheat-sheet.pdf http://gsnedders.html5.org/outliner http://diveintohtml5.org/examples/blog-original.html http://visualstudiogallery.msdn.microsoft.com/en-us/d771cbc8-d60a-40b0-a1d8-f19fc393127d
  • #78: http://www.javascriptkit.com/dhtmltutors/customattributes.shtml http://html5doctor.com/html5-custom-data-attributes/ Two methods of access: - Via Attributes (http://api.jquery.com/category/attributes/) Via “dataset” (plug-in required today: http://www.orangesoda.net/jquery.dataset.html)
  • #81: Chrome H.264 from MSFT: http://arstechnica.com/microsoft/news/2011/02/microsoft-offers-h264-plugin-for-chrome-queries-google-on-webm.ars http://blogs.msdn.com/b/ie/archive/2011/02/01/html5-and-web-video-questions-for-the-industry-from-the-community.aspx Chrome’s pull of H.264: http://arstechnica.com/web/news/2011/01/googles-dropping-h264-from-chrome-a-step-backward-for-openness.ars/
  • #83: http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#states-of-the-type-attribute http://www.html5laboratory.com/s/simple-html5-contact-form.html Web Forms 2 (old spec – now Forms in HTML5): http://dev.w3.org/html5/web-forms-2/ http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#forms Defined input types: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#the-input-element Cross browser input types: http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-cross-browser-html5-forms/ Cross browser forms 2.0: https://github.com/westonruter/webforms2
  • #84: Useful articles: http://www.alistapart.com/articles/forward-thinking-form-validation/ https://developer.mozilla.org/en/HTML/HTML5/Forms_in_HTML5#Constraint_Validation_API http://www.the-art-of-web.com/html/html5-form-validation/
  • #85: Link to demo from A List Apart (good final cap demo on validation)
  • #86: iOS varies the keyboard significantly on the iPhone depending on the input type Shown: iOS5 (not available in iOS4)
  • #92: http://diveintohtml5.org/geolocation.html Spec: http://dev.w3.org/geo/api/spec-source.html Only lat, long, acc are guranteed. Other values might be available, including altitude, altitudeAccuracy, heading, speed Can force maximum age for cached geolocation objects Can handle errors and make repeat location calls using navigatior.geolocation.watchPosition(successCallback, errorCallback, {maximumAge:time}) Google Maps API v3 Reference: http://code.google.com/apis/maps/documentation/javascript/basics.html (Free to use on all apps that are free to consumers – no API keys needed)
  • #95: http://html5demos.com/storage Tutorial: http://html5tutorial.net/tutorials/working-with-html5-localstorage.html Fallback for older browsers: http://amplifyjs.com/api/store/
  • #96: Same Origin Policy for JS security https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript
  • #99: http://www.html5rocks.com/en/tutorials/dnd/basics/
  • #104: File API: http://www.w3.org/TR/file-upload/ http://www.html5rocks.com/en/tutorials/file/dndfiles/ Demo: http://html5demos.com/file-api
  • #110: Focusing on features most popular in use today by HTML5 developers. Sources: http://css-tricks.com/poll-results-html5-features-in-use-on-production-sites/ http://css.dzone.com/articles/what-are-most-common-html5
  • #112: Example source: https://css-tricks.com/modular-future-web-components/
  • #113: Example source: https://css-tricks.com/modular-future-web-components/
  • #120: WebSql is not proceeding: http://dev.w3.org/html5/webdatabase/ State of web local storage: http://rethink.unspace.ca/2010/5/10/the-state-of-html5-local-data-storage Replacement Tech is IndexedDB: http://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html Syncing back to a server database: http://stackoverflow.com/questions/1744522/best-way-to-synchronize-local-html5-db-storage-with-a-server PersistenceJS: https://github.com/zefhemel/persistencejs Google Web Stroage Portability Layer: http://google-opensource.blogspot.com/2009/05/web-storage-portability-layer-common.html
  • #121: Kills Google Gears http://www.w3.org/TR/IndexedDB/ https://developer.mozilla.org/en/IndexedDB http://www.html5rocks.com/tutorials/indexeddb/todo/ Good comparison by Mozilla to former WebDatabase approach: http://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/
  • #124: Example code for .NET WebSockets: http://www.undisciplinedbytes.com/2010/06/html-5-c-web-sockets-server-and-asp-net-client-implementation/ Online demo: http://websocket.org/echo.html Opera on Sockets: http://my.opera.com/core/blog/websockets Sockets disabled by default in FF and Opera: http://annevankesteren.nl/2010/12/websocket-protocol-vulnerability Enabling sockets in Opera 11: opera:config#UserPrefs|EnableWebSockets Enabling sockets in FF4: about:config -> network.websocket.override-security-block;true IE9 can do WebSockets via a prototype Silverlight hack: http://html5labs.interoperabilitybridges.com/prototypes/available-for-download/websockets Limits: http://html5labs.interoperabilitybridges.com/media/2311/readme.htm Sockets vs. traditional polling performance: http://soa.sys-con.com/node/1315473 3rd party sockets solution for older browsers:
  • #128: http://html5demos.com/offlineapp http://diveintohtml5.org/offline.html http://html5doctor.com/go-offline-with-application-cache/ (Good practical tips) Inspect appcache in Chrome: chrome://appcache-internals/ Stephen Walther on using ASP.NET to serve Cache manifest: http://stephenwalther.com/blog/archive/2011/01/26/creating-html5-offline-web-applications-with-asp-net.aspx Fix IIS Express manifest type: http://www.danielroot.info/2010/07/how-microsofty-writes-ipad-apps.html C:\Users\{YOU}\Documents\IISExpress\config\applicationHost.config Comment out the .manifest mime type (sorry ClickOnce!) Add the following line: <mimeMap fileExtension=".manifest" mimeType="text/cache-manifest" /> Can also override in IIS7+ config (integrated pipeline): <system.webServer> <staticContent> <mimeMap fileExtension=".manifest" mimeType="text/cache-manifest" /> </staticContent> </system.webServer> Application Cache API: http://www.w3.org/TR/html5/offline.html#application-cache-api
  • #131: Compatibility updated May 2015
  • #136: AGENDA: - Why JavaScript? Why?! - Most Common JS Problems - TIPS - Future of JavaScript
  • #137: JavaScript uses syntax influenced by that of C. JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have very different semantics. The key design principles within JavaScript are taken from the Self and Scheme programming languages. http://en.wikipedia.org/wiki/JavaScript
  • #141: NOTES: History Evolution The IE Connection (IE6 memory) Modern JS Engines BOTTOM LINE: Only Cross Platform Language Solution
  • #142: Netscape also wanted a lightweight interpreted language that would complement Java by appealing to nonprofessional programmers, like Microsoft's VB
  • #143: Credit: Brendan Eich via Wikipedia Source: http://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1021 Brendan further said that JavaScript saved the world from VBScript http://www.jwz.org/blog/2010/10/every-day-i-learn-something-new-and-stupid/#comment-1049
  • #144: Java is to JavaScript AS Car is to Carpet Netscape was going to release JavaScript as “LiveScript.” Last minute change produced JavaScript.
  • #145: HOW DID JAVASCRIPT BECOME UBIQUITOUS? Netscape shipped first in Netscape 2 Microsoft support added in IE3 (“JScript”) Other environments adopted JavaScript-like script languages: ActionScript (Flash), PDFs, Qt
  • #146: http://www.codinghorror.com/blog/2007/05/javascript-the-lingua-franca-of-the-web.html
  • #147: Contributing factors: New JS engines (V8) CPU speed (more local processing power) Better debugging tools Better understanding of language (closures, patterns, functional programming, JSLint)
  • #148: Chrome is 10x faster than IE7 (IE6 too old to test) Used crude relative test: http://jsbenchmark.celtickane.com
  • #149: http://geekmontage.com/firefox-vs-chrome-vs-ie/
  • #150: http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html The Principle of Least Power
  • #154: jQuery built for convenience, not for performance. PERF PROOF: http://jsperf.com/id-vs-class-vs-tag-selectors/46 Note: This in general is applicable to native JavaScript methods too, like document.getElementById()  not limited to jQuery only objects DOM lookups are slow especially if DOM is huge. Instead of this: $('#test').bind('click', function() { /**/ }); $('#test').css('border', '1px solid #999'); Better use jQuery Method chaining: $('#test').bind('click', function() {/**/ })                  .css('border', '1px solid #999'); Or cache jQuery object: var $test = $('#test'); $test.bind('click', function() {/**/ }); $test.css('border', '1px solid #999'); (Performance comparison here: http://jsperf.com/jquery-chaining/12) (~+30% here, but it stacks on each additional method call)
  • #155: PRO TIP CONVENTION: Name jQuery variables with $ (ie $myObject) PERF TEST: http://jsperf.com/caching-jquery-objects-perf http://jsbin.com/udizam/2
  • #156: PERF TEST: http://jsperf.com/for-vs-foreach-vs-each/3 - Caching the array length improves perf by about 15% (http://jsperf.com/for-vs-foreach-vs-each/24) - Technically a reverse (count down) for loop is faster (15%) than count-up loop, but much harder to read/use
  • #157: Global variables pollute the JS app and are slower to use in code. Harder to be a good JS "neighbor" with global variables (collide with other JS code). Better to use local variables, cached variable, or closures
  • #158: Chart credit: http://oreilly.com/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html PERF TEST: http://jsperf.com/global/2
  • #159: Global memory garbage collecting problem example: http://fiddle.jshell.net/toddanglin/EhEBM/3/show/light/
  • #165: Pattern sometimes referred to as: MODULE EXPORT http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth BE CAREFUL WITH CLOSURES: Most common source of memory leaks in modern apps https://developers.google.com/speed/articles/optimizing-javascript Circular Reference Memory Leaks: http://blogs.msdn.com/b/ericlippert/archive/2003/09/17/53028.aspx
  • #166: Pattern sometimes referred to as: MODULE EXPORT http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth BE CAREFUL WITH CLOSURES: Most common source of memory leaks in modern apps https://developers.google.com/speed/articles/optimizing-javascript Circular Reference Memory Leaks: http://blogs.msdn.com/b/ericlippert/archive/2003/09/17/53028.aspx
  • #167: PERF TEST: http://jsperf.com/prototype-vs-closures/20 Explanation of term: http://benalman.com/news/2010/11/immediately-invoked-function-expression/ Suppose you develop a widget. The widget has a number of axillary classes. If you just define them globally they will pollute the global window class, meaning they will be available from everywhere. Instead consider the following definition:               (function (window) {                         function classA () {}                         function classB () {}                                                 function myWidget () {}                         myWidget.prototype.method1 = function ()                         {                         }                                                 window.myWidget = myWidget;                                     }) (window, undefined);   This is the pattern which jQuery follows. Now the only available global definition will be of myWidget. classA and classB remain hidden in the anonymous function. If you look closely in the definition, you will see the that window and undefined are passed to the anonymous function. Passing anonymous guaranties that undefined will be available in the scope of this function and will prevent you from someone who accidentally did something like:   undefined = true;   before your function. Also, if you use some minifier, it will replace all occurrences of window with some shorter name. Of course you can pass as much params as you wish, thus assuring that these objects exist in the scope of your anonymous function.
  • #168: - Binding to delegates is less brittle, easier to avoid memory leaks - Pub/Sub is super flexible, less coupling
  • #169: The scope of an inline event bind is GLOBAL! Inline event handlers can also cause memory leaks in IE: https://developers.google.com/speed/articles/optimizing-javascript
  • #170: Old jQuery syntax: .delegate
  • #171: Every time you need to dispose a DOM element, make sure you unbind all of its events, unless you want to come up with a memory leak. Whenever you bind an event handler to an event, you tell the processor to allocate memory for it. The more event handlers you have running at the same time, the more memory you are using. This is why it's important to unbind or detach your event handlers soon as you no longer need them. http://www.learnjquery.org/newsletter/Tutorial-3-jquery-events.html
  • #172: Event listening PUB/SUB
  • #176: Reducing the time spent changing the DOM improves perf. Using templates improves readability/maintainability. Instead of this: var $list = $('#mylist').append('<ul>'); for (var i = 0, l = itemlist.length; i < l; i++) {        $list.append('<li>' + itemlist[i] + '</li>'); } better this: var $list = $('<ul>'); for (var i = 0, l = itemlist.length; i < l; i++) {        $list.append('<li>' + itemlist[i] + '</li>'); } $('#mylist').append($list); (Performance comparison here: http://jsperf.com/jquery-dom-manipulation/3) (up to x5 in this case)
  • #180: PERF TEST: http://jsperf.com/jquery-dom-manipulation/4 When you want to dynamically build html, prefer string concatenation like:   var html = ’<p>some paragraph</p>’; html += ‘<p>another paragraph</p>’; $(“#placeHolder”).html(html);   over DOM object creation and appending/prepending like:               var p1 = document.createElement('p');             p1.innerHTML = "some paragraph";             document.body.appendChild(p1);               var p2 = document.createElement('p’);             p2.innerHTML = "another paragraph";             document.body.appendChild(p2);        assigning directly to the innerHTML proves to be the fastest method for html creation.
  • #181: PERF TEST: http://jsperf.com/jquery-dom-manipulation/5
  • #182: Common Examples: RequireJS, CommonJS Applications of any size are painful to manage without a module pattern.
  • #190: ES6 Comparison: http://es6-features.org/
  • #192: JSLint – by Douglas Crockford Code quality tool for JavaScript http://www.jslint.com/
  • #196: Before CSS: Styles were mixed with HTML tags (difficult to update, difficult to read) Layout was defined with HTML tags (poor semantic use of tags)
  • #197: CSS exists to separate styling and layout decisions from structural meaning of underlying document *Separation of concerns to a degree CSS rules often tend to create dependencies on HTML Other benefits of CSS: Performance (caching of CSS rules) Semantic HTML
  • #198: Peter Griffin CSS cartoon
  • #200: Extensions for CSS2.1 Add functionality, refine definitions New CSS3 features CSS3 principles Show example of CSS3 in action List of all CSS properties: http://meiert.com/en/indices/css-properties/ http://www.w3.org/Style/CSS/current-work http://www.w3.org/TR/2010/WD-css-2010-20101202/#css3
  • #201: CSS3’s evolutionary approach Microsoft is focusing primarily on adding product support at the Candidate Recommendation stage Review status of various CSS3 proposed specs: http://www.w3.org/Style/CSS/current-work Updated: Oct 2012
  • #202: Microsoft Extensions: http://blogs.msdn.com/b/ie/archive/2008/09/08/microsoft-css-vendor-extensions.aspx Vendor specific prefixes: http://reference.sitepoint.com/css/vendorspecific
  • #207: CSS Selectors over time (1, 2, 3) - As of Nov 2011
  • #210: @font-face was first proposed for CSS2 and has been implemented in Internet Explorer since version 5 IE relied on proprietary Embedded Open Type (.eot) Old school solutions involved things like sIFR (http://www.mikeindustries.com/blog/sifr/) Modern browsers finally support TTF and OTF + Most support new WOFF (exception is Safari) Resources: http://www.css3.info/preview/web-fonts-with-font-face/ http://www.alistapart.com/articles/cssatten
  • #216: Illustrate media query adapting (video?)
  • #217: http://www.webdesignerwall.com/tutorials/css3-media-queries/ http://www.w3.org/TR/css3-mediaqueries/ http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  • #218: http://www.webdesignerwall.com/tutorials/css3-media-queries/ http://www.w3.org/TR/css3-mediaqueries/ http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  • #220: http://www.webdesignerwall.com/tutorials/css3-media-queries/ http://www.w3.org/TR/css3-mediaqueries/ http://www.w3.org/TR/2010/CR-css3-mediaqueries-20100727/
  • #231: http://codepen.io/HugoGiraudel/pen/qIAwr