July 1, 2022

How Big Is HoloLens’ Field of View?



I have said this too many times, but there are still a lot of dumb asses in media do have a clue.

47″ TV: 19 x 11 degree
HoloLens: 30 X 18 degree

The above screenshot from Microsoft’s recent concept video shows just that. I know that’s a mock up, but it agrees to my estimation perfectly.



HoloLens SDK Is Expected to Release Soon!



As a number of people who have followed my blog noticed that I am writing a HoloLens programming series. I am ready to bring in another post with detailed programming technique and a working example based on my recent research on HoloLens programming. Just before I do so, I checked with the some great people that I have access to, just making sure that I am on the right direction, and that I am not misleading my readers. I got some information that is beyond exiting. I can’t contain my excitement. How reliable is my source? Well, I rarely say things that I am not sure of. Talking is cheap, lets get to is.

(We’re) working hard to release development tools and are looking forward to sharing information on the SDK for Microsoft HoloLens soon. The best way to ensure you receive developer updates and holographic APIs when available is to join the Windows Insider Program and install the Windows 10 Technical Preview. You can also start by building Windows universal apps and ramping up on Unity.

If you are a developer, you don’t need me to say anything more. This a what everyone is waiting for. I wonder why Microsoft didn’t make it available earlier.

For now, I will hold off my HoloLens programming series. Lets talk about it more when the new SDK is released. I think the date should be in line with Dev version of HoloLens hardware release, which is within two months.



HoloLens Programming in C# and DirectX – A Closer Look


Edit: The content of this is still valid, but some of the practice may not be ideal, please here for details.

We are not ready for the code yet. Before I show you how I do C# and DirectX, I want to do two things in one post: 1. Show you all the options we have for programming DirectX in C#. 2. Give you a little introduction about what the hell DirectX is. Lets get to it.

What are the options?

1. Unity + C# script.
As I said in the previous posts, this is not an option for HoloLens apps. Because Unity is for games only. You can still do apps with Unity, but it is going to be resource intensive, as you may expect for a game. If you have large amount of 3D visuals, like in a flight simulation, or the one like Case Western Reserve University does with HoloLens, you are still better off with Unity, but for light 3D rendering, mostly business logic and communication or things like a normal app does, you better write an app instead of a game. You need to look for something other than Unity, or any other game engines.

It would be ideal if Unity or another game engine manage rendering in the way like an app does, that would great for application development, but that’s not the case now. If the app itself has very dynamic objects in the scene, they are moving all the time, and requires fastest response possible from the user, then you have to go with game, no matter it is called a game or not.

2. C++/C# UWP app with DirectX in CoreWindow
CoreWindow is a class that represents the utter most application window of a UWP app. There are two project templates in Visual Studio 2015: DirectX 11 App and DirectX 12 App (New Project -> Visual C++ -> Windows -> Universal ->). Either of those two template generates bare bone code that is based on CoreWindow.

The templates titled “App”, but they are actually games. There is a game loop on app level. Visual updates are done at a possible frame rate. The DirectX rendering target is the app’s CoreWindow. The two templates are C++ projects, as I will show you in next post, it is very much possible to code DirectX in C++ and C# for rest parts, but this one is not our interest, because again, it is a game, not an app.

Let me try one more time to make it clear about the difference between an app and a game from a developer’s point of view. A game tries to use as much CPU/GPU as possible to satisfy a game’s need for frame rate. That’s why it runs on game loop to update visuals, instead of let the system handle them. Lets say, beside display and interaction, your app have a lot of other task to do, if your application is trying every 20 ms to update visuals, what time is left for everything else? I just found it’s not the ideal way of programming.

3. C++/C# DirectX with SwapChainPanel
SwapChainPanel is a xaml control designed to make DirectX work inside of the xaml controls. This is much like XNA and Silverlight interop in the past. It achieve the best of both world. Usually you put SwapChainPanel as the main scene, with other controls work as overlay. SwapChainPanel deal with DirectX rendering. However, the design of SwapChainPanel is still game oriented. You may use SwapChainPanel as islands among other controls, but the general guideline from Microsoft is SwapChainPanel targeting game development.

By the way, there was a SwapChainBackgroundPanel, which is replace by SwapChainPanel.

4. C++/C# DirectX with SurfaceImageSource
SurfaceImageSource works like general ImageSource for XAML controls. Many XAML controls can have ImageSource, SurfaceImageSource works in similar way, the difference is SurfaceImageSource is a surface for DirectX renderings. The resource of than rendering can be used as a image source for many different controls. In the next post, I will show you how to do the rendering part in C++, and everything else C#, like what you do in any UWP apps.

5. C++/C# DirectX with VirtualSurfaceImageSource
VirtualSurfaceImageSource is the same as SurfaceImageSource, except the former is for DirectX rendering of unlimited size, usually larger than the screen size. This is, I think, the best fit for HoloLen applications, because your visuals are likely spreading in the space instead of a small window. In the post after next one, I will show you a working example of that.

So, what the hell is DirectX any way?

DirectX is the ultimate 3D rendering APIs provide by all modern Windows OSes. Whatever 3D engines you know that work on Windows, work on top of DirectX. Being Unity, XNA, Unreal Engine, or any others, there is no exception, they are on top of DirectX.

DirectX is a collection of APIs that do not only 3D, also 2D, Text, Texture, shaders, that’s the X in DirectX. They are:

