SlideShare a Scribd company logo
1 of 40
TOUCH ME.
I DAREYOU…
Josh Holmes
@joshholmes
http://www.joshholmes.com
josh.holmes@microsoft.com
Why does touch matter?
What’s your strategy for dealing with
touch?
Ignore
Retrofit
Design
for first
Remember touch is touching…
Don’t
Use
It
Hover Sucks
Obviously…
Touch Sized Buttons
~42px
Touch and the Grid
Ergonomics & touch
Touch the hotspots
Design forTouch First
• Design with hands and fingers in mind
Remember there’s more than one finger
Remember there’s more than type of input
W3C Pointer Standard
• http://www.w3.org/Submission/pointer-events/
• http://www.w3.org/TR/pointerevents/
 pointerMove
 pointerUp
 pointerOver
 pointerOut
W3C Pointer Standard
• http://www.w3.org/Submission/pointer-events/
• http://www.w3.org/TR/pointerevents/
 pointermove
 pointerup
 pointerover
 pointerout
Event Models
But not
as a
crutch!
 pointermove
 pointerup
 pointerover
 pointerout
 pointercancel
demo
Event Models
Code for multi-touch
document.addEventListener(moveevent, moveTouchPoint, false);
…
function moveTouchPoint(e) {
var pID = e.pointerId || 0;
if (e.targetTouches) {
for (var i = 0; i < event.targetTouches.length; i++) {
iPD = e.targetTouches[i].identifier;
if (touchPoints[pID]) {
touchPoints[pID].x = e.targetTouches[i].clientX;
touchPoints[pID].y = e.targetTouches[i].clientY;
}
}
} else {
if (touchPoints[pID]) {
touchPoints[pID].x = e.clientX;
touchPoints[pID].y = e.clientY;
}
} }
Code for Pointer
document.addEventListener(moveevent,
moveTouchPoint, false);
…
function moveTouchPoint(e) {
var pID = e.pointerId;
if (touchPoints[pID]) {
touchPoints[pID].x = e.clientX;
touchPoints[pID].y = e.clientY;
}
}
CurrentTouch support on IOS/Android…
if ('ontouchstart' in document.documentElement) {
myButton.addEventListener('touchstart', myFavFunction, false);
}
else {
myButton.addEventListener('click', myFavFunction, false);
}
Touch First
if (window.ontouchstart) {
myButton.addEventListener('touchstart', myFavFunction, false);
}
else {
myButton.addEventListener('click', myFavFunction, false);
}
if (window.navigator.msPointerEnabled) {
myButton.addEventListener('MSPointerDown', myFavFunction, false);
} else if ('ontouchstart' in document.documentElement) {
myButton.addEventListener('touchstart', myFavFunction, false);
}
else {
myButton.addEventListener('click', myFavFunction, false);
}
Polyfills…
• Hand.js - http://handjs.codeplex.com
• Polymer PointerEvents - http://github.com/polymer-project/PointerEvents
• Points.js - http://github.com/Rich-Harris/Points
demo
Scroll Snap
-ms-scroll-snap-type: mandatory;
-ms-scroll-snap-points-x: snapInterval(0px, 405px);
Content Zooming
-ms-content-zooming: zoom;
demo
What are LiveTiles?
<meta name="application-name" content="Josh Holmes"/>
<meta name="msapplication-TileColor" content="#f2a109"/>
<meta name="msapplication-square70x70logo" content="tiny.png"/>
<meta name="msapplication-square150x150logo" content="square.png"/>
<meta name="msapplication-wide310x150logo" content="wide.jpg"/>
<meta name="msapplication-square310x310logo" content="large.jpg"/>
<meta name="msapplication-notification" content="frequency=30;polling-
uri=http://foo.com/f&amp;id=1;polling-uri2=http://foo.com/f&amp;id=2;polling-
uri3=http://foo.com/f&amp;id=3;polling-uri4=http://foo.com/f&amp;id=4;polling-
uri5=http://foo.com/f&amp;id=5; cycle=1"/>
What’s the Feed Look Like?
<?xml version="1.0"?>
<tile>
<visual lang="en-US" version="2">
<binding fallback="TileSquareImage" branding="logo" template="TileSquare150x150Text04">
<text id="1">.NET Rocks Ireland</text>
</binding>
<binding fallback="TileWideImage" branding="logo" template="TileWide310x150ImageAndText01">
<image id="1" src="http://www.dotnetrocks.com/slices/carlrichard2.jpg"/>
<text id="1">.NET Rocks Ireland</text>
</binding>
<binding branding="logo" template="TileSquare310x310TextList02"
contentId="http://www.joshholmes.com/blog/?p=77168529">
<text id="1">.NET Rocks Ireland</text>
<text id="2">Freddy moment</text>
<text id="3">Tech Parenting</text>
</binding>
</visual>
</tile>
demo
What’s needed for Swipe Ahead?
<link rel="next" href="http://www.joshholmes.com/blog/page/2/" />
demo
Where’s IE11 now?
• Dev preview
• Win 8.1
• Windows 7 – Rease Preview
• New features
• F12 DevTools (like you just saw)
• UA string change
Site compatibility just works
• WebGL is awesome
• Evergreen updates
• More standards
• MoreGPU
• More awesomesauce
Wrapup
•http://modern.ie
•http://docs.webplatform.org/PointerEvents
•http://joshholmes.com
•@joshholmes
•josh.holmes@microsoft.com
TOUCH ME.
I DAREYOU…
Josh Holmes
@joshholmes
http://www.joshholmes.com
josh.holmes@microsoft.com

