January 18, 2018

Why HoloLens Is Not Kinect

Since HoloLens was accounced back in Jan 21st, many articles on the Internet have referred Kinect while reporting on HoloLens in various ways. Most of them tend to put a shade of skepticism over HoloLens from the comparison. In this post, I will try to give a little inside look at why this comparison comes so often and why it’s still invalid.

Sure, both HoloLens and Kinect use hand gesture for interaction, both use voice command for action control. Both are developed by the same group of people in Microsoft, and both happen to be amazing technology with no peer in the world. Indeed, HoloLens has a couple of Kinect sensors inside it, miniaturized of course. However, amazing technology doesn’t always lead to great consumer adoption. Despite great initial sales, Kinect’s momentum hasn’t been able sustained, which leads some people in the media draw comparison with HoloLens in the market department. I think people who draw comparison between the two are missing the point.

Kinect is a sensor, it does a lot of things, like body movement recognition, field depth mapping, etc., but it is still a sensor. HoloLens is a full featured computer, Kinect is just one of the its many sensors, but that’s not my point. HoloLens is a display device. As I have pointed out in another post, what distinguishes Hololens from anything else is its display technology. It breaks the traditional screen barrier: Contents are no longer contained in a fix-sized screen, not to mention its 3D holographic capability. But this is still not quite my point.

In essence, Kinect is an input device. HoloLens is a output device first, input device second. And that is my point. So, what does it mean? What difference does it make? Lets take a closer look (I know I have used this sentence too much, but I am not tired yet).

HoloLens Technology – 3D World Mapping

Kinect is not a great input device, neither is HoloLens. To understand this, please look at another post of mine: Natural User Interface: Is Natural Always Better? Sure, Natural User Interface (NUI) is great concept, however, no matter how we label it, in the presence of mouse, keyboard and game controller, every other ways of interactions look inferior, that includes hand gesture, voice, gaze and touch. Those NUIs are only valuable when you don’t have access to a mouse, keyboard or game controller, like the way you use a phone, a tablet on the go. Whenever you’re siting at a desk, a mouse is always the best way of human-computer interaction. I think every gamers or game developers agree with me that use gesture to play a hard core game is close to impossible. So, basically, Kinect is trying to use an inferior input method to replace great input methods. And we know the results.

HoloLens is an input device as is Kinect, but its main function is an output device: a display. It is its own display, it can also be a display for a PC, a display for Xbox. The key point here, it doesn’t exclude other input methods: mice, keyboards and game controllers. You can still use a PC the way you use it before, HoloLens just adds another great display. You can play games on Xbox the way you always do, with a game control in hand, the game can be streamed to a giant display on Hololens. Even you use HoloLens as a standalone machine, you can still use a physical keyboard, a mouse, or a game controller. What does it mean, really?

HoloLens Technology – Eye Tracking

It means every application that works on a PC should work with HoloLens, because you consider HoloLens as a mere display. Every Xbox games will be instantly available to HoloLens, I said every.

Yes, I heard your argument: Why do I use HoloLens only as a display? I buy HoloLens for 3D holograms. I believe there will be 3D holographic games, and 3D holographic applications. DirectX has been used for game development, I believe having those games appear as 3D holograms wouldn’t be a major problem, but my point is even without those 3D stuff, HoloLens gives you a giant display which is can be a huge boost to your PC or gaming experience.

In summary, Kinect is a input device, which is its weak point, in my opinion. HoloLens still has the same input device function, but it doesn’t exclude other input methods. HoloLens’ display is what makes it great: 3D or 2D.


PC + HoloLens: Would It Work?

Why HoloLens’ Most Remarkable Achievement Is Its Display

Xbox + HoloLens: How Can They Work Together?

Digest the Windows 10 Technical Preview SDK (Updated)


Fig. 1 Convergence

Fig. 1 Convergence


Windows 10 Technical Preview SDK was released two days ago. This is probably the biggest change in the history of Windows, in terms of impact on user experiences and businesses. However, from a developer’s point of view, it is not easy to say. On one hand, it is huge because one binary runs everywhere, on the other, the technology is not entirely new. Coding for Universal Application Platform(UAP) is not much different than coding for Windows or Windows Phone. So the transition should be very smooth if you’ve ever done anything on Windows or Window Phone, coded for Silverlight or WPF. Well, that’s when you have a good understanding of the new development tools.