* Direct3D – for 3D objects
* Direct2D – for 2D overlays
* DriectWrite – for text
* Untilities: DirectXMath, XAudio, XInput

That’s not all, the following are parts of the DirectX subsystem:

* DXGI – Microsoft DirectX Graphics Infrastructure, deals with display devices directly. Because 3D drawing need to be faster than usual, that’s why programmer are required to deal with hardware directly. That’s the interface for it.
* HLSL – High Level Shading Language for DirectX. You write shading in this special language, with extension .hlsl, Visual Studio will compile it to binary.

In DiretX programming, you hear one term a lot, but it doesn’t make sense to most people, that’s Swap Chain. Forget about “swap” or “chain”, think of it as a display buffer, you write on the buffer instead of the monitor itself, the video card will take care of it. The reason it is called a chain because there are more than one buffers, one after another to improve performance. Why swap, well, you don’t need to know. Swap chain has nothing to do with DirectX, it is part of display technology existed long time ago.

Why DirectX programming is hard?

There are two reasons, and two only: 1. the designer of DirectX decided to use stupid names for their APIs, like D3D11CreateDevice(). Fyi, take this one for example, D3D11 means Direct3D version 11. They could just call it CreateDeive(), but they decided to make our lives harder. 2. We don’t do 3D that much. But I promise you, it is just a matter of familiarity. When you see the term “Swap Chain” or the ugly function names the 20th time, they start making sense to you.

That’s it. Next up is an example of SurfaceImageSource, then there is another sample code of VirtualSurfaceImageSource.



HoloLens Programming in C# and DirectX – The Big Picture



We need to be clear about this first: what is developing a HoloLens app? HoloLens is a computer running on Windows 10, by definition, every UWP application should be able to run on HoloLens. So if you write an app for Windows 10 UWP, and publish it to Windows Store. It should run on HoloLens, the way it runs on Windows desktop computers. However, that’s not what I mean by developing for HoloLens. Developing for HoloLens means your app takes advantage of HoloLens 3D mixed reality display, and optionally utilize spatial mapping, hand gestures and voice input. In this post and a few others after this, I only explore 3D display, in the context of HoloLens reality mode, not within a floating/pinned window as for a normal UWP app.

In multiple occasions, Microsoft had hinted Unity with C# script would the way build HoloLens apps. I don’t disagree. Unity is a high level game engine, especially for 3D/2D screen rendering. It is in the same position as XNA was before. Because XNA is no long supported in Windows 10. Unity is probably the best replacement. Unity is recommended for game development in general, not just for HoloLens. Even though you can do DirectX directly, but Unity would make many complicated task much easier otherwise. Also, the Unity Store has tons of stuff for asset creation, some of them are free.

Unity runtime is written in C++, so your C# code for Unity is called C# script, meaning they are not compiled to .Net code. On the low level, Unity is based on DirectX. It is a high level wrapper of DirectX, but a lot more than just a wrapper. The compilation of a Unity project results in a Visual Studio project. There you can deploy, run and debug on HoloLens. To get start with Unity game development, I recommend Adam Tuliper’s post on MSDN: Unity : Developing Your First Game with Unity and C#.

It is clear that if you want to develop a HoloLens 3D Holographic game, or simulation app, like fly simulation, or educational holographic 3D illustration, you can safely choose Unity with C# scripting. Then use Visual Studio to deploy and test on HoloLens.

That’s all good… but, there is a problem.

Unity is a game engine, it is NOT an app engine. The same way XNA is a game engine, not an app engine. I have been asking this question: can you write an app on Unity? Now it is clear, the answer is NO. Of course you can call a fly simulator an app instead of a game, but a game and an app are intrinsically different. Allow me to explain.

A game requires fast real time response and fast real time visual refresh. It sacrifice everything to satisfy the above too requirements. That’s why a game is always running on it own separately loop, called the game loop. An app, on the other hand, is supposed to be on idle until there is input from a user. An app tries to use as less resource as possible. An app is running under system message loop, it is message based. The system take care of visual update.

If you are developing an app instead of a game, you don’t want your application in a busy loop. You don’t want your app to use as much resource as possible to gain frame rate. You want your app to be friendly to other apps.

So, if you develop an app, Unity is out of picture, but you still want to show 3D holograms. Well, that’s the point of HoloLens apps, right? Now what would you do? The answer is DirectX. As far as my research goes, there is no other way currently.

Write an app using DirectX? That must be hard, you say. In fact, it is not as hard as you think. If your application is mainly application logics, with light 3D visuals, like AutoCAD, it is not that hard. It all depends on how complex your 3D models are. I had no previous DirectX experience, by reading and researching for a couple of weeks, I can write simple 3D renderings now. I will present you those DirectX terms and basics to get you started.

Now it comes the real question: Do I have write my app in C++ to use DirectX? Microsoft says yes. There is also a C# wrapper for DirectX called SharpDX, but I found it doesn’t make things much easier. Also, you put your future to an uncertainty by using a open source package.

During the past week or two, I have worked out a way to separate DirectX and your app code: you put your DirectX code in a Windows Runtime Component project, in C++. Your main UWP app code in a another C# project. That way, you can have the freedom to write your big chunk of code in C#, but only a small portion of rendering code in C++. So far, I found it’s best solution for a HoloLens app structure. In the next post I will show you how that works. Also give you working code for download.

