My friend Dennis Vroegop and I have recorded a course for LinkedIn Learning (Lynda.com) called Developing Apps for the Microsoft HoloLens. We wanted this to be the get up and go course covering the HoloLens that takes you from zero to 60, while also providing a larger understanding of the device itself, it’s place in history, and what the current market for the HoloLens is.
As we say in the course, this is what we wished we had had when we were starting off with HoloLens a year ago. All in all, I think we succeeded beyond our wildest dreams. LinkedIn Learning is offering a free initial month to their video courses, so you can watch the whole thing and start programming on the emulator, if you want, with free software from Microsoft and Unity. All it takes is a will. This is the way.
Our producer on the shoot, Dennis Meyer, has written his insights on the whole process and what he now things about AR and VR after going through this adventure with me and Dennis V.
I hope you enjoy the course. Please let me know what you think in the comments.
Sky Zhou is a HoloLens developer who has spent the past year exploring some of the most difficult MR development problems such as storing and retrieving spatial maps and the ins-and-outs of the locatable camera coordinate system. He recently tested out his Room Scanner with help from members of the HoloDevelopers slack group. You can signup to try the public beta now.
If his name sounds familiar, you may be remembering his earlier work on a Pokemon fighting app for the HoloLens.
What movie has left the most lasting impression on you? I have two, The Matrix and Inception; both pose philosophical questions about the nature of existence and reality.
In addition, I like The Matrix for its vision of the future, in terms of the possibility of simulating a world with computer programs and its depiction of the power and danger of AI. I like Inception for its crafty metaphoric story about story telling itself as an art form. HoloLens brought us a giant step closer to the visions of simulated 3D world and alternate realities like dreams. Mixed reality will be a great art form for storytelling.
What is the earliest video game you remember playing? I didn’t have much play time on video games when I was little. I can remember glympses of super mario, street fighters, and ninja turtles. However, I remember very well the first computer game I played. It was an RPG based on the Romance of Three Kingdoms. I enjoyed the game and the story so much. I wish I can build something like that in mixed reality with HoloLens.
Who is the person who has most influenced the way you think? Laozi, an ancient Chinese philosopher from 600 BC. It’s hard to explain all his deep thinking here and my interpretation might be flawed. However, if I have to narrow down the idea: things are observed and defined by us, and they can be observed and defined in many other ways. Therefore, nothing has to be absolute and we need not attach ourselves to extremes defined by us. Once you see that, you can always reach a balance, a compromise, or a feasible solution. It really helps me keep an open mind to this world. The concept of mixed reality could help us understand this fine point. Many different observations and representations can be made in the same physical space, depending on what apps you are running and seeing through the HoloLens, so we can all agree that we don’t always get the same perspective and the same information, and therefore we end up forming different conclusions and decisions.
When was the last time you changed your mind about something? In general, I change my mind based on additional information and evidence. For example, I used to think Microsoft was a lazy non-innovative company that puts no effort into making another great product and is just milking profit from its Windows and Office software. However, the first public demo of HoloLens in January 2015 blew my mind and completely changed how I see Microsoft.
What’s a programming skill people assume you have but that you are terrible at? People assume I have some fixed programming skills in some languages, but what I really have is the ability to solve problems, by doing research and experimenting. In this regard, I owe many thanks to the awesome developer community around HoloLens and windows mixed reality.
What inspires you to learn? 1. Problems! I love to apply knowledge to solve problems. It pushes me to learn new things and often lead to even more new knowledge. For example, the frame rate was poor on my first demo of photo-textured room scanning on HoloLens. In order to improve performance on this app, I learned how to use compute shaders.
2. Community. With a great community around HoloLens, you feel you are not alone in this crazy endeavor, and there are people who value what you do. Other developers’ awesome demos also inspire me to do more myself. The feedback I get is the most valuable for alerting me to problems and pushing me to make my apps better. For example, when I saw 3 comments about poor frame rate on my Youtube channel, I knew I had to figure out a way to address it.
What do you need to believe in order to get through the day? There is another problem to solve and a new thing to learn! Plus my HoloLens is still working!
What’s a view that you hold but can’t defend? I hold a view that Microsoft got it right this time, with their innovative approach to mixed reality. I can see consumer and business adoption at a massive scale because this technology truly brings amazing utility never seen before, once certain limitations are worked out (such as price, field of view, weight, full gesture recognition, etc.). Windows Mixed Reality is like an extension of Windows with all the familiarities from the existing flat desktop, but in 3D space. This familiarity in non-gaming uses of PCs makes it much more attractive to consumers and businesses.
What will the future killer Mixed Reality app do? It depends on what pain it kills. Different people experience different pains. For example, a common pain is a long commute time. One possible solution is that company offices can be significantly reduced in size and most people work from home or anywhere they choose. Many large companies are currently heading in this direction already. Besides using mixed reality tools for creative 3D art work, an immersive virtual home office could improve focus, and shared experiences with the holo-presence of colleagues could improve teamwork and collaborations. Thus, the effectiveness and efficiency of working from home can be improved.
The ultimate dream of mixed reality is that you have 3D digital information and holograms overlay on top of a real physical environment no matter where you go and users can interact with them in shared experiences. Think of Pokémon Go plus Google street view, but with useful and relevant information wherever and whenever you need them. This requires much finer mapping—finer than Google street view currently provides—to your desk, your fridge, your car, and even yourself. This idea is not original to me: Ori Inbar wrote a great article recently about it and termed it “the AR Cloud.” When that happens, in essence we will have also created a massive interactive virtual world like the Matrix.
Stephen is an immersive experiences developer at Valorem. He is also a moderator and the most prolific contributor to the HoloToolkit (now the Mixed Reality Toolkit). If there has been a change to the toolkit over the past year that improved your developer experience, Stephen probably made it. Moreover, he does this in his free time.
I spent an evening online with him about two weeks ago fixing an issue with automatic builds for Visual Studio 2017 and spent much of that time wondering how one person could maintain so much knowledge about such a large and complex code base. He is the centurion at the gate, finding satisfaction when our Mixed Reality projects go well and happy when he can provide tools to make our development easier. The next time you successfully deliver a project, please consider sending Stephen a thank you.
What movie has left the most lasting impression on you? Arrival was pretty interesting. I really find time travel and their paradoxes quite fascinating. The looping nature of the alien language and the connection to the movies main theme really helped drive the action. I also loved how the movie started at both the beginning and end. I enjoy many movies that range across different genres, from sci-fi to action.
What is the earliest video game you remember playing? Chrono Cross by Square Enix is definitely the one I remember most vividly, but I’m pretty sure the first video game I ever played was the original Mario game on the Nintendo.
Who is the person who has most influenced the way you think? This one is pretty difficult to answer. I’m not sure if any one person had a huge impact on why I think the way I do. I’ve always been off in my own thoughts thinking about how light, electromagnetism, and matter work together—oh and also the paradoxes of time travel, haha.
When was the last time you changed your mind about something? I feel like I change my mind a lot. Generally, I like to approach things from many different angles and evaluate them to see whichever option is the best, and even then I’m likely to make an adjustment down the line. When it matters, I try to corner myself into making a decision that I can’t back out of.
What’s a programming skill people assume you have but that you are terrible at? Professionally I like to stay pretty honest about my abilities and accept work that fits my skill level while still challenging me to grow. I definitely feel like I need to get stronger in networking and understanding the lower level languages a bit more, although the need for memory management is no longer a requirement, it’s nice to know exactly why a function or class works the way it does.
What inspires you to learn? Leaning is a part of life, and is essential to survival. On that note, I’ve always liked the notion that the only way to learn is to make mistakes. I’ve always found it frustrating when people can’t admit they’re wrong about something, because they are admitting they don’t make mistakes, which in turn leads me to believe that they’re incapable of learning new ideas.
What do you need to believe in order to get through the day? Tomorrow never comes. I usually don’t think about the end of the day until it arrives, and by then I’m already planning tomorrow.
What’s a view that you hold but can’t defend? Not sure how to answer this one. I usually don’t hold a view that can’t stand on its own.
What will the future killer Mixed Reality app do? The whole idea of mixed reality apps is to bring the virtual into the real world. There’s been a big push recently about how the internet will dramatically change after the association with a physical space and it’s virtual space—like a webpage or other virtual element—can be brought together to create a meaningful productive space.
What book have you recommended the most? I haven’t read an actual book in quite a while, but growing up I was definitely a bookworm. Now I read code all day. If I had to recommend reading, it’s the new APIs and change logs from Unity, Windows 10 SDK, and the Mixed Reality Toolkit for Unity.
Nate is a multimedia engineer currently freelancing in New York City. He is also a good friend going back to our time together at Razorfish Emerging Experiences where we worked side-by-side pushing the envelope on interactive installation projects with Surface tables, IoT, Kinect, tablets, phones, VR, and several devices we hacked together ourselves.
Over a year ago, while most people playing with HoloLens were still finding their way around the Unity IDE, Nate was exploring how to build artistic effects for the HoloLens using DirectX and seeing how hard he could push the HoloLens GPU. Since then, he’s been working on various HoloLens and HTC Vive projects to earn his bread while pursuing his ultimate goal of creating cool interactive experiences involving music, lighting, technology, dance and people. He’s someone I’ve always admired as much for the clarity of his artistic vision as for his technical prowess.
What movie has left the most lasting impression on you? I’ve never been able to sit still long enough to gain a real appreciation for movies. I only watch movies on airplanes these days. Fight Club had a pretty big impact on me, though. I first saw it at a very impressionable age and there always seems to be relevant scenes popping into my head.
What is the earliest video game you remember playing? It’s hard for me to place… I grew up with an engineer for a Dad and surrounded by techy folks. I remember playing tennis on VirtualBoy. We had some early atari system as well. I also had a Macintosh SE as my first computer (older than me) that I used to play this weird 2.5D pong game called Shufflepuck Café.
Who is the person who has most influenced the way you think? I’m influenced by many people in my life. I believe you should try to glean something from everyone you admire and respect. I’ve had many great mentors along the way (including James).
My parents, of course, taught me a ton about how to live and reach my goals. My Dad taught me everything I know about computers. When I was young we’d go on long drives together and he’d be telling me about how CPU caches work. It was wild. My Mom has been an artist for many years and she’s always encouraged me to keep my artistic side alive.
For one I’ve never met, I’d pick Aldous Huxley. I discovered his writing at a time when I needed some direction in my life pretty badly. He has a way of capturing the intangible nature of the human experience with words better than any other writer I know, and it’s helped shape the way I consider my place in the world more than anyone else.
When was the last time you changed your mind about something? I’m a Gemini, I do it constantly. Recently I changed my opinion of mobile AR. I thought it didn’t have much of a future. Gotta give it up to Apple and all the cool things people are making with ARKit. Pretty excited now.
What’s a skill people assume you have but that you are terrible at? I’m not very good at math, and I don’t really enjoy it. I failed Calculus II. Almost twice. I like making stuff with math though. Right now I’m working with chaotic systems to create natural movement and that is fun, but the analytical stuff isn’t for me.
What inspires you to learn? I think it’s really essential to what it means to be human. Plus I get bored easily. I always need to feel like I’m pushing some edge in one aspect or another. I feel very blessed that I’ve essentially made a career out of learning new things.
What do you need to believe in order to get through the day? This too shall pass.
What’s a view that you hold but can’t defend? Brunch culture was systemically created as a means of controlling the populace.
What will the future killer Mixed Reality app do? It will make talking about reality in terms of virtual, mixed. Our language will gradually phase out making any distinction between real and virtual. It’s funny how much time people spend debating what is AR/MR/VR. We need to move beyond that kind of thinking.
What book have you recommended the most? I recommend different books to different people. I don’t think I have a one size fits all answer, so I’m going for the audience here.
I’ve gotta say Neuromancer. It’s a must read for anyone in this field. Gibson literally wrote the book on our present and future in regards to the internet, mixed reality, and artificial intelligence. Oh, and he did it on a typewriter in the 80s.
[Update 9/8/17: I’m currently having success in HoloLens development with Visual Studio 2017 (15.3.3), Unity 2017.1.0p5 (x64), SDK 14393, and HTK v1.2017.1.1 . This allows me to deploy Release builds, Unity C# Projects, and lets me debug remotely (my breakpoints are getting hit) from the regular File | Build Settings window. From the HoloToolkit Build and Deploy window, checking Unity C# Project throws an error. (To work around this, I am using two different deployment folders, one for debugging and one for non-debugging deployments.) I don’t think it matters, but I’m on Windows 10 insider build 16281. Will update if anything changes.]
[Update 9/7/17: Unity 2017.2.0b10 is definitely no go for HoloLens development. It just tries to run from the tile window and then goes black screen. Probably necessary for Immersive MR development, though.]
Sometimes it’s hard to know when to move forward and when to go backwards. If you are developing with Microsoft Mixed Reality products today (by which I mean on or around September 5th, 2017) you may need to do both.
Because common tools consisting of Visual Studio, Unity 3D and the open source Mixed Reality Toolkit (formerly the HoloToolkit) are used for both, and because we are at a point where multiple tools are being released at a rapid rate, conflicts are bound to happen, unfortunately.
For HoloLens development, it is best to roll back to the last working version of the tools you had. If you aren’t sure what those were, then I’d recommend using Visual Studio 2015 update 3, Unity 3D 5.6.3 patch 2 and HoloToolkit 220.127.116.11.
For immersive mixed reality, you want the latest of everything. As of today, that means Unity 2017.2.0b10 (and then b11 when that comes out). You will need Visual Studio 2017 update 3 (15.3) and finally you will need to be on the latest Windows Insider Build of Windows 10 from the fast ring (for instance build 16281, which has some very nice updates to the MR Portal).
These are the versions I could get working consistently. Other combinations, for HoloLens development, could potentially raise the following issues (though your mileage may vary – if so, please let me know in the comments):
unable to create Master builds, dev or release okay
apps deploy successfully but crash before the splash screen
unable to use remote debugging on your deployed app – get a dll missing error or “Please ensure that target device has developer mode enabled” error
IL weaving issues (this occurs for Visual Studio update 3 (15.3.3) and is fixed in patch 2017.1.0p5 as well as 18.104.22.168p2 (if you are using Visual Studio 2015 update 3)
Unable to create Unity C# Project builds (for debugging)
MR development with the wrong tool combination has raised some of these issues, such as the C# Project builds and IL weaving. In addition, there may be clipping issues if you don’t have the latest tools.
Note: You don’t really need Visual Studio 2017 for HoloLens development. Use VS 2015, instead. You only require VS 2017 if you are developing for Windows SDK 10.0.15063 or above. The HoloLens device, however, still runs on windows build 14393. When you export your solution from Unity, just be sure to change the UWP SDK property in Build Settings from its default value “Latest installed” to “10.0.14393.0”.
Note 2: You cannot currently publish your immersive MR app to the Windows Store. Just hold tight for now. It’s being worked out.
Quick recap: for now, you need different tool versions for HoloLens and Immersive MR Headset development. Use older tools for HoloLens but the latest and greatest for MR Headsets.
I will try to keep this updated as facts on the ground change.