Tag Archives: HoloLens

CODEM: Compile Once Debug on Many Using HoloLens and Visual Studio

Microsoft’s recently announced HoloLens, the world’s first augmented reality headset, to be powered by Windows 10, and some never-before-seen hardware technology, like an HPU (Holographic Processing Unit), offers completely new opportunities for software developers and computing in general. One such opportunity for software developers I have termed CODEM: Compile Once DEbug on Many software debugging and testing using HoloLens and Visual Studio.

Visual Studio is already a solid multi-platform, multi-device, integrated development environment (IDE). But currently when you compile a project you can’t target multiple platforms or devices simultaneously and run them side-by-side to see how things are coming along. With HoloLens, coupled with advanced Visual Studio emulators, this could indeed be the development environment of the future.

Imagine developing a Windows Universal App targeting desktops, tablets, and phones and being able to display their emulators side-by-side during testing. “Well, the phone and desktop look good, but the layout isn’t adjusting properly for 7″ to 8″ devices.” With HoloLens you’d be able to have say three emulators running side-by-side, visualized against a large whiteboard. You could reposition them, resize them, and interact with them as if they were physical devices running a release build. Something’s not quite right? Fix, recompile, retest and make sure all of your targets are working properly.

My ultimate vision is that at compile you’d be able to not only target multiple devices simultaneously, but also multiple platforms. Imagine having a Windows phone, Android, and iOS emulator running together, side-by-side, with different sized screens for each, targeting either specific phone models and/or general screen sizes, and being able to interact with all of them through HoloLens.

Conceptually, CODEM seems to be a simple and obvious idea, but certainly it would take quite a bit of development to make this vision a reality. Nevertheless, history has proven that if a possibility is technologically feasible, it’ll happen. And I’m looking forward to the day CODEM becomes the standard for software development.

Code well, code often!

Job Opportunities for Software Developers

Being a software developer is much more than writing phone and tablet apps. Below is a list of different development areas taken from the Microsoft Careers site and expanded a bit. By no means is the list exhaustive, but it should give you some ideas of the enormous opportunities that exist for developers, whether you want to develop as a hobby or you want to make it a career.

    • Business Software
      Consumer software is what you hear about most in the media, things like operating systems, phone apps, etc., but business software is a far larger market. Things like hosted IT solutions, information systems, supply chain management systems, inventory management systems, customer relationship management systems, financial management systems, etc. If there is a company, it needs software to manage every aspect of its operations.
    • Communications
      Skype and Lync are the two examples given on the Microsoft Careers website. I’m sure you’ve heard of Skype. Lync is a business-focused communications platform, including VoIP and video conferencing, messaging, and meeting management. But these are just two products from Microsoft. There are hundreds, if not thousands, of companies that have other solutions that are built to either compete with or enhance Microsoft’s own technologies. And that means development opportunities for you.
    • Developer Tools
      Developers use tools like Visual Studio and Blend to design and build software. But developers had to design and build the developer tools. Every programming language has developer tools, even if it is just a simple text editor. Software needs software.
    • Educational Software
      eReaders, math applications, art applications, biology applications, the list of possibilities with educational software are endless. And not only are the topics endless, but applications can be built for a variety of audiences (teacher or student) and platforms (PCs, tablets, and phones).
    • Entertainment Products
      Xbox and PC gaming are the two big areas here. Options include game development and other media solutions, like apps for the Xbox (SmartGlass, Netflix, HBO Go, etc.). And of course you could work on the Xbox development team. The Xbox needs software to run.
    • Health Solutions
      This bridges both the business market and the consumer market. Hospitals have major information management needs. That means software. And consumers are becoming more and more connected with their health, that means products like the Microsoft Band, software like Health and HealthVault.
    • HoloLens
      If you haven’t yet heard of HoloLens, you have to check it out. Virtual reality? How about augmented reality! If you want to develop the future, learn to develop for HoloLens.
    • Internet of Things
      With Windows 10, Microsoft is moving full-force into internet of things (IoT) development. This is going to change the technology world and offers you tremendous opportunity as a developer.
    • Kinect
      Kinect isn’t just for gaming. Kinect for Windows is being used in a wide range of applications. Check this out to get inspired.
    • Mobile Software
      Mobile software development is unique in that it brings together a wide range of technologies into a single device. With our phones we can make calls, email, text, instant message, listen to music and watch videos, take pictures, and use GPS to navigate. Windows Phone is Microsoft’s current mobile solution, but this is transitioning to Windows 10 with universal apps. This is my development focus and I think it offers tremendous opportunity.
    • Office
      Office is by far the most widely used office productivity suites in the world. As a developer, not only could you work on the Microsoft Office development team, but you could also work for a company that develops office add-ins to bring additional functionality to Office. Or you could focus on automating workflows by tying information systems to Office. There are lots of possibilities here.
    • Web Development
      From building websites to backend server technologies, there is no shortage of development opportunities in web development.
    • Windows Operating System
      Virtualization, networking, security, file systems, kernel services, storage, and device technologies: These core components come together to deliver the Windows experience, whether it’s on a mobile phone, a PC, or the web; at home, at the office, in a car, or anywhere in between.