Before ending this post, I want to explain why I am doing that. For two reasons: I like to write C# code more than C++. Indeed, I have far more experience in C++ than in C#. I also have good understanding of COM programming, as the server and consumer, but I don’t like writing a UWP app in C++. It just doesn’t seem natural. I believe many would agree. The second reason is most of my examples are in C#. If you have written Windows or Windows Phone apps before, there is a good chance you were using C#. There is zero chance you did it with C++.



HoloLens Programming in C# and DirectX – Intermission



While writing this programming HoloLens series, an extremely relevant, extremely informative, and extremely on topic video popup. I embedded video here, I think it is very very helpful for developer.

Main points from the video:

1. Battery life: 2hrs heavy renders, 5.5h light use.
2. FOV: 15″ monitor half arm length from eyes. Why? Cost and battery life.
3. A number of sensors (I think GPS is very likely).
4. Transparency is adjustable.
5. For complex visual, need to utilize a server to do the rendering, then push the rendering result to HoloLens.
6. Server can be used for multiple wearers to share the same scene.
7. Connection: WIFI, Bluetooth.
8. Unity is the main program engine.
9. It’s a like a laptop in term of CPU power. (Think of Surface 3.)

I will continue this series later.



HoloLens Programming in C# and DirectX, without Unity



As a developer myself, I am exploring how to get started to develop HoloLens applications for the up coming device. The information has been limited from a developer’s perspective. Currently, all sources pointed to Unity. However, that’s doesn’t answer all the questions. Actually there are far more questions unanswered comparing to that it answers.

I have been researching for the past a couple months. Along the way writing this blog, I have gained a comfortable amount understanding about HoloLens from both a user’s perspective and a developer’s perspective. Thought I would share my research results now. This journey consists of a few posts: I will first give a big picture of HoloLens programming: options and realities, then there will be two or more tutorial like postd about how to develop 3D application with working examples and code to download. Keep in mind, I don’t have a device with me. The code has some assumptions. But based on my understanding, if you trust me, my assumptions are usually close to the reality.

I will answer the questions like: Why use Unity; Why Unity is not the answer for everything; What to do if Unity can’t be used. I will show you the difference between an app and a game. I will show you how to write a DirectX application in C# without using a wrapper like SharpDX.

This is just a setup post, the rest is coming up in the next a few days.



A Year of HoloLens


Today is December 21, 2015, one month short of the anniversary of HoloLens’ first revealing. I don’t want to wait for another month to write an anniversary article. As we are approaching the end of 2015 and the start of the new year. I would like to look back at the short and long history of HoloLens. As I set my mind to this task, I have realized, this very site (windowscomment.com) is the only dedicated blog site for HoloLens. I have wrote far more articles about HoloLens than any other website on the Internet. I am proud.

A Bit of History

To start, lets watch the first official Hololens video from Microsoft, posted January 21, 2015.

The HoloLens journey started long before January 2015.

In January 21, the WIRED magazine published an iconic online article titled Project HoloLens: Our Exclusive Hands-On With Microsoft’s Holographic Goggles. Most people don’t realize that even the article was posted on Jan 2015, but the article was talking about the their experience with HoloLens back in October 2014. Strange thing is, January 21st was the day HoloLens was revealed to the published, everyone in the media were allowed to write/publish about HoloLens, which essentially made WIRED “Exclusive Hand-On” meaningless. And further, most people don’t realize the HoloLens they saw in Oct. is actually identical to what we see in Dec. 2015. What do those mean? Let me explain.

Clearly, the initial plan was to reveal the HoloLens of today, not the very raw, big Field of View prototype of Jan 21. The article was supposed to be published in Oct 2014. The change of mind is obviously related to FOV issue that everyone have been talking about now. In any case the hardware haven’t updated since Oct. 2014. By the way, WIRED magazine pushed another full length article about HoloLens in its Feb issue (printed version), same article later posted online.

Of course, there had to be a lot more years leading to Oct. 2014. Many people believe the project started 7 years ago. I have seen another Microsoft unofficial blog says 10 years ago.

The earliest leak of the project was March 2011, in Craig Mundie’s speech in Australia. You can find this article online, but I will just post some quote here:

instead of seeing a screen it can beam individual rays of light into your eyes right on your retina … [so] you can look at your phone and see HDTV

Craig Mundie didn’t mention “Project HoloLens”, but it’s easy to connect the two. HoloLens has two critical parts: the spatial mapping and the light engine. I would safely guess that there were two threads that lead to Project HoloLens: the light part is what Mundie talked about, and spatial mapping part is what lead to Kinect. Now they are on Project HoloLens.

Back to January 21, Microsoft was holding a Windows 10 event that day. The big chunk of the event was about Windows Azure cloud platform update. ScottGu was on stage unbearably long. Then it was Windows 10 consumer features: Continuum, Windows Hello. Then Windows 10 developer features: Windows Universal Platform. At the end, Alex kipman went on. No one had heard him outside of Microsoft. He showed the above video, and announced something called HoloLens.

The video was watched 10 millions times during the first two days. The same day after Windows 10 event, the media was demoed the raw HoloLens prototype, which was tethered, with a big enough FOV. The demo includes a collaboration with NASA called Project OnSight. The tech world was shocked to say the least.

Then it come the BUILD conference on April 29. For the first time, the media were shown the close to final product, the same thing shown today. The press was shocked again, but in a negative way. The FOV had because so small that is not even comparable to what was shown in January. Everyone was disappointed. It was unbelievable how this thing was handled all along.

As I said at the beginning, Microsoft knew about this long before January. Why do they show the tethered prototype that was so much different? That’s a question I still don’t have an answer.

