 Alright, we're back plowing on it's morning. We're looking at the eight o'clock hour. It's almost time for breakfast So my name is Jeff Fritz. That's Brady Gaster We're back again now. I think this is our bar sixth hour together. This is our sixth hour in final For today, but I'll see you in a week. Absolutely the early bird has caught the worm here We're getting ready for our next presenter. This is who do we have coming up? This is Gabriel And we're going to be talking about real world net. That's good. Not demos. No demos Alright, enough demos. Let's talk about real world scenarios with dot net. So let's let's fire up and get ready for Gabriel here All right, we're gonna go over to our fly-in video. We're going from Italy We're gonna go find Gabriel across Africa across the oceans in Sao Paulo Hello Hey, there's Gabriel. Good morning. Hey, thanks so much for joining us on dot net conf. Oh It's been fine. Good morning. Good afternoon. Good evening depends on where you are, right? Absolutely. All right, Gabriel. The stage is yours. Thank you. Thank you. Hello, everybody As Jeffrey said, my name is Gabriel. I'm here from Sao Paulo, Brazil to give you An introduction not an introduction, but to give you some content regarding a different way of thinking about the demos that we have Learned and in all the demos that we we use it to Watching in this conference is because I do think they are important, but sometimes we we forget a little bit about how to to Translate these demos into real projects, right? So I will talk a little bit in Portuguese because I believe some people from Brazil is watching this video But the presentation will be totally in English and after the presentation. I will answer some questions both in English and In Portuguese, right? Pessoal do Brasil? Bom dia, boa tarde já. Já estão chegando aqui na hora do almoço. Um grande abraço aí para todos que estão assistindo Essa apresentação vai falar um pouquinho sobre como a gente transforma demos em mundo real como que as ferramentas da Microsoft podem nos ajudar a transformar demos em mundo real Eu vou fazer a apresentação em inglês Mas logo em seguida eu faço alguns comentários também em português e respondo questões tanto em inglês como em português ok Well, let's get started so Hold on a second Yes, here we go Well, so as I told you The idea here is to talk about how demos are cool, but let's talk about a little bit there About the real world, right? These are my contacts. You can send me mail. You can find me at Twitter and Be free to just just call me if you need, right? Again, just remember, I will do the presentation only in English, but questions about the slides will be explained at the end of the presentation And maybe if you have some questions specifically in portuguese, I can do it in portuguese again Come back to a single slide that maybe you don't understand Well, who am I? I guess this is important because sometimes we don't understand Why that person is talking about that subject? And well, I'm a software architect nowadays It's been 20 years developing solutions for retail and industry markets In a really big company here in Brazil And for more than 16 years I've been studying and researching about how to develop And how to deliver software with good quality I believe since my graduation I have this worry because Software with bad quality means loss of costs And because of that, I understand that without doing software with good quality Things are not that well done like we could do with good quality software And because of this research 10 years ago, I started a career as a professor at an university here in Brazil And I had the opportunity to teach about this wonderful area that we all have chosen And this is really, really fantastic Because most of the time we learn a lot because you have this opportunity Like in this moment that I'm doing this presentation I have the opportunity to talk about a subject that I love And more than that, I can exchange some info about this area that I believe you all love That's why you are here in this moment Well, this is one of the reasons that you are here But I believe that the other reason that makes you be here in this moment Is that the velocity and desire of the real world are increasing day by day I mean, softwares do need to be good And more than that, they need to be delivered in a really fast way And the problem is that the more we provide great and fast solutions The more our customers will need good stuff delivered And we will ask you to deliver good stuff And I'm sure that Microsoft can help us with that I'm sure that we have very, very good tools that Microsoft provides So that we can deliver to the reality, to the real world good software We have videos, we have demos, we have events like this one So I'm sure that Microsoft can help us with that But the point is, sometimes I'm not sure if we are ready for this new world We cannot develop software the same way we used it to do 10 years ago And that's my question, are you ready for this new world? Are you ready for this world with a really velocity for delivering solutions And at the same time with high quality, that's the point that I'm asking you in this moment And I really enjoyed this comment from Satya Nadella talking about the responsibilities that we have nowadays The responsibilities that we have nowadays as software developers Because, okay, it's really, really a world of great opportunities But it is a world with great and big responsibilities The pillars that he had mentioned when he talked about this topic Are privacy, cybersecurity and ethical AI And of course we can talk about each of these pillars for many, many hours But the point is, I am sure that Microsoft is doing a great job Delivering their software with privacy, cybersecurity and ethical AI as basis But are you working on this? I mean, when you develop your application, when you develop your solution Are you worried about this scenario? Are you worried about this problem or these topics? I mean, being more clear, are your projects demo likes or are they ready for the real world? What do you mean by that? What I mean by that is that you have to understand that this is a demo, right? Demos are, they are very great to understand the concept of some technologies And some solutions that we want to provide But a demo will never be your end product because it's not sustainable, right? So demos are really cool, but we need to understand that they are just a start-up for your project They are not going to be your end product, right? And this is real world Real world needs worries that in demos we usually do not care about And because of that, we have to understand that our solutions, our software, they need some principles, right? They need to understand that we have some principles so that we can deliver good stuff, right? And this concept is very nice because it really makes you understand that if you think about demos or a prototype As your end project, you're going to have a really weak and un-flexible product, right? That's the point We need to understand that demos are good to make you understand things done You're not going to finish your job using the demos, right? And I can tell you that I have already worked in many different technologies And this is something that it doesn't matter the technology that you are using What matters is the principle or are the principles that you are worried about, right? No matter if you are talking about Windows form or a Windows service or a WPF application, .NET compact applications Websites, .NET Core, ASP.NET Core, Xamarin, it doesn't matter It doesn't matter the technology What it matters are the principles, right? And these principles that we need to discuss since the design of a development, right? Without these principles, I believe that we are not going to live and sleep well And this is a point of attention that I'm trying to expose to you That's why I am here in this moment Because sometimes I watch very, very good presentations explaining how you can use a technology, right? I'm sure that you have already watched in this event lots of very, very good presentations Explaining how to do a specific situation, how to solve a specific problem But believe me, this is just the start point And you do need to think about some other points and some principles So that you can give back a very good solution to your customer, right? And because of that, what I decided to present you I decided to present you three real cases where we, I say as we Because I have a team here working with me Where we use Microsoft tools and Microsoft platform To solve what I think are really big problems, right? And that's the point from now to this presentation I'm going to present you these cases Describing how the technology that Microsoft provides Help me up with these solutions, okay? So let's get started with the first case That means real user needs and .NET Core Well, there's a principle in software architecture called reuse The more you reuse, the fastest is your development So let's take a look at this scenario I have here a Windows service that was developed in 2008 And it is still in improvement I mean, it's always having some modifications So that we can keep up with the current necessity of our customers Well, from 2008 up to 2018 We have read development here around 195,000 lines Of well-programmed and tested code And then we have a really, really big problem Because some of our customers, they have as need The desire of this solution in a Linux environment Can you imagine the situation of he writing 195,000 lines of code Well-programmed and tested to another environment To another programming language And in many cases, this will make the project stop That's the point So we've thought about, we checked it out Why not try to use .NET Core console application Running in Linux background as a solution And then we started doing some tests And this is really nice because when we started this project here I thought, well, maybe we're going to need to write some classes And some code again, but it's okay Let's at least try Because actually, I saw in a demo presentation A .NET Core console application working And in that scenario, it looked well It makes sense what Microsoft was presenting .NET standard and all the things that we already know About this new era of Microsoft Okay, that was the really, really nice point I was able to reuse 99.8% of the code Can you imagine that? It was possible to just add the libraries as references In that console application, .NET Core console application And I had the same libraries, the same structure I had the same binaries working well in Linux I have already tested this scenario in CentOS I have already tested this scenario in almost all the platforms That .NET Core is able to run And it's running really, really, really well Of course, when we wrote this code in the past We thought that we could use this as a code to be reused So the principle of reusing code was there in that project in 2008 I'm sure that in 2008 I'm not aware that Microsoft would love Linux like Microsoft loves today But we have written this code using code reused principles Because of other opportunities that we saw in that moment And just because of that, nowadays we do have the same binaries working and running In both Windows Server and Linux Server For us, this is something really, really good And think about the user need The user needs, the user need is Wow, we need the solution running in Linux But we don't want to wait months to have this solution done We just need the same solution we have in Windows running in Linux And after some weeks, we could do some great tests even in production So understand that with this technology that .NET Core provides to us nowadays I could deliver a well-programmed and tested software in a small period of time That's the point That's why we think that .NET Core nowadays is a really, really good platform for your new projects That's why I believe that .NET Standard is the future of development And this is real world, that's the point I'm not talking about our single class running a single object with some methods No, I'm talking about 195,000 lines of code written Of course, we have some points of attention and compatibility here One thing that you need to remember is that Linux is case sensitive So the files, the folders and path separators are a bit different from Windows And in some cases, we could need some myths like this one that we have here in this code sample But this is pretty simple, you just check if you are running in a Linux platform And then as an interrupt service, you could check if you are in the Linux world Or if you are running Windows or even other platforms Well, in this first case, I tried to demonstrate to you how Microsoft helped us Delivering fast solutions for our user needs According to this new platform of .NET Core that we have It's not that new, but it's good to know that it's improving Now let's talk about Visual Studio I don't know if you think that Visual Studio is a good platform or not I believe you think about that But sometimes we think about Visual Studio as a really difficult platform to understand Especially if you start learning programming or maybe if you start learning this environment, this Microsoft environment Well, actually, you just understand how incredible Visual Studio is when you talk about big projects Currently, I'm running with my team a really, really, really big project Maybe for you, this is not that big, but for my environment, for my team nowadays This is the biggest project that I have ever, architecture And just to let you know, these are the numbers and the technologies that we have in this project So since the Linux service that I just mentioned to you We have two other Windows services, we have microservices We have R scripts for the machine learning that we are running here We have SQL Server database, we have web apps, we have cloud services We have bunches of libraries, we have IoT Hub with string analytics Well, we have lots of things And I started counting for this presentation, these projects And I got confused because there are many, many, many projects And I thought about a different way to demonstrate to you the quantity of projects I'm talking about And we have 64 projects, 64 CS projects in this solution Wow, this could be a really small quantity of solutions Of projects for your solution, your current solution Or maybe you're gonna say, wow, 64 projects, what do you mean by that? It's a platform, it's a SaaS platform, right? And the point is, do you know any environment, development environment Where you can manage so many different kinds of projects? I don't Where you can have so many different ways to debug and deploy a solution? I don't That's the point, right? Real world needs a software development environment with continuous improvement And for me, Visual Studio is the one, right? Not only because the continuous improvement of new features But especially the improvements of performance I had the opportunity to talk about a team from Visual Studio this year And arguing about the performance that we have Especially when we got many projects in a solution The answer is we are working on it and we keep working on it And we always work on it This is important for a company This is important for a product or a platform that you are developing Because it's not only the environment, it's the support, it's the community That's what we are doing here, right? We're exchanging info We're talking about this environment of Visual Studio.net So think about that Think that without a development environment with good quality How can you produce good software, right? Sometimes I have the opportunity to talk about these different environments That we have in the world And I have lots of cases where people spend a lot of time trying to solve problems Regarding the development environment And maybe this is just because you are not using the correct tool for the correct project You know what I mean? That's the idea here Understand that real world needs a software development environment with continuous improvement And I'm sure that Visual Studio is the best one that we have in the world Well, this is my last case This is my last scenario And I'm going to talk about this pretty new feature or this pretty new service That Microsoft is providing that is Azure DevOps Well, real world and Azure DevOps is a case that I understand That we are all interested because we have many situations and many cases where the DevOps looks like the solution The best solution Well, I really enjoyed this idea that I don't even describe it from what is DevOps This is the union of people, process, products to enable continuous delivery of value to our end users And this is really good because it's clear in the sentence that Donovan described here That it doesn't matter only the product So Azure DevOps is the product, okay But we need to understand the people in the process to deliver value to our end users And because of that, I really understand that when you say that DevOps gives value to end users I can affirm to you that real world needs DevOps This is something that you need to think about If you're not running the DevOps pipeline in your project nowadays I would say to you that this is not the future, this is the present that real world needs Because people don't understand We spent hundreds of hours developing a software without giving back something to the user That's the point, right But you need to think about another thing How can we deliver value to our end users and keep environments safe Because it's a little bit strange to think about continuous delivery Without thinking about the topics that such a had mentioned, right And what I mean by environments safe And I have here a sample that I just got from Azure I'm sure that you've already seen this in another presentation here in .NETConf But let me just explain to you what I'm showing here Here we have the environment of Microsoft Azure And you can start now a DevOps project using this platform So you just say, I want to create a .NET platform Sorry, I want to create a DevOps project using .NET as language application For the application, as you can see you have many other different options of programming language here And then you just go next and say, wow, the framework I'm going to use is .NET Core Because I'm in a .NET application This is good, I can add a database, maybe, great And then I just go next and say, wow, I will deploy this application in a web app I can use a Kubernetes service, I can use a Linux web app We have many different ways to deploy this application, a virtual machine, doesn't matter And then you can create the VSTS, the old VSTS scenario Or the new DevOps, Azure DevOps scenario Where you just set up the place where your development environment will be managed And you just say, wow, I'm going to deploy this in Azure in that specific location It's really good, just some clicks And bang, you have an environment with GitHub, with Git as a repository Using the same commands that you use in GitHub in this repository You have boards for planning your project with different sprints It's really easy, this is really cool Well, I believe it will take you something around 10 minutes to have this environment done for your application And it's more than that You have all the pipeline for continuous development Well, but it's deployed here This is good, this is really good And then you have something really interesting You can run a continuous delivery for your application It's so easy to do that, that in some minutes you can bug your app You know what I mean, it's so easy to make these things happen That maybe you can think about, oh, this is not demo, this is real life No, this is not real life, right? If you deliver a solution using only development stage, right? The consequence is that you're going to bug your application You're going to have bugs inside your application in a fast way And this is not good, this is not a good idea, right? So, you have to remember the principles Again, Microsoft provides you a fantastic environment I would say that Azure DevOps is a fantastic tool It's the best one, it's the best in class But you need to understand that without the principles Maybe you're not going to have staged environments You're not going to have a pipeline with approvals That is really important when you talk about real world You see, it's the same tool, it's the same environment But you need to remember this when you are developing a solution to your end user Because without these scenarios well planned How can you guarantee that you're going to deliver quality? That's the first principle of DevOps Well, just to wrap up and just to make sure that you understood what I'm describing here You have to understand that DevOps means platform as a service and more service As I just described, it's a fast track to deliver good software And you can use bunches of options that we have nowadays in Azure To deliver good software in a fast track I'm sure that you have already heard about all these platforms as a service Services that Microsoft provides and the serverless options that we have nowadays All these things are fantastic But please do not forget, do not forget the user needs Do not forget the security issues, do not forget cold reuse Do not forget safe transition between development and production Because a tool without a really good process And really good people thinking about the best way to deliver good software It's just a tool, right? If you want a very good tool and if you need a tool that the real world needs nowadays You have to understand that we find these in Microsoft environments So these tools and all the demos and all the environments that we have nowadays provided by Microsoft They are opportunities so that you can deliver good software However, you have to understand your responsibilities Because without that, I'm sure that you're not going to deliver the good software that Microsoft is helping you to provide Well, that's all folks I believe I have some time for answering some questions and maybe if some people want this solution This presentation in Portuguese I can help you up I guess I'm going to make a wrap up in Portuguese So that my Brazilian guys can understand better what I mean here So let's go, let's do that And then I open for some questions if they are Well folks, I wanted to thank you first of all for the opportunity for those who watched this presentation My intention with this presentation is to show some real cases in which Microsoft platform helped me a lot On my day to day, on my team's day to day Delivering software in a quick way but with good quality And one of the things that I always like to mention is the importance of remembering the principles Some principles that sometimes when we are looking at a demonstration we forget But in the real world they are very important for what the thing happens And the idea of showing this presentation is very related to this I brought three examples, basically I brought an example of the code reuse Which was fantastic, how much I managed to take advantage of the code Running .NET Core in Linux, something that was very cool We took a lot of advantage of the code, really, I'm talking 190,000 lines of code Then an example of the amount of projects within a solution that I end up having Because of a platform like a platform that we are developing on the software line as a service And I have no doubt that ZOE Studio is the best tool for that Because it is very difficult to deal with so many types of projects in other tools And the last case is this novelty of the name, but very cool The review that was given on the interface of the DevOps Azure Of the Azure DevOps, which is an old VSTS But the most important thing is how much you optimize and gain time When you set up a DevOps project using Azure as a wizard Only the detail is that you need to understand that that wizard that is delivered by Azure Is just the beginning of the joke, you need to think about the different environments Of delivery, of solution, because otherwise you can run the risk of delivering something To your final client, depending on the way you design For me it is a certainty, some time already But it is not a certainty for us developers, for us technicians It is a certainty for the market, it is what the market wants Maybe it doesn't know yet, especially here in Brazil But it is what the market wants, certainty And that's it, I wanted to thank you, thank you I will go back to English just to thank the people of the Dotsnet Conf Well guys, that's all I just want to thank the Dotsnet Conf team, it was awesome to be here Oh, thank you, Gabriel That's it, I'm open for some questions Portuguese, English, no matter what, Spanish maybe But let's do it Alright, so Gabriel, we do have a couple questions There's one I need to make sure I answer here Folks are asking about video on demand Things that we've been seeing throughout the entire event here on Dotsnet Conf The first two days content are available on YouTube If you go to youtube.com, go to the Visual Studio channel There's a Dotsnet Conf 2018 playlist Day one and day two are both loaded there Including I see some folks calling out saying, hey is there a blazer talk Including that talk from our friend Dan Roth Where he focused on blazer late on day two You'll be able to find that in the playlist I think there's 17 videos right now in there But this video with our friend Gabriel And all the videos from our friends from around the world As part of community day here, you'll see end up there At some point, maybe through the weekend And we're going to re-run all of the content for Dotsnet Conf Here on Twitch, right through the weekend Back to back to back, so if there's something you missed in a different time zone You're going to be able to check in and find that Right here on the Visual Studio channel Fantastic So you won't see it on channel nine Look for the Visual Studio channel on channel nine And that's where you'll find it, alright All of the Dotsnet Confs in years past are there And you'll find this one as well I love seeing, Gabriel, I love seeing the great response to the Portuguese That we shared during your session here That's exciting to see That folks were happy to hear Other Brazilians joining into the... I'm happy for that too Oh yeah So did anybody have... I'm keeping an eye on the chat room here I'm looking for folks that might have some questions But I wanted to ask you, Gabriel While we're waiting for some folks here in the chat room You've seen some... Gosh, you had that one solution that was 60-some projects That you were working on And you had a lot of great reuse When you went from .NET Framework to .NET Core How long did that conversion take you To go from .NET Framework to .NET Core And were there any gotchas along the way That you want to make sure folks know about? Yeah, let's talk about this This was really, really good I was surprised to tell the truth Because when I think about converting a software A Windows service software That was running in .NET 4.6.1 I believe And then we decided to... Just reuse the libraries that this software has Using .NET Core 2.0 It was quite simple Because when we developed The Windows service We cared about How to make this code reusable In another scenarios So it was just attached the libraries That we wrote for the Windows service And then we just started These classes, these controller classes That we have in this Linux environment Of course, when we got... I can just come back here When we... The biggest problem that we had In this scenario Was... Here we go... Was the case sensitive That Linux has and Windows don't So we didn't care about this When we wrote the code in English In Windows But we had to think about that When we started writing the code For both environments So this was the biggest problem Of compatibility Because in this Windows service I have to import some data From some files And these files They are in specific folders And we had to worry about that But... In general, we just attached The same libraries and started running It was really, really awesome This point because Man, it was... For us I would say that we... If we need to here write All this code It would take something like Six months To have this code done again And after these six months We would need More time To test the whole application But when you attach The same library, the same binary In just run And the things work You think about, well I don't need to retest everything That's the point And that's why I try to Bring this case because It's fantastic Well, .NET Core is helping me a lot To deliver good Features To old situations This is really amazing So what I also Want to make sure Okay So what's interesting And what I want to make sure folks also Check in on here is There's things like the registry The windows registry aren't available To you in Linux So if you're doing any kind of reference For the duration of course You're going to need to store that data somewhere else Did you have any issues? Gabriel, did you have any issues Dealing with user profiles And home directories And that change over difference Between the two operating systems? No, no I don't Even the registry Scenario In this situation We didn't use the registry For a safe data So it was not a problem Just let you know What kind of I just told you 195 1000 lines of code What about What kind of code is that? I'm talking about a code That provides connections To different equipments Right? Socket connections And the scenario So I'm talking about the scenario Where I can run At the same time 1000 threads Connecting to different devices And This worked Perfectly The socket classes The thread classes They worked perfectly Right? This was the scenario And that's great to hear Because we know that those threads And those sockets You're reaching outside of the managed world Into those unmanaged resources And to have that compatibility You know, still work Between .NET Framework .NET Core And on to Linux from Windows Huge benefit to be able to see And Kind words over to the .NET Core team For ensuring that compatibility Okay Alright I think that's about All the time we have So what we're going to do I don't see any questions In the chat room Okay Alright I have a question Did you guys have any Someone brought this up as a comment We use registry in my project We still have not decided where To move that data to The situation where you were reading Values from the registry And changing some other things Let me try to understand What you're asking You have a scenario where you have Registry data being Right And Reading, is that the scenario Yeah, so if In what Javier is saying was He's got a scenario where he's reading And writing from the registry And over to Linux So that you do You have the least amount of code That you're writing Maybe if you have this scenario That you are writing Writing data in registry Maybe the The best way I would write a text file A JSON file, for example A setup file And if I'm talking about safety We need to understand that A JSON file needs to be encrypted Right, so that people Cannot Exchange the data that you are writing In the registry This is one option that I would use An encrypted JSON file So that you can have The Data that you wrote That you use it to write In Windows registry Right now in a JSON setup file Yeah, I think that makes a lot of sense All right Cool Even when I use In some cases Again, you have to think about Security Even when I use The registry I use to encrypt the data So that the thing Is not so easy To find That's great stuff All right, we're Going to cut over to our next video We've got to get ready for our next speaker Thank you so much, Gabriel We really appreciate you joining us Thank you, it was a nice pleasure See ya And friends, I hope you stick around We're going to play a video or two here And then we have Philip Carter joining us To talk about F-Sharp 4.5 In the next hour He's in studio, he's right here On the big camera Hang around, we're going to have a lot of fun It's .NETConf 2018