it's about time we did a toolbox episode on BOTS hi welcome to visual studio toolbox I'm your host Robert green and joining me today is Sam bazoo of progress hey Sam hello welcome to the show welcome to the cozy confines of Studio B and that's nice it's changed but it's nice yeah we're just gonna sit back and chat about BOTS it's about time now so bots is one of these new things that there's a lot of buzz about a lot of cool demos of bots running in Skype or you know BOTS calling and making appointments for you and there's just an amazing amount of stuff that's going on and that's all cool of course but what I want to focus on is you know us as traditional enterprise minded business developers whether we're doing desktop or web or mobile or whatever what does it take to build one of these things because it turns out it's not that hard to get started and then what are some of the uses that we might think about where we would actually take advantage of these in the types of businesses we're currently in mm-hm so we're gonna do that this is a two-parter so obviously this is part one of two so tell us about bots let's jump in yep let's switch to slides so we can talk through so what you see I think over the last couple of years is human-computer interaction is evolving mmm-hmm be it through a RvR be it through any other ways and you see the impact of AI so we are not only interacting differently with computers we're also expecting different things for computers and this is where BOTS come in and BOTS aren't new they're about maybe two three years old now but they're evolving fast so I think it's kind of the next frontier of apps so let's kind of dive in so as Cortana Alexa Syria those bots sort of their agents okay let's dive in all right so Robert already introduced me I'm Sam Basu I'm a telluric developer advocate at progress I kind of focus on the dotnet side of things across web desktop and mobile and BOTS is something that that actually does excite me nowadays so I think one of the fundamental questions we need to ask is what exactly are we talking about because yes BOTS is a very generic term we're not talking about robots we're not talking about like the spider BOTS that Bing or Google used to kind of crawl the web there are different types of BOTS what we are focusing on for enterprise application in particular are chat BOTS more conversational BOTS bots that we can actually have a conversation with be it over voice or be it over text and what can they do for us how smart can they get so actually automate things for us and can actually help us okay yeah one of the fun things that I've actually seen many people do whenever we talk about conversational BOTS back in 2013 I think there was a movie that came out it was called her it right hook in Phoenix in them in it and it got a little weird quickly it was about conversational BOTS but this lonely writer he started having a relationship with his conversational bot because it was so smart and it kind of got him very quickly right so that's kind of the AI aspects of being a bot and how smart it can get so let's kind of break down what exactly is a bot and how we can build it okay okay I think one of the reasons why building conversational BOTS is interesting and challenging and fun in a way is because we're all trying to make a cake we have a lot of ingredients there is no fixed recipe because it really depends on what exactly you want your body to be okay so you have to kind of break down what are my ingredients and how am i exactly going to build it so it suits my needs so let's kind of break down where conversational BOTS stand today and we're possibly looking at a slice of it but bots are apps okay that's fundamentally it I mean these are web-based apps that we can communicate over HTTP and they can be housed in different things but they're fundamentally apps but there are complex apps because they have lots and lots of integrations that's what makes them smart so a bot by itself if it was just talking to you and had no brain will be pretty dumb it was only going to go off if else statement and a bunch of rules and not be able to a whole lot so the real benefit of having a bot is all of these integrations that make it smarter okay so that's what we're talking about so there is a lot of plumbing there is a lot of different things that make up a bot so to your point are the voice assistant spots in a way they are but they are in the front end to the intelligence that's behind so when you talk to Alexa when you talk to Cortana or Google assistant you are firing things off over voice but things that you are firing off beat and as your function wheezed in an Amazon lambda that's what the intelligence lies so those are BOTS okay you're just using an agent to get to the bots yeah and I mean with Cortana you can type it in so I mean essentially is a conversational bar over over text right yeah so these are agents and then we talk about platforms because this is where BOTS can recite and this is kind of a big benefit of having a bot it really is platform agnostic what you're building is very fundamental and there are multiple platforms who can all talk HTTP so you can have your bot house inside of Facebook Messenger or filio or it's slack or team wherever your users are you can have a bot kind of integrated in there so it's easy for them to find it and talk to it okay so these are the platforms and then we have agents so like we said BOTS by themselves don't do much it's what we do behind the scenes with boss that makes it interesting so first up is there's got to be some sort of rules engine that tells you about what to do what questions to ask what path to kind of guide you down as we're having a conversation with your bot next thing is natural language processing if your bot is literally going off a bunch of strings to say find me a flight out of Seattle then that's the only thing it will understand if you say get me out of Seattle it's going to get confused but that's kind of how we naturally speak to each other so this is where natural language processing comes into play and all of the voice agents do it as well so when you say get me out of Seattle they find so it's an utterance intent what exactly are you trying to do like get a flight out of Seattle and then we'll find the parameters like what airport are you flying out of and then it's going to trigger the corresponding contextual thing that's going help you flying the fly so in that way it's it's a step or several steps beyond just voice enabling an app right like you could voice enable an app so that instead of having to pick from a menu choice or click a button you could say open the report open the monthly report right right so at that point there's one thing that the app does it opens the monthly report there is a command and you say open the monthly report but if you went in and said what happened last month then obviously the app has no idea what you mean because you didn't hardwired in a bunch of commands so the the beauty of the bot is that it can be trained to be more natural more cognizant right of what you're saying instead of just expecting if you say these five things I will do these five things if you say anything else I have no idea what you're talking about okay so there is a command there's a thing that the bot knows how do you know it's how you get to it because I think that's that's an important distinction because I think the very first time I saw a bot I was thinking oh well I can voice in and I can voice enable apps and I've been able to do that for a long time what's how is this better right so it's a bunch of things that your bot knows how to do and a bunch of different ways that the user can come to it okay yep so that's a natural language processing then there is some state management there's some logic that you will have obviously behind it what if you told you about order me the pizza that I had last week right now by nature bots are supposed to be stateless like it's one turn-off you saying something and the bots getting back to you but how is it going to remember if you what pizza order last week so you can actually persist some state in your BOTS and that kind of goes back to wherever you want to store your data and how you want to authenticate and authorize the user but it's possible to maintain some state so the bot is more of a conversational and how do humans will interact sure yeah so these are the things that kind of make up the bots intelligence and then they're about frameworks because we don't want to do everything from scratch right difficult so there's Microsoft bought framework which which we'll talk about exclusively today I actually have not played a lot with others but there's there's a lot for sure there's Facebook what AI Amazon makes Lex IBM makes Watson and dialog flow from Google so there are lots of these frameworks they all are about the same and they have their SDKs they have their ways to kind of bring you on so all of this is kind of geared towards helping developers build BOTS ok that's it so let's kind of dive into Microsoft bot framework and then see what it can do for you before we do that to answer your initial question of what what can this do for enterprise apps mm-hmm so yeah all the skype bots are fun but when it comes down to what line of business apps can fit as bots it's a lot of little things that can be automated workflows and I'll give you two classic examples where we actually have customers doing this we have a hospital where people call in and they want to schedule an appointment it's a very basic task and yes somebody has a calendar open every doctors calendar is in sync and at that point you're really just choosing a bunch of things and click and you're done you have an appointment that's something that can be automated and we have in a hospital that actually has it sounds bad but they've been able to cut one human and kind of having two other things but over like six months they were able to train their BOTS enough that is good enough to schedule simple appointments it's all about like what can we automate before you have to talk to a human being right yeah another example is support systems if you have like an IT Help Desk that's trying to help you kind of go through problems and roadblocks maybe the initial things maybe your basic problems can be dealt with with a bot it just knows the basic things that can go wrong and then if you're having more problems than transfer to a human being okay so some some common examples so that's going to talk about the Microsoft side of the world because this is where we live and breathe so this is what such a kind of opened up a couple of years back conversation as a platform this is the next interface this kind of helps AB developers have ways new ways to interact with their system as an end user so it's it's a new frontier for us the benefits are obvious we get to have increased productivity we have to we we are able to reduce the time that a human has to spend over just trivial things things that can be automated and the big benefit is being able to reach customers where they are at so if you are already plugged into messenger or Twilio or slack then we'll meet you there you don't have to install a new app we just kind of have a part that's embedded into what you are that's where we stand that's the benefit of pause okay okay so now let's dive into what we can do with it what benefits we can get and how we can start building it so based on who you ask Microsoft bot framework is a big thing I think it's comprising of two fundamental things one is bought builder this is the SDK this is how you actually build your apps your bots you don't want to do it entirely online unless it's something super simple you want to have it locally and that's how you will have it in your IDE and you code it up and you make it work and you test and then he'll push it out to wherever you want to have it hosted and there is a developer portal which kind of helps you get started it's gets you the SDKs it's a place where you can actually host your apps as well a host your BOTS and then it has all of these little connections which help you get your app into slack into Skype into Facebook those things are really nice and then this is just a bot part of it and then we get into what's called cognitive services which I don't think it's really a part of the bot framework at all it's it's AI suite right but this is what really gives your body intelligence these integrations I think we are about maybe 30 or so restful api is right now you don't have to be a data scientist you don't have no AI you're literally making restful endpoint calls to use cognitive services but these things can be trained if you are into machine learning a little bit and then your bot starts getting smarter and smarter okay okay so that's where we are cognitive services these are Microsoft slides but we we know what they do it's a lot of things it's vision it's speech it's a big part of it is latch language Louis which is learning natural human interactions language and an azure is very very good at this so all of these api's are part of common e-services and this is what helps us make our BOTS smarter okay yep that's what we're going to integrate with I won't go too much in details but just to kind of give you a hint of where things are at and then there is a Shabbat service so you don't have to use this essentially a bot is a restful endpoint you can have it hosted anywhere you want but this comes bundled with a whole bunch of goodness that kind of helps you get started quickly helps you have your bot nice and hosted easily and then have all of these connections so you can put your bar anywhere you want okay yeah so that's the adabot service it has those SDKs that we talked about and it has templates it has integrated ways in which you can test your bot and then you can deploy our bots through the channels and then once you are successful building your bot and having a deployed then you kind of take it to the next level let's do see ICD pipelines let's do as you're functions that trigger other things based on what your bot is doing so all of those extra things can be built in and how you scale your part based remand and so okay so as you're Bob service is a very compelling offering when you have to get them get started with BOTS okay so that's enough slides I'm getting bored of slides altogether so let's let's look at some demo all right so the first place I will point anyone to go to is do a search on bot framework and you will end up land on dev bot framework comm this is the landing page for Microsoft offering work and it has a lot of goodness to it so take a look at to what it can offer and it talks about all of your audiences all of your channels and how you cannot get started with documentation this is actually really really well done this is a Shabbat service that you're looking at but some of it can be local so we're going to walk you walk through some of these things that you can do to get started so notice how right out of the gate you have different ways of getting started you can do bot service which is directly in Azure or you can be local in c-sharp and og okay so before we go in right now the Microsoft bot framework is at v3 mm-hmm we started about 2016 so we are at v3 right now v4 is what's coming next and we have a preview bit of it and v4 is substantially different actually in some ways but we will talk about v3 because that's the present stable production release but v4 is coming sometime this year are already next so in terms of languages and programming IDs and and tools that you can use to build your bot you are looking at C sharp and nodejs right now okay so pick your poison C sharp or JavaScript and then go at it in v4 you will be able to do Python and Java okay but we're not there yet okay so this is the best place to start and this is kind of guide you through let's look at the Azure side of the story so I'm going to go to portal - accom so this is a sure and if I make it a little bigger so we can see if you're going in here and say create a resource what you want to pick is a I in machine learning and then in there is a whole bunch of things but you want to pick web app BOTS mm-hmm once you select this it's gonna ask for a bunch of things what's your bot name where what subscription resource group you can create a new one if you have a whole bunch of bots maybe you kind of group them into one resource where do you want to have this hosted pricing and and so on templates we'll talk about that in a second it does use some address storage maybe the state management in particular does use Azure storage app insights and so on so you kind of set this up and then you here to create and it'll go ahead and create a bot for you so instead of having as you're kind of waiting waiting on Azure to spin this up let's kind of look at what we have so here's a simple bot that I have and I have not changed a word of this it's just purely what the template gives you but this thing is spun up it's called the the Sam echo bot so it's just a simple echo engine but this thing is spun up and it's hosted and hosted in a charade now so this is what you will get when you hit the create button so before we even look at anything else if you go do this test in a web chat so this is a bot that's ready and it's deployed so when you hit that test it's actually gonna bring up this little console it looks like a little web chat engine and this is where you can test so I can write things here like hello and it'll it's gonna come back and said you said hello right so we can say more things hi from Redmond it's gonna come back and say you you said - Redmond so this is literally a echo bot that kind of repeats what you said okay okay but it's a quick and easy way of you being able to deploy this and be able to test this right away so you know exactly how how your app is working so this is what's called the web chat and if you are using this and if you're using this from a web application you can just kind of plant this and embed this as is so this web chat can be taken and embedded in your verification so all of this chats functionality is available from your web app it's just one measure you don't need to know about it it's just a web chat okay okay so when I go into this thing called channels this is what makes apps interesting this is where you get a whole bunch of things that are easy to configure web chat is already running which is what we saw and then Skype this is another channel some of these channels are kind of featured and already configure for you like Cortana Skype they're very easy to get started same with teams if you are going to Facebook Messenger or slack or Twilio there are some extra like authorization and things that you have to do to make sure your app is registered with Facebook you're carrying acts like authentication tokens back and forth but it's not that difficult and when you kind of go through this Wizards they kind of step you through like go register your app bring back nap key and have it set up but essentially this is a restful endpoint that knows how to get an HTTP message from you and then echo back what it just said okay so you notice the Skype thing here which is also the same Bart running in Skype because I already went through this but what it does is let me pull up Skype show essentially that echo bot now becomes a contact in your skype list so this guy here once you configure it and open up skype it's gonna say hey you have a new contact so your bot now becomes a contact so you can talk your bought just like you talk to a human being so in here we can say hola it's gonna come back and say hopefully you said so same exact part that we saw on Azure through a web chat now it's not a venture it's part of Skype now and this is the big benefit that you get with all of these channels because you can deploy your functionality in a platform agnostic way through whatever channel your user is using okay yeah so that's just just a Skype app Skype channel there are other things you can do like obviously Skype for business and slack and Facebook Messenger so this is the nap that's running let's take a look at build and that'll show you what it's doing behind the scenes so it's saying hey we have an app a bot it's running in Azure but you have not made any code changes yet you literally haven't even seen your code you went from a template and you said give me a basic bot and this is what we spun up for you there is some code behind it how do you want to work with it so you can say I want to download the zip file which is your entire solution can download it a zip file you open it up in Visual Studio and then when you're done with your changes you push it back up - that's one way or you can say I actually do want to do continuous deployment engineers bills and deployments so this is where you say no I want to push my code to github or VST s team services and then when every time I do a push and I commit you do a build and even I should treasure so you can do CI city but if you are working with something super simple like this one you can do the online code editor and what that does it just opens up your solution inside of a browser and if you kind of recognize the look and feel of this visual studio code it's actually aware that right it's an electron app so you kind of see that shell you see the same code intellisense and some of the benefits that you get so this is what as you created for you when we said file new project and then create a new bot this is what it did and it's gonna say hey you can change things here when you're done just hit build CMD we can build it and deploy it back for you so there's a whole bunch of things in here that are not important the only thing that's important here is this echo dialogue CS this is literally the one file that's controlling what your bot does so this is going to standard for any Microsoft bought framework bot so there is a message received this is fired when your bot receives a message from the user so the users say something it comes to us and you can actually reset it so you'll notice that we actually have a counter that counts how many times you say it and then if you say reset it's just gonna reset the counter so there's a prompt to make sure you're you're confirming it but otherwise it's just gonna say contacts start post async you said that okay so this is literally the one line of code that's echoing back what you're saying that's it that's the one so just one line that can echoes you back what you're saying so this is a bot that's deployed when you go to a sure and just do file new project give me about service ok so this is a bot because it's built on the bot framework but it's not a bot because it only does one thing yes ok so if this is all you wanted then wrapping it around a bot maybe a little bit of overkill yes but this is a nice template to give you some basic plumbing and then you can build on top of that but I mean this is a good starting point because not only are you creating a bot you're also hosting it in a sure and you already have those channels that are configured so you can put that bot in Skype and slack so again I would point people to the documentation which is really good if you go through the QuickStart here this is what we did creating a bot with the bot service but if you want to get the bot builder SDK then right now you have dotnet and nodejs so if you look at what the dotnet side of the story is you need vs 2017 and then you need the bot template c-sharp I mean it's a template extension that gives you this template simple echo bot mm-hmm so you'll get the bot framework and then you start with that and then it spits out the same code that you just but just in c-sharp and it's it's local to you and then you can test you about right now this simple bot is just web app so you can kind of fire this up now is Express and run it locally and then we'll talk about a different type of way in which you can test your bot that's the emulator so same exact idea you can do it with a dotnet and c-sharp what I like being on a Mac today is the node.js side of things because if you're in JavaScript you can do the exact same things the bot framework is time from agnostic that way so what this expects you to do is have NPM installed and then you get this part builder package essentially so it has all of the bits that bot builder can do for you so let me show you what that looks like so I'm gonna go in here into a folder and bring up my terminal alright hopefully this is big enough so I'm going to go into my folder here this thing is called the node echo bot and if I kind of fire this up if I say node fjs I'm firing up the app you don't see in it anything because it's just a console app but I can say the same exact things mm-hmm so it's just echoing back what I say so same exact idea it's just running locally in a console app so if you look at what this is essentially so I'm going to fire up vs code and look at the same folder essentially this being a node app we did a NPM in it so we have some package JSON we have the node modules in here but this is that one file that's making the bot work so essentially with node.js you have dependencies so we're depending on the bot builder and we're saying we are building a console connector and whenever you kind of fire off the message received thing we're going to take your text and kind of said you said that okay one line so this is no js' this is pure JavaScript running on the server side or wherever you have it hosted but it's it's your bot written in node.js now this is just local this is a console app they kind of step you through there are some extra packages called Resta Phi which kind of helped translate this console app into a end point because the bot has to be reasonable in mind so if I do an NPM install of rs.25 which is what the docs will actually walk you through so this is Resta phi is what we're using it's a very simple package that kind of helps you make restful endpoints out of your node.js code whatever your app is doing so we're using this and then once we have it we can change a little bit of code here this one is requiring Resta phi and same bot builder but we are creating a little server here so we can host it as a restful endpoint and then we can take into the cloud or whatever web endpoint it is that's our our port number and then we are creating a chatbot the app ID and password we'll talk about this so every part that's deployed to that robot service has to have a unique identifier okay and as your create that for you but otherwise it's just gonna say you said that so if we actually go back and run this now instead of app jeaious let's run node restful app dot j s this one said hey I'm not a console app I'm running at this port because you use Resta Phi so I'm running it as a restful service on 439 78 so how do you test this you can go to your browser or you can use this little thing which also comes with the bot framework this is called the bot framework emulator it looks kind of a little bland without having any inputs here but this is a local emulator that will help you test your BOTS locally before you're ready to deploy it to whatever service so in here I can actually go to that same port that we are on again it's going to ask for app ID password you can skip it for now you can test this locally but once you have to go to a show you do need the app ID so this is the exact same app and now you see that working here in the inside the emulator so this is the restful endpoint I don't have it hosted anywhere but I'm able to invoke it and the last thing is this one kinda shows you all of the JSON that's coming back and forth about service and and you so this is a super simple emulator but it does a lot of things and actually the emulator on Windows is a little more sophisticated than the emulator on Mac because one of the things that you get into with bought development is kind of conversations and you have to test your conversations and sometimes you have to kind of start midway in a conversation to start so it's like a little bit of template where you can pick up a conversation as just simple JSON and gonna start Midway and start testing so it'll let you do all of those things right yeah so that's the emulator that's one way of running it so let's let's close this that's just a quick example of doing it locally in no chairs let's kind of go back to Azure and I'll show you the other side of the story here so this was our echo bot so let's go home if I did a new resource again if I did a web app and then you look at these templates so it's not just the basic template which you can do it comes with five or so templates which kind of help you down the right path of building a bot first thing is formed this is one of the most commonly used templates this is where you have to order a pizza or you have to book a flight out and those repetitive things because essentially when you do this on your web applications today you are going through a wizard none of this is new right it's how you want to interact with your computer are you more comfortable doing a more natural conversation rather than just clicking around on your website okay so we can kind of walk you through that wizard in a bot so these are like a series of steps then language understanding this is where we're actually going to call into Louis in cognitive services because this is what actually understands what you mean when you say natural things okay so behind it it's going to be an azure Community Services app which has to have its own app ID and it's needed it needs to be registered and then that's when you're going to have to train your model so when you say booked a flight out of Seattle what are the 20 different ways in which you can say it so they're your bot understands okay and then passes it back to the bot so essentially what we are getting is from the bot framework you are pre-configured to call in to Azure cognitive services and then as your community services makes sense of what you are saying and brings it back to the bot and you can do this from C shop or no js' okay so just a quick example of the form thing which is very easy to look at I do have a form bot here which is called the sandwich bot because that's just a normal example so let's go ahead and look at this thing here we can test this in a web bot or web chat window so here if you notice the little messaging here I can say hi I'm up here and the bot knows that it's a specialized bot and says hey it looks like you're trying to order a sandwich because that's what I know what type of sandwich do you want so these are now Pickers okay so you get to pick what you want I would like a steak and cheese now it's gonna go through a list of things now you're getting two rules right so you said this then that then this then that so and you can kind of back-trace sometimes if your user does not give you the right response you can say oh I didn't understand that I wanted this from you so you can kind of go back and forth a little bit so 6-inch sub what bread you want that and then within breads with in Italian breads you have two types what do you want what type of cheese so these are all Pickers then you get to pick a whole bunch of things so these are like just numbers that you can pick cucumbers what type of sauce do you want let's do honey mustard and that's it so it's essentially said I went through these six steps with you and I made you choose things every step and you gave me this sandwich and once you are ready is this your selection you said yes and then said okay that's your sandwich I'm going to send it off to the shop and they're gonna deliver whatnot okay so just a super simple way of using the form template which actually kind of gets you quite a bit into these like flows okay how to ask the user and if you look at what this does for you I'll give it a second all right so now this one has a little more stuff to it so there's a model which is our sandwich this has all of your options like what type of sandwich what was it what type of bread what type of cheese it's all in here and then you have your dialogues as to how you actually control what you ask the user that's message controller so this is where your tasks and your your your post and you your awaiting the message from the user all of that is going to code it up here and then you kind of let bot kind of drive the conversation as to what exactly it needs to get all the information from the user so we can go about it so all of this is kind of bundled in and it's part of the template that you get it's really easy to call into most cognitive services like and good examples of this are like vision api's if you have to have a bot that knows how to understand or make sense of images from the user you hand it off you take the image you hand it off to the azure Community Services vision API we have another customer of ours who uses the vision API to do quality control on shipping so they have a little camera that's mounted on top of shipping containers mm-hmm and they do quality control as inside going out of their warehouses you can also do sentiment analysis with with common services so as you are talking to your bot you can kind of sense that the user is getting angry right and you can sense his sentiment and say oh maybe we can do other things to make you happy and so on so all of these things are intelligence that you're adding to your bot and this is what makes BOTS smarter and they kind of let you automate workflows so this is this is where we are this is where we start some things that I really like pointing out is the thorough documentation that the bot framework has there are tutorials on how to do just about everything let me show you some things that are really interesting the concepts here let's do Congress services language understanding let me do a how-to I thought it was really nicely done they talk about channels and the thing that I was trying to get to is how you can hook this up to language services that's something we'll do in part two yeah we could so essentially I mean just just start here essentially is what I'm saying okay and they have documentation on how to use vision API and language services all of these things that help you go from your bot to other places that give you about intelligence okay that's it so bots are nothing more than apps you can a restful endpoint but it's platform agnostic so you can put it in whichever channel that your user is using and start automating little things in your workflows that don't need human interaction very cool yeah yeah I mean if you look at some of the most common things that we do on most websites it's a bunch of steps that we follow wizards and this is where BOTS can come in and make it more conversational and more natural right yeah all right that was a good introduction we'll end it for here in this part and we'll come back in part two and and see more about how to build them absolutely so again this was all about BOTS you can find me at SMI div that's my social handle on Twitter and github in everywhere but thanks for watching all right and we will see you next time on visual studio toolbox [Music]
Wednesday, 23 October 2024
Brad Smith Addresses Apple Case
We at Microsoft support Apple and will be filing an amicus brief to support Apple's position in the court case next week. And I believe that Apple is making an important point that, in fact, connects directly with the kinds of issues that are being considered by this hearing today. In the Apple case, the Justice Department has asked a magistrate to apply language in the All Writs Act that was passed by Congress and written in 1911. The leading computing device of that era is right here in front of me. It is an adding machine that went on sale in 1912. Put simply, we do not believe that courts should seek to resolve issues of 21st-century technology with law that was written in the era of the adding machine. We need 21st-century laws that address 21st-century technology issues. And we need these laws to be written by Congress. We, therefore, agree wholeheartedly with Apple that the right place to bring this discussion is here, to the House of Representatives and the Senate so the people who are elected by the people can make these decisions. Well, thank you very much. Do you have any other props? (Laughter.) I'm out of props. I was surprised to see that. But, believe me, it is amazing what you can buy on the Internet. (Laughter.) I've heard that. Would the gentlelady yield? What's the operating system on that? What is the operating system? (Laughter.) It's called a hand crank. I'd like to follow up because I actually very much believe that the encryption issue should be before Congress. We've already -- the Judiciary Committee has started that process. But the Justice Department alleges that this is just one phone. And I was surprised to hear that when we heard the district attorney in New York saying he had 175 phones, and then we found out there were a number of others where we're seeking to utilize the new operating system that the court has ordered Apple to devise. Do you think that this issue goes beyond that one phone? Well, every case, obviously, is always only about one case, but every case, obviously, has implications for lots of other cases. The real concern here is, actually, the law and the implications for the future. And the only way to get the law right for the future is for Congress to act. If I can just close, Mr. Chairman. I think -- I started with the TPP, the international standard, and that's important because encryption keeps us safe. It keeps people from breaking into our data systems and causing problems for us -- either hackers or terrorists or enemies of our country. And the idea that my data would have to be open to hackers in China because of a specific case is really what I think this is about. And I thank you very much, Mr. Smith, for answering. I thank the gentlelady. We now go to the gentleman from Pennsylvania, Mr. Marino.
Boosting your Xamarin Development Productivity
all right we have Maddy Maddy Lachey is here and you're gonna show us xamarin so productivity in xamarin I am yes awesome so whenever you are ready great yeah so I'm Maddy Legere I am a program manager on xamarin I work on tooling and most specifically xamarin forms tooling but what I am going to show you today are across your whole development lifecycle a bunch of different ways that you can boost your productivity when making your xamarin forms and xamarin apps so i'm gonna share my screen we're gonna do some slides real quick I only have a few only have like 30 minutes so I have a bunch of things to get through and then we'll do a demo some stuff towards the end give you some links close out my face on top Oh minimize that by okay and then hey present okay this is good channel 9 oh good yeah I'll take that as a yes I haven't heard anything otherwise oh great so well boosting your xamarin development productivity like I said I'm Maddie we're gonna jump right into it if you have not heard of xamarin before xamarin is Microsoft's open source app platform for building apps for any kind of mobile or watch or TV that you can imagine using dotnet so you see sharp you use all the familiar tools and things that you are used to but you also get a hundred percent native access native API access to those platforms so if you're building an iOS app using xamarin iOS and you want to use the latest and greatest features like dark mode and all that you have all the ability and capabilities to do that using c-sharp so you don't have to go into Swift or Objective C ever so the architecture of the xamarin app if you haven't seen this slide before it's basically you have all the projects for your dotnet project where you can share your c-sharp code your android and your iOS and your watch and whatever projects and then you have a whole bunch of shared c-sharp your shared business logic your shared api is using xamarin essentials to do things like turn on your flash and turn on or use the accelerometer and then if you're using xamarin forms you can share all yours Amla UI and then you still have these three iOS Android and and your uwp or a watch or whatever other projects you have in there to drill down to that native code so they're super high performance like I said you get all the native API access that you need so you never have to go into a different language if you don't want to you can do everything that you could do with native mobile using c-sharp so let's jump into what we're gonna talk about today which is ways to boost your productivity when you're using xamarin or xamarin forms so you know Visual Studio for Mac Visual Studio for Windows that was the the big splash earlier this week is we shipped 16.3 on Windows and 8.3 on Mac which both include some great updates for exam and developers and you're productivities as well as like the whole 16.0 and 8.0 so the the 2019 series has been super super focused from the tooling teams and xamarin on making these four steps of your life easier so when you're coding when you're building your app and then deploying that app onto your simulator or your emulator or your device and then you know increasing the speed with which you iterate so whether that's your UI or your actual code or your business logic we want to make all of these steps faster so first and foremost the thing that you do every day as a developer is you're gonna be writing code and things like we wanted to do on both Windows and Mac were increased the speed with which you could write code and the accuracy and the confidence and get rid of as many typos as possible so the one of the things that we brought over was Intelli code support from the entelechy manned visual studio for Windows they were able to make and Teleco work with xamarin forms zamel which was fantastic so if you aren't familiar with Intel akkad it basically you can see these little stars here it predicts what you're gonna type using a huge data set of similar projects so if you're doing uwp or WPF and your c-sharp or in your sam'l it's gonna tell you what it thinks you should type next it'll tell you the properties that most people type with when they open a button tag and likewise with like new tags or new layouts so it works out of the box with xamarin forms amal and we're also working on bringing it over for android xml for xamarin android projects which will hopefully really increase your UI coding speed and it does already work with c-sharp for all your different projects which is fantastic on the Mac side we've done a bunch of different pieces of work to bring together the experience between Visual Studio for Windows so what you expect from your intellisense there and your refactorings and your quick actions and bring those over to Mac and the first thing we did came out and I believe 8.1 and it was a brand new optimized code editor so the brains of it are shared with Windows so what that means is these things like multi caret editing and your quick actions and being able to do things with like right-click for each to link all of that great stuff that the visual studio for Windows team at an editor team did those all came over using the same brains and logic but we also rebuilt the editor surface itself so that it's super fast super native very fluid you get right-to-left tech support you get different language support and you get emoji support all important things and so once we brought over the code and the c-sharp editor we then set our sights on the zamel editor and using the same method so sharing the brains but having this native super fast editor we were able to bring over the sam'l intellisense in engine from windows so now right out of the box with Visual Studio for mac you're gonna get really really rich intellisense with your zamel so auto completion and things like fuzzy matching and substring matching and things that you'd expect from your intellisense on windows all the autocomplete lightbulbs refactorings resource completion namespace completion the list goes on and on so as always you can check those amber and blogs for details on all of these things but these are all in Visual Studio for Mac the code and sam'l editors in the stable today and been there since 8.2 so hopefully you've been using them for a while so another thing that we've been working on separate from the sam'l and c-sharp site is the Android XML experience so there's a lot of stuff going on in this world I highly recommend you go and watch John Douglass's talk from last night he went into depth on a bunch of the improvements that are going on from the Android SDK and tooling worlds so go back and watch that I'm not gonna get too much into it today cuz he did a really good job covering it last night but this is just a sneak peek of some of the great things going on like layout linting and new intellisense and light bulbs and great stuff with the xml world great so you're coding faster than ever you're super accurate your Intel ACOTA is writing all your code for you you don't even have to think anymore makes it super easy the next thing you have to do is build your app and we always always always are looking at ways to make building faster because it's something you have to do every time you want to validate a change you make so if we can save you a couple seconds every day you might be making less cups of coffee while you're waiting for your builds to finish but we're gonna make you a much more productive developer so using one of our reference apps that you can grab on github it's called smarten hotel 360 it's a huge app it has a bunch of dependencies it uses custom controls it's got a really intense UI and lots of pages we use this as a benchmark to test a whole bunch of different improvements we did to our build system specifically for Android because we wanted to target that first and we are excited to share these results from Visual Studio 2019 and these are a couple months back the 16.0 figures but it's continued to get better and better since we shipped visual studio 20 1960 now and 8.0 and April April so you can see here like the times for first builds incremental builds and deploys have gone way down and that hopefully saves you a lot of time every single day so we did a performance challenge with all the different improvements you can make to your Android app and make your builds faster and your deployments faster and all that great stuff so definitely check that out that is also on our blog it's also on the github the I think it's on John Douglas is github and I'm sure he's also talked about it in his talk last night so check that back out so that's building faster which is a huge part of what you do every day and then you build it you hit play in Visual Studio and you have to deploy your code to your device or your emulator your simulator so deploy is actually kind of a two-fold problem because hey you want to deploy things faster and you want to make sure that you can debug as quickly as possible but you also don't want to be giving your end users and your customers a huge app so it's a tricky problem we've been working on solving in a couple different ways one of the first things that we did was called startup tracing and the idea with this is that there are some things we don't need to redo every single time you deploy and we can actually ahead of time compile some of the code in your app not all of it because that makes your app size huge but some of it to give you a much faster startup time so you can see what these stats here with when you do regular äôt so you compile everything ahead of time you save over a second in your startup speed but you also double your app size which is really bad with profiled äôt which we call startup tracing so we looked at the things that we can pay ot for you that aren't gonna make your app huge so it's only a four megabyte increase in this sample app but you still save over a second there with your startup speed so it's much faster and the best part about startup tracing all you have to do is take a checkbox to turn it on so go into your Android build settings enable startup tracing boom done faster and not that much of an increase in your apk so another thing we're doing with deployments and this is more on that size side of things is something called Android app bundles an Android built this functionality in recently it came out a couple months ago and there's a bunch of but a bunch of talk about it but basically the way Android traditionally worked is they downloaded everything you could ever need when it came to languages and screen sizes and all of that and that's why your Android apps were huge but what you can do now is very easily use something called an Android app bundle which will download only what your device needs so if I have specific languages that I use and I have one Rose Ellucian on my device and one type of processor that is the apk that might my phone will download for me and we have support for this now in Visual Studio 16.3 and 8.3 so go ahead try it out and this is also part of that Android size and performance challenge so you can see people's results with that right away as well on this Ameren block alright so let's see how we're doing on time Oh plenty of time good so now you are coding faster than ever you're building faster than ever you're deploying faster and you have smaller apps which is great then you want to iterate on things and something that we know folks tweak the most is you eyes so you're pushing pixels you want to make sure that button is just a little bit bigger something's off center and you have to fix it but waiting for those builds and deploys for just a small like one-line zamel change can be really painful and that is where zamel hot reload for xamarin forms came from and so we announced this back in July as a private preview at xamarin developer summit you can watch that whole announcement on the xamarin Developers YouTube but we are excited that in Visual Studio 16.3 this is built right in there's no setup there's no private preview there's no you know like anything you have to do or sign-in or anything you can go in and I'll show you how to do it and take a check box and you can start using sam'l heart real it for exam room forms so the feature itself is still in preview which means that there are still things that are going to change and there are still things we know we need to work on but we wanted to build it into Visual Studio so you can start using it right away and not have to do anything weird and give us your feedback so we can make it better and push it to be a stable feature as soon as possible so like I said you can get it with 16.3 or 8.3 today I'll show you how to turn it on in just a minute but some of the key points for sam'l hot reload for xamarin forms are that it's just running your app so if you haven't heard of a hot reload before the idea of it is that you deploy your app you change your sam'l or change your UI and in whatever language that is and if you're using something else you hit save and then your app quickly refreshes just the page you're working on and it saves your navigation it saves your view model and you can just see what that change is gonna look like super quick feedback and what we did with our heart reload is we made sure it was really smart it was really resilient it leveraged the amazing tools you have inside a visual studio like your intellisense it works with your custom controls and your third-party libraries and frameworks it works with all the great new xamarin forms features and it works on your Android or iOS emulators simulators and devices so anywhere that you're gonna be deploying or your xamarin apps you're gonna be using sam'l hot reload you can be using sample hot reload so let take a look at how it works so I'm gonna close out of my powerpoint hopefully this work is fine no Skype notifications which means I hope everyone heard me okay I'm gonna open my visual studio and here I am I am in James Monte mag nose monkeys app so there's a couple reasons I like using this app as a demo one is it has a custom controls and a lot of other things but I haven't changed anything except for an updated heads Ameren forms so xamarin Zabel heart reload does requires Ameren forms 4.1 if you want to learn more about why we have a good blog post about like the somewhat of the architecture of it you can go see that on the xamarin blog but if you're not on xamarin forms 4.1 yet it's 4.2 is the stable now you have no excuses go upgrade it's great lots of new features in xamarin forms so i upgraded that and then all I had to do to start using zamel Heart reload is go to visual studio preferences and if you are on Windows I know I'm on Mac you can go to tools options and then xamarin hot reload and Mac it is visual studio preferences projects xamarin hot reload and then click this checkbox enable zoom or not reload so then I'm gonna hit play start debugging I already have my emulator up you can see I'm on iOS 13 so fingers crossed because as I'm sure you all know the update craziness no you never know what breaks but it was working earlier so it's gonna build my project it's gonna start spinning up all my hot reload assemblies and boop-boop take its time nothing in the output okay it's thinking that's successful okay so hot reload is nice enough to tell me that James had his linker on so I can go ahead and it's still gonna launch my app hi reload isn't gonna throw up everywhere but it's not gonna work yet so let's close out of this stop debugging and I'm gonna open my build settings with this little button and James has it on linked frameworks SDKs only so you're gonna set it to don't link right there so definitely I've had some questions about this from the private preview why do I have to try up a linker well first of all you shouldn't have your linker on and your debug builds because it's going to make your build slower and linking is just to make your apk smaller or your app if you're using the iPhone itself like a physical iPhone you want to put in the additional em touch arguments - - interpreter and that tells your iPhone your physical device it's okay for visual studio to spit code back at your device and make it refresh it otherwise Apple doesn't like when you do that but that's how hot reload works it just sends more code to your device so you don't need that for the simulator but make sure that you do set your blinker - don't link and then you update your xamarin forms okay let's try this again hit play boo build successful great so it spins right up and OH encountered a problem what don't do okay let's try this quit that quit that and we'll restart Visual Studio a classic yes yeah so hot reload it like I said it's a preview feature but it has been tested with all the latest bits that we shipped out so your your iOS 13 and Xcode 11 and your Catalina it does work with which is awesome and then we'll just go back into visual studio sometimes you need to do like a good old bit obsolete but this should spin right up for us I don't double check that my linker settings I set those right and I deleted interpreter yep iPhone simulator got my supported architectures taking its time and eyes that make sure my same reformed version is good yep let's do it all over again I mean every bill did you do that all right there we go connecting watching oh no what's going on oh oh all right let's try updating my Zam reforms one more time if you haven't seen the new solution level Mac nougat package manager it's fantastic by the way so I can go to manage NuGet packages for my whole solution now check my xamarin forums late a stable good at package select all my packages make sure we're doing good on time close that out and we'll do a full rebuild after this one and hope that works if not we'll switch to another project and see if that one's working okay rebuild all let it clean let it build do double-check my build settings one last time while we wait this let this happen yo yep yep this is when I would go make a cup of coffee if I was a xamarin developer but I'm sure that I'm getting a bunch of messages right now like clear bit on so let me check that too while we're here reveal and find her oh well let that build and see I play Connect let's go and yay okay great a classic rebuild it does the trick every time and hopefully I don't run too short on time but we still have a few minutes which is good so we are in like I said James's Monkees app which is awesome it shows you a list of monkeys this like I said it was a mohawk reload it's just running your app so literally I can click in and go to my different pages I can pull it down and scroll around just like I would if I was on device I could be using my device and screaming it or not I know it were great so the first thing I can do is I can go ahead and like start switching up my bindings so change location and change name so now this should say Africa and Asia up top and baboon on the bottom which is great but exactly what I wanted and you can see how instantly that refreshes so I can switch it back hit save good to go James has this amazing circle image custom control and it's pulled in through nougat it's right here Oh didn't mean double click that Oh what you don't have focus is something blurry okay I don't know I just heard something but I can change the color of this to blue hit save I can hear you Channel nine hi Jamie so okay yeah so I've gone and I've changed in the border color I'm changing the border thickness my custom controls update right away I can go into like this page so I'll I can click on let's go to this Golden Lion and like I said it does hold your your navigation and your view model so what James did here was he found his view model in the code behind so right here which means that when I hit save and it refreshes my zamel page it's not gonna try and reload my view model every time so if I go into the details page here which is this page I'm on right now I can do things like change the location and the name and change my border color change my border thickness 23 and hit save and all of those things are going to get updated right away on my emulator my simulator right to the side here so that's kind of the basics let's go into a shell app as well so I'm gonna stop debugging that open another visual studio and hopefully this one's in a good mood to do do I have to pin abdu this one as well but we'll see hit play and so if you didn't see David or it now stalk on Monday afternoon or morning Pacific time maybe that is all on demand right now you can go see it on the YouTube and the twitch but he went into depth about all the great things you can do with shell so if you haven't heard of shell before it's basically a way to describe the visual hierarchy of your app in one file so you'll see the the exact same app we were just looking at sort of with the with a browse and a list view but this one also has the about page they're all described as these tabs right here and I want to show in this app some of the other great features you can do with hot reload so one of them is being able to change all your resources so if I wanted to change the color on this about page of this button I'll hit save it's immediately gonna refresh and change that static resource up here which is down all the way down at the bottom of the page and this button now if I wanted to move these resources Wow I'm running my app to my app dogs Amal resource dictionary or merge resource dictionary somewhere I can cut it and hit save now hurry low doesn't know where those resources are anymore so you can see it doesn't crash the app instead it just uses intellisense and that great new zamel editor on mac to tell me that it doesn't know where that static resources anymore and then it just takes out the things it doesn't know what to do with so the sack layout is still there it just took out the background color cuz it doesn't know where to find it so I would go drop these in my app resources hit save because I just edited an app level file it's gonna take me back to the beginning of my navigation state but if I go back into my about page all my resources are back there and I can go ahead and change this to something like fuchsia which I can never spell alright and hit save it's gonna bounce me back to the top navigate right back right there and then I can go ahead and change where this is referencing it from so if I wanted to change my background color to primary - and hit save there we go perfect you can see the intellisense pops away when it realizes that resource is there additionally I can go into my shell and start editing things there as well so if I wanted to change like the actual primary navigation color of my app so let's make this lime this is gonna start being a really ugly app in just a second it pops back to the top because it's an app level file app shell but it's gonna change my color right there so let's change it to black so you can see those tabs a little bit better and then I can go ahead and do something like copy paste this tab a couple times hit save and see them immediately pop up and because shell is handling my navigation for me and because this is using content templates in the data template for about page the navigation already works and this is all just editing my zamel so super easy again it's resilient so let's say that I misspelled the color black because I'm really tired it's just gonna get rid of that color for me it's gonna highlight it and it's gonna tell me it doesn't know what that color is so that's kind of the the nitty gritty getting up and running with hot reload and seeing all the different features it has like I said it's a preview feature so definitely report problems on help report a problem right here or help send feedback or porta power of them on Windows and let us know what other features you want for sure so let's pop back into the sides real quick I only have two more slides one is a bunch of links so I should have linked to all of the amazing already existing exam Rand talks but you can find them all from the page that you're on to watch this right now so do that additionally you can learn more about hot reload in the public preview an aka MSI's amo hot reload you can learn about the docs at Samuel hot reload Docs and that's where you will find all the things I showed you about how to set it up and some of the features you can do with it and then if you want to go check out James's app there's the github right here as well there's one more session on xamarin and dotnet conf it's tonight it's mixed reality with xamarin a geospatial anchors which is an amazing talk it's by sui key so definitely go watch it if you are around at that time and that's it so hopefully we have time for a question or two I know there was some demo issues but love to get your questions and as always feel free to tweet me or email me at value one or one and I can get back to you so let me stop sharing my screen and then we can do some questions hopefully there were a bunch of questions but James answered them all yeah oh wow now if you have any directly from Eddie James and Pearson in the channel answering them as well yeah sorry for the interruption there do you mind closing your screen so we stopped getting the screen section oh is that what's going on yeah I stopped sharing it but it's still showing my face that's all they're weird all right well cool thank you everyone well thank you so much all right Jenna later he's at for Easter night okay yes all right yeah we're going to switch over to Elton and thanks Maddie I
Beyond Copy + Paste Creating Interactive Documentation
next up we have beyond copy and paste creating interactive documentation with Maria Nagaya thank you so much Mika thanks everyone for staying tuned with Netcom 2019 and thank you for listening to my talk so my name is Maria Nikita I am a senior program manager on the visual studio.net team and I want to talk to you today about interactive documentation and how we think about that and how it's important for first-time developers as well as developers who are continuing to grow and build on our platform so let's talk about documentation documentation is how we build trust with our developers it's how we educate people it's how we sell our products and good documentation means that we are as invested in our product as much as you are it's important as we build our documentation from first-time developers to people who are building code every single day that we make sure that their own ramp is as smooth and as effortless as possible so let's talk about documentation today for a few minutes with documentation today it's getting really good but there are still a few assumptions that we continue to make about our customers first is the assumption of knowledge sometimes when content creators are writing documentation they assume that the people coming to our documentation have prior knowledge of the framework and the languages being taught the assumption of tech as a content author myself I sometimes continually find myself thinking of my experience as the only experience I sometimes reference the operating system I'm using I sometimes reference a version of Windows I always assume that someone has as good internet bandwidth as I do so a good example of this is providing links to certain specific downloads as well as screenshots that only reflect a particular operating system and the last one is the assumption of time we are all really guilty of doing that we assume that the people coming to read our content or use our videos or a documentation have more time than they do usually when people are learning things trying new things or testing something they have a limited amount of time whether you're an educator a hobbyist or a seasoned developer you're probably doing this over your lunch time or just before you go to bed or just before you start work so we need to make sure we cater for that so we look at documentation today majority of the documentation looks like this it's static code right and if we think about this from the perspective of a net u developer a brand new first-timer they're often left wondering what does this do so we then go to stack overflow we copy and paste a bunch of code from here and there but then we still up for the challenge especially as first-time developers what template do I use in Visual Studio what libraries would do I need what do all these error messages mean we are telling people that for their first few lines of code there's a huge on-ramp or even just to run a sample for seasoned developers you're probably working really fast and you don't want to copy and paste in a copy and paste code in and out of your codebase you just want to see if this is the best thing for you so we've noticed one thing as we begin to improve our documentation our expectations have changed and we expect more from the people building our content to do more video has done great work in this space and we just launched right now with dotnet videos on how we are investing in videos and how we are making sure that our developers have an interactive experience where they're able to listen pause and rewind but still we're assuming a bit of time on your side but it's really good content so please go and look out look it up another thing is interactive snippets online this has actually become a requirement for languages and frameworks when you can see popular languages like JavaScript and Python allowing people to test api's and syntax right within the browser but we're also seeing it in popularly emerging languages as well such as scholar and go where people are able to interact and test API is right within the browser but puzzle this is just a few pieces of the puzzles right so we have video on one side we also have syntax iteration online however people want to have experiences that Feliz native to the experience they would have in the browser we're seeing this in places like Microsoft learn where people are able to try and test things out which would be similar to what their local experience would be so when they do transition into an offline experience it feels vaguely familiar but then we also have the concept of trying now this is something I constantly do if I want to try out a new NuGet package I will create a throwaway predicate see if it's working I will delete it I will do it again but you're seeing places like MPN with the help of companies like run kids creating these experiences online we should be able to try out on you get packages and see what they're like right within the comfort of our browser and what we're continuing to see here is a narrowing of the divide between documentation and code and the reason why we're seeing this is a landscape is continuously growing we have developers such as people who are watching this show writing blog posts every single day we have hobbyists and the hobbyist field just keeps on growing from makers to web developers mobile developers IOT from social media influencers where they're just constantly learning how to own their own online experience we have data researchers who are using and mining data making these analytical choices to make more informed decisions we have educators both CS educators as well as non-technical educators where we're seeing in primary and secondary schools all around the world where non-technical teachers are given the task to unwrap the next generation to be comfortable in this new world of coding and finally we have our students who want to explore and learn as much as possible and we need to provide those opportunities for them so when we're creating these new experiences around documentation especially at Microsoft there are things that we wanted to make sure that we landed very comfortably with the customers we wanted to make sure that they had up-to-date documentation nice and fresh referencing articles are when were from 2019 versus 2003 we wanted to make it engaging and engaging is not just about making it flashy and cool you want to make the navigation really easy you want someone to land on a documentation page I know where they need to go you also want the steps to be clear and quick and easy so if you got go-to dotnet right now and you go getting started you will see how to get R up and running in ten minutes giving people the moment to feel empowered in ten minutes or less and finally we wanted to create a friction free learning experience we wanted someone to be able to go onto a web page and learn about the language without having to install all the tools or know everything and in 2017 we launched an interactive online experience with a product that I build called Trident net which allows people to experiment and try dotnet the language within the browser so let's talk about more about the Trident net interactive experience and what we offer them we have our initial goals were in 2017 was to have an interactive documentation online bring us up to speed with the other languages that had been providing this for their customers most importantly we wanted it to be login free we wanted to make sure that someone didn't have to install everything on their machine in order to just write console dot write line HelloWorld we wanted you to give that quick win and finally we wanted a fast on-ramp we wanted it so you could edit the code online click run and see the results we wanted you to feel that moment of success but we also noticed that Trident net is growing and those are some of the wonderful things I want to share with you today so when we first began in 2017 we wanted a friction free online experience and we did that with Trident net and you go to dock stopped Microsoft comm you're able to run c-sharp code right within the browser but as we began to notice that there were certain difficulties first of all what happened if someone didn't have good internet access what if somebody wanted to do this locally on their machine how are we creating that experience for you also we wanted to make a cheaper alternative that allowed people to run things easily within their website and luckily in 2018 we also got laser and it allowed us to pivot from running things and containers on Azure container instances to running things on the client side with blazer and only that because we created these experiences will also allow us to create a local experience with a.net try global tall and if you look at my slide right now we have a student in South Africa who calls is one of the most influential things that he's used that allows him to go and share c-sharp experiences with his fellow students so we thank you and we hope that you continue to use us and then we have a special surprise that I think a lot of you didn't expect but we also have dotnet running in notebooks and I'll be sharing that demo with you later today so let's go and see some demos now okay so as I said see Trident Nets started in the browser so if you go to any single sample on the docks of Microsoft comm quickstarts you notice that we have an editor right now you can copy the code over run it and you have the direct results you can also edit it easily right within the browser so you're not restricted by own but what is in the code and you run it again this is all running on blazer it's all running on the client side that allows us to create opportunities where people could possibly add this to their websites as well which we're hoping to enable in the future but I also talked about the offline experience if any of you have ever done a workshop or done a tutorial out there you've probably had to get people to download the tools clone the repo make sure than the right operating system and before you know it it's two-three hours into the workshop and nobody has done anything we wanted to make sure that people could be just successful with a dotnet SDK and the dotnet tribal global tool and get things up and running so I want to give you a quick demo of that so we have this repo it's our samples repo you can go to go to dotnet try slash samples on github and you'll see four clear extra instructions where we'll tell you to install the.net tri global tool which is available and you get today clone this repo then once you have this repo clone I want you to go into the directory and type dotnet try so as someone who prepares for demos ahead of time I did the first three steps ahead of time so I'm gonna great go right into here type dotnet try hit run and what this is going to do using kestrels going to start up my browser and it's going to give me an interactive markdown experience if you look at the top this is an MD file so I'm going to continue into introduction to programming with c-sharp and you'll notice that you have a list of instructions it's like an interactive book let's go ahead and run this code sometimes the first run can take a few seconds but bear with me you have hallo world I can go in change it again and I will put in my name run it again and I see the results this gives people the flexibility to run an experiment within the browser giving you that nice interactive experience so I hope that you'll give it a try for the next workshop that you're a tenth you're doing or if you just want to try give it a just try it out but the big question here is how are we doing this how are we able to have this mix of interactive code c-sharp code with a markdown file so I'm just going to go over to Visual Studio code and show you some of the magic that we're running so I'm just gonna close up the server here so this looks like markdown that you've probably written in the past if you've done anything with a readme file and if you add any sort of language language features within your markdown you usually have to use a flag so you notice that we have something called si si si s which is a c-sharp we are pointing to a specific region right so this is general c-sharp regions called intro we're pointing to a source file and we're pointing to a program dot C as in my app so let's see what this is if I go over to my program dot CS you will notice that I have a couple of regions adored you have a bunch of switch case statement and I have a region called intro so if I edited this and I said hello dot Netcom and I saved this file and let's just go ahead and run this again dotnet tri I go back into my introduction to c-sharp and I've edited it right so there's a seamless difference but another thing that we have to be careful with is that if anyone's written documentation sometimes it gets out of sync like how do we support our backing project as well as what we're putting in the documentation we wanted to make sure that we supported that so let's make some quick edits like how do we verify code so I'm going to go over to this code again and I'm just going to make some clumsy mistakes over here I am going to remove the Senate semicolon save that I am going to change from intros from intro to intros I'm gonna say that again and I want to show you a new addition we added it called dotnet verifying right so what it's saying sorry it's not net try verify okay so this is going through and it's actually checking your markdown and checking your backing project to make sure that everything's going okay and you'll notice that it says hey you're missing some things here you're missing a semicolon and we also haven't found the intros region so we wanted to make sure that before you hit push into github you're able to actually see any issues that might pop up and we're allowed we enable you to do that if you're someone who would prefer to see this in a UI format it's also supported on the server on the UI side as well so I'm just going to click do this do dotnet try it's going to launch the localhost again and if I go over to the introductions it will tell me that the region hasn't been found so on both sides you have this experience where users are easily able to catch what their mistakes are so let's go on some to seeing that if you want to look at this more you can go ahead to our github repo and please give the give it a try so I want to show you a little bit more and other experiences that we've been creating so I showed you the dotnet try global tool and I showed you don't know try running in the browser but I also wanted to show you something that we just did this week and I'm really looking forward to hearing your feedback if you go to our github repo and you do dotnet slash try and you scroll to the bottom which is pretty long you can notice that we have a lot of files in there you'll notice that we have the dotnet try enable bad but we also have launch to binder now binder is a project an open source project where it's able to point to a github repo and take out all the notebook files and run them in the browser so they spin up a nice container and you're able to look at it right within the browser over here I already got this started this is c-sharp notebooks oh sorry let me start that again let's launch binder this is going to take a few minutes because it's configuring a container for us and the beauty of like live demos is that this will happen as the circle spins around but what we wanted to show you here is that we want you to be able to try the dotnet notebook right within the browser we wanted you to play around with it let me make this into c-sharp we're going to go into samples and I have a housing ml sample right here right so let's walk through this experience you can install and you get packages right so this allows you to customize it a Dane you get packages that you'd like I'm going to hit shift enter enter what this is doing is it going to Newgate it's installing those packages for me this will take a few minutes but as we want you to know that if you are using this on your site you can install as many packages as you would like you can use work you can notice that we're using the ml package we're using Auto ml and we're also pulling that the data data frames NuGet package as well but as that's installing let's look through the rest of the code so I can run through it we're able to use our packages in the next cell as it some of you might know notebooks have cell by cell execution we also wanted to make sure that people had graphs being able to plot there so we wanted to make sure that people are able to display graphs scatter plots right within the new get packages was right within the notebook wanted to make sure that we made this feel authentic to people who are coming from the Python notebook space but we also wanted to make sure that our customers who are regularly who a regular dotnet developers but this also felt authentic and natural to them so I'm going to run the next browser maybe it's our next cell shift and turn alright and as you can see we have a nice table that has been delayed we've actually been able to display table of the housing data we can also plot some grass which I think would be the cool thing so let's start looking at some cool stuff all right let's run that again all right so I'm going to go over to duck's samples and housing let's pull in some packages bear with me I am so sorry but this should take a faster time the next time around we've installed our packages we're waiting for just one more which was been successfully installed let's run this the housing data alright so what we wanted people to be able to do is see the graphs and customize these graphs authentic clean and know ok so let's give it a moment and what we should see in a bit is a histogram that shows us H end of all the housing data across California well while we're doing that okay let's do it one more time think the third yes there we go it just needed one more time if you hit it hard enough it will happen so what we can see is that we have a histogram that shows all the data if you're someone coming from the notebook space we also have support so you can zoom in and see these things in more detail we also wanted to make sure that you're able you're able to do more interesting graphs like scatter plots so let's run this give in a moment all right and as you can see we have a scatter plot and you guess which state this is California sorry I don't have a live audience it's California as we can see the pricing is pretty high but let's say I wanted to zoom in a little more I can do this I can zoom in on some of the hot spots what this will do is I will actually cancel out everything else so we want that rich interactive experience that people have come to expect and we're looking forward to your feedback so if you have any questions on how to get started with the dotnet kernel that would come at around ignite time we won't have anything for people to try at the moment however we do have the mind binder experiences available right now so if you go over to our github page and you'll be able to launch it right there from launching launch my browser so we have a couple of minutes for questions I believe when we have a chance and we can give it a go we are ready for questions sake well hopefully you can see us here I brought my brand-new phone that was really awkward well you know the first thing that's kind of cool yeah yes yeah this one right here mica I feel about what you just showed us I think it's awesome have you ever tried have you ever tried tried net you're gonna love this I'm reading upside down it looks like a fairly simple way to learn and write some c-sharp code inside your browser without having to first create a visual Co solution plot plus lots of sample code aims at new learners check it out you have a fan yeah you really do and there's a there's a there's a gif and I'm gonna say gif for all of you out there listening I'm not I will not sage if it's not be nut butter okay of the the guy the Australian guy going like this two thumbs up alright what else do we have over here let's see wish this had been around when I was working on bit frost by frost by frost a few years back looks really impressive for dotnet open-source projects like I'm wondering if this guy's Thor I think you might be okay I think you might be ample time worth hi yeah oh yeah but of course hi for me to you alright here's another one from John great to see the improvements Microsoft has made in language platform documentation I still remember the huge stack of books from C 6.0 that's a long time ago should have included a back brace with the product this is pretty cool I love I love the idea of being able to learn and read as you go I'm personally a fan of notebooks I'm so glad c-sharp is coming to it and the try dotnet stuff is really cool so if you could give people one takeaway from your session what would it be it would be number one can you only be one or can I get two can you you could give as many as you want okay this is your session number one please go and try the dotnet try global tome give it a try make sure using it for your next workshop we're looking forward to hearing how you're doing with it we've had people try it with workshops that are pulling from Azure function so I would love to see more workshops with that also if you want to give it give the binder experience a try let me walk through that experience one more time so people can look at it because I had some technical issues because you know that's the world so let's do that so if you go to our github repo which is dotnet slash trying you scroll down all our code base you'll notice launch my binder right so when you launch my binder what this is doing is that it is spinning up a container for you and you're able to actually start running and writing that code right within the browser so it's pulling in the.net core SDK and all that kind of stuff now for it to even look nice um look at it in the lab format which I just think is always like a nicer way to look at this experience I'm a fan it's really cool I also want to point out we do have f-sharp support I don't know if people saw that exact is Phillips now they live in XNA we do have f-sharp support so if you weren't there you go to Doc's there's an output there is a bug which I can fix right now hit run but this has all the nice F sharp expectations that people will have and my team will continue to work on that fantastic um if you look at the C sharp as well let's go up when look at C sharp you will find two different samples you have one to the housing sample and just to give reference to this housing sample is literally pulled out of a data science book and Eric did a side-by-side and was able to replicate this entire experience right within the browser and we also have a repo one which I should have run to show you how we are actively keeping track on the issues that you're doing and we're actively trying to close them fantastic and then wait for ignite so you can start installing the bits on your machine all right nice we have another question is it possible to integrate try dotnet with doc FX documentation tried out net and doc effects not at the moment now okay okay and I think there's one more isn't this one yeah can I take a subset of the try dotnet code and use it to incorporate c-sharp scripts within existing applications Oh Jeremy good question yes you can just look at our repo and ask us questions and here's another one with another awesome yeah yep Yoda wise when it says so do what you can as there is no try try dotnet dotnet like I love the cool with Jupiter notebooks like that I'm trying to like parse it this is really good stuff okay it says so do what you can as there is no try try dot dotnet the cool with Jupiter notebooks tonic I will I will decipher that I think is a hideout net is cool and we're also excited about the Jupiter notebooks experience are we ready to go to the next yeah we have what's new in F sharp with Philip so Philip now is it Philip or fillers it's like doctor same with a British accent defib
Azure IoT Edge
[Music] at Sandvik Coromant we use a sure IOT to collect data in real time if you know the temperature if you know the load if you know the vibration if you have that and can use that type of data you can increase the efficiency or the machining process generating savings while customers of millions of dollars the biggest challenges we're facing as the rising costs of water compliance to transform the way we farm we need a trusted cloud platform that is as global and local as our own industry the software servers are connected to their ergotism to the pumps 24/7 in that remote access can be via any connected device and I look at our flow meters and sometimes the machine might be saving up to 50% of its allocated will be used I wouldn't go back with that we wanted to make it really easy for our customers to get meaning out of their data we took some existing technology and ideas and modernize them with the help of Microsoft the ability to find meaning in that sea of data and use it to do more than just react but plan ahead before a problem occurs is what makes this information valuable when we show our customers what they can do with this new technology and how fast they can do it jaws drop [Music]
Azure DevOps for NET Fall into the Pit of Success
all right we are here with Jeffrey Palermo hey Jeffrey how are you I'm great how are you I'm excellent and you're gonna talk to us about Azure DevOps for dotnet absolutely it's a really exciting topic and let me share my screen all right should be on now so today we're talking about a DevOps for dotnet and falling into the pit of success and I'm so glad that you're here you're tuning in to this session then that means that you want to get more done you want to move faster you want to produce higher quality so that you can deliver for your team your company your customers and that's what this session is about falling into the pit of success there's so many choices the complexity is endless but I'm going to narrow it down to the seven key elements that you need to put into your as your DevOps pipeline to move fast and and building a smarter Manor and run your systems with confidence so I know from experience that if you map out your software delivery process and then automate it you will deliver more you'll absolutely love programming again but we do have an enormous problem serious problem problem we're gonna have to deal with and solve most teams automate work for their own customers by producing software but then saddle themselves with new administrative work to build deploy and monitor software that you know it relieves their customers of their administrative work there's no reason that the Cobblers kids shouldn't have shoes and I work with teams all the time we're one of the most senior most capable developers is trapped by the task of deploying the software because he's the one who understands the software the best so they take their best talent with the most experience in the software and reduce them to weeks full of administrative tasks a deployment is a set of administrative tasks copying files changing a config file configuring a credential starting a service and then doing it again and again over and over and we all got into software because we saw the tremendous power available to us we can write code and make the computer do something that makes ours and our lives better so then why shouldn't wash should we settle for a process that takes people with technical creativity you and turn them into an automaton and so for you managers listening in I want to share with you what goes on in the brain of your people who have to do these manual processes over and over we as humans are always on a pursuit of happiness whether we get fulfillment and serving others or making something new your people aren't finding happiness in the process of manual builds environment configuration and deployment they want to get it done as fast as possible so that they can get back to why they get into software in the first place to create things to solve interesting problems to make others lives easier through software and as a result the manual tasks are error-prone and just mind-numbing and the more your staff in doors tasks that don't bring happiness and satisfaction the more they become open to perhaps considering other employers that might be able to provide more work that does bring satisfaction so whether you're an individual developer a lead a lead of a team or a manager and technology this talk is for you so today's session we're going to talk about the the pipeline structure we have already discussed the challenge that we're faced with in software and how DevOps solves that next we'll go through the key seven stages of the DevOps pipeline and then I'll show you how to get started so I want to give you something of value and help you get automated I don't want you to continue to be frustrated and sometimes trapped by the software that that you work on and I understand lost weekends and surprise overtime due to software builds and deployments over my career I've helped tons and tons of people to do this and I want to just give you a copy of my latest book for free not selling anything I want to give this to you for free we want this to be in your hands we gave the preview Edition out of the build conference dotnet DevOps for a sure and it exposes the secret about how any team can have a fully automated DevOps pipeline using Azure DevOps services by following a concrete seven stage design and so here's what you need to do read the book and and I'm giving you a free e-book copy just send me an email for being here today on the.com or even stumbling on the recording then second you need to understand the seven stages of your DevOps pipeline which I'm giving you now in this talk and then three on turd launcher dotnet DevOps pipeline and and use the free public project as a template it's a community projects help you get started with Azure DevOps services and you'll find that in the book and if you do this you'll have a fully automated DevOps pipeline using Azure that will enable you to move fast and and with higher quality and also you can tune into the azure DevOps podcast and and get more information there so let's dive right in the seven key elements of a DevOps environment are the pre-code design process how you set up your your version control which sets the stage for the rest of the automation your build and then your levels of validation which include full system testing user experience testing production release and then telemetry observation we have to make sure that we are watching how the system is running in production and so to look at how that would lay out in as your boards for example we have the top level that is your pre code design process there's four types of design decisions that have to be made before you put your hands on the keyboard is the conceptual definition what the heck are we building that's the good old fashioned requirements user experience design wireframes what's it gonna look like how's the user gonna use it then technical design libraries patterns architectural changes and then acceptance criteria and test design that is what does it mean to be done and how are we going to test this once it's put together armed with that we're ready to code and then move on to the next pieces this is what it would look like in Azure boards you're going to configure the columns for you you're going to nobody has no nobody's full process has fewer than nine columns because ahead of development ahead of the column that represents hands on keyboard coding you need to represent these four different types of pre code design because even if you don't have them on the board these decisions are going to be made and if they're not made explicitly by the right person or people then a developer's gonna have hands on the keyboard and just have to make assumptions and make it up as they go and so these are the four types of pre code design decisions you need to have these representative in your process or you're just kind of kicking the can down the road you need to structure your version control system you need to factor out your git repositories properly and one of the big things the mistakes that people make is putting more than one application in a single git repository or maybe taking a subversion or a TFS repository and just dumping it into a git repository and it has a huge tree of software and then they try to figure out how to do a DevOps pipeline it just doesn't work I'm here to tell you the rules that are gonna cause you to fall into the pit of success and putting one application into a single git repository is the beginning of the automation chain that causes you to fall into the pit of success because we're going to have one build that builds one get repository one application altogether and produces a set of release candidates that all have the same version number so you can have a large software system but it's I mean it's segmented into multiple applications anyway you just need to make sure that each application has its own git repository so that you have the source of what is versioning okay then we need to build and there are various stage you need your private build along with your continuous integration build if you haven't read the addison-wesley book on continuous integration back from 2006 you need to read that book and because your private build is going to be leveraged by your continuous integration build and so building whether it's test-driven development or build process any test uses the natural pattern of a range act assert or setup get ready do something and then check to see how things went and so these are the basic build steps there some people put static code analysis in the assert column it's not not required but notice that I have two levels of automated test unit tests these are in unit or X unit tests that do not call out of process as a result they are super fast because they don't call out of process then there's component level integration tests these are the integration tests that you can run in the build process so if you're calling out through entity framework to sequel server database you can test that boom that's an integration test and notice that my great database is here and lost that over your applications generally use the database so for your build process you need to stand up a shell of your database so that you can run tests against your code to make sure that your application talks to the database and uses it a continuous integration build that doesn't create the database that the application owns and depends on is woefully incomplete so pit of success make sure that your data stores are in your build okay static code analysis is a proven quality control method and so whether it's Roslyn or any other static analysis tools every language has static analyzers make sure that that is in your build process don't leave that out okay and then we're going to publish test results we're going to package it up into various new get packages and publish it to Azure artifacts so let's dive into an example and this example we're using is asp.net core web application and a sequel database and with with any application it's important for all of the components to be built and deployed together if they reside in the same git repository they have the same version number and they are built and deployed together if you don't know why you would be an exception to this rule then you're not an exception this is the pit of success we build the solution we run automated test and package up our deployable components and here we are full platform as a service application as your app services as your sequel and so in this case we end up with four new Kias that are published to artifact because you see we have three components that are going to be running processes in our environment we have the web application we have an offline job of some sort and we have a statement server database and so we have the app service the web app will push our job into an azure function and will push our database into an azure sequel and also we have some acceptance tests some full system acceptance tests now remember back in our pre code design process we listed out our acceptance tests these are simple bullet points but then going into coding we create a full system test suite if it's a web application we're gonna use a lot of selenium to actually pull open a browser and click around and and test test our screens and so we want to package up the test suite that is the version number of this application so that we we tie that all together and then we are going to push those into Azure artifacts don't use the old build artifacts store if you're building new pipelines as your artifacts is where all of you or release candidate packages should go and and use that okay so build steps I want to show you what your continuous integration build generally gonna look like and this is coming from from one of the preview on preview Edition so we had to install on the hosted agents the SDK for three oh but that's released now this is using all platform as-a-service there is no virtual machine in the mix now for speed a lot of teams use a private agent so that they have a VM that they control for the builds and I like that approach and that's a good approach this approach uses a hundred percent hosted and so there is no server that you have to spin up therefore when you grab this template and when you do it this way you're gonna get up and running really really quickly so first thing we're gonna do we're going to use as your resource manager and tie it to our Azure subscription and actually create a sequel database just for the build process that they work on a throw away after this build is finished then we're going to then we're gonna run our build script which is a PowerShell build script the private build that runs locally is just simple PowerShell and just look in the book I give you a template for that build script it's not complicated but after that build runs which includes the MS build exe or the.net build those kinds of commands it's doing all the compilation it's running the in unit test suites or X unit and then we publish our test results and then we're gonna do a and it also packages up and we're going to do our new get push and then we call into Azure and say hey throw away my build database so that we clean up okay this is what our whole pipeline is going to look like in in Azure DevOps services so we're gonna have our continuous integration build tied to the git repository that automatically kicks off and then we automatically kick off the various stages and the the template will soon be converted to Hamel that just came out at the build conference those those things are being enhanced and that's getting better and better every day so gamma will be the future but most people are who've adopted this already are using the steps and so I'm showing you the steps which easily convert to gamble just for clarity and so we have TDD UAT and productions there are three types of environments three unique types of environments in your DevOps pipeline and you need at least one of each remember this is the pit of success this is the rule of thumb okay everybody knows production you can have one knee at least one and sometimes we have a different production environment for each customer so you can have multiple then we need a manual test environment we call this uit for user acceptance testing you can have multiple of those we find common manual test environments all over the place dev test queue a staging those are all manual environment you could have as many as you need and then there's the TDD environment it is the automation environment there's no humans allowed on this environment it is it is for full system test automation it is for running test suites that require a fully deployed environment in order to run and so functional selenium tests that are the execution of your acceptance test perfect for running in there so you see in our pipeline we have a hundred percent of our tests did pass after the TDD deployment let me show you what that looks like for when you configure it these are the things you need to put in it so the first thing that we do is we give the signal and send a message over to application insights that we are performing a release to this environment that is super important because I'll talk about Salemi tree after a while we tell application insights hey we're starting to deploy then one at a time we grab a deployable component that is a new gate package in Azure artifacts and we deploy it so we grab our database and then we then we use Azure resource manager to to create our database in a TDD environment again we're using infrastructure as code here the TDD environment does not exist we're creating it on demand we're using it and then we're throwing away so it's super cheap to do this and for feature branches you can have as many feature branches as you go and you can have a full deployment with a full system test run even before you do a pull request really powerful and then we're going to going down the list create the database schema and our database is ready to go then we're gonna grab them just truncating in here we're gonna grab our web application package create the azure app service do the deployment start the website then we execute the self health check that is important every time you do a deployment it could be as simple as a PowerShell invoke web request and you call out to some endpoint so that the application can say hey I'm here I'm started up all of my dependencies are reachable that that proves your configuration and I am ready to rock now now here comes the full system testing we download the package of our full system test then we push in the connection string to the database and the URL for where the web application is and then we use the visual studio test step to run our full system tests which is actually going to open up a browser on that VM that that is the hosted agent and is going to run all of our acceptance tests and then after this is all said and done like we have an azure resource group deployment that actually deletes the resource group and throws away this environment because we don't need it anymore all right let's dive into the what the full system testing looks like after it runs because this is really sweet this is really empowering I think a lot of you understand unit tests and a lot of you using integration tests but we find that UI tests or full system tests that are driven through the UI are not as often used and they are absolutely empowering and the perfect implementation of the acceptance test criteria which is a common part of scrum because a lot of teams I know are using scrum for project management and so this is the view of the this application has six of these full system tests that run and a powerful thing is that we can actually do a screen capture of every single screen as the tests move through the application we can capture them and as your devops services happily just grabs all those attachments and makes them available on absolutely every deployment every stage every test run and so if we zoom in on what that screen looks like we can see that what we're showing here is the inside of the browser and it doesn't grab the title bar or the chrome of the browser but it just grabs that essentially the document the body of the screen that you're looking at and so it's typing in those text boxes it's it's clicking buttons and it's actually driving and recording what that screen looked like okay really powerful and really easy to do and the the free azure devops services project template that we have available online has literally this examples of this you can get up and running really quickly so let's look at how the different environments are arranged here's a principle never do anything in production for the first time everything that you do while deploying to production should have been done at least once and preferably multiple times in environments prior so that we can see all the things that we do in our in our TDD environment which no humans can use that because they try to get on and it's just gonna be the environments gonna be ripped out from under you so no humans allowed it's just to deploy and run some test Suites and then you eighty or whatever you choose to call your manual environment manual test environment that comes next but we're going to load test data on demand in TDD we're going to recreate the environment recreate the database running acceptance test we're going to that completely unattended all the time we're gonna destroy the environment now for our manual test manual test environments we don't do as much and you can see that on the chart now let's talk about telemetry every one of these runtime components needs to be monitored now as your monitor wraps up some services that really make this easy and so every one of these can be attached to application insights and if your application has things that run on VMs log analytics is your answer to get absolutely everything that doesn't have native application insights integration but let me give you the principles for falling into the pit of success with telemetry everybody in those logs log Fernet just flat file log files trace but there's two others that you need to make sure your application is emitting metrics and events you probably have applications that create a data warehouse or a star schema or some type of queryable denormalized data store that analytical reports can be can be run off of for your for your users well emitting metrics and events gives you that same type of capability where events are akin to dimensions in a star schema and metrics are akin to facts in a star schema and that way you can you can select by events group by events and then do average and some and min max over your metrics and you are creating a data warehouse of what your application is doing and that's absolutely empowering and then you need to take all of this information and make sure it's available in a centralized store now application insights gives that for us and this is on the screen just a really quick snippet of some of the free things that application insights gives you just by grabbing the nougat packages now if you go to the azure portal you can also see our deployment markers when we said hey as your application insights I'm deploying that little arrow is the deployment marker and if something goes haywire right after that we can click on that and in application insights in the azure portal we can see all the information about that deployment and link right back to it and where it came from and so that's to tie it all together now this is the seven key elements of a DevOps environment pre-code design process the version control structure the build full system testing user experience testing the production release and then telemetry observation you need all seven don't stay frustrated by a slow and manual process take pride in delivering to customers faster automate your DevOps pipeline so that you can ship software quickly and also preserved your weekends okay now remember send me an email so I can send you a free copy of my book that walks you through in detail everything you need to set up and of course it refers to documentation because the azure devops services has great documentation and I didn't want to regurgitate documentation here on this 30-minute talk I wanted to give you the guidance to fall into the pit of success and if you if you haven't if you're struggling to get started yes just do it that way and as you read the book use the included as your devops services project template that's linked here bitly on the top right bitly slash dotnet devops project and literally get up and running within a day feel free to copy literally copy that completely working project along with the infrastructure is code and azure air and templates just attach it to your Azure subscription you'll be up and running fast and I do a lot of DevOps education webinars and and the next one I'm doing is how to educate how to organize your git repository to make DevOps automation easier and and also another resource is the Azure DevOps podcast but if you email jeffrey at clear - measure com I'll send you that free book and I'll also post the slides and tweet those out at jeffrey palermo and i'll be happy to take any questions that there are all right thanks Jeffy that was fantastic we don't I don't know that we really have many questions so just take a couple of minutes and what's what do you best what are you recommendations for how people get started doing this I think you know people have seen a lot of DevOps they definitely want to do this I'm gonna dive in you know I've got an hour here an hour there how do i how do I get started and get up to speed well if the adjective op services is completely new then you need to get the skeleton working first because you're gonna have applications and everybody has tons of applications and if you try to try to start automating one of your applications first you're just going to really struggle with the complexity of your application and the new tool so I recommend going online creating the new org and then there's downloading or creating a skeleton a shell of an application that doesn't actually do anything that way you can get the automation down without being distracted by the features and so but there's a lot of concepts there and so if the the shell of the application that the community the community template ought to talk about that's the jump start and but either way get a shell of an application create the private build the continuous integration build throw in your unit test suite integration test suite and a full system test suite that uses selenium make sure you can have one function and it calls a nothing query to a database and then three deployments a test automation environment a manual test environment and then your production environment and so if you can get just the skeleton of your pipeline with a you know file new at file new project type shell of an application and visual studio solution then you can get all the pieces accounted for you can see how all fits together see how it flows and then you can start adapting one of your applications to the pipeline and you know sidestep a lot of confusion a lot of complexity because you will have a working pipeline for an application that doesn't do anything but you'll you'll have that full working pipelining you can adapt it to seam coins that have a hundred a hundred plus applications with no automation and it's a mountain of effort but that's a way to get started perfect cool that's a nice well thank you so much Jeffrey for taking the time to share your talent with us we're gonna get going here we're gonna get J power talking about static content thank you so much Jeff awesome
Building Bots Part 1
it's about time we did a toolbox episode on BOTS hi welcome to visual studio toolbox I'm your host Robert green and jo...
-
>> It doesn't matter if I'm short or tall. >> Anxious. >> Or obsessed. >> Loud. >> Quiet...
-
hello my name is Ron Lou and I am a program manager on the video studio team in the previous video we talked about how to inst...
-
so I'm going to show you an extension here called shifter it allows me to flip between values and the editor really really...