After BUILD, HoloLens have been shown during a few other occasions: E3 2015 on June 16 in Vegas, multi-city road show in July. The same hardware, but updated applications.

Recently, Microsoft have announced HoloLens Developer Edition (which is same one available since Oct. 2014) will ship to developers early 2016, for $3K.

Interesting thing during this is the dates: promised and/or missed dates. The above WIRED article said the product will be in developers’ hand during spring of 2015, that didn’t happen. Microsoft said NASA will be using HoloLens in July, 2015 with its OnSight project, that didn’t happen. Instead of OnSite, which requires a large FOV, they started another project called SideKick, which doesn’t require a big FOV. Microsoft had said during the unveil of SideKick, the OnSight project is still on. We haven’t heard anything about it since then.

Apparently, the original plan was to release the product, which is the exactly like what it is today, in July, as I wrote in many articles. The change of plan is due to overwhelmingly negative response.

What Went Wrong?

Microsoft knew the issue long long before Jan 21st. A very polished product was done three month before that. The product looked every bit like a final product. It indeed looks like a product from a product line. I am tired of explaining, but let go into a little detail to make it more obvious so the media nonsense can stop.

Look the HoloLens from my title picture above, and tell what you see. That’s not something you see anywhere on earth. I bet the majority of parts are customized, you can’t find them on the market. And you can’t make a custom order of 500 units for all of those 100s piece of customized parts hardware. It doesn’t make sense for prototype to be made like that. If you look carefully, Windows logo is on too.

The January demoed and the one worn by the cameras shows the technology with a large FOV exists. It is just has to be tethered. You have seen the long cable dragged with the camera. Microsoft have insisted of mobile, portable, untethered, which is great. But what is wrong if you give people a tethered one with a large FOV, which seems to be a make or break feature? I don’t see anything wrong if I am siting at a desktop, with a heavy, tethered HoloLens attached to my PC, exploring Mars surface beside me.

The short answer to the question is: It is a strategy problem, not a technical problem. They could release a tethered version and mobile version at the same time. All the VRs are tethered. Microsoft’s insistence of untethered, mobile is the problem.

The Specs

Regarding to HoloLens specs, this is what we know so far:

>> Weighs about 400 grams, or about the same as a high-end bike helmet.
>> Contains two Kinect cameras(120×120 degree FOV depth sensor), a Cherry Trail CPU, a GPU, a HPU, a light engine, lens and vent.
>> A stand alone PC that runs on Windows 10.
>> Has only three buttons: one for sound volume, one for adjust contract, one for power.

How Big is the FOV anyway?

The most accurate measurement is from doc-ok.org. It is said to be 30 degree horizontal, 18 degree vertical. Why 30×18? Because 30 degree is the definition of “Near Peripheral Vision”, which is what makes sense in your vision, and 18 degree is the “Pure Central Vision”, which is how much you can focus on. However,things beyond 30 degree are still important because that gives you cues on what exist.

I have measured 47″ TV of mine, a 20″ computer monitor o mine, and a movie theater, sitting at normal distance respectively. Here are their FOVs in comparison to Hololens:

47″ TV: 19 x 11 degree
HoloLens: 30 X 18 degree
20″ Monitor: 40 X 23 degree
Movie Threater: 65 X 40 degree

So, the experience is noticeably smaller than a 20″ computer monitor sitting on the desk, but considerable better than 50″ HDTV.

Here is the bonus question: Can HoloLens replace you TV? Well, regarding size, it beats your 50″ HDTV comfortably.

HoloLens as a Computer

I have written tons of articles about HoloLens as a computer. Most of them are speculations at the time, today I can confirm, my accuracy was close to 100%.

HoloLens is a PC running Windows 10. It is every bit a computer, without need for a monitor. It runs all Windows 10 applications, including Edge, NetFlex. You can use it with any wireless or Bluetooth Keyboard, mouse. It doesn’t support touch, but uses air type instead. You can use voice command. You can stream games from an Xbox/PC to it.

HoloLens as a Display

HoloLens is a Computer with out a display, because it is a display itself, It is the most revolutionary display. The thing is, it doesn’t just act as a display for itself. It can also work as a display for other devices: Xbox, a PC, or whatever that needs a display.

Why the Hell Do I Need a Tablet?

The size of the display has been the main factor that categorize a mobile device. With HoloLens, the display is gone. Size no longer matters, because it is virtual. Of course, FOV is still a constraint, but if FOV is big enough, you can have a display range from 1″ to 100″ as you wish, you do that without make the device bigger or heavier. And you get 3D. Why the hell do I need a tablet, or a phone? You tell me.

The predictions

During the year, I have make many predictions about Hololens. Most of them are right on. One exception is the release date. I have predicted July 2015. That’s far off. Without going too wild, here is my predictions for 2016.

1. A commercial release will be sometime toward end of the year. Lets be real, the hardware is ready long long times ago, when developers get apps ready, they don’t want to hold it for years. One main factor that decides the release date is how many business applications will be available. I mean the really ones, not the toy apps that can be done on two weekends. That will likely happen end of the year 2016 or early 2017, because serious business applications take long to build.

2. A tethered HoloLens will be Released along with the current one, mainly for gaming.

3. Current HoloLens hardware will be update to a larger FOV by end of 2016.

That’s all I can say for now.



Recommended Readings: Developing Your First Game with Unity and C#


