Share
Embed
Being Responsive — Intersystems Global Summit 2014
Presented at Intersystems Global Summit 2014
Talk about how we need to break free of our illusions and rewire our brains in order to build better, more future-friendly products.
Jason Grigsby
March 17, 2014
Transcript
246 slides
-
Technology Cycles - Wealth Creation / Destruction New Companies Often
Win Big in New Cycles While Incumbents Often Falter Mainframe Computing 1960s Personal Computing 1980s Desktop Internet Computing 1990s Mobile Internet Computing 2000s Mini Computing 1970s New Winners New Winners New Winners New Winners Note: Winners from 1950s to 1980s based on Fortune 500 rankings (revenue-based), desktop Internet winners based on wealth created from 1995 to respective peak market capitalizations. Source: FactSet, Fortune, Morgan Stanley Research. Microsoft Cisco Intel Apple Oracle EMC Dell Compaq Google AOL eBay Yahoo! Yahoo! Japan Amazon.com Tencent Alibaba Baidu Rakuten Digital Equipment Data General HP Prime Computervision Wang Labs IBM NCR Control Data Sperry Honeywell Burroughs 16 You could be disrupted. Source: http://www.morganstanley.com/institutional/techresearch/mobile_internet_report122009.html -
Content & Services Car sketch: http://www.flickr.com/photos/cloppy/5081768461/ HTML HTML HTML HTML
HTML HTML HTML HTML NATIVE NATIVE NATIVE -
Let’s say you’re going to build a separate site or
app for specific form factor. -
Lines between device classes are blurring Model Type Size Size
Display Resolution Resolution Viewport Viewport W H W H W H Samsung Galaxy Note 2 Phone 3.17” 5.95” 5.5” 720 1280 360 640 Motorola RAZR HD Phone 2.67” 5.19” 4.7” 720 1280 360 519 Motorola Atrix HD Phone 2.75” 5.26” 4.5” 720 1280 540 812 HTC Droid DNA Phone 2.78” 5.5” 5” 1080 1920 360 640 Nexus 7 Tablet 4.72” 7.81” 7” 800 1280 600 793 Kindle Fire Tablet 4.72” 7.44” 7” 600 1024 600 819 Kindle Fire HD Tablet 5.4” 7.6” 7” 800 1280 533 731 -
640 px 600 px 519 px 640 px 622 px
533 px 812 px Which are phones and which are tablets? -
Small screen assets Large screen assets Progressive enhancement based on
screen size Mobile First Responsive Web Design is a technical approach for responsible responsive designs. -
We often dismiss as unlikely the idea that someone will
want to use our service on a small screen. -
It’s fairly certain that the highest-value use will stay predominantly
on desktop. —Jakob Nielsen http://www.flickr.com/photos/dplanet/82899080/ -
Most complex tasks have vastly better user experience on the
desktop and thus will be performed there… Yes, you might enter a stock trade with your broker's mobile app, but you'll research new mutual funds on the desktop. —Jakob Nielsen -
80% during misc downtime 76% while waiting in lines 86%
while watching TV 69% for point of sale research http://www.flickr.com/photos/carbonnyc/5140154965 -
How many cars are sold through eBay’s iPhone app each
week? http://techcrunch.com/2011/10/09/ebay-vp-steve-yankovich-en-route-to-4b-in-gross-mobile-sales-tctv/ -
How many cars are sold through eBay’s iPhone app each
week? 2,600 http://techcrunch.com/2011/10/09/ebay-vp-steve-yankovich-en-route-to-4b-in-gross-mobile-sales-tctv/ -
In late 2008, after I had left the company, most
of the eBay Mobile team was laid off or re-assigned to other parts of the company. Executives wanted to focus on the “core” of the business, and eBay Mobile was evidently not considered “core”. —Alan Lewis, Original developer of eBay iPhone App http://alanlewis.typepad.com/weblog/2011/01/ebay-for-iphone-why-it-almost-didnt-happen.html -
But if there’s one thing I’ve learned in observing people
on their mobile devices, it’s that they’ll do anything on mobile if they have the need. Write long emails? Check. Manage complex sets of information? Check. And the list goes on. If people want to do it, they’ll do it on mobile -especially when it’s their only or most convenient option. —Luke Wroblewski lukew.com/ff/entry.asp?1333 -
http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats#mobile-only 25% of mobile web users in U.S. never or
infrequently access the desktop web. -
is difficult when we spend so much time on our
PCs. http://www.flickr.com/photos/goobi/4021009835/ -
Resize until the page looks bad then… BOOM! you need
a breakpoint. -
Major Breakpoint 1 (media query in document head) Major Breakpoint
3 (media query in document head) 320 px to 720 px wide 720 px to 1024 px major breakpoints Example major layout changes 320 720 Major Breakpoint 2 (media query in document head) nothing is here...but that’s ok! (P) = Portrait (L) = Landscape (L*) = Landscape w/ native viewport adaptation < 320 px wide and/or unable to understand further instructions 1024 iPhone (P) many Android (P) many BlackBerry S60 QWERTY Most S60 (L) S40 QWERTY some tablets most NetBooks many Desktops http://www.slideshare.net/yiibu/pragmatic-responsive-design -
Major Breakpoint 3 (media query in document head) iPhone (L*)
Android (L*) some Symbian touch (L) some tablets (L) some Symbian touch (L) 640 768 360 720 Major Breakpoint 1 (media query in document head) Major Breakpoint 2 (media query in document head) 720 px to 1024 px 320 px to 720 px wide nothing is here...but that’s ok! 320 minor breakpoints Example Symbian touch (P) (P) = Portrait (L) = Landscape (L*) = Landscape w/ native viewport adaptation iPhone (P) many Android (P) many BlackBerry S60 QWERTY Most S60 (L) S40 QWERTY < 320 px wide and/or unable to understand further instructions iPad (P) some Android tablets (P) Minor Breakpoint (@media) 1024 Minor Breakpoint (@media) Minor Breakpoint (@media) Minor Breakpoint (@media) 480 some tablets most NetBooks many Desktops content-related tweaks http://www.slideshare.net/yiibu/pragmatic-responsive-design -
iPhone (L*) Android (L*) some Symbian touch (L) some tablets
(L) Minor Breakpoint (@media) Major Breakpoint 3 (media query in document head) 480 640 768 360 Symbian touch (P) 720 Major Breakpoint 1 (media query in document head) Major Breakpoint 2 (media query in document head) 720 px to 1024 px 320 px to 720 px wide nothing is here...but that’s ok! 320 240 Minor Breakpoint for small devices w/media query support < 320 px wide and/or unable to understand further instructions ...and so on Example some Symbian touch (L) (P) = Portrait (L) = Landscape (L*) = Landscape w/ native viewport adaptation iPad (P) some Android tablets (P) 1024 TVs Minor Breakpoint (@media) Minor Breakpoint (@media) Minor Breakpoint (@media) iPhone (P) many Android (P) many BlackBerry S60 QWERTY Most S60 (L) S40 QWERTY some Android (P) many S40 (P) most S60 (P) some tablets most NetBooks many Desktops http://www.slideshare.net/yiibu/pragmatic-responsive-design -
as you can see, this has the potential to get
out of hand... iPhone (L*) Android (L*) some Symbian touch (L) some tablets (L) Minor Breakpoint (@media) some tablets (L) 640 768 360 Symbian touch (P) 720 Major Breakpoint 1 (media query in document head) Major Breakpoint 2 (media query in document head) TVs 720 px to 1024 px 320 px to 720 px wide nothing is here...but that’s ok! 320 240 Minor Breakpoint for small devices w/media query support some Android (P) many S40 (P) most S60 (P) < 320 px wide and/or unable to understand further instructions some Symbian touch (L) iPad (P) some Android tablets (P) Minor Breakpoints (@media) some tablets (L) 1280 800 Minor Breakpoint (@media) 600 some tablets (P) some tablets most NetBooks many Desktops 1366 many laptops Minor Breakpoint (@media) Minor Breakpoint (@media) Minor Breakpoint (@media) Major Breakpoint 3 (media query in document head) iPhone (P) many Android (P) many BlackBerry S60 QWERTY Most S60 (L) S40 QWERTY Minor Breakpoint (@media) 480 1024 http://www.slideshare.net/yiibu/pragmatic-responsive-design -
! download " view on github # view demo what
it is Pattern Lab is a collection of tools to help you create atomic design systems. pattern lab documentation about resources demo on github pattern lab atoms molecules organisms templates pages create atomic design systems -
mobile desktop THE ART OF WEB DEVELOPMENT THE ART OF
WEB DEVELOPMENT Web widgets THE ART OF WEB DEVELOPMENT THE ART OF WEB DEVELOPMENT Mobile widgets -
It’s not that we’re technically incapable, but adapting a phone
UI to a tablet UI is not so dissimilar from trying to automatically adapt desktop UI to a phone. They are fundamentally different platforms with different usability considerations, and something that makes sense on phones may or may not belong on tablets. —Todd Anglin, Kendo UI http://www.kendoui.com/blogs/teamblog/posts/12-09-11/universal_mobile_apps_with_html5_and_kendo_ui.aspx -
And keyboard and mouse are what we envision work is.
http://www.flickr.com/photos/royalsapien/2387707860 -
We’ve started letting go of some of our mistaken assumptions.
http://www.flickr.com/photos/paulocarrillo/124755065/ -
We can no longer make assumptions about input based on
screen size or form factor. And we probably never should have. -
but both Microsoft and Google have compelling voice input in
their products. -
Web Speech API Specification 19 October 2012 Editors: Glen Shires,
Google Inc. Hans Wennborg, Google Inc. Please refer to the errata for this document, which may include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. -
Please refer to the errata for this document, which may
include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult -
Please refer to the errata for this document, which may
include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult Please refer to the errata for this document, which may include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult -
Please refer to the errata for this document, which may
include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult Please refer to the errata for this document, which may include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult -
Please refer to the errata for this document, which may
include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events -
Please refer to the errata for this document, which may
include some normative corrections. Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events 5.1.4 SpeechRecognitionError 5.1.5 SpeechRecognitionAlternative 5.1.6 SpeechRecognitionResult Copyright © 2012 the Contributors to the Web Speech API Specification, published by the Speech API Community Group under the W3C Community Final Specification Agreement (FSA). A human-readable summary is available. Abstract This specification defines a JavaScript API to enable web developers to incorporate speech recognition and synthesis into their web pages. It enables developers to use scripting to generate text-to-speech output and to use speech recognition as an input for forms, continuous dictation and control. The JavaScript API allows web pages to control activation and timing and to handle results and alternatives. Status of This Document This specification was published by the Speech API Community Group. It is not a W3C Standard nor is it on the W3C Standards Track. Please note that under the W3C Community Final Specification Agreement (FSA) other conditions apply. Learn more about W3C Community and Business Groups. All feedback is welcome. Table of Contents 1 Conformance requirements 2 Introduction 3 Use Cases 4 Security and privacy considerations 5 API Description 5.1 The SpeechRecognition Interface 5.1.1 SpeechRecognition Attributes 5.1.2 SpeechRecognition Methods 5.1.3 SpeechRecognition Events -
Amazing, but too new to know what, if anything, this
technology will mean for the web. -
Let’s come back from the future and look at something
much Dumber. Dumber -
Hover state Typing easier for many No hover state Typing
often more difficult -
Higher precision with mouse means smaller targets possible Hover state
Less precise than mouse and requires larger touch targets Typing easier for many No hover state Typing often more difficult -
Higher precision with mouse means smaller targets possible Hover state
Less precise than mouse and requires larger touch targets Typing easier for many No hover state Typing often more difficult Right clicking and “power” tools Single and multi-touch gestures -
Whatever you may think, it currently isn't possible to reliably
detect whether or not the current device has a touchscreen, from within the browser. —Stu Cox, You Can’t Reliably Detect a Touch Screen http://www.stucox.com/blog/you-cant-detect-a-touchscreen/ -
Chrome has entertained idea of enabling touch by default. https://code.google.com/p/chromium/issues/detail?id=159527
https://docs.google.com/a/cloudfour.com/presentation/d/1-n1qyzewpagREbzW2zm0wOalq33UhbtbSkWf9mEdly8/edit#slide=id.gc2d80e5b_171 -
After poking at this problem for a few weeks, my
conclusion is: every desktop UI should be designed for touch now. When any desktop machine could have a touch interface, we have to proceed as if they all do. —Josh Clark http://globalmoxie.com/blog/desktop-touch-design.shtml -
http://ie.microsoft.com/testdrive/ieblog/2011/Sep/20_TouchInputforIE10andMetrostyleApps_1.png http://www.w3.org/TR/pointerevents/ http://blog.webplatform.org/2013/02/pointing-toward-the-future/ New Pointer Events spec normalizes touch and
mouse Pointer Events builds on the DOM event model to offer a new way to handle input on the web, enabling developers to build touch-first experiences that work with mouse, pen, and other pointing devices as well…They are also designed from the ground up to allow modern browsers to accelerate the touch-surface performance, leading to a smoother user experience. -
What about those who won’t let go of their “power”
interfaces? http://www.flickr.com/photos/ecos/4092571213/ -
Th Dream Experience - … Uploaded 2 years ago More
Of The Dream Exp… Uploaded 2 years ago The Dream Experience -… Uploaded 2 years ago The Dream Experience … Uploaded 2 years ago The Love King Breaks It… Uploaded 2 years ago War Paint for Trees From Lincoln Motor Company Join Log In Create Watch Upload Search s [ ] – VIDEOS Vimeo Couch Mode -
Couch Mode + See all Centric TV’s videos / Recently
viewed / Related videos Th Dream Experience - … Uploaded 2 years ago More Of The Dream Exp… Uploaded 2 years ago The Dream Experience -… Uploaded 2 years ago The Dream Experience … Uploaded 2 years ago The Love King Breaks It… Uploaded 2 years ago PROMOTED War Paint for Trees From Lincoln Motor Company Join Log In Create Watch Upload Search s [ ] – VIDEOS Vimeo Couch Mode -
Couch Mode + See all Centric TV’s videos / Recently
viewed / Related videos Th Dream Experience - … Uploaded 2 years ago More Of The Dream Exp… Uploaded 2 years ago The Dream Experience -… Uploaded 2 years ago The Dream Experience … Uploaded 2 years ago The Love King Breaks It… Uploaded 2 years ago PROMOTED War Paint for Trees From Lincoln Motor Company Join Log In Create Watch Upload Search s [ ] – VIDEOS Couch Mode + See all Centric TV’s videos / Recently viewed / Related videos Th Dream Experience - … Uploaded 2 years ago More Of The Dream Exp… Uploaded 2 years ago The Dream Experience -… Uploaded 2 years ago The Dream Experience … Uploaded 2 years ago The Love King Breaks It… Uploaded 2 years ago PROMOTED War Paint for Trees From Lincoln Motor Company Join Log In Create Watch Upload Search s [ ] – VIDEOS Vimeo Couch Mode -
The key benefit of this approach: You’re designing for user
need not for a specific form factor or input. -
Learn how to let go of the illusions that comfort
us. http://www.flickr.com/photos/garibaldi/303085857/ -
This is the web as it should be. As it
wants to be. The web in its natural state. http://www.flickr.com/photos/25062265@N06/6069101123 -
If you don’t adapt, then you are ripe for disruption.
http://www.flickr.com/photos/gsfc/7521155076/ -
Thank You! Special thanks to Luke Wroblewski, Eric Bidelman and
Flickr users for generously sharing their photos under creative commons license. Slides: http://bit.ly/grigs-intersystems14