SurroundWeb, the evolution of IllumiRoom

Probably you remember IllumiRoom, this Microsoft project that projects images beyond your TV.

As you remember, this is a system though to create an immersive experience for XBOX 360 that requires a Kinect an a Projector.
In the end is an Augmented Reality system that extends your experience to the whole room, just, AMAZING.

IllumiRoom de Microsoft se convierte en SurroundWeb

It’s viability was complex as the cost is high, Kinect, Xbox, big TV, great projector,… the thing is that finally IllumiRoom just brought SurrondWeb, a new project from Microsoft Research that is based on the first one.

SurroundWeb is feed by a set of depth cameras and projectors that generate kind of browser 3D. Let’s take a look to the next demo to have an idea how far we can go with this new project.

IllumiRoom de Microsoft se convierte en SurroundWeb

Still is a project a bit expensive to implement at home but nothing is expensive when you are passionate about technology :)

Enjoy the video and kindly find more information in the next links:

https://www.youtube.com/user/MicrosoftResearch

https://www.youtube.com/user/MicrosoftResearch

SurroundWeb, the evolution of IllumiRoom

Probably you remember IllumiRoom, this Microsoft project that projects images beyond your TV.

As you remember, this is a system though to create an immersive experience for XBOX 360 that requires a Kinect an a Projector.
In the end is an Augmented Reality system that extends your experience to the whole room, just, AMAZING.

IllumiRoom de Microsoft se convierte en SurroundWeb

It’s viability was complex as the cost is high, Kinect, Xbox, big TV, great projector,… the thing is that finally IllumiRoom just brought SurrondWeb, a new project from Microsoft Research that is based on the first one.

SurroundWeb is feed by a set of depth cameras and projectors that generate kind of browser 3D. Let’s take a look to the next demo to have an idea how far we can go with this new project.

IllumiRoom de Microsoft se convierte en SurroundWeb

Still is a project a bit expensive to implement at home but nothing is expensive when you are passionate about technology :)

Enjoy the video and kindly find more information in the next links:

https://www.youtube.com/user/MicrosoftResearch

https://www.youtube.com/user/MicrosoftResearch

de:code ???????????????

先週の金曜日 4/18 に、 de:code 公式サイト がアップデートされ、ブレイクアウトセッションとして予定されている 66 セッションのうち、64 セッションのタイトルと概要およびスピーカー情報が公開になりました。 ★ de:code セッション情報 ★ ぜひ、このページにある <すべてのセッション概要を開く> リンクをクリックして、全てのセッション情報をチェックしてみてください。 もちろん私も 2 セッションを担当していますが、そのあたりはまた別途ご紹介していくことにして、今日は私個人的なおすすめの 2 セッションをご紹介します。 今回の de:code では、過去の Tech・Ed をご存知の方にはおなじみの、ジニアス平井と赤間の 2 人が登場します。 ◆ ジニアス流! SQL Server 2014 アプリ開発の極意 インメモリ OLTP、カラムストア インデックス、Always-On、クラウド インテグレーションなど SQL Server 2014 の新機能を利用したアプリ開発のトピックをデモを交えてご紹介します。また、データ アクセスとして ADO.NET の非同期プログラミングや…(read more)

Small Basic Guru Awards!! (March 2014)

All the awards go to Nonki this month!

Guru Award  Small Basic Technical Guru - March 2014  

Gold Award Winner

 

Nonki Takahashi Small Basic: Centering Text in Graphics Window RZ: “Clearly written explanation with nice graphics to go with it.”
Ed Price: “I love having the three options like this! And the images really bring it to life! The links to the shared programs (with their source code) really help if you want to dig deeper and learn more!”

Silver Award Winner

 

Nonki Takahashi Small Basic Known Issue: 23589 – Controls.GetTextBoxText() Returns CR+LF as Newline from Multi-Line Text Box in Local but CR in Remote RZ: “Bugs are always hard to track down, especially the unknown unknowns. Good job on hunting it down!”
Ed Price: “This acts as a valuable KB article! Great addition to the troubleshooting library!”

Bronze Award Winner

 

Nonki Takahashi Small Basic: Expression RZ: “Good introduction to expressions”
Ed Price: “Short and sweet intro to Expressions. Thanks, Nonki!”

 

Special thanks to Nonki for helping give us a rich library of Small Basic articles!

Maybe I’ll enter one of my own articles for April to give Nonki a run for his money. =^)

Let’s give Nonki a challenge this month!

See this thread: Small Basic Guru needed! Apply within…

 

Thanks again to Nonki and all our community contributors!

   – Ninja Ed

 

 

 

COMMUNICATIONS – April 2014 Readiness Update

Lync Depth Support Engineer exam to be added to competency requirements

In order to help Lync partners meet the growing demand for solution providers who also have support knowledge, Exam 74-338: Lync Depth Support Engineer will be added to the exam requirements for gold status in the Communications competency Systems Integration track, effective May 12, 2014. Gold Systems Integration partners who have not had a qualified individual pass this exam by May 12 will receive an email notification of non-compliance, and will need to meet the new exam requirement by their anniversary date in order to retain their gold status.

Netduino or Arduino? That is the question.

Well I am thinking about how to build circuits fast and with solid connections.  Ardunio annoying in some ways because the programming language: ‘Processing’ is pretty low level, which is good.  But on the other hand, the way to program the Netduio Gadgeteer is by using C# (which is NOT owned by Microsoft by the way,  Java is owned by Oracle). So I have to give the Netduino a 5 for it’s computer language that is based on a higher level language.  Arduino fails here, the “Processing…(read more)