Develop for HoloLens is develop UWP apps for Windows 10, right? Because all UWP apps run on HoloLens. Theoretically true, in reality false.

If develop for HoloLens is all about develop for UWP, then the notion of developing for HoloLens wouldn’t exist. In reality, develop for HoloLens is about taking advantage of HoloLens in mixed reality. One important element is 3D. Your choices are 1. Code directly on DirectX, which is generally a hard thing to do. 2. Use a third party 3D engine. If you choose number 2, then Unity is your obvious choice.

Unity is a 3D/2D game engine, but its use is not limited to game. One thing keep in mind though, game and app are totally different thing. A game runs on frames, visuals are upgrade once per frame, and it is running on a game loop. If you are developing a normal application, you probably don’t want that to happen. One thing I don’t have answer though: can Unity help with a non-game application? In the old day of XNA, there is a mixed mode: Silverlight + XNA, they interact with each other. I will have to leave the readers to figure this out.

If you are writing a general app, and use 3D rendering lights, code in DirectX would be a better choice, but again, you would have to go C++, instead of C#, because currently there is good interface between .NET and DirectX 12. If you are writing games, of mostly game like application, Unity would be your choice. Here are a few post from Adam Tuliper, senior technical evangelist with Microsoft, that will get you started with Unity in C#.

Developing Your First Game with Unity and C#
Developing Your First Game with Unity and C#, Part 2
Developing Your First Game with Unity and C#, Part 3
Developing Your First Game with Unity and C#, Part 4
Cross-Platform Game Development with Visual Studio Tools for Unity



What Do Microsoft Need to Succeed in Consumer Market?


I have been writing about Windows Phone and other Windows devices for about 5 years, spent most of off-business time writing about HoloLens since anyone outside of Microsoft heard about it. I can proudly say, no one on this planet had written more about HoloLens than I.

During this time, I have notice one thing that most media don’t want to talk about: anti-Microsoft asshole effect in media and it audiences. Take one of my friends as example, one day we were discussing something technical. He went over to my computer, tried hard to find Chrome on my machine, but I didn’t install that. He has to settle for IE11 that I have, and type in google.com to search something. I want to say: fuck you! but he is my friend. You see, I have IE already open, Bing already open there for him to type in anything he wanted to search for. But he has to find that ancient, 1990 like user interface and search for something he think he couldn’t find from Bing. To be clear, this guy is not stupid, he wouldn’t be my friend if he is. It was the media from the Internet or whatever, educated him to believe that stupid, ugly look search engine is better.

He has a phone that runs Android. Why you buy a plastic phone with an ugly user interface? He said that’s what everyone do. He said same thing to a icrap for his son to play games.

Microsoft doesn’t need a better product. Surface Pro 3/4 are already the best computer and tablet on earth by a margin. Surface 3 is the best tablet that not only play game but a real computer. Surface Book is the best laptop that icrap can’t hold a candle for. Lumia phones are best smartphones ever made by human beings.

They need to turn those assholes into human beings. It’s start happening in the media. David Pogue had been one of those anti-Microsoft assholes, beside Walt Mossberg, he had stop writing Microsoft-bashing article a couple years ago. So, did many others.

My friend may not stop acting as an unintentional asshole for a while, but as long as the media stop doing so, he will eventually.

I want to tell Microsoft here, it is not technology, it is not marketing. Spend some time on the media, that’s all it takes.



Recommended Readings: Developing Your First Game with Unity and C#


Develop for HoloLens is develop UWP apps for Windows 10, right? Because all UWP apps run on HoloLens. Theoretically true, in reality false.

If develop for HoloLens is all about develop for UWP, then the notion of developing for HoloLens wouldn’t exist. In reality, develop for HoloLens is about taking advantage of HoloLens in mixed reality. One important element is 3D. Your choices are 1. Code directly on DirectX, which is generally a hard thing to do. 2. Use a third party 3D engine. If you choose number 2, then Unity is your obvious choice.

Unity is a 3D/2D game engine, but its use is not limited to game. One thing keep in mind though, game and app are totally different thing. A game runs on frames, visuals are upgrade once per frame, and it is running on a game loop. If you are developing a normal application, you probably don’t want that to happen. One thing I don’t have answer though: can Unity help with a non-game application? In the old day of XNA, there is a mixed mode: Silverlight + XNA, they interact with each other. I will have to leave the readers to figure this out.

If you are writing a general app, and use 3D rendering lights, code in DirectX would be a better choice, but again, you would have to go C++, instead of C#, because currently there is good interface between .NET and DirectX 12. If you are writing games, of mostly game like application, Unity would be your choice. Here are a few post from Adam Tuliper, senior technical evangelist with Microsoft, that will get you started with Unity in C#.

Developing Your First Game with Unity and C#
Developing Your First Game with Unity and C#, Part 2
Developing Your First Game with Unity and C#, Part 3
Developing Your First Game with Unity and C#, Part 4
Cross-Platform Game Development with Visual Studio Tools for Unity



Recommended Readings: Hear What Astronauts Say about HoloLens


This is first time we hear what the astronauts say of the HoloLens. Check out this article from Popular Science.



New Clips Show HoloLens Is Real Deal


Microsoft is letting its own HoloLens team members post video clips from their work with HoloLens. We have seen three of them so far. They are: watching Netflix on HoloLens, Watching video on HoloLens and Stream game from Xbox to HoloLens. That shows HoloLens is the real deal, even with small FOV.

Now watch the videos first:

Watching Netflix on HoloLens:

Watching video on HoloLens:

Stream game from Xbox to HoloLens:


First, it appears to me, those videos are shot directly from HoloLens itself. I have proof for that, but I will write about it later. For now trust what I said.

Second, how small is the FOV? Precisely a 50″ TV from 10 feet, that’s the way you watch TV. If you want to watch something closely, like something in front your eyes, sorry, only small objects are fully visible. But from 10 feet, there is plenty of room for many things. I believe those above videos are shot WITHIN HoloLens Field of view.

Remember what I said about Mixed Reality Capture function that is part of Windows 10? That’s probably how the videos are made.

Streaming game from Xbox to HoloLens is a big deal. I had already wondered if there is lag. From the video we don’t enough proof about that, but that’s already too good.

Notice, some of scenes are in very good lighting, like the one close to the window. That answers a lot questions.

What’s next? I want to see reality mode games on HoloLens.

But for now, all the UWP apps runs on HoloLens. Isn’t it good enough?



Microsoft Future Vision – HoloLens, Cortana Based Sci-Fi Collections




Microsoft Research had invited Science-Fiction authors to their labs, showed off some futuristic projects they have been working on, and left rest to the writers. The results are a collections of Sci-Fi creatives. They are based the Microsoft technologies, like HoloLens, Cortana, etc. The collection covers computer vision, artificial intelligence, real-time speech translation, machine learning and quantum computing.

It took Microsoft Research 7 years to get HoloLens technology to today’s state. I am sure there are other projects that are in different stages. It would be great to see what is possible through those sci-fi authors’ imagination.

Those writings will be available tomorrow: Nov. 17th, 2015 in different formats: web, or eReaders.

If you are a fun of HoloLens, you shouldn’t miss this one. You can get them for free sometime tomorrow from Microsoft Future Vision.

Update: They are free, but I can’t find a web version.

Why I Don’t Like Open Source

I am not sure if I had posted about this before, but it is something I would like to say more than a few times.

As I said before, I don’t intend to be different just for the sake of being different. But it just happens quite so often that people are wrong and being wrong together. I feel strongly that open source is a case of that.

Before getting into the topic of open source, I want to make it clear about my attitude toward a phenomenon going on everywhere (not just in technology), it’s like this: when a few people, mostly from academic area, find something needs to be done in the sociaty, they turn it into action of movement. Once it gets support from the public, usually they do, it is raised to the level of absolute correctness. It will never be wrong, anything or anyone against it would be wrong, and prohibited. The problem with this is: once this happens, people no longer put the subject into reasoning anymore, since it is absolutely correct, there is no questioning anymore.

You see, absolute correctness doesn’t exist in this world, even for Newton’s law of moment and Einstein’s theory of relativity, and it is harmful. It reminds me of dictatorship, anything that’s is against it should not exist. We know environmental issues have raised itself to this level, and many other things, I rather not to say.

The greatest value of the modern civilization is: we don’t passively follow traditional understanding anymore. We think. we research. we verify. That’s why we are where we are now.

So, what does open source has to do with this? Well, open source movement is following the same path. Even though it has not got to the same level, but it is half way there.

What’s even more troubling for open source is: that’s provocation on the wrong cause. I support environmentalists, I just don’t like the way people put it like it is abusolutely right, and anything against is wrong. But at least they are doing it for the a good cause, for open source, the cause is wrong too.

Open Source Is Anti-engineering

The industrial revolution started more than a century ago, it has changed the world tremendously. Almost every aspects of the world is based on the result of the industrial revolution. The center of the industrial revolution is engineering. Open source is anti-engineering. Engineering process consists of trained and properly organized engineers, they follows engineering rules and stardards. And there is a established process to verify and the engineering results. Open source process consists of talented code craft masters. They have superb skills in crafting code but may or may not have the engineering diciplines required for large scale systems. They are loosely organized individules. They take no responsiblities if anything goes wrong. They don’t have established process to verify the correctness and performance of their work results.

The distinctive changes happened during industrial revolution is engineering replaced crafting.

I was fortunate enough to have attended Dr. David Parnas’s Professional Software Development course. The first slide of the course material had only one line:

Software engineers are not engineers.

What this line says is: our current so-called software engineers are coders, not engineers. Dr. Parnas would take a test to become an autorized engineer. Maybe he is the only software engineer who is actually an engineer. A mechnical engineer needs to be certified to be an engineer. Today’s software engineers, on the other hand, need only skill of coding. They don’t even need a degree in computer/electrical science or engineering. However comparing to the open source crafting masters, they are still working in a psudo-engineering environment. They are organized. They take responsibilities for their work. There is quality control that are making efforts to make sure the products work.

The point is: it is the engineering process that makes a product/service great, not the skills of each individules. The time of reliance on individule skills is long gone. We admire some super brains that can memorize PI in 200th digits, but in today’s world, that’s practically useless. Your brain can’t beat a computer’s memory. 200 years ago, a master shoe maker will a lot money out of their crafting skills in shoe making, no longer the case in today’s world.

I know some people from the open source community would argue: many of the open source projects like the ones from Apache, Sendmail, Postfix, OpenLdap, OpenSSL, … ect. are more than good. They have indeeded formed the foundation of the connected world. There is no argument about that. “So, you said open source is anti-engineering rules, why those projects can be so good?” Now let take a look at reasons behind.

There are four major reasons for those projects to be successful.