Along with the release of Windows 10 Technical Preview SDK, 14 videos titled Developer’s Guide to Windows 10 Preview was posted on Microsoft’s Channel 9 site. It’s Jerry Nixon and Andy Wigley talk about the new SDK and what’s new in UAP. If you have any interest in developing for Windows 10, I strongly recommend you to watch those videos to get a big picture of what’s going to come in the summer. BUILD conference starts April 29th, the official SDK will likely come out then, but it is important to get some feelings now. There are a total of 14 videos, I don’t think anyone have the time or patience to watch them all. So I did it for you. No, I just watch some of them, but enough to give an overview what it is about, before you spend time on it.

The Convergence Story

They talked about the story of convergence in Windows 10(please see Fig.1). There are a few checkpoints: At the time of Windows 7, Windows Phone 7.5, and Xbox 360, those devices are running on totally different operating systems. The first step of convergence happens during Windows 8, Windows Phone 8 and Xbox One, when NT kernel was adopted by all devices, but leave the UI and user experience separated. Windows 8.1 and Windows Phone 8.1 moved things a little closer: Developer can create one project and target both Windows and Windows Phone, but you still build two binaries, and summit them to two different market places, user has to buy them separately. With Windows 10, it comes to full convergence.



Fig.2 UAP

Fig.2 UAP

UAP – Universal App Platform is the single most important concept brought in with Windows 10. Under Windows 10, you no longer target specific type of devices (PC, phone, Xbox, HoloLens, etc.), you develop for UAP. It a big change, but it is also great news. You create one code, build one binary, publish it to one app store. I don’t know how you feel, to me, it’s a dream to both developers and users.

Extension SDK


Fig. 3 Extension SDK

Fig. 3 Extension SDK


UAP is great, but there are many things cannot be unified: A PC doesn’t make calls, a phone doesn’t have game controllers. The solution is Extension SDK. You can reference those extension module from Visual Studio. Also the SDK provide a way to check device capabilities at run time. Fig. 4 shows an example of that.


Fig. 4 Check Capability at Runtime

Fig. 4 Check Capability at Runtime

Another thing is you don’t need #if anymore. Well, the purpose of #if is to build more than one binaries on one code base, since you need only one binary, there is no need for #if anymore. It is still supported though. We now check device capabilities at run time.

The SplitView

This is first of two important new controls introduced in Windows 10. What is SplitView? This is SplitView (see Fig. 5).

Fig. 5 SplitView

Fig. 5 SplitView


It is a new style of menu that is more adaptable to the screen size changes, and work well for both touch and mouse. It is a control that can be constructed in XAML like other controls. Interesting thing to mention is the menu button can be positioned at the bottom (for phones and tablets), or at top (for PCs).

The RelativePanel

This is another important new control in Windows 10. It’s more important than you think. RelatvePanel is a panel, you use it for layout. It solves the problem that programmer has to anticipate screen size and orientation, and reorganize controls accordingly. Instead, you put controls inside a RelativePanel, define relationship between them. You are done. It won’t solve all layout problems, but most of them. See Fig. 6.


Fig. 6 RelativePanel

Fig. 6 RelativePanel


Now you have it. You probably want to watch some details on these videos: #2 Hello World, #4 Extenstion SDK, #5 SplitView, #8 RelativePanel. As to the other ones, it depends on your time.

Remember this is tech preview, things may change a little at end of April, but I don’t see much change then. I would expect the SDK will include Windows Holographic and HoloLens though.


-Update: Just found this video also on Channel 9: A First Look at Building Windows 10 Universal Apps. This is Kevin Gallo from Microsoft talking about Windows 10 UAP at MWC 2015. It’s important because there is live demo of how to adjust UI to suit different screen sizes. Also there are demos of SplitView and RelativePanel which I found better than the afore mentioned videos. You can go right to 18:05~37:00 (the whole video is long):

