<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>David Brebner</title>
	<atom:link href="http://www.davidbrebner.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.davidbrebner.com</link>
	<description></description>
	<lastBuildDate>Sat, 18 May 2013 23:58:25 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>NZICT &#8211; Technology Innovation Week</title>
		<link>http://www.davidbrebner.com/?p=526</link>
		<comments>http://www.davidbrebner.com/?p=526#comments</comments>
		<pubDate>Sat, 18 May 2013 23:26:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.davidbrebner.com/?p=526</guid>
		<description><![CDATA[I talked about my journey as CEO working to commercialise technology within UR. My key advice as a startup CEO to keep moving forward was; 1) Very clearly know what makes you different and how you can make good money from it 2) You need to keep making decisions regardless of the noise and uncertainty ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=526">read more</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.davidbrebner.com/wp-content/uploads/2013/05/innovation.jpg"><img src="http://www.davidbrebner.com/wp-content/uploads/2013/05/innovation.jpg" alt="innovation" width="900" height="246" class="alignnone size-full wp-image-537" /></a></p>
<p>I talked about my journey as CEO working to commercialise technology within UR.</p>
<p>My key advice as a startup CEO to keep moving forward was;</p>
<p>1) Very clearly know what makes you different and how you can make good money from it<br />
2) You need to keep making decisions regardless of the noise and uncertainty<br />
3) Keep Executing and finding fuel (from revenue or investment)</p>
<p>My key advice to keep moving FAST is to tend to your teams;</p>
<p>1) Inside your organization, your execution team<br />
2) At the governance level, your strategy team<br />
3) External team – the people who fill the gaps, make the connections,<br />
&nbsp;&nbsp;&nbsp;inspire you, provide you services, government agencies and the business community </p>
<p>Cheers<br />
  David</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=526</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Glasses &#8211; flawed but promising start</title>
		<link>http://www.davidbrebner.com/?p=379</link>
		<comments>http://www.davidbrebner.com/?p=379#comments</comments>
		<pubDate>Sat, 27 Apr 2013 09:31:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=379</guid>
		<description><![CDATA[Google Glass is really a very interesting step into wearable computing. It&#8217;s a logical evolution that more natural and convenient interaction will become more successful. Sadly Google Glass misses out in a few key areas that I think really promise the biggest rewards. Google Glass provides both tactile and voice input. It provides a roughly ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=379">read more</a>]]></description>
				<content:encoded><![CDATA[<p>Google Glass is really a very interesting step into wearable computing.  It&#8217;s a logical evolution that more natural and convenient interaction will become more successful.  Sadly Google Glass misses out in a few key areas that I think really promise the biggest rewards.</p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/04/glass_photos4-580-75.jpg" alt="glass_photos4-580-75" width="580" height="326" class="alignnone size-full wp-image-380" /><br />
Google Glass provides both tactile and voice input.  It provides a roughly 640×360 single eye display and a 5 mega-pixel camera. There is also a really cool voice api and timeline / card metaphor for building apps and consuming content.</p>
<p>
Google Glass really does a lot with what is possible with today&#8217;s technology.  However I feel like it is a misstep that the usage model is as a tool for your daily life rather than a specific productivity tool.  This steps into a few social minefields.  For example a user can look like they are paying attention to you, but instead be checking their news feed, or where a user captures images or video in inappropriate situations.</p>
<p>
I feel like the key usage scenarios where fully augmented glasses can really shine involve a much more intensive usage model.  Where you put on your glasses to do work or virtual collaboration.  These glasses would replace big screens and your whole input stack.  They would provide stereo images, eye tracking, gyros, front facing cameras for augmentation and front sensors for 3D hand and finger tracking.</p>
<p>
The idea is to immerse yourself in a fully integrated 3d space where your visual system, voice input and hand gestures are all integrated.  This setup will provide a massive productivity boost while working and communicating.</p>
<p>
The ability to integrate finger tracking with synthetic 3d imagery opens up the possibilities of amazing user interfaces &#8211; combined with eye tracking and voice recognition you get a massive boost in the ability for the system to provide prompts and respond appropriately to voice commands.</p>
<p>
There is no doubt that the ability to augment our senses in this kind of way is absolutely the most natural and compact way to interact &#8211; but just like societies have had to work out social norms for smartphones use, one of our challenges will be working out how wearable computing devices fit in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=379</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-user Instrument App launched with Dell</title>
		<link>http://www.davidbrebner.com/?p=368</link>
		<comments>http://www.davidbrebner.com/?p=368#comments</comments>
		<pubDate>Fri, 22 Mar 2013 00:04:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=368</guid>
		<description><![CDATA[Very exciting to see our new multi player instruments product get launched along with the amazing new Dell XPS 18 at SXSW in Austin Texas. Dell announcement Ubergizmo Review Link This application really shows off our framework and the ability to manage not just multi touch but multi user scenarios. It&#8217;s also a huge amount ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=368">read more</a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/03/instruments_splash.jpg" alt="instruments_splash" width="900" height="400" class="alignnone size-full wp-image-369" /></p>
<p>Very exciting to see our new multi player instruments product get launched along with the amazing new Dell XPS 18 at SXSW in Austin Texas.</p>
<p><a target="_blank" href="http://www.dell.com/Learn/us/en/19/campaigns/xps-18-comingsoon-US?c=us&#038;l=en&#038;s=dhs&#038;cs=19&#038;~srd=true&#038;sk=xps%2018&#038;scat=prod">Dell announcement</a></p>
<p><a target="_blank" href="http://www.ubergizmo.com/2013/03/dell-xps-18-hands-on-review/">Ubergizmo Review Link</a></p>
<p>This application really shows off our framework and the ability to manage not just multi touch but multi user scenarios.  It&#8217;s also a huge amount of fun!</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/Ef4h5FFG1is" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=368</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leap Motion enabled instruments</title>
		<link>http://www.davidbrebner.com/?p=293</link>
		<comments>http://www.davidbrebner.com/?p=293#comments</comments>
		<pubDate>Sun, 10 Feb 2013 00:29:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[instruments]]></category>
		<category><![CDATA[Leap Motion]]></category>
		<category><![CDATA[UMAJIN]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=293</guid>
		<description><![CDATA[Here you can see the precision and accuracy which is possible using this sensor. Below I am trying to learn how to play &#8220;twinkle twinkle little star&#8221; on a 3D piano. Notice the ring &#8216;shadows&#8217; which are added to help me locate my fingertips in relation to the piano. The Leap Motion camera also lets ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=293">read more</a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/leap_motion.jpg" alt="leap_motion" width="900" height="388" class="alignnone size-full wp-image-298" /></p>
<p>Here you can see the precision and accuracy which is possible using this sensor.  Below I am trying to learn how to play &#8220;twinkle twinkle little star&#8221; on a 3D piano.  Notice the ring &#8216;shadows&#8217; which are added to help me locate my fingertips in relation to the piano.</p>
<p><iframe width="760" height="460" src="http://www.youtube.com/embed/xy_-13hEJWY" frameborder="0" allowfullscreen></iframe></p>
<p>The Leap Motion camera also lets me modulate the volume of notes using several enveloping techniques.</p>
<p>Check out this example where the drumkit is modulated based on the angular velocity of my finger as I imitate a drumstick.</p>
<p><iframe width="760" height="460" src="http://www.youtube.com/embed/IKzo0mTmKAg" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=293</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3D Modelling</title>
		<link>http://www.davidbrebner.com/?p=287</link>
		<comments>http://www.davidbrebner.com/?p=287#comments</comments>
		<pubDate>Sun, 10 Feb 2013 00:26:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[modelling]]></category>
		<category><![CDATA[UMAJIN]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=287</guid>
		<description><![CDATA[Here is an updated view of our 3D modelling tech. This is able to paint diffuse texture, specular texture, bump maps and geometry simultaneously or individually based on the brush type. We also have morph brushes which let the user paint between pre-designed whale models (like the robot whale in this example).]]></description>
				<content:encoded><![CDATA[<p><iframe width="760" height="460" src="http://www.youtube.com/embed/ITMl1-A3UvE" frameborder="0" allowfullscreen></iframe></p>
<p>Here is an updated view of our 3D modelling tech.  This is able to paint diffuse texture, specular texture, bump maps and geometry simultaneously or individually based on the brush type.</p>
<p>We also have morph brushes which let the user paint between pre-designed whale models (like the robot whale in this example).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=287</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UMAJIN App builder overview</title>
		<link>http://www.davidbrebner.com/?p=214</link>
		<comments>http://www.davidbrebner.com/?p=214#comments</comments>
		<pubDate>Sat, 09 Feb 2013 22:38:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[UMAJIN App Builder]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[UMAJIN]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=214</guid>
		<description><![CDATA[The UMAJIN app builder lets you create applications for Windows, iOS and android without writing any code. Use the powerful editor, pick your templates, lay out your rich content and deploy immediately to devices for quick feedback and testing. The interface is simple and powerful, it helps you manage the many possible sizes and aspect ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=214">read more</a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/ideas_applications.png" alt="ideas_applications" width="626" height="314" border="0" style="border:0px;" /></p>
<p>The UMAJIN app builder lets you create applications for Windows, iOS and android without writing any code.  Use the powerful editor, pick your templates, lay out your rich content and deploy immediately to devices for quick feedback and testing.</p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/devices_small.jpg" alt="devices_small" width="900" height="229" class="alignnone size-full wp-image-212" /></p>
<p>The interface is simple and powerful, it helps you manage the many possible sizes and aspect ratio&#8217;s your application will need to run on.  You can use the snapping and reflowing tools &#8211; or even individually specify the layout where required.</p>
<p>The action system allows you to create interactivity and the pro version can be used by developers to extend the existing actions with new ones.  This makes working with developers extremely productive.</p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/editor_screenshot_landscape.jpg" alt="editor_screenshot_landscape" width="900"  class="alignnone size-full wp-image-209" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=214</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestural guidelines</title>
		<link>http://www.davidbrebner.com/?p=171</link>
		<comments>http://www.davidbrebner.com/?p=171#comments</comments>
		<pubDate>Sat, 09 Feb 2013 08:56:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gestural and Cinematic]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=171</guid>
		<description><![CDATA[LINK Gestural and Cinematic Overview Input Styles Keyboard : Qwerty keyboards and simpler TV style remotes with cursor keys both have a useful role for data entry. We will see this being replaced with voice more and more over time. Voice : Voice commands are less explicit than a keyboard and preparing suitable command sets ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=171">read more</a>]]></description>
				<content:encoded><![CDATA[<p><a href="?p=160">LINK</a> Gestural and Cinematic Overview</p>
<h2>Input Styles</h2>
<p><strong>Keyboard</strong> : Qwerty keyboards and simpler TV style remotes with cursor keys both have a useful role for data entry.  We will see this being replaced with voice more and more over time.</p>
<p><strong>Voice</strong> : Voice commands are less explicit than a keyboard and preparing suitable command sets and potentially in multiple languages can still be a challenge.  As natural language processing and voice recognition improves voice will become more flexible as an input type. Combining voice and a pointer input like gaze tracking or hand tracking make a powerful combination as now voice commands can be give context on which to act.</p>
<p>This branches out into voice recognition, natural language processing and agents.  The idea of an agent is to provide a user the ability to have a conversation in a specific subject domain and be able to complete tasks for the user.  An agent in a car might support route finding or phone dialling.</p>
<p><strong>Mouse</strong> : This is one of the most accurate pointing devices and has evolved to include secondary sensors like a right click and a wheel.  Clicking and dragging form the basics of most interfaces and are considered the core interactions for pointing inputs.  Another useful feature of a mouse is the ability to move over items without clicking, this ‘hover/inspection’ capability can be used to bring up information indicating what is under the cursor and previewing what the result of a click will be through hints like the mouse cursor icon.</p>
<p><strong>Touch, Multi Touch &#038; Near Touch</strong> : Touch and multi touch form the basic click/tap and drag function for most interfaces.  Near touch improves this with hover/inspect capability.  Measuring the area of the fingertip on the touch surface or direct pressure information can be used for enveloping.  One challenge with touch is that generally all touch points are stateless and you do not know which hand or user they come from.  This means all touches must be treated as equal.</p>
<p><strong>Pen</strong> : Pen is generally more accurate than touch for positioning due to the smaller tip, it will often provide hover/inspect capability and pressure for enveloping.  Some pens also provide tilt information.  Pen and touch will become a very important combination.  This is because touch can be used to manipulate (pan, scale or rotate) and pen can act (cut or draw).  Shape and handwriting recognition can add value to sketching or filling out forms.</p>
<p><strong>3D input</strong> :  Consumer systems generally have only one sensor so they generate 3D data from that single point of view.  The sensor volume is a trapezoidal frustum starting some initial distance from the sensor and increasing in area until it reaches a maximum distance.  The accuracy, noise level and type of information varies based on the technology used. There are three major configurations of 3D input.  </p>
<p>1) Full body : Camera pointing at the full body from a distance, narrow field of view,<br />
     good for detecting simple skeleton, head and hand position</p>
<p>2) Close range torso : Camera pointing at the users torso, wide angle,<br />
     good for detecting head direction, finger positions and hand poses.</p>
<p>3) Close range hands : Camera pointing up at the users hands, wide angle<br />
     good for detecting accurate finger positions, angles, hand poses and a stylus</p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/3d_cameras1.jpg" alt="3d_cameras" width="900" height="300" class="alignnone size-full wp-image-328" /></p>
<p>Option 1 struggles to provide full pointing capability because although the position of a hand/cursor can be determined with precision there is not enough information to reliably determine the fingers pose for detecting the equivalent of a click/tap.  The workaround for this is to use x/y/z information only.  For example the alternatives to a click/tap in order of usability are a) dwell on a button, b) a vertical or horizontal swipe over a button, or c)  z push towards the camera on a button.  </p>
<p>Dragging is not easily supported, so scrolling and panning is usually managed by moving to the edges of an area and dwelling.</p>
<p>Option 2 can detect hand poses so it is simple and natural to use the spreading/closing of the hand.  This means it can provide full pointer support with an open hand being a hover.  The closing hand is a pointer down, a moving closed hand is a drag and an opening hand is a pointer up.  Scrolling and panning can also benefit from the concept of moving to the edges of an area and dwelling.</p>
<p>Option 3 can detect individual fingers in some detail.  This means while you could use the hand just like option 2 you can go further and use each finger.  </p>
<p>This works by exploiting the angle of an individual finger to determine it’s up or down state. For example a hand and fingers held flat/parallel over the sensor will have the fingers all in hover/inspect mode (shown as hollow ellipses).  When a finger is pressed down at an angle relative to the palm it will be considered active (the ellipse becomes more opaque to indicate it is active/down).  </p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/hands3.jpg" alt="hands3" width="900" height="176" class="alignnone size-full wp-image-325" /></p>
<p>While there is no surface to press against to generate a variable input for enveloping there is tilt and motion information from the finger.  So the velocity or angular velocity can be used to determine how ‘aggressive’ this down and up motion was and provide modulation.</p>
<p>Because the technique used to identify the position of the fingertip measures its dimensions and angle, a stylus can be determined as different from a finger.  This allows for pen style interactions. </p>
<h2>Basic gesture terms</h2>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/hands1.jpg" alt="hands" width="900" height="250" class="alignnone size-full wp-image-327" /></p>
<p><strong>Click/Tap</strong> :  The idea is a tap is only triggered when a pointer down and a pointer up occur with movement below our default threshold (e.g. 5 mm in any direction).  </p>
<p><strong>Release</strong> : Similar to a tap but allows the pointer to move anywhere as long as the pointer up occurs on the original object.  </p>
<p><strong>Drag</strong> : This is where the pointer is placed pressed down and then moved.  Drag events should be triggered immediately and flicks calculated as a secondary event.  When the user releases the pointer the drag stops.  In some cases physics and hysteresis may come into play to continue the motion under momentum or magnetic snapping may be applied.</p>
<p><strong>Hover</strong> : This is where the pointer is moved but not pressed.  Hover events provide useful inspection capability to give users feedback on the purpose of the item under the pointer.  Additional information may only be displayed after dwelling for a set period of time.</p>
<p><strong>Pointerlock</strong> : This is a behaviour rather than a gesture.  It describes how some objects when manipulated will appear physically locked to the pointer until the pointer is released and it is free to spin/move/slow based on the velocity of the users gesture.  Reaching out to press the object again will stop its motion as it locks back on the pointer.</p>
<p><strong>Flick</strong> : This is where the user moves in one direction.  The thresholds are if the movement is far enough (say 30 pixels) and fast enough (say 30 pixels in 200ms).  This event is then raised along with the direction of the flick.  This is usually followed by an animation of the object succeeding or failing to be flicked depending on the application.</p>
<p><strong>Pinch</strong> : This can generate Resize, Rotate and Pan actions.  These can be performed with any two fingers and combined or for some interfaces be measured separately.  These should animate the object being manipulated directly.  Both contacts being on the same object and within a threshold of proximity will ensure the gesture was intentional.</p>
<p><strong>Dwell / Right click</strong> : This is the process of holding the pointer down in one spot below the minimum movement threshold (e.g. 5 pixels in any direction).  After a set time (say 500ms) a visual affordance must be displayed to indicate a dwell is being measured.  This affordance should show the progress (say for 1000ms) until the dwell time is reached without triggering the movement threshold.  Now the action or menu can be shown.  The right click is used with a mouse and some pen systems to trigger the secondary menu.</p>
<p><strong>Double Tap</strong> : This can be performed with mouse, but is much harder with pen, touch or 3D input.  To avoid latency it is recommended to raise the initial tap event and then if a second tap is detected within the threshold (say 300ms) to raise a double tap.  This is best used as a shortcut where the first tap selects and the second executes the default action. </p>
<h2>Multi User</h2>
<p>One of the important concept is that of multiple users not just multi touch.  As UMAJIN runs as a simulation with its event driven core multiple users can be interacting.</p>
<p>For example in a photo app users could pick up, resize and rotate photos with perhaps the ability to drop photos into a favourites folder.  The challenge with multi user is to minimize or remove modal interfaces.  In this scenario, if the first user selects the upload button to for the favourites folder then this should trigger an asynchronous upload progress bar.  This is then animated without stopping the second user resizing the photo they are looking at.<br />
 </p>
<h2>Interfaces</h2>
<blockquote><p>“Avoid unnecessary reporting. Don’t use dialogs to report normalcy. Avoid blank slates. Ask for forgiveness, not permission. Differentiate between command and configuration. Provide choices; don’t ask questions. Hide the ejector seat levers. Optimize for responsiveness; accommodate latency. Never bend your interface to fit a metaphor. Take things away until the design breaks, then put that last thing back in. Visually show what; textually tell which.“<br />
<i>Alan Cooper, “about face”</i>
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=171</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cinematic and Gestural overview</title>
		<link>http://www.davidbrebner.com/?p=160</link>
		<comments>http://www.davidbrebner.com/?p=160#comments</comments>
		<pubDate>Sat, 09 Feb 2013 07:47:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gestural and Cinematic]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[cinematic]]></category>
		<category><![CDATA[ergonomics]]></category>
		<category><![CDATA[gestural]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[rendering]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=160</guid>
		<description><![CDATA[Overview These guidelines outline how to make the BEST possible casual software. This is a broad category of applications, utilities, games and experiences which do not require significant investment of effort from the end user to enjoy. This is software which will delight and engage people. Our perspective on casual software can be broken down ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=160">read more</a>]]></description>
				<content:encoded><![CDATA[<h2>Overview</h2>
<p>These guidelines outline how to make the BEST possible casual software.  This is a broad category of applications, utilities, games and experiences which do not require significant investment of effort from the end user to enjoy.  This is software which will delight and engage people.  Our perspective on casual software can be broken down into three key concepts.</p>
<p>1)	Function &#8211; Purpose delivered with a minimum of features<br />
2)	Gestural  &#8211;  Minimal interfaces, using physics and direct manipulation<br />
3)	Cinematic &#8211; Playful Interaction Design, Art/Sound design and effects	 </p>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/cinematic.jpg" alt="cinematic" width="900" height="231" class="alignnone size-full wp-image-211" />	</p>
<p>Function is the backbone and there is a balance which must be reached in designing an experience which delivers the key purpose without weighing the user down in options, learning, terms, menus, dialogs or steps.</p>
<p>Gestural is all about providing a great experience the first time, and each time thereafter.  Gestural should be a contrast to tiny atomic GUI’s with many, many small buttons and menus.  Gestural is all about broad simple motions whatever the input devices.  This means minimal interface, obvious purpose, broad motions and clear feedback.  </p>
<p>Cinematic is great presentation, providing animation on completion of actions and providing a clear state and flow for the experience.  We want out users to know what they are doing and where they are.</p>
<p>Software is achieving these three points when a user can start an application for the first time, understand its purpose and intuitively use it.  The software should feel natural, be able to be explored without fear, clearly illustrate actions that the user initiates and look and sound great.</p>
<h2>Gestural introduction</h2>
<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/continuum.jpg" alt="continuum" width="853" height="151" class="alignnone size-full wp-image-309" /></p>
<p>The continuum of interaction for NUI interaction is very large.  NUI (Natural user interfaces) describes a range of philosophies which centre on making the user interface invisible and obvious.  NUI interfaces can be used with many input devices including keyboard, mouse, touch, multi touch, near touch, voice, pen, gaze and 3D input.  </p>
<p>The use of machine learning, machine vision, speech processing, big data queries and natural language processing are all part of making these inputs seem to be more natural as we can increasingly take more types of ‘human’ input.  </p>
<p>To achieve the goal of gestural software;   </p>
<p><strong>Broad motions</strong> are important.  This means users should be able to use software by sweeping or touching with mouse, hand, pen or finger.  They should not be required to find and locate very small parts of the screen.  Double clicks and right clicks are for shortcuts or accelerators only, not for core functions.</p>
<p><strong>Minimal interfaces</strong> have a small number of elements and they present a clear purpose.  Generally this means when designing a layout to be reductive, reducing the number of individual elements.</p>
<p>To allow for applications which still present very rich content use should be made of compound elements.  While these exist as only one element on a layout, they can contain many homogeneous content items which behave the same.  An example would be a grid or glass shelf containing many album covers.   </p>
<p>In terms of interaction with a compound object these usually support more content than is visible at first glance, often supporting navigating through scrolling, panning or zooming.  This means the individual items within the compound element should be limited to being able to be selected – this means they will not conflict with any navigation.</p>
<p><strong>Tactile interfaces</strong> provide a very important mental connection to the physical world for users.  There are three ways we work to improve the ability of our applications being more tactile.</p>
<p>1)	Direct Manipulation: two fingers to resize and rotate, multi finger crumple gestures, dragging, pointing and flicking – essentially providing the user with a direct rather than abstract interface.</p>
<p>2)	Physics of momentum, friction and elasticity: This is where elements in an application can slide, bounce, and move in the way users are used to seeing in the natural world. </p>
<p>3)	Enveloping: This is modulating an action based on a variable input such as pressure/angle of a pen input or the proximity/area of a finger.  This can result in natural effects like line thickness while drawing or the volume of a virtual piano key.  This adds significant richness to user interactions.</p>
<p><strong>Ergonomics</strong> are very important to applications being approachable.  Just like in the process of designing physical products, the layout, size and interaction of elements/controls is very important.</p>
<p>Each type of input sensor that a user may choose to use has different trade-offs and limitations with the human body and the environment the interaction occurs in.  For example requiring people to hold their arms up on a large wall mounted touch screen can cause fatigue, requiring a user of a phone to pick out small areas is frustrating and putting the save button right next to new game might drive people mad. </p>
<p>Testing with external users can be very valuable.  Testing internally is also important.  It’s even better when your own QA, developers, designers and artists can be users of your software.  </p>
<p>Another big challenge in ergonomics is the increasing layout challenges of different resolutions and aspect ratios on phones, tablets, notebooks, desktops and consoles.  This is a significant task to manage laying out content so it is easily consumed and to make the interface handle these changes gracefully.  A snapping and reflow system along with content scaling which can respond to physical display dimensions is a critical tool.  It should allow suitable designer control to make specific adjustments as required for the wide variety of devices now available.  </p>
<p><a href="?p=171">LINK</a> Gestural guidelines</p>
<h2>Cinematic Introduction</h2>
<p><strong>Performance</strong> 60fps frame rate and 0fps idle frame rate is our goal.  Make things fast and smooth when we are using them and drop the app down when we are not.  </p>
<p>Touch, file, audio, network and memory latency are always there.  We need to work to understand and minimise these within the engine as much as possible – then to come up with guidelines for app developers where performance gains can be made.</p>
<p>Database – use transactions, use in memory mode for inner loops<br />
Images – stream images, provide levels of detail<br />
http – use async mode and show users a progress indicator</p>
<p><strong>State</strong> is a really important thing to communicate to users.  It might be the pen selected in a painting program with a clear highlight, and perhaps pulling it out of place.  It may be a choice is being presented so we need to refocus the user on the foreground and drop out the background.  By making state, and the resulting choices or action options really clear users will find our applications more intuitive and less frustrating.</p>
<p><strong>Actions</strong> are often how we get things done in applications.  We need to think about how we can show users these actions have been performed with direct feedback.  It might be animating photos into the slideshow when you flick them, it might be having a photo disappear into particles when you delete it, it might be an animation of photos going into a cloud when you upload, but making actions clear as to their behaviour and their success will make users much more comfortable with the application.  The aim is to make this action feedback fun rather than annoying and certainly not to slow the user down.</p>
<p><strong>Consistent</strong> is important.  We need to strive to share metaphors and components across our families of applications.  It’s important we provide a consistent mental model for users.  When they reach out and touch a screen we want it to work the way they expect.</p>
<p><strong>Rich Content</strong> is appealing.  We need to try to bring our content, our partner’s content, our USERS content to the front and centre.  Full screen views of family videos, large thumbnails when browsing through files, great movie trailer posters filling the screen.</p>
<p>Content is the centre of the experience &#8211; the application is what enables and presents it.</p>
<p><strong>Worlds</strong> are an important part of the human brain.  We remember where our street is, where our place is and where our room is.  This does NOT imply we make big villages to navigate – the abstraction of the getting to the web in a browser rather than having to walk down a virtual hallway to the library is clearly a benefit.  Actually 2D planes are still our best interaction model with a 2D screen.  The premise is that 2D workspaces can be layed out in a 3D space and transitions can be used to help user build a mental model of where they are in the overall space.</p>
<p>e.g. as you select a sub folder the previous folder animates past the camera and you appear to drop one level deeper into the hierarchy. Then pressing up a level will animate back.  This provides users with a strong mental model to understand they are going in and out of a file system.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=160</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recognizing hands from 3D data</title>
		<link>http://www.davidbrebner.com/?p=300</link>
		<comments>http://www.davidbrebner.com/?p=300#comments</comments>
		<pubDate>Tue, 15 Jan 2013 01:14:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[gesture]]></category>
		<category><![CDATA[hand]]></category>
		<category><![CDATA[perceptual computing]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=300</guid>
		<description><![CDATA[The task of processing raw 3D data to establish the fingertips and eventually the pose of the hand is quite a challenging problem. We have built a few systems for providing this level of detail where the SDK&#8217;s provided don&#8217;t do exactly what we need. This video shows using the position of the fingertips and ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=300">read more</a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://wp.davidbrebner.com/wp-content/uploads/2013/02/3d_data.jpg" alt="3d_data" width="900" height="242" class="alignnone size-full wp-image-301" /></p>
<p>The task of processing raw 3D data to establish the fingertips and eventually the pose of the hand is quite a challenging problem.</p>
<p>We have built a few systems for providing this level of detail where the SDK&#8217;s provided don&#8217;t do exactly what we need.</p>
<p><iframe width="760" height="460" src="http://www.youtube.com/embed/qAuwM0ET_wM" frameborder="0" allowfullscreen></iframe></p>
<p>This video shows using the position of the fingertips and then the angle of the fingertip to navigate a menu system.  We are also using a swipe gesture to hide the menu. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=300</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UMAJIN script introduction</title>
		<link>http://www.davidbrebner.com/?p=4</link>
		<comments>http://www.davidbrebner.com/?p=4#comments</comments>
		<pubDate>Wed, 09 Jan 2013 03:07:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[UMAJIN Script]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[UMAJIN]]></category>

		<guid isPermaLink="false">http://wp.davidbrebner.com/?p=4</guid>
		<description><![CDATA[Why UMAJIN “You Imagine” The purpose of the UMAJIN script is to be a domain specific language which makes developing rich interactive applications easier and more natural. The goals of the framework are Fast development File size conscious Native internet Application performance Rich content (such as 3D) Rich inputs (such as touch, voice, pen, depth ...<a class="post-readmore" href="http://www.davidbrebner.com/?p=4">read more</a>]]></description>
				<content:encoded><![CDATA[<h2>Why</h2>
<p>UMAJIN “You Imagine”</p>
<p>The purpose of the UMAJIN script is to be a domain specific language which makes developing rich interactive applications easier and more natural.</p>
<p>The goals of the framework are</p>
<ul>
<li>Fast development</li>
<li>File size conscious</li>
<li>Native internet</li>
<li>Application performance</li>
<li>Rich content (such as 3D)</li>
<li>Rich inputs (such as touch, voice, pen, depth camera)</li>
</ul>
<h2>What</h2>
<p>This diagram describes the basic architecture of the three parts of a project. These are the creative assets, the script and the engine.</p>
<p><img class="alignnone" alt="" src="http://wp.davidbrebner.com/wp-content/uploads/2013/01/diagram.png" /></p>
<p><strong>Creative Assets</strong></p>
<p>The UMAJIN engine is able to load, play and render a wide range of content. Most common formats for images, audio and video are supported. There is support for fonts, 3D content, animation and Unicode text. The idea is to support the creative efforts of designers to create the most rich and interactive applications possible.</p>
<p><strong>UMAJIN script</strong></p>
<p>The UMAJIN script is a language for describing objects and logic. The language is designed with a low pattern syntax and object oriented features for lightweight reuse. This means that there are only a few keywords required and the syntax follows standard patterns.</p>
<p>For example the declare pattern is;</p>
<p><code>[keyword] [type] [name]</code></p>
<p>This pattern can be used to declare visible objects, abstract classes, properties or local variables;<br />
<code></code></p>
<ul>
<li>instance image my_image</li>
<li>define image my_imageclass</li>
<li>property int my_propint = 5</li>
<li>int my_localint = 5</li>
</ul>
<p>The language is kept simple to master with only 10 core keywords;</p>
<ul>
<li>Instance</li>
<li>Define</li>
<li>If</li>
<li>Loop</li>
<li>Method</li>
<li>Raise</li>
<li>Property</li>
<li>End (ends all blocks)</li>
<li>In (for time based method calls, or assignments)</li>
<li>Tween (used for time based assignments which will be animated)</li>
</ul>
<p>The object orientated syntax allows for very simple encapsulation of composite objects with custom methods and events. The key aim is lightweight reuse.</p>
<p>The base objects and composite objects built from them &#8211; support declarative programming. This is where other users (potentially using the GUI) can create functional visual programs by creating instances of your objects, setting properties and binding logic to their events.</p>
<p>The language is strongly typed, but allows coercion.</p>
<p><strong>UMAJIN engine</strong></p>
<p>This is runtime system which the language binds to.  The engine supports the creation and management of visual objects and simulating, temporal assignments, animation, media and physics.</p>
<p>The rich object model is very important to productive development and includes items such as;</p>
<ul>
<li>Image</li>
<li>Video</li>
<li>Database</li>
<li>http</li>
<li>http_server</li>
<li>Sound</li>
<li>3D</li>
<li>Shapes</li>
<li>Text</li>
<li>Web</li>
<li>I/O</li>
<li>Timer</li>
<li>Webcam</li>
</ul>
<p></p>
<h2>How</h2>
<p><strong>The Language</strong></p>
<p>Declarative programming &#8211; Objects form the skeleton of declarative programs.  The programmer creates instances of the different classes of objects to form the visual basis of a document or application.  The programmer can then set the properties of these objects to adjust their appearance or behaviour.</p>
<p>Objects can be ‘nested’ into hierarchies.  For example a button can be placed inside a panel.  As a result visual properties such as position and scale are inherited.  When you move the panel, the child button will move with it.<br />
Objects also have methods.  Methods contain code which performs operations.  Methods can also bind to events which are raised by users.  For example clicking the mouse.</p>
<p>An important concept in this style of programming is called sub-classing.  This is where a new ‘sub’ class is created from a parent class.  This is also known as the new class ‘inheriting’ from its parent.  This is used to create new and more complex classes from the original object model.</p>
<p>New programmer created classes can also have custom properties, methods and events.</p>
<blockquote><p><strong>Glossary</strong></p>
<p>Object : A discreet bundle of components – often relating to a visual element (a button) or an abstract real world analogy (a customer).  The keyword INSTANCE is used to create an instance of a class, otherwise known as an object.</p>
<p>Class : A class is the definition of a new type of object.  The keyword DEFINE is used to create a sub-class which is based on an existing class.</p>
<p>Property : An attribute of an object represented by a value which has one of the UMAJIN types. </p>
<p>Method : An action that can be performed on this object.  This method will take parameters (like a function) to help describe what it should do.  A method contains code and can return values.</p>
<p>Event : A class can raise an event which triggers a method in an instance of this class (an object). </p>
<p>Code : An ordered list of instructions which are performed and can modify objects and properties and call methods.</p></blockquote>
<h2>Declaring</h2>
<p>UMAJIN script is a declarative language.  This means you can literally layout the hierarchy of objects and their properties you want the engine to create for you.</p>
<p><strong>Instance</strong><br />
Make an object of class image.  This makes an actual instance of an apple.</p>
<pre>instance image apple
   .filename=’apple.png’
end</pre>
<p><strong>Nested instance</strong><br />
Make an object of class image, make another instance inside it.</p>
<pre>instance image apple
    .filename='apple.png'
    <font color=#F00>instance image worm
          .filename='worm.png'
    end</font>
end</pre>
<p><strong>Define</strong><br />
Define a new sub-class of image.  This does not create an actual object.</p>
<pre>define image button
    .filename = 'button.png'
end</pre>
<p><strong>Define and Raise</strong><br />
Bind the new class to handle a mouse down event and in turn raise a custom on release event when an instance is created from this new class.</p>
<pre>define image button
   .filename = 'button.png'
   event on_release()
   method on_mouse_down(int x, int y, int mod)
     raise .on_release()
   end
end

instance button mybutton
   method on_release()
   end
end</pre>
<h2>Logic</h2>
<p>Logic or code is a series of instructions which each perform basic tasks which when combined together can create complex behaviours.</p>
<p><strong>Types</strong><br />
Several basic types are available, these are simpler than full objects and include;</p>
<ul>
<li>Int 	(int8, uint8, int16, uint16,int32, uint32, int64, uint64)</li>
<li>Real    	(Real32, Real64)</li>
<li>String</li>
<li>Bool</li>
<li>Vec2, vec3, Mat4</li>
<li>Color</li>
<li>Datetime</li>
<li>Var 	</li>
</ul>
<p><strong>Expressions</strong></p>
<p>Programming starts with expressions and assignments.  This is where a variable or property is assigned a value.  The value can be an expression as simple as a single number or contain operators like addition, or calls to methods which return values.</p>
<pre>Real velocity = 2.3			(2.3 is the expression, the = is the assignment)
Real speed = velocity * 1.87		(velocity * 1.87 is the expression)
Int length = sqrt((x1-x2)^2+(y1-y2)^2) 	(sqrt is a method inside the expression)</pre>
<p><strong>Conditions</strong></p>
<p>Conditions are decisions where code can be branched based on the success or failure of a comparison.  If, else and elseif are the structures provided.  The condition needs to evaluate to non zero to be true and succeed.  Comparison operators can be used to test values.  These include == (equal), != (not equal), > (greater), >= (greater or equal), < (less than), <= (less than or equal).</p>
<p>Example 1 : Simple If block</p>
<pre>if velocity>2.1
  //place code here
end
</pre>
<p>Example 2 : If/Elseif/Else block</p>
<pre>
if velocity>2.1
  //place code here
elseif velocity==1.5
  //place code here
else
  //place code here
end
</pre>
<p><strong>Loops</strong></p>
<p>Loops allow repeating of a block of logic/code multiple times.  This code will run until a condition is met.  Loops can be pre AND post tested.</p>
<p>Example 1 : Simple pre tested loop  (Loop if)</p>
<pre>int a=0
loop a<100
   //do something many times...
   a++
end
</pre>
<p>Example 2 : Simple post tested loop  (End if)</p>
<pre>int a=0
loop 
   //do something many times...
   a++
end a>100
</pre>
<p><strong>Arrays</strong></p>
<p>Often used with loops these are a great way of processing lists of data.  Umajin supports numeric and string indexes.  To access the specific item in a condition, expression or assignment the index is simply specified between the square brackets.<br />
Multi dimensional arrays can also be declared and used by having multiple sets of square brackets.</p>
<p>Example 1 : Declare a basic array</p>
<pre>int my_array[]</pre>
<p>Example 2 : Accessing an array</p>
<pre>string my_array[]
my_array[1] = “cow”
my_array[2] = “sheep”
</pre>
<p>Example 3 : Use the array in a loop</p>
<pre>int my_array[]
int a=0
loop a<100
   my_array[a] = rnd(100)
   a++
end
</pre>
<p>Example 4 : Declare a 2 dimensional array</p>
<pre>string my_big_array[][]
my_array[1] [“name”]= “cow”
my_array[1] [“age”]= “13”
my_array[2] [“name”]= “sheep”
my_array[2] [“age”]= “3”</pre>
<blockquote><p>Glossary</p>
<p>Expression : a combination of numbers, variables, methods and operators which evaluate to a value.</p>
<p>Assignment : setting a property or variable to a new value (potentially from an expression)</p>
<p>Condition : based on a comparison succeeding or failing branch the flow of the program</p>
<p>Loop : repeat instructions until a condition is met</p>
<p>Type : Applies to the type of an object (e.g. image), or a basic variable (e.g. string, int, real)</p>
<p>Array : A variable which hold more than one value declared by adding square brackets [] </p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.davidbrebner.com/?feed=rss2&#038;p=4</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
