<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0AMSH04cSp7ImA9WhRaFE0.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053</id><updated>2012-02-16T11:29:49.339-05:00</updated><category term="Twitter" /><category term="N-Trig" /><category term="Research" /><category term="Windows 8" /><category term="Byte tag" /><category term="display" /><category term="Data Entry" /><category term="metaphor" /><category term="tablet" /><category term="Virtual Earth" /><category term="Gestures" /><category term="Surface Toolkit" /><category term="UI" /><category term="Razorfish" /><category term="Comic" /><category term="Future" /><category term="holograph" /><category term="Brain" /><category term="Interview" /><category term="kinect" /><category term="Web" /><category term="Summary" /><category term="GUI" /><category term="OCGM" /><category term="mouse" /><category term="feedback" /><category term="MOADtouch" /><category term="Direct Interaction" /><category term="NES" /><category term="CHI10" /><category term="HDC" /><category term="Infostrat" /><category term="Presentation" /><category term="X-Desk" /><category term="Surface" /><category term="Bill Buxton" /><category term="Communication" /><category term="Applications" /><category term="Book" /><category term="NUI in .NET" /><category term="Courier" /><category term="Video" /><category term="Animation" /><category term="Concepts" /><category term="motion tracking" /><category term="Magic" /><category term="MOAD" /><category term="touch" /><category term="WIMP" /><category term="NUIMIXup" /><category term="Windows 7" /><category term="Manipulations" /><category term="Content" /><category term="mix11" /><category term="Blake.NUI" /><category term="NaturalShow" /><category term="CLI" /><category term="PrimeSense" /><category term="CRM" /><category term="MultitouchOnWindows" /><category term="objects" /><category term="UX" /><category term="NUI" /><category term="InfoStrat.VE" /><category term="WP7" /><category term="definition" /><category term="Emotion" /><category term="XUI" /><category term="Clicks" /><category term="Microsoft Surface" /><category term="MIX10" /><category term="Multitouch" /><category term="Open Source" /><category term="beta" /><category term="Richard Wand" /><category term="Mockup" /><category term="OpenKinect" /><category term="Taps" /><category term="trackpad" /><category term="history" /><category term="DuoSense" /><category term="VS2010" /><category term="Tools" /><category term="OfficeLabs" /><category term="Hardware" /><category term="deconstructing" /><category term="Vocabulary" /><category term="OpenNI" /><category term="Ciplex" /><category term="WPF" /><category term="SilverPac" /><category term="Demo" /><category term=".NET" /><category term="Silverlight" /><category term="Prototyping" /><category term="MIX" /><title>Deconstructing the NUI</title><subtitle type="html">The next evolution of computer interfaces is the Natural User Interface.  I analyze and discuss the NUI, multi-touch devices, and gestural interfaces.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://nui.joshland.org/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://nui.joshland.org/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DeconstructingTheNUI" /><feedburner:info uri="deconstructingthenui" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>DeconstructingTheNUI</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;A0UFQX0-cCp7ImA9WhdVEEo.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-1207318624288855255</id><published>2011-09-15T05:33:00.000-04:00</published><updated>2011-09-15T05:33:30.358-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-15T05:33:30.358-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Video" /><category scheme="http://www.blogger.com/atom/ns#" term="Hardware" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 8" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>Windows 8 on Microsoft Surface 1.0 (video)</title><content type="html">I've been neglecting this blog a bit since I'm trying to focus on finishing &lt;a href="http://bit.ly/NUIbook"&gt;my book&lt;/a&gt;, but I had to break my self-imposed radio silence to break this news:&lt;br /&gt;
&lt;br /&gt;
I installed Windows 8 on Microsoft Surface 1.0 hardware, and it works! By "it works", I mean the Microsoft Surface 1.0 shell and applications run as expected on Windows 8, and immersive-mode applications and regular desktop applications can be controlled using the Surface vision system touch input. &lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ADA1So-B39Q/TnGvxD4SIdI/AAAAAAAAAZQ/IXBl1CLp2vo/s1600/Win8+on+Surface.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/-ADA1So-B39Q/TnGvxD4SIdI/AAAAAAAAAZQ/IXBl1CLp2vo/s400/Win8+on+Surface.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Windows 8 Start screen working on Microsoft Surface 1.0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;I &lt;a href="https://twitter.com/#!/joshblake/status/114231178210459648"&gt;tweeted&lt;/a&gt; the above photo while video taping proof of this technical hackery. The &lt;a href="http://www.youtube.com/watch?v=8yUH5O_MSR8"&gt;video&lt;/a&gt; is embedded below:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="360" src="http://www.youtube.com/embed/8yUH5O_MSR8" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Yes, this is the Windows 8 that was released publicly only a little over a day ago. I did not have early access, so this is another 24 hour hack for me like &lt;a href="http://kinductor.codeplex.com/"&gt;Kinductor&lt;/a&gt; from the Kinect Code Camp, though it didn't take me a full 24 hours of straight effort.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;How did I do it?&lt;/span&gt;&lt;br /&gt;
Since Surface 1.0 is intended to run on Vista, the fact that any of this works is a testament to the backwards compatibility story of Windows 8. In short, I shrunk the Surface's Vista partition then installed Win 8 from USB key to the new partition (make it 40 GB minimum if you want to develop on it). The installer automatically set up dual booting, so I can boot back to Vista for the "correct" Surface 1.0 environment if I like. &lt;br /&gt;
&lt;br /&gt;
The tricky part was getting the Surface SDK (full version that comes on Surface, not the workstation edition) to install (edit the msi launch conditions using Orca) and then getting the inputs from the Surface vision inputs to drive the Windows 8 UIs. To do that I used &lt;a href="http://multitouchvista.codeplex.com/"&gt;MultiTouchVista,&lt;/a&gt; which&amp;nbsp;has a component that can connect to SurfaceInput.exe as a client as well as push touch data to an HID touch input driver. Windows 8 doesn't know it's not a capacitive touchscreen at all. (This technique also works for combining Windows 7 with Surface.) Win8 UI also won't be aware of tags or blobs but if you want to write a Surface application that uses those, just use the Surface SDK! Some other time I'll post a deep technical walkthrough, but &lt;a href="http://multitouchvista.codeplex.com/discussions/216086"&gt;this thread&lt;/a&gt; should be sufficient to get you started.&lt;br /&gt;
&lt;br /&gt;
All of the Surface hardware drivers and Surface applications run great. The immersive mode touch responsiveness is a bit flaky as you can see in the video, but this could have been any number of things from the MultiTouchVista plug-ins to the Win8 touch stack to the Start screen. The Win8 touch visualizations (trails and auras) were always working fine, so I'm leaning towards the problem being in the Win8 UI layer. This is a pre-beta build though, so entirely understandable.&lt;br /&gt;
&lt;br /&gt;
I do need to say that this configuration is completely unsupported and would probably violate the warranty if it wasn't already expired for this particular machine. It also has nothing to do with Surface 2.0. You won't ever see Microsoft create a configuration like this for general use since running three shells (Surface, Immersive, and Desktop) side-by-side would be entirely confusing for real users. In the video I was basically in the equivalent of Surface administrator mode, manually running SurfaceShell.exe, and then switching ad-hoc into immersive mode, which is like a full screen start menu. There are too many competing metaphors and modes for this configuration to be used by the general public. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-large;"&gt;Does Immersive mode make the Surface shell obsolete?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
No way. It makes the Surface shell even more important. My initial impressions with actually using the Win8 immersive mode on Surface is that it really doesn't work for a large, horizontal, multi-user form factor. For one, everything is oriented in one direction, and two, I need to reach too far to get to certain interface elements across the table. That's the opposite of the ergonomic intent of the immersive mode, which was design for smaller screens and slates. It might do better on a vertical wall-mounted form factor. There is definitely a place here for both Immersive mode as well as the Surface shell since they are each designed to do different things in different scenarios.&amp;nbsp;This is especially true if we account for the improved Surface shell that is coming soon with Surface 2.0 hardware.&lt;br /&gt;
&lt;br /&gt;
I think we'll see that there will is a large difference between the design of an immersive mode application to run on a Slate or PC and used by one person, and the design of Microsoft Surface applications to be used by multiple people in a 360 degree interface.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;What Surface and Win8 can learn from each other&lt;/span&gt;&lt;br /&gt;
Even though the designs for each of these modalities need to be different, there is a lot that they can learn from each other. I really like swiping in from the edge to open the charms and app bars, and could see that being incorporated into the version of Surface after 2.0. Windows 8 isn't perfect though, since&amp;nbsp;as soon as there is an extra finger somewhere in immersive mode, the whole interaction breaks down. &lt;br /&gt;
&lt;br /&gt;
It may just be the developer bits, but many or most of the Win8 sample games were almost unusable as a Surface application. My 3 year old tried to play&amp;nbsp;a few with me but we kept getting in each others way&amp;nbsp;since the games were designed for a single orientation. Worse than that,&amp;nbsp;my touches would block her from interacting with the game, and vice versa. Some of the interns that developed those samples apparently did not account for multiple types of input (mouse and touch) or even multi-touch at all, indicating they were still thinking about coding interactions from a single-point mouse point-of-view.&lt;br /&gt;
&lt;br /&gt;
I know that on slates and PCs with a single user they may not need to plan for a full 360 degree interface, but Windows 8 developers need to learn the lessons that Microsoft Surface developers have learned years ago about allowing multiple inputs, multiple touches, and letting the user recover from mental mistakes and accidental touches. &lt;br /&gt;
&lt;br /&gt;
Watching the Windows 8 unveiling during the&amp;nbsp;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/KEY-0001"&gt;Build Day 1 keynote&lt;/a&gt; was somewhat amazing for&amp;nbsp;me because all of a sudden NUI design and development skills (my focus since 2008) has gone from a small niche to a core requirement for the Windows platform. Anyone interested in building truly great Windows 8 applications needs take an active interest in learning from Surface developers. I'm expecting that some of my colleagues in the Surface community will end up coming up with the most amazing Windows 8 applications in no time at all. (Feel free to send those apps to me for testing on my FrankenSurface Window 8 machine!)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Natural User Interfaces in .NET&lt;/span&gt;&lt;br /&gt;
&lt;a href="http://bit.ly/NUIbook" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_X33DmaaF8aA/TTfHt6M9FqI/AAAAAAAAAWE/8SHtzJKsQpM/Blake-NUInterfaces_thumb%5B1%5D.jpg" width="257" /&gt;&lt;/a&gt;While at first I was nervous that the Windows 8 announcements would make my almost-complete book a waste, now that I think about it things are still pretty good. If you want to use the premier technology for creating Natural User Intefaces, then .NET and WPF is still the way to go. You can't target Surface or Kinect in immersive mode, and the immersive mode interface isn't well suited for multiple people. You also have to consider that Windows 8 is still six months to a year away, but you can develop NUIs for Windows 7 multitouch, Surface, and Kinect today with WPF. You can even give them a metro look-and-feel.&lt;br /&gt;
&lt;br /&gt;
If this interests you and you haven't already, take a look at the &lt;a href="http://bit.ly/NUIbook"&gt;free sample chapter&lt;/a&gt; of my book, and if you like it pre-order it and get the early access PDF today with all of the completed chapters.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-1207318624288855255?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=h09E4_-NnAU:Yfrquvsdh3I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=h09E4_-NnAU:Yfrquvsdh3I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=h09E4_-NnAU:Yfrquvsdh3I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=h09E4_-NnAU:Yfrquvsdh3I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/h09E4_-NnAU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/1207318624288855255/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/09/windows-8-on-microsoft-surface-10-video.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1207318624288855255?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1207318624288855255?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/h09E4_-NnAU/windows-8-on-microsoft-surface-10-video.html" title="Windows 8 on Microsoft Surface 1.0 (video)" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ADA1So-B39Q/TnGvxD4SIdI/AAAAAAAAAZQ/IXBl1CLp2vo/s72-c/Win8+on+Surface.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://nui.joshland.org/2011/09/windows-8-on-microsoft-surface-10-video.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYEQnY8fyp7ImA9WhZQEUo.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-102734268051909109</id><published>2011-04-18T13:54:00.001-04:00</published><updated>2011-04-18T19:41:43.877-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-18T19:41:43.877-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mix11" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><title>Official Kinect SDK to be Open Source</title><content type="html">&lt;p&gt;Microsoft had &lt;a href="http://research.microsoft.com/en-us/news/features/kinectforwindowssdk-022111.aspx"&gt;previously announced&lt;/a&gt; its plans to make the Kinect for Windows SDK available this Spring, initially for non-commercial use and later for commercial use. At the MIX11 conference this past week during the day 2 keynote (starting at the 1:40:10 mark of &lt;a href="http://channel9.msdn.com/Events/MIX/MIX11/KEY02"&gt;the video&lt;/a&gt;) they reiterated this plan and gave a few more details, including support for C++, C#, and VB development. They did not mention it explicitly but they used WPF during the live coding demonstration. &lt;/p&gt;  &lt;p&gt;On day 3, several Kinect and Microsoft Research (MSR) presented a panel Q&amp;amp;A session. At 26:05 of the &lt;a href="http://channel9.msdn.com/Events/MIX/MIX11/res05"&gt;Kinect panel video&lt;/a&gt;, I introduced myself as the founder of the OpenKinect community and asked whether they had considered embracing the open source Kinect movement started by this community, which has lead to hundreds of Kinect Hacks around the world, by open sourcing their code.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="KristinTolle" border="0" alt="KristinTolle" align="left" src="http://lh4.ggpht.com/_X33DmaaF8aA/Tax6z3g4gxI/AAAAAAAAAWk/GqOr2Ss_aLA/KristinTolle%5B3%5D.png?imgmax=800" width="165" height="165" /&gt;To my surprise, &lt;a href="http://research.microsoft.com/en-us/people/ktolle/"&gt;Dr. Kristin Tolle&lt;/a&gt;, Director of MSR’s Natural User Interface team, responded that they will be publishing the Kinect SDK as open source! She referenced earlier discussion about embracing and enabling the community to take what Microsoft has created and using it in new ways and mentioned that MSR has a history of releasing open source SDKs.&lt;/p&gt;  &lt;p&gt;When I returned to my seat, another MSR researcher approached me and suggested that Kristin may have misunderstood my question or had misspoken; however, I followed up with Kristin afterwards and reconfirmed that she meant open source as in the public can modify and recompile the sources as well as share the modifications. She also emphasized that they want to enable people to share modifications and enhancements.&lt;/p&gt;  &lt;p&gt;This is great news!&lt;/p&gt;  &lt;p&gt;It is not clear yet what type of license they will use. If the license allows modification and redistribution but is, at least initially, limited to non-commercial use, then it would not be a standard open source license according to the &lt;a href="http://www.opensource.org/osd.html"&gt;Open Source Definition&lt;/a&gt;. Looking at other projects published by MSR, I could see them choosing the &lt;a href="http://singularity.codeplex.com/license"&gt;MSR-LA&lt;/a&gt; as used by the Singularity experimental OS.&lt;/p&gt;  &lt;p&gt;I’ll restate here that Microsoft has on multiple occasions confirmed that a commercial license will be available at a date after the initial non-commercial release. The ideal scenario would be if they switched from MSR-LA to a true open source license and set up a collaborative project between MSR, Kinect team, and the open community styled after the successful &lt;a href="http://nuget.codeplex.com/"&gt;Nuget project&lt;/a&gt;, which uses the Apache 2 license and includes Microsoft and non-Microsoft contributors.&lt;/p&gt;  &lt;p&gt;Considering the reaction by the other MSR researcher to this open source statement, there may be some confusion internally about whether this will happen like this. I think the best thing that we as a community can do is to express support for Microsoft open sourcing the Kinect for Windows SDK (including the skeleton tracking and training components), even if they use a non-commercial license initially, and keep the pressure on them to create a better relationship with the open community and transition to a Nuget style collaboration with a liberal license such as Apache 2.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Update 4/18 7:34pm:&lt;/strong&gt; Mary Jo Foley picks up this story, but the Microsoft spokesperson she talked to &lt;a href="http://www.zdnet.com/blog/microsoft/false-alarm-microsoft-says-is-not-open-sourcing-the-kinect-software-development-kit/9228"&gt;denied that the Kinect SDK will be open source&lt;/a&gt;. As she notes, Microsoft has pulled 180’s before regarding Kinect. After spokespeople initially were hostile to the idea of Kinect hacking, Xbox executives later embraced the idea that people are using Kinect for non-gaming purposes on the PC. Let’s hope Microsoft stays open to this idea.&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-102734268051909109?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=L9dfcM9K_zs:VQcns27IOtQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=L9dfcM9K_zs:VQcns27IOtQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=L9dfcM9K_zs:VQcns27IOtQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=L9dfcM9K_zs:VQcns27IOtQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/L9dfcM9K_zs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/102734268051909109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/04/official-kinect-sdk-to-be-open-source.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/102734268051909109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/102734268051909109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/L9dfcM9K_zs/official-kinect-sdk-to-be-open-source.html" title="Official Kinect SDK to be Open Source" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_X33DmaaF8aA/Tax6z3g4gxI/AAAAAAAAAWk/GqOr2Ss_aLA/s72-c/KristinTolle%5B3%5D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://nui.joshland.org/2011/04/official-kinect-sdk-to-be-open-source.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIBRH84cCp7ImA9WhZSGUs.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-2565596157128952478</id><published>2011-04-04T21:55:00.001-04:00</published><updated>2011-04-04T21:55:55.138-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-04T21:55:55.138-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mix11" /><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="NUIMIXup" /><title>NUI at MIX11</title><content type="html">&lt;p&gt;It's only a week away from &lt;a href="http://live.visitmix.com"&gt;MIX11&lt;/a&gt; and I'm very excited. NUI will be represented even more than last year. Here’s a run down of all the NUI events I’m aware of:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Monday, April 11          &lt;br /&gt;6-9pm           &lt;br /&gt;Ballroom D           &lt;br /&gt;&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://live.visitmix.com/OpenSourceFest"&gt;Open Source Fest&lt;/a&gt;           &lt;br /&gt;A showcase of 52 open source projects, including InfoStrat.MotionFx, our project for integrating Kinect with WPF 4 Touch.           &lt;br /&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Tuesday, April 12          &lt;br /&gt;2-3pm           &lt;br /&gt;Lagoon H&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://channel9.msdn.com/events/mix/mix11/DVC07"&gt;A Whole NUI World: Microsoft Surface 2 and Windows Touch&lt;/a&gt;           &lt;br /&gt;by Luis Cabrera of the Surface team. Luis will get everyone up to speed about developing with Surface SDK for Surface 2 and Windows 7 touch devices.           &lt;br /&gt;&amp;#160; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Tuesday, April 12          &lt;br /&gt;3-4pm           &lt;br /&gt;Lagoon H&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://channel9.msdn.com/events/mix/mix11/OPN09"&gt;The Microsoft Surface MVPs Present: Natural User Interfaces, Today and Tomorrow; An Interactive Discussion and Demonstration&lt;/a&gt;           &lt;br /&gt;by me and the rest of the Surface MVPs. We will have several cool demos for Surface 2 and Kinect.           &lt;br /&gt;          &lt;br /&gt;(This is the open call session I submitted and voted in by the community. Thanks!)           &lt;br /&gt;&amp;#160; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Tuesday, April 12          &lt;br /&gt;7-9pm           &lt;br /&gt;Lobby in front of The Commons&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://twtvite.com/NUIMIXup11"&gt;NUI MIXup at MIX11&lt;/a&gt;           &lt;br /&gt;NUI MIXup is back! RSVP at the link above. &lt;a href="http://nui.joshland.org/2010/03/mix10-nui-recap.html"&gt;Last year’s&lt;/a&gt; NUI MIXup was a great success. Frank La Vigne, a Microsoft Public Sector Developer Evangelist, will be sponsoring drinks and appetizers for the group. I hope to see you there!           &lt;br /&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Wednesday, April 13          &lt;br /&gt;11:30-12:30pm           &lt;br /&gt;Lagoon H&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://channel9.msdn.com/events/MIX/MIX11/RES01"&gt;Audio for Kinect: From Idea to &amp;quot;Xbox, Play!&amp;quot;&lt;/a&gt;           &lt;br /&gt;by Ivan Tashev of Microsoft Research, the man behind Kinect’s audio processing algorithms.           &lt;br /&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;Thursday, April 14          &lt;br /&gt;12-1pm           &lt;br /&gt;Lagoon H&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://channel9.msdn.com/events/MIX/MIX11/RES05"&gt;Interactive Panel: Kinect and Natural User Interfaces (NUI)&lt;/a&gt;           &lt;br /&gt;A panel featuring luminaries from Microsoft Research talking about Kinect           &lt;br /&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;April 12-14          &lt;br /&gt;Breakers L&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://live.visitmix.com/MIX11/Sessions/Tagged/UX-Lightning"&gt;UX Lightning Sessions&lt;/a&gt;           &lt;br /&gt;Three UX Lightning sessions, each with four speakers. Not purely NUI, but probably still of interest to most NUI enthusiasts.           &lt;br /&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="143"&gt;April 12-14          &lt;br /&gt;Shorelines A&lt;/td&gt;        &lt;td valign="top" width="257"&gt;&lt;a href="http://live.visitmix.com/Network"&gt;The Connect Lounge&lt;/a&gt;           &lt;br /&gt;Microsoft Research and Coding4Fun will be showing off some cool NUI and Kinect projects.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I can’t say where yet, but InfoStrat will also have a presence with some of our demos. I’m also hearing rumors of some things that might be announced during the keynotes, but we’ll just have to wait and see.&lt;/p&gt;  &lt;p&gt;If you’re looking for me at MIX11, the best way is to check my twitter stream &lt;a href="http://twitter.com/joshblake"&gt;@joshblake&lt;/a&gt; or send me a mention. You can also email me joshblake atgmail com.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_X33DmaaF8aA/TZp2qbtq5LI/AAAAAAAAAWU/MIHtZCDk4ek/s1600-h/MIX11_BB_SeeYouAt_2%5B23%5D.gif"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="MIX11_BB_SeeYouAt_2" border="0" alt="MIX11_BB_SeeYouAt_2" src="http://lh4.ggpht.com/_X33DmaaF8aA/TZp2qkLnSAI/AAAAAAAAAWY/M8fUoPC4wpw/MIX11_BB_SeeYouAt_2_thumb%5B21%5D.gif?imgmax=800" width="244" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-2565596157128952478?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=fBY9e5ZZp9c:hwHu1Y9KQr4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=fBY9e5ZZp9c:hwHu1Y9KQr4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=fBY9e5ZZp9c:hwHu1Y9KQr4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=fBY9e5ZZp9c:hwHu1Y9KQr4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/fBY9e5ZZp9c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/2565596157128952478/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/04/nui-at-mix11.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2565596157128952478?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2565596157128952478?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/fBY9e5ZZp9c/nui-at-mix11.html" title="NUI at MIX11" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_X33DmaaF8aA/TZp2qkLnSAI/AAAAAAAAAWY/M8fUoPC4wpw/s72-c/MIX11_BB_SeeYouAt_2_thumb%5B21%5D.gif?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2011/04/nui-at-mix11.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IAQ3c-cCp7ImA9Wx9VEU4.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-2134443884816415042</id><published>2011-01-27T03:31:00.001-05:00</published><updated>2011-01-27T09:45:42.958-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T09:45:42.958-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mix11" /><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX" /><title>MIX11 Open Call Surface and NUI Sessions</title><content type="html">&lt;p&gt;MIX is a great conference that focuses on development, design, and upcoming technology trends. Last year, MIX started an “Open Call for Content” where the general public was invited to submit sessions and the general public voted to decide which sessions would be given actual spots during the conference. The Open Call sessions can be about any topic the community desires to hear and they augment the Microsoft sessions that make up the meat of the conference.&lt;/p&gt;  &lt;p&gt;This year Open Call is back and there are 228% increase in proposals! Out of 384 entries, they posted 207 sessions. I read through every single one yesterday and expected to see some great sessions and some mediocre sessions, but to my surprise almost every single session sounds fantastic. MIX11 is going to have some great content.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/18"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="300x250_Mix11_011011_US_b" border="0" alt="300x250_Mix11_011011_US_b" align="left" src="http://lh4.ggpht.com/_X33DmaaF8aA/TUEteXZ5KlI/AAAAAAAAAWM/nxE1AmAl4bs/300x250_Mix11_011011_US_b%5B3%5D.gif?imgmax=800" width="244" height="204" /&gt;&lt;/a&gt;Last year, I was fortunate enough to be one of 12 MIX10 Open Call sessions. I presented “Developing Natural User Interfaces with Microsoft Silverlight and WPF 4 Touch [and Windows Phone 7]”. (Read my &lt;a href="http://nui.joshland.org/2010/03/mix10-nui-recap.html" target="_blank"&gt;MIX10 recap&lt;/a&gt;.) My session was one of three that focused on NUI, multi-touch, or Surface topics.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This year there are &lt;strike&gt;8&lt;/strike&gt; 9 entries about Surface or NUI and I’m hoping several will be picked. I’m organizing a panel session featuring the Microsoft Surface MVPs, some interesting discussion, and some cool demos. You can vote for up to 10 sessions, so please consider including the Surface MVP panel and any of the other NUI sessions that sound interesting to you in your voting.&lt;/p&gt;  &lt;h3&gt;&lt;font color="#000000"&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/18"&gt;The Microsoft Surface MVPs present: Natural User Interfaces, Today and Tomorrow; an interactive discussion and demonstration&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font style="font-weight: bold" color="#000000"&gt;Joshua Blake; Neil Roodyn; Dennis Vroegop; Rick Barraza; Bart Roozendaal; Josh Santangelo; Nicolas Calvi&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;The Natural User Interface (NUI) is a hot topic that generates a lot of excitement, but there are only a handful of companies doing real innovation with NUIs and most of the practical experience in the NUI style of design and development is limited to a small number of experts. The Microsoft Surface MVPs are a subset of these experts that have extensive real-world experience with Microsoft Surface and other NUI devices.This session is a panel featuring the Microsoft Surface MVPs and an unfiltered discussion with each other and the audience about the state of the art in NUI design and development. We will share our experiences and ideas, discuss what we think NUI will look like in the near future, and back up our statements with cutting-edge demonstrations prepared by the panelists involving combinations of Microsoft Surface 2.0, Kinect, and Windows Phone 7.&lt;/p&gt;    &lt;p&gt;[&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/18"&gt;Vote for this session here!&lt;/a&gt;]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I also want to highlight my InfoStrat colleague Josh Wall’s entry, which should be very interesting.&lt;/p&gt;  &lt;h3&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/195"&gt;Microsoft Surface at the Smithsonian – 30 seconds to Magic&lt;/a&gt;&lt;font size="2"&gt;&lt;font style="font-weight: bold" color="#000000"&gt;Josh Wall&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;How do you design a Microsoft Surface application that creates a magical experience in less than thirty seconds, uses real-world physical objects, and is both fun and educational for kids? That is quite a task, but oh yeah – you need to build seven of these magical applications that are distinct yet connected by a common theme. This was the challenge presented to InfoStrat, a Surface Strategic Partner in Washington DC, by the Smithsonian Institution. This session will explore the design and development process that went into building the innovative physical object interactions for a suite of Microsoft Surface applications used in the “Wonder of Light: Touch and Learn!” exhibit at the Smithsonian Institution in Washington, DC. Josh Wall, director of the InfoStrat Advanced Technology Group, will demonstrate and analyze five different types of physical object interactions that take advantage of the unique vision system in Microsoft Surface. He will also discuss lessons learned from the experience, including designing Surface applications for kids, when to use a linear or non-linear task path, and how to apply Natural User Interface (NUI) concepts to interactive museum exhibits.&lt;/p&gt;    &lt;p&gt;[&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/195"&gt;Vote for this session here!&lt;/a&gt;]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here are the other NUI sessions:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/161"&gt;Microsoft Surface v2 – designing for the new form factor&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Josh Santangelo&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/153"&gt;Building Really Social Software&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Neil Roodyn&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/151"&gt;Wave, Touch, Pen, Speech, Mouse and Keyboard&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Neil Roodyn&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/152"&gt;How to build a great Microsoft Surface application&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Neil Roodyn&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/154"&gt;How NUI can help to perform complex tasks, like flying a helicopter&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Bart Roozendaal&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/120"&gt;Understanding the Metro design language – from Zune to mobile to Microsoft Surface and beyond&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Nathan Moody&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;[Update 1/27 9:40am: I overlooked the following session! Sorry Davide!]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.visitmix.com/OpenCall/Vote/Session/207"&gt;Silverlight, Windows Phone 7, Multi-touch and Natural User Interfaces&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;Davide Zordan&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are also many other interesting topics, but I hope you’ll help vote in the NUI and Surface sessions. The MIX content team takes into account the popularity of various topics. (For example, last year they accepted 12 Open Call sessions when they were originally planning only 10.)&lt;/p&gt;  &lt;p&gt;Voting is open until midnight PST on February 4th, so lock in your votes now!&lt;/p&gt;  &lt;p&gt;P.S. Here is a really nifty pivot viewer for visualizing and filtering the Open Call entries: &lt;a title="http://www.xpert360.net/MIX11/" href="http://www.xpert360.net/MIX11/"&gt;http://www.xpert360.net/MIX11/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-2134443884816415042?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=r5z6R01SNy0:5b7lJ8fUcf0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=r5z6R01SNy0:5b7lJ8fUcf0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=r5z6R01SNy0:5b7lJ8fUcf0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=r5z6R01SNy0:5b7lJ8fUcf0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/r5z6R01SNy0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/2134443884816415042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/01/mix11-open-call-surface-and-nui.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2134443884816415042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2134443884816415042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/r5z6R01SNy0/mix11-open-call-surface-and-nui.html" title="MIX11 Open Call Surface and NUI Sessions" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_X33DmaaF8aA/TUEteXZ5KlI/AAAAAAAAAWM/nxE1AmAl4bs/s72-c/300x250_Mix11_011011_US_b%5B3%5D.gif?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2011/01/mix11-open-call-surface-and-nui.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IBSHwyeyp7ImA9Wx9WFU0.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-3589152022295780725</id><published>2011-01-20T00:27:00.001-05:00</published><updated>2011-01-20T00:32:39.293-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-20T00:32:39.293-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="NUI in .NET" /><category scheme="http://www.blogger.com/atom/ns#" term="MultitouchOnWindows" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="Book" /><title>Natural User Interfaces in .NET book update</title><content type="html">&lt;p&gt;Today Manning pushed out a new update to my book’s MEAP (early access Ebook). This is the first update in quite a while, and that’s because I’ve been secretly updating chapters and writing new chapters that include NDA content. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: please read through to the end of this post for a 50% off coupon for my book good until February 20, 2011.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The secret NDA content is about the future of the Surface platform and Surface SDK. Now that Surface 2.0 &lt;a href="http://nui.joshland.org/2011/01/microsoft-surface-20-data-visualization.html" target="_blank"&gt;has been announced&lt;/a&gt;, I can start talking about it and pushing out the non-NDA content. You’ll notice in this update an updated table of contents and a new title, Natural User Interfaces in .NET, to reflect the reorganized content and focus. Here is the new cover:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_X33DmaaF8aA/TTfHtWRKNHI/AAAAAAAAAWA/bdvxjztmGS0/s1600-h/Blake-NUInterfaces%5B4%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Blake-NUInterfaces" border="0" alt="Blake-NUInterfaces" src="http://lh4.ggpht.com/_X33DmaaF8aA/TTfHt6M9FqI/AAAAAAAAAWE/8SHtzJKsQpM/Blake-NUInterfaces_thumb%5B1%5D.jpg?imgmax=800" width="389" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Based upon reader and reviewer feedback and the announcement of Surface 2.0 and Kinect, we decided to focus the book on the WPF 4 platform with Surface SDK 2.0. The combination of WPF 4 and Surface SDK 2.0 makes the most advanced NUI platform available that targets a wide variety of devices, form factors, and NUI input technologies. Surface SDK 2.0 is the successor to both Surface Toolkit and Surface SDK 1.0 and will run on any Windows 7 machine, including desktops, tablets, slates, and Surface 2.0 units.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve also decided to include Kinect content because I have determined that we can use the same WPF 4 and Surface SDK 2.0 platform to target depth sensing camera interfaces as well. In early experiments, I have injected &lt;a href="http://nui.joshland.org/2011/01/kinect-hand-tracking-with-wpf-4-and.html" target="_blank"&gt;hand tracking&lt;/a&gt; and hand pose information into the WPF 4 touch stack and can control any WPF 4 touch interface with my hands. Using this unified NUI platform, you can write a single interface that users can use with all of the Windows 7 multi-touch devices, Surface 2.0, as well as Kinect and similar depth sensors.&lt;/p&gt;  &lt;p&gt;Of course, you are going to want to design the interface differently based upon which input device your application is using. For example, Surface lets you detect tagged objects and finger orientation and hand tracking depth sensors can give you extra information on hand poses and gestures. That’s why I’ve organized the book into the three parts:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Part 1: Introducing NUI Concepts       &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;What developers need to know about NUI design&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Part 2: Learning WPF Touch and Surface SDK&lt;/strong&gt;      &lt;br /&gt;&lt;em&gt;A unified NUI platform&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Part 3: Building great experiences       &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;How to take advantage of the unique capabilities of your input devices&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I still have a few more chapters to complete, but the content complete milestone is in sight. I’ve been getting great feedback from my MEAP subscribers and continue to make improvements based upon feedback. (Anyone who pre-orders the eBook or print book is also subscribed to MEAP updates and can read the completed chapters as they become ready.)&lt;/p&gt;  &lt;p&gt;If you haven’t pre-ordered my book yet, you can buy the eBook or print book (and get the MEAP for free) for &lt;strong&gt;50% off&lt;/strong&gt; until February 20, 2011. All you need to do is enter in coupon code &lt;strong&gt;multinet50&lt;/strong&gt; during checkout. If you buy it directly after clicking &lt;a href="http://bit.ly/nuibook" target="_blank"&gt;this link&lt;/a&gt;, Manning will give me a couple extra bucks and I would appreciate it. You can also download a free sample chapter and the sample code from that link.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-3589152022295780725?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=QN6uJ5oZc0w:WeSjeJFbKto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=QN6uJ5oZc0w:WeSjeJFbKto:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=QN6uJ5oZc0w:WeSjeJFbKto:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=QN6uJ5oZc0w:WeSjeJFbKto:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/QN6uJ5oZc0w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/3589152022295780725/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/01/natural-user-interfaces-in-net-book.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3589152022295780725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3589152022295780725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/QN6uJ5oZc0w/natural-user-interfaces-in-net-book.html" title="Natural User Interfaces in .NET book update" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_X33DmaaF8aA/TTfHt6M9FqI/AAAAAAAAAWE/8SHtzJKsQpM/s72-c/Blake-NUInterfaces_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://nui.joshland.org/2011/01/natural-user-interfaces-in-net-book.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4ESXg_fyp7ImA9Wx9WFEw.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-9211687882314044767</id><published>2011-01-18T23:55:00.000-05:00</published><updated>2011-01-18T23:55:08.647-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-18T23:55:08.647-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenKinect" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><title>OpenKinect: Creating next-generation interfaces, Jan 20, Arlington, VA</title><content type="html">This Thursday, January 20 at 7pm I'll be presenting at the CapArea.NET &lt;a href="http://www.caparea.net/Default.aspx?alias=www.caparea.net/silverlight"&gt;Silverlight SIG&lt;/a&gt; in Arlington, VA. If you're in the area, please come by.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Navy League Building&lt;/strong&gt;&lt;br /&gt;
First Floor Conference Room &lt;br /&gt;
2300 Wilson Blvd&lt;br /&gt;
Arlington, VA &lt;br /&gt;
[&lt;a href="http://www.bing.com/maps/?v=2&amp;amp;cp=38.890835999999986~-77.08668999999997&amp;amp;lvl=17&amp;amp;sty=r&amp;amp;where1=2300%20Wilson%20Blvd%2C%20Arlington%2C%20VA%2022201-5424"&gt;Bing Maps&lt;/a&gt; | &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=2300+Wilson+Boulevard,+Arlington,+VA&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=40.681389,106.787109&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=2300+Wilson+Blvd,+Arlington,+Virginia+22201&amp;amp;t=h&amp;amp;z=16&amp;amp;iwloc=A"&gt;Google Maps&lt;/a&gt;] and is Metro accessible (the &lt;a href="http://www.wmata.com/rail/station_detail.cfm?station_id=96"&gt;Court House&lt;/a&gt; station).&lt;br /&gt;
&lt;br /&gt;
Free street parking after 6pm.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Presentation Title:&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;OpenKinect: Creating next-generation interfaces&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Presentation Description:&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;Kinect is awesome. Kinect on your PC is even more awesome. An international community of developers creating free, open source drivers and software for using Kinect with your PC is the most awesomest of all. That is what the OpenKinect Community is about. In this session, Joshua Blake, founder of the OpenKinect Community, will tell the story of how the community worked together to open up Kinect, demonstrate Kinect working on a PC and some videos of what other people have created so far, and show you how you can start programming with Kinect and create next-generation natural user interfaces.&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-9211687882314044767?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=njK6ywf9jdc:5JLvnbqUqlU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=njK6ywf9jdc:5JLvnbqUqlU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=njK6ywf9jdc:5JLvnbqUqlU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=njK6ywf9jdc:5JLvnbqUqlU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/njK6ywf9jdc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/9211687882314044767/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/01/openkinect-creating-next-generation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/9211687882314044767?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/9211687882314044767?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/njK6ywf9jdc/openkinect-creating-next-generation.html" title="OpenKinect: Creating next-generation interfaces, Jan 20, Arlington, VA" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2011/01/openkinect-creating-next-generation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCQns8cCp7ImA9Wx9XGUU.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-3527971721549981666</id><published>2011-01-14T02:05:00.001-05:00</published><updated>2011-01-14T02:14:23.578-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-14T02:14:23.578-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Video" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoStrat.VE" /><category scheme="http://www.blogger.com/atom/ns#" term="PrimeSense" /><category scheme="http://www.blogger.com/atom/ns#" term="Virtual Earth" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface" /><category scheme="http://www.blogger.com/atom/ns#" term="motion tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="kinect" /><category scheme="http://www.blogger.com/atom/ns#" term="Infostrat" /><category scheme="http://www.blogger.com/atom/ns#" term="UX" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>Kinect hand tracking with WPF 4 and Bing Maps 3-D</title><content type="html">&lt;p&gt;I’ve been playing around with Kinect and PrimeSensor in WPF for a bit and have achieved a small technical success that I wanted to share in a new video from InfoStrat. Using the same techniques that allow us to use &lt;a href="http://nui.joshland.org/search/label/Blake.NUI" target="_blank"&gt;WPF 4 on Surface 1.0&lt;/a&gt;, we can now use depth camera hand tracking to control multi-touch applications.&lt;/p&gt;  &lt;p&gt;Here is a very rough proof-of-concept where I’m controlling the &lt;a href="http://bingmapswpf.codeplex.com" target="_blank"&gt;InfoStrat.VE&lt;/a&gt; WPF 4 multi-touch control using a depth camera.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9acc0261-634b-42c4-91c2-f60d9d7a5b91" class="wlWriterEditableSmartContent"&gt;&lt;div id="f3e245a3-dfd3-47ff-a515-e108260be51c" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=G2llpgpOV5Q" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_X33DmaaF8aA/TS_1pYAFHFI/AAAAAAAAAVo/Ei28-5YUQsA/video05d6cb94c7af%5B53%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('f3e245a3-dfd3-47ff-a515-e108260be51c'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/G2llpgpOV5Q?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/G2llpgpOV5Q?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Bing Maps controlled with Kinect 3D-sensing technology&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;This is just a multi-touch application and I have added my one line of code to enable hand tracking to feed the WPF 4 touch stack.&amp;#160; I also display outlines of the tracked hands to provide better feedback about what is going on. In this video I also used &lt;a href="http://www.openni.org/" target="_blank"&gt;OpenNI&lt;/a&gt; and NITE from PrimeSense.&lt;/p&gt;  &lt;p&gt;The tracked hands can participate in all of the multi-touch manipulations and gestures that you’ve already written for your touch application. You can even interact using hand tracking and touch at the same time in the same window. The code that enables this is part of our internal InfoStrat.MotionFx project and will eventually be open sourced, but it needs a bit more work to be practical. &lt;/p&gt;  &lt;p&gt;One enhancement we’re planning is adding hand pose extraction, including palm orientation and finger positions. This would allow you can use hand poses and hand gestures to control whether a hand is “touching” the screen or not instead of the current technique. Currently, it determines that a hand is “touching” if it is over a certain distance from the shoulder. Knowing the hand pose would also enable new types of interactions, just like finger orientation, blob size, and tagged objects on Surface enables new interactions.&lt;/p&gt;  &lt;p&gt;In the end, we will want to design interfaces that use motion tracking to take advantage of the unique capabilities of that modality to create truly natural interactions. (Pinch-to-zoom with large arm movements is not the most natural interaction.) What I’ve shown above, though, is that it is feasible to use the WPF 4 Touch stack and Surface SDK as the unified platform for both multi-touch and motion tracking modalities. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-3527971721549981666?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=sIvt-OakAHM:cHpt9POmIR8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=sIvt-OakAHM:cHpt9POmIR8:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=sIvt-OakAHM:cHpt9POmIR8:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=sIvt-OakAHM:cHpt9POmIR8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/sIvt-OakAHM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/3527971721549981666/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/01/kinect-hand-tracking-with-wpf-4-and.html#comment-form" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3527971721549981666?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3527971721549981666?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/sIvt-OakAHM/kinect-hand-tracking-with-wpf-4-and.html" title="Kinect hand tracking with WPF 4 and Bing Maps 3-D" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_X33DmaaF8aA/TS_1pYAFHFI/AAAAAAAAAVo/Ei28-5YUQsA/s72-c/video05d6cb94c7af%5B53%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://nui.joshland.org/2011/01/kinect-hand-tracking-with-wpf-4-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BRXs5fip7ImA9Wx9XE0s.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-1658243549448663035</id><published>2011-01-06T21:48:00.001-05:00</published><updated>2011-01-06T21:55:54.526-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-06T21:55:54.526-05:00</app:edited><title>Microsoft Surface 2.0 Data Visualization Controls by InfoStrat</title><content type="html">&lt;p&gt;On Wednesday at CES2011, Microsoft finally announced the next version of Microsoft Surface. It takes advantage of a new technology called PixelSense where IR sensing pixels are interwoven with display pixels right in the LCD display itself. The computer specifications were updated and form factor went through a major overhaul, making Surface 2.0 one sexy table computer:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_X33DmaaF8aA/TSZ_Bvx3CDI/AAAAAAAAAVE/anIxtlH_boI/s1600-h/surface2%5B8%5D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="surface2" border="0" alt="surface2" src="http://lh6.ggpht.com/_X33DmaaF8aA/TSZ_B6sU_EI/AAAAAAAAAVI/xk0YJSQF6ps/surface2_thumb%5B6%5D.png?imgmax=800" width="454" height="304" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My employer, &lt;a href="http://www.infostrat.com/" target="_blank"&gt;InfoStrat&lt;/a&gt;, is a member of the Surface Technology Adoption Program (TAP), so we’ve had access to early SDK builds and have been giving feedback to the Surface team since May 2010. (Serious feedback… at the last TAP event I won a backpack full of swag for finding and submitting the most bugs during the TAP. Don’t worry, the bugs were all addressed.)&lt;/p&gt;  &lt;p&gt;InfoStrat and other Surface TAP members have also been working on applications using Surface SDK 2.0. If you were watching the Microsoft CES2011 &lt;a href="http://www.microsoft.com/presspass/events/ces/VideoGallery.aspx" target="_blank"&gt;keynote&lt;/a&gt; (skip to 44:15), then you saw one of those applications. Unfortunately there wasn’t time to feature all of the partner applications during the keynote, but that doesn’t mean that we can’t show them to you anyway! &lt;/p&gt;  &lt;p&gt;Today InfoStrat announced that we will be open sourcing several of our WPF 4 data visualization controls that we designed for Surface SDK 2.0. This includes the DeepZoom and Pivot controls I’ve been hinting about on twitter as well as a few others. Unfortunately, we cannot publish the controls or code quite yet. We have to wait until Surface SDK 2.0 becomes available to the public.&lt;/p&gt;  &lt;p&gt;We’ve been working on these controls for several months and so I’m very excited to share with you a video of these controls used in our Surface 2.0 application, InfoStrat Show for Microsoft Surface. This application is designed to take advantage of the unique capabilities of Microsoft Surface to enable natural and engaging presentations and small group collaboration. This video is just a sneak peak at the controls. We’ll be sharing more as we get closer to the code release. Below the video is InfoStrat’s press release about the controls.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:afe338ca-698d-4f94-bbee-33e3daceeeb8" class="wlWriterEditableSmartContent"&gt;&lt;div id="cdcce22b-cde5-488c-bfef-55d1a66184cd" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=lEVtjHlrf4I" target="_new"&gt;&lt;img src="http://lh6.ggpht.com/_X33DmaaF8aA/TSZ_CIsLPVI/AAAAAAAAAVY/XIZssDLWEec/video4d8dc4296519%5B9%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('cdcce22b-cde5-488c-bfef-55d1a66184cd'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/lEVtjHlrf4I?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/lEVtjHlrf4I?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Microsoft Surface 2.0 Data Visualization Controls by InfoStrat. Also shown are the updated visual styles of the Surface SDK 2.0 controls.&lt;/div&gt;&lt;/div&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;b&gt;&lt;em&gt;For Immediate Release&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;9 a.m. PST&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;January 6, 2010&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;b&gt;&lt;em&gt;InfoStrat Releases Next-Generation Data Visualization Controls for Microsoft Surface 2.0&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Washington DC – January 6, 2010 – InfoStrat today announced plans to support Microsoft Surface 2.0 by releasing a control suite that accelerates the development of next-generation multi-touch data visualizations. The controls will be made available as open source software at no charge on CodePlex.com in the first half of 2011.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;This data visualization control suite provides multi-touch versions of the following controls:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ Deep Zoom multi-resolution image control that allows high performance display of very high-resolution imagery&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ PowerPoint Viewer which enables slide decks to be arranged and presented using multi-touch&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ Pivot Viewer chart control that allows dynamic sorting and categorization of data&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ Physics Canvas which provides an infinite, dynamic canvas for viewing and organizing content&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Other features of the controls:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ Works on both Microsoft Surface and Microsoft Windows 7 with touch&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ A single application built with the data visualization framework can support multiple hardware form factors including: horizontal multi-touch tables, tablets, and large format vertical touch screens&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;§ Innovative object recognition to enable rapid data manipulations (only on Microsoft Surface)&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Watch a sneak preview of the control suite on YouTube: &lt;/em&gt;&lt;a href="http://www.youtube.com/watch?v=lEVtjHlrf4I"&gt;&lt;em&gt;http://www.youtube.com/watch?v=lEVtjHlrf4I&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;InfoStrat is a member of Microsoft’s Technology Adoption Program (TAP) for Microsoft Surface. As a Microsoft Surface 2.0 TAP member, InfoStrat receives early access to hardware and software, allowing InfoStrat to gain expertise and influence the development of the product before it was released to the public.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;In 2008, InfoStrat solved the problem of using Bing Maps 3D on Microsoft Surface in a way that performed well and was WPF-friendly. InfoStrat open-sourced the solution as a reusable control for the WPF and Surface community. Since then, the control has received over 120,000 page views and has over 8200 downloads, and has also been featured in many of our own applications. This control, known as InfoStrat.VE, has become one of the most popular controls for building mapping applications on Microsoft Surface: &lt;/em&gt;&lt;a href="http://bingmapswpf.codeplex.com"&gt;&lt;em&gt;http://bingmapswpf.codeplex.com&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;“We are proud to be part of the Microsoft Surface development community,” according to Jim Townsend, president of InfoStrat, “and excited about the possibilities of Microsoft’s new version of Surface.” &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Microsoft Surface provides a new way to experience and use information and digital content, engaging the senses, improving collaboration and empowering people to interact. Microsoft Surface is at the forefront of developing software and hardware that uses vision-based technology to fundamentally change the way people use computing devices. More information can be found at http://www.surface.com.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Information Strategies (&amp;quot;InfoStrat&amp;quot;) is an award-winning Microsoft Gold Certified Partner and a Microsoft Surface Strategic Partner and member of the Technology Adopter Program.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;For more information, press only:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Josh Wall, InfoStrat, (202) 364-8822 ext. 202, joshw@infostrat.com&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-1658243549448663035?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=DaeOmP5DqJ0:4kFoRjndPvk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=DaeOmP5DqJ0:4kFoRjndPvk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=DaeOmP5DqJ0:4kFoRjndPvk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=DaeOmP5DqJ0:4kFoRjndPvk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/DaeOmP5DqJ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/1658243549448663035/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2011/01/microsoft-surface-20-data-visualization.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1658243549448663035?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1658243549448663035?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/DaeOmP5DqJ0/microsoft-surface-20-data-visualization.html" title="Microsoft Surface 2.0 Data Visualization Controls by InfoStrat" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_X33DmaaF8aA/TSZ_B6sU_EI/AAAAAAAAAVI/xk0YJSQF6ps/s72-c/surface2_thumb%5B6%5D.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2011/01/microsoft-surface-20-data-visualization.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EFQngyeSp7ImA9Wx9SGEQ.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-4352131656888169603</id><published>2010-12-09T08:00:00.001-05:00</published><updated>2010-12-09T08:00:13.691-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-09T08:00:13.691-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Interview" /><category scheme="http://www.blogger.com/atom/ns#" term="PrimeSense" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenNI" /><title>Interview: Tamir Berliner of PrimeSense</title><content type="html">The natural user interface space has been very busy recently. Last month after Microsoft launched Kinect for Xbox, I organized people interested in using Kinect on PC and founded the &lt;a href="http://openkinect.org/"&gt;OpenKinect community&lt;/a&gt;. Since then the community has grown significantly and we’ve seen some amazing tech demos and applications using the libfreenect, the open source Kinect for PC drivers developed by OpenKinect community members.&lt;br /&gt;
&lt;br /&gt;
A few weeks ago, I was contacted by PrimeSense co-founder Tamir Berliner, who wanted to discuss their plans and ways PrimeSense could engage with the community. (Microsoft licensed PrimeSense’s technology and &lt;a href="http://www.wired.co.uk/magazine/archive/2010/11/features/the-game-changer"&gt;based Kinect on the PrimeSense reference design&lt;/a&gt;.) After seeing the dozens of OpenKinect videos and the community enthusiasm, PrimeSense decided to move up their plans and yesterday announced the &lt;a href="http://www.openni.org/"&gt;OpenNI&lt;/a&gt; initiative and have open sourced their middleware for natural interaction and drivers for their depth cameras. &lt;br /&gt;
&lt;br /&gt;
Tamir graciously agreed to let me interview him for my blog.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Joshua Blake: Thanks for agreeing to answer my questions. First, could you please give us a brief history of PrimeSense and its role in the natural interaction space?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir Berliner: &lt;/strong&gt;Thanks for having me :)&lt;br /&gt;
&lt;br /&gt;
PrimeSense started from the founders’ understanding that we are bored with standard gameplay. We felt that computer games didn’t innovate any more but rather mainly used a different story to differentiate. We felt it was time for a change, and understanding where natural interaction is headed to we decided to take the first step towards that vision in the games domain, with a 3D camera that was built for that purpose and at the right price point&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: What is your role within PrimeSense? &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;It’s been changing all along in the past 5 years, the main idea is to do whatever it takes to make sure the vision is being fulfilled and that we keep on striving towards Natural Interaction. In the past 5 years I’ve been the head of an R&amp;amp;D team, the first software product manager, I created our partners program and now I’m running this amazing effort of contributing our best and latest to the developers community so you guys can do what we didn’t even start to imagine&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: I know that any technology takes a long time to mature. For example, Microsoft Research’s Bill Buxton has doing multi-touch research since before the Apple Macintosh came out in 1984, and there were &lt;a href="http://www.billbuxton.com/multitouchOverview.html"&gt;others before him&lt;/a&gt;. Multi-touch has only become mainstream in the last few years. How long has research been going on in the motion tracking and pose estimation space?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;Over 20 years if you count the first time image processing was done in order to extract a human skeleton from an image, or the usage of two cameras to reconstruct a 3D image.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: How long has PrimeSense been involved in this field? What have you guys been up to that has prepared for today when are seeing mass adoption of motion tracking and natural user interfaces in the home?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;We started ‘running’ in Sept 2005. It took us 5 years to get the first product that uses our technology to hit the shelves. From day one, our goal was computer games. We actually had first trials of skeleton running in early 2006 which helped us both sell the technology and explain what’s possible, and set up all the different parameters so that they will fit best to the usage in the living room domain and even took some tradeoffs to tailor make it to computer gaming.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: I have heard several people make the comment that what can be done with depth sensors has been done before with single RGB cameras and computer vision techniques. Many of those approaches require controlled environments and are not robust enough to use in any random living room, for example. How do depth sensors and PrimeSense technology change the game as far as the interfaces and interactions that are possible now? How does hardware cost play in to the equation? &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir:&lt;/strong&gt; The main issue that PrimeSense has solved is a robust, real time, low-cost depth-map generating device that can be configured to create a skeleton on a low end PC. Our middleware takes less than 1 ATOM CPU and provides a great skeleton model for two people in real time. It also allows you to control a fully fledged media center from 15ft away with mere hand gestures that we keep on making sure passes user testing so everyone can use those at home&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: We touched on pose estimation before. When thinking about human-computer interaction, what can we do with a skeleton model of humans in a real space that we cannot do with just raw depth data or point clouds? &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;The raw data is great for testing and rapid prototyping of basic interaction. The main issue is that it usually requires the user to be too aware of the algorithms – take for example the virtual touch screens that we’ve seen - you have to know exactly where to stand and how far your hand needs to reach. These cannot work in the living room or in standard home environments as you will just walk through the virtual screen, interacting with the TV without wanting to. Also imagine that you need to get up every time you want to flip channels or change the volume?. Another example are all the different ‘trainers’. Whether it’s titles like Dance Central or Your Shape, those cannot be made with just raw data, you have to know where the user is and what exactly he/she is doing&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: You have described PrimeSense technology as enabling Natural Interaction. What does the phrase mean and where is it heading?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir:&lt;/strong&gt; The goal of Natural Interaction from my point of view would be to be able to take any person (even those who have never used a technological system) and have them be able to use it without any training. I think that Kinect and iPhone are both a great step towards that direction, but we’ve got a lot to do both on the hardware side and on the software side. Merging the interfaces between all the different devices that you have and making them “know you” is a key step and require tons of work. I believe this revolution will take at least 10 to 15 years till we can look back and say ‘what were we thinking with those mice and keyboards?!’&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: Is the future of natural interaction and 3D cameras limited to games and entertainment or will it see adoption in other fields as well? &lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir:&lt;/strong&gt; Natural Interaction is already coming from all different directions at us, you can see it with Wii, iPhone, and even in public restrooms where the water tap understands you want to wash your hands and starts the water flow automatically. The more we see Natural Interaction being introduced into the market, the more you will see everyone using technology. The keyboard and mouse seem ‘normal’ today, but if you come to think of it, they are as natural to a human as leash is to a dog.&lt;br /&gt;
&lt;br /&gt;
3D cameras are of course one of the key enablers of Natural Interaction, just as speech and touch are, and as such I foresee this technology being incorporated in many more technological devices in different forms and as different input paradigms. We can see great examples from the community with regards to what’s possible and I believe this is merely the beginning. Another very important area where 3D cameras are coming into play is providing technology with “eyes”. Just like providing phones with accelerometers and GPS was a big step, so will this be and some of the main targets will be technologies that need to move and navigate in the real world&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: We’re already seeing a lot of early videos of these types of applications come out of the OpenKinect community. What was the reaction inside PrimeSense like to the really creative and diverse ways that people are using the Kinect depth sensor? I heard it caught you by surprise.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;The reaction was ‘Wow’ after 5 years of meeting with people and trying to explain what is possible, you finally see people who not only do things you’ve thought of, but do much more and create amazing applications that we didn’t even consider! It’s mind blowing to see that creativity is far greater when it’s in the hands of a community, and it’s one of the main reasons for why PrimeSense has decided to provide the community with the work that it has invested a lot into. I don’t know if the people in the community will like what we’ve got to offer, but what led us to make the decision was that we’ve seen people starting to tackle issues that we’ve been working on for years now so it would almost be a ‘sin’ not to contribute from our experience.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: Clearly there is a quickly growing community that is extremely enthusiastic about the possibilities unlocked by this type of technology. (The &lt;a href="http://groups.google.com/group/openkinect/"&gt;OpenKinect mailing list&lt;/a&gt; has grown to over 1250 members join in just four weeks.) Even so, Natural Interaction is still new and we are still at the beginning of the &lt;a href="http://nui.joshland.org/2009/01/natural-user-interface-revolution.html"&gt;Natural User Interface revolution&lt;/a&gt;. What are the biggest challenges that we will see to adoption of Natural Interaction across the industry?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;I believe that the value of Natural Interaction is great, but only when it’s implemented properly. Only a small set of companies have been able to really create devices that both are worth the money and have provided a real Natural Interaction leap. As I mentioned I see companies like Microsoft with the Kinect, Apple with the iPhone and Nintendo with the Wii as being the first and I can only hope (as a consumer) to see everyone in the world understanding the this is merely the beginning. The number one issue for all of the devices is to simulate the interfaces that we already know from the ‘real world’. Wii did it with motion, iPhone did it with touch, and Kinect has taken it to a whole new level of full body integration into games and media control with the great adder of speech detection. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: This leads us to the OpenNI initiative. Tell us about Open Natural Interaction, who is involved, and the role you see it playing.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;I believe OpenNI to be a major key player in Natural Interaction. As I’ve mentioned, Natural Interaction consists of hardware devices that we’ll see coming from a variety of CE [Consumer Electronics] vendors, and software modules that will be developed by many different software providers. Having all of those comply with one standard ensure that any application that is developed can deploy on a large number of systems with an install base that is not fragmented. As the first step we’ve worked with some of our partners to create OpenNI and at this point we’ve decided to launch it a bit earlier than expected due to the large amount of developers already working. Our initial goal was to launch the OpenNI standard a few months from now. Many industry leaders are interested and when they are ready they will join us in the management of the OpenNI consortium. &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: Along with OpenNI, PrimeSense released a whole suite of software, including some open source. What can the public do with this software, and how would you like to see the community engage with OpenNI? Are you open to people contributing to the software projects or extending it with new capabilities?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;The software is divided into two main parts, the first being the OpenNI standard which is mainly the APIs to devices and image processing algorithms. Extending OpenNI and submitting changes is welcomed. In the next versions, the OpenNI consortium will publish what will be included prior to closing up the version so everyone can suggest introducing their changes to the official release.&lt;br /&gt;
&lt;br /&gt;
The second part is NITE which is PrimeSense’s middleware for its SoC (System on Chip) and includes UI framework for controlling the TV from 15ft away without the need to start searching for the remote. This framework takes a bit time to learn to use but provides great power to the developers, as it provides them with exactly what they need – events that are generated according to the user’s motions but that are still tailor made for their applications. &lt;br /&gt;
&lt;br /&gt;
The other part NITE includes is the skeleton image processing module that enables the application developer to receive the joints of the user that initiated interaction (the way to start interaction is by standing with your hand to the sides in a ‘freeze’ position). After that you have a skeleton that sticks to you. In order to contribute even further we’ve also provided the “scene analyzer” which segments the users from the background so you actually can enumerate the depth map and get the number of users. You can see both the Skeleton and Scene Analyzer in these videos on Youtube &lt;br /&gt;
&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b81a1e2b-0c5b-468d-8a56-6bfb4a4f0b28" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;embed height="252" src="http://www.youtube.com/v/nr8vgCnb9_0?hd=1" type="application/x-shockwave-flash" width="448" wmode="transparent"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:f1330d44-5493-4dbd-bf46-ff8d8fb41a1b" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;embed height="252" src="http://www.youtube.com/v/-_j7BzSmlfU?hd=1" type="application/x-shockwave-flash" width="448" wmode="transparent"&gt;&lt;/embed&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;Josh: Those videos are awesome. I’m just imagining what I can do with those capabilities. Is there anything else you’d like to share or tell us about?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Tamir: &lt;/strong&gt;Sure – I believe that till today the devices we’ve been using, made us learn greatly lot about them before we could use them and gain their value. I’m pretty sure everyone who is reading this has got at least 3 remotes sitting on his living room table, and at least once a week needs to help someone use their computer/media center/phone/etc. It’s time for that to change and it’s up to us, the technologists to make this revolution happen, it’s time for the devices to take the step of understanding what we want and making sure we get that, even without asking if it’s a trivial task as opening a door when we approach, closing the lights when we leave the room, even making sure we have hot water to shower with when we return from work or wake up in the morning, depends on what we normally do. &lt;br /&gt;
&lt;br /&gt;
Having said that, we need to remember that now localization is not only changing the written language, it’s becoming the gestures that people are used to, the accent in speech detection. Even the difference between when a user wants to control and when they don’t is not so trivial anymore as it’s not just “press the button”… it’s up to us to make sure that the users enjoy a new set of very compelling experiences that don’t break. It’s a new huge growing market, and I’d suggest anyone with technological skills to jump on and enjoy the creation of this new era.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Josh: I’m very excited about all of this. Thanks again for answering these questions and I’m looking forward to working with you to make some amazing natural user interfaces and natural interactions.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-4352131656888169603?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=RTmgkyHD1IA:qXJ1cSfkVP0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=RTmgkyHD1IA:qXJ1cSfkVP0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=RTmgkyHD1IA:qXJ1cSfkVP0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=RTmgkyHD1IA:qXJ1cSfkVP0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/RTmgkyHD1IA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/4352131656888169603/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/12/interview-tamir-berliner-of-primesense.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/4352131656888169603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/4352131656888169603?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/RTmgkyHD1IA/interview-tamir-berliner-of-primesense.html" title="Interview: Tamir Berliner of PrimeSense" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2010/12/interview-tamir-berliner-of-primesense.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYESXc8eCp7ImA9Wx5bGEQ.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-8936081940501407687</id><published>2010-11-04T12:49:00.001-04:00</published><updated>2010-11-04T14:58:28.970-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-04T14:58:28.970-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="InfoStrat.VE" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>InfoStrat.VE and the Bing Maps 3D end-of-life</title><content type="html">On Tuesday, the Bing team announced that the Bing Maps 3D control (the ActiveX plug-in, not Silverlight) is being &lt;a href="http://www.bing.com/community/site_blogs/b/maps/archive/2010/11/02/changes-to-bird-s-eye-and-3d-maps.aspx"&gt;end-of-lifed&lt;/a&gt;.&amp;nbsp;The 3D control will be removed from the website in a few weeks, but the data feeds that support it&amp;nbsp;will remain live until December 2011. I've gotten some questions on twitter and the InfoStrat.VE &lt;a href="http://bingmapswpf.codeplex.com/Thread/View.aspx?ThreadId=233441"&gt;forum&lt;/a&gt;&amp;nbsp;about what this announcement means for InfoStrat.VE so I wanted to post an update about this.&lt;br /&gt;
&lt;br /&gt;
Based upon this announcement, the current version of InfoStrat.VE will still work until December 2011. After that date, any applications using the current version will essentially stop working. We are pursuing several options that will replace as much of the functionality of the Bing Maps 3D backend to InfoStrat.VE as possible. &lt;br /&gt;
&lt;br /&gt;
I'm really happy to see the support from people on twitter and comments on the Bing blog for InfoStrat.VE. Unfortunately the decision to end-of-life Bing Maps 3D was made much earlier this year. We had been working closely with some of the team members so they did give us a heads up back then, but we couldn't discuss it publicly of course. &lt;br /&gt;
&lt;br /&gt;
At that time we provided a lot of feedback and as much push-back as we could, including several of the ideas that people posted in the comments on the Bing blog. This is also why you haven't seen much new lately for InfoStrat.VE.&amp;nbsp;Of course, Microsoft and this project has always said using this control is unsupported with no guarantees.&lt;br /&gt;
&lt;br /&gt;
We are disappointed that Microsoft is bowing out of the 3D mapping market, which is important to commercial and government customers. They've chosen to focus on 2D mapping, which primarily targets consumers. The 2D solution does have Birds Eye and some other cool features, though. &lt;br /&gt;
&lt;br /&gt;
That said, this is not the end of mapping on Surface. InfoStrat.VE should still work in your existing projects until December 2011. We're hoping to have news of a transition path well before then in order to give time to switch over current and future projects. This might end up using 2D only, or possibly extending the backend to support other 2D or 3D mapping providers. We don't have anything solid at this point but we will definitely post some information when we can.&lt;br /&gt;
&lt;br /&gt;
If you have any preferences about where you'd like to see InfoStrat.VE go, please chime in on the comments or send me an email: joshblake at gmail.com.&lt;br /&gt;
&lt;br /&gt;
Thanks for your support!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-8936081940501407687?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=6DCEfYw2Hos:LZNeFvEyE0A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=6DCEfYw2Hos:LZNeFvEyE0A:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=6DCEfYw2Hos:LZNeFvEyE0A:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=6DCEfYw2Hos:LZNeFvEyE0A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/6DCEfYw2Hos" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/8936081940501407687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/11/infostratve-and-bing-maps-3d-end-of.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/8936081940501407687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/8936081940501407687?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/6DCEfYw2Hos/infostratve-and-bing-maps-3d-end-of.html" title="InfoStrat.VE and the Bing Maps 3D end-of-life" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2010/11/infostratve-and-bing-maps-3d-end-of.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUNQXY7fCp7ImA9Wx5UFEs.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-2877202975099790145</id><published>2010-10-19T01:48:00.000-04:00</published><updated>2010-10-19T01:48:10.804-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-19T01:48:10.804-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Speaking about NUI at CapArea.NET Silverlight SIG</title><content type="html">Tonight (10/19/2010) I'll be speaking at the CapArea.NET Silverlight SIG about NUI development with WPF and Silverlight. It is at 7pm at the Navy League Building at &lt;a href="http://www.bing.com/maps/?v=2&amp;amp;cp=38.890835999999986~-77.08668999999997&amp;amp;lvl=17&amp;amp;sty=r&amp;amp;where1=2300%20Wilson%20Blvd%2C%20Arlington%2C%20VA%2022201-5424"&gt;2300 Wilson Blvd, Arlington VA 22201&lt;/a&gt;&amp;nbsp;and is easily accessible&amp;nbsp;via the Court House Metro Station.&lt;br /&gt;
&lt;blockquote&gt;&lt;strong&gt;Abstract&lt;/strong&gt;&lt;br /&gt;
The Natural User Interface (NUI) is the next revolution of human-computer interaction. Microsoft Surface has shown the potential of multi-touch NUIs to uniquely engage users, and multi-touch tablets and displays are becoming more and more common. In this presentation, Joshua will cover fundamental NUI and multi-touch concepts and discuss multi-touch development options with WPF 4 and Silverlight. You will learn about raw touch input and the manipulation API and see the differences between WPF and Silverlight multi-touch development. If you are interested in creating rich, engaging multi-touch interfaces for the web or client, then you won't want to miss this presentation!&lt;/blockquote&gt;If you are in the area, come by and say hi afterwards. See you there!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-2877202975099790145?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=OkvCUbME0GQ:sbFPE3PAc2o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=OkvCUbME0GQ:sbFPE3PAc2o:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=OkvCUbME0GQ:sbFPE3PAc2o:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=OkvCUbME0GQ:sbFPE3PAc2o:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/OkvCUbME0GQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/2877202975099790145/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/10/speaking-about-nui-at-capareanet.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2877202975099790145?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/2877202975099790145?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/OkvCUbME0GQ/speaking-about-nui-at-capareanet.html" title="Speaking about NUI at CapArea.NET Silverlight SIG" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/10/speaking-about-nui-at-capareanet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08BRHs7eSp7ImA9Wx5UFU0.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-260382645509522137</id><published>2010-10-19T01:36:00.002-04:00</published><updated>2010-10-19T12:30:55.501-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-19T12:30:55.501-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Research" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><title>Recent NUI videos and links</title><content type="html">In the last week or two there have been several interesting new links about NUI research and innovations. I thought I'd share them all together in hopes that they are interesting to you as well.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: large;"&gt;PhoneTouch&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.technologyreview.com/computing/26458/"&gt;http://www.technologyreview.com/computing/26458/&lt;/a&gt;&lt;br /&gt;
Researchers at University of Lancaster are coordinating cell phone accelerator data timing with touch data on a touch table to uniquely identify users. When a user uses the phone to touch surface they can create user specific reactions, such as pulling data from that phone, as opposed to another person's phone. Of course, the phone needs to run some software and already be paired via bluetooth or Wifi but this is an interesting idea about sensor fusion.&lt;br /&gt;
&lt;br /&gt;
Video: &lt;br /&gt;
&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oJphq22HdCY?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/oJphq22HdCY?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: large;"&gt;LightSpace&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://news.cnet.com/8301-13860_3-20018451-56.html"&gt;http://news.cnet.com/8301-13860_3-20018451-56.html&lt;/a&gt;&lt;br /&gt;
Ina Fried has a good write up about a new Microsoft Research project by Andy Wilson, one of the founders of the Surface Computing group at Microsoft, and his team. They've taken Surface Computing a step further and using ceiling-mounted projectors and depth cameras (perhaps borrowing a bit from Kinect technology), have turned an entire room into a Surface. A standard wood table-top is now touch-sensitive Surface. &lt;br /&gt;
&lt;br /&gt;
The interesting thing with this is that it can detect presence and coordinate interactions between the interactive zones. The video shows them picking up a video from the table, carrying a representative dot across the room and putting it onto a wall to play the video. They also show a menu system created in a column of air where you select an item by hovering your hand in the right place. The menu items are projected onto your hand. &lt;br /&gt;
&lt;br /&gt;
The interface and interaction technique are still clunky and unrefined, but this is still a research project and they're exploring new capabilities. I think about these types of future interactions a lot. We're going to be seeing more and more of this integrated interactions and reacting to presence as well as touch in the future. &lt;br /&gt;
&lt;br /&gt;
Video:&lt;br /&gt;
&lt;iframe frameborder="0" height="224" scrolling="no" src="http://www.microsoft.com:80/presspass/silverlightApps/videoplayer3/standalone.aspx?contentID=research_lightspace&amp;amp;src=/presspass/presskits/nextintech/channel.xml" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: large;"&gt;Manual Deskterity&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.zdnet.com/blog/microsoft/microsoft-courier-concepts-move-foward-on-the-surface/7570"&gt;http://www.zdnet.com/blog/microsoft/microsoft-courier-concepts-move-foward-on-the-surface/7570&lt;/a&gt;&lt;br /&gt;
Mary Jo Foley updates us about another Microsoft Research project, Manual Deskterity.&amp;nbsp;A video of Manual Deskterity was released earlier this year and now the team has &lt;a href="http://research.microsoft.com/en-us/um/people/kenh/papers/Pen-Touch-UIST-2010.pdf"&gt;published a paper&lt;/a&gt; with more details of their findings and user research. The project focuses on multi-modal and bi-manual (two-handed) interactions. &lt;br /&gt;
&lt;br /&gt;
They use an IR&amp;nbsp;light pen and Microsoft Surface but the techniques are applicable to any type of pen and touch system. (Mary points out a connection to the &lt;a href="http://nui.joshland.org/2009/09/microsoft-courier-leaked-tablet-photos.html"&gt;leaked Courier videos&lt;/a&gt; last year and the InkSeine project.) Note that most commercial tablet PCs available today that support stylus and touch only allow one at a time. You'll need special drivers to do both at once.&lt;br /&gt;
&lt;br /&gt;
Video:&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9sTgLYH8qWs?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/9sTgLYH8qWs?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style="font-size: large;"&gt;Bill Buxton, "NUI -&amp;nbsp;What's in a name?"&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/posts/TechTalk-NUI-Whats-in-a-Name"&gt;http://channel9.msdn.com/posts/TechTalk-NUI-Whats-in-a-Name&lt;/a&gt;&lt;br /&gt;
Bill Buxton recently gave another presentation about NUI, this time at the Microsoft Development Center in Copenhagen. The presentation is about 60 minutes with another 30 minute Q&amp;amp;A. It combines some of his previous speeches this year with a few new things. I'd encourage you to plan some time to watch this, even if you've already seen everything else he's ever presented. He has a great way of breaking down difficult-to-understand topics and making you see things in a new way. &lt;br /&gt;
&lt;br /&gt;
Video:&lt;br /&gt;
&lt;object data="data:application/x-silverlight-2," height="286" type="application/x-silverlight-2" width="509"&gt; &lt;param name="source" value="http://channel9.msdn.com/scripts/VideoPlayer.xap?v=3.1" /&gt;&lt;param name="initParams" value="deferredLoad=true,duration=0,m=http://ecn.channel9.msdn.com/o9/ch9/1911/4dafd9dd-b996-45c4-a3cd-9e0e006b1911/MDCCTechTalkBillBuxton_ch9.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://ecn.channel9.msdn.com/o9/ch9/1911/4dafd9dd-b996-45c4-a3cd-9e0e006b1911/MDCCTechTalkBillBuxton_512_ch9.jpg, postid=0" /&gt;&lt;param name="background" value="#00FFFFFF" /&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/&gt; &lt;/a&gt; &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-260382645509522137?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=NGin31arw34:2MGWBqRpbAw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=NGin31arw34:2MGWBqRpbAw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=NGin31arw34:2MGWBqRpbAw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=NGin31arw34:2MGWBqRpbAw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/NGin31arw34" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/260382645509522137/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/10/recent-nui-videos-and-links.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/260382645509522137?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/260382645509522137?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/NGin31arw34/recent-nui-videos-and-links.html" title="Recent NUI videos and links" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/10/recent-nui-videos-and-links.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IER3g_fyp7ImA9Wx5VEUs.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-1397596814592769554</id><published>2010-10-04T01:16:00.001-04:00</published><updated>2010-10-04T01:18:26.647-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-04T01:18:26.647-04:00</app:edited><title>I’m a Microsoft Surface MVP!</title><content type="html">&lt;p&gt;On Friday, October 1st, I got an email that I was hoping to get for a while. It started:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Dear Joshua Blake, &lt;/p&gt;    &lt;p&gt;Congratulations! We are pleased to present you with the 2010 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Surface technical communities during the past year.&lt;/p&gt;    &lt;p&gt;The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say &amp;quot;Thank you for your technical leadership.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The email went on to tell me how to log in to the MVP site and that I should be expecting an award package.&lt;/p&gt;  &lt;p&gt;The Microsoft MVP is a year-long award with new and returning MVPs announced every three months. The Surface MVP category was created just before the last cycle of MVP awards that went out July 1st. Dr. Neil from &lt;a href="http://nsquaredsolutions.com/"&gt;nsquared&lt;/a&gt; in Australia holds the honor of being the first Surface MVP since he made it in during the last cycle. &lt;/p&gt;  &lt;p&gt;This cycle adds Dennis Vroegop in Netherlands, Rick Barraza from Cynergy in San Diego, CA, and me from InfoStrat in DC, bringing the number of Surface MVPs to four in the world. You can see our MVP profiles &lt;a href="https://mvp.support.microsoft.com/communities/mvp.aspx?name=surface"&gt;here&lt;/a&gt;. I’m very excited, proud, and humbled to be recognized among the best of the Surface community.&lt;/p&gt;  &lt;p&gt;I have to say thanks for all of my readers and supporters. I plan to continue to contribute to the community and encourage others to do so as well. There are many new and exciting things coming up, both from me and InfoStrat as well as within the Surface community. It’s going to be a great year!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-1397596814592769554?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=o998LvwBQQE:X6t1PVXmW6Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=o998LvwBQQE:X6t1PVXmW6Y:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=o998LvwBQQE:X6t1PVXmW6Y:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=o998LvwBQQE:X6t1PVXmW6Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/o998LvwBQQE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/1397596814592769554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/10/im-microsoft-surface-mvp.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1397596814592769554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/1397596814592769554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/o998LvwBQQE/im-microsoft-surface-mvp.html" title="I’m a Microsoft Surface MVP!" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total><feedburner:origLink>http://nui.joshland.org/2010/10/im-microsoft-surface-mvp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8MRX0yeCp7ImA9Wx5QGUU.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-4936102520884326945</id><published>2010-09-08T19:18:00.000-04:00</published><updated>2010-09-08T19:18:04.390-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-08T19:18:04.390-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="HDC" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="NaturalShow" /><title>NUI session at Heartland Developers Conference</title><content type="html">I'm here at the Heartland Developers Conference in Omaha, NE. If any of my readers are here, please look me up and we'll chat! You can email me &lt;img border="0" src="http://2.bp.blogspot.com/_X33DmaaF8aA/SWNwyr6ynVI/AAAAAAAAAFU/dko3rv1ISfI/S220/contact.jpg" /&gt; or send me a message on twitter: @joshblake.&lt;br /&gt;
&lt;br /&gt;
I'm presenting a session tomorrow (9/9/2010) at 1:15pm right after lunch:&lt;br /&gt;
&lt;a href="http://www.heartlanddc.com/?page_id=455"&gt;Deconstructing the Natural User Interface: UX design in the NUI revolution&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I'll be using NaturalShow again, and there may just be an announcement. You'll have to come to the session to find out! (Or read my blog when I post a follow-up.)&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-4936102520884326945?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iVK_h-9cyNw:pRFHo6cP9ZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iVK_h-9cyNw:pRFHo6cP9ZQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=iVK_h-9cyNw:pRFHo6cP9ZQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iVK_h-9cyNw:pRFHo6cP9ZQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/iVK_h-9cyNw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/4936102520884326945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/09/nui-session-at-heartland-developers.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/4936102520884326945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/4936102520884326945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/iVK_h-9cyNw/nui-session-at-heartland-developers.html" title="NUI session at Heartland Developers Conference" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X33DmaaF8aA/SWNwyr6ynVI/AAAAAAAAAFU/dko3rv1ISfI/s72-c/contact.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/09/nui-session-at-heartland-developers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cGQH0-eyp7ImA9Wx5RGU4.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-7250335814872828790</id><published>2010-08-27T15:57:00.000-04:00</published><updated>2010-08-27T15:57:01.353-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T15:57:01.353-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MultitouchOnWindows" /><title>Multitouch on Windows book update</title><content type="html">&lt;div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"&gt;&lt;a href="http://nui.joshland.org/2010/02/multitouch-on-windows-meap-now.html"&gt;&lt;br /&gt;
&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_X33DmaaF8aA/S4dqmEIjIjI/AAAAAAAAAQU/427SIY11ItY/s200/blake_cover150.jpg" width="160" /&gt;&lt;/a&gt;&lt;/div&gt;Here is a quick update about the progress of my book, Multitouch on Windows. The MEAP (Manning Early Access Program -- pre-order access to the eBook) now includes chapters 1-2 and 4-7. You can get access the MEAP by &lt;a href="http://bit.ly/dn0QDq"&gt;pre-ordering&lt;/a&gt; either the eBook or print+eBook. (Disclosure: that link is affiliate and sends me a few extra dollars if you buy through it.) You can also download the source code samples from the book page at that link.&lt;br /&gt;
&lt;br /&gt;
I'm currently working on chapter 8 about the WPF manipulations API. This is a key chapter so I'm giving it some extra love and care. I'm also balancing out work and family life. It is a challenge sometimes but this stuff motivates me so I push through. I'm also motivated by the comments, feedback, and successes of my readers. If you're doing something cool with multi-touch let me know!&lt;br /&gt;
&lt;br /&gt;
Since I'm closing in on half-way through the book, I posted some survey questions for readers on the Manning forums. I basically need to know how important Silverlight and Surface content is to readers so I know how much effort to put into various areas. I'm also trying to build the case for the book to be printed in color (the eBook is already in color) so the more responses the better case I can present to Manning. Please take a few minutes and answer these four questions, even if you haven't read the book yet:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.manning-sandbox.com/thread.jspa?threadID=39051&amp;amp;tstart=0"&gt;Multitouch on Windows reader survey&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If you don't want to post the answers on that forum or don't want to make an account, you can always just email me directly: joshblake at gmail dotcom. Thank you to those of you who have already answered the survey.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-7250335814872828790?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=nFu997909ls:T5cTnmjdmSc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=nFu997909ls:T5cTnmjdmSc:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=nFu997909ls:T5cTnmjdmSc:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=nFu997909ls:T5cTnmjdmSc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/nFu997909ls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/7250335814872828790/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/08/multitouch-on-windows-book-update.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7250335814872828790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7250335814872828790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/nFu997909ls/multitouch-on-windows-book-update.html" title="Multitouch on Windows book update" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_X33DmaaF8aA/S4dqmEIjIjI/AAAAAAAAAQU/427SIY11ItY/s72-c/blake_cover150.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/08/multitouch-on-windows-book-update.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQBRnc9fyp7ImA9Wx5RGEo.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-3994108041876871564</id><published>2010-08-26T23:05:00.000-04:00</published><updated>2010-08-26T23:05:57.967-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-26T23:05:57.967-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="Video" /><category scheme="http://www.blogger.com/atom/ns#" term="objects" /><category scheme="http://www.blogger.com/atom/ns#" term="Infostrat" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>Microsoft Surface and Magical Object Interaction</title><content type="html">Work at InfoStrat has been really exciting recently. We are getting more and more multi-touch projects for both Surface and Windows 7. We've created some really interesting interfaces and applications and soon we'll be able to share more.&lt;br /&gt;
&lt;br /&gt;
For now, I can share this video. We built a suite of Microsoft Surface applications for a well-known museum. These are designed to be used by young children. During user testing we found that it works great for them and also does pretty well at bringing out the inner child from people of all ages. I'll post more details on the findings of our user testing in a future post.&lt;br /&gt;
&lt;br /&gt;
The theme of the applications was "light" and we designed them to really take advantage of the unique capabilities of Surface: bringing people together socially and physical object interaction.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1c9LmCwe7lE?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/1c9LmCwe7lE?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Let me know what you think!&lt;br /&gt;
&lt;br /&gt;
By the way, if you're interested in working for InfoStrat and you know WPF, we're hiring! Take a look at our job posting for &lt;a href="http://www.infostrat.com/home/solutions/Surface/ATGPosition"&gt;WPF experts&lt;/a&gt; as well as&lt;a href="http://www.infostrat.com/home/company_information/careers/Positions+Available.htm"&gt; Microsoft CRM and Microsoft SharePoint&lt;/a&gt; experts.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-3994108041876871564?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=XqjDeTHUywA:4rJh_V1Hxx0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=XqjDeTHUywA:4rJh_V1Hxx0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=XqjDeTHUywA:4rJh_V1Hxx0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=XqjDeTHUywA:4rJh_V1Hxx0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/XqjDeTHUywA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/3994108041876871564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/08/microsoft-surface-and-magical-object.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3994108041876871564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3994108041876871564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/XqjDeTHUywA/microsoft-surface-and-magical-object.html" title="Microsoft Surface and Magical Object Interaction" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://nui.joshland.org/2010/08/microsoft-surface-and-magical-object.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4EQXY4cCp7ImA9Wx5TEEk.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-3531738843158086134</id><published>2010-07-16T02:04:00.002-04:00</published><updated>2010-07-25T03:45:00.838-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-25T03:45:00.838-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Multitouch" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface Toolkit" /><category scheme="http://www.blogger.com/atom/ns#" term="Blake.NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>Sharing binaries between Surface and Windows 7</title><content type="html">&lt;i&gt;This post is part of a series about Blake.NUI, my open-source library for multi-touch &lt;/i&gt;&lt;i&gt;natural user interface development with &lt;/i&gt;&lt;i&gt;WPF 4 and Surface. In this post I discuss how to set up your projects to share 99% of your binaries between Surface and Windows 7. See my &lt;a href="http://nui.joshland.org/2010/07/announcing-blakenui-multi-touch-nui.html"&gt;Blake.NUI announcement post &lt;/a&gt;for an overview of the project as well as a discount code for my book Multitouch on Windows, good until July 23.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
In my last post, I showed how to use the SurfaceTouchDevice class to let &lt;a href="http://nui.joshland.org/2010/07/how-to-write-surface-applications-with.html"&gt;WPF 4 Touch applications work on Microsoft Surface&lt;/a&gt;. In this post, I will discuss how to set up your project to allow you to reuse almost your entire WPF 4 code-base between a Surface SDK application and Win7 Surface Toolkit application. This approach will make your code binary compatible between the two platforms.&lt;br /&gt;
&lt;br /&gt;
Note that as I discuss the technique, I am assuming that you are setting up your projects on a Windows 7 multi-touch machine with Visual Studio 2010 and both &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3db8987b-47c8-46ca-aafb-9c3b36f43bcc&amp;amp;displaylang=en"&gt;Surface SDK SP1 Workstation Edition&lt;/a&gt; and &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=801907A7-B2DD-4E63-9FF3-8A2E63932A74&amp;amp;displaylang=en"&gt;Surface Toolkit beta&lt;/a&gt; installed. Once the projects are setup, you can compile the solution on a Surface device as long as you create a solution configuration that does not build the projects that reference Surface Toolkit.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;1. Project Structure&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;If you want to target both Win7 and Surface with the same code-base, you'll need to keep the Surface SDK-specific code separate from your reusable code. There are several possible approaches, but here is the one I have been using. Figure 1 shows the architecture of the solution.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_X33DmaaF8aA/TCw0mNAlXHI/AAAAAAAAATE/cekfD-pGA4Y/s1600/SurfaceTouchDevice+architecture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://4.bp.blogspot.com/_X33DmaaF8aA/TCw0mNAlXHI/AAAAAAAAATE/cekfD-pGA4Y/s400/SurfaceTouchDevice+architecture.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Figure 1 Most of the controls and code is located in a common project that is consumed by a Surface project and a Win7 project. &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
I recommend creating a shell project for Surface and a shell project for Win7. Each of these projects has only a window. In the Surface project, add SurfaceTouchDevice.RegisterEvents(this) to the SurfaceWindow constructor. (I also add MouseTouchDevice.RegisterEvents(this) to both Surface and Win7 projects.) Then in a separate common library I put all of my MVVM code and added the same view user control to the window in each of the shell projects.&lt;br /&gt;
&lt;br /&gt;
Note that the Surface project references the Surface SDK (v1.0) and the Win7 project references Surface Toolkit (v1.5). You will need to check the properties on the assembly references to ensure they are the correct version for each application. The Surface project probably is referencing v1.5 of Microsoft.Surface.Presentation.dll and Microsoft.Surface.Presentation.Generic.dll. Simply remove those reference and in the Add Reference dialog browse and add references to the 1.0 version of the assemblies.&lt;br /&gt;
&lt;br /&gt;
Surface Toolkit contains a subset of controls from the full Surface SDK. This means that you can reference either version 1.0 or 1.5 of Microsoft.Surface.Presentation.dll in your common project and use any of the common controls that exist in both assemblies, such as SurfaceButton and ScatterView. As long as you stick to the subset of common controls, the same binary will work on both Surface and Win7. I would recommend using v1.0 in the common project so you can still compile the project on your Surface device without Surface Toolkit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;2. Loading the correct assemblies&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Assuming that you do reference Microsoft.Surface.Presentation.dll v1.0 in the common project and Microsoft.Surface.Presentation.dll v1.5 in the Win7 project, you need to do one more thing to ensure that the application will load correctly. If you do not, then depending upon the order in which components load, you may get a runtime exception like the one shown in figure 2.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/TD_l__lVBjI/AAAAAAAAATc/CBKdQ4KmN9w/s1600/Surface+IOException.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_X33DmaaF8aA/TD_l__lVBjI/AAAAAAAAATc/CBKdQ4KmN9w/s400/Surface+IOException.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Figure 2. If you mix the assembly references, you may get an IOException: Cannot locate resource 'controls/touchvisualizations/touchvisualizationsresources/trailtop.png'. This exception occured on the first touch after the Win7 application loaded.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;The solution to this is to add a versioning policy to redirect the v1.0 assembly to v1.5. This &lt;a href="http://msmvps.com/blogs/p3net/pages/redirecting-dependent-assembly-versions-in-net.aspx"&gt;blog &lt;/a&gt;has a good overview of &lt;/span&gt;versioning policies. In the Win7 project, add this to the app.config within the configuration &lt;configuration&gt; section:&lt;/configuration&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;runtime&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;  &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblyBinding&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="urn:schemas-microsoft-com:asm.v1"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;    &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;dependentAssembly&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;      &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;assemblyIdentity&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="Microsoft.Surface.Presentation"&lt;/span&gt; &lt;span class="attr"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="attr"&gt;          publicKeyToken&lt;/span&gt;&lt;span class="kwrd"&gt;="31BF3856AD364E35"&lt;/span&gt; &lt;span class="attr"&gt;culture&lt;/span&gt;&lt;span class="kwrd"&gt;="neutral"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;      &amp;lt;&lt;/span&gt;&lt;span class="html"&gt;bindingRedirect&lt;/span&gt; &lt;span class="attr"&gt;oldVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="0.0.0.0-1.5.0.0"&lt;/span&gt; &lt;span class="attr"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="attr"&gt;          newVersion&lt;/span&gt;&lt;span class="kwrd"&gt;="1.5.0.0"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;    &amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;dependentAssembly&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;  &amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;assemblyBinding&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;runtime&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;Just to be safe, you may want to also add the same thing to the Surface project's app.config, except change the newVersion to 1.0.0.0. This ensures that each project will always load the correct version of the assembly, provided it is installed. &lt;br /&gt;
&lt;br /&gt;
I have committed a few updates to the Blake.NUI project, including TestApplication.Common, TestApplication.Surface, and TestApplication.Win7. These three projects illustrate the ideas discussed in this blog. Download the latest code from the &lt;a href="http://blakenui.codeplex.com/SourceControl/list/changesets"&gt;Source Code tab&lt;/a&gt; on the CodePlex site.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;3. Summary&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;We have learned how to structure a WPF 4 solution to target both Win7 and Surface while reusing almost all of our code in a common library. We also saw how to configure the projects to ensure they load the correct version of the Surface assemblies at runtime.&lt;br /&gt;
&lt;br /&gt;
So far, we know that we can only reference the Surface controls that exist in both Surface SDK and Surface Toolkit. In the next post, I will discuss some techniques that can enable you to use the Surface SDK-specific controls such as TagVisualizer and ElementMenu while maximizing the code reuse.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-3531738843158086134?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=7313EJuVwfU:7fei4m1X59g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=7313EJuVwfU:7fei4m1X59g:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=7313EJuVwfU:7fei4m1X59g:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=7313EJuVwfU:7fei4m1X59g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/7313EJuVwfU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/3531738843158086134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/07/sharing-binaries-between-surface-and.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3531738843158086134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/3531738843158086134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/7313EJuVwfU/sharing-binaries-between-surface-and.html" title="Sharing binaries between Surface and Windows 7" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_X33DmaaF8aA/TCw0mNAlXHI/AAAAAAAAATE/cekfD-pGA4Y/s72-c/SurfaceTouchDevice+architecture.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://nui.joshland.org/2010/07/sharing-binaries-between-surface-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4CR3Y8cCp7ImA9Wx5TEEk.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-246091408291422756</id><published>2010-07-14T00:01:00.003-04:00</published><updated>2010-07-25T03:46:06.878-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-25T03:46:06.878-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="Multitouch" /><category scheme="http://www.blogger.com/atom/ns#" term="Blake.NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft Surface" /><title>How to write WPF 4 Surface applications with Blake.NUI</title><content type="html">&lt;i&gt;This post is part of a series about Blake.NUI, my open-source library for multi-touch &lt;/i&gt;&lt;i&gt;natural user interface development with &lt;/i&gt;&lt;i&gt;WPF 4 and Surface. In this post I discuss the origin of SurfaceTouchDevice and MouseTouchDevice and how to use them in your application. See my &lt;a href="http://nui.joshland.org/2010/07/announcing-blakenui-multi-touch-nui.html"&gt;Blake.NUI announcement post &lt;/a&gt;for details as well as a discount code for my book Multitouch on Windows, good until July 23.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Between InfoStrat projects and writing my book, I've been neck-deep developing WPF 4 Touch and Surface applications for months. If you have used them both then you'll know that the WPF 4 Touch API is a little bit easier to develop for than the Surface SDK it is based upon. This is because WPF 4 touch and manipulation features are integrated directly into the framework. There are also a few other subtle differences, like not needing a separate ManipulationProcessor and InertiaProcessor.&lt;br /&gt;
&lt;br /&gt;
On my current project, I needed to create a Surface and a Win7 version of the same application. I decided that I wanted to use .NET 4 on Surface. This would let me take advantage of the new &lt;a href="http://10rem.net/blog/2009/10/27/easing-functions-in-wpf-4-and-silverlight"&gt;animation easing functions&lt;/a&gt; in .NET 4 and it would let me reuse more code between both versions of the application. First problem: can I install Visual Studio 2010 and .NET 4 on Surface? I &lt;a href="http://twitter.com/joshblake/status/15956082902"&gt;tweeted&lt;/a&gt; @Surface and Eric Havir &lt;a href="http://twitter.com/Surface/status/15974173282"&gt;replied&lt;/a&gt;. Figure 1 shows this twitter conversation.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img alt="joshblake: @MSSurface Can .NET 4 be installed on a #Surface device? Just curious. / surface: @joshblake I can check. My guess is it can, but the SDK only works with 3.5, you wouldn't be using it directly with Surface apps." border="0" height="400" src="http://2.bp.blogspot.com/_X33DmaaF8aA/TCvWUNBgtZI/AAAAAAAAAS0/xoj3zOJVjpI/s400/Surface+net4+tweets.png" width="400" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Figure 1. A twitter conversation between me and Eric Havir from @Surface where he confirms .NET 4 would probably install but could not be used for Surface apps.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
That is pretty much what I expected. It's been known since  &lt;a href="http://www.microsoftpdc.com/2009/CL27"&gt;PDC09&lt;/a&gt; that the roadmap  for the future of Surface includes the WPF 4 Touch API on Windows 7, as shown in figure 2. This sounds like a great unified platform, but it doesn't help me now. The currently available Surface SDK was designed for .NET 3.5 SP1 and uses a custom Surface Input mechanism that doesn't feed into the WPF 4 touch system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/TD0qRkdcyJI/AAAAAAAAATU/Y4Oi4yrCh7U/s1600/Surface+Roadmap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_X33DmaaF8aA/TD0qRkdcyJI/AAAAAAAAATU/Y4Oi4yrCh7U/s400/Surface+Roadmap.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Figure 2. A slide from the PDC09 &lt;a href="http://www.microsoftpdc.com/2009/CL27"&gt;Multi-touch on Microsoft Surface and Windows 7 session&lt;/a&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;
I went ahead and installed Visual Studio 2010 on my Surface anyway because I wanted to use the easing functions. It turns out that Surface applications compile just fine under .NET 4 and even the SDK works, both in the emulator and on a Surface device. I figured I would just create some common controls and branch most of my project to target either the WPF 4 Touch with Surface Toolkit or the Surface SDK.&lt;br /&gt;
&lt;br /&gt;
But wait! WPF 4 uses TouchDevices. TouchDevices are extensible. Anson Tsao, a Principal Program Manager who was responsible for the WPF 4 Touch API, wrote about creating &lt;a href="http://blogs.msdn.com/b/ansont/archive/2010/01/30/custom-touch-devices.aspx"&gt;custom touch devices&lt;/a&gt; in January.&lt;br /&gt;
&lt;br /&gt;
So I'm thinking maybe if I create a custom touch device that listens to the Surface Contact events, I could process those events into WPF 4 TouchDevices and not even write against the Surface SDK.&lt;br /&gt;
&lt;br /&gt;
Well once I had the idea in my head, I had to do it. I created a class, SurfaceTouchDevice, that derives from TouchDevice and promotes Surface SDK Contact events to WPF 4 TouchDevice events. This means that if you install .NET 4 on your Surface and write against the WPF 4 Touch API, It Just Works™.&lt;br /&gt;
&lt;br /&gt;
Here's the best part. All you need to do to enable this dark magic is add this line of code to the constructor of your SurfaceWindow:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="csharpcode"&gt;SurfaceTouchDevice.RegisterEvents(&lt;span class="kwrd"&gt;this&lt;/span&gt;);&lt;/pre&gt;&lt;br /&gt;
That's it. Now the same code that works with WPF 4 Touch will also work on Surface. This also means you can develop with Visual Studio 2010. The SurfaceTouchDevice class will not work on a Win7 machine, though, since the Contacts class is not present  in the Surface Toolkit.&lt;br /&gt;
&lt;br /&gt;
In most cases you won't need to do anything else. Surface SDK controls,  such as TagVisualizer, will react to and handle Contact events.  Unhandled events will be promoted to WPF 4 Touch events by the SurfaceTouchDevice class, and then your code will react to the WPF 4 Touch events.&lt;br /&gt;
&lt;br /&gt;
If you do want to check an actual Surface  property, such as whether the TouchDevice represents a tag or a blob,  you can get access to the original Contact by casting the TouchDevice to  a SurfaceTouchDevice:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; TouchDown(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, TouchEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;bool&lt;/span&gt; isFinger = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    SurfaceTouchDevice device = e.TouchDevice &lt;span class="kwrd"&gt;as&lt;/span&gt; SurfaceTouchDevice;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (device != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        isFinger = device.Contact.IsFingerRecognized;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="rem"&gt;//Do something &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
You can also filter out touches from your manipulations by iterating through e.Manipulations, casting each IManipulator to SurfaceTouchDevice, and calling Manipulation.RemoveManipulator for undesired IManipulators. I will probably add this feature to SurfaceTouchDevice in an update to Blake.NUI.&lt;br /&gt;
&lt;br /&gt;
I also created a MouseTouchDevice class that operates similarly except promotes mouse input to touch input. This is helpful so I do not need to create MouseDown/Move/Up events when I'm creating a custom touch control with TouchDown/Move/Up.&amp;nbsp; It also means the mouse can participate in the manipulation processor.&lt;br /&gt;
&lt;br /&gt;
Both SurfaceTouchDevice and MouseTouchDevice are available, free and open-source, in &lt;a href="http://blakenui.codeplex.com/"&gt;Blake.NUI&lt;/a&gt;, my library of helpful multi-touch NUI code for WPF 4 and Surface.&lt;br /&gt;
&lt;br /&gt;
Now that SurfaceTouchDevice is available, I cannot think of a reason why you would not want to install Visual Studio 2010 on your Surface and write all applications with WPF 4. In my &lt;a href="http://nui.joshland.org/2010/07/sharing-binaries-between-surface-and.html"&gt;next post&lt;/a&gt;, I'm going to talk about how to set up your application architecture so you can share 99% of your code with no changes or branches for Microsoft Surface and Win7.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-246091408291422756?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=0LHJsV8MlUQ:P9EX2yO_ZLk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=0LHJsV8MlUQ:P9EX2yO_ZLk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=0LHJsV8MlUQ:P9EX2yO_ZLk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=0LHJsV8MlUQ:P9EX2yO_ZLk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/0LHJsV8MlUQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/246091408291422756/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/07/how-to-write-surface-applications-with.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/246091408291422756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/246091408291422756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/0LHJsV8MlUQ/how-to-write-surface-applications-with.html" title="How to write WPF 4 Surface applications with Blake.NUI" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X33DmaaF8aA/TCvWUNBgtZI/AAAAAAAAAS0/xoj3zOJVjpI/s72-c/Surface+net4+tweets.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://nui.joshland.org/2010/07/how-to-write-surface-applications-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4DRHw_eyp7ImA9WxFbGUQ.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-7069349801297119639</id><published>2010-07-12T23:14:00.001-04:00</published><updated>2010-07-12T23:16:15.243-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-12T23:16:15.243-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MultitouchOnWindows" /><category scheme="http://www.blogger.com/atom/ns#" term="Multitouch" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Blake.NUI" /><title>Announcing Blake.NUI - a multi-touch NUI library</title><content type="html">Almost all my free time and creative efforts recently have been focused on my book, but I've been able to put together something really cool that I think will be useful for anyone doing multi-touch natural user interface work with WPF. Actually, it's a couple really cool things packaged into one.&lt;br /&gt;
&lt;br /&gt;
I'm happy to announce &lt;b&gt;Blake.NUI&lt;/b&gt;, an open-source library for multi-touch NUI development. Blake.NUI is available  under the MS-PL license at CodePlex:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;a href="http://blakenui.codeplex.com/"&gt;http://blakenui.codeplex.com&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
It is a collection of the most useful reusable code that I have created for my own projects and for my book's code samples. It currently includes code for WPF 4 and Surface, although in the future I may add Silverlight code as well.&lt;br /&gt;
&lt;br /&gt;
The library is still in undergoing changes. I may add or rearrange things, but I will document changes from version to version. Here are some of the things currently included in Blake.NUI:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Controls &lt;/b&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;ZoomCanvas - an infinite canvas control that is the heart of NaturalShow&lt;/li&gt;
&lt;li&gt;CircleText - layout text along the circumference of a circle&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt; &lt;b&gt;Gestures&lt;/b&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;TapGestureTrigger - a configurable Blend Trigger that fires when the user completes a tap gesture&lt;/li&gt;
&lt;li&gt;DoubleTapGestureTrigger - a configurable Blend Trigger that fires when the user completes a double tap gesture&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;TouchDevices&lt;/b&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt; MouseTouchDevice - promotes mouse input to WPF 4 touch events&lt;/li&gt;
&lt;li&gt;SurfaceTouchDevice - promotes Microsoft Surface vision system input to WPF 4 touch events&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;Common classes and utilities&lt;/b&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;DisplayMatrix &lt;/li&gt;
&lt;li&gt;AnimateUtility and SurfaceAnimateUtility&lt;/li&gt;
&lt;li&gt;ScatterMatrixHelper&lt;/li&gt;
&lt;li&gt;MathUtility &lt;/li&gt;
&lt;li&gt;VisualUtility&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;b&gt;NaturalShow&lt;/b&gt;&lt;/li&gt;

&lt;ul&gt;&lt;li&gt;Common models, views, factories, and other classes &lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;The full NaturalShow application is not yet included, but many of the core classes are. I'm updating NaturalShow to use Blake.NUI rather than its older, internal versions of the same code.&lt;br /&gt;
&lt;br /&gt;
I'm particularly excited about SurfaceTouchDevice, since with one line of code it enables you to write multi-touch applications against the WPF 4 Touch API, including the integrated touch events and manipulations, and run it on your existing Microsoft Surface devices without modification. This also means you can, with a simple project structure, target both Win7 Touch and Surface v1 with 99% of the same code base! You do have to install .NET 4 and/or Visual Studio 2010 on your Surface.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://bit.ly/dn0QDq" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_X33DmaaF8aA/TDvZXzDZZNI/AAAAAAAAATM/R7RZ5Th2W64/s200/blake_cover150.jpg" width="160" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I will be celebrating the launch of Blake.NUI all this wee by posting a series of blog posts about how to use the library. In addition, you can buy the ebook edition of Multitouch on Windows until July 23rd for 35% off through &lt;a href="http://bit.ly/dn0QDq"&gt;this link&lt;/a&gt; using coupon code blake35bl. (Disclosure: if you buy after clicking this affiliate link it gives me a few extra dollars from the sale.)&lt;br /&gt;
&lt;br /&gt;
I am asking as a courtesy that if you find Blake.NUI useful,  particularly for commercial projects, that you buy a copy of my book,  Multitouch on Windows. The coupon code provided should help.&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Please let me know what you think about Blake.NUI and whether you think you'll use it in your applications.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-7069349801297119639?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=pOZoD6npQX0:5w-zFJc-LdY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=pOZoD6npQX0:5w-zFJc-LdY:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=pOZoD6npQX0:5w-zFJc-LdY:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=pOZoD6npQX0:5w-zFJc-LdY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/pOZoD6npQX0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/7069349801297119639/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/07/announcing-blakenui-multi-touch-nui.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7069349801297119639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7069349801297119639?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/pOZoD6npQX0/announcing-blakenui-multi-touch-nui.html" title="Announcing Blake.NUI - a multi-touch NUI library" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X33DmaaF8aA/TDvZXzDZZNI/AAAAAAAAATM/R7RZ5Th2W64/s72-c/blake_cover150.jpg" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://nui.joshland.org/2010/07/announcing-blakenui-multi-touch-nui.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cDR3c7fCp7ImA9WxFWF0s.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-7434038049731855603</id><published>2010-06-05T13:45:00.003-04:00</published><updated>2010-06-05T14:04:36.904-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-05T14:04:36.904-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="NaturalShow" /><title>NaturalShow and new interviews</title><content type="html">Coincidentally, two different shows featuring me talking about NUI were posted yesterday, even though the interviews were several weeks apart.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Brian Peek interviewed for for his Channel9 Coding4Fun show. We talked about NUI and NaturalShow and I showed some of the actual code  and how it works.&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/shows/Coding4FunTV/The-Coding4Fun-Show-Natural-User-Interfaces-with-Josh-Blake/"&gt;http://channel9.msdn.com/shows/Coding4FunTV/The-Coding4Fun-Show-Natural-User-Interfaces-with-Josh-Blake/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I also spoke at Richmond Code Camp about NUI last mont and while I was there I  was included in a segment of the The Community Megaphone Podcast hosted by Dane Morgridge and Andrew Duthie. I'm the second to last interview.&lt;br /&gt;
&lt;a href="http://www.communitymegaphonepodcast.com/"&gt;http://www.communitymegaphonepodcast.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I also found out recently that my session submission for the Heartland Development Conference was accepted! HDC is September 8-10 in Omaha, NE.&lt;br /&gt;
&lt;a href="http://www.heartlanddc.com/?page_id=455"&gt;Deconstructing the Natural User Interface: UX design in the NUI  revolution &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Finally, I want to make the announcement on my blog that I will be making NaturalShow open source and it will be made available along with my book. I'm going to integrate it with some of the topics in some of the chapters. &lt;a href="http://bit.ly/dn0QDq"&gt;MEAP subscribers&lt;/a&gt; will get the first access to it, although those chapters are not complete yet. I'll be sure to announce when they're included.&lt;br /&gt;
&lt;br /&gt;
[&lt;b&gt;Update: &lt;/b&gt;fixed links, thanks Ben!]&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-7434038049731855603?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iPdxx0jVsLo:9BTpwMczk2I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iPdxx0jVsLo:9BTpwMczk2I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=iPdxx0jVsLo:9BTpwMczk2I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=iPdxx0jVsLo:9BTpwMczk2I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/iPdxx0jVsLo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/7434038049731855603/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/06/naturalshow-and-new-interviews.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7434038049731855603?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7434038049731855603?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/iPdxx0jVsLo/naturalshow-and-new-interviews.html" title="NaturalShow and new interviews" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2010/06/naturalshow-and-new-interviews.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GRHk5cCp7ImA9WxFTFUk.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-6467928587858931354</id><published>2010-04-06T03:29:00.003-04:00</published><updated>2010-04-06T04:00:25.728-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-06T04:00:25.728-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="touch" /><category scheme="http://www.blogger.com/atom/ns#" term="Surface Toolkit" /><title>Why won't WPF controls work with touch manipulations?</title><content type="html">I recently tweeted asking for some scenarios using WPF Touch, and I got an email from Josh Santangelo (&lt;a href="http://twitter.com/endquote"&gt;@endquote&lt;/a&gt;) with few interesting touch challenges. I created some sample code and sent him back some solutions to his challenges, but I figured they would be useful for the community.&lt;br /&gt;
&lt;br /&gt;
In this blog, I'll answer the question: "Why won't WPF controls work with manipulations?" (This is my own phrasing, not Josh Sanangelo's.)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Problem:&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
You have a container with some manipulations (perhaps like a ScatterView) and this container has some standard WPF controls like buttons or checkboxes. You can use touch to manipulate the container, and you can use the mouse to click the controls, but touch mysteriously doesn't affect the controls. (The mouse also can't manipulate the container, but that is another post.)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Reason:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
When you touch the screen, WPF generates touch events, such as TouchDown, TouchMove, and TouchUp. These are all routed events, which means that first the PreviewTouchDown event is fired on the root of the visual tree, then the next element down the hierarchy, then the next, all the way down the source element that the touch event occured over, as long as the event is not handled along the way.&lt;br /&gt;
&lt;br /&gt;
Once it reaches the source element, the TouchDown event is fired starting from the source element and proceeding up the visual tree to the root. At any point if any of the visual elements set e.IsHandled = true, then the event propagation stops.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if the event propagation reaches all the way up to the root, then the touch event is promoted to a mouse event. At this point, PreviewMouseDown and MouseDown is fired down and up the visual tree.&lt;br /&gt;
&lt;br /&gt;
In our case, when you use touch and there is no manipulation, the touch events return unhandled, then the mouse events are fired and the button handled that and calls your Click event handler. The WPF controls such as button only listen for mouse events (exception: ScrollViewer when PanningMode is set.) This process is illustrated in figure 1.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/S7rWihOjGWI/AAAAAAAAASA/yNAp9eTkJpE/s1600/WPF+button+touch+flow+1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="207" src="http://2.bp.blogspot.com/_X33DmaaF8aA/S7rWihOjGWI/AAAAAAAAASA/yNAp9eTkJpE/s400/WPF+button+touch+flow+1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 1. (Click for larger size.) The touch event flow with no manipulations. The touch events are unhandled, so WPF promotes the event to the mouse equivalent. The button is listening for mouse events and handles that, then calls your Click event handler.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;When you do have manipulations enabled in the visual tree, something different happens, as illustrated in figure 2.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/S7rXNb2sJtI/AAAAAAAAASI/1Z7VXbLGIlI/s1600/WPF+button+touch+flow+2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://2.bp.blogspot.com/_X33DmaaF8aA/S7rXNb2sJtI/AAAAAAAAASI/1Z7VXbLGIlI/s400/WPF+button+touch+flow+2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 2. (Click for larger size.) When the border has IsManipulationEnabled = true, the manipulation processor handles the TouchDown event and captures the touch device. All future events go directly to the Border, and the ManipulationProcessor handles the rest.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;In the case where the Border has a manipulation, the touch event flow is never promoted to mouse events, so the button doesn't even have any idea what is going on. Button didn't get the memo.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;
Of course, it doesn't have to be this way. Sometime soon, the &lt;a href="http://blogs.msdn.com/devkeydet/archive/2009/11/21/surface-toolkit-for-windows-touch.aspx"&gt;Surface Toolkit for Windows Touch&lt;/a&gt; will be released and you'll be able to use the SurfaceButton and the other controls which are designed for touch and handle the touch events. Figure 3 shows a list of the WPF controls the Surface toolkit optimizes for touch.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="85" src="http://4.bp.blogspot.com/_X33DmaaF8aA/S7rZ1IVfliI/AAAAAAAAASQ/Q1F-o88vkzg/s400/SurfaceToolkit+controls.png" width="400" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Figure 3. (Click for larger size.) Surface Toolkit for Windows Touch offers touch-optimized controls that can replace most of the common WPF controls. This is only a partial list of what the Surface Toolkit offers.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
But that doesn't help you now. Suppose you have this XAML inside of a container with manipulations:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBox&lt;/span&gt; &lt;span class="attr"&gt;Name&lt;/span&gt;&lt;span class="kwrd"&gt;="txtCounter"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;         &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="0"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;         &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;         &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;="Center"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Native Button Won't work"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="40"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="attr"&gt;Click&lt;/span&gt;&lt;span class="kwrd"&gt;="button_Click"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;and this code in the code behind:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    IncrementCounter();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; IncrementCounter()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; number = &lt;span class="kwrd"&gt;int&lt;/span&gt;.Parse(txtCounter.Text) + 1;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    txtCounter.Text = number.ToString();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;} &lt;/pre&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;This button will not work and the event flow will look like figure 2. Instead, update the button XAML to this:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; &lt;span class="attr"&gt;Content&lt;/span&gt;&lt;span class="kwrd"&gt;="Will work with TouchDown/Up"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;="10"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;="40"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="attr"&gt;Click&lt;/span&gt;&lt;span class="kwrd"&gt;="button_Click"&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="attr"&gt;TouchDown&lt;/span&gt;&lt;span class="kwrd"&gt;="button_TouchDown"&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="attr"&gt;TouchUp&lt;/span&gt;&lt;span class="kwrd"&gt;="button_TouchUp"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
and add these methods in the code behind:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button_TouchDown(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, TouchEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    FrameworkElement button = sender &lt;span class="kwrd"&gt;as&lt;/span&gt; FrameworkElement;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (button == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    button.CaptureTouch(e.TouchDevice);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    e.Handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button_TouchUp(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, TouchEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    FrameworkElement button = sender &lt;span class="kwrd"&gt;as&lt;/span&gt; FrameworkElement;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (button == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    TouchPoint tp = e.GetTouchPoint(button);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    Rect bounds = &lt;span class="kwrd"&gt;new&lt;/span&gt; Rect(&lt;span class="kwrd"&gt;new&lt;/span&gt; Point(0, 0), button.RenderSize);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (bounds.Contains(tp.Position))&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        IncrementCounter();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    button.ReleaseTouchCapture(e.TouchDevice);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    e.Handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
Now your button will work inside of the container with both mouse and touch. A little explanation:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Line 7: &lt;/b&gt;We capture the touch so that the TouchUp and other touch events will be sent to this button, even if it occurs somewhere else.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Line 9: &lt;/b&gt;We must set this event to handled, otherwise the TouchDown event will continue to bubble up and the border's manipulation processor will steal the capture, depriving the button of a TouchUp event.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lines 18-20:&lt;/b&gt; We check to make sure the TouchPoint is still within the bounds of the button. The user could have touched the button, but changed his or her mind and moved outside of the button to release the touch. This is consistent with the mouse behavior of buttons.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Line 22:&lt;/b&gt; We just call the same function that the button_Click() event handler called to get the same effect. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Lines 25-27:&lt;/b&gt; We release the capture and handle this event as well. Technically we might be able to get away without these lines in this scenario but we should do it anyway. In a more complicated scenario there might be an unintended side-effect if we do not do this.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
You can apply this technique to the other non-touch aware WPF controls if necessary, although it may get a little tedious. I &lt;i&gt;almost&lt;/i&gt; wrote a &lt;a href="http://team.silverlight.net/product-technology-deep-dive/product-feature-highlight-expression-blend-3-ndash-behaviors/"&gt;Blend behavior&lt;/a&gt; (part of the Blend 3 SDK and usable in more than just Blend) for this, but figured that the Surface Toolkit will be out soon enough anyway.*&lt;br /&gt;
&lt;br /&gt;
(* No I don't have a date for the release of Surface Toolkit. Sorry!)&lt;br /&gt;
&lt;br /&gt;
You can download the source code for this project below:&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;a href="http://www.blogger.com/www.handsonnui.com/files/ButtonInManipulation.zip"&gt;&lt;br /&gt;
&lt;img border="0" src="http://www.handsonnui.com/files/document.png" /&gt;&lt;br /&gt;
ButtonInManipulation.zip&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;Thanks to Ryan Lee for &lt;a href="http://gesturecons.com/"&gt;Gesturecons&lt;/a&gt;, where I got the hand icon used in the figures.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-6467928587858931354?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=X7Zu5zBtdu8:kcDVejlw7MA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=X7Zu5zBtdu8:kcDVejlw7MA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=X7Zu5zBtdu8:kcDVejlw7MA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=X7Zu5zBtdu8:kcDVejlw7MA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/X7Zu5zBtdu8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/6467928587858931354/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html#comment-form" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6467928587858931354?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6467928587858931354?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/X7Zu5zBtdu8/why-wont-wpf-controls-work-with-touch.html" title="Why won't WPF controls work with touch manipulations?" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X33DmaaF8aA/S7rWihOjGWI/AAAAAAAAASA/yNAp9eTkJpE/s72-c/WPF+button+touch+flow+1.png" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://nui.joshland.org/2010/04/why-wont-wpf-controls-work-with-touch.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINR3o5fSp7ImA9WxFTFU8.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-7529484615236894862</id><published>2010-04-06T00:18:00.002-04:00</published><updated>2010-04-06T00:19:56.425-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-06T00:19:56.425-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="definition" /><category scheme="http://www.blogger.com/atom/ns#" term="Book" /><title>NUIs reuse existing skills (updated NUI definition)</title><content type="html">Last month I &lt;a href="http://nui.joshland.org/2010/03/what-is-natural-user-interface-book.html"&gt;posted&lt;/a&gt; an excerpt from my book with a section that contained a definition of natural user interface.&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;A natural user interface is a user interface designed to use natural  human behaviors for interacting directly with content.&lt;/b&gt; &lt;/blockquote&gt;It sparked some great conversation both in the comments of that post and some other blogs. Richard Monson-Haefel suggested on &lt;a href="http://theclevermonkey.blogspot.com/2010/03/blakes-definition-of-nui.html"&gt;his blog&lt;/a&gt; that I consider changing the "use natural human behaviors" part to match how I talk about natural in terms of innate abilities and learned skills. Those discussions were derived from some of Bill Buxton's thoughts on NUI.&lt;br /&gt;
&lt;br /&gt;
At the time, I was on the fence about this change. I wrote in a comment that I liked using the simpler vocabulary words since it will be understandable by more non-technical folks, and that I liked the term behavior for a rhetorical reasons since in the beginning of chapter two I had an interesting set of phrases that needed it to say "behavior" to make sense. (I know that isn't a very good reason and actually I since deleted those pages with that particular discussion.) So I was leaning towards my initial definition but I was keeping my mind open for more convincing arguments.&lt;br /&gt;
&lt;br /&gt;
Well as it turned out, I was convinced by Bill Buxton at MIX10. He wasn't talking directly to me about this, but in his keynote he described how a saxaphone input device is a natural interface for someone who has years of saxaphone training, and he proceeded to use his electronic saxaphone (a Yamaha WX7 wind controller) to create flute and electric guitar sounds. Below is a screenshot, but if you want to watch his part of the keynote, skip to mark 96:45 of the &lt;a href="http://live.visitmix.com/MIX10/Sessions/KEY02"&gt;MIX10 Day 2 Keynote&lt;/a&gt; video.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S7qtrHFWJQI/AAAAAAAAAR4/dVbI49dtwH0/s1600/Buxton_saxaphone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S7qtrHFWJQI/AAAAAAAAAR4/dVbI49dtwH0/s320/Buxton_saxaphone.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;Bill Buxton uses a Yamaha WX-7 wind controller and his existing saxaphone skills to create music that sounds like a variety of non-saxaphone instruments.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;When I heard him describe this, I immediately understood that my existing definition ("use natural human behaviors") excluded advanced NUIs designs for people who were already experts with advanced skills. I had already prepared my &lt;a href="http://nui.joshland.org/2010/03/mix10-nui-recap.html#nuisession"&gt;NUI presentation&lt;/a&gt; for day 3 including the original definition, so directly after the keynote I went and changed it. In my session video you can see I used a revised definition of NUI, and in the next revision of chapter 1 (now updated in the MEAP) I also updated the definition.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: left;"&gt;Here is the updated book excerpt:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;blockquote&gt;There are several different ways to define the natural user interface. The easiest way to understand the natural user interface is to compare it to other type of interfaces such as the graphical user interface (GUI) and the command line interface (CLI). In order to do that, let's reveal the definition of NUI that I like to use. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;A natural user interface is a user interface designed to reuse existing skills for interacting directly with content.&lt;/b&gt;&lt;/blockquote&gt;There are three important things that this definition tells us about natural user interfaces.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
NUIs are designed&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
First, this definition tells us that natural user interfaces are designed, which means they require forethought and specific planning efforts in advance. Special care is required to make sure NUI interactions are appropriate for the user, the content, and the context. Nothing about NUIs should be thrown together or assembled haphazardly. We should acknowledge the role that designers have to play in creating NUI style interactions and make sure that the design process is given just as much priority as development.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NUIs reuse existing skills&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Second, the phrase "reuse existing skills" helps us focus on how to create interfaces that are natural. Your users are experts in many skills that they have gained just because they are human. They have been practicing for years skills for human-human communication, both verbal and non-verbal, and human-environmental interaction. Computing power and input technology has progressed to a point where we can take advantage of these existing non-computing skills. NUIs do this by letting users interact with computers using intuitive actions such as touching, gesturing, and talking, and presenting interfaces that users can understand primarily through metaphors that draw from real-world experiences.&lt;br /&gt;
&lt;br /&gt;
This is in contrast to GUI, which uses artificial interface elements such as windows, menus, and icons for output and pointing device such as a mouse for input, or the CLI, which is described as having text output and text input using a keyboard. &lt;br /&gt;
&lt;br /&gt;
At first glance, the primary difference between these definitions is the input modality -- keyboard verses mouse verses touch. There is another subtle yet important difference: CLI and GUI are defined explicitly in terms of the input device, while NUI is defined in terms of the interaction style. Any type of interface technology can be used with NUI as long as the style of interaction focuses on reusing existing skills.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NUIs have direct interaction with content&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Finally, think again about GUI, which by definition uses windows, menus, and icons as the primary interface elements. In contrast, the phrase "interacting directly with content" tells us that the focus of the interactions is on the content and directly interacting with it. This doesn't mean that the interface cannot have controls such as buttons or checkboxes when necessary. It only means that the controls should be secondary to the content, and direct manipulation of the content should be the primary interaction method.&lt;/blockquote&gt;I decided to say just "reuse existing skills" and not include the innate abilities part to keep it simpler and also because the thing that convinced me to change it was the fact that some NUIs may use advanced skills, so innate abilities may not always play into NUI. The core thing that did make it natural was reusing existing skills.&lt;br /&gt;
&lt;br /&gt;
I do need to thank the commenters on my last blog, Ben and Laurent, and particularly Richard, who had also put himself out there trying to define NUI but still had great comments about my thoughts. Richard pointed me in the right direction and with some time and thought I realized that he was correct. It's you, my readers, who will help me make this book totally awesome.&lt;br /&gt;
&lt;br /&gt;
Please keep the feedback coming and feel free to call me out if you think I could improve something.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-7529484615236894862?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=lRxlj8VPz28:335toeyjYMM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=lRxlj8VPz28:335toeyjYMM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=lRxlj8VPz28:335toeyjYMM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=lRxlj8VPz28:335toeyjYMM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/lRxlj8VPz28" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/7529484615236894862/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/04/nuis-reuse-existing-skills.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7529484615236894862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/7529484615236894862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/lRxlj8VPz28/nuis-reuse-existing-skills.html" title="NUIs reuse existing skills (updated NUI definition)" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_X33DmaaF8aA/S7qtrHFWJQI/AAAAAAAAAR4/dVbI49dtwH0/s72-c/Buxton_saxaphone.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://nui.joshland.org/2010/04/nuis-reuse-existing-skills.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIGQ3Y-fCp7ImA9WxBaF0Q.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-6302748176664437917</id><published>2010-03-28T13:48:00.000-04:00</published><updated>2010-03-28T13:48:42.854-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-28T13:48:42.854-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="WPF" /><category scheme="http://www.blogger.com/atom/ns#" term="MIX10" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>MIX10 NUI session sample code</title><content type="html">I promised that I would provide the source code for the TouchGrid and ScatterTouch samples for WPF, Silverlight for web, and Silverlight for Windows Phone 7 from my &lt;a href="http://live.visitmix.com/mix10/sessions/ex18"&gt;MIX10 session&lt;/a&gt;. I provided a zip file with the sources to the people running the MIX website after my session, but it still hasn't been posted yet. So I'll just post it here on my blog.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;a href="http://www.handsonnui.com/files/MIX10_NUI_EX18.zip"&gt;http://www.handsonnui.com/files/MIX10_NUI_EX18.zip&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Important: &lt;/b&gt;I cannot re-distribute the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4B281BDE-9B01-4890-B3D4-B3B45CA2C2E4"&gt;Microsoft Surface Manipulations and Inertia Sample for Microsoft Silverlight&lt;/a&gt; files so you will have to download that yourself and add a reference to System.Windows.Input.Manipulations to these projects SL_ScatterTouch and WP7_ScatterTouch. See the readme.txt for more details.&lt;br /&gt;
&lt;br /&gt;
Of course if you want to run the Windows Phone 7 samples you'll need the &lt;a href="http://developer.windowsphone.com/"&gt;Windows Phone 7 SDK&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Have fun!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-6302748176664437917?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=-C0QQoQ12Vk:aP2nSnBEeTw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=-C0QQoQ12Vk:aP2nSnBEeTw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=-C0QQoQ12Vk:aP2nSnBEeTw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=-C0QQoQ12Vk:aP2nSnBEeTw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/-C0QQoQ12Vk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/6302748176664437917/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/03/mix10-nui-session-sample-code.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6302748176664437917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6302748176664437917?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/-C0QQoQ12Vk/mix10-nui-session-sample-code.html" title="MIX10 NUI session sample code" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://nui.joshland.org/2010/03/mix10-nui-session-sample-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcDQHYyfip7ImA9WxFTFU8.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-8548860066537540698</id><published>2010-03-24T02:37:00.004-04:00</published><updated>2010-04-05T23:54:31.896-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-05T23:54:31.896-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIX10" /><category scheme="http://www.blogger.com/atom/ns#" term="NUI" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="WP7" /><title>MIX10 NUI Recap</title><content type="html">Well I'm pretty much recovered from MIX10 by now (March 15-17 in Las Vegas). The whole experience was a blast. Here are the highlights for me:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Windows Phone 7 Series&lt;/span&gt;&lt;/b&gt; - Finally we learn the full scoop of the WP7 development story. Very excited about the Silverlight and XNA focus. I'm also relieved to learn that WP7 flavor of Silverlight has manipulation processors built in. It isn't quite the same as the WPF manipulations or even the Silverlight manipulations sample (no rotation support) but it makes multi-touch development feasible.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;NUI MIXup&lt;/span&gt;&lt;/b&gt; - I organized a get-together for NUI and multi-touch enthusiasts Monday night. &lt;a href="http://blogs.msdn.com/devkeydet/"&gt;Marc Schweigert&lt;/a&gt; (&lt;a href="http://twitter.com/devkeydet"&gt;@devkeydet&lt;/a&gt;) was able to get sponsorship from his team for drinks and appetizers for the group. It was well attended, about 25 or 30 people. We even had &lt;a href="http://drneil.blogspot.com/"&gt;Dr. Neil&lt;/a&gt; and &lt;a href="http://billbuxton.com/"&gt;Bill Buxton&lt;/a&gt; (yes, keynote favorite Bill Buxton!) hang out! After we chatted for about an hour in&amp;nbsp;one of the conference spaces, we moved&amp;nbsp;down to the&amp;nbsp;Border Grill where Marc treated us to drinks and light dinner.&amp;nbsp;See some pictures below, thanks to fellow presenter and NUI enthusiast&amp;nbsp;&lt;a href="http://www.codefest.at/post/2010/03/17/Mix-2010-in-Las-Vegas-Keynote-Tag-2-Internet-Explorer-9-und-Design.aspx"&gt;Mario&amp;nbsp;Meir-Huber&lt;/a&gt;&amp;nbsp;(&lt;a href="http://twitter.com/mario_mh"&gt;@mario_mh&lt;/a&gt;):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mk5bJFyAI/AAAAAAAAAQs/mIySIOOqS_Q/s1600-h/nuimixup1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mk5bJFyAI/AAAAAAAAAQs/mIySIOOqS_Q/s400/nuimixup1.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Bill Buxton, &lt;a href="http://twitter.com/seraph_ben"&gt;Ben Reierson&lt;/a&gt;&amp;nbsp;(&lt;a href="http://twitter.com/seraph_ben"&gt;@seraph_ben&lt;/a&gt;), and Dr. Neil chatting about Windows Phone 7 design.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mlNs_teRI/AAAAAAAAAQ0/-VGhaoWfgFI/s1600-h/nuimixup3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mlNs_teRI/AAAAAAAAAQ0/-VGhaoWfgFI/s400/nuimixup3.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;The whole group of us heading towards dinner. Marc leads the charge on the left, and I'm in the middle with the black shirt chatting with &lt;a href="http://okayjames.com/"&gt;James Chittenden&lt;/a&gt; (&lt;a href="http://twitter.com/okayjames"&gt;@okayjames&lt;/a&gt;).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mmxLPi7jI/AAAAAAAAAQ8/jbeN54Z1m7w/s1600-h/nuimixup5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="301" src="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mmxLPi7jI/AAAAAAAAAQ8/jbeN54Z1m7w/s400/nuimixup5.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Just about the highlight of my whole week, I had the opportunity to chat with Bill for over an hour at dinner along with several others that attended. It was a humbling experience.&lt;/div&gt;&lt;br /&gt;
&lt;a name="nuisession"&gt;&lt;/a&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;NUI Development session&lt;/span&gt;&lt;/b&gt; - I didn't go to many sessions in person (they're available for download) because I spent a lot of time Monday and Tuesday putting the final touches on my presentation for Wednesday. I prepared a custom multi-touch presentation tool called NaturalShow that takes the place of PowerPoint. Even Tuesday evening I was sweating some last minute changes in the application, trying to maximize the performance. I also have to thank Josh Wall for listening to at least two dry runs and giving me great advice and feedback.&lt;br /&gt;
&lt;br /&gt;
You can &lt;a href="http://live.visitmix.com/mix10/sessions/ex18"&gt;watch or download my presentation&lt;/a&gt; at the MIX10 site.&lt;br /&gt;
&lt;br /&gt;
The presentation itself went pretty smoothly. The&amp;nbsp;session had great attendance (144+) and the audience seemed engaged.&amp;nbsp;My demos worked as expected, and NaturalShow didn't crash or otherwise behave abnormally. I included a hashtag &lt;a href="http://search.twitter.com/search?q=%23mix10nui"&gt;#MIX10NUI&lt;/a&gt; so that twitter inclined people could follow the conversation. One posted this photo mid-presentation:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mnc_k4ujI/AAAAAAAAARE/8xuuy64SXlM/s1600-h/mix10nui.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mnc_k4ujI/AAAAAAAAARE/8xuuy64SXlM/s400/mix10nui.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Taken from about 1/4 of the way back. The smudges around the word "design" are auras of my fingers starting to zoom in.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;I have to admit that part of the reason I threw out the #MIX10NUI hash tag was so I could easily go back and read real-time feedback. When I did I was blown away by the things people said. There were two fair complaints (I took a shortcut when I described Occam's Razor and I forgot to zoom in on code, even though I had practiced doing that) but overall everyone said great things. At the risk of seeming self-focused for a moment, here are two of the most superlative comments that really made my day:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mqQYwtwyI/AAAAAAAAARM/Xuej4GRw8Vo/s1600-h/mix10nui_tweet1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="170" src="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mqQYwtwyI/AAAAAAAAARM/Xuej4GRw8Vo/s400/mix10nui_tweet1.png" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mqU2SAsVI/AAAAAAAAARU/0WY8hvkMAd4/s1600-h/mix10nui_tweet2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mqU2SAsVI/AAAAAAAAARU/0WY8hvkMAd4/s400/mix10nui_tweet2.png" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;My session was&amp;nbsp;also mentioned in several other people's conference recap blog posts: &lt;a href="http://www.lukew.com/ff/entry.asp?1027"&gt;Luke Wroblewski&lt;/a&gt;, &lt;a href="http://www.cplotts.com/2010/03/20/mix10-recap/"&gt;Cory Plotts&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/rweigelt/archive/2010/03/21/7391916.aspx"&gt;Roland Weigelt&lt;/a&gt;, &lt;a href="http://spacecataz.spaces.live.com/Blog/cns%215F2F2910C93118B9%212238.entry"&gt;Ben Reierson&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
I guess the point here is that MIX10 was very much about the networking and making new acquaintences as well as meeting online friends for the first time. I'm still pumped by getting to meet so many awesome people, including the ones mentioned above, &lt;a href="http://twitter.com/stevedawson"&gt;Steve Dawson&lt;/a&gt;, &lt;a href="http://twitter.com/pete_brown"&gt;Pete Brown&lt;/a&gt;, &lt;a href="http://twitter.com/lbugnion"&gt;Laurent Bugnion&lt;/a&gt;, &lt;a href="http://twitter.com/ideakitchn"&gt;Sean Getery&lt;/a&gt; and his crew, and many others I'm know I'm missing. Many times it was just a challenge to associate someone's real name with their twitter handle.&lt;br /&gt;
&lt;br /&gt;
After the conference itself died down, Josh Wall and I went out to dinner at Hard Rock Cafe, checked out how they were using Microsoft Surface and a custom touch wall, and chatted about how we were going to apply the loads&amp;nbsp;of information and ideas we gathered at MIX10 to improve InfoStrat.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_X33DmaaF8aA/S6mw3TrYHtI/AAAAAAAAARc/PKzGX9LBgE4/s1600-h/hard+rock+touch+wall.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://1.bp.blogspot.com/_X33DmaaF8aA/S6mw3TrYHtI/AAAAAAAAARc/PKzGX9LBgE4/s400/hard+rock+touch+wall.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;This touch wall at Hard Rock let you explore memorabilia and was very popular.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mxDvqRgNI/AAAAAAAAARk/3YaAhdxcKI0/s1600-h/hard+rock+surface+2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mxDvqRgNI/AAAAAAAAARk/3YaAhdxcKI0/s400/hard+rock+surface+2.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Josh Wall testing the limits of interaction design at the Hard Rock Surface deployment.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mxGASPcjI/AAAAAAAAARs/maFjRpoEf74/s1600-h/hard+rock+surface.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="298" src="http://3.bp.blogspot.com/_X33DmaaF8aA/S6mxGASPcjI/AAAAAAAAARs/maFjRpoEf74/s400/hard+rock+surface.jpg" vt="true" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;This girl played with a bar-embedded&amp;nbsp;Surface for over an hour.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;Thank you so much to all the people I met and those who attended my session. I hope that we will continue our conversations throughout the year, and I can't wait for MIX11!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-8548860066537540698?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=5FVQ9or2h9c:nsVhoIqyJfU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=5FVQ9or2h9c:nsVhoIqyJfU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=5FVQ9or2h9c:nsVhoIqyJfU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=5FVQ9or2h9c:nsVhoIqyJfU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/5FVQ9or2h9c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/8548860066537540698/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/03/mix10-nui-recap.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/8548860066537540698?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/8548860066537540698?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/5FVQ9or2h9c/mix10-nui-recap.html" title="MIX10 NUI Recap" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_X33DmaaF8aA/S6mk5bJFyAI/AAAAAAAAAQs/mIySIOOqS_Q/s72-c/nuimixup1.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/03/mix10-nui-recap.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQNQXk7eip7ImA9WxBbFU0.&quot;"><id>tag:blogger.com,1999:blog-6890585452489792053.post-6480891237031060237</id><published>2010-03-13T14:09:00.000-05:00</published><updated>2010-03-13T14:09:50.702-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-13T14:09:50.702-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MIX10" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="NUIMIXup" /><title>NUI at MIX10</title><content type="html">I'm headed to Las Vegas tomorrow for the &lt;a href="http://live.visitmix.com/"&gt;MIX10&lt;/a&gt; conference. I'm excited about a lot of the topics and news that will be discussed. It will be great to meet a lot of the people I've only talked to online and meet new people.&lt;br /&gt;
&lt;br /&gt;
If you'll be at MIX10, I'd love to meet you! Here are two places I'll definitely be:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://twtvite.com/nuimixup"&gt;NUI MIXup&lt;/a&gt;, Monday the 15th, 7pm, The Commons&lt;br /&gt;
I'm organizing a tweetup at MIX10 (hence, MIXup) for NUI and multi-touch enthusiasts. Come hang out and chat with others about our shared interests. Depending upon how many people come, we'll chat for a bit then head to a bar or restaurant. Marc Schweigert will be buying a round or two.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://live.visitmix.com/MIX10/Sessions/EX18"&gt;Developing Natural User Interfaces session&lt;/a&gt;, Wednesday the 17th, 10:30am, Lagoon&amp;nbsp;F&lt;br /&gt;
This is my session! I'm very very excited about it (and thank you again to those who voted for me in the Open Call). I've created a custom multi-touch presentation application that takes the place of PowerPoint so I can walk the walk as I discuss how to create NUIs and multi-touch applications. &lt;br /&gt;
&lt;br /&gt;
I'm available on twitter &lt;a href="http://twitter.com/joshblake"&gt;@joshblake&lt;/a&gt; or by email joshblake at gmail dot com. Send me a note if you'll be coming.&lt;br /&gt;
&lt;br /&gt;
See you there!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
try {
var pageTracker = _gat._getTracker("UA-1375714-3");
pageTracker._trackPageview();
} catch(err) {}&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6890585452489792053-6480891237031060237?l=nui.joshland.org' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=szUt3YxhzBs:f-SDzUcYbDU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=szUt3YxhzBs:f-SDzUcYbDU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?i=szUt3YxhzBs:f-SDzUcYbDU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?a=szUt3YxhzBs:f-SDzUcYbDU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/DeconstructingTheNUI?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DeconstructingTheNUI/~4/szUt3YxhzBs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://nui.joshland.org/feeds/6480891237031060237/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://nui.joshland.org/2010/03/nui-at-mix10.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6480891237031060237?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6890585452489792053/posts/default/6480891237031060237?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DeconstructingTheNUI/~3/szUt3YxhzBs/nui-at-mix10.html" title="NUI at MIX10" /><author><name>JoshB</name><uri>http://www.blogger.com/profile/08997968799488176782</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://nui.joshland.org/2010/03/nui-at-mix10.html</feedburner:origLink></entry></feed>