More Related Content

Viewers also liked

Scaling Big While Sleeping Well
Scaling Big While Sleeping WellScaling Big While Sleeping Well
Scaling Big While Sleeping WellJosh Holmes
 
Architecting RIAs with Silverlight
Architecting RIAs with SilverlightArchitecting RIAs with Silverlight
Architecting RIAs with SilverlightJosh Holmes
 
So you want to be an architect
So you want to be an architectSo you want to be an architect
So you want to be an architectJosh Holmes
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkJosh Holmes
 
Cloud becomingreality
Cloud becomingrealityCloud becomingreality
Cloud becomingrealityJosh Holmes
 
Mentorship by Josh Holmes - a KalamazooX talk
Mentorship by Josh Holmes - a KalamazooX talkMentorship by Josh Holmes - a KalamazooX talk
Mentorship by Josh Holmes - a KalamazooX talkJosh Holmes
 
Wordpress on Windows
Wordpress on WindowsWordpress on Windows
Wordpress on WindowsJosh Holmes
 

Viewers also liked (7)

Scaling Big While Sleeping Well
Scaling Big While Sleeping WellScaling Big While Sleeping Well
Scaling Big While Sleeping Well
 
Architecting RIAs with Silverlight
Architecting RIAs with SilverlightArchitecting RIAs with Silverlight
Architecting RIAs with Silverlight
 
So you want to be an architect
So you want to be an architectSo you want to be an architect
So you want to be an architect
 
BrazilJS Perf Doctor Talk
BrazilJS Perf Doctor TalkBrazilJS Perf Doctor Talk
BrazilJS Perf Doctor Talk
 
Cloud becomingreality
Cloud becomingrealityCloud becomingreality
Cloud becomingreality
 
Mentorship by Josh Holmes - a KalamazooX talk
Mentorship by Josh Holmes - a KalamazooX talkMentorship by Josh Holmes - a KalamazooX talk
Mentorship by Josh Holmes - a KalamazooX talk
 
Wordpress on Windows
Wordpress on WindowsWordpress on Windows
Wordpress on Windows
 

Similar to Touch me, I Dare You...

Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...
Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...
Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...Patrick Lauke
 
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Patrick Lauke
 
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Patrick Lauke
 
Getting Touchy Feely with the Web
Getting Touchy Feely with the WebGetting Touchy Feely with the Web
Getting Touchy Feely with the WebAndrew Fisher
 
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...Patrick Lauke
 
Fast multi touch enabled web sites
Fast multi touch enabled web sitesFast multi touch enabled web sites
Fast multi touch enabled web sitesAspenware
 
Tips for building fast multi touch enabled web sites
 Tips for building fast multi touch enabled web sites Tips for building fast multi touch enabled web sites
Tips for building fast multi touch enabled web sitesAspenware
 
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...Getting touchy - an introduction to touch and pointer events / Web Rebels / O...
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...Patrick Lauke
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsDevConFu
 
Multi Touch presentation
Multi Touch presentationMulti Touch presentation
Multi Touch presentationsenthil0809
 
Sperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copySperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copySalvatore Iaconesi
 
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Patrick Lauke
 
Bacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en JavascriptBacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en JavascriptRodolphe Belouin
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsPeter-Paul Koch
 
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Patrick Lauke
 
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Patrick Lauke
 

Similar to Touch me, I Dare You... (20)

Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...
Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...
Getting touchy - an introduction to touch and pointer events / TPAC 2016 / Li...
 
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
Getting touchy - an introduction to touch events / Sud Web / Avignon 17.05.2013
 
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
Getting touchy - an introduction to touch events / Webinale / Berlin 04.06.2013
 
Getting Touchy Feely with the Web
Getting Touchy Feely with the WebGetting Touchy Feely with the Web
Getting Touchy Feely with the Web
 
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...
Getting touchy - an introduction to touch events / Sainté Mobile Days / Saint...
 
Fast multi touch enabled web sites
Fast multi touch enabled web sitesFast multi touch enabled web sites
Fast multi touch enabled web sites
 
Tips for building fast multi touch enabled web sites
 Tips for building fast multi touch enabled web sites Tips for building fast multi touch enabled web sites
Tips for building fast multi touch enabled web sites
 
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...Getting touchy - an introduction to touch and pointer events (1 day workshop)...
Getting touchy - an introduction to touch and pointer events (1 day workshop)...
 
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...Getting touchy - an introduction to touch and pointer events / Web Rebels / O...
Getting touchy - an introduction to touch and pointer events / Web Rebels / O...
 
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer eventsPatrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
Patrick H. Lauke - Getting Touchy; an introduction to touch and pointer events
 
Multi Touch presentation
Multi Touch presentationMulti Touch presentation
Multi Touch presentation
 
Sperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copySperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copy
 
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
Getting touchy - an introduction to touch and pointer events / Frontend NE / ...
 
Pointer events
Pointer eventsPointer events
Pointer events
 
Bacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en JavascriptBacon.js — Gérer efficacement les flux de données en Javascript
Bacon.js — Gérer efficacement les flux de données en Javascript
 
Yahoo presentation: JavaScript Events
Yahoo presentation: JavaScript EventsYahoo presentation: JavaScript Events
Yahoo presentation: JavaScript Events
 
The touch events
The touch eventsThe touch events
The touch events
 
Touchevents
ToucheventsTouchevents
Touchevents
 
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
Getting touchy - an introduction to touch and pointer events / Workshop / Jav...
 
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
Getting touchy - an introduction to touch and pointer events / Sainté Mobile ...
 

More from Josh Holmes

Tips from a grizzled speaker
Tips from a grizzled speakerTips from a grizzled speaker
Tips from a grizzled speakerJosh Holmes
 
Is that a Rich Web in Your Pocket?
Is that a Rich Web in Your Pocket?Is that a Rich Web in Your Pocket?
Is that a Rich Web in Your Pocket?Josh Holmes
 
Cloud by Numbers
Cloud by NumbersCloud by Numbers
Cloud by NumbersJosh Holmes
 
Rev it up with php on windows
Rev it up with php on windowsRev it up with php on windows
Rev it up with php on windowsJosh Holmes
 
Microsoft Zend webcast on Azure
Microsoft Zend webcast on AzureMicrosoft Zend webcast on Azure
Microsoft Zend webcast on AzureJosh Holmes
 
Scaling WordPress on Microsoft
Scaling WordPress on MicrosoftScaling WordPress on Microsoft
Scaling WordPress on MicrosoftJosh Holmes
 
Wordpress On Windows
Wordpress On WindowsWordpress On Windows
Wordpress On WindowsJosh Holmes
 
Moving Enterprise Applications To The Cloud
Moving Enterprise Applications To The CloudMoving Enterprise Applications To The Cloud
Moving Enterprise Applications To The CloudJosh Holmes
 
Best And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and MicrosoftBest And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and MicrosoftJosh Holmes
 
The Lost Art of Simplicity
The Lost Art of SimplicityThe Lost Art of Simplicity
The Lost Art of SimplicityJosh Holmes
 
Architecture of RIA from JAOO
Architecture of RIA from JAOOArchitecture of RIA from JAOO
Architecture of RIA from JAOOJosh Holmes
 
Best And Worst Ria
Best And Worst RiaBest And Worst Ria
Best And Worst RiaJosh Holmes
 
