HackYourFuture
HackYourFuture CPH .NET Masterclass Session 5 Part 1
337 views
View transcript
if we are now reporting this session so to those watching the recording hi and welcome to the fifth and final session of the Peggy future that met masterclass so this is a very big event and I really really annoyed right now that I didn't time it better so we could actually have had this before the entire Penn deme academic thing broke out I guess that was a little bit hard to plan around but it would have been so great to you know finish all the stuff in person so my suggestion is that we do the session now and then whatever the world can slightly back to normal we will have a meet-up at Microsoft and a little hackathon maybe and take some pictures and you know chat about how it's going with us so if you guys are up for that I think we should definitely do that whenever you know and the sub news take over the world that's what we do when things get back to normal soon yeah so a little bit the strange very buddy that we're now doing this as a WebEx session but I don't know many in here are used to WebEx but I've used it quite a bit and it seems to be one of the better online meeting systems especially when you have multiple people joining in and watching and you want to record it at the same time so that's why I kind of picked it it's they've opened off their free level so it's actually quite useful and I think that would be a good option for us to go with you um so first let me turn it back to you guys and ask how are you guys doing with the homework how many how many to actually have a working game they can actually play that works in their browser on your microphone once again and then quick status I will start so I have almost working application I think that it's some sort of bug here because it's not like I see the game but I cannot see moves I cannot pick the cards like that but you just go through again maybe I made some mistake that's why it's not working shortly it sounds like it maybe it's the game state saving that yeah I guess that I need to take a look I don't know maybe last lesson us goes from the beginning again just check it like step by step if I'm correct okay I can't continue as I missed some of the sessions so I tried and I faced the error then I just used use this solution to continue for this session I can say I have yeah I have something working and I changed CSS so I have done last all week server but I need to implement some CSS so and I will pin you with this week yeah after this week so maybe I will work on that yeah yeah yeah till last week it was working fine but yeah I think yeah it was looking good yeah still here the appoints a week for walking I just need to update the CSS so that's like entirely better the cuts so hopefully after this class Gaby okay well update the CSS and then the code okay drop looking yeah so yeah I also got the until week a week for its yeah you can you can read you can play the game yeah is there anybody else that we're missing we have a few mentors and also new menses on here as well but was that it for the students that do me this time is this okay I will just move on and for those of you watching at home if you haven't done it yet you can of course pick up the sample solution and use that from here from the solution from week four and use that complete the week five exercises or you can continue on your old one there's no rush a deadline you can do it in your own time as well to just continue where you left off and catch up all the lessons are online including videos and sample code next step all do today again we just did the recap I guess I'm gonna have a few slides on assure because today is about Microsoft Azure I'll do it again a little code demo hopefully it won't be too long and then the plan is that I mean we should get all these free first items done then you know at the most an hour so we'll be done little later six o'clock then that's time for some dinner and doing the exercises that I showed on the code demo and of course if you need help doing the exercises there will definitely be some answers available like so you can ask questions and then at 8 o'clock we meet up in the same WebEx channel meeting again and I'll of course send out the link to get it just a little a recap on how everybody has been doing with that and you can like a closure of of the class so to speak so it won't be long I'm expecting maybe 30 minutes at the most if some of you will have something ready to show you know very well sure at that point in time I mean it's the same game so if somebody has done something extraordinary that would be really fun to see you can of course also just finished later and then share links in the channel to your online project so people can see it great so yeah sure and I first of all I'm just apologize for the state of these slides because it's been a crazy few weeks for everybody and also for me so a lot of things has had priority that I needed to finish and you so the I cannot ask minute things put together here but basically what we'll be looking at this is that we want you guys to achieve some kind understanding what Asia is and how which possibilities provides for us as developers we'll take a look at how you can use it to publish your own web application as an app service we will also see how to use as storage and used to maintain the state in this case the files that we're currently storing and disk will use chimp that's use as your storage was playing to us to talk a little bit about custom stbb I don't know how much detail into that with yen then we'll talk about some of the other aspects Fisher one of my favorite things nasha is cognitive services and we won't use that but I will definitely just talk about it a little bit and maybe also mention elijah functions so basically a sure this microsoft set of online services for developers that you can use as tools to publishing new applications or building blocks as part of your application and its really really powerful it's a little bit like Amazon AWS but I would almost say it's like Heroku meets deadly fire meets AWS and a lot more so you get a ton of services that I come from be improved and increased all hosted in the cloud you can use them obviously this course is sponsored by Microsoft for that's not why I'm promoting it this part is actually really cool service so so many services in it that I've lost count so what does that I'll just briefly go through later when we brush around is the key service that will be used a is the app services and there's a specific subset of those called web services which is basically where we can add our web applications that we created and have it hosted online so that means that we can basically take our game publish it directly from the scheudle studio on to Azure and then it will be running on your instance hosted online there's many different options from storage in Asia as well we'll be using one of them today as well I will be using the classic Azure storage where we can store props judiciously these files that we put up there we could have done many other things we could have put it in Asha tables we could have put it in queues we could have put it in event distribution we could have used sequel server or custom STP or many other databases because they have my sequel databases as well and so on available in action we could have used any of those today we'll do the very simple approach basically keep a file based approach to storing the gamestate but we will move it into the azure storage again automating databases there mainly different database setups and I should probably the most use the sequel Azure which is Microsoft sequel server in Asia but there many others the one that's really being promoted right now is cash flow steepy a little bit about that later as well you can do your own containers and tools Benitez whatever it's called and push that out into the cloud you can start up virtual servers not sure but you can later remote desktop to or you know connect to the terminal if it's a linux server do whatever you need there if your functions is a really fun way where you can just basically instantly write some code in a browser or Visual Studio for that matter and publish it out and it'll be like an online function that can do some kind of thing online so it's really just quick and easy way to get going I think own putting it online making an API or SDP I have some Shawn I'll show a bit more about cognitive services their social machine learning services that are really really powerful I will brush around it in just a second we'll get to this when we go through the code demo but essentially what you want to do is you want to go to action where guys have come create an account clicking the start free button and then basically there's some stuff in Asia that will always be free and then some additional service that you get for free for the first year and then that summer that you get the top dollar as your credit that you can use to try out paid services if you really want to have fun with machine learning and print your own neural networks using the machine learning tools you can do that for spending up to two hundred dollars in computing power and when you sign up so let's have a look here um yeah sure this maybe it's a bit more fun to actually just take a browser and look here and I'll show you guys a little bit later how this all kind of works but in the azure portal here we can create any kind of resource that we want and you'll get to the portal once you've signed in and created a user what you'll do when you start your exercises and you can see that there are abundance of different things you can stats do you can create thoughts you can set up machine learning you can do a facial analysis text analysis computer vision there were some parts of the cognitive services you have analytics tools you have big data tools so on so forth various computing powers you can set up virtual machines databases sequel a sequel database and so on so forth so it's just basically of Rawson through the catalog seeing what kind of service do you need and then basically starting that service and we'll be doing that a little bit later so yeah actually just for the fun of it let's just try to create a function SAP it's just a jump into one kind of function here and whatever you create some kind of resource you have to pick your subscription and I have a patient go subscription here and I think yours will probably be called the same even though you have to give us a credit card cuz you have to tell accredits you to use for stuff and then you have to assign any resource use it to a resource group you can use the existing one you can add a new one that's like a grouping category whatever you want to call it so that later you can manage a bunch of services at the together in one group in this case let's just call this it masters group and I would give this AB name just functions you need to get a unique name and then you can say in the runtime stack I want to use telnet core 3.1 and then family what to pick which region because of course that Dana send us all over the world so we're in the cloud that we want this to be placed that's something we can pick now and again it's good idea to pick West Europe or north Europe I usually call it north or a review and we've reviewed settings we can create that one now what we're creating here is a function that so a function that is basically just an app that we can use to create Asia functions in and then we get our entirely entire new interface just for working with functions creating functions first we have to wait for it to D be deployed and ready it should take a few seconds as you can see it's setting it up now and for this one do they even creates a storage account so we can store our functions in somewhere and essentially when it's all done it should be told that it's ready to see this is the demo God whenever you're trying to actually show something it'll always stay a little bit longer you there we go it's completed we can go to the resource so here we actually have the user interface flash of functions where I can actually go and I can create a new Asha function in this case I could just go in portal creation of a function and I could decide if I want a function that should be run on a time on every single day or every hour or every five minutes like a good example for this could be for our game that we have maybe in our game I want a function to to clean out the files every hour to make sure that all the game states that you know left behind that wasn't cleaned up by themselves that we clean them up every every hours like that I could set up a timer trigger for that I could also set up this is webhook plus an api so if i go for that one i create a new one there and then essentially what I have here is I have a piece of sample code you guys should be able to see here with method static method as we've seen before that's running with an it's coming in and then it will perform something in which an action so in this case it's a very very simple one where it basically takes a name from the query and it was shown - hello name so basically hello world function but basically here we could write stuff do whatever we wanted to do so in this case the Chris body was named Asher and the output is hello Asher and just by getting this one here I can get the function URL and come to the function URL I can go into my browser based in the function URL and I can think go in here and say name equals and say hello Alan so already there I have created the URL that I can exit call and provide with data online and I could do with that data whatever I wondered maybe I wanted to push it into cognitive services or to a storage or do some calculation on it I returned it I decide but it's just an easy way to just if you could you want some kind of functionality online just scripting it this is cool way to do it this is not really what we're gonna use today I want to show you that's a nice features as a functions how we can just create instant functions using c-sharp online learning like this we'll get to the app services in a moment so I like to come back to those this was the Hesher yeah these were the functions here we basically can set up triggers and events setups data bindings and use that with your code cognitive services are just want to mention this case I think this is extremely powerful and really really cool this set of REST API is that once you create an instance of them in a sure you get connection keys to use them and then you can use them to do really really powerful AI stuff so it's a lot of fun for instance I've worked a lot with the vision API here so basically you get a service where you can upload an image to and then it'll send you back an object with all the details about that image what is in the image which people are there what what what is the description of the image and so on using AI computer vision I should the image protect that's really powerful I build a plug-in for a CMS system where whenever you upload an image to the CMS it will automatically push it into the vision API in Asia and then decorated with was metadata details so you can later search for elements in the image and have to be on there you could also do it to do you know moderation you could do handwriting recognition recognizing emotions in people's faces identifying landmarks and finding celebrities all that stuff is just pure vision that you can call and use in any application right without any problems and of course these api's are not just limited to used internet you can use them with any other just if you want same goes for speech if you want transcription of speech speech synthesis as a thesis and so on speaker identification verification all of that you can just push your data in and get ADA back out same goes for languages for tech recognition text recognitions and key phrases recognitions and so on so you get a big collection of really powerful stuff that can test Matic that is hard to do on your own and you can enhance your applications using that which i think is incredibly powerful and a lot of fun to work with so you don't see a lot of core examples online people doing really cool stuff and reality what they're doing is they didn't invent anyway I they're just calling these services and I highly recommend playing around with them because they're easy to use and in any language basically and really really powerful that was a little sidestep just recommend playing with it next thing I just want to introduce here is the azure storage so the classical classic Azure storage is basically started with the blob storage which was basically a place where you could in Azure upload files and then later fetch the files that's what it does that what is this it is again really powerful because you can scale you can add any amount of files in any size basically and it will take it all store at all and it's very very cheap to store stuff in the blob storage basically both in blob and same storage plop stands for a binary large object so that's the object type that you use Internet when you deal with it this is basically something holding a stream of bytes that you will push up then you can later fetch work with said exclamations - and so on we will use it again storing game States as files or in this case streams of data blobs the weight that we put in the ash storage so we'll be using the part called blob storage which is here another interesting part is the one called table storage we're not gonna be using that but that's just really really fast and easy lookup of the table data so it's not a full database but it's a way where you can just push in a ton of data in a table and that'll just be two keys for it they'll be like you need two keys to access data you cannot make custom keys of course but if you access them they like saying give me the data with these IDs you will get the data back really really fast because it is extremely fast and it can scale through any amount of data which is very powerful one of the cool services powers is the have I been pawned service which bag out here which is quite famous you can always go and check if your email has been part of any of the big breaches of email and password confidentiality you can see here quite a lot of accounts in the database 9 billion email accounts that have been hacked our pond and those are the ones that you are actually searching through and it's using table storage to actually deal with this and the cool thing is that the cost of this table storage is probably the cost of a cup of coffee a month it's like five 10 dollars because it doesn't cost very much and it scales like crazy so as long as you don't need to complex queries and can just look up one index or at you this is a pretty good way to do it yeah huge storage is of course that you could put stuff in a queue objects in a queue and then you can later fits the objects from that queue to to interact with the objects so basically if you have a lot of the tasks that you need done and you know it starts to take some time put them in a queue and then you basically take first-in first-out from the top of the queue and do something to the stuff in the queue so it's its way of queueing the institution the other parts of storage here is basically based on the blob storage but it's ways to store files and virtual disks optimized for the virtual machines so we don't really need to worry about that here these three are really cool though especially table stores and web search even though they're they're one of the oldest services there it's still extremely powerful and very often used so we are getting close to code time just while we're still talking about storage I have a few blog posts that I wrote about the subject where I kind of try out different approaches to storing Dana I put a link in the readme for this week if you want to look at the first post it's just an interesting site read while you can I see I did some testing where I try - uh props against a stable storage and again it's the customers DB table storage and as you see puts server and and I got some numbers out of it which showed that I suppose DB which is the flagship state a scalar product is of course the fastest across things but but the table store which was was a clear second and again I both compare you know we'd create elite and so on it's a bunch of data points you can go and actually look and see see how do they compare to each other when we're talking big data so I believe I read in about 1 million records to have some amount of data to kind of look at in compare great so we were coming towards code time let me just ask are there any questions at this point feel free to unmute yourself and ask a question it's very hard when you muted no I get the most questions will be when we start doing sausage by ourselves so let's just stop sharing the screen so I will just be sharing in another screen I think to make this a little bit easier the second yeah just sharing another monitor now and messing up with camera feeds Jesus Christ it's happened never gets better so what we should be looking at now is of course the yeah what should we do today right and as I said the first place to start is we need to go and create an account in there sure I've already have the couch I'm not going to go create one but I'm not saying T I'm just trying to find the ID such go through here so the first thing we need to do and you guys should she be seeing my business to do now we have a game that is running that is working we the first thing we're going to do today is that we're going to try to publish that game to Asher just to see it working getting it on there it's always a nice way to kind of stop so if I take my issue portal in here I will create a resource for them and so the resource I will be creating in this case is the web app because I need a web app to host it and again I will pick a resource group which could be the one I created the last time I could also create a new one let's call this one the one resource group and I will give it a name now this name is the first part of the host name - your website stuff yet so it needs to be a unique name of course - prejudice but it will check it for us go 31 ellen and we'll say that is uniques that's good I can use that one I was a need to decide if I push record Argentina will be publishing code so don't worry about that one you picked the runtime stack we're publishing in this case I'm going to go with the net core 3.0 which automatically picks Windows machine if I can with the 3.1 because yes the Linux version of it means alcove organ Linux but there's no free tier and arena machines right now so that's why I'm using the 3.0 publishing through windows and then we need to pick the region that we're going to in this case again I said North Europe was a good region to pick I think that's probably based like in the Netherlands I've seen the map some time but should be fine then we pick the app service plan I already have one plan here that it created by default but you can of course create a new one the key thing is that when you pick the pricing for it and there's a lot of different pricings if another one a name here my people it will set us to an s1 with standard solution which is way too powerful for the open EDX to cut something so instead I go and I say change size and I go I'm just doing development I'm going to go to the f1 plan which is free it gives me a shared infrastructure 1 gigabyte of memory and 60 minutes at a computing time so that's the way I mean unless we're planning on everybody in the world playing our game here I think that's a good start of course you can obviously estimate the costs if you move up to like the next step would be another shared infrastructure but with a lot more compute power a day and the estimated cost would be 6 to Cronauer month and of course you can move up to your basic one and the basic one is like an X to add a custom domain name if you want your own domain name 31 game calm and so on so forth but then it gets a little bit more pricey at 344 a month we'll go with the free one for now and I mean we can of course move through the different elements here do we want applications inside just know that's tool to report errors for us which is fine I guess we can set up some checks or if you have a lot of resources we can search into the text we can find this one we don't really need that right now so now we'll just go here and we'll review our options and we will it create that will start the you know deployment of our resource so the interesting thing here is that yeah the Fried's here we are using it's just a shared resource so basically this is you know on a shared server with other sites and basically what happens is that whenever somebody will Chris decide it will load the site put it on a server and stand it up so people can use it and then if nobody uses it for a while it will probably remove it from that server again and clear the space use it for somebody else's free site next time somebody asked for it it'll load it in again so that means it can be a bit slower but I mean it works it's free and it's lower only on the first call basically so now we have it ready here and we'll go to the resource so we have website set up there's no nothing on it yet let's it up we can we can configure it if we want to and set up a bunch of things on it this is a good place to specify various connection strings and stuff like that that you don't want to check into your source control in your config files we can basically set up a lot of different settings here the really cool thing is that if we had used a paid plan of a certain level and higher we could say this won't automatically scale up and scale out so we could basically say I don't just want one web server to handle requests and 110 web servers to handle them Chris I want you to automatically scale up and had more front-end web servers whenever the note goes up so whenever the servers are at more than 50% err another web server to the mix so that's what many big online shops do you want to approach this Black Friday whatever they will basically have you know an automatic scale out and scale up plan getting bigger machines and getting more than the load so since it's just deploying instantly code it's not a problem just add more and of course headwear a paid pen we could also configure custom domains and so we could get our own domain name anyway there's a lot of fun stuff to just like look here and go through we're not gonna use today but it's still interesting to have a look at what we are going to use though is that we're going to go here and get the published profile by clicking and we will download the publish settings now that's an XML file with all the settings we need to actually deploy code to the side now we can go to visual studio and we can right click on our web project is they publish now we need to decide whether we want to publish this to I'm signed into my business to do with the same user that I'm signed into Isherwood's so I could actually probably just go here and select existing and I will be able to pick it from a lists I can also create new and I could actually create an entirely new app so it's just for me hear from you so studio and publish directly there but what will what will do since we just downloaded the file for it is the will go import profile and then we will navigate to the file we just downloaded I guess this is it it's all setup we check that the the URL yes this is we want to deploy configuration is the release we want to build the beliefs built under met Cora 3.1 and we deploy here so I go publish and what's happening now is the first its building my game a compiled in release mode and then it's basically copying it up to the sure web service reconfigured and it's ready to be used there we go it automatically opens it in the browser and we have the game running notice the domain here 31 ellen as web sites the net this is a public URL you guys could even go to it if you want and there are names a new game and wax they have to came here and it you know it's not pretty but it works right hopefully your games are much prettier than mine but you'll basically see that you can take this and you can make it work right here are there any questions so far should probably ask does anybody still there hey guys this thing yeah that's like yeah we have here is basically publishing getting it to this point here and that's all subscribe to the exercises this is the first step get up there where you actually have to came running online now the problem we have now is that even though the game works you will remember that I said this is a free tier application which means that basically our little web application will be recycled all the time it will be flown out when we're not using it and loaded back and starting on a new show only once used again so the fact that we're storing game States and files and the web server is not really a good idea because it might work right now but if I come back to the same game ID here and an hour it definitely won't work because it'll have been deployed to another machine and that file is no longer there and everything will break so until it's it's also just bad practice I mean we could risk filling up the amount of space the way actually allowed to put on the server by just putting gamestate files right so we should go away from the file based state saving here and move towards a better kind of storage so that's what the next exercise is about that is moving to a different kind of storage we could store things many many different ways you would probably in a real life scenario wants use some kind of database storage or maybe a table storage for these games I'm just going with a very simple option since we already have code that saves to a file and we can serialize education we're going to use the azure blob storage so again I go to my at reporting and I just create the resource for that new resource and we find storage and I say create a storage account blob file table cube and in this case we already have a resource group so I'm gonna use the research group called what's called 31 Archie and I give this a name and it does really matter what the name is when used for just internal things right now so let's say the my psychological the one in invitations you want Alan yeah that's good name for storage account and again I go I deal with the same location same because remember our website is I don't call this all the time so ideally we want to almost at a place fairly close to each other here we just go with a standard performance storage maybe two is fine we are going to go for the locally redundant storage just because that's the cheapest but you can set this up to automatically copy and have you know multiple location we've done and see if you have some very important plops you can make sure that they are giri is on redundant so that basically if an earthquake hits one part of the world then it doesn't matter because it will automatically fall back to redundant copy in another data center we'll just go with the locally redundant storage and we'll keep the hut exists here basically this means that the stored on a hard disk as opposed to the cool where it's probably stored on tapes or something I don't know what people use for massive storing these days so if we had a lot of data that we would use very rarely but we just needed to store it we could use the cool one in this case we have data that we will be using what I think we use hard we review again then we say create and we'll just let that create itself here so while we're waiting to that we can go to our code again and say remember we had this game service right this was the who made that would save game states to the files so last time we implemented an interface I came service if you guys would call them and the I game sure was basically you know implement that at the game sure is implemented this interface and that specified what does the game service need to do in order for it to work for us as a tool to to save from little games and you'll remember that we didn't configure it in the startup class here or we set up a service what we said add you know service that whenever people ask for my game service give them the game service and that way we could basically use it in our controllers had the king controller here where basically we were always just in the constructor taking the I came service the system will automatically supply that using dependency dependency injection and it would put that into the local field here and we could use that throughout all our methods to basically load the games and save the games and delete the games from the game is on so what we need to do is just to take that game service and create a new version of it the azure game service so in this case I already created it by adding a class so I have here the Azure game service and and it also implements the I came service now we need some tools to work with the stuff in Asia so to get those I basically again as you get done before once the pen differences right clicked nice nougat pages and then I would basically search for the right page which in this case see where it's cold it's cold I sure that storage this one here you can see I already installed it so you install that one it takes a lot of other pages with it takes a little while to install but once you have that one installed then you get all the tools you need to work with the azure storage basically and it is basically that I prepare my constructor method to ask the connection string that I'm going to get once the azure resource is ready but then the account so the account is the object that kind of holds everything apart now my account my storage account that I've just created I also need a client which is the client that has two methods that will do the actions that we kind of need so I'm going to get that from the account then I'm going to get a container and a container think of that as a folder so I'm creating a folder in this storage container where I want to put all my game files I'm just calling it games and then I'm calling method to make sure that if it doesn't exist it'll be graded and then I basically implement all the methods so for the methods delete game game exists I can just check I can get the reference to the drop that ID and that reference will give me all the options I want to do for instance we can do deletes and we can do exists and so on which would send the command delete it or check if it exists so it was basically just referencing that this is also of course described in the exercise descriptions for loading and saving is a little bit more tricky because what we're dealing with here is I need to get of course reference to the blob just like I do up here but in this case the blob has a method called open read there's also another method called open right and those are the methods that basically will give me access to stream of bytes so up here when I read it I need to read from the stream of bytes let's do that I use a building that knit a class called a stream reader it's part of the system that I own namespace we have already been using form so I check that reader and it has a method called reach rent that were basically just returning a string so I get that into my gesture string I remember to close the reader just because we don't want to let readers hang and then finally a TC lies my game in return that came same way when I save the game it's just the same but opposite so in this case I have a stream Rider and I owned the block for riding and then I am right to the blob this realized game actually is the rider so what I need now is basically just the connection string and this is a really bad idea but it's good for just testing we just put it in our source code but we shouldn't do here is to check that source code into a public it have repository of course Kristin anybody can get our connection string anybody can use our storage to put whatever stuff they want in it that's not what we're after here so we'll do now for testing in general this should be put into configuration settings or app settings or maybe even configured in Azure but it can alright the app settings measure for now just freeze of doing this stuff let's go in here our deployment is complete so we have a storage account and now for the storage account I can go to the access keys and here we have set of keys I'm saying the first key for being the connection string which contains everything needed to connect to it I basically start in here so I save done now what I need to do is just to go to my startup class and instead of using the regular game service I just switch over and use the Asscher game service I can of course run this insisted locally take a little second here so I have it running now I will just go over and say great new game and at this point it has already safety came state we know that from we implemented our code so this means that actually right now I should be able to go and see that game state so if I can go back to my important see that we have an area called containers it lists the containers as a container now called games logic games you'll see that there is one game six nine one four which matches this one six nine one four and I can even look at that game look at that blob you see when it was created and we can download it if we want to and it has now downloaded that file I didn't give it an extension in the name show my system doesn't know how to read it but it's actually there if I just went in them and said station file I can open it and my there we go you actually see it it's not a refrigeration but it's it's the game state in Jason so we know what that it's in there we know that it works and if I just try to go back here and I play this game it's gonna knock right now okay miss over ln1 if I go back we'll see if it actually remember to clean up click here again refresh blue blobs form so it actually removed the game after the game was over so we know that that part works and it's in there and of course now that we updated our code there's no reason why we couldn't just go back to our publish settings and go ahead and publish again and that's pretty much it now we have a published web project using Azure storage to maintain storage we need to be played and used by anybody it's not pretty but it's there so that's the exercises for today this is what we'll be doing so it's not that heavy I think it's not that much compared to some of the other times so if you want to please feel free to just extend on the exercise and make it prettier may improve the gameplay improve the fidelity if you want to at least we can achieve to go we came after which is that we've taken this all the way from control application we started out with turning into a web application with a shepherd game logic library and now we can actually run it as an online game published measure and we could basically take this URL here and share it with all our friends let's go play the game so so far so good there are any questions at this point everybody's very quiet thank you well we are closing in on 6 o'clock anyway so I would suggest that what we do now is that stop sharing my screen here so what we do now is that if there's no questions we can say verbally right now then we will stop the meeting and then we'll meet back at 8 o'clock and hopefully you guys have Tommy to show and we can kind of round off entire course just sound like a good plan to everybody yeah it was it wasn't sighs first of all and - to at least participate few yoga events that I couldn't manage to go yeah but anyway yeah I would like to welcome and welcome this nice talk network Hey though it is almost almost the end I couldn't participate in the next session and fortunately but I wish you very warmly to welcome this door network and hopefully you could enjoy and it's the lovely world I know that you learn a lot in your hectare future with Java so it's two different world but I would say all you have plenty of opportunities in JavaScript as well as Internet but it's up to you that how much you are comfortable with JavaScript how much was comfortable with dotnet whatever the world is open for you actually so if it's not not something good and bad but I will say that there are some I would say endless debate this close source and open source world but you know there's not net and Alan has already introduced this dragnet core so it's pretty much in the open source world but still it's a different flavor people who are working with JavaScript especially Benjamin I don't know how these these class things and everything but yeah but I would say like all the students available in this course you enjoy and then did a very good job so far I are say thank you at least but result from me actually yeah thank you for those words will also be running off that and evaluation at the in o'clock meeting and again if you do exercise before o'clock o'clock as I hope you guys feel free to just do the exercise comes like under that channel and I believe that we'll have some lenses there we might you know Ontario tech chance eating some and thinner as well but there should be somebody that's ask just ask questions what you're trying to finish these tasks there okay so as I will stop the recording
lsm99dna May 13, 2026 07:40 AM Delete
I’ve been feeling a bit stuck lately, and reading this was the 'aha!' moment I needed.
lsm99dna.
initialpurple22 May 12, 2026 05:21 AM Delete
Ever thought about running your own shop? It seems simple enough, right? Stock the shelves, ring up the customers, profit! But behind every successful store is a complex web of decisions, resource management, and a healthy dose of calculated risk. And believe it or not, you can hone these skills in an unlikely place: the world of card games. Specifically, I’m talking about usinguno online as a surprisingly effective simulator for strategic store management.
원탑 평생도메인 May 10, 2026 10:47 AM Delete
It is a really very nice blog 원탑 평생도메인
zxx 토토 May 07, 2026 08:51 AM Delete
This site is excellent and so is how the subject matter was explained. I also like some of the comments too. Looking forward to your next post. zxx 토토
띵벳 May 06, 2026 12:07 PM Delete
It is a really very nice blog 띵벳
Viewer #3545 May 06, 2026 10:50 AM Delete
This post is good enough to make somebody understand this amazing thing, and I'm sure everyone will appreciate this interesting things 레드불카지노
레드벨벳 도메인 주소 May 06, 2026 10:04 AM Delete
Pleasant blog and totally exceptiona 레드벨벳 도메인 주소
Viewer #4641 May 06, 2026 04:07 AM Delete
果凍威而鋼哪裡買果凍威而鋼犀利士5mg犀利士5mg每日錠哪裡買雙效犀利士哪裡買雙效犀利士哪裡買印度紅魔哪裡買果凍偉哥哪裡買必利勁雙效犀利士哪裡買必利吉哪裡買日本藤素哪裡買必利劲哪裡買
(想買治療勃起功能障礙藥物?點擊下方連結進入官網購買:)Want to buy erectile dysfunction drugs? Click the link below to enter the official website to purchase:
果凍威而鋼哪裡買果凍威而鋼犀利士5mg犀利士5mg每日錠哪裡買雙效犀利士哪裡買日本藤素是哪裡買
유투벳 May 04, 2026 12:45 PM Delete
this is really good website, coolest I have ever visit thank you so much, i will follow and stay tuned much appriciated 유투벳
Viewer #3948 May 04, 2026 10:38 AM Delete
I am glad to read your blog. your blog is really awesome and cool. your blog is really great and cool. thanks for sharing the nice and cool post 미투벳 도메인 주소
텐텐벳 May 03, 2026 12:09 PM Delete
Excellent article. Very interesting to read. I really love to read such a nice article. Thanks! keep rocking 텐텐벳
888카지노 May 03, 2026 10:47 AM Delete
I was very pleased to find this site.I wanted to thank you for this great read!! I definitely enjoying every little bit of it and I have you bookmarked to check out new stuff you post. 888카지노
dining room furniture April 29, 2026 04:30 PM Delete
Pretty! This has been an extremely wonderful article. Many thanks dining room furniture
slot gacor April 29, 2026 09:51 AM Delete
Your topic is very great and useful for us… thank you slot gacor
Brooke Craige April 27, 2026 06:18 AM Delete
Wow, this is great to see! It's amazing how quickly everyone adapted to remote learning. It reminds me of when I started getting into level design. I ended up finding some really helpful tutorials online, and it helped me so much. For anyone who likes a challenge and creative tools, you might enjoy checking out Geometry Dash. It's a fun platform for building and playing levels. Thanks for sharing this!
slot gampang jp April 26, 2026 11:46 AM Delete
Pretty good post. I have just stumbled upon your blog and enjoyed reading your blog posts very much. I am looking for new posts to get more precious info. Big thanks for the useful info. slot gampang jp
Henry Henry April 24, 2026 02:57 PM Delete
If you’re investing in landscaping, working with a Garden Designer can help avoid costly mistakes.
https://hedgeandstone.com.au/
Henry Henry April 24, 2026 02:53 PM Delete
If you’re investing in landscaping, working with a Garden Designer can help avoid costly mistakes.
slot gacor April 22, 2026 06:17 PM Delete
This website and I conceive this internet site is really informative ! Keep on putting up slot gacor
slot gacor April 20, 2026 02:16 PM Delete
This is actually the kind of information I have been trying to find. Thank you for writing this information slot gacor
gacor77 April 19, 2026 05:04 PM Delete
I admire this article for the well-researched content and excellent wording. I got so involved in this material that I couldn’t stop reading. I am impressed with your work and skill. Thank you so much gacor77
living room furniture April 18, 2026 10:53 AM Delete
You can certainly see your skills in the work you write. The sector hopes for even more passionate writers like you who are not afraid to mention how they believe. At all times follow your heart. living room furniture
slot gacor April 16, 2026 03:28 PM Delete
Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have slot gacor
slot April 15, 2026 08:49 AM Delete
I can’t believe focusing long enough to research; much less write this kind of article. You’ve outdone yourself with this material without a doubt. It is one of the greatest contents slot
Ewan Mahmood April 14, 2026 09:25 AM Delete
It's interesting to see how quickly learning shifted to remote formats back in 2020! Looking back, it highlights how adaptable education (and students!) can be. This makes me think of quick, accessible fun too. Remember when everyone was obsessed with simple web games to pass the time? It reminds me of Snow Rider 3D. It's crazy how much tech has changed in just a few years! Thanks for sharing this throwback.
gurutoto April 11, 2026 05:18 PM Delete
This article was written by a real thinking writer.I agree many of the with the solid points made by the writer. gurutoto
BEST188 April 08, 2026 03:13 PM Delete
This is a great article, Given such a great amount of information in it, These kind of articles keeps the clients enthusiasm for the site, and continue sharing more ... BEST188
Viewer #3759 April 08, 2026 10:55 AM Delete
Excellent article..ts a good site to explore ..Thanks for the blog post.Really thank you! Much obliged.. 픽미업토토
네임드토토 April 08, 2026 10:01 AM Delete
I cannot thank you enough for the blog. Much thanks again. Really Great. 네임드토토
Viewer #3948 April 08, 2026 09:48 AM Delete
I am definitely enjoying your website. You definitely have some great insight and great stories. 아벤카지노 평생 도메인