n it so it's going to compile and I'm going to run this all locally and then as that fires up I'm going to actually call it out through postman through this local host 7071 and here I have postman setup and I'm going to be passing in a latitude and a longitude of Seattle so I send it off and it comes in here and hits so now what I can do here is step through so I get my latitude and longitude out of the query string and then these next ones I'm just pulling out of essentially a config file to get my key and my URL for my third party weather service and so that's another great thing about putting this up in functions instead of having it in my mobile app I can have the key to my weather service not on board my mobile app where it could be possibly compromised I have it up on functions within the azure cloud and it's safer eventually I could even put that in the azure key vault and really lock it down if I wanted to great so back to the function then all I'm doing here is using this client which happens to be an HTTP client calling get string async invoking that third party weather service getting my data back deserializing it and then finally all I'm doing here is putting it into a version that my mobile app would use so I continue that off and down here I just get this little JSON back and this is all my map app needs to display its data so I've already actually deployed that to azure that particular function and I'm going to run my mobile app now to actually see it in effect so I'll compile it and run it on the emulator and as it's going all I'm going to do here again is using the HTTP client is called get string async and it's just calling out prettyweather.azurewebsites.net to get its data back so as soon as it fires up still compiling and then we should have it done in just a second here hopefully and then we'll continue on talking here we go so loads up going to deploy it to the emulator then once that's done it'll go through and the very first thing it's going to do is going to hit this weather service here get the weather info and then it's going to deploy call out to the function loading itself up and then it should come in here and that's what it did call the get string async and I can see my weather info that came back it's the same thing as before and now it's just been updated with weather from Honolulu so there we go so that's all that's involved with loading up and calling an azure function from a mobile app it's just an HTTP get request involved so that's pretty straightforward as far as it's creating just a back end a web API but doing with azure functions a cloud native way of creating a web API so now adding the real amazing stuff to functions or to our mobile app and that's with App Center and so what App Center is going to do is going to allow us to wrap together Azure AD B2C Active Directory B2C visits the client and also Azure Cosmos DB on a really nice easy to use developer friendly SDK and so the way this works is that a lot of y'all may be already familiar with App Center in the dev ops portion where we had build and test and distribution so what happened is that with build what you would do is that you would connect to your favorite repo and then as soon as you would push to that repo it would build it would kick off some unit test and maybe even some UI test that would run on real devices and then as soon as that was done everything would pass it would kick off to the distribution whether it's distributing to the stores or whether it's to some external beta testers and then you would have some diagnostics that could run so what happened if the app crash maybe you can get full stack traces it could hook into app insights and then you have analytics where you can track how people are using your app that was App Center however there is this now this new features called the mobile backend as a service where there's authentication data and push now what's great about these features is that they interact really well amongst each other and they are super easy to use so first we'll take a peek at what the authentication does and as I mentioned before Visual Studio App Center's authentication works hand in hand with Azure Active Directory B2C so AD B2C itself is I'm going to say it's a little bit involved in getting set up and so what App Center Auth is going to help you do is going to help you ease that process of getting set up and making calls to it so its focus is on making everything easy for you and so the other way so there's two parts and involved in calling and authenticating and signing in your users there's the B2C portion and then there's the actual signing in portion which is done through Microsoft Authentication Library or MSAL now the MSAL is all done on device and that's taken care of displaying the web view and actually communicating the B2C and performing the authentication where B2C handles like calling out to Twitter or Facebook or your email to make sure you are who you say you are so you have these two pieces that need to interplay with each other nicely in order to get your sign in experience App Center makes this whole layout and this whole journey way easier this is what it looks like it's just sign in async now if you're familiar with what the MSAL framework was before it's super powerful but it was a lot of ceremony that goes along in setting it up this is what it looks like now it's super it's nice it's developer friendly and that goes right along with the App Center ethos going along with this I mentioned that right now it's just working with Azure Active Directory B2C but in the future they're implementing something called bring your own identity and so what this means is is that if you're using Auth0 or if you're using Firebase or if you're using Azure Active Directory already you can just bring those in to App Center and it's going to work for you so you don't have to be just using B2C you could be using any of those other identity providers bring it in and you'll still be able to work with them behind that beautiful SDK that we had then next up is the data portion so what the data gives us here is a nice wrapper around Azure Cosmos DB so the way as I mentioned before is that Auth and data and push work together hand in hand so this is one of the ways that they do so we're logged in with Auth and then user A, user B and user C whenever they do some data information they get their own private partition within Cosmos DB so when I want to store some data I get my user A partition same with B same with C but yet we still have some public data and so there's no I don't have to set up as a developer set up a new partition for anybody App Center's SDK takes care of that for me now the thing that we get with the data SDK is the ability to do offline writing if I'm connected it writes to the cloud right away also writes to an SQL cache on device however if we're not connected just writes to the cache on device and we keep on going it'll write up to the cloud next time we're connected same thing when we're reading always read it from the online cat or the cache on device if we're connected reads to the cloud and syncs up automatically works you don't have to worry about whether you're online or off the SDK is going to take care of it for you so some methods here that you have you create your data model new it up and then there's a create method a delete method passing in the IDs of what you want and then the partitions here are the user documents as opposed to public and then there's a list async to get them all back a read for a single and then a replace which is like an upsert or an updating other cool things that we have with the app center is that you can see data metrics from what your Cosmos database looks like all within the app center portal and you can actually go through and view different documents and the best thing at all is that there is a free tier coming along it's not there today but it is coming along soon so it is Cosmos DB free tier with app center and that's pretty really slick so let's jump in to the last demo that we have going walking on sunshine auth and data with app center so first thing I want to do is show you how we would set up the portal the app center portal to work with auth and data so what I would have here is I have opened up a app center application and I have auth and data here so just by hitting auth it says welcome to auth connect my address subscription and I can go through I have my pretty weather it's reading what's already in my address subscription user impersonation and then for the policy I have to manually add my user flow which is happens to be this user flow is the how you sign in so it's like which identity providers like if you want to connect to Facebook or if you want to connect to Twitter and then I can just say connect and that's all there is to it now my app is set up to use authentication the same with data all I'm going to say is I want to use an existing database use my subscription hit next here which database within it user preferences which collection and that's it I would hit done so to show you one that's already set up and ready to go is one of my Android auth is already there it's telling me my tenant name my application ID and the data and you can see here I have overview and then my explorer and you can see I have both Seattle and Honolulu added so the next thing what I want to do here is finally go through and show you the methods that I have set up to be able to log in and then save data so I hit the little things below and the sign in right here is just auth sign in async I have tokens that come back an account ID which is my B2C account ID all within it I can get listing my cities out is just a data list async sending in a city info which just happens to be a regular class continue on and then if I when I want to add a new one I will come through here pick a new city and crash the app so what it would look like if I would pick the new city then is save async and which just says create async city info passing in everything I need and then what I would have there is some really really funky stuff but if I go over to my real device I can see if I load up the app it should be able to see Madison Seattle and Honolulu come up and obviously Madison did not save but that's okay so hopefully it saves here without crashing anything and it comes over so great that's the quick version of adding everything and using app center with Xamarin mobile app so in summary we use Xamarin for creating a cross platform mobile application Azure functions for a serverless backend for a compute and then app center for a mobile backend as a service data and authentication so please go out and learn more follow these documentation links for Xamarin app center auth and data and finally the bottom one there is all the code that you can want from this session all right thank you so much my friend man how you doing today my friend I'm doing well Seth fantastic so here's a question that I always get that I thought I would ask you performance with Xamarin versus native is like tell us about that you get 100% native performance with Xamarin as you would if you were writing something in Java or if you're running something with Swift you're going to get the same native level performance as you would so there is no difference as if anything Seth you write bad code you can get bad code yeah he's saying that from experience yeah we work together and so he's seen some of that all right so here's another question does azure app center auth work with securing with securing a web API being called from a desktop app that's a good question so the auth center app it works with securing a web API calling from a mobile app I haven't tried it from a desktop app but they do support WinForms in the other portion of app center so I'm not going to speculate and get that project team or the development team product team in the trouble but it's just a GAT token fantastic well there's a lot of good links that he put up there so make sure that you follow those and get some of the code so you can try it out yourself it's pretty amazing now as we go along make sure to remember to to participate in the technical treasure hunt it's still going on you're going to want to watch all of dotnetconf 2019 because dotnet partners are sponsoring a technical treasure hunt there will be fun challenges to solve and you'll be eligible to win a lot of prizes which is critical so what we're going to do is we're going to throw to a commercial break and right after that we're going to have a tour of what's new for XAML Tools and XAML Islands and Visual Studio 2019 with my good friend Dimitri Lailin but this first Welcome back treasure hunters I've got your next clue from those wily folks at mobilize.net They want you to use this choose your own adventure band or snatch style story to decide what to do with some toxic legacy code choose the right path and you're a hero choose wrong and dreadful consequences might befall you go to this URL to get started whisper that response when you get to the end to the dotnet bot in the Visual Studio Twitch Channel and you could be well on your way to the next step in our technical treasure hunt Hi I'm Scott and I'm Kendra and we're going to talk to you about dotnet this is our dotnet 101 video series if you've just arrived here you might want to go backwards and take a look at this C-Sharp 101 series C-Sharp is one of the languages in dotnet but what is dotnet anyway? Right so we've been talking about dotnet for a while and we haven't fully explained what it is it definitely has something to do with development so let's dive into that so dotnet is an open source development platform for building different types of apps and of course that next question is then what's a developer platform yeah it's a little bit confusing it is the languages that you use plus the libraries that you use and that together is a developer platform and dotnet is one now with dotnet there are certain languages that you can use C-Sharp the one we've been teaching today also Visual Basic and F-Sharp and then the platforms are the things that you stand on the things that you write your software for are dotnet core which is open source that runs anywhere like Windows and Linux and Mac the dotnet framework which is very popular been around for a very long time it's let you write websites and services and apps on Windows for many many years and then Xamarin or Mono which is a dotnet for mobile so you can write your dotnet applications on an iOS device or an Apple Watch or an Apple TV or Android all of this together is examples of dotnet these are multiple dotnets and that can be a little confusing itself so what we can do is just write to a standard we can use a standard set of libraries and make sure that our libraries are standard so you just think about the dotnet standard and your dotnet stuff will run anywhere which is really cool Speaking of running anywhere what exactly can I build with dotnet? Turns out you listed a few of them just now quite a lot so we have desktop micro services web mobile all of that what's your favorite? I like IoT I like being able to write dotnet on a Raspberry Pi or even on the Windows desktop so I can write a Windows desktop app and then suddenly go to a tiny device and I'm using the same skills and the same libraries which is really cool Definitely Who builds dotnet? Turns out it's Microsoft and several thousand of our closest friends so over 60,000 developers and 3,000 Hi I'm Scott and I'm Kendra and we're going to talk to you about dotnet this is our dotnet 101 video series if you've just arrived here you might want to go backwards and take a look at this C-Sharp 101 series C-Sharp is one of the languages in dotnet but what is dotnet anyway? Right So we've been talking about dotnet for a while and we haven't fully explained what it is it definitely has something to do with development so let's dive into that So dotnet is an open source development platform for building different types of apps and of course that next question is then what's the developer platform? Yeah it's a little bit confusing it is the languages that you use plus the libraries that you use and that together is a developer platform and dotnet is one Now with dotnet there are certain languages that you can use C-Sharp the one we've been teaching today also Visual Basic and F-Sharp and then the platforms are the things that you stand on the things that you write your software for are dotnet core which is open source that runs anywhere like Windows and Linux and Mac the dotnet framework which is very popular been around for a very long time it's let you write websites and services and apps on Windows for many many years and then Xamarin or Mono which is a dotnet for mobile so you can write your dotnet applications on an iOS device or an Apple Watch or an Apple TV Hi there welcome to another dotnet con talk my name is Dimitri Lailand and I'm really glad you're joining me today and today I'm going to do a session on XAML tools for WPF and UWP developers we're going to go take a tour through XAML tools I'm going to do a lot of demos hopefully everything will work and we're going to look at features that are you know existing features you can use today features that are coming so we're going to do some road map and we're even going to look kind of further out if we get time to say this is what's really coming on the pike in the future and we want your feedback on it as well so let's get going before I jump into the details of my talk I'm just going to mention that three days of content and desktop talks have been kind of spread out across all three days so desktop development is something you're interested in I hope you can check out one of the other sessions so there they are they are also in the agenda the agenda link is down below and everything will be available on demand if you missed it or we'll miss it in the future all right so my session so we're going to start off by looking at XAML tools XAML tools I'm a PM of XAML tools so WPF and UWP for WPF and UWP applications and I work closely with Xamarin forums so all the XAML teams work closely together and in my talk I'm going to cover what's new in tooling around hardware load designer and the code editor I'm going to talk a little bit at the end around modernization of applications using XAML islands and just touch on road map just a little bit and hopefully that'll be a good talk all right let's jump in so this demo was going to be a code demo but I'm going to apologize and do some screenshots but it's a cool demo so I hope you enjoy it unfortunately my VM kind of died this morning thanks VM but let's talk about a new feature we're working on in the XAML designer so if you're WPF or UWP developer and you you know use the XAML designer we're adding features to that capability right to that space we have been thinking for a long time what feature would be a good way to increase developer productivity so something we're going to ship in a future visual studio update release as a preview flagged feature so you'll have to turn it on is XAML suggested actions think about it as a light bulb on top of controls so we're starting off with a well-defined set of controls that we're going to enable this on and a light bulb is going to make all the common properties of those controls available so here's stack panel here's a label we even have nice color pickers we're going to build into that here's the image control things like source visibility very much common properties so as they kind of go down this list of controls you see that these properties are probably the ones you often have to go set and today if you go into the properties panel it's kind of hard to find the most common properties this is hopefully going to alleviate that in the future it will even expand to other capabilities as well so it's a cool feature we're working on it's going to ship in a future preview 16.4 one of the update trains one of the preview trains you know we'll put it into release notes when it's available it's going to support the controls up on the screen right now that are listed but it is going to be extendable we are going to add it to more controls in the future and we're looking at actions because sometimes you have a control that has properties you want to change and that's great other times you have a control like a tab view you need to add another tab so instead of having to know how to do that XAML or have some other paradigm in the UI that lets you enable you know to add a new tab easily we're going to try to see if these quick action suggested actions work well for you so check it out when we make it available just wanted to show you one future facing thing and unfortunately my demo failed all right so from here on in it's demo time so I'm going to jump right in and talk about a story that could have been a little bit better than one but such is life so today this week the yesterday WPF core shipped that means WPF core as a framework is GA and if you install Visual Studio 16.3 that means you have the tooling unfortunately the designer is off by default we screwed up we made a little mistake so I'll show you how to enable it if you go to you know if you have a WPF project so this is a WPF project right here you go to tools you go to options and you go to preview features if you enable use preview of the dotnet core SDK and you restart it and we'll do that just to kind of prove the point so let's restart the application real quick and I should have my little demo app okay let's get this thing open all right so you can see designer is loading totally our fault sorry about that but designer is there and we're going to service this release to make it available but I just show you how to enable it right away and start using it now the one thing I do want to point out is that and let's make sure I have the right I have so many of these little applications sorry just need to make sure that I'm looking at the right one all right yep this is the right one all right so we have multiple designers that my team works on so some of our designers you know one of them is for dotnet framework WPF one of the dotnet core and one is for UWP so if you really pay attention you switch between those three you're going to see some slight differences those are not bugs those are differences that we sort of made decisions on we're here to hear your feedback on it but for the most part most of the features of the designer work the same across all of them so everything you would expect and this designer to work works here so if I go to toolbox and I go ahead and I drag a button that works and if I resize the button that works as well XAML is changing one tip lots of people don't realize there's an edit template feature in here that can create a copy of a style this is accessible through right clicking and control on the design surface or in the document outline so it's really available anywhere and if you right click on that and say yes created within my application here you get a bunch of XAML so designers are here quite a powerful feature some of the features that we also get asked would you add the feature and we say it's there and it's our fault you don't know about it so we're working to fix that but one of the cool features is regions so I'm going to show that feature right now region button style so this came in through surveys people were asking me Dimitri can you please add this feature and I wanted to show that it's there so we can add a region and then we can collapse the region so region begin make sure it's right and the region am I having my first demo fail of the day oh Jesus you know when something just works every single time well I can assure you this this feature does work I've tested it so many times not sure why this is misbehaving but there you go sooner or later one of your demos will fail but basically regions are in there give it a shot if you hit a bug like this please let us know we're here to make it better so I just wanted to show the designers there we have region support in XAML editor and we have the ability to edit default styles or templates so from there I'm going to jump into the meat of the demo and we're going to talk about an application we're going to use this application for the rest of the talk that I've been building using some newer bits than what you would have access to but for the most part all the things they show will work with some minor exceptions and I will point those out as we go so here's my project it's here for demonstrated purposes there's really not a lot of code to it it's just a basic WPF core app I have a view model with some dummy data it's like a fake email client you know that we're building it's really really poor and there's an object called email and I'm going to do some binding to it in real time so with this application I'm going to just reset it back to the original state and just run the app and show you that it's really bare bones there's absolutely no code in here right now and then we'll begin coding and I'll talk about some of the features so first things first there's a bunch of tools that are related to the hot reload feature that I'm about to demo the first tool is the in-app toolbar this is the toolbar that appears in the application itself at the top it's collapsible one of the new features we added is we made it movable left and right because sometimes we'll block UI if you collapse it it's pretty small but still you know there wasn't sufficient in all scenarios we also added this right hand side hot reload available because developers were not aware of this feature was working or not there's some scenarios where the feature doesn't work so we added the message this says unavailable or available so that is very clear of how the reload is on and you can collapse that away if that's not helpful to you clicking on the link will take you to documentation both the documentation says how to use the feature in this case or if it's unavailable how to resolve that as well so it's a really important tool and hopefully you find it useful one of the things that a lot of people don't realize also is there's a button in the live visual tree that if you click the button it completely goes away from the application so it really doesn't have to be there if that's not something you want in our case we're going to put it back in and I want to show hot reload and hot reload is a feature that changes the app as the app is running this app is running right now I've cheated a little bit you know I've created a view model and I created all the placeholders because when you're running with hot reload visual studio will block you from adding a new control or changing the structure of the project right so you're going to have to make all that available and while I can edit C sharp using C sharp edit and continue view models don't respond very well just because of how it's architected so I put all that in place and now I want to show you how hot reload and some other features make this really good experience so with that I'm going to show you the first the first feature which I'm just going to add a button just for the sake of demonstration purposes so I'm going to add a button in here the button will be 100 by 50 all right there's the button and if I go back to the application I see the button it just appeared magically because of hot reload now this window I'd actually love for it to be visible at all times so I'm going to go in here and say top most and I'm going to say true and now the applications will be visible all the time these are changes that are happening to XAML and being reflected in real time so what if let's say I wanted to learn more about the button see the C sharp code behind it and I didn't know where the button was in source in this case it's easy and most more complex applications really complicated we have a button called enable selection you click on that click on the control and in our live visual tree you can see the button and this is where I want to highlight a new feature that's coming soon it's not yet available but this feature is coming soon it's called just my XAML if I turn just my XAML off you get a much bigger live visual tree we show you everything in a live visual tree and that's useful sometimes but by default we find that only the XAML that you've written is useful so we're adding a feature called just my XAML it'll be on by default there'll be a setting to turn it off by default in case you want the old behavior so that's pretty cool and this is basically giving you all the flexibility here to to build your app as app runs now actually let's start building the app for real I'm going to go ahead and kill this temporary button and show you a feature that we've gotten kind of by default because other teams are doing work called IntelliCode with IntelliCode you get stars in IntelliSense of the most likely actions that our AI analysis shows that you might take so RML that means we've looked at GitHub we looked at open source projects and we've made some decisions based on that data for XAML C-Shop and other languages so here it's saying to me there's a really high try probability that you want to add a grid column definition grid row definition in fact I do so as I do that it says hey there's a really good chance that now you want to add a column definition yes I do and as I'm doing that it makes writing code just so much easier so here I am doing row definition row definition I'm like tap completing through this like no tomorrow so it's really really performant and how do we load making all these changes come alive for us in the app itself so as we go through I was going to write all the code but as they realize how little time I have I'm just going to cheat a little bit and cut and paste a few times you don't really need to watch me type that's fine right all right so first of all let's add some meet to this application so I'm going to paste this thing right here all right and as soon as I do that my app comes alive I just created a list box I created a list view and if I click on the list view there's an area here where the details of the email should be coming up I've also created some references to some styles that should be in my resource dictionary now I have a resource dictionary so I'm going to go ahead and create that so I'm going to go in here and I'm going to go to my solution so here's my merged in resource dictionary so I'm going to put some code in there save that off go back so now the error went away all of a sudden my application slightly changed so as you can see it's actually working in real time hey let's take it out the application changed put it back in application changed again very powerful feature in that sense we also have a cool feature in available as part of the in-app toolbar which lets you see exactly the alignments of things so as you select you can see how that selection is aligned to other things so we draw grid lines based on enable selection so you say enable selection you click on something and then it enables you to show to show the grid lines around then across very useful feature more complex applications right there you can see exactly where reminder baby shopping ends and you can see how that aligns with that was useful so a cool little feature display adorners available and then with the selection I'm able to once again click on here and then see exactly oh where's this border defined then click on define view see where this thing is available in my source code so it's very powerful in that sense now let's keep building this application up I'm going to add some more of the code that I wrote before so I'm going to add another piece here which is a text block and and think about this my app has been running the whole time I am not having to switch switch around so as soon as I added another one let's in fact collapse this this is where collapsing is useful as I'm switching it's working right it's displaying the concept of the email now behind the scenes this is just all in VVM I've got bindings happening and the bindings are here let's lower this so I can show you we've got bindings to an emails collection an observable collection of of emails objects and we have selected item binding two ways to the selected item and then we have the text the text block binding to the selected item.body everything just works and you can go ahead and and say title so you can really change this in real time body works if you misspell something it's just not going to work until you fix it but you're getting errors inside of your output so if you're watching that you can see if you're just have spelling errors that are coming in there all right so there you go the application is being built up but that's not all this thing can do let's go a little bit deeper I'm going to go back to my to my cut and paste window here and put in a status bar into this application so right now no status bar if we were building a real client we'd have a status bar so I'm going to add the status bar in and now we have a status bar it's just connected works great but in reality a lot of the the way that you would compose a real you know WPF or UWP application is by using controls to move some of the logic out so in this case I want to move my status bar into a control now I've cheated a little bit I've already put a control in here so I have the status bar placeholder if you didn't have this you would have to stop right now and go ahead and make that happen so in here I will select this and I will say well I'm going to I'm going to cut this out because I don't need that and I am going to first add a reference to the control so all these you know normal XAML things MLNS says oh I did this before I should have cleaned it up but it's okay we'll do it again just because I want to show that everything you be seeking to do is really available in real time so here I am and I'm typing control and I'm getting IntelliSense IntelliSense showing me this is probably the control that I want to I want to highlight so I'm doing that and as they go down I can now put the control in here so I'm going to go down here and I'm going to say control column span close that out and right now it looks a little bit messed up because now my status bar lost the grid row and column span so I'm going to remove it I'm going to go and I'm going to open up the control I'm going to paste it in there and everything is back to normal very powerful you can literally be sitting here building your app especially if you again get your get your view model and everything working correctly so let's dive a little deeper on the tools that are available because this isn't everything so let's say I want to play around with the status bar but now I'm shifting scenarios a little bit I want to make changes that I don't want to commit right now hot reload is all about like you're changing XAML and as long as you don't don't delete the XAML you changed don't undo the XAML you've changed it's going to wind up in your application sooner or later now what if you want to just really try something crazy or experimental and you just want to focus on the session that you're working on now so we have a tool for you as well and I want to explain one confusion that I've heard customers say they're like well there's already a properties panel wouldn't they use a properties panel to change properties you would if you want them to be again be committed to the source code but if you just want to play with the application as it's running and just have it be temporary we have another tool for you let me go ahead and show that right now so I'm going to select the status bar control I'm going to open it up and I'm going to go to the status item in fact I'm going to go all the way down to the text block inside of it the one that says connected and I'm going to click this button right here called show properties now this will show something called the live property explorer this is another window it's not the properties window it's the live properties window so it's the one that lets you make changes that are temporary so let's go ahead and make some temporary changes just for fun first of all I don't know if connected is the word I want to say because I'm like well connected works both connected live right will that work will that sort of fit so hit enter okay yeah that's fitting the status bar is not breaking okay that's good I actually want to change font so I'm going to go in here and I'm going to say font size what if the font was 24 that's not going to work font 24 is definitely going to be was going to be too much how about font 18 still cuts off a little bit right not really great it's 14 14 oh 14 is good so now I know which which font I want to make so I'm going to go in here and I'm going to say font size 14 so this enables you to to play with application in a way that you can you can kind of go crazy and then you can reset everything back back to the default values or if you just stop debugging it will reset itself so it's very much safe to go ahead in there and make lots of changes that that you want to try so this is hard reload I've I've gone through and I've and I've built like a little application that sort of feels feels like a real application right we've got everything working and we can see clearly what our tree looks like so some of the other features that I want to point out that might you know might not be familiar to everybody is some of the work we've done so I'm going to minimize the app because I want to focus on the XAML window right now so some of the work we've done in the XAML itself one of the things that you might want to you know get help on because it's not clear where something is is for example static resources like Lizbox email style where where is the Lizbox email style located I'm not sure where where the XAML is if you right click on it and you say peak definition you can actually look at the definition and you can see the file that it's in and it's one of these temporary files that you can pin up it's just like peak definition in other languages and that works it works in a lot of places give it a try if it's not working somewhere for you let me know if there's a scenario we didn't think of we'd love to hear from you but that's a cool feature you can also right click and say or use of 12 you can say go to definition so you can actually just jump straight to the file and make changes there so if I wanted to go in here and I wanted to make the fonts even bigger there you go the font became even bigger again hard reload is still working as we're doing all of these things another feature that I've talked to people that they're not familiar we have it but it's actually really useful for really complicated applications that might have like let's say a lot of resources at the top and you want to look at something we're looking at XAML at the bottom we have the splitter right here if you drag the splitter just like in other places you can stay at the top in the top one you can scroll down to the bottom one and you can you know make changes cut and paste values things like that very useful feature and definitely worth knowing all of these little tips and tips and tricks to make it easier for you to build your XAML application so I'm going to go ahead and actually move this back up so that works and now it's back into being one single window all right let me make sure that I've shown you everything that I wanted to all right I think I did in this case so let's look at one more feature here so I'm going to stop debugging this is a feature that's available and it's best to look at it when you when your application gets a bit more complicated that's why I kind of kept it today and this is a document outline really undervalued window in the XAML tool space we're in fact thinking maybe doing more with this in the future we'll see how that goes but basically this window enables you to see the all the controls that you've written inside of your application and you can go ahead and look at the designer and you can make things you know visible or hidden so it has that ability in my case I don't have much to show in that sense but but you get the idea so these are these are temporary changes that don't apply to your to your running app it's design time properties that you're changing you can also right click on a control in here and you can edit a style and create a copy just like we saw you can click on view source and it'll select where in the source this is so think about document outline as the control that you can use when you're when you're using the designer and the XAML editor the app is not running and then when you switch to hard reload as your app is running that's where the live visual treat LVT as we call it is available for you and lets you lets you do everything you need to do there all right I also want to point out a couple of things like we're constantly making this better so I'll give you some examples there was a deadlock error like we messed up we had an error where if you said in WPF application go to definition we actually froze visual studio really sorry about that we did not mean to do that we fixed it it's in one of the recent updates there was also a bug where as you're typing intelligence for example in the code editor you would get static resources for let's say a list view and we would in theory only show you the styles that apply to target of type list view but we had a bug we were showing everything so things like that are being fixed we're not making a lot of noise about it but we know these these are behaviors nobody wanted to have and if you find behaviors that you're like why is this working kind of strange let us know we could miss something too but we really want to make it better so these are investments that are going in for WPF and UWP developers we're doing everything for everyone every type of customer that we have all right in the last couple of minutes I want to show you one more demo so one thing I will point out is that we're switching gears quite a bit here but it's really worth knowing about so I'm going to switch over so these are just the hard reload docs I had opened just to demonstrate like we have hard reload documentation that's where the link goes if you click on the link but let's switch to another another doc completely to XAML islands XAML islands is a technology that's been being worked on for a while it's a technology that enables you as a WPF or Winform developer to host UWP controls inside of your application so let's jump back into my slides for just a couple of minutes here and just an interest of time I'm going to go quickly through it and just explain that you know XAML islands think about it as if you have if you think about UWP as a whole there's a lot to it there's an app model there's MSAX there's all of these things but one of the biggest parts of it is the controls and if you want the controls in your application XAML islands is the way we've enabled this just wasn't possible without XAML islands the work that my team is doing for a future release probably sometime in a 16-4 time frame is we're making it so that implementing XAML islands will not require you to do manual steps today there are some manual steps that you would need to do we're making it so you don't need to do manual steps and the ways XAML islands work today is requires 1903 version of windows they are looking to backpour XAML islands to older versions of windows but for now that's the thing and it allows you to host inside of a C++ app as you know Win32 app WinForms or WPF application and then you host your your controls in there and there's all these wrappers that we've built I would say just look at the documentation that's the best place to get all the all the information but there's lots of wrapper controls that the team's built it's open source and it's pretty easy to implement it's it's kind of basic there's not a lot of tooling support it doesn't give you all the niceness of hard reload designers but it does work in your application so if you block this would unblock you and just a quick demo of what that can look like I will show you something that's super simple this application literally has three list boxes but it's very significant the first list box on the very left is the one that comes with WPF this is a WPF core app with a WPF list box nothing to see here this next one is XAML Island it's a it's a it's a natively used I'm doing data binding using C-sharps I'm doing it in C-sharp just to kind of demonstrate that that's possible and then we have a third one which I've styled so it's even possible to style it as well because I'm hosting it in a custom control so I have full control over style look and feel and I'll have the sample available as part of the link so that's kind of my demo all of this is here for you I wish I had more time and I'll be back on we have community stand-ups and other things we're doing via Stoolbogs to talk more about this and thank you so much for joining me if you have questions please tweet at me or email me thanks a lot all right awesome thank you so much it's Dimitri so we have a couple of questions let's start with this one so JDK wants to thank you for using the dark theme for your demo dark theme huh I like the dark theme good his eyes can't take any more of the white background so thanks Dimitri let's see what else do we have Matthew says the changes to XAML Designer that I'm seeing right now give me hope for a normal sleep cycle in the future oh hey yeah we're trying it's a goal of ours and we have some really interesting things planned for the XAML Designer if you're interested to have conversations with us again tweet at me and or email me on dimitri.lilin.microsoft.com I'll make sure my email is available easily for everybody so here's a question that I have is it pronounced XAML XAML or XAML Seth we've talked about this yeah XAML okay are you sure though it's XAML okay okay XAML XAML all right so as we go we are almost done with this part of it we have one more session but before that I want to let you know that you need to participate in the technical treasure hunt and that's the important bit you can do that all day today there's gonna be more stuff going on but before we go to the next session which is secure your Nugget package ecosystem with Karan Nandwani did I say that right yes you did we have something to show you let's take a look at it hey there treasure hunters I've got your next clue in the hunt and this one's from the folks at contrast security they want to know at this URL which one of the code snippets contains a security vulnerability do your best investigation take a look let us know whisper your response in the form of code and a letter one of the letters that corresponds to that code snippet that does contain the security vulnerability whisper that to the .net bot in the visual studio chat room on twitch and you could be well on your way to the next step in our technical treasure hunt hi i'm cam sober a content developer working on .net docs here at Microsoft welcome back to entity framework core 101 in our previous video I showed you how easy it is to use entity framework core to create and work with a new database in this video we're going to show you how to use entity framework core to work with an existing database by reverse engineering it looking at visual studio I have a brand new console app that doesn't have any code added to it at all I've already added the new get packages same as the same as we do with a new database Microsoft entity framework core dot SQL server dot design and dot tools I have an existing database this database is already populated and was built by hand by a database administrator to reverse engineer the database and create my entity model code I'm going to use the scaffold db context commandlet I'm going to pass in the connection string I'm going to pass in the name of the provider so it knows what type of database to execute the connection string on and then I'm going to optionally spass specify an output directory and a name for the database context now that the scaffold is run we have a complete working entity model looking at the product's entity it should look pretty similar to the one we created in the last video one difference you'll note however is there's no data annotations describing the behavior of these properties for example which one might be required or might be a key that's because these behaviors are contained in the on model creating method of the database context if we'd like to create an entity model that looks more like the one we created in the previous video we can do that too I'll start by deleting this entity model and I'll run the scaffold db context command again but this time I'll add the data annotations flag this time the product's entity has data attributes that describe the behavior of the properties such as the key and required and the on model creating method in the database context is much more sparse now that we've seen how entity framework core can work with an existing database in the next video I'm going to show you how to use entity framework core with ASP.NET Core to streamline your web development hey everyone welcome to .NETConf my name is Karan Nandwani I'm a PM on the NuGet team today we'll be looking at how you can secure your NuGet package ecosystem in the recent past we have there has been an increase in the number of supply chain attacks and they have made the news we have seen that there has been a propensity for using package managers as the as the mode of attack for some of these things today let's let's look let's recap some of these incidents and see what we can learn from them so homebrew is a package manager that you can use to install software on linux and macOS and there are many use cases here such as setting up a def box really quick with the essential tools so that that new developer might need now in this case sometime last year a security researcher was able to get access to the core homebrew repositories they had commit access to these repositories which means they could have made a change and that change would have flown to anybody that that ran homebrew update or recently installed homebrew and they would have gotten their malicious formulae now the takeaway really here is that there was no way for the end user to protect them protect themselves so really what we are asking is there should the tools that package manager should be able to detect if a package has been tampered and block installing such packages in addition there should be a way for package authors to stamp their identity on a package and the on the other end for a package consumer to be able to validate this identity and confirm that this package truly came from who who it says it came from in a separate incident last year with npm the npm account of the of the maintainer of a really popular package was compromised the attacker went on to publish a malicious update that got into 4500 accounts and got the credentials before before it was taken down now this was we should understand that this was not a fault on the npm.js side the the attacker was able to get the password and username for the maintainer from a third party leak and was able to reuse it to gain access to the maintainer's npm.js account so the clear takeaway here is that username and password security is simply not enough in a separate incident a attacker uses a different vector to target target package users they published several packages that that looked very similar to a very very popular package which has over two and a half million weekly downloads the they then went on to these are all malicious packages that harvested environment variables from the victim's machine and this attack went unnoticed for nearly for nearly two weeks so the key takeaway here is that repositories popular repositories should be able to detect and block typosquadding attempts in addition there should be a way for users to define which which publishers they really trust and if a package does not meet that specification it should fail to install now let's take a quick look at what does a typical NuGet workflow looks like and what are some of the best practices so let's say I have an awesome library that I want to share with the world and the obvious next step there would be to create a NuGet package the first best practice here would be to author sign it now author signing it allows me to stamp my identity on the package and on the consumption side it allows the consumer to validate that this package really came from me next I want to publish this package to let's say NuGet.org last year we NuGet.org adopted MSA based authentication which allows users to opt into 2FA now setting up 2FA is really easy it is literally three steps after you log into NuGet.org now if you are an enterprise customer that uses Azure Active Directory to log in you can ask your admin to enable 2FA and it's just that easy as we have seen enabling 2FA would have prevented several of these attacks that that we looked at the next step here really is to publish this package to NuGet.org now when the package is being pushed to NuGet.org we actively check if this package ID looks very similar to an existing package and if it does we block it from publishing at that point itself after it passes that and it does not look similar to an existing package it undergoes several checks to see including virus scanning to ensure that this package is safe for consumption once it passes these checks NuGet.org then signs it with its own repository signing cert this way you can be guaranteed that this package is truly coming from NuGet.org even if you are using it through let's say ADO using an upstream source or this package or rehosted on an internal feed etc. now let's look this was the publishing side of things let's see what we can do when you're consuming these packages so to begin we have something called as client trust policies this allows a package consumer to define policies that say I want to trust a package that has been authored by a certain author or I only want to trust packages that come from a specific feed let's say NuGet.org and you can get more specific by saying only by these specific users or accounts let's take a look at a quick demo of how you can do this in your day to day flow so I have a a solution that is NuGet Cleaner I'm working I've been working on this side project for a while now along with the new PM on the team and I want to implement client trust policy the first thing that I did here was add a new NuGet.config file and this file is at the solution level this is necessary to isolate the settings that I want to apply to this solution from the other solutions that I might have on my machine so the first thing I really want to do here is start using a start validating signatures when the package is being installed the way you would do that is by setting the signature validation mode to require what this does is every time you install a NuGet package to any project in the solution it will check that the package has a valid signature now this happens at the time of installation which means when the package is being extracted it checks for this signature and then that point onwards that package assumed to be safe hence it is a best practice to add a new global packages folder which is exclusive for the trusted packages that you want to use with the solution the way you can do that is simply by using by adding a new key called global package folder and defining that folder now let me quickly close the solution and reopen it so that the new config can take effect all right so let's try to install some NuGet packages into this into this project I'm going to try to install need inside of json and what do we have here the package failed to install although it has a valid signature the reason for that is we although we said we want to validate packages on installation but we did not really specify what pack what packages or sources we trust so the next thing to do here is define NuGet as a trusted package source the way you can do that is using the NuGet trusted signers command and you can say add a new new trusted signer and say NuGet and what this does is it'll go out to NuGet figure out what is the right fingerprint for the for the packages that are signed by NuGet and in certain your config file so I'm going to once again reload my solution for the settings to take effect and let's try to install that package again and as expected this package now successfully gets installed but what if you told me that I I want to have more fine grain control over the kind which users on or which package owners on NuGet or get trust you can easily do that by specifying owners and in this case I'm going to say I trust James and K and I trust any packages that is published by Microsoft awesome so let's reload our solution again and we're going to try to install a bunch of more packages so I already installed Newton's or Jason I'm going to try to install this one for Microsoft it should since tells me license acceptance goes through perfect now what if I install try to install a package which was say something like this castle.core and as expected it did not get installed because although it is it has a valid signature it is not in our list of trusted signers so to summarize client trust policies allows you a guarantee is you package authenticity and integrity that is you're guaranteed that this package truly comes from who it says it comes from and that the package has not been tampered with after it was created or published to NuGet at all now in addition to client trust policies you can also use log file what log files do is they store the hash of the package content and when a package is being restored it validates this content hash against the package which is being restored if the match if the content has does not match it fails the restore and ensures that a package does not a bad package does not find its way into the into your NuGet dependency chain and to close the loop here we have hosted a first-class and highly available symbol server on NuGet at all this allows package owners to publish symbols using the new snub cake format the new snub cake format uses a secure portable PDB for symbols this also allows you this also allows you to and securely debug your debug your NuGet packages and to make things easier NuGet Rock symbol server is listed as one of the default sources in Visual Studio the added security here is that the NuGet the DLLs in the NuGet have a checksum for the PDBs which means that when you're debugging the Visual Studio debugger will actually validate that this checksum matches and provides for a secure debugging experience now let's take a sneak peek at we will be integrating with GitHub token scanning service what this means is if you inadvertently checked in one of your NuGet or API keys within seconds we will be able to detect detect that and delete that API and disable that API key and also notify you this will ensure this will minimize the the potential for malicious use of anything that has been the any API key that you might have leaked uh also we are working on a new feature that helps you identify and flag vulnerable packages anywhere in in your dependency graph this includes any packages that you have taken any packages this includes your transit dependencies as well and this will allow you to proactively update your dependencies to a one to the ones that have do not have these vulnerabilities and ship more secure code and applications to your customers so for anything that we looked at today uh you want to know more go to akms slash secure NuGet and you have we have links for everything there um that's all we have for from from the NuGet perspective thank you very much all right I'm excited to be here Mika me too so we have just come into frame because I was seeing like some spice girl stuff over there yeah and they're like hey Seth the director's like you need to go in there right now right now yeah because you know you're not a very good singer when it comes to the spice girls number one and number two you're kind of working and you're like you're on the clock let's get in there yeah maybe do something yeah all right so what do we got here for a new post looks like we are done for today thank you so much for that that was awesome the cool thing about NuGet the cool thing about NuGet that I like is that it allows you to share code but that's also the bad thing about NuGet so it's good to have all of this this infrastructure to make it a little safe do we got anything else in there yeah Ryan actually is talking about securing NuGet packages that build super pumps about this session also fantastic so securing NuGet like I said the cool thing about NuGet is that you can share stuff but that's also a bad thing about NuGet okay so look we are done in studio for today yeah is that right yes we are okay so what we're going to do what we're going to do is we're going to now toss it over to studio see yeah so you can still ask questions on the.net com hashtag but I'm probably going to go home and like have like a dinner and then maybe go to sleep or something yeah take a nap sink some more a spice girl so what we're going to do is we're going to have Jeff come in here because right now come on over dude as he's coming we're going to toss over to them you had the party last night too right the after thing we had the after party last okay okay yeah okay after party party okay and so were you wearing that no okay so so now this time we're going to have like an extra party so looks like you're muted right there so what we're going why don't you why don't you talk into the small of my chest here hi Seth it's so good to see you how are you buddy over so that I'm not muted now he's on am I on can you hear me now I know you're on before but not with the mic I say we're professionals so let's go show more studio C is let's go for a walk all right yeah let's do it so what we're going to do is we're going to go out here I'll open the door for you because no one ever gets to see Channel 9 Studio the way I do so this is Channel 9 Studio yeah that was off so let's come over here wait come here I'm going to I want you to meet someone come here come here closer closer this is Beth Massey she is the one that did all of the work we just stand around and look pretty here looks speaking to this right here I love you all thank you so much we had such a great event we adjusted the mic so that she could literally talk right into it right do you see this this was all planned by our wonderful studio people so we're going to have you back up here let's come over here let's go for a walk let me show you all the buttons that they push I'm going to try to push some buttons and if anything happens just let me know this is where all the buttons happen right this is the director here camera and cam cam goldmose tells us what to do and we do it mostly out of fear so there is that and so these buttons she says never to push okay this means that we're recording it right come on come over here so that way at the end of 24 hours all of this stuff all of the hot little bits are going to be in your hands as well so should we go back to Studio C let's take a walk all right come on let's come think it's about time let's come this way here so you don't want to take it back is that awkward for you no no no I got to come over here so this is Studio C obviously it says warning anything in this room can be live stream so we're going to go in here so let's open it up here we go okay hello fantastic oh my goodness this is now where the magic is going to happen afterwards so why don't you come in here here join us very good oh my gosh so we're about to go live live 24 hours straight on Twitch twitch.tv slash visual studio if you're out there if you're watching on Twitch click that follow button you want to follow along you want to know what's happening because we've got lots more content after .net conf for you but we've got our crack team of hosts all throughout the day you're going to see a bunch of folks hosting showing content throughout the day or every time zone so they are telling me to wrap in my ear because I have a special ear piece that makes me get into really special places all the time it's really fantastic so we're going to wrap it up here with the .net conf from studio a oh they tell me to keep talking so Javier here is the other mastermind that you may not hear let me scoop down so you can you can talk into he does all of the website stuff and he brought up a beautiful dashboard you're welcome hold on let me get closer you are welcome thank you thank you so here here's how technical we are look at this double keyboard two keyboards because I have to this is a two keyboard show it is a hunt it's great and there's more buttons look at all these buttons there's buttons don't push this one though they told us that this will cause issues it is not good there's literally an X there that says don't push it but I kind of want to push it all right no so before we go we'd like to say thank you for those that were with us in studio a we're going to turn it over to studio c after a short little break but it go to twitch.tv front slash visual studio to continue all of the joy and the fun make sure you tune in see you there