Architecting For Ux
Architecting For UxArchitecting For Ux
Architecting For UxJosh Holmes
 

More from Josh Holmes (14)

Tips from a grizzled speaker
Tips from a grizzled speakerTips from a grizzled speaker
Tips from a grizzled speaker
 
Is that a Rich Web in Your Pocket?
Is that a Rich Web in Your Pocket?Is that a Rich Web in Your Pocket?
Is that a Rich Web in Your Pocket?
 
Cloud by Numbers
Cloud by NumbersCloud by Numbers
Cloud by Numbers
 
Rev it up with php on windows
Rev it up with php on windowsRev it up with php on windows
Rev it up with php on windows
 
Microsoft Zend webcast on Azure
Microsoft Zend webcast on AzureMicrosoft Zend webcast on Azure
Microsoft Zend webcast on Azure
 
Scaling WordPress on Microsoft
Scaling WordPress on MicrosoftScaling WordPress on Microsoft
Scaling WordPress on Microsoft
 
MODx on Windows
MODx on WindowsMODx on Windows
MODx on Windows
 
Wordpress On Windows
Wordpress On WindowsWordpress On Windows
Wordpress On Windows
 
Moving Enterprise Applications To The Cloud
Moving Enterprise Applications To The CloudMoving Enterprise Applications To The Cloud
Moving Enterprise Applications To The Cloud
 
Best And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and MicrosoftBest And Worst Practices Building Ria with Adobe and Microsoft
Best And Worst Practices Building Ria with Adobe and Microsoft
 
The Lost Art of Simplicity
The Lost Art of SimplicityThe Lost Art of Simplicity
The Lost Art of Simplicity
 
Architecture of RIA from JAOO
Architecture of RIA from JAOOArchitecture of RIA from JAOO
Architecture of RIA from JAOO
 
Best And Worst Ria
Best And Worst RiaBest And Worst Ria
Best And Worst Ria
 