First, the software industry is still in its infancy. It is far less mature than traditional industies like mechnical engineering, material engineering, or even electrical engineering. Crafting became the only way to write a software at the beginning. Second, write a piece of software is too easy to start with, and so accessible. Delivering a software product is so easy, just post it some where on the Internet. You don’t need the trouble of registering a business, getting a permit, hiring people to do the sales.

However the biggest reason is when those projects started, software system were not as complicated as today. Many features were added over the years. It only took a few master minds to craft a mail server at that time. When software gets bigger, engineering diciplines, standards and processes are required, large scale open source projects are less and less possible. There are still some projects started as commerial efforts, latter released as open source, like Eclipse. Also there are many open source projects are actively worked on by sponsoring companies, but that’s not a validation of open source. Actually, that’s an invalidation of open source as a software development mechnism. No matter how it appears, the open sourcing mechnism is fundamentally flawed.

The Open Source Community Has a Stinky Attitude

People who support open source tend to be experts in something, especially in coding. They are so proud of who they are, to the extend that evolves to a negative attitude.

They are all about open, they hates anything that is not open. There is nothing wrong if you have great work, and you want to share with the public. But you have realize it is also prefectly fine if someone don’t want to share their work. They want to make money out of it. They start companies, they hire people, they run businesses like many people do. Businesses are what we make a living on, including those open source masters.

They admire their skills so much that they want to keep the advantage forever. That’s why they don’t like easy things. They are obessesed with cammand line UI, they hate graphical UI. They love keyboards, they hate mice. They think a graphical user interface is for begginners, the real reason they hate GUI is, those things make their advantage disappear. “Computer belongs to a few elites like us, not some random people”, that’s the hidden text in their minds. They have inner desire to make things complicated. Look at jQuery, the way they code javascript, anonymous functions, the big messy chunk of garbage that they call code.

Programmers should get out of the obessesion of personal skills. The process of coding should be as easy as possible. The four years training in computer science in colledge is not about coding. If all those Bachelors and Masters of computer science graduates all become coders, that’s sad. If I want the skills of laying bricks, I would hire construction workers, not architectual engineers. If you see many self educated coders are doing better jobs than the Masters of Computer Science, or Masters of Software Engineering in software development, that’s sadly true, you know something is wrong.




HoloLens Academic Grants Winners Accounced!



Microsoft had announced HoloLens projects grants for academics. Now, they have revealed the winners for the grants. Each gets $100k on each of their projects. Will they get continued fund after the grant runs out, I don’t know.

Here is the announcement from Alex Kipman.

Sadly, the list is very short, only 5 institutes:

  • Golan Levin, The Frank-Ratchye STUDIO, Carnegie Mellon University: Open-Source Investigations in Mixed Reality
  • Emily Cooper, Wojciech Jarosz and Xing-Dong Yang, Dartmouth College: Augmenting Reality for the Visually Impaired with Microsoft HoloLens
  • Joseph Gabbard and Doug Bowman, Virginia Tech: Collaborative Analysis of Large-scale Mixed Reality Data
  • Andy Mingo, Tawny Schlieski, Nikki Dunsire, Shelley Midthun, J Bills, Clackamas Community College & Intel, HoloLens Curriculum for Trade-based Education
  • Allen Yang, Professor Claire Tomlin, and Shankar Sastry, University of California, Berkeley: Immersive Semi-Autonomous Aerial Command System (ISAACS)

$500K is like nothing in Microsoft’s pockets, they should have done more. Microsoft have said they have received 500 proposals since July.


Surface Pro 4 vs. Surface Book: After Hands-on




Last week, I wrote this post:

Surface Pro 4 vs. Surface Book: Choose Portability over Lapability

That’s before I have seen the two products in person. Today, both of them are available in stores. I got a chance to play with them myself. I want to share what I have found out.

My main impression is Surface Book is great product, you can feel that’s a high end product without looking at the spec sheet. But, it is heavy. Well, it is lighter than majority of laptops on the market, but when put it together with the Surface Pro 4, it is just too much mass. It is deal breaker for me.

Here is the thing, if you put Surface Book together with any laptop on earth, you will pick the Surface Book instantly, provided you don’t have issue with money.

The reality is there is Surface Pro 4 beside it. SP4 is an obvious choice. 2.5 lbs to 3.5 lbs makes a huge difference.

The only thing that challenges the SP4 is SP3. SP3 is much cheaper.


My Pursuit of Tethered HoloLens Continues



A few days ago, I wrote a post titled: Is There a Tethered HoloLens? I asked Alex Kipman to comment. He did. See it here.



He wouldn’t answer my question: Is there a tethered HoloLens? But he did share something that we didn’t know. The picture at the top of this post is a frame capture I did from a NASA video showing astronauts testing to send HoloLens to the space. Obviously there is a wire comes from the HoloLens, goes down to a strap worn by the astronaut. I wondered if that had anything to do with FOV. Alex said it is actually a high capacity hard drive to store data captured from HoloLens, whatever they do with that.

Important thing is, he didn’t say no to tethered HoloLens. I will take it as a possibility. As much as I know about this technology, there is no reason to say no. It makes business sense and technically feasible.



Asus to Make HoloLens? You Must Be Kidding!



The original title was: “HoloLens Is just One of Windows Holographic Devices”, I changed it for dramatic.

This is just a pointer to an article from CNET. Interesting development around HoloLens this morning: from CNET.

It’s hardly anything new actually. To Microsoft, Windows Holographic is the real deal. HoloLens is just another Surface like device. Difference is: this one is a new category, not a new device.