Arduino: Using the Arduino with Azure

Not sure, but if I read the article that Bruno Terkady, who is a friend of mine, wrote about using the Azure service bus to work with an Arduino devices doing various things. Now Bruno, who works much harder at things then I do, beat me to the punch.  I had heard that he had written an article on Arduino, and I was getting a move on Embedded Devices but missed his article (sorry Bruno). If you didn’t find the article in your Bing search (get those rewards!) then use this: http://msdn.microsoft…(read more)

Autofac and Azure Mobile Services .NET Backend

When creating an Azure Mobile Service .NET backend we automatically set up Autofac to deal with all things dependency injection. If you are not familiar with Autofac then they have a great wiki with lots of information. If you are not familiar with dependency injection in general then there are several books on the topic including Dependency Injection in .NET by Mark Seemann which I highly recommend.

In essence, dependency injection is about letting a dependency engine manage dependencies instead of having each type manage its own dependencies. To take a trivial example, instead of doing this:

   1: class MyClass1

   2: {

   3:     private readonly DependencyA dependencyA = new DependencyA();

   4:  

   5:     public void DoSomething()

   6:     {

   7:         // Use dependencyA

   8:     }

   9: }

where MyClass1 manages dependencyA manually, with dependency injection you can do this:

   1: public class MyClass2

   2: {

   3:     private readonly DependencyA dependencyA;

   4:  

   5:     public MyClass2(DependencyA dependencyA)

   6:     {

   7:         this.dependencyA = dependencyA;

   8:     }

   9:  

  10:     public void DoSomething()

  11:     {

  12:         // Use dependencyA

  13:     }

  14: }

Where the power of a dependency engine comes in is that it manages all these dependencies making sure they are instantiated correctly and garbage collected when they go out of scope. That is, instead of new’ing up an instance of MyClass2 manually, you register it with the dependency engine which then ensures that it is created with all its dependencies initialized.

The Azure Mobile .NET backend sets up and initializes Autofac to handle all its (and your!) dependencies allowing you to not only add your own dependencies but also to impact the dependencies that the .NET backend uses.

Existing Dependencies

Here are some of the dependencies that are automatically registered or used by the .NET backend. Actually most of the .NET backend uses dependency injection but some of the other dependencies are more esoteric affecting how the .NET backend operates (we will come back to more of these in future blogs).

You may ask whether it is possible to change the dependency engine to something other than Autofac. The answer is that it is technically possible but definitely in the open brain surgery category so not something I would recommend.

API Controllers

By default the .NET backend automatically enumerates all ApiControllers and registers them with Autofac. In addition, the controllers are registered to allow both constructor injection and property injection for those of you who prefer property injection (some consider constructor injection the preferred mechanism but it is really up to you).

The .NET backend provides ApiServices as a dependency you can use anywhere. ApiServices provides access to Azure Notification Hubs, logging, and more. For example, you can get it injected like this:

   1: public class CustomController : ApiController

   2: {

   3:     private ApiServices services;

   4:  

   5:     public CustomController(ApiServices services)

   6:     {

   7:         this.services = services;

   8:     }

   9:  

  10:     public string Get(string input)

  11:     {

  12:         services.Log.Info("Hello from custom controller!");

  13:         return "Hello";

  14:     }

  15: }

Scheduled Jobs

Scheduled jobs are similarly registered with Autofac and also supports both constructor and property injection. This means that you can also get injection of ApiServices and other dependencies for your scheduled job but as the ScheduledJob class is a base class (the actual dependency is on IScheduledJob), we already provide the ApiServices dependency for you:

   1: public class SampleJob : ScheduledJob

   2: {

   3:     public override Task ExecuteAsync()

   4:     {

   5:         Services.Log.Info("Hello from scheduled job!");

   6:         return Task.FromResult(true);

   7:     }

   8: }

Note: In order to activate the scheduled job to get fired on a given schedule you need to register it through the Azure portal.

Notification Handlers

An extensibility point which we discussed in the blog Push Notifications Using Notification Hub and .NET Backend is INotificationHandler which can be used to extend or modify the push notification registration process for Azure Notification Hubs. All INotificationHandler implementations are similarly registered with Autofac and you can leverage dependency injection there as well.

Extending the OWIN Pipeline

One of the things you may find surprising is that the OWIN application pipeline builder is registered with the dependency injection engine allowing you to modify and extend it. There actually are two dependencies that we look for: The first is the IOwinAppBuilder which is responsible for setting up the entire OWIN pipeline including authentication, ASP.NET Web API, and more. That is a very big hammer and so I would recommend looking at the IOwinAppBuilderExtension instead which allows you to simply add to the existing pipeline. In a future blog I will describe how we are using this extensibility point to hook in an exciting new feature to the .NET backend.

Registering Your Own Dependencies

In addition to leveraging the built-in dependencies, you can also register your own which you then can leverage wherever you want to use dependency injection. Simon Pedersen shows this very nicely in his blog Dependency Injection with Azure Mobile Services .NET Backend so I will just summarize here. To register your own dependencies, use the ConfigBuilder class to pass in a Func which is then called when the dependency engine is set up:

   1: public static void Register()

   2: {

   3:     ConfigOptions options = new ConfigOptions();

   4:     ConfigBuilder builder = new ConfigBuilder(options, (httpConfig, autofac) =>

   5:     {

   6:         autofac.RegisterInstance(new MyService()).As<IMyService>();

   7:     });

   8:     HttpConfiguration config = ServiceConfig.Initialize(builder);

   9: }

You can now use your dependency in any of the places above (and more) including your controllers, scheduled jobs, etc.

Have fun!

Henrik