WEBVTT
00:00:07.940 --> 00:00:10.290
Hi. Welcome to Visual Studio Toolbox.
I'm your host, Robert Green.
00:00:10.390 --> 00:00:15.000
And joining me today are Olivier
Bloch and Salvador Ramirez.
00:00:15.390 --> 00:00:18.870
Olivier is with Open Tech and Salvador
is with the .NET Micro
00:00:18.920 --> 00:00:24.620
Framework team. And you're here to
talk about the .NET Framework SDK.
00:00:24.670 --> 00:00:30.500
We just released the 4.3 beta just last
week. People can download that.
00:00:31.660 --> 00:00:36.610
And what's new in it, what's exciting
about this new version?
00:00:37.080 --> 00:00:40.720
>> So I think the one main thing
that is new in that release is
00:00:40.770 --> 00:00:45.370
the Visual Studio 2013 support. The
main request from the developers
00:00:45.420 --> 00:00:49.130
using .NET Framework today. They
have this great new development
00:00:49.180 --> 00:00:53.020
tool and they've been working with
that for a few months now.
00:00:53.070 --> 00:00:57.270
Still no Micro Frameworks. I think
the first response from Salvador's
00:00:57.320 --> 00:01:01.610
team is ready to respond to that
ask about 2013, can definitely
00:01:01.660 --> 00:01:08.120
share more details of that what it
means as far as future releases,
00:01:08.170 --> 00:01:10.810
what you've done for
the 2013 support.
00:01:10.860 --> 00:01:14.510
>> Correct. What we've done in addition
to supporting 2013 or
00:01:14.560 --> 00:01:20.380
Visual Studio 2013 is also kind of decouple
or change the install experience.
00:01:20.430 --> 00:01:25.470
So that in the future it be more,
it will be easier to support
00:01:25.520 --> 00:01:29.270
future visions of Visual Studio.
And in addition, for
00:01:30.830 --> 00:01:36.170
current Visual Studio 2012 and 2013,
what we have is simultaneous
00:01:36.220 --> 00:01:39.400
support of Visual Studio
2012 and 2013.
00:01:39.580 --> 00:01:43.470
>> Kind of a decoupling. If I'm
on 2012, not going to 2013, I
00:01:43.520 --> 00:01:49.360
can use the 4.3 SDK. And if I'm
2013, now I can use the 2013
00:01:49.410 --> 00:01:50.300
with Micro Framework.
00:01:50.350 --> 00:01:51.100
>> Correct.
00:01:51.600 --> 00:01:56.440
>> Which presumably makes it easier to
support DEV 14 and future releases.
00:01:56.950 --> 00:02:00.660
>> Yes. And actually the team has already
started working on support
00:02:00.710 --> 00:02:02.640
for Visual Studio 14.
00:02:03.950 --> 00:02:08.230
Even the SDK beta update that we
released has partial support
00:02:08.280 --> 00:02:11.680
for it. So if somebody is an early
adopter, wants to try out
00:02:12.590 --> 00:02:17.690
.NET Micro Framework with Visual Studio
14 for the release, preview
00:02:17.740 --> 00:02:21.830
bits released by the team,
they can try those today.
00:02:22.910 --> 00:02:25.780
>> So before we dive into the cool
demos, which is of course what
00:02:25.830 --> 00:02:30.430
everyone wants to see here, give
us a quick overview of the .NET
00:02:30.480 --> 00:02:33.610
Micro Framework, what is it, what
can you do with it, just at
00:02:33.660 --> 00:02:36.160
a high level for people that
aren't as familiar.
00:02:36.210 --> 00:02:40.190
>> So Micro Framework is one of the
many projects within Microsoft
00:02:40.240 --> 00:02:43.880
that are looking into the scenarios
at all levels. We have plenty
00:02:43.930 --> 00:02:48.190
of teams looking at things coming
from down small, tiny devices
00:02:48.240 --> 00:02:51.270
all the way up to the cloud. Micro
Framework really addresses
00:02:51.320 --> 00:02:56.130
the micro controller-based hardware,
really tiny type of hardware
00:02:56.180 --> 00:02:59.940
and Salvador can share about what specifications
we're looking into.
00:03:00.490 --> 00:03:04.880
But things you can't run Windows
on, for example. And we have
00:03:04.930 --> 00:03:07.200
some examples of that
hardware here.
00:03:07.250 --> 00:03:11.140
>> So to expand on that, the .NET
Micro Framework is targeting
00:03:11.190 --> 00:03:14.600
devices that are based on micro controllers.
00:03:15.310 --> 00:03:19.410
So we're talking about chips that
have resources as far as like
00:03:19.460 --> 00:03:24.340
RAM in storage in the hundreds of
kilobytes as compared to other
00:03:24.390 --> 00:03:28.350
devices or other products that other
groups are working on that
00:03:28.400 --> 00:03:31.790
require, that target different
types of processors.
00:03:32.840 --> 00:03:36.200
So the .NET Micro Framework is
targeting the micro controller
00:03:36.680 --> 00:03:37.850
type of device.
00:03:37.900 --> 00:03:41.900
>> Still being that kind of hardware
you can, thanks to the SDK
00:03:41.950 --> 00:03:47.290
within Visual Studio, use C# code. Very
simple to address the hardware.
00:03:47.340 --> 00:03:50.770
So you'll see in a demo one line
of code to connect to one of
00:03:50.820 --> 00:03:55.610
the input/outputs of that tiny board
to turn the light on and off.
00:03:55.660 --> 00:03:59.880
It's not like determining like you
have which GPIO, how to set
00:03:59.930 --> 00:04:02.290
up the hardware and so on, like
micro takes care of that.
00:04:02.340 --> 00:04:06.210
And write in C# because you're
able to access the hardware.
00:04:06.260 --> 00:04:09.110
Like .NET runing on silicone, basically.
00:04:10.520 --> 00:04:12.120
>> Let's see some cool demos.
00:04:12.890 --> 00:04:14.150
>> Let's bring that up.
00:04:14.900 --> 00:04:21.770
Let me bring up Visual Studio.
So what we have here...
00:04:22.330 --> 00:04:23.190
and let me...
00:04:24.660 --> 00:04:26.140
I had already started this.
00:04:27.550 --> 00:04:29.630
But let's start from the very beginning.
00:04:30.360 --> 00:04:35.120
We show folks the experience, the
developer experience. So .NET
00:04:35.170 --> 00:04:38.940
Micro Framework enables the developer
to kind of work on these
00:04:38.990 --> 00:04:44.440
micro controller-based devices using
Visual Studio, C# .NET skills
00:04:44.490 --> 00:04:48.900
and technologies. So just to quickly
show what that experience
00:04:48.950 --> 00:04:50.790
looks like,
00:04:52.150 --> 00:04:56.110
as a developer, right, you would
go out and actually buy some
00:04:56.160 --> 00:05:00.570
of the hardware. A device that actually
runs .NET Micro Framework.
00:05:00.620 --> 00:05:04.020
What I'm holding here is a Netduino
board which is made by one
00:05:04.070 --> 00:05:08.630
of our partners, Secret Labs. We
have other partners, this is
00:05:08.680 --> 00:05:10.980
a board by GHI Electronics.
00:05:11.510 --> 00:05:15.590
They also provide or sell multiple boards
that run .NET Micro Framework.
00:05:16.810 --> 00:05:20.620
Some of these are Arduino kind
of form factor compatible.
00:05:20.670 --> 00:05:24.590
You can actually plug Arduino shields
into these type of devices.
00:05:24.640 --> 00:05:28.850
And also this is GHI. They also
have... they actually have a
00:05:28.900 --> 00:05:34.850
board they use as a community project
that started out from Microsoft
00:05:34.900 --> 00:05:38.420
Research, the gadgeteer project.
And that's actually a layer
00:05:38.470 --> 00:05:42.110
that runs on top of the .NET Micro
Framework, enables kind of
00:05:42.160 --> 00:05:47.760
plug and play functionality or capabilities
for somebody that's
00:05:47.810 --> 00:05:51.630
interested in kind of rapid prototyping.
So once you pick your
00:05:51.680 --> 00:05:56.390
hardware, which is readily available
and kind of typical maker
00:05:56.440 --> 00:06:01.420
type of sales channels, once you
have the hardware, you go on
00:06:01.470 --> 00:06:07.190
to Visual Studio, install our SDK,
which you can get from a link
00:06:07.240 --> 00:06:11.850
to it from our website at NMF.com,
launch Visual Studio, and
00:06:11.900 --> 00:06:14.930
actually you're able to create
a project. So this is what I'm
00:06:14.980 --> 00:06:20.200
going to do here. Launch Visual
Studio. Create a project.
00:06:20.250 --> 00:06:23.590
In this case I'm actually going to
kind of just show a very basic
00:06:23.640 --> 00:06:29.140
kind of Hello World or blinky LED
demo. I'll create a project
00:06:29.190 --> 00:06:31.200
for a Netduino I have here.
00:06:32.300 --> 00:06:35.880
>> Two things installed here
.NET Framework SDK
00:06:37.140 --> 00:06:40.740
which gives you the basics. You
have a single layer, you can
00:06:40.790 --> 00:06:42.490
run that on to your machine.
00:06:42.840 --> 00:06:43.700
>> Simulator.
00:06:43.750 --> 00:06:47.120
>> Integrated experience for the
development. So that's what
00:06:47.170 --> 00:06:50.610
the Microsoft framework SDK gives
you. But eventually the hardware
00:06:50.660 --> 00:06:53.890
manufacturers, the partners we're
working with that deliver their
00:06:53.940 --> 00:06:59.090
own SDK that brings some like specific
APIs, the way hardware
00:06:59.140 --> 00:07:02.940
is done like you hook up specific
input/outputs, so on, specific
00:07:02.990 --> 00:07:07.050
places so you have to have a level
of initialization of the hardware.
00:07:07.100 --> 00:07:11.250
So the hardware makers, the providers
of additional SDK. So here
00:07:11.300 --> 00:07:15.230
we have also the Arduino SDK
2013 that's installed.
00:07:15.790 --> 00:07:19.860
>> Like you said, we installed the
Micro Framework SDK and on
00:07:19.910 --> 00:07:23.600
top of that you install the specific
kind of drivers for your
00:07:23.650 --> 00:07:27.620
particular board. Okay. So I've gone
in and created a new project
00:07:27.670 --> 00:07:32.440
for this Netduino board. And then
kind of using the Intellisense
00:07:32.490 --> 00:07:39.320
and the various features of Visual
Studio I can quickly create
00:07:39.370 --> 00:07:45.150
or program this board
to blink in LED.
00:07:45.200 --> 00:07:49.090
>> Actually you notice up there,
they're using statements and
00:07:49.140 --> 00:07:52.310
actually you have the .NET Framework
up there where you have
00:07:52.360 --> 00:07:56.720
spots and spot hardware, the specific
libraries for the Micro Framework.
00:07:56.770 --> 00:08:00.660
And then you have secret labs, which
actually the company building
00:08:00.710 --> 00:08:02.260
the Netduino. So these are the
00:08:03.920 --> 00:08:08.000
namespaces you need to access the
API specific to this hardware.
00:08:08.050 --> 00:08:10.710
But the ones you see on top, if
you're a .NET developer, you're
00:08:10.760 --> 00:08:13.950
familiar with them. So you can
use these ones like threading,
00:08:14.000 --> 00:08:17.430
for example, we're using that to
do some timer in the code.
00:08:17.480 --> 00:08:21.020
So typically .NET, pure
.NET C# development.
00:08:21.070 --> 00:08:25.310
>> Of course because you're specifically
targeting the Micro Framework,
00:08:25.360 --> 00:08:29.230
the compiler knows what parts of
the framework are in there,
00:08:29.280 --> 00:08:32.600
like any other sandbox type environment,
whether it's Windows
00:08:32.650 --> 00:08:36.730
8 or Silverlight, we're all used
to having some subset of the
00:08:36.780 --> 00:08:38.950
full .NET running.
00:08:39.000 --> 00:08:39.750
>> Correct.
00:08:40.710 --> 00:08:44.820
>> So here, for the sake of time,
kind of quickly copied some
00:08:44.870 --> 00:08:50.720
material I had. But just to show the
integration with Visual Studio.
00:08:51.700 --> 00:08:52.950
I can
00:08:54.760 --> 00:09:00.890
create or define a port here to
turn on the LED. It's hooked
00:09:00.940 --> 00:09:05.610
up to the LED. I can actually turn
on or control the LED from here.
00:09:06.310 --> 00:09:11.270
So I'll put port.
00:09:12.770 --> 00:09:16.420
And, of course, you notice I kind
of... I'm commenting the code
00:09:16.470 --> 00:09:17.610
above just for the
00:09:18.860 --> 00:09:19.340
demo here.
00:09:19.390 --> 00:09:23.350
>> You're cheating. That's all right,
you're writing live, that's good.
00:09:23.980 --> 00:09:27.290
>> So I can quickly have... what
I've done there's the code.
00:09:27.340 --> 00:09:31.250
We've connected the board, this
Netduino board through USB to
00:09:33.110 --> 00:09:34.160
my laptop here.
00:09:34.210 --> 00:09:36.750
>> Create an object which is
an output port, right.
00:09:36.800 --> 00:09:37.490
>> Yes.
00:09:37.540 --> 00:09:42.580
>> Using to initialize that some
of the contents as far as the
00:09:42.630 --> 00:09:43.440
namespace from Secret Labs.
00:09:43.490 --> 00:09:49.660
>> Right. And we have a wild loop
that's going to turn the LED on.
00:09:49.710 --> 00:09:53.110
>> Write is how you send a
command to that port?
00:09:53.160 --> 00:09:54.090
>> Correct.
00:09:54.140 --> 00:09:54.490
Yep.
00:09:55.160 --> 00:09:59.760
>> Because this is the LED, there
will be true/false, presumably
00:09:59.810 --> 00:10:04.420
also could be intensities, colors, whatever
else, hardware manufacturer
00:10:04.470 --> 00:10:05.850
puts into their SDK.
00:10:05.900 --> 00:10:09.520
>> Correct. Even the .NET Micro
Framework, the libraries that
00:10:09.570 --> 00:10:14.270
come with it, allow you to actually
control general purpose IO pins.
00:10:14.910 --> 00:10:19.460
There's laboratories for the typical
serial buses you need to
00:10:19.510 --> 00:10:22.010
interface with the sensors.
00:10:22.540 --> 00:10:27.790
We're talking about I squared C,
Spy Bus, the serial port UART.
00:10:28.360 --> 00:10:32.070
So these libraries already come
with as part of the .NET Micro
00:10:32.120 --> 00:10:36.500
Framework itself. It's very easy
for somebody to interact with
00:10:36.550 --> 00:10:43.660
these type of sensors from the
.NET C# experience or code.
00:10:43.710 --> 00:10:46.710
>> Can you interact also with the
hardware interruption to work
00:10:46.760 --> 00:10:50.590
on event based mode as far as pulling
and pushing information?
00:10:51.050 --> 00:10:51.510
>> You can.
00:10:52.280 --> 00:10:56.540
Definitely if you're a .NET or C#
developer you're in familiar
00:10:56.590 --> 00:11:01.900
territory when you use .NET Micro
Framework. So really quick.
00:11:01.950 --> 00:11:03.870
Running the code. We can
00:11:05.370 --> 00:11:06.860
show the board.
00:11:07.490 --> 00:11:09.260
It's downloading the
00:11:10.920 --> 00:11:11.930
code to the board.
00:11:12.810 --> 00:11:16.000
And then pretty soon we should see
the board rebooting. We should
00:11:16.050 --> 00:11:18.760
see the LED light blinking
00:11:20.700 --> 00:11:23.880
see that here. It's almost there.
00:11:24.670 --> 00:11:28.880
>> So the only connection between
your machine and the board is
00:11:28.930 --> 00:11:34.220
USB here. USB delivers power plus
all the computing with Visual
00:11:34.270 --> 00:11:38.320
Studio to deploy, reflash the
software on the board and...
00:11:38.370 --> 00:11:41.490
>> Hold that up for the camera so
folks can see. Matt, are you
00:11:41.540 --> 00:11:42.280
getting that?
00:11:43.070 --> 00:11:44.220
All right.
00:11:45.080 --> 00:11:48.650
>> The nice thing also about the kind
of Visual Studio integration
00:11:48.700 --> 00:11:52.660
is kind of the debugging experience.
This is a very simple program,
00:11:52.710 --> 00:11:56.740
but if you have something more complicated
and you're actually
00:11:56.790 --> 00:12:01.280
debugging, needing to insert
break points, the .NET
00:12:03.450 --> 00:12:06.510
Framework, along with Visual Studio,
allows you to do that.
00:12:06.560 --> 00:12:08.520
So here I've just inserted
a break point.
00:12:09.090 --> 00:12:12.520
You can see the LED is no longer
blinking, it's just waiting.
00:12:12.570 --> 00:12:19.800
If I hit continue, you saw the
LED light blink for a second.
00:12:20.800 --> 00:12:22.340
Debug experience is great.
00:12:23.250 --> 00:12:26.470
>> Still the code is running here.
So code is running here sending
00:12:26.520 --> 00:12:30.410
debug information back to Visual
Studio on your desktop, like
00:12:30.460 --> 00:12:31.980
you would be doing
remote debugging.
00:12:32.030 --> 00:12:37.660
>> It actually is remote debugging.
And part of that debug experience,
00:12:37.710 --> 00:12:42.480
I added a watch, I put one of the
variables under watch, right,
00:12:42.530 --> 00:12:47.360
and then also output for debugging.
So kind of some advantages
00:12:47.410 --> 00:12:49.360
of being able to use
Visual Studio.
00:12:49.760 --> 00:12:54.450
>> I think some hardware embedded
developers can relate to that,
00:12:54.500 --> 00:12:59.770
saying something as easy to do remote
debugging, just press five 1s.
00:12:59.820 --> 00:13:03.480
It actually rebooted the device.
Flashed the new code in there,
00:13:03.530 --> 00:13:06.640
executed that. It's almost magic.
00:13:08.110 --> 00:13:10.380
>> And of course this was very
simple. We're just turning an
00:13:10.430 --> 00:13:14.770
LED on and off. But it could be a
motor. You could be controlling
00:13:14.820 --> 00:13:18.570
one of the pins, one of the purpose
IO pins with pulse modulation
00:13:18.620 --> 00:13:21.500
and controlling the motor, which
is what we do with this robot
00:13:21.550 --> 00:13:22.280
over here.
00:13:22.330 --> 00:13:25.900
>> I have one question regarding
that, actually.
00:13:25.950 --> 00:13:30.570
What can you count on when it comes
to Micro Framework in terms
00:13:30.620 --> 00:13:35.880
of response time and ability to
stick within timeframe? I'm not
00:13:35.930 --> 00:13:40.550
talking hard realtime, but I think
the big question that comes
00:13:40.600 --> 00:13:44.850
when you're an embedded developer regarding
.NET is garbage collection,
00:13:44.900 --> 00:13:48.190
things happening that you don't control
on your device, and that
00:13:48.240 --> 00:13:51.390
you are not even sure when you press
the red button it's going
00:13:51.440 --> 00:13:55.400
to stop the robot arm. So .NET Framework
is not hard real time,
00:13:55.450 --> 00:14:00.580
but what can you expect in terms
of performance and real ability
00:14:00.630 --> 00:14:02.450
when it comes to building
embedded devices?
00:14:02.920 --> 00:14:07.520
>> Good question. Like you said, the
.NET Framework is not a realtime
00:14:07.570 --> 00:14:13.590
operating system or runtime. But
as far as kind of the response
00:14:13.640 --> 00:14:17.470
time, it depends on the hardware
you're using and
00:14:18.870 --> 00:14:22.630
also depending on your application,
kind of what performers you're
00:14:22.680 --> 00:14:23.730
going to get out of it.
00:14:24.720 --> 00:14:28.500
But it's really kind of hardware
and application dependent.
00:14:28.550 --> 00:14:32.470
So it's actually difficult to provide
just kind of a specific
00:14:33.370 --> 00:14:37.700
kind of answer to that. I guess
it can also come down on the
00:14:37.750 --> 00:14:40.940
way you're writing your code.
So try and not depend on
00:14:42.860 --> 00:14:46.690
too many memory allocations or the
allocation not mixing matching
00:14:46.740 --> 00:14:49.890
functions all over the place and variables
so on. Kind of optimize...
00:14:49.940 --> 00:14:52.690
think about the way you're writing
and optimize that, right?
00:14:52.740 --> 00:14:55.160
>> I think the typical things you
would want to consider when
00:14:55.210 --> 00:14:59.800
writing .NET applications you would want
to consider with a .NET Framework.
00:15:00.050 --> 00:15:05.720
>> You have to be even more careful
than on a regular .NET app.
00:15:05.770 --> 00:15:07.520
>> Good. We can do more, right?
00:15:07.570 --> 00:15:10.570
>> You can do more. The other demo
we have here is kind of like
00:15:10.620 --> 00:15:15.620
tied to more of the Internet of
things or IOT scenarios. So we
00:15:15.670 --> 00:15:18.100
showed the little blink
LED local device.
00:15:19.200 --> 00:15:23.540
Extending that, you can think of
more complicated application
00:15:23.590 --> 00:15:26.810
or program. And what we have here
is this robot which we put
00:15:26.860 --> 00:15:28.230
the little guy here.
00:15:28.280 --> 00:15:29.240
>> He has a name.
00:15:29.290 --> 00:15:31.130
>> Channel 9 guy.
00:15:31.990 --> 00:15:36.180
>> But this is just a robot kit.
You can get into the typical
00:15:36.230 --> 00:15:40.470
maker retail channels. Just
a little robot, sumo robot.
00:15:41.100 --> 00:15:45.930
What we did is we put Netduino on
it. We are actually controlling
00:15:45.980 --> 00:15:48.210
the robot through Netduino.
00:15:50.840 --> 00:15:53.320
It's more than three or four
lines of code we have.
00:15:53.370 --> 00:15:57.440
>> Basically you're controlling two
sides of rotation. Then you
00:15:57.490 --> 00:15:58.620
have sensors here, too, right?
00:15:58.670 --> 00:16:03.040
>> We're actually controlling two
motors and also taking data
00:16:03.090 --> 00:16:07.720
from multiple infrared sensors
that are on the board. And so
00:16:07.770 --> 00:16:11.360
what we've done, tying it to kind
of Internet of things, right,
00:16:11.410 --> 00:16:15.110
if you think of kind of Internet
of things kind of solution,
00:16:15.920 --> 00:16:19.580
you'll have some type of edge device
or local device collecting
00:16:19.630 --> 00:16:23.150
data from sensors, which in this
case for the demo purposes it's
00:16:23.200 --> 00:16:26.060
this robot we have here. And that
data is going to be sent to
00:16:26.110 --> 00:16:30.710
some kind of gateway or aggregator
that's going to potentially
00:16:30.760 --> 00:16:34.340
do some limited processing and also
some filtering of that data.
00:16:35.010 --> 00:16:39.470
And then that data will most likely end
up in some type of cloud solution.
00:16:40.020 --> 00:16:44.670
Perhaps Azure. So what we have for
this demo is kind of the edge
00:16:44.720 --> 00:16:49.950
robot and a gateway which we'll
simulate from the laptop here.
00:16:50.000 --> 00:16:53.550
And then we also have some services
running up on Azure.
00:16:53.600 --> 00:16:56.160
>> So your gateway is your laptop,
00:16:57.450 --> 00:17:00.130
running, connecting using
what to the device here?
00:17:00.180 --> 00:17:06.470
>> What we have here is these little
Zigby XB module. I'll connect
00:17:06.520 --> 00:17:09.510
it to the laptop. That connects
wirelessly to another
00:17:11.260 --> 00:17:11.920
Zigby module.
00:17:11.970 --> 00:17:16.680
>> Typical local network, so that
cannot connect on the cloud
00:17:16.730 --> 00:17:21.210
on its own. You have the gateway
in the middle, local bus, low
00:17:21.260 --> 00:17:24.260
energy consumption type of connectivity
and the gateway will
00:17:24.310 --> 00:17:26.700
do BC secure connections
to the cloud?
00:17:27.500 --> 00:17:31.010
>> Yes. Let me show you
that demo real quick.
00:17:32.850 --> 00:17:37.990
So the console app,
00:17:40.200 --> 00:17:41.470
show it through here.
00:17:43.270 --> 00:17:46.860
This is a console app. This is our
gateway application just runing
00:17:46.910 --> 00:17:52.410
on my laptop. And it's listening to
messages from our Azure service.
00:17:53.650 --> 00:17:58.910
And what we have is also open Azure
just a simple Web page where
00:17:58.960 --> 00:18:00.790
you can actually control the robot.
00:18:01.350 --> 00:18:05.540
So if I press buttons here to go forward,
to move the robot forward,
00:18:05.870 --> 00:18:09.650
I should see the
00:18:10.920 --> 00:18:14.430
corresponding commands on my gateway.
00:18:15.460 --> 00:18:16.770
So if I do this...
00:18:17.340 --> 00:18:19.800
>> So that's cloud
tier gateways.
00:18:19.850 --> 00:18:23.020
>> One thing we haven't done is
actually started the robot.
00:18:23.560 --> 00:18:25.640
Here we turned it on. We didn't
actually start it.
00:18:26.580 --> 00:18:28.070
>> That's me. My bad.
00:18:28.120 --> 00:18:30.530
>> But now that we've
started it, the
00:18:32.740 --> 00:18:34.370
forward button, the
robot moves.
00:18:34.890 --> 00:18:38.520
>> Sweet. We can see there's some
black lines here. So you're
00:18:38.570 --> 00:18:42.460
using the infrared sensors
to not go beyond that.
00:18:42.510 --> 00:18:43.410
>> Correct.
00:18:43.460 --> 00:18:48.390
>> That's how we don't send the Channel
9 guy flying off the edge
00:18:48.440 --> 00:18:49.790
to an untimely...
00:18:49.840 --> 00:18:52.350
>> After all he is in a self-driving
car right now.
00:18:53.680 --> 00:18:54.980
>> Happily he's made of foam.
00:18:55.530 --> 00:18:57.780
Won't have to fall... physically
and mentally I'm not so sure.
00:18:57.830 --> 00:19:00.540
>> What's happening physically
with these sensors?
00:19:01.640 --> 00:19:05.530
Are things decided whether or not
the robot should continue once
00:19:05.580 --> 00:19:07.870
it detected that happening on the
gateway in the cloud or on
00:19:07.920 --> 00:19:08.770
the device?
00:19:09.210 --> 00:19:13.460
>> There's some local processing
on the robot itself. So once
00:19:13.510 --> 00:19:19.890
it doesn't go past this little perimeter.
And then the commands
00:19:19.940 --> 00:19:23.010
that it's getting from that, from
this controller or website
00:19:23.060 --> 00:19:26.360
we have, those are going up to Azure
and the gateway is picking
00:19:26.410 --> 00:19:30.970
or listening to those commands and
then sending them off to a robot.
00:19:31.020 --> 00:19:34.470
>> So that's definitely an interesting
scenario because you were
00:19:34.520 --> 00:19:37.890
saying it's really lighting the
RE scenarios, think about that
00:19:37.940 --> 00:19:42.280
part being a robot arm in a factory.
Maybe I'm pushing it because
00:19:42.330 --> 00:19:45.150
robot arm requires real time. And
so on. But imagine you have
00:19:45.200 --> 00:19:49.300
a device that has tons of sensors
you need a level of intelligence,
00:19:49.350 --> 00:19:52.900
imagine that is broken, you don't
want that thing to not fall
00:19:52.950 --> 00:19:55.840
off the table. So you need to have
that intelligence and that
00:19:55.890 --> 00:19:59.850
security, I would say, mostly contained
here and working here.
00:19:59.900 --> 00:20:02.890
So using Micro Framework is an interesting
thing because using
00:20:02.940 --> 00:20:06.460
simple C# code you can add that
intelligence on the device and
00:20:06.510 --> 00:20:11.130
extend the functionality and the
data that the thing can produce.
00:20:11.180 --> 00:20:15.060
Imagine it's going around the room
and capturing information
00:20:15.110 --> 00:20:18.640
about distance or walls or whatever
to build a model, that guy
00:20:18.690 --> 00:20:21.900
doesn't have the memory to store
all that data and doesn't have
00:20:21.950 --> 00:20:25.230
the power to process the data. You
need to send it somewhere, right?
00:20:25.280 --> 00:20:26.350
>> Yes, definitely.
00:20:26.620 --> 00:20:31.530
>> That's a nice illustration
of intelligence down there.
00:20:31.580 --> 00:20:34.320
Hooked up through a gateway through
a network. Obviously you
00:20:34.370 --> 00:20:37.090
have some more powerful device
that could hook up directly to
00:20:37.140 --> 00:20:42.990
the cloud. And that's common in
most of the industries today,
00:20:43.040 --> 00:20:47.650
you would have that gateway here that
itself, like talk or whatever,
00:20:47.700 --> 00:20:49.230
RES or other protocols.
00:20:49.650 --> 00:20:52.460
>> There's different options. But
we showed the gateway here.
00:20:52.960 --> 00:20:57.040
Some of the Netduinos and other
DHI boards. They have kind of
00:20:57.090 --> 00:20:58.380
an Ethernet controller.
00:20:58.890 --> 00:21:03.190
So depending on your scenario you
could connect directly from
00:21:03.240 --> 00:21:07.170
this .NET Micro Famework device
out to a cloud solution.
00:21:07.220 --> 00:21:09.950
>> Doesn't have to be cloud, could
still do it internally?
00:21:10.000 --> 00:21:11.300
>> Could be locally, sure.
00:21:11.350 --> 00:21:14.770
>> You could have this thing reacting
to things that are going
00:21:14.820 --> 00:21:18.140
on inside the firewall just as easy
as things are getting sent
00:21:18.190 --> 00:21:23.170
down, depends on whether the robot's
on prems or off prems, basically?
00:21:23.600 --> 00:21:23.950
>> Yep.
00:21:25.530 --> 00:21:32.350
>> So we've showed you Visual Studio 2013,
working with the .NET Framework.
00:21:32.400 --> 00:21:37.040
And we show you kind of basic Hello
World or turn the LED on
00:21:37.090 --> 00:21:38.520
and off. And showed an
00:21:39.750 --> 00:21:40.810
Internet of things, IOT.
00:21:41.750 --> 00:21:44.420
>> How complicated was the
code to do this example?
00:21:44.920 --> 00:21:48.810
>> So not really complicated. I mean,
one of the nice things of
00:21:48.860 --> 00:21:53.970
working with .NET and Visual Studio,
the console app, I create
00:21:54.020 --> 00:21:58.880
a console project in Visual Studio.
Pretty straightforward serial
00:21:58.930 --> 00:22:05.920
port or comport code. And then on
Azure, downloading the Azure
00:22:05.970 --> 00:22:09.630
SDKs, writing a service for that
was also pretty straightforward.
00:22:10.520 --> 00:22:15.650
The actual code .NET Micro Framework,
it's leveraging the libraries
00:22:15.700 --> 00:22:17.060
that already come with it.
00:22:17.940 --> 00:22:23.060
It's controlling a couple of pens for
the motor for pulse with modulation.
00:22:23.110 --> 00:22:28.130
And then also taking input from
a few of the infrared sensors.
00:22:28.180 --> 00:22:29.750
So it's pretty straightforward.
00:22:30.920 --> 00:22:34.000
>> In that case it was all .NET
and C#. But you can actually
00:22:34.050 --> 00:22:37.990
imagine having service, it was Java
somewhere else, right, still
00:22:38.040 --> 00:22:42.450
connecting through gateway or not.
You can still mix and match
00:22:42.500 --> 00:22:44.670
various technologies.
That's great.
00:22:44.720 --> 00:22:49.010
>> So do you have samples on the
website of things like this.
00:22:49.660 --> 00:22:54.310
>> If you go to NetMF.com, our website,
one of the things we've
00:22:54.360 --> 00:22:56.720
done is revamped and
updated the site.
00:22:56.770 --> 00:22:58.170
>> We can show it.
00:22:58.220 --> 00:23:01.530
>> You designed it. You
should show it.
00:23:02.190 --> 00:23:04.560
>> Definitely the team worked on it.
00:23:06.020 --> 00:23:07.450
What we have here you can go to
00:23:08.800 --> 00:23:14.250
the showcase page and from our partners
they have, J [Indiscernible] Electronics
00:23:14.300 --> 00:23:20.150
and Synchro Labs, they have plenty
of sample projects that people
00:23:20.200 --> 00:23:22.170
have worked on. And then...
00:23:22.220 --> 00:23:27.750
>> These projects, most of them passed
the WIF acceptance factor,
00:23:27.800 --> 00:23:30.900
you were talking about that earlier
before the show, is it something
00:23:30.950 --> 00:23:34.630
that I will build that my wife
will feel to keep at home.
00:23:36.300 --> 00:23:42.100
>> We showed a robot. It's neat
to see it move. But one of the
00:23:44.240 --> 00:23:47.920
things .NET Micro Framework, you
think of Internet of things,
00:23:47.970 --> 00:23:51.210
you can build, you're maker out there.
00:23:51.740 --> 00:23:54.900
You could build your home automation
system around this.
00:23:56.100 --> 00:24:00.520
You can build your sprinkler system
around .NET Micro Framework.
00:24:01.340 --> 00:24:05.870
That's more kind of hobbyist, but
for the hobbyist, but you can
00:24:05.920 --> 00:24:10.460
imagine on the commercial side.
If you really are developing
00:24:12.030 --> 00:24:15.940
sprinkler systems or controllers
for sprinkler systems .NET Micro
00:24:15.990 --> 00:24:20.940
Framework is an option for that.
Smart meters, things like that.
00:24:20.990 --> 00:24:24.850
One of our partners over on Micro
Systems, they do commercial
00:24:24.900 --> 00:24:28.550
deployments of .NET Micro
Framework. They deploy
00:24:30.050 --> 00:24:35.930
their ow custom based boards on commercial
equipment or industrial
00:24:35.980 --> 00:24:41.370
equipment to monitor kind of equipment
or monitor the kind of
00:24:41.420 --> 00:24:43.890
conditions within the machines.
00:24:44.830 --> 00:24:48.130
So there's definitely kind of the
hobbyist aspect, tell you,
00:24:48.180 --> 00:24:51.280
which is kind of the boards we've
shown you here, but there's
00:24:51.330 --> 00:24:52.580
also the commercial side.
00:24:54.110 --> 00:24:58.120
>> Leads me to a question. We showed
some maker type of boards here.
00:24:58.170 --> 00:25:02.140
You're mentioning more industrial
type of platforms.
00:25:02.440 --> 00:25:08.150
So there is... and this is a question,
actually, how would someone
00:25:08.200 --> 00:25:13.200
port Micro Framework to new hardware?
How do you do that?
00:25:13.250 --> 00:25:17.330
>> So .NET Micro Framework we've shown you
the application developer perspective.
00:25:17.380 --> 00:25:21.070
You go into Visual Studio, write
the application. But what's
00:25:21.120 --> 00:25:25.080
happened before that or to enable
that is that somebody out there
00:25:25.130 --> 00:25:29.760
created a custom board, a circuit
board, with the micro controller,
00:25:30.390 --> 00:25:34.040
created whatever specific libraries
he needed to to support that
00:25:34.090 --> 00:25:35.430
particular hardware.
00:25:36.680 --> 00:25:41.950
So that work, we actually, the .NET,
as part of the .NET Micro
00:25:42.000 --> 00:25:45.750
Framework platform, we have a porting
kit that enables these
00:25:45.800 --> 00:25:49.020
commercial partners to port it
the .NET Micro Framework on to
00:25:49.070 --> 00:25:52.240
their custom made boards or hardware.
00:25:53.620 --> 00:25:57.540
>> We should expect to have more hardware
supported, like considering
00:25:57.900 --> 00:26:00.840
the fact of the project is open
source, and we want to accept
00:26:00.890 --> 00:26:04.210
contributions from the outside,
we should expect to have more
00:26:04.260 --> 00:26:06.420
and more of these boards
available, right?
00:26:06.470 --> 00:26:07.820
>> And so if you
00:26:09.480 --> 00:26:14.160
get a board, it comes with a particular
version of the framework runtime?
00:26:14.210 --> 00:26:15.900
Can you update the board?
00:26:15.950 --> 00:26:16.840
>> Good question.
00:26:17.520 --> 00:26:21.200
Just talking specifically about
these maker or hobbyist type
00:26:21.250 --> 00:26:24.530
of boards. They come pre-installed
with a version of the .NET
00:26:24.580 --> 00:26:29.420
Micro Framework. As new versions
are released, the partners or
00:26:29.470 --> 00:26:33.650
the manufacturers of these boards,
they also do upgrade their
00:26:33.700 --> 00:26:38.110
firmware or the software on the board.
As a hobbyist maker using
00:26:38.160 --> 00:26:40.140
these type of boards, yes,
you can reflash...
00:26:40.190 --> 00:26:43.060
>> You can update the firmware the
same way it would update the
00:26:43.110 --> 00:26:44.930
firmware on larger
devices, correct?
00:26:44.980 --> 00:26:45.330
>> Yes.
00:26:46.050 --> 00:26:52.030
>> So does the new way of distributing
.NET Micro Framework architecture
00:26:52.080 --> 00:26:56.950
was V6, so on, does that actually
partners to distribute their
00:26:57.000 --> 00:27:01.070
firm update more easily like through
NuGet or something like that?
00:27:01.120 --> 00:27:02.410
>> In the future it will.
00:27:02.940 --> 00:27:06.230
We've started to take steps to
make that process easier.
00:27:06.630 --> 00:27:10.520
>> In the future I would be like
I've got that board, there's
00:27:10.570 --> 00:27:12.230
a new version of Micro
Framework out.
00:27:13.070 --> 00:27:18.060
Eventually Secret Labs will distribute
a new NuGet package that
00:27:18.110 --> 00:27:22.000
I can get from Visual Studio that
once I have it will allow me
00:27:22.050 --> 00:27:23.940
to reflash the firmware.
00:27:23.990 --> 00:27:28.890
>> Not to that point yet. But definitely
integration with Visual Studio.
00:27:29.300 --> 00:27:33.010
So their SDK would still
be up there.
00:27:33.060 --> 00:27:34.870
>> Yes, they'll still have their SDK.
00:27:35.670 --> 00:27:39.250
But the integration with Visual Studio
will definitely make it easier.
00:27:39.730 --> 00:27:46.320
And because of the way we're heading,
we... you might not need
00:27:46.370 --> 00:27:51.840
to reflash the firmware on the
actual device as often. So he
00:27:51.890 --> 00:27:56.640
showed us from a coding perspective,
it looks pretty straightforward.
00:27:56.690 --> 00:27:59.800
But if I want to get started doing
this, what about from the
00:27:59.850 --> 00:28:02.310
hardware perspective? Do I
need to be a gadgeteer?
00:28:02.990 --> 00:28:04.840
I've not played around...
00:28:04.890 --> 00:28:05.890
>> Afraid of electrons.
00:28:06.220 --> 00:28:09.260
>> Not that I'm afraid of them.
It's just never been a
00:28:10.750 --> 00:28:15.480
hobby of mine to play around with
boards like this. How would I...
00:28:15.530 --> 00:28:21.250
do I need to go to some MOOC, do
some electrical engineering
00:28:21.300 --> 00:28:23.700
first before I start playing
around with this stuff?
00:28:23.750 --> 00:28:29.390
>> No, it's really a matter of picking
hardware. Go to the website
00:28:29.440 --> 00:28:33.220
and go to our get started page.
You can get links to some of
00:28:33.270 --> 00:28:38.520
the partners that have products.
But first step is the select
00:28:38.570 --> 00:28:42.850
the hardware, JHI Electronics, Secret
Labs, different hardware,
00:28:42.900 --> 00:28:48.160
based on what you want to build, pick
one of their boards actually
00:28:48.210 --> 00:28:54.090
on your development machine, and
you'll need Visual Studio.
00:28:54.390 --> 00:28:57.150
And any of the expres versions
will work, also.
00:28:58.790 --> 00:29:03.080
Install our SDK .NET
Micro Framework SDK.
00:29:04.090 --> 00:29:09.000
Any specific hardware libraries,
and you're good to go.
00:29:10.840 --> 00:29:15.200
As far as wiring or the physical
kind of connecting sensors,
00:29:15.250 --> 00:29:19.840
you could use a lot of shields that
are out there for Arduino.
00:29:19.890 --> 00:29:24.130
But the boards are compatible
without Arduino...
00:29:24.610 --> 00:29:28.130
>> Actually we have various levels.
Gadgeteer one is very interesting.
00:29:28.180 --> 00:29:32.210
It has plug and play. You have a
connector board here where you
00:29:32.260 --> 00:29:36.290
say I want to add a camera. I just hook
it up to one of the connectors.
00:29:36.340 --> 00:29:40.650
It has a number three and so in
my software, when I write my
00:29:40.700 --> 00:29:44.990
.NET Framework code, it will say
pin number three, it's a camera.
00:29:45.550 --> 00:29:50.690
So I can use my camera functions
out of that specific pin.
00:29:50.740 --> 00:29:52.930
And so you have a bunch of them,
you can connect here. We have
00:29:52.980 --> 00:29:56.000
a camera. We have a USB connector.
00:29:57.150 --> 00:30:01.250
That's the camera. And that's
the joystick. So basically we
00:30:01.300 --> 00:30:06.110
have an LCD display here. You can
build everything like Legos.
00:30:06.160 --> 00:30:10.940
I would say that's a beginner
or student level.
00:30:11.570 --> 00:30:14.830
I would call the Arduino one a
second level, because you have
00:30:14.880 --> 00:30:18.550
a lot of functionality. Instead of
having that connection board,
00:30:18.600 --> 00:30:22.800
you actually can pile them up. They have
this Arduino compatible pinning.
00:30:23.590 --> 00:30:26.840
Obviously you need a library each
time you have a new shunt.
00:30:26.890 --> 00:30:27.830
Good example,
00:30:29.250 --> 00:30:34.130
coming soon, an example of a meadow
station, like weather station
00:30:34.180 --> 00:30:39.570
that uses one of the Arduino shields
which is called Weather Shield.
00:30:40.240 --> 00:30:45.140
It has temperature sensor, light
sensor. It has atmospheric
00:30:45.190 --> 00:30:51.900
pressure sensor, also two connectors
for wind speed and another
00:30:51.950 --> 00:30:54.980
one, I don't remember which one,
but basically you're able to,
00:30:55.030 --> 00:30:58.400
just hooking up that shield on that
board, and just care about
00:30:58.450 --> 00:31:02.660
the code. There's very little
wiring, soldering involved.
00:31:02.710 --> 00:31:06.190
But if you understand you say I want
to build my electronic boards
00:31:06.240 --> 00:31:10.720
to something, you have these GPIO
general purpose input output
00:31:11.080 --> 00:31:11.760
to control.
00:31:11.810 --> 00:31:16.310
On/off and things like that and
you can do whatever you want.
00:31:16.360 --> 00:31:19.050
It's like at all levels.
00:31:19.100 --> 00:31:24.390
>> If I had a shield that sensed light,
for example, I could presumably
00:31:24.970 --> 00:31:28.530
write an application to turn lights
on in my house and turn them
00:31:28.580 --> 00:31:32.030
off and dim them based
on the light outside.
00:31:33.150 --> 00:31:38.750
>> Exactly. To literally do that,
walk me through the mechanics
00:31:38.800 --> 00:31:43.140
of that. Right now I've got lights
plugged into electrical outlets
00:31:43.440 --> 00:31:45.250
and I've got a laptop.
00:31:45.870 --> 00:31:48.010
So I think... what comes next.
00:31:48.850 --> 00:31:52.240
So you can start out with
a controller, which would
00:31:53.540 --> 00:31:57.160
be the amount of light in a particular
room, for example.
00:31:57.210 --> 00:32:01.530
So you start out with the board, data
mass board. Shield or sensor.
00:32:01.580 --> 00:32:04.700
Most likely a shield that has that
particular light sensor.
00:32:04.750 --> 00:32:10.600
And you plug it in and write the
application on Visual Studio
00:32:10.650 --> 00:32:13.710
to collect the sensor information.
00:32:14.660 --> 00:32:18.800
Then depending on what you want to do
from there, there's various options.
00:32:19.340 --> 00:32:21.080
You could...
00:32:21.790 --> 00:32:26.730
what you could do is from there
install or connect a different,
00:32:26.780 --> 00:32:33.280
a switch, so actually a power
switch to your NET MF board.
00:32:34.210 --> 00:32:38.070
So I know of several out there...
I can think of several out
00:32:38.120 --> 00:32:43.450
there, through a general purpose
IO pin you can control a full
00:32:43.500 --> 00:32:45.800
kind of 120-volt LightSwitch.
00:32:45.850 --> 00:32:47.090
>> You plug the light into that.
00:32:47.140 --> 00:32:50.400
>> Plug the light into that. And
that's how you can do it.
00:32:50.450 --> 00:32:55.730
>> So right now for the Christmas lights,
we have these last century
00:32:56.760 --> 00:33:01.680
big boxes that just have a clock,
right, and as it moves it turns
00:33:01.730 --> 00:33:04.070
them on and turns them off. And of
course the problem is they're
00:33:04.120 --> 00:33:07.090
never in sync, because no matter
how hard you try, if you're
00:33:07.140 --> 00:33:11.200
lucky you can get them within maybe
three or four minutes of
00:33:11.250 --> 00:33:14.460
each other. The lights in the top
half of the house go on, then
00:33:14.510 --> 00:33:19.640
minutes later the ones downstairs
go on. My wife doesn't care
00:33:19.690 --> 00:33:20.970
but it bugs me.
00:33:21.020 --> 00:33:22.780
>> You're a perfectionist.
00:33:24.020 --> 00:33:28.250
>> Yeah. If you're going to go through
the hassle, the lights
00:33:28.300 --> 00:33:32.140
should come on, not like in stages.
Nobody wants to see that.
00:33:32.190 --> 00:33:36.280
Then I could relatively easily create
this type of application
00:33:37.120 --> 00:33:38.850
and then it's just
00:33:40.680 --> 00:33:43.520
pretty easy for this thing to know
what time it is. And as long
00:33:43.570 --> 00:33:46.870
as these devices think it's the same
time at the same time which
00:33:46.920 --> 00:33:50.030
they probably do, then the lights
would come on, the lights would
00:33:50.080 --> 00:33:53.380
go off. I could potentially program
it. And I could have these
00:33:53.430 --> 00:33:58.260
things come on based on how dark
it is outside. Instead of just
00:33:58.310 --> 00:34:01.160
coming on at 5:00 and going off
at 10:00.
00:34:01.210 --> 00:34:02.940
>> And that wouldn't
cost you a lot.
00:34:02.990 --> 00:34:06.340
>> I could potentially control it
through my phone or something
00:34:06.390 --> 00:34:08.630
if I want to leave them on a little
bit later. That would be
00:34:08.680 --> 00:34:09.470
a good project.
00:34:09.520 --> 00:34:13.870
>> You've seen Salvador was showing
the thing, that was an Arduino
00:34:13.920 --> 00:34:18.610
Zigby connector, it can go wireless,
imagine you have that board
00:34:18.660 --> 00:34:24.660
in a weatherproof case and this one
is sitting on your roof controlling
00:34:24.710 --> 00:34:28.050
those lights. And from your laptop
or Zigby connection you're
00:34:28.100 --> 00:34:31.520
able to control that one. So you
don't even need to have a wire
00:34:31.570 --> 00:34:35.140
coming down. Your wife will be
even happier. I can tell you
00:34:35.190 --> 00:34:39.390
by experience. No wires. Perfect.
But you can also imagine the
00:34:39.440 --> 00:34:43.040
same scenario where you have these
instant light or things are
00:34:43.090 --> 00:34:47.420
already smart to some extent,
add functionality to them.
00:34:47.470 --> 00:34:51.750
Maybe these things are controlled
for an app as like on/off,
00:34:51.800 --> 00:34:56.770
color intensity, while all that your
idea of having a light sensor
00:34:56.820 --> 00:35:01.520
in the room or a mood sensor, like
add some Twitter feed information
00:35:01.970 --> 00:35:05.720
and depending on the mood you change
the color in the room.
00:35:05.770 --> 00:35:11.620
>> I'm going to crowd source turning
on and off my lights in the house.
00:35:11.670 --> 00:35:12.450
>> Ping today.
00:35:14.530 --> 00:35:17.690
>> So that's the type
of scenarios.
00:35:17.740 --> 00:35:23.960
>> Let's talk a little bit about
this being open source and what
00:35:24.010 --> 00:35:26.940
does that mean and how would
people get involved in this.
00:35:27.470 --> 00:35:30.450
Micro Framework project has been
open source for already a couple
00:35:30.500 --> 00:35:35.940
of years on CodePlex. The new thing
that's happening now is the
00:35:35.990 --> 00:35:40.190
project has been given to MS Open Tech.
Microsoft Open Technologies.
00:35:40.240 --> 00:35:43.250
We're a wholly-owned subsidiary
of Microsoft working on open
00:35:43.300 --> 00:35:47.360
source and open standards to bridge the
Microsoft and non-Microsoft world.
00:35:47.410 --> 00:35:52.360
We're actually helping the .NET
Micro Framework team in being
00:35:52.410 --> 00:35:55.010
a great open source project, because
we had the experience of
00:35:55.060 --> 00:35:58.170
interacting with the open source
community and setting things
00:35:58.220 --> 00:36:03.160
up so that external contributions
can go through without issues
00:36:03.210 --> 00:36:06.690
or problems. So the idea here is
to say we're reinforcing that
00:36:06.740 --> 00:36:09.550
engagement through the community
and we really want to have that
00:36:09.600 --> 00:36:13.810
project being a community project.
So Microsoft engineers will
00:36:13.860 --> 00:36:18.390
still be on that project, actually
just hired a bunch of them
00:36:18.440 --> 00:36:21.600
to join the team that was like
super small in the last couple
00:36:21.650 --> 00:36:25.710
of years, to reinforce the Microsoft
effort in it. And this
00:36:25.760 --> 00:36:30.110
first update is a very first stab,
like baby steps towards way
00:36:30.160 --> 00:36:34.160
more things coming. And we can
talk about them in a second.
00:36:34.210 --> 00:36:37.220
But the idea is to say at the same
time let's make the process
00:36:37.270 --> 00:36:41.090
to have communities, partners contribute
code to the Micro Framework
00:36:41.140 --> 00:36:45.660
simpler, easier, both in terms of
what the licenses are looking
00:36:45.710 --> 00:36:50.420
like in terms of how we accept the
contributions within Microsoft
00:36:50.470 --> 00:36:54.760
and so forth. So hopefully... and
by the discussions we're having
00:36:54.810 --> 00:36:57.170
with the various partners, the
MVPs that are involved and so
00:36:57.220 --> 00:37:01.630
on, they're excited. I know a guy
who has been porting Micro
00:37:01.680 --> 00:37:06.830
Framework to FPGA devices, even smaller
type of micro controllers,
00:37:06.880 --> 00:37:09.170
very common in the industry.
00:37:09.730 --> 00:37:13.160
And he's like I have that. I do
nothing out of it. How about
00:37:13.210 --> 00:37:17.200
I contribute that back. So we should
definitely expect to have
00:37:17.250 --> 00:37:20.430
way more of these interactions
with the community. Some are
00:37:20.480 --> 00:37:24.580
complaining about the network performance.
So how about they
00:37:24.630 --> 00:37:27.980
provide their own hacks that have
already worked on the last
00:37:28.030 --> 00:37:32.490
couple of years into the project so
it's actually benefitting everyone.
00:37:32.540 --> 00:37:35.220
>> People can just go to the CodePlex
site and you'll have links
00:37:35.270 --> 00:37:38.300
to all these and show descriptions.
Go to CodePlex and just
00:37:38.350 --> 00:37:39.230
get involved.
00:37:40.820 --> 00:37:41.170
>> Yep.
00:37:41.820 --> 00:37:42.600
>> Definitely.
00:37:42.650 --> 00:37:45.310
>> Also to address real quick kind
of the other things that we've
00:37:45.360 --> 00:37:48.690
released this update to support
Visual Studio 2013. The team
00:37:48.740 --> 00:37:51.780
is little working on additional
things that the community has
00:37:51.830 --> 00:37:55.590
been asking for. One of them being
networking. So we're looking
00:37:55.640 --> 00:37:57.120
at networking stability.
00:37:58.000 --> 00:38:01.530
By that, when I say networking, we're
talking about core networking,
00:38:01.580 --> 00:38:08.250
TCP, IP, UDP, THCP. So we'll be coming
up with... we're reviewing
00:38:08.650 --> 00:38:12.190
that architecture and coming
up with updates on that.
00:38:12.730 --> 00:38:16.810
>> Cool. This is a forum on CodePlex
that actually if you have
00:38:16.860 --> 00:38:21.010
ideas, if you have something to
rant about or to contribute,
00:38:21.830 --> 00:38:25.610
go to the forum on CodePlex site and
participate in the discussion
00:38:25.660 --> 00:38:27.420
and share what you have to say.
00:38:27.470 --> 00:38:30.760
>> Yep. Excellent. All right. Cool.
Very cool stuff. Thanks for
00:38:30.810 --> 00:38:34.060
coming on the show and showing us this
stuff. Hope you enjoyed that.
00:38:34.110 --> 00:38:36.570
And we'll see you next time
on Visual Studio Toolbox.