Develop the Future, Develop for Windows

I have to start off by saying that I’m a huge Microsoft fan dating back to the days of DOS. Call me a fanboy. I’m ok with that. I’m a big believer in what Microsoft has done over the years, and I’m even more excited with what’s to come with Windows 10. Let me explain. And let me explain why you should be as excited about developing for Microsoft technologies as I am.

Windows 8 was the beginning of the future for personal computing. For years we’ve talked about device convergence, but the hardware and software were not capable of fulfilling the dreams of the day. That is no longer true. Smartphones have converged mobile communication, navigation, entertainment, and some productivity into a single device. With Windows 8 and the first generation Surface Pro we were given proof that convergence is now feasible for fully-fledged personal computing. The power of a desktop in the form of a tablet. And with the Surface Pro 3, convergence has been proven to be capable of being incredibly functional, versatile, and downright gorgeous. Gone are the days of needing a separate device for each computing task. “Toasters and refrigerators” can harmoniously live together.

But Windows 8 was just the first step. Enter Windows 10. Windows 10 is true convergence. Currently, Microsoft has Windows, Windows Server, Windows Phone, and Windows RT. They may have others, I’m no expert. Each are distinct operating systems with a special purpose. There may be underlying shared code, but unified these OSes are not. With Windows 10 that changes completely.

Windows 10 will be a truly unified operating system designed to run on any device, from a server, to a desktop, to a tablet, to a phone, to the Xbox, to toasters and refrigerators. Functionality and the user interface (UI) will automatically adjust to the device. Install it on a desktop, you get desktop capabilities and a desktop UI. Install it on a phone, you get phone capabilities and a phone UI. Install it on a tablet…well, Microsoft has redefined the tablet. A limited functionality tablet operating system is no longer necessary. You get the point. You’ll be able to install it on anything.

So, why should you be excited about all of this? Well, aside from it being super cool, the reason you should be excited is that convergence will completely change how developers develop and open up a new world of possibilities. Imagine writing your apps once and having them run on any device capable of running an app. Imagine being able to reach billions of users with a single app that will run equally well on desktops, tablets, phones, and the Xbox. In just a few years, saying you’re a desktop, tablet, or phone developer will likely raise eyebrows of confusion, because you’ll be able to simply say, “I’m a Windows developer.”

This isn’t to say all of this convergence stuff will be easy. Surely there will still be device experts and flexible UI development will be much more important. But with a single, powerful, cohesive foundation from which to work, being a Windows developer is going to offer opportunities never before possible.

So join me! Let’s learn to develop for Windows and change the world!

Welcome to WinDevs .Net!

WinDevs .Net is a new community for developers of all experience levels that are interested in developing for Microsoft technologies, including Windows, Windows Phone, Xbox, Kinect, HoloLens, IoT, and everything else in the Microsoft stack.

I created WinDevs .Net for a couple of reasons:

  1. I’ve wanted to learn to develop for Windows Phone (and now universal apps) for quite some time, and
  2. I want to meet people with a similar interest in developing for Microsoft technologies so that we can learn from each other, encourage each other, and grow together as developers

You’re probably thinking, well, there are already tons of resources out there for learning all about Microsoft technologies, why WinDevs .Net? The reason is that I’ve not found a program yet that works for me. And I can’t be the only one. There has to be a better way. So, here we go.

I hope you’ll join me on this experimental educational journey. I think it’s going to be a great ride and I look forward to seeing what we can accomplish together.

If you have any questions or suggestions, email me.