18:05 – 20:15 UAP
20:16 – 25:40 Adaptive UX, How UI change to adapt to screen sizes
29:28 – 37:00 Live Demo of Adaptive UI, SplitView and RelativePanel.

I want also post an interesting screenshot here. The picture is blurry but the content is good.


Yes, HoloLens is there!

Yes, HoloLens is there!




How HoloLens Will Change Windows UI – (2) Another Dimension

We know Windows is a 2D operating system. The main user interfaces are made of “windows”, sometimes dialogs. Even desktop (a blank screen with icons) is a window of itself. Windows can dock with the four edges of the display, or with each other. They can float and stack on top of each other. Programmers know that in Windows, windows are actually organized in 3D, there is a Z-axis. When they pile up on top of each other, there is a Z-index to tell who is on top of whom.  But it is still 2D, because the display is 2D.

Windows 1.0 was released in 1985. For the past 30 years, Windows has been contained in a 2D display surface: from small to large, from spherical to cylindrical, to flat, from CRT to LCD/LED. One thing is consistent: Windows can never break the display boundary. The information it can display is limited by the screen.

In 2019, You May Not Need a Smartphone, Or a Tablet

Now we have HoloLens, we have a third dimension. You see, all of a sudden, the barrier is broken. To be sure, one more dimension is a lot of screen estate. To get the idea how much more screen space we have gained from this: Not only the XY dimensions are enlarged to as much as you can see(in reality there is field of view constraint too), but also Z-dimension can go as far as your physical vision permits (actually it is limited by the walls). So now, theoretically, HoloLens turns a 25″ surface display into a whole room, which is only constrained by the walls. The question is: what do we do with it? Choices are: 1. We don’t need to do anything, we have a giant 3D display, we can fill it with anything we like. 2. We can automate the windows organization to take advantage of the new dimension and new spaces.

PC + HoloLens: Would It Work?

One idea I have in mind is to change the way windows stacking and docking works: allow to select open apps and one gesture to dock them, same gesture to break them and put them back into their pinned position(see picture above). Also one gesture to stack open apps: along either X, Y, or Z axis (see pictures below). Also, multiple instance of the same apps can be stacked automatically. Remember in 3D holograms, windows don’t cover each other, even when stacked up!


stack stack2
Does HoloLens Have to Be Worn on the Head?
HoloLens Misconception – 3D
From HoloLens to “True” Hologram: How?



HTML Study Notes – Part 2

19. <img>

<img src=”L920.jpg” alt=”Lumia 920″ width=”150″ height=”300″>

20. Float <img>


<img src=”img1.gif” style=”float:left“> A paragraph with an image. The image will float to the left of this text.



<img src=”img1.gif” style=”float:right“> A paragraph with an image. The image will float to the right of this text.


21. <img> maps

<img src=”categories.gif” width=”145″ height=”126″ alt=”categories” usemap=”#categorymap”>

<map name=”categorymap”>
<area shape=”rect” coords=”0,0,10,122″ alt=”News” href=”news.htm”>
<area shape=”circle” coords=”220,74,33″ alt=”reviews” href=”reviews.htm”>
<area shape=”circle” coords=”120,50,8″ alt=”devs” href=”devs.htm”>

22. <table>

<table border=”1″>
<th>Header 1</th>
<th>Header 2</th>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>

23. gouping and style table elements

<!DOCTYPE html>
<style type=”text/css”>
thead {color:green;}
tbody {color:blue;}
tfoot {color:red;}
<table border=”1″>

<p><b>Tip:</b> The thead, tbody, and tfoot elements will not affect the layout of the table by default. However, you can use CSS to style these elements.</p>


24. Lists

Unordered list:
Ordered Lists:
Definition Lists:
<dd>- black hot drink</dd>
<dd>- white cold drink</dd>

Tip: Inside a list item you can put text, line breaks, images, links, other lists, etc.



HTML Study Notes – Part 1