Interesting thing is how it can be done by Asus. I am not a fun of those Asian companies, including Lenovo. They can do anything existing on earth, with a bad quality. Even with that in mind, there is no chance, a company called Asus can do HoloLens. Maybe Microsoft will license their technology to Asus?

If does happen, Asus won’t be the only one. Keep your eyes open.



Surface Pro 4 vs. Surface Book: Choose Portability over Lapability




Since I am writing for this blog site, people would come to me and ask what I think about the new Surface Book and Surface Pro 4, specifically which one to buy. My first advice is don’t read too much into reviews.

In real life, a CPU performance improvement of 10% is barely noticeable to anyone unless you test it on special software or hardware. We IT professionals, office workers, software developers, field workers, bankers, brokers, artists, designers, engineers, social workers, high school students care about real life performance, not those numbers on paper. Technology reviewers care about specs, bench marks, color accuracy, pixel density, and so on. They will draw charts to show you how much greater a Skylake i5 CPU is to a Broadwell i5 CPU. That might make sense to people who understand those numbers, but to most people, real life experience is more relevant. For example, today’s CPUs are far beyond what a regular user need, the performance bottle has turned to something else, like SSD vs. HDD.

Back to Surface Pro 4 and Surface Book, I have never had a hand on either of them yet. However, I am a owner of Surface 3 and Pro 3, watched enough videos of Surface Book, and spent enough time research its specs and so forth. I am now pretty confident to make a preliminary statement about those two.

Buy Surface Pro 4 instead of Surface Book. The reason is the former is lighter, light enough to make a difference.

Saying that, I know many of you don’t agree: wait, different people have different needs. I know, but I speak for the 99% of the percent of computer users, which I think is good enough. There are people who would find Surface Book suits them better, but that’s a small group of people.

Speaking of the Surface, many reviewer put their focuses on lapability. They want to see how comfortable it is to use a Surface on the laps. That kind of nonsense goes on and on. Lets now put that discussion to a rest: I have had three laptops during a 10 year period, I only had a chance to put them on my laps when I had to commute on the train in about 4 years. After that, I have never had my laptops on my laps for even once. I never find a need. I say that only because my experience is representative to vast majority of computer users. If you commute on the train or you are a technology journalist who attends technology briefings that have no desks, you will use computers on the lap for sure. Wait, I know why those reviewers talk about lapability that much, because that’s important to them, maybe important to their readers too, but makes little sense to most computer users.

Ask yourself this question: in the last 3~5 years, have you ever use your laptop actually on your laps? If the answer is no, you shouldn’t care about lapability. A laptop is called lap-top doesn’t mean it has to be used on laps. Even though you need to use it on the laps, the Surface Pro 4 is good enough on laps for a short time.

Every time I saw technology writers talking about lapability, I want to tell to shut up. They are talking about their own needs, not most people’s.

With lapability out of way, we can talk about Surface Pro 4 and Surface Book. The main problem with Surface Book is its weight. It weighs 3.4 lbs, while SP4 + Type cover weighs 2.4 lbs. That’s a huge difference. A Surface Pro 4 is very portable: compact and light. The Surface Book is still in heavy category. Some would argue, you are comparing different things. I don’t care. All I care is I need a computer I can put on my desk and do my work, carry it from room to room in my house, or carry from home to work, or anywhere, regardless what category they belong.

One problem with Surface Pro 4 is screen size. 12″ is not enough for day to day work. Surface Book gets 13.5″, better but still not good. For long term productivity use, screen size has to be over 17″, there is no way around. My setup at home is Surface Pro 3 + 21″ monitor. In my opinion, this is a perfect setup, you need a second screen anyway. Once you are used to second screen, you will find out use one screen is unworkable. Surface Book’s 13.5″ screen is good enough for a short time use, but if you use it for hours, I still suggest you get an external monitor. To put things together, Surface Pro 4 is almost even to Surface Book regarding screen sizes.

Last thing, you will find out Surface Book is considerably more expensive.

However, if they make the Surface Book weighs 2.5 lbs, I would buy it over anything, but it is not going to happen in a couple years.

For the time being, Surface Pro 4 is the champion in the world of personal computing, the only thing that is comparable to it is Surface Pro 3.



Beyond Technology: After Many Years of Tweeting, I still Don’t Get It


From time to time, I have something to say, but the contents don’t fit into the theme of the this blog. I mean something related to technology, but not directly technology itself. So, I started this “Beyond Technology” series. Honesty I have more to say outside of technology than inside of it, but I will restrict myself to topics that are relevant. Here it goes.

I have been tweeting for about 4~5 years, not too far behind I assume. Main reason I tweet is I am writing on the blog site, I want to notified interested readers that I have something new to say. Beyond that, I really don’t have a reason to tweet. Honestly speaking, it is an obligation, not a pleasure. I don’t even like the word “tweet, twitter” or whatever. That is not the same cases in bloggers community. Just this morning, I saw the following items from my very respected bloggers:

If anyone cares about Mark Guim’s good night sleep, that’s got be his wife, no one else. Well, that’s a good case, but how hard it rains in Southern California is supposed to be a weatherman from their location station’s duty. The thing is, my friend, everybody is doing this, and all the time. They seem to take pleasure doing that.

I don’t know, but is that true that the more you tweet the more likes you can get, therefore the more popular you can be? Maybe I am right, I really can’t find a second reason. But for all intent, I am not going to do that.