All the Developer Things with Hanselman and Friends - BRK2020
My goodness. How. Are you all I. Am. Very excited to see you I appreciate, that the front row is all checking their email like apparently. You're the managers, everyone, the backs trying to build their software but I can see you deleting me I was like a boss it's a good job doing, that my one of my buddies just look down and deleted another email when I said that, so. This is an interesting talk, this is an experiment that they let me do because I think that there's a bunch of cool little things that maybe aren't keynote ready, or maybe not even fun enough or interesting enough to put in any, talk but what if we put a parade, of all the developer, things all the fun little things, it might be a little small. Feature that was added to Visual Studio 2019. That made me smile it, might be an experiment, I've got a couple of experiments, that I'm going to show you that we don't know if we're going to ship I honestly. Don't know if it's a good idea I, will. Measure those things based on your cheering and. If, I show you a demo and there's silence, well. You've just killed a product so feel good about feel. Good about that okay, so. We've. Already heard before in the, other talks that life runs on code, for. Me it's even more important, because not, only is it things like your your car or your traffic system or the Space Shuttle or your artificial pancreas or, a, little. Robot that runs around your house what. Was that my. Artificial pancreas keeps, me alive it runs in Azure and I've got it in my pocket and I've been I've been looting, on an open source artificial, pancreas for, over three years so. For me life really does run on code and it really gets me excited when I start thinking about the, power, that code has to influence, all the things in our digital life whether it be your, smart home and being able to go and talk to a smart system, at home whether. It be things like connected, retail that we're starting to see more and more scenarios, or the future of things like manufacturing digital, factories smart, cities and more life, runs on code and. Also, tacos. I'm. Gonna try to make as many taco, related, demos as possible, in this talk and, the. Fact that of course I'm here, from, Portland working, remotely in Seattle. Right now means that I get to expense all, of my tacos and because I'm on an expense account it's a double. Meat-free, double meat because Microsoft has to pay for it pretty. Exciting I've had tacos morning, new tonight it's, a really great time to be a.net developer we, talked about this a little bit in our talk with Scott hunter but this idea that I can do stuff not just in Azure not. Just as your functions as a signal, our services I can do things anywhere. In Azure dotnet, pervades, all around azor I get. New abilities. As a developer, every time a new Azure service, comes out that makes me really happy a new service comes out and go I can use that it's, like a new tool for my toolbox, and I can put it in my pocket and I've got cosmos.
DB As your, sequel cognitive, services so, I wanted to see how many fun, things we could do and how many fun things we could break with dotnet, let's. Go look at a few fun, things that I've been playing with I'm gonna run around here in visual, studio for, just a second, this is Visual Studio, 2019. I've got, my. Visual. Studio this is actually my podcast. Website. A little. Advertising, moment, here I've actually got a podcast, you may have checked out it's called Hansel, minutes, and it's. Really fun and the websites actually written in asp.net, core. And built with Visual Studio 2019. And hosted on Azure and there's, been hundreds and hundreds of shows of lovely people like you or to encourage you to check the show out what's fun about having a website that you keep up 24/7. Of course is that you get to learn about all, this kind of code I like. Trying. New things I'm, using unit testing I'm using headless, selenium, testing I get to go and run code cleanup and try new features in Visual Studio with. The actual source code of what I'm working on this, here is code. Cleanup that we saw a little bit about, but I want to talk more in, more, advanced, than we did in the keynote if I go here to configure, code cleanup, I can. Actually set up different, profiles, and I can describe the features that I care about that, are either editor, features like whitespace and towns and things like that or. Language, specific features and that editor config, file gets checked in to, source code it's it's an artifact, that you actually care about and. I can go and change, how, this behaves, plug. It into an editor duh config and it works not only in Visual Studio 2019. But also Visual Studio code, which, of course runs, everywhere on, and on linux and on windows which, means that then code cleanup will use these things, and i can have different profiles so I can have my my, work things, and I'm like I have my personal, things and describe. How I want my code so if work wants spaces, we. Do that and if our home wants tabs we can do that and it's really great that that's all built into Visual, Studio one of the things that I think is really interesting is, this, extension, and the rich extensibility. Model, that we've got in 2019, I've, actually put in a thing here called whack-whack terminal. This is one of the extensions there's thousands, of great extensions, that you can get to Visual Studio 2019.
Wouldn't, It be nice to have an integrated terminal. Inside of Visual Studio 2019. You, can have that now with an extension. From the marketplace maybe, if you give them feedback that you think that's fun and important, they might put that in, in Visual Studio proper, which would be kind of cool by, the way that, right there that's, my, blood sugar. True. Story I'm. Glad you're laughing at my pain thank, you for laughing it and. Then. That's my get, prompt which is really fun so I've got my main branch and I've got my blood sugar all in that prompt integrated, into Visual Studio you wouldn't be able to do something like that unless you had a really extensible, system and, I having an extensible, prompt, having, that prompt inside Visual Studio and then being able to have extension, that Visual Studio makes me very happy, another. Thing I wanted to point out was, what was going on up here in the, search bar I can search visual studio if I do something like fonts, look at this as I type. Go. And say fonts, go right to it so it's not tools options, environment, data and, I can go in search for other, stuff, add. A new WinForms item add, new templates, I may can even go and search online for those things I can search within new. Get itself that, search, dialog, you should spend more time in there now, sometimes people think when you learn Visual Studio you have to learn all the hotkeys, I don't learn all the hotkeys I only know like three I, know. Ctrl. Q which gets me up into the search box there I know. Ctrl. , which. Gets me the go. Anywhere navigate, anywhere kind, of action there. I know. Dot. And, then. I know. Of course the crucial, windows, dot, which brings up the emoji picker. Which. Is apparently now been updated to do these, emojis which is even cooler that's the kind of features that you demand in. Your operating, system isn't it now. Speaking, of little tiny experiences. And things that that get better with time I really like the new project. Dialog this is brand new I can, go in search on language. Platform. Project, type they've, made that new project dialog, just that much easier for, you to get to and then once you go and do stuff a couple of times it will actually go and populate.
Your Recent project templates so there's four or five projects, that you usually use after. A week or two those are going to populate and you've got your most recently, used list of project templates which is really nice now. I talked a little bit about that, terminal, window which is an extension but I also noticed, that there was a while there where I was searching for you. Know the developer, command. Prompt, the developer command prompt it's basically Dass but not das with. Paths, set, up for you to get msbuild right it's it's the it's the DOS prompt, that gives you the path stuff that you want but it's 2019 where's, our PowerShell. Developer. Command prompt so, coming in the next preview, developer. Command prompt for PowerShell, done as a module, so, you can finally get all those pathing, things that's a little bit of an annoyance that always bothered me about 2019. And I said hey can you do that for us they're, actually going to ship that so developer, command prompt for official. Studio yeah. It. It is the little things that I love, now. Let, me go over to. Visual. Studio. And look for a different project. One. Of the things that I want to see here. We go dotnet, core. Three, this is done at core three lets. You run applications. That. Are wind forms apps web, and WPF, apps and you might say well why, would you want to do that right you want to do that so that application, can become more portable, you, want to be able to do that so that application. Can take advantage, of features that aren't going to be in the dotnet framework not. At framework four point eight is done, right. It's, finished and it's going to be reliable for the next several decades but. It doesn't have the new hotness it doesn't have the new features it's not going to get the new c-sharp isms. Additionally. You've, all had this experience at, work where someone's on dotnet for in production, and you did something in dotnet four point seven to four point eight and you really want to have them upgrade that machine and they just don't really want to do that so, then you have a situation where you might have all these machines in your fleet, in your group, of applications there's these three thousand people in the home office they're all running that version of.net we, can't deploy our app because they're not ready next. Year when they update Windows they'll get another version of.net we. Don't want people to feel like that we, want people to get all the great new features in dotnet, core today so of course we make dotnet core three work where you can basically swap the brain out of dotnet. And dotnet. Web form wind forms rather or WPF, now have dotnet core three at, its heart so, we thought it'd be really interesting to. Go and take an, open source project like green shot very popular, very complicated, project, let green shot has a lot going on so the, green shot folks have gone and take their screenshotting. Utility, application, based. On I believe wind forms and putting dotnet. Core underneath, it and, then, what I've done is. I've. Made a. Right. Click. Publish. And. I've made a couple. Of changes. So. Here we've got a, publish. To a folder right, right, click publish, and then your bin-debug or, your being release ends up making an executable you put it over somewhere traditionally. You're used to making an executable, and then, making sure it runs on a machine by ensuring. That that machine has dotnet. On it do you have done it 4.6 oh shoot I use 4.7, you need to upgrade that. Kind of an experience for desktop apps has been frustrating what. We've gone and done here is, said, all right I'm going to go ahead and have a release version of. Green. Shot, running. And targeting, dotnet core app in the, wind x64. Namespace. And we're gonna put it into a specific location, I want, to take that let's, go into that folder right now, so. Here is. That. Application. And all the stuff that need that looks pretty typical but if we scroll down. What. We're actually seeing, is. Dotnet. We've copied, dotnet. Over and now, there's a folder, with all dependencies. That is a self-contained. Installation. Of this you. Know many years old application, actively. Actively. Worked on it's a popular application but. It's been around a while you've. Got right, there wind forms, XML. You've got a lot of stuff going on but. You. Might say well how much dotnet did you copy over that might be a lot I don't want that much dotnet. Well. Right there that's dotnet core 3 copied, over and that's about 160, Meg's for, a very sophisticated application. It's got a lot going on but you might still say you, know that's still too much I don't like that one of the things that we're working on that'll be happening in the future is, this on idea of tree trimming, okay, what, if you take that application and you hold it up in the air and you imagine all the functions and all the dependencies and all the stuff that it does and.
You Give it a good solid shake and the. Functions, that it doesn't call fall, away and, if. You can delete, all the functions, until they're not even needed anymore, maybe, those D levels don't even need to be shipped so. If you're not doing any system XML you give it a good shake system that XML falls away and suddenly you're 100 megabyte applicat your hundred 60 Meg app is 100 Meg app or a 50 ma gap it depends on how sophisticated, it is I've. Been able to get dotnet core applications, down to the 30 40 make range and running very very small in containers, which is really important for, density. For high-density scenarios, but. Additionally you might be frustrated that this has got a lot of files you say that's a no that's a lot now I think you shouldn't complain because this is pretty amazing but. How. Far could we take it well. What, if we did some. Really interesting stuff, and this is all either, coming soon or something to think about okay in, here do to do to do where did it go I think. I put it in properties. Publish, profiles, super magic holy crap. Let's. Go and look in that folder. Turns. Out that if you name a profile, that it actually names the folder that. So. There's my application. One. Executable. One. Executable, handled, you like that. Hey. I've got a dotnet application. I'd like you to go and run on your machine you pull out your USB key and stick it in there and then of course they should think about viruses and all the kind of stuff you. Delete their hard drive and you're like yeah done that and, it. Runs and, it runs because it, just runs it has everything, that it needs now, it's very early times but it's something that we're actively working on that you're gonna expect to see in the dotnet 3 timeframe so you get better in preview for preview 5 preview 6 as we move forward the tree-trimming thing is coming in the future but this is part of the unification. Of the technologies. The tree-trimming technology, came from the mono world, this. Is a win the dotnet framework application. And now, mono. Dotnet. Core and dotnet, framework are coming together and we take the best bits, from each one the. Interpreter, the ahead-of-time compilation for. Native the, the best-in-class jitter, and you pick the one that makes you happy wouldn't, that be nice to have a single. Executable app that, just worked and you didn't have to worry about dependencies, we're, trying to make that happen for you and I hopefully think you will appreciate it that's, real. And, if. I go and run greenshot, right. Now now there it is running, in the corner. And. You can see it look at that copyright. Date this. Applicatives. Applications, been working on for a long apparently, has absolutely, no warranty so, make. Sure you aware that but also support, open source projects, and people that work on stuff like this this is pretty exciting for us to go and be able to do something like that that, is real, and happening. Now so, check that out and feel good about it let's switch over to the slides. We. Have talked about a number of these things we talked about vista 2019, and all the great new stuff that's going on remember, you can always go to visual studio comm, slash, free, if you like doing open source you want a copy of visual studio community.
Just, Great for open source folks let's you have extensions. And all the power of Visual Studio for little. Businesses and open-source folks. Dotnet. 5 we, talked a little bit about in, Scott. Hunter's thing the next version of.net will, be numbered 5 because. 5 is greater, than 4.8. But. Seriously the, reason that that's important, some people might say it should have been called for some of them I should have said other things. Is the culmination, of all the best of the dotnet framework, winforms, WPF, it's. All the great work we've done on, dotnet, core it's. All the great work that's happening on mono and we want to make it a number that's big enough to let both, people, know that, net framework people, who were on four point eight it's, time to move to five the, people that are working on dotnet core to, move to five as well because they can do their their. WinForms, and their. WPF, apps we can do our asp.net, core. Applications. This, is the future it's gonna happen you know later, later later a couple years but, we've got the roadmap published now I encourage you to check out the dotnet blog for, all that information, it's, a good time to be a.net developer and. Right, now Don eight core three preview. Five with both the Windows desktop support, flexible. Deployment the ability to do things. Self-contained. Or not runs, great in, containers. Lots. Of fun stuff going on right there and. I'm. Gonna do this let's talk about happiness. Developer, happiness. Is. This the wrong slide. It. Is. I'm. Gonna fast-forward a little bit and figure out where. That went let's do this instead I got confused let's. Bring out Maria to, show us some of the fun stuff that we're doing about workshops, we're you at Maria. All. Right all. Right let's, do some damage. Okay. Big, hand for Maria. So. You. Do a lot of workshops we do a lot of works as we teach people how to write code a lot and going, and saying let's, install Visual Studio can, be overwhelming, when they're used to other things absolutely. And to challenge that we created a brand new global, tool called net try and, I want to show you that to you today so you already have that installed in your machine and. You cloned at github repo alright so let's look at this so I'm at the command line and when I type dotnet. I get a bunch of commands. Like dotnet, - - help these, are all, commands. Yeah you've given me a new command, in the form of a global tool, exactly, ok so the only thing I do is install net and your your command, yes that's it and clone the repo that you want to try out ok so this is your repo yeah, TD, ensamples, try that mythical exactly. So, I want you to type dot net tribe dotnet. Try and, what this is going to do it's going to start out test role and load, up a browser so. The browser that we're in now is an interactive, experience so. If you click on one of the samples, that we have at the below oh hang on I'm confused though I want to I want to know what's going on here this is not good catch why is this not say SP net because. It's we're running a markdown file you're. Running, a markdown file yeah ok so if I go back to the command line here I see. Readme. Dot MD, that is what you just launched my readme file I just want you if that's the readme file that we cloned exactly. So. Click on introductions, to c-sharp introduction. C-sharp, I'm, interested, also that the. Path has changed I'm actually kind of running this all locally, on my machine Oh locally, on your machine ok. All right intro to programming so, run. The code Dada. Dada Dada done and I. Assume that was the power of the cloud no. It. Was a power. Net. On your machine ok so what we're doing here is that we're treating, the browser as an editor okay and we're, using the TriNet engine to actually create those kind of experiences, aha ok so there's a client-server, thing going on here this is my editor not visual studio in this case and when, I hit run I, compiled. It myself look you did, it for me exact. All right the big question that people always ask is, how, are, we doing this I want to understand one understand, so I want you to go back to your command line and we're going to open this up in Visual Studio code I'm, going to stop that and I'll say code dot and then. We'll make sure we're running again I'll just run it again I should have had two command lines open all, right huge. I know okay, make that better, so, let's start with the, methods MD, okay so this is a markdown file, like, a markdown file that people would typically write okay but what you're going to notice that inside, the code fences, using trident net we've, actually extended, the options code fences, what's that so the code fence is where you see the triple tick CS okay. So that's markdown, that I recognize because we use that for writing blog posts yeah you went tick tick tick c-sharp.
C-sharp And, there's. Some C sharp and there's some c-sharp all right but what I want you to pay attention to, is you've notice that there's something different, like something that doesn't look like regular, markdown well that's, all extra, looking stuff it's extra looking stuff so what we're doing here is that we're pointing to a region. In a c-sharp project. Called. Methods, all right it's in, a particular source file which it looks like it's relative, to where I'm at so that must have come down when I clone. And. Then we have the project that will pull down all the assemblies ok so what we go over to program dots yes all, right yes. All. Right and you will notice that we have a method. Regen. Yeah and, we. Have a bit of code so what we're doing with Trident net is that we're accessing, your, backing project. And may, allowing, you to run it within markdown. This allows for your backing project, to be the source of truth because a lot of times when people are building workshops, either. The markdown is, up-to-date or, the project, is up-to-date that's interesting because my question was was like well you. Know that's cute to have two lines of code there but I that's. Not going to go very far I need a project. To do a lot of interesting, work so you're saying that this isn't the source of tricks no that's, not being run that is not being right, this. Is being run so, let's change that to something else tacos, by change no tacos, exactly. Tacos. I'll make them yeah, okay. So I'm changing this, here yeah and. Go. Back to the project, okay, and if. We have. It running uh yeah I was in methods right yes did. You do where's methods we can go. Can. I do this yeah. Okay so there's that's interesting so though the homepage gave, me a list of my web server which is my local folder and there's the classes, everything you need all right cool, they, have look, at that you run it but. We also want to make sure that we give people the flexibility. To actually. Change the code as they want so change that from - upper - - lower yeah, and you're going to also get intellisense. - no. Providing. People with a real world experience that it expect, when they're running in an editor for example this, is really cool so think about this for a second folks you're out there you want to teach dotnet. To somebody you, say alright everybody we do a git clone a dotnet, try, and we can learn programming, and then we send that because there's kind of a gentle on-ramp, to Visual Studio as opposed to the download. Visual Studio first, yes. Kind of thing and then reboot and then wait till tomorrow or whatever I'm also seeing this huge trend an interactive, documentation. As well which we're able to provide interesting. Ok so I've already got a readme dot MD in my project, there's no reason that I can't use, a code fence yes, and add those features and then my Doc's themselves. Could become interactive, absolutely. I dig it how complicated can this kid it looks like I can do all kinds of interest you can do all kinds of interesting stuff okay. So we've got loops. And whatever I could probably bring in other packages, and stuff as well absolutely this. Is local though this is all local but, what, if you wanted to take your markdown, and make it into a website so, the documentation, would be then interactive, and, then you guys host it on address and we actually have an experience of that ok so then this right here interactive, dotnet is this the, same thing it's, the same thing and we have a tool coming up with a net, try that will be done net try publish, and we, will spin up with a bunch of HTML for, you ok so then this, is the power of the cloud this, is a power of the cloud with, the help of blazer, ah so when I hit run hello, world even, though it's hosted here the work happened, in my own browser browser, okay so I'm not calling out to some other service didn't.
Cost Me any money other than the website itself exactly, and you can see that like developer, tools okay, f12. Alright network so, if you notice over in console, for starters alright sorry we, see that Watson is initialized, okay. So there's my web assembly, right there and then, if we look at network I can see my, dll's. That are brought down so I'm running dotnet, in the browser so the power of blazer except you applied it to workshops. Exactly, this, is school to workshops interactive, documentation. Now interactive. Documentation, would be sweet but. I usually. Do interactive documentation I just get the nougat package make a console, app and I mess around a bit and I go ahead looks fine and that's, how I pick my NuGet packages and I think that's the way most people do okay but, we've been experimenting. With a nigga team on what, if you could just run, it in the browser, okay. This is just an experiment just an experiment, we need your feedback you can go, in at Marea, on twitter or, at me at my boss if you wanted to theoretically, yeah, like my boss and. Okay. So cool so what is this, so that is Jason. Net okay on the newt on a nougat website then you get website that looks like ABR then you get page but I want you to scroll down. And. We have an editor right in the browser so. I could go and have a playground, a workshop, playground, and go and and go to nougat maybe, get there in the home page click playground, and then try different new get packages exactly, what do you think about that. Now. We, we. Cannot stress enough that, the nougat aspect of this is just an experiment like you pull this together last week yes okay but. So, it could be done, in any number of ways right we had to think about that well we definitely need feedback people want to know about whether this is a good idea if you want this or not exactly, and the best way to provide us feedback is, to go to our github repo. Now. Is this the right URL for, our github repo no what, is that that is that's. The interactive, that's the interactive experience that people can go and try right now let's see where you're at get your repo is dotnet. Yeah there it is dot Nets github slash dotnet flash wolves huh, slash, try. Yes and this is where you can give us feedback at, the end of the week we hope to have that net try global tool available, for people to start using very, cool so I'm gonna blog about this I'm gonna make it so you can try the tool but what I want to see you do make. Workshops, make. Interactive documentation. What can you do with something like this yourself, yep very cool thank you so much for you on your team this is great thank you. What. Is something what a great example, of dotnet, everywhere like this is what I want you all to think about the idea that I could go and do, a workshop with all of you and we could all do it interactively, and say daunting, to try and, then we play and then we get Visual Studio code and we move our way off into there but the documentation, would be local you could even imagine that documentation, living, inside Visual. Studio code it's really really cool you can also see pieces of dot in a try and their, team's work, on the docks if you go to docks sometimes you'll find a dotnet try enabled, page it's pretty exciting stuff so, one of the things I wanted to show is speaking. Of dotnet. Everywhere. This. Is my low-rent. Solution. They wanted to charge me money for a guy with a camera so I figured I would just bring. This thing here uh what. Are some other cool places that dotnet could show up so, I work with my friends, over and attempt. Turning this on this look at this here tiny, keyboard. Pause. For effect. Still. Pausing, for the effect. Mm-hmm. Try getting through security with this friends. What, is that sir that's, nothing it's fine it's fine. Pay. No attention to, that thing. That I've got there. This. Is, a fun, thing this is actually a. Really. Cheap tripod. All. Right this, is called a CRO PI, CRO. WPI. It's just a thing I bought on Amazon it's a great little company, that makes these and what you're looking at is a Raspberry. Pi on the left hand side there that has been basically. Stuck, to a playground. Of fun, stuff. You've got your GPIO, pins up here and you can see that they, light up telling.
You That this button is connected to that pin and since, dotnet runs everywhere. We wanted to see how far we could take it now you know that well maybe you don't know you know that we have system, dot devices. GPIO. General. Purpose i/o the.net, three has got a lot of fun stuff happening, in. The. GPIO, space check this out I'm gonna go ahead and just run a dotnet application. On the Raspberry, Pi. There's. Our smiley, face but, more importantly. Thank. You I'm glad that's all it takes to get applause from y'all just mention tacos so, one of the things that's exciting about, that is. The. Community, around it check this out this is it the dotnet. Hit. Hub repository dotnet. Slash, IOT. And these. Are the devices, that they're currently. Working on look at all these great devices it's, a really really, active community of people that are going and bringing things in if you find a part from Adafruit, or our, friends at spark fun you get one of these parts working you can go and read the spec sheet and. Go, and write a driver. In quotes, a driver for it and then. Look at this. System. Dot device. Rotating. Then. There's the smiley face, you have to kind of squint to see the smiley face but you get the idea this is low-level, code this is the kind of stuff you'd usually expect to be doing in our dimino type of a situation, we've got dotnet, core running really great on a Raspberry, Pi which has allowed me to do all kind fun projects, make asp.net. Micro-services. Automate. My house with with.net. There was even a really cool DNS, server called. I think it was Tech tain iam that I wrote about in my blog it's an entire low, level DNS server and it runs on a Raspberry Pi with something, like a CRO Pi which is a really fun tool for learning and for stem you, can go and play with dotnet, even. If you aren't thinking of yourself as being a low-level, IOT person, and we, got to play with the matrix display we've got the LEDs working, it's really, really exciting whoops really. Really exciting in fun stuff and it's all real. Real. And, really blurry it's really blurry trust, me it works it's a real demo I, would. Encourage you to check that out and get involved it is baked making me very very happy these are the little things the little things to, have IOT, and dotnet core merged. Together and I lost the clicker thing. It's. Probably one of those situations where the glasses are on my face alright. Developer. Happiness, let's go with developer happiness, little things that make me happy where, is rich Turner where. Are you sure, come. Here. Rich. Is like what do you expect for me just, smile. And look pretty all. Right so. I have. Been hanging out here you saw Maria just left Andrea and I were at the command, line I love the command line I spend a lot of time at the command line I think, that Windows, is great but we're missing the boat when it comes to command, line technology. Yeah, it's awesome stuff having a command line so yes the year is the future, yes. It's the dream of the 90s is live in Portland so. Explain. To me why this is a suboptimal, a situation. And why you could make it better Oh switch. Darn. You. Computer. So. The command line does command line that we all know and love. It's, a rather, old application. It's actually been in Windows since the dark ages and one, of the big problems with the console is its, primary, goal is backward compatibility, so. Every, time we change some pets its primary goal we don't break yeah don't know it but it was originally introduced into NT to, run and estas scripts. Anybody. Ran on it ms-dos, yeah. Great beers like me dark, they're due, up back yep. So. This was essentially introduced to Windows to run ms-dos. Batch scripts and it's, still in broad use today we. Think we can do a bit better yeah so what, you did is you. Made this. Yummy, thing I'm gonna go and say dos but not dos. That's. What I called it we'll come back to that in a second so this is DOS. But, not Dossett yes timbi. Yeah and I can go and do something like that. Yeah and that's fast pretty quick right is fast it's drawing on your GPU now is, it yeah finally this is GPU enabled dos you saw it here first people. Thousand. Frames a second, so Windows Phone so drawers on your CPU which. Means if you minimize your windows, console windows your build will run quicker which. Is great cuz, you know it's funny yes I suspected, that right, I knew, I knew that when I run a batch file I would minimize it or I would do even worse this is so bad I would go and run stuff like this and.
I Go you know that feels slow yeah, so I go like this watch, and, shrink it down we draw less so, it takes less CPU and I think is it done yeah it's done it's, still going actually yeah so give yourself three percent faster builds minimize the console but. Not anymore not anymore okay, now we're drawing on your CPU okay GPUs, on your GPU yeah okay cool so this is an attractive thing and I noticed this right away because I tried it right away I held down control, and I. Scrolled. This. Was the first thing I'd beat the team up when I joined this thing can you make the text, do the zoomy thing because my eyes are stopping yeah and then because I always try every other thing I'm controlling, keys ctrl shift windows. All scroll, with, your elbow oh yeah, check, this out oops. That's. Not the wrong. What's. Happening you'll see it might be more difficult to see on the big screen but the blur and the transparency, adjusting, you can see my icons and. I'm gonna make it go back to the way that's control shift scroll yeah, I think that's pretty fun you know someone's, like why did you do that well why not because, we could because, you could so, now we're on the GPU now we're drawing everything using GPU and DirectX and direct write and so on now we can do fun things like blurry background this is a modern terminal. It's a modern terminal very how, will this be distributed, so we're, currently, with the the, other, thing about this is that it's currently open source we, just open source it this morning, we literally push the code during Kevin's keynote which is a little bit nervy on conference. Wi-Fi yeah but it worked so the code is out there you can download and clone the code today you can build it and run it locally we're, just sorting out a few things with our automated CI system which, will then see the the. Windows terminal available via the Windows Store for you to download as a preview. Self host and then we're aiming to get this out into v1 kind, of state toward, the end of the year as we can ok so I wanted to see how far I could take it so I'm doing a number of things that I wasn't sure if they were allowed first. There's a profile. Jason. Settings thing and you can go in there and I just made a bunch of icon and made a bunch of profiles, what are you sure the audience where you set those things up to these you define yourself will show a few Viet, settings, and I, went in here, and I'll. Go ahead and format that and these are not, only my settings, but. My color schemes, I like. A vintage cursor. And. Then I'm even using coming, soon a new, font that they're looking at awesome. In. A very talented font design to come up with a new freshened command line font yeah well fixed width fonts at work in vs code is yummy as well and then check this out, look at this I made, an Ubuntu, legit. I put to the jet yeah I should trade my pants on that is the bunch of the JIT profile, so then if I go here and I say. -. But not - that's the new font right if I say Visual Studio 2019. PowerShell, this will be PowerShell with the I think that's console us and. Then I hit a boon to check, this out, power. Line funding. Power line support so what's that about I can, go like, mount. If. I know how to type when no one's looking, ever. Has to look away omnt, sure I got, confused. System. In Linux. And, we'll talk more about that in a second it's fun okay so, there's there's. That I think. I've angered the Beast oh dear, what, I. Think. I'm still working on getting my blood sugar thing to work maybe, this warning you there's some challenges there I probably gonna die in a second so you take you I'll catch you gonna take over I can, control W yeah, and close the windows, yes which is pretty good bitch is that the last one one complete them at the applet we gotta fix no it's fine I mean it's your point whatever this is this is really, early code well so so early I wanted to do this check this out I thought it would be interesting to go and, mess. For the much so I put a bunch of emoji, right, into. A. Into. A loop, cause.
I Wanted to see what would happen so, now that. People are looking and it makes me nervous donít. Run watch the left-hand-side emoji. Madness, animating. Emoji so. Then I showed Michael, I showed Michael Crump and he was like well wait a second how far can I take this so Michael decided to write a pong application. In dotnet using. Emoji, the. Future. Is, yesterday. So, I'm pretty excited about getting my BBS, door games working on and O's again, so that's pretty exciting another thing I did from an experimental perspective is, I win and I had someone do this you know how you can go to shell Dodger, comm, and they'll go and make you something what, if you brought that to the command line I could say new cloud shell this, is an experiment, it's open source it was done by a very kind engineer on the team but. Now I'm saying connecting to terminal but I mean your terminal because I used your integration, points and now I'm in Azure yes. At, the command I didn't SSH in yeah this isn't that this is a creating. Of a of. A as a container instance, within the free shell, daughter comm shell terminal I've got my my my cloud drive right there I can. Go and do whatever I want to do and then. Close that and shut it down it's pretty fantastic now, it is one of the things I wanted to show about Ubuntu. Though, was we had some negative feedback, in the past about wsl, for. Real hardcore workers, this is this gentleman here my good friend Sam saffron, was, disappointed. With the perf because he was trying to run Postgres. Reddit. Docker. Ruby. And bring, up all of their very sophisticated applications, on disk or they go yeah so he tweeted that, he, was not too, were thrilled. With that he said I can't believe the tax that I've paid over the years and he, basically just sophisticated. Bit. Of work, time figure out whether this was a good deal and what. Was it about w cell one that was preventing him from being happy so the big performance, challenge, with WS 1 WS, R 1 is disk. IO. In. Terms of general, performance WS, L is about as performant as Linux on the same tin in terms of CPU and GPU and so on but in terms of disk, access we, really struggled with WS r 1 hmm so we thought we might spend, a bit of time trying to fix that so, how did you fix that so, in. Double yourself - there was also announced just this morning we essentially. Stand. Up a Linux, kernel. Instance, in the VM and. We run containers, on top of that VM in which, we run your Linux distros, okay, but I can make a VM now you, can and I don't really sweat it like I'm like that's too much pressure absolutely, but. That VM tends to be this sort of isolated, box over here that doesn't integrate with your desktop at all your you can't see its files for a while. To load it takes minutes, to load absolutely, so if you just close down that than to window for a second, well I can't it's doing a giant but. I open the other one it makes how long does it take. One. 1000, so that's about two seconds to boot a kernel, instance and stand. Up a new user mode instance, one, on top of the other from, scratch you know something interesting I put my code, that I'm actually running right now my Ruby code for him in in discourse, if you like here it's in home, scott discourse, but check this out, explorer.exe. Dot. And. This is where the different big difference between wsl and a separate, environment, in the VM is is. The integration, between your, local desktop experience. And the, Linux experience, in wsl we try and grease that wheel and try and make that smooth and as easy to use as possible mm-hmm, so rather than having these two completely isolated, environments, we have them be able to communicate does, that mean that you've been a very great, deal of time telling me not to do this yes don't, open these files don't play in here we said dunker spelunking, through the file system and try and access. Through the backdoor, but can I open, my profile, in this town yes I'm gonna right-click and open my profile they, guy and there it is that's my bash profile. We've essentially added, a file server to, the WSL, side of things if a server client to the windows side of things and allowing, you now to access the files are in your wsl instance as if, they were being shared by a file server and now, you can access those files from PS code visual, studio from sublime zoom, Emacs whatever it is that used webbot code mm-hmm, so in this case here I went and I think, this will work I think it's on port 3000. And this. Should be let's, go back over here I.
Fired. Up, see. If he went hang on for 2,000 I fired. Up Redis. Postgres. Sequel basically let me rephrase you know what I did I did I went to discourse. And, I went to the beginner's, guide to discourse, I'm one of the things that I've always been sad about is that I I'm, using Windows I love Windows I go to a website and then they Sai see a dollar, sign to, indicate the prompt, yeah and I think it's not for me no like it's like. Until. Now so, I literally, follow, this guide I went, into the, Windows Store I downloaded, one, - or you can get you know penguin, Linux or let's. Go ping, Gwyn penguin, yeah, I can get. OpenSUSE. Or whatever and I just follow the instructions and literally I did nothing different absolutely, because you're running Linux, on. The, Windows Linux, kernel, in. A VM with containers and all magic to make it all work but ultimately you're running Linux on Windows now yep so, we went and told Sam about this and we, did some heroic stuff Sam Soon Austria we might we might have had. To ship a couple of machines into them so what we did is we shipped him a computer to try it out because, he he. Was upset and we wanted to I'm happy and he said the boot speed of w cell - is nothing short of spectacular. Double-click. On the boon to icon within a second it's up from a cold run, post, reboot this is not fire. Up a VM and necesitan to it I wait for this thing to stop. And login and wait for it to boot to the desktop and all that stuff right and and, if you know Sam you know that he doesn't give compliments, lightly, yes best-in-class option for Windows so, if you want to do anything with this course or Ruby. Or any of these leveling, with any Nick's tools or. Build environments, build scripts debug, scripts tested, test systems all, manner of stuff yep so, I just follow those instructions and, that worked really really well and, the perf is is. Comparable, to running on a virtual machine very comparable to running in a Viet virtual machine which is approaching, native obviously not quite as fast he, did say that if you install Linux, on the metal yes then you'll get more perf yes but what are kind of perfectly talked about is it twice as fast so we're seeing.
Depending. Upon what, you're running and how disk intensive, it is if you've got some of its extremely, disk intensive, we've seen between seven and ten times faster. 7.7. Times faster, yeah that's, hot all right last thing I want to show you is what's going on, over. Here. Do. You add the old days when we used to ship power tools yes, power, tools, experiments. Much like this tonics like this to stuff that we don't have permission to ship. Swear. Rich darn, you. Now. Remember. What's, this thank you by the way it's, the first of some of the power tools that we're starting to cream I have always felt it was frustrating that I couldn't maximize, something on to another. Virtual. Desktop. Virtual. Desktops for me are one, of the hidden gems of Windows they're not, exposed, visually, that well but, it's so powerful to be able to have a desktop, where you might have outlook. And some Word docs that you're working on and then a separate desktop where you've laid out all your dev tools your editor your debug or whatever you got another. Window where you're maybe got some tests and some builds running yeah I'd be able to flick between them with a mere four finger swipe across your taskbar right other. People, on competitive, situations. Have had this experience for many years so why shouldn't we why shouldn't we why should we do without so, what we're doing is we're we're bringing power tool power tools back yep we're breaking all kinds of rules and an open source they are open source one of my favorite ones was I ended up holding down the, windows to be too long. Ever. Wondered, how to access the shortcuts, that make you productive on Windows would it be great if we could actually no. Burying along the bottom there reminding. Us to go Windows one windows two this is actually contextual. As well you notice that the window controls on the left says no action because, this is actually full, screen. But if I go like that now the window control is gonna maximize yeah, so imagine, how nice that's gonna be for a non-technical parent, to be able to figure that down as well yes, pretty cool stuff happening right now kids windows power tools thank you sir, thank you son. So. What's, new windows, terminal it's happening, all. The things that you can imagine are probably going to happen and if they don't they'll have some kind of an extensibility model, so you'll be able to make it happen I was already goofing around recently so I could make right-click, windows terminal, here if you go windows r and type WT, that's. Windows terminal it's, early but it's really really exciting wsl - coming soon, near. 100%, compatible with native Linux and it is fast fast, fast they are literally, shipping. A Linux kernel in Windows now and it's optimized, for W cell and it works really great and the memory usage is really, really great compared to a full virtual, machine and then, also power toys power toys is happening, you can see it at github.com slash. Microsoft, slash power toys open source and this is just a start just that one power toy is a start we're gonna think about other ideas bring other partners and friends in to go in and get involved in that now tacos. Where. Is. Says. Juarez are. You here sir yes sir what, computer are you in another computer did you put your computer back 14 you want 14 13 but I think my screensaver, might have come on. Okay. I'm gonna move. So. Scott, was, like hey you want to write something for me and I'm like yeah I got nothing to do I wanted, you to use the power of the, cloud and dotnet to, solve a huge problem because I took my buddy yeah and I know this guy and I can totally vouch that this literally, happened I took my Australian friend this actually did happen it happened three days ago I was with Adam Cogan, from Australia, yeah he and his daughter Ruby came down they they're here and they they wanted to try new foods new. Foods so, we went to Chipotle and. I'm. Gonna have to I know as a Mexican, I feel, like right. Yeah. I. Should have got him tacos again I'm a burrito and now he wants, a system to tell him the difference when you talk on a burrito because he doesn't like burritos he want what you knew he never wants to see a burrito again he's. All tacos, all the time okay so we need to solve this with machine learning okay so let's do it okay. I thought we would use ml net if that's okay please so I'm trying to put into a context that maybe you can understand right you're from Portland right yeah so whenever you're making like you're vegan kale salsa, figure you know if, you're.
Free-range Chicken tacos yeah yeah I'm saying okay like yesterday yeah like yesterday so basically, if you think of machine learning as the, blender that. Takes something inedible. Like kale. You. Know what I'm talking about right it blends it together and make something useful like salsa. Like salsa you're. Making kale salsa, with tumeric and essential oils of course right so when after it makes that right, then you have something that's useful yes, right and so imagine machine, learning as like. Kale. I'm. Imagining it's. Like the blender right yeah and then you'd put that data, which, is what our kale is you put into the blender but I mean something, good comes out okay so I so. I went and got you via. Away. Yeah a whole pile of photographs, of burritos, and tacos so let's give you an example all right so I have here in my training data set some pictures of some burritos, no major burritos, here you dose on the upper left that's, burritos. Here, that, is a border roll no. But it's really small so it's really, you know right so basically this is the kale yes this is what you're giving them a she learning algorithm to learn from your so it's chewing on these burritos Julia, you're saying this is a breeder and I basically use folders yeah and these are, tacos use these to train now here's the thing pictures. Of tacos I'm drawing not, even drawings it's a if, you're a dad a man you're looking at this you're like I know exactly what this is Seth, is gonna give me a folder oh yeah we assumed out here so i think i zoomed in too much that's cool like if you gave me a folder I can deal with two folders Ike and I know that much code that I can write so here's a folder and I basically go into it and I enumerate on a yield return so it's telling you these are the pictures of tacos all, right so let me show you the, actual blender. Bits because, this is ml net and it just what G a load. Images, yes. So make sure right here I'm loading the images and I'm creating this thing called the data which is loading, data into the ml net context and then, the blender happens, in the pipeline this is the blending okay so you built a custom pipeline, yes and every blender is different that's right so everybody's, different so in this case this, is like really innocuous, it's basically saying when you see the string burrito map. It to a number so I can understand you know what to think about it but you're not mapping to a number you're mapping to the name of the folder yeah the mayor of the folder and then it's gonna say well I need another so that's other nice and then this one here says I'll get load of the images, this says resize the images this says extract, the pixels and now because ml net is doing shallow learning which is not bad it's not like it's it's not deeply into, itself it's just like it's. Emotionally, shallow um yeah yeah self, centered learning, teenage. Angst learning, basically, yeah so basically there's certain models that are shallow that learn on the surface, of the things and there's deep learning models so basically I took a deep learning model from tensorflow, and I, fed the pictures into it as a special, custom, blender that I brought in like your ninja okay I think that your analogies, are breaking down but please continue okay so this is what this blender looks like is I want you to see what, this looks like so basically this is the tensor flow model that I'm loading we're, looking into the AI right now so don't look too closely because, explosions.
Right So basically it's feeding the pictures into this and then, feeding it all the way down and doing a lot of math leanness, blender. It's simple it's so easy you can do it too I don't. Have to ever look at that well you don't cuz I only know dotnet. So basically it's gonna feed the picture through this model and then we're gonna do some ml net here, right, oh well the one line of code right is that one line. This. Is the actual machine, learning, code but. Because we liked it I. Am, touching okay so basically we're doing this here and then we're gonna run it so as it's throwing I shoulda read it first but basically it takes about 60, seconds to run this code it'll take all of the images like 800, of them it'll use this thing and if you're wondering why I'm doing this is called transfer, learning because basically I'm taking learning. From another AI and I'm bolting. It into ml net and this takes about like oh okay. So are you actually doing the work here or is the cloudiness we talked about this a little bit earlier you machine, learning is one of those things where it can it's this is my opinion now it gets to 80% really fast and then, you just have to decide how, long you want to take to get to 90 plus so in this case I'm just running it here, because it's doing transfer, learning and it's really easy and it's just gonna do it like in 60 seconds you're gonna be like accurate, yeah. 90%. Accuracy okay, that's about as accurate, as an Australian at Chipotle so take 36 yeah but about as accurate so notice that these are the data is in the bowel folders, like yeah I'm good burrito a breakfast, burrito I mean really who who, can say. Spend. A lot of time you know because I wanted to build you a really good application to, show you this and I appreciate that you put work into this a lot, of work so I'm gonna go ahead and set this as the starter project in control f5 like, I said a lot of work went into this demo, here, you. Give WinForms to a data scientist and that's what you get basically. That what I need to do is I need to load up the model they know because when I when I did this training I basically. Saved the model out to a file okay so the trainer made the model the model can then be reused and given to myself like an asset like like a like a drawing file or an assembly something's I run I take it out basically what I'm gonna do is I'm gonna load them load, the model here so tacos. Model. And now I'm gonna load some pictures, of. Images, and it should guess if it's, the right way let me go to the model of it yeah so I reload them all you know you click the run below I clicked the wrong button I don't want you to fail oh I care that much okay okay so now I'm gonna load them all again to show you the super malodor, picture go, to Val I'm gonna pick a taco. And it's gonna look at it and say you know what Seth I think that's those are talking say our tacos and then I'm gonna go here to load picture and do a burrito, here. And see, that it's Bob Rios now you're probably thinking that this is really hard code but, like I said I spent a lot of time working, on this for me because again you. Called me last week I. Just. Thought it was a cool idea alright so to load the model it's basically, hang, on ml. Context. Model dot load create, prediction, engine that's it and once, you use a message, they you didn't hide it in some giant, files yes/no. Image it's, like the the thing I'm mapping from it and this is thing I'm mapping to and then when I'm loading it when, I'm using the actual model I do this transformation here on line 32 engine, dot predict new image data that's it I did it so that's.
Pretty Cool and to be clear you used. Ml. Dotnet, which we announced and we know is available today the open-source cross-platform right. You can reuse your skills but you, can use tensor flow models java learning deep learning all the learnings use the learnings all the learnings and then we also saw Scott hunter show the model builder which is a simple UI tool to jump jump start this process it's really cool I love it a lot and next time give, me a little bit more advance time I will see you later for taco security thank you sir alright. Now. As. As. With all demos and as with all things I, don't know if things are gonna work and I don't know if things are a good idea but one of the things that I wanted to try because I appreciate, you, the. People is. I wanted to see what, kind of damage we could do with, dotnet really, everywhere when I say down everywhere I don't mean necessarily, raspberry. Pies I don't, mean this week I mean I mean we. Were more, like you know that guy in the professional, like Gary Oldman I need like a gif, of me saying everywhere so I called my friends at misty. Robotics, to see what kind of trouble we could get into with, a robot named named misty do you want to help me out here oh. Hello. Friend hello. You, can you can help me if you want to come out and help me not not break it, check. This out this is misty, from, misty robotics, how are you sir I know you're nervous that I'm gonna drop her aren't you yeah. You're afraid right he's like don't don't, anger her she's, fine right yeah don't. Be angry so. What, I wanted to too is misty. Runs Windows, IOT, core, and I've, got my low-rent, camera. Here, that's. Misty, sized. See. If this actually fits I don't think I actually practice, to see if it goes that far. Hello. And. I thought if I was going to do tacos. That I need a diet coke. So. I need to train the robot with dotnet core to, teach me diet, teach. Me a teacher to bring me a diet coke so. There we go let's look at that so, hey misty. Can I have a diet coke. The. Usual, in the form of there's. My butt on a giant screen. So. Misty can connect to the internet mister, can take pictures. Can. Talk to Azure cognitive, services. Tell. Me stuff about myself, you take something. There. You go. I've. Usually been described, as a blurry image of a man I. I. Haven't, felt this insulted, since I generated, some code in Visual Studio and it said this code is generated by a tool. Misty. Has got Windows IOT core, at her heart she's got all kinds of abilities to. Have and you see that they actually 3d, printed, me an arm. To. Hold the soda pop. It's. A whole platform for having fun with robotics, and learning about things in different languages, whether it be node or incoming later this summer and dotnet and they. Sent me some sample. Code, to. Go and look at that, I. Believe is, sitting in here, build. Misty. Hello. Bill and. This. Is so exciting to see dotnet, everywhere, I like, being able to go, and, take.
My Skills, everywhere. So here's an example right talk. To the different sensors, register, events Misty's, got a whole ton of different, events whether it be face recognitions. Bumpers. There's different stuff that you can touch, okay. Or not touched. She. Does not like anyone, to touch her hair, you. Can move her around and do all kinds of things a whole platform, to learn about robotics. And then apply them so who knows what one could potentially build with with misty if you see the folks from misty robotics running around be, sure to say hi to them all. Of this was a wonderful, experiment, and I appreciate, you spending time with me we're gonna go ahead put up in a gist at aka, dot. Ms slash, all the, dev things, code. And more it might take a little while to get those things updated I would, encourage you to take a photograph of, this, slide. For some of the related, sessions and be sure to visit the booths you know that this is a very booth. Very. Booth heavy conference, because we want you to talk to the real people that build the real things will, bring misty up front and you can talk to the friends that from misty robotics that helped us will, have code for the tacos demo, will have tried, out net information. Coming out Thursday, or Friday later, this week if you see myself or Maria walking around please, be sure to give, us a chat remember. Of course to put, your feedback, in the thing because, my boss reads it, and. Thank. You very much I appreciate, you all thanks, for hanging out with us today.