Over the years, I have developed a habit of taking note while I am studying. Especially before major test. I usually go through a whole bunch of materials that are relevant to the topic, distill everything important to a note. The result is small list of things with proper details. The art is this: the note is not too detailed to bloat the content, but properly detailed to be just enough for the test. After this, I only go through the note a couple of time before the test. I am sharing some of them here in the whish this would help with your test, interview or whatever it applies.

1. A Backbone HTML Document

    <!DOCTYPE html>
    <title>my home page</title>
    Hello html!

2. New to HTML5

<canvas> <video> <audio> local storage
<article>, <footer>, <header>, <nav>, <section>
new form controls: calendar, date, time, email, url, search

3. Element

A web page is a collection of elements. An element is anything between opening tag and closing tag. Elements can nest.

4. HTML Time Table

html  – 1991
html+  – 1993
html 2.0 – 1995
html 3.2 – 1997
html 4.01 – 1999
html 5 – 2012

5.(no title)
<h1> ~ <h6>
<a href=”http://www.mywebsite.com”>my website</a>
<img src=”mylogo.jpg” width=”100″, height=”200″/>

6. (not title)
It is suggested to use lower case (tags)

7. Attribute with quotes
name=’my “dumb” name’

8. Lines

<p>this is a paragraph</p>


<!–this is a comment–>

10. Line break


11. <strong> or <b>

<strong> — means important, usually rendered as <b>, but doesn’t have to.
<em> — means emphasis, usually rendered as <i>, but doesn’t have to.

12. Preformatted Text


This is 
preformatted text.
It preserves    both spaces
and line breaks.


13. Programming Related Tags
<code>Computer code</code>
<kbd>Keyboard input</kbd>

<samp>Sample text</samp><var>Computer variable</var>


14. Text Direction:

<bdo dir=”rtl”>
Here is some Hebrew text

15. Block Quote and Inline Quote


this is a test of block quote;

<q>Build a future where people live in harmony with nature.</q>  <!– inline –>

16. Deleted/Inserted Text

<p>Update: <del>deleted this</del> <ins>inserted this</ins>!</p>

17. HTML Links – The target Attribute

<a href=”http://www.mywebsite.com/” target=”_blank”>webcome to mywebsite!</a>

–new tab or new window

html links for bookmarks:

<a id=”phone”>Smartphones</a>

<a href=”#phone”>Go to smartphone</a>

or from another page:

<a href=http://www.mywebsite.com/links.htm#phone>Go to smartphone</a>

18. <head>

<title>Title of the document</title>

The <base> tag specifies a default address or a default target for all links on a page:


<base href=”http://www.w3schools.com/images/”><base target=”_blank”>


The <link> tag defines the relationship between a document and an external resource. The <link> tag is most used to link to style sheets:


<link rel=”stylesheet” type=”text/css” href=”mystyle.css”>


<meta name=”keywords” content=”HTML, CSS, XML, XHTML, JavaScript”>

Define a description of your web page:

<meta name=”description” content=”WindowsComments HTML Study Notes”>

Define the author of a page:

<meta name=”author” content=”Bill Gates”>

Refresh document every 60 seconds:

<meta http-equiv=”refresh” content=”60″>

Coming up: HTML Study Notes – Part 2

What Is a Phablet?

When started this website, I planed a lot of big topics. Where to start from? I decided to start with small things, like…

What is a phablet?

“Phablet” is word made up by technology writer Mary Jo Foley, freshly, referring to 5″ (or larger) screened smartphones. Take no guess, it is phone + tablet. If you go to mobile stores, you may see some extremely large screened phones, they are phablets. People start using this word more and more on the internet. There is a good chance it will be common word soon. I wouldn’t be surprised if you see in the dictionary one day.

Speaking of phablets, I never found them look attractive. Maybe because the OS they are running on. That kind of ugly interfaces never look good on any device. More like people’s face, an ugly face better be smaller. Maybe phablets can be good looking if they have Windows Phone 8 running on. Lets hope.

Now, a bonus question: what is a smartphone?

“Smartphone” was one version of Windows CE that runs on phones. The other version was called “Pocket PC”, which would run on PDAs. The concept of PDA no longer exist but the concept of smartphone grew. Why Microsoft didn’t patent the term smartphone, I always wonder.