Hello and welcome to the session, let us understand the following question which says, in a liquid lateral triangle prove that 3 times the square of one side is equal to 4 times the square of one of its altitudes. Here we have the following figure, triangle ABC which is an liquid lateral triangle and AD is perpendicular to BC. Now let us proceed on to the solution. Here in triangle ADB triangle ADC we have AB is equal to AC, sides of an equilateral triangle are equal to angle C because each angle of an equilateral triangle is 6 degrees. Angle ADB is equal to angle ADC equal to 90 degrees. Therefore, by RHS criterion of congruence we have triangle ADB congruent to triangle ADC. Also we know that corresponding parts of congruent triangles are equal. This implies VD is equal to DC. Also VD is equal to DC which is equal to half of BC. Let us name this as number 1. Since triangle ADB is a right triangle, right angle at D by Pythagoras theorem D square AB square is equal to AD square plus BD square or AB square is equal to AD square plus half BC the whole square by 1. This implies AB square is equal to AD square plus BC square by 4. This implies AB square is equal to AD square plus BC can be written as AB because all the sides of an equilateral triangle are equal. So we can write it as AB square by 4. This implies AB square minus AB square by 4 is equal to AD square. This implies 3 AB square by 4 is equal to AD square. This implies 3 AB square is equal to 4 AD square. That is we have proved 3 times the square of one side that is AB is the side of an equilateral triangle is equal to 4 times the square of one of its altitude and here AD is the altitude of the triangle ABC. So hence proved. I hope you have understood this question. That's all for this session. Bye and have a nice day.


Hello everyone, I am Trisha Dora-Burra from the Bhupan Hazurika School of Mass Communication Krishna Kanta Hanik State Open University and I would like to welcome you all once again to another informative online class. In today's online discussion, we are going to talk about Unit 3 of the paper, Traditional Folk Media, which belongs to third semester of BA program in journalism and mass communication under Krishna Kanta Hanik State Open University. In the previous two units, that is Unit 1 and 2, you are introduced briefly about what traditional media is all about. In today's particular unit, in Unit 3, we shall talk about the history and growth of traditional media in India, a brief overview of some of the traditional folk media forms of India, as well as the impact electronic media has on traditional media. And finally, you know, we shall look into some of the applications of the traditional media for the purpose of development. Now when we talk about traditional media, what does come to our mind? Traditional media is something that has been passed down generation after generation. Now each culture have their own traditions, which are actually given or passed on from one generation to another generation. Initially, you know, we didn't used to have electricity or other technological tools at a disposal. And thereby, we didn't have any electronic media or for that purpose, any specific media which is based on electronic forms for the purpose of entertainment or information. Now have you really wondered like how the messages were communicated at that point of time when there was no such specific media, when there was no specific medium of communication, medium of channel, well, there was indeed communication was there, but there was no such technology enhanced media, technology enables communication tools or you know, channels through which such messages could be communicated.  And so the people they used to adopt different ways of communication in the form of songs, there were dances, there were musics, there was drama, there were stories and puppet shows and so and so forth. Because you know, people since we live in a society, so we have the innate, you know, interest or ability to communicate with one another. And so there were different mediums apart from electronic media, how people used to communicate. And even the stories which we are talking about, the oral traditions, oral forms that could not be documented, they were spread to this different forms of media. And even during these days also, we have different, you know, such kind of communication tools at a disposal. Even the remote interior villages, you know, where you don't find the proper electronic media or you don't have a proper online-based media to communicate. People make use of such folk forms, different folk art forms, different folk dances, different folk songs to communicate with one another.  And have you actually enjoyed a live performance of drama in a village or any other area where you reside? How was it narrated to you? How was it communicated to you? Now, when your grandparents or when you're, for that matter, your parents then narrated the stories of our folk forms and all. Definitely they didn't make use of any, I guess, electronic media forms. They were told to you in face-to-face mode, you know, in oral mode.  And this for another umbrella of traditional folk media. Now, let us try to understand how the traditional media in India has evolved over the years, the history and growth of traditional media in India. Now, when we talk about the history, the history actually dates back to those ancient times when people that began to understand the value of civilization and organized living. And folk art was not born out of suddenly in one particular day. People wanted, people actually fell the need for entertainment, for satisfying the creative urge to express and remain united as a society. Now, as far as the McBride Commission Report of 1982 is concerned, which is actually known as Many Voices One World, and communication began, it actually became institutionalized in traditional societies. This particular report sees. And interpersonal communication and public institution communication in a form of transmission of norms and customs in grue and profession categories of people in course of time came to be responsible for the transmission of certain types of messages. And when we talk about the different categories of the professional people, there might be, you know, sorcerers, tribal chiefs, traveling merchants. It may be they may be local administrators. They may be dancers, scribes and so on and so forth. And as far as India is concerned, the folk traditions grew parallel across the country in different forms, basically catering to the needs and preferences of the people belonging to different age groups, belonging to different regions and actually giving a creative satisfaction and simple joys to the people. Because you see, we do have a print media. We do have electronic media and we do have online media. Now, why do we need the importance? So why do we need traditional folk media? There is definitely an important point in that. Traditional folk media gives us a sense of belongingness. It makes us feel that we are a part of the society because traditional folk media makes use of the traditional forms of communicating with one another unlike, you know, other electronic media forms. Because electronic media, there is hardly any, you know, contact in real time with one another. Of course, these days we have, you know, online way of, you know, chatting with one another. We have online, we are interacting with one another. But having said that, keeping that aside, the traditional folk media, it makes us feel that we are communicating with the person in real time because the person is in front of us. And the different forms or different, the messages that have been transmitted to different folk forms are very much, you know, a part of the society. And that makes us feel, you know, a part of the society. Now, according to Malhan, Malhan is a, he was a very renowned, you know, media personality. And in 1985, he has enlisted three or the most four different forms of traditional media. The first important form which he has highlighted is the action-oriented folk arts and verbal musical forms. You know, when we talk about action-oriented, it means that, you know, the folk art forms or the different folk media forms are accompanied by action. Like we have rural theater, there is puppetry, there is discourses, there are folk songs, the ballads, storytelling, and so on and so forth. And the second important form or type of traditional media, as given by Malhan, is the audience situations like festivals and fairs, social, ritual and ceremonial gatherings and meets. Because you see, it's not often that, whatever we, it's not only that, we gain different forms of information, we gain different knowledge, only by, you know, you know, getting through different folk media forms or maybe through different print media forms or electronic media forms. We also get some amount of idea or some amount of information we get by attending different festivals as well as different fairs, different ceremonial gatherings. Because, you know, when we attend the different festivals and fairs, we get a brief idea of what the situation is all about, the different actions that take place in such a place or such a, such an occasion. It enlightens us, it gives us a bird's eye view of what the situation might be. Third important type which Malhan has enlisted is the opinion leaders like the village heads. Now, in most of the villages, especially rural areas, we have the village chief, shift minister, the village heads are there.  Now opinion leaders, the main function is like, you know, they try to inform the general public as a whole. They give their own opinion because the information they collect from the different media channels, they use it for their own purpose. And then they try to percolate that particular message down to the bottom level and they disseminate that particular message to the people at the lower level. So they play the important role of opinion leader. Lastly, we have the rural arts and crafts, traditional designs and miscellaneous motives. Now, when we talk about rural arts and crafts, because art, the crafts of different regions are different. For instance, if you talk about some, we have our own traditional art and crafts. If you talk about the art and crafts of Rajasthan, they have their own indigenous art and crafts. So the different traditional designs, the different motifs, they kind of bring out a different identity of the particular state of the region. So rural arts and crafts are also one type of, you know, traditional folk media form. Now, these different traditional media forms, which Malhan has and so they not only give a sense of information, but they also provide a type of mass entertainment and they serve as indigenous tools of interpersonal and integrative communication more specifically in the rural areas. And as time has gone by in the new course of time, different regions develop specialized regional folk media like the Tamasha, Maharashtra, the Jatra, Bengal and Yakshagana of Karnataka, which actually acted as communication channels for heralding the reform, social changes and develop in the Indian society. And there's different folk forms. We have different folk dances, different folk songs, folk theater, puppetry, the traditional art forms, you know, they all have been used at some point or other for social, cultural, religious as well as political purposes. And not only that, it also, they have been used for providing pure entertainment or purpose also. Now, and you know, these different folk forms, these different folk forms, different types of traditional folk media forms, it's not that, you know, they caters to a particular age group, because they have a kind of, they are so much indigenous in nature and the different socially relevant messages, which different folk forms they try to disseminate are so much related to our own lifestyle, our own way of living. So that makes us feel that we have a sense of belongingness we feel that we belong to whatever message that these different folk forms they try to disseminate. And traditional media, basically it's a beautiful area of dance, there is music, there is songs, there are prayers, there are different moral lessons to know, there's epic, there's mitology. And when, and one, another important fact about these traditional folk media forms is most of the time, you know, the medium of communication is their own native language or their own regional language that hardly there are one or two instances where, you know, English has been used as a medium of communication because now usually people feel more connected when such kind of information is passed on in the seminar to the people in their own native languages, in their own regional language. So definitely people will know, it's not only the people will be able to understand a better way, the topic which such kind of messages are being disseminated, but the people also will feel okay, our own society is being depicted in such a way that because we are part of the society, so my lifestyle has been depicted in this way. So I will be more interested in whatever message this different traditional folk media forms tries to convey to us. Now there's another very senior folk media scholar, his name is Balwan Gargi. He has actually defined traditional folk media form as, you know, he says in his own words, that folk media represents the people in their natural habitat with all the contradictions and multi-ferrous activities. It gives a glimpse of that style of speech, music, dance, dress and wisdom. So what he exactly means is that it represents the people. Folk media doesn't only represent that, you know, people are working in some place, people might be working in their respective workplace, people might be at their own residences, people might have gone for visiting some other place. So they might be at their own respective place during their different activities. And folk media represents the people at their own natural setting. It shows their way of the style of, how they're communicating. It shows the way of communicating to the medium of dance, to the medium of music, what dress code they are using, you know, what information they're passing down from one generation. So these different areas or these different, you know, multi-ferrous activities are being highlighted by the folk media. Now, let us try to see some of the important, you know, traditional folk media forms of India. Now, first, of course, we have the folk theater. And folk theater is a composite form in all the regions. It combines dance, music, art, dialogues, poetry and even folklore. And in some places, the themes which they are taken, you know, for the folk theater performances, they're taken from mythological characters. There might be mythological stories or different folk tales or legends and all.  For instance, you know, in the North part of India, we have the Nautanki and the Ramlila. They're very popular folk theater forms. And as far as Eastern India is concerned, we have the Jatra and, you know, as, and father towards East in Assam, we have the Ankyanath. So this is some of the very popular folk theater forms. And another important, you know, of course, it's that other different folk theater forms as well in the entire country. We have in Gujarat, we have the Bhavai and towards, you know, in Tamarsha also we have. Then Nautanki, basically it's another folk theater form, which is performed in North India. It opens stages and it also draws narratives from epics as well as folk clothes and heroic tales. And they're actually used to make social and political comments. And on the other hand, Jatra, Jatra is very much popular in Bengal, Orissa and Assam. And it actually got its name from the, you know, nomadic nature of the performers who travel from place to place. They give different performances. And because the nomads, you know, Jatra means you're moving from one place to another, literally translated. And so from that particular action, from that particular activity, the name Jatra has been coined. And this form, it got, it became very much popular among the communists, more specifically to spread the socially relevant messages in both pre and post independence India. Then the second important folk form or tradition folk form of India is, they're the folk songs. Now, I think we don't need much introduction about the folk songs. I think by now you must have understood what folk songs are all about. And as far as India's concept, we have a very rich collection of folk songs. And Professor Shyam Parmar, he's a renowned person belonging to this field of media and journalism. And he has actually divided the different folk forms into following types. Okay. He has said the first important time which he has focused upon are the Bhakti songs or the devotional songs, which has very strong links to classical music. Then we have the ceremonial songs, which include other seasonal songs or ritual works and all. And the ceremonial songs, basically, those are sung during certain ceremonies and all.  So, during certain ceremonies and all, or maybe even during marriage functions and all, during marriage ceremonies and all. So, those ceremonies which has some kind of value, or maybe which has some kind of relation to the Indian society highlighting any particular occasion. During those occasions, also such ceremonial songs are being sung very, you know, very occasionally. Then, of course, we have the tribal songs. So, these are the three important folk songs that are being highlighted. And there are also other important popular folk songs, which includes the ball and the Bhatiali of Bengal, the Duhairas and the Garbha of Gujarat. And of course, Nassam, we have the Bihu. So, you know, the main objective of such folk songs is that they not only serve as a purpose of entertainment, they not only give a sense of happiness, but they have a kind of, you know, relevance to the society. Now, what is that relevance? They try to integrate different issues that actually take place in society. And they try to, you know, disseminate or they try to focus on those issues to the different folk songs because the different folk songs express socially significant messages. And actually, they have been used to foster a sense of national pride and integration. The third important form of folk songs are the narrative forms. Now, what are narratives actually? Narratives means like when you talk about folk songs. Folk songs, it's not only about there is music in it, there are lyrics in it, someone is singing the song. But sometimes the folk songs can be in a form of narrative forms, where someone is reading out the different lyrics or someone is narrating out the different story behind that, you know, occasion. So, those falls on the narrative forms. And poetic forms with a strong narrative element, they have actually proved to be a particularly useful form from the point of view of communication of messages. Then lastly, we have the religious discourses. Religious discourses are popularly been known as Hari Katha. Of course, it's known by different names like Katha, we have Kirtan, we have Katha Kalakshepam and Pravachan. It involves a kind of dramatic exposition of stories and songs. And generally it is seen that such type of religious discourses, the performer, the person who is actually trying to con with the different issues. He is known as Kathakar actually. And he is actually expected to have a good amount of knowledge of the different scriptures because he will be narrating those scriptures in different locations. Because people will be there. So, when the person who is actually narrating this, you know, such kind of stories to the general public, he or she should have a very good amount of knowledge about the scriptures, about the music, about the qualities of a good actor as well as a proper knowledge of local customs. Because suppose someone from Bengal comes to some and he or she tries to engage in religious discourses. So, obviously the person from Bengal must understand what is happening in Assam without, you know, he or she if he starts, you know, you know, speaking on different religious issues without even considering the sentiments of the local people, then that would not be healthy in the long run. So, a proper knowledge of local customs along with proper knowledge of the scriptures as well as music is very essential, you know, to make the religious discourse appealing to the general public. And then we have the folk dances, of course. From the term itself, we can understand folk dances means those dance forms which, you know, try to imbibe or try to convey the different issues or different socially relevant issues or different folk forms. And folk dance forms, for instance, you know, we take about, let us take the example, Bihu dance from Assam. You know, Bihu dance in upper Assam is a little bit different than the lower Assam. But nevertheless, they convey the same amount of meaning. And Bihu actually signifies the essence of being an Assamist, the essence of the state of Assam. It signifies the cultural beauty of Assam. It signifies the natural beauty of Assam. So, every nuance is every step in this particular folk dance performance. It glorifies the cultural heritage or it glorifies the cultural beauty of Assam. So, different dance forms, different folk dance forms, they have such kind of, you know, it tries to disseminate such kind of meaning to the society. And such traditional folk dance forms are fundamentally very much similar. But of course, they have different names and are performing different styles. Okay. They are different style of performing. What may be, you know, what might someone see the Bihu dance performance as seen in the lower part of Assam might not be a bit similar to that, what that one visualizes in the upper part of Assam. So, there might be some differences, minor differences, but nevertheless, the amount of meaning or whatever content they try to convey is, it remains the same. Then, we have the traditional motifs and symbols. Now, as a layman, I'm sure you must have seen, you know, in most of the houses, most specific in rural areas, you might have seen, you know, people used to make little, little small dots of rangoli with different colors and outside their homes, even, or even doing festive occasions. You know, most specifically, I think the Diwali's and all, I think, most of us, we used to make the Alpana, you know, by trying to draw it on the baranda of our house. We try to welcome Goddess Lakshmi. So, this kind of, you know, occasions, when we try to, you know, kind of generate, we try to, why we do such kind of patterns? Why are we engaging such, engaging such in doing such kind of symbols and motifs and all? We have a different folk dancers. We have different folk forms. We do have different folk theater forms to, you know, give us a sense of entertainment to, to spread the knowledge, to give us some kind of information. But why do we still engage in such kind of traditional, in drawing out such kind of traditional symbols and motifs? Because this is a part of our everyday life. And this, this different beautiful patterns, which actually are made on the threshold of the house. And they actually, it sets a kind of belief. It helps us like to uplift the spirit, or maybe ward off evil energies and give protection. And as far as India's concern, people reveal many such kind of symbols, ranging from those which are very much simple kind of symbols to some very complex, you know, kind of symbols. And which might be in the form of figures and ritual drawings and so on and so forth. So, that is how, you know, people that try to communicate to traditional motifs and symbols. Because people want that through such traditions, they want the tradition to remain alive. Because in this particular age of electronic media, most of the time we find that such traditional forms of communication have actually come down to certain degree. So, people want to keep them alive. People want to make it a kind of, you know, to uplift or to take it to another level, the different tradition forms. And that is why they try to engage in such kind of, you know, different folk forms. Then we have the paintings. Now, paintings are also one of the important mediums of traditional media.  There has to be some kind of inherent meaning to that. Because it tries to highlight certain important social issues. In earlier times, you know, how the primitive man they used to communicate, you know, they used to, you know, draw or they used to paint in those huge caves. They used to paint the pictures of animals being hunted. They used to, you know, draw with the help of a sharp edge stone on the rocks and all. They used to show the which way the animals can be seen, or how the hunting takes place. So this kind of, you know, different communication, way of communicating certain issues or way of communicating certain kind of any occasion, people used to take the help of painting. And it's not that painting, they used to use different colored paints or they used to be different kind of colors while, you know, drawing out such kind of, you know, issues or such kind of instances. It was just simple. They used to just take a, you know, sharp-edged rock or maybe a sharp edge, you know, maybe some something which is very sharp in nature. And they used to just, you know, carve out a kind of any image that might come to their mind. And through that particular image, they used to communicate. And from that point of time to the present time, we have actually come a long way. And at that point of time, of course, the medium communication was basically to inform the people that were about what exactly, what activity they are being engaged. Of course, now the situation has actually changed.  That's just a different issue. But the thing is that the communication is still there. The communication is still prevalent. Even though the nature of communication or the issues to which we are communicating, the way of painting might have changed, but the primary focus remains the same. Now, let us try to understand, look at some of the examples of traditional paintings, which actually symbolizes deep meaning. Now, we have the traditional paintings of Madhya Pradesh, especially the wild paintings in Bundelkhand, in Chhateshkar, and in Gondwana, in Nehmar, Malwa. They are the living expressions of people, actually, who are linked with the socio-cultural environment of the area. Then, for instance, the Bheels and the Bhila, Bhilala tribes of Madhya Pradesh, you know, they used to paint myths that's related to the creation called Pitura paintings. You know, they used to carve out different paintings on the horses and elephants, on tigers and birds and gods, man, objects of daily life and so on and so forth. In the Gondwana region as well, there used to be unmatched creative vision has been shown by the Gond and the Pradhan tribes, who have actually impressed audiences at different exhibitions in Japan and France and Australia and in other countries as well. Then, let's come to Puppet Tree. Now, when we talk about Puppet Tree, what comes to our mind? Puppet Tree, they are a kind of, it tries to not only entertain the people, it tries to give us, you know, a sense of understanding of any particular issue, because it also conveys social messages. And generally, when we talk about Puppet in India, we have three important types. First, we have the string puppets, then we have the rod puppets, then finally, we have the glove puppets. And the person who actually manages the different puppets, he can be a single man performing the shows or a group of artists or a family of artists who are performing it at different places using the colorful puppets. And the different themes of this puppets for this different puppetry shows also different as part of the region and the traditions.