Architecting For Ux
Architecting For UxArchitecting For Ux
Architecting For Ux
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Touch me, I Dare You...

  • 1. TOUCH ME. I DAREYOU… Josh Holmes @joshholmes http://www.joshholmes.com josh.holmes@microsoft.com
  • 2. Why does touch matter?
  • 3.
  • 4. What’s your strategy for dealing with touch? Ignore Retrofit Design for first
  • 5. Remember touch is touching… Don’t Use It Hover Sucks
  • 10. Design forTouch First • Design with hands and fingers in mind
  • 11. Remember there’s more than one finger
  • 12. Remember there’s more than type of input
  • 13.
  • 14.
  • 15. W3C Pointer Standard • http://www.w3.org/Submission/pointer-events/ • http://www.w3.org/TR/pointerevents/  pointerMove  pointerUp  pointerOver  pointerOut
  • 16. W3C Pointer Standard • http://www.w3.org/Submission/pointer-events/ • http://www.w3.org/TR/pointerevents/  pointermove  pointerup  pointerover  pointerout
  • 17. Event Models But not as a crutch!  pointermove  pointerup  pointerover  pointerout  pointercancel
  • 18. demo
  • 20. Code for multi-touch document.addEventListener(moveevent, moveTouchPoint, false); … function moveTouchPoint(e) { var pID = e.pointerId || 0; if (e.targetTouches) { for (var i = 0; i < event.targetTouches.length; i++) { iPD = e.targetTouches[i].identifier; if (touchPoints[pID]) { touchPoints[pID].x = e.targetTouches[i].clientX; touchPoints[pID].y = e.targetTouches[i].clientY; } } } else { if (touchPoints[pID]) { touchPoints[pID].x = e.clientX; touchPoints[pID].y = e.clientY; } } }
  • 21. Code for Pointer document.addEventListener(moveevent, moveTouchPoint, false); … function moveTouchPoint(e) { var pID = e.pointerId; if (touchPoints[pID]) { touchPoints[pID].x = e.clientX; touchPoints[pID].y = e.clientY; } }
  • 22. CurrentTouch support on IOS/Android… if ('ontouchstart' in document.documentElement) { myButton.addEventListener('touchstart', myFavFunction, false); } else { myButton.addEventListener('click', myFavFunction, false); }
  • 23. Touch First if (window.ontouchstart) { myButton.addEventListener('touchstart', myFavFunction, false); } else { myButton.addEventListener('click', myFavFunction, false); } if (window.navigator.msPointerEnabled) { myButton.addEventListener('MSPointerDown', myFavFunction, false); } else if ('ontouchstart' in document.documentElement) { myButton.addEventListener('touchstart', myFavFunction, false); } else { myButton.addEventListener('click', myFavFunction, false); }
  • 24. Polyfills… • Hand.js - http://handjs.codeplex.com • Polymer PointerEvents - http://github.com/polymer-project/PointerEvents • Points.js - http://github.com/Rich-Harris/Points
  • 25. demo
  • 26.
  • 29.
  • 30. demo
  • 31. What are LiveTiles? <meta name="application-name" content="Josh Holmes"/> <meta name="msapplication-TileColor" content="#f2a109"/> <meta name="msapplication-square70x70logo" content="tiny.png"/> <meta name="msapplication-square150x150logo" content="square.png"/> <meta name="msapplication-wide310x150logo" content="wide.jpg"/> <meta name="msapplication-square310x310logo" content="large.jpg"/> <meta name="msapplication-notification" content="frequency=30;polling- uri=http://foo.com/f&amp;id=1;polling-uri2=http://foo.com/f&amp;id=2;polling- uri3=http://foo.com/f&amp;id=3;polling-uri4=http://foo.com/f&amp;id=4;polling- uri5=http://foo.com/f&amp;id=5; cycle=1"/>
  • 32. What’s the Feed Look Like? <?xml version="1.0"?> <tile> <visual lang="en-US" version="2"> <binding fallback="TileSquareImage" branding="logo" template="TileSquare150x150Text04"> <text id="1">.NET Rocks Ireland</text> </binding> <binding fallback="TileWideImage" branding="logo" template="TileWide310x150ImageAndText01"> <image id="1" src="http://www.dotnetrocks.com/slices/carlrichard2.jpg"/> <text id="1">.NET Rocks Ireland</text> </binding> <binding branding="logo" template="TileSquare310x310TextList02" contentId="http://www.joshholmes.com/blog/?p=77168529"> <text id="1">.NET Rocks Ireland</text> <text id="2">Freddy moment</text> <text id="3">Tech Parenting</text> </binding> </visual> </tile>
  • 33. demo
  • 34.
  • 35. What’s needed for Swipe Ahead? <link rel="next" href="http://www.joshholmes.com/blog/page/2/" />
  • 36. demo
  • 37. Where’s IE11 now? • Dev preview • Win 8.1 • Windows 7 – Rease Preview • New features • F12 DevTools (like you just saw) • UA string change Site compatibility just works • WebGL is awesome • Evergreen updates • More standards • MoreGPU • More awesomesauce
  • 38.
  • 40. TOUCH ME. I DAREYOU… Josh Holmes @joshholmes http://www.joshholmes.com josh.holmes@microsoft.com

Editor's Notes

  1. RE: Actions should be reversible so users can safely explore. Example – swipe to select is reversible
  2. We’ve now submitted pointers as a standard specification to the W3C
  3. We’ve now submitted pointers as a standard specification to the W3C
  4. New Pointer Model proposed by MS with ie10 and windows 8 appLook for
  5. Show how easy to program for independent multi-touch: http://touch2.azurewebsites.net/water3.html
  6. Similar object formation to traditional event object, all same values in pointer event object but with moreProvides additional information
  7. Each touch point for iOS is buried in a collection, so we have to add an extra loop on each frame to identify each touch point and then position in tracking array
  8. Model in this case needs to know that current and previous locations of each touch point, so tracks in form of array based on pointerID
  9. So now lets upgrade our feature detection to consider pointers as well
  10. Show using two different input types at once: http://ie.microsoft.com/testdrive/Performance/BrickBreaker/
  11. http://touch2.azurewebsites.net/cssCarousel.htmlhttp://touch2.azurewebsites.net/cssZoom.html(can this be shown publicly? ) http://t.msn.com/
  12. http://touch2.azurewebsites.net/cssCarousel.htmlhttp://touch2.azurewebsites.net/cssZoom.html(can this be shown publicly? ) http://t.msn.com/
  13. http://touch2.azurewebsites.net/cssCarousel.htmlhttp://touch2.azurewebsites.net/cssZoom.html(can this be shown publicly? ) http://t.msn.com/