Building an Integration to retrieve Covid-19 data - Live Coding Happy Hour for 15-05-2020
[Music] hello and welcome to live code happy hour for this fantastic may 15 20 20 does that little animation makes me so happy and smile like I can't I can't start the show out normally with those little happy beer mugs just doing their two little dance they make me happy [Music] welcome thank you for joining us everyone will just dive right in with the introductions I start as usual with my buddy Brad hey everybody Brad Tilton I'm a developer advocate with the developer program and ServiceNow I have been doing all sorts of things on ServiceNow since 2008 and excited to be here and talking components today all right Thank You Brad and Jared hey I'm Jared Montz platform internals integration and security with finite partners have been around since around the Calgary release also on the SNS slack I'm a thread aficionado and I'm Andrew Barnes developer advocate also at service now and this is I guess I started in Eureka so if we're if we're using family names I was I was a Eureka I'm brand new Eureka instance was how I started we just concluded Oh finished my intro I gotta I gotta stay on it's been a long couple weeks focus on specialized in integrations managing large-scale development teams and stuff like that so Brad and I are both on the Developer Program which a large part of that is developer at ServiceNow com so we write the blogs there there's the api's and your personal developer instances available they're great resource our training team makes some really awesome training module content there so if you in there before developer dot service now calm let us introduce our special guests our drinks bread I have a a three philosophers from I don't even know gang it is a bourbon barrel-aged ale that I'm excited about noise and Jared I'm going with a different sparkling water today I have a spin drift brand pineapple yeah you had a line on Wednesday and I went with a Highland Brewing Gaelic ale in Asheville North Carolina that's where that brewery is and I'm looking forward to it not nearly as much as Brad as to his mmm I am excited about mine alright well that's pretty good so this is I think pretty darn sure at least all the ones I know about this is the first time we've ever done the show twice in one week so we had a special episode that we had for creator con on Wednesday where we started building our goal was to have a component that rendered some information and none of the existing components rented it the way we wanted so we created an API in our instance to to send a component some data and we built an integration to an exterior third party to get some information with an action in flow designer and so today we're going to complete the other half of that event which was you know so the whole goal was this component and so we did the infrastructure for the component you know the data provider for it from the instance on Wednesday and today we're gonna actually build the component what else do we want to say about that bread its yeah yeah I mean so we could have just consumed the Web API from component but we wanted to add that abstraction layer in the instance so that we can do some things with the data and we could even change the source of the data at some point if we feel like we need to without changing the UI layer of the component so yeah that's that's what we did on Wednesday and hopefully we get some component magic happening today yeah so that is a good point so we did do the rest API that our components going to consume so that we could switch it out in the future with you know the how would retrieve it how that REST API in ServiceNow gets that data we can switch out without having to adjust and rebuild our component which is a good level of abstraction so that we can just tweak that scripted REST API without having to do anything to our component as long as the promise between our API and the component stays the same which is asks the component were the same inputs and returns at the same outputs also so if you haven't seen it before we're gonna go into showing how to build the new Orlando based now components once we start screen sharing we'll go into those details there's documentation on the developer site so one of the things that we did and our big overhaul of the site was bring in the component information to the developer site so there's a component library there and a whole focused area on components and component building and with that I think we're pretty much ready to start the screen share all right well let me go ahead and share my screen here I think we want this desktop let's see how that looks once we get it into the share that's looking okay do you want me to zoom in and trim off the right-hand side or already you won't want that real estate on the side let's let's zoom in a little bit okay have to trim off the whole side then zoom in a little bit I shall do so while you get rolling okay so let's start by looking at our scripted rest in point that we've created in the instance so this is the rest API Explorer and an example of how we can consume that end point if you remember from Wednesday's show we used external service that may or may not be working today and we pass it a country for this one and it gives us some cases back so if I test this we're gonna get two day cases and today tests this today test is actually some static data I put in there because we're having some issues with the end point earlier today but we're gonna get a couple of things back from this crisp scripted rest API and our goal is to have these numbers show up in our component ok and so you're in the ServiceNow instance in the REST API Explorer and you showed how to invoke the API that we're gonna consume from our component which is a really handy tool to preview and see how you should actually call the thing and so down there if you scroll down a little bit we can see how we invoked this right there and under that request area you know it's just up a little bit there you go that might be a little small for everybody but it's ok it's a get and then the API and then the parameters we're sending which is country was world in this case alright and so now we're gonna switch over to vs code and the way you get started with building is what you can follow the exam the details on developer that service telecom or Docs site on how to get the toolset installed and what we have here is we've installed the now CLI we also have node and some dependencies that have already been installed and then we ran now CLI project and then the project name which gives us a framework component a shell to start from and if we open up index dot JSP we'll see that I've added just a teeny bit more to that so basically I think you're gonna need to zoom in Brad because that is awful small even for me how is this more this is more better you want me know I need more please make it bigger I was joking let's that might be tolerable but that's awful small I'm sorry it's it's just I have bad eyes or soon we want to go back more all right I can do that thank you that'll be good so I can actually read the things now so everything inside of that div is what I've added and pretty much everything not inside of the div there it came from building the component so we did do a little bit of work before we started yeah sorry i yeah it's fine so we stubbed out the you seeing now card so now card is a component in the library that we're providing so I had to install that in my project folder and the way to do that was for Brad I he used NPM most likely and then you know npm install and the name which is at ServiceNow slash now - card which you can get the details of that from our component library on developer and that basically takes us to where this is at right now so I wanted to catch us up to what we had done offline to get us here and you want to go ahead and have you already done now develop or now CLI develop so that we could see what this does right now yeah let's go ahead and do it here I I did do it to make sure that it works but let's go ahead and run now CLI develop and this is gonna run our component locally and we will be able to to render it locally before we push it to the instance and you can see it flashed up there pretty quick but you can see that it it can still connect to the instance alright compiled successfully where's so when you do that does it actually save records to the instance so you not records but it does save ah it saves the scope to the target instance so if you're logged into an instance and you run develop or deploy or project any of those will validate that that scope can go into that instance and then create that scope record and then only deploy will actually put records inside that scope so Earl says if we do this it's going to open the browser yes very cool what's nice having to do that for us next time I'm off the grid like on a long airplane ride or similar this would be a great thing to brush up on and play with yep and you don't need to be online so there's an offline mode so you you don't have to connect to an instance to do that but if you are logged into an instance it will create this scope for you so here it looks like we're on the local nodejs we are and we could probably zoom this in a little bit to Brad thank you sir so you can see we've got a title for our cards and then we have two cards and they contain a title inside of each card and then the data and this is this is just static like text I have placed inside of those card details inside of index jjs in our component so this is where we're starting and now so this was getting us far enough that you know we could see that we are building what we want and now that we're happy with the design such as it is will actually wire it together to do what we want it to do which is get data from the instance and that's the goal for today is get data from the instance into those two cards yeah what we want is we want these two numbers to match these two numbers absolutely without typing it into PS code I mean we might do a little hand with whitout let's see there's right there's that glad fast party we could go join if we just put the numbers in the should we look at the developer site to look at the HTTP effect absolutely all right I do that real quick I went guide nope I want reference now experience UI framework and we made it here and now I have this HTTP effect this right yeah I don't think I have installed the HTTP effect but we can see here in this in this code snippet what this is going to look like or what it could look like if we're using the the HTTP effect here so I need to install it first right I guess absolutely you do need to install it first so what's let's see if it tells me how to do that somewhere I think it does tell me it does if you go to if you actually go to the I'm not trying to say yeah if you go to the no I'm trying to find the easiest place that has that and really it's just service now HTTP effect I think is I'm sure it's in there somewhere on how to install that all right oh it's a recipe that's where it is it's under recipe recipes and then the bottom we are yeah all right so this is what we're gonna install do I have to stop you do need to stop your develop version all right so let's install it here so we are installing the HTTP effect and then we're going to be able to import it here so it's installing right now so let's click back over here and your ass if they have added more docks I know I'm not logged in so maybe they have out there now saying yes there have been some additional docks added to that site over the last two months as an employee when I log in I see different things than somebody who's not authenticated so I have to check that but I'm not logged in right now all right so I don't need to do this anymore or I just have to make sure API is added right all right so we have that installed let's look at I I can click on this safely right what are you yes yes yeah you can't have the API proxy here so we've got that right and then how do we use it well we have to import the effect into our in this case our index.js file so let's go here and put it here so we have our our HTTP effect it's not highlighted because we're not using it yet which is something I learned live on this show like a month or two ago so now we have to use the HTTP effect to grab some data I'm going to make a bit smaller there we go can you do me a favor and go to your JSON your your packages and look to see what got installed okay HTTP all right that's fine so one thing to note when you're doing this component building you really want all of your dependency components from ServiceNow to be on the same version so that's what I was doing there was checking to make sure that he didn't get one of the early builds for this I'd already adjusted that Brad you're free to adjust as well steer sir I was told that it was off the screen yeah I know I just dude I adjusted it all right it's fine I'll adjust it back no I'll do other things keep going so when you install it from the command line you didn't give it a version and so it's gonna get whatever version is public right then but if you specify on these dependencies here an exact version and then in your project folder you doing if you're using NPM you do an NPM space I and it will get that version and install it for your component and so the versions are very important yeah and I actually had to update my now CLI version today because the last time I had updated it was when I installed it originally and March I think and I was a couple of versions off so just something to remember if you know something is not working the way you think it should be try updating that all right so let's hop back over to our index so our goal is in here we want to update these with real numbers so we need to we need to use our HTTP effect it's true so there's a few ways we could do this how do you want to approach it Brad it's a good question so I do have some examples open on my other monitors and they're doing it in different ways because there are different ways to do this it's true I think at some point we are gonna have someone on the show to tell us the best way to do some of these things and there's going to be a really good creator kind of workshop that Andrew helped write and I have tested that's going to help out with some of that as well and that's I'll put a I'll put in the description later but that is CCW 2905 I've also included three links handily provided from Jace urine MVP sir for component now experience stuff that has been broadcast ins on demand right now in the knowledge twenty site so there's an intro one there's a one about the library and then there's one about more technical so there's there's like three tiers levels there but the workshops a hands-on workshop so what is it what are the different ways that you have example wise so the one that I'm most familiar with is dispatching and consuming that that dispatch action and returning data back into you know through the state process but you can invoke the api's like right here in the view yeah I believe that is the the way you are describing is that that's enjoying his beer with the custom element for our component so what's I think it's your it's your uh kind of your driving you get out of here right what's let's do it down in here so what are we putting down there I got this we are going to add our action handler and an action handler down here awesome so what's uh am I in my choppier I just had the audio cut out was that me I think that was you but you know do you seem fine for my end well so let's add the action handlers in here yep I think we can do this so in the action handlers I'm good I'm gonna do some copy pasting because the best I'll allow it so component bootstrapped I am NOT this is special one kind of defined so I learned about some of these properties I think it is absolutely defining in fact in order to use that you're gonna have to add it dependency hmm so you're gonna have to use UI - core I believe oh okay there we go so component bootstrap so you're looking at the documentation for that right now right and that is the component is loaded on the page I believe is what it says yeah so when I came across this it made me think of like dumb rendered so this is the pages has loaded and we want to make a call and this is how I do that so that's my equivalent to create a custom element from ServiceNow cord way so I think I add action types here right yes action types up there right so you know you've already had UI core up there so you're gonna need a comm action types lovely and then we need to add component rendered not component rendered but the one we're using - what are we you saying you're using on a bootstrap script and copypasta is so good yes and now it got brighter because I'm actually using it oops you know using using IDs is so nice they're so helpful Sunday's yeah my text editor won't do that okay getting getting them all set off is a pain sometimes once you're in the groove and consuming it it's it's nice all right I'm gonna do a bit of I think coming in do a bit of copy pasting here okay do I need so most likely your component bootstrap is going to be really simple you're just gonna basically take a dispatch and then you're gonna consume a dispatch from your Co effects and then you're going to dispatch a new action call right so you're gonna call a different action from your bootstrapping action yeah so let's go I'm gonna type it cuz okay so dispatch and then I think we get to pick this action name right so do because you're gonna you're gonna create it right now so I'm gonna say fetch coded data very good all right and then let's give it let's give it a query yes how Derek do you want it to be so are we actually going to yeah how Derek do you want this to be let's make it not generic right now and then if we have time we can make it more generic okay so that if you don't want a generic then you can just put in what your country colon world or US or whatever you were putting in the the call right yeah let's let's do that so remind us on the scripted REST API was that going into a query parameter or into the post body or something query parameter I believe yes yes yes I see right there towards the bold line towards the top oh yeah yeah yeah so the the the world's country of course the world country the country of world all right I have any authentication or anything on that scripted REST API or are we gonna get it up and running and then thinks about that because then now CLI is already authenticated to my instance I don't need to worry about that that is slick that is handy-dandy that's one of the reasons why we wanted to use their there were like five reasons we wanted a scripted REST API yes that was one of them was authentication no problem alright because it yeah the security people when you turn it completely off in dev for a week or whatever the case may be it does cause some discussion so this is a great benefit to have that so you know we're gonna get this working and then you know if there's time we'll abstract out some of these bad things we're doing like hard coding country world in there right now but we want to get it working first it's kind of offensive to me I'm sorry not really so what you want to let's go so what's our API API kovat endpoint here so now we're defining our action that we're calling from the first action so the bootstrapping action can call multiple actions so we're going to call this particular one that we've created fetch Cova data and now we're consuming that create HTTP effect and we're doing that in one of the inputs to that is what the API is that you are going to consume here and now we're putting in the parameters so we're performing again could have been opposed to etc but we're doing again for ours and now you're gonna do what query parameters Larry params quick query programs with a capital P I think there we go will autocomplete that suite and that is going to be our country I think and that should be and I think this is how it goes that feels roughly feels directionally correct but it shouldn't be in quotes though cuz that is a variable at this point all right and then so now we need to define now we now we defined what that does right so yeah and success action-type what did you pull that over from somewhere oh I may have copy pasted that you're so fast sneaking action to be dispatched when the HTTP request has successfully completed but we have these nice little these nice little tooltips here so what do we do when this is completed I think we define another action here if we want yes and that's the general examples that we provide from ServiceNow is we want to we want to componentize these things so success and failure can be two different branches and those should be different action handlers so we're gonna we're gonna call a new new action that we're gonna create very very sneaky name of data success yep I like success and Earl pointed out in the chat one of the really important points for that proxy setup that you showed earlier is we we only gave API slash and the rest of our endpoint so we didn't define a complete HTTP header so that's that's why that that proxy watcher is very important if you're doing something it in ServiceNow from a component so fetch coded data success is a brand-new action we're creating it right now and what do we want that thing to do I believe we wanted to parse our data right I'm gonna copy paste this cuz I'm not a I'm not in the s6 guru I'm not either so I'm so it's it's time for me to brush up cuz I've learned it you know your years ago and didn't use it for years cuz I'm in service now developer and now now it's back so Jared how's urea sex yeah I could probably answer a couple multiple-choice questions about well that's what we have the chat for yeah right so when I when I mouse over this it gives me what looks helpful I think this makes you some translation yeah arrow is a function definition alright so I know we're defining a function right here I know I want to do this and say James James you got to come on the show and joined on we're doing more component stuff next week let me know you can come join us so we want to I think we're assigning results for the action ok for the payload of our action and that's coming from our previous step where we you know call the API and then we're getting a payload back and so that is that seems reasonable and then I'm okay with that I think I need to do that isn't going down right now so yeah exactly so you do need to do this because that's how actual SoCo effects was was the inputs there and so action that payload didn't mean anything until until you did that that makes sense so do we need that update state is that what we're gonna use to pass this data to our component yes so unless we unless we put Co effects into our inputs for our view so right now if you scroll up to your view you'll see that you have update error State and update State mm-hmm and if we could put Co effects up there but we're typically are using the the update state to consume things from our actions this way least in all of the stuff I've done that makes sense so generally I do lots of copy pasting when I'm doing something like this and then eventually when I don't copy/paste the right things I figure out why we did certain things we're not quite there yet and my knowledge of components that's okay we're we're all learning together that's part of the show right yeah is a this this is not pop in case you're just joining us what we're doing right now is unscripted unprepared service now live development and we are all you know expert level ServiceNow developers but we are novice component developers this is all new for us all right do we think we need to do anything else here so it depends how you want to consume the data in your view so if you want to consume it in a more broken-up way you need to break it up here so it depends on where you want to do your heavy lifting do you want to break up the returned data into some nice variables you should probably do that here in the action versus in the view I think we should probably keep the view as simple as possible no with our HTML and so any other heavy lifting you want to do do it here and then you know return the thing we want to consume is two variables that have numbers in them so let's return to variables with some numbers in them all right I think we need to start with constant okay so what I want to put in this is I want to split out so we know we're getting two things back in our result mm-hmm I believe and so so results has got two so result is an object that contains well that go to your go to your payload robberies in it yeah go to your payload it contain databases and today tests so let's break those out today cases and you know so can we do this we we could be you know forward polite but I don't want to be today I want to get a working thing and then we'll then we'll be better I think that's right because I got to do some auto completing here okay so if those are already in there in result that easily you can actually consider just that easy yeah and you could you can consume those at that level in in your view pretty easily so let's let's pull those out actually since we're not gonna do anything manipulation wise to those I think I think we're fine there so now we just need to return result into our update state right so we need to put result in our update state in this action it's update state and then give us a curly braces and then the only thing in there is gonna be a result and I don't think we need the parentheses maybe we do let's go look I've got a thing he new action handler date stay I think we may need to print oh yeah we do need the parentheses yay good job Brad and a semicolon is that makes on that one and then looks like I had a yeah that looks that looks directionally correct so now in the start of our view before the return we want to define can we just reference them like here you can but we're not going to that's to bridge too far for me laying it's it's too bad I like it's just so up here let's do Const and then the the today's cases in today's tests whoa today's cases and actually give me no equals and put out curly braces at the start of the cost yeah and then give me a comma after today's cases and for today's tests and then after the curly braces equals state dot and then result and then yeah so that should give us two variables today's cases and today's tests that are essentially state dot result dot today's cases the value of that and do they introduce me in that curly brace we have a question from Pablo in the chat regarding Const curly bright brackets yes so I'm not like a es6 wizard but that's how I've seen those done it's a shorthand way to get so I don't have to do individual declarations so I don't have to do today's cases equals state dot result dot today's cases if I do it this way it'll go and if there's a exactly same named variable inside of result it will get me the value of that that makes sense I assumed it was a es6 thing since it's not any existing business rules and things on the platform and you know in es6 wizard out there can absolutely correct me because you know this is but that's that's how I understand it to work and now we can consider a basis so how do we consume that here today is it or no it's already okay it should be ready to take it right oh yeah all right today's cases today's tests and you know let's say let's run this see how bad we got in votes in the in the YouTube chat who thinks this is gonna work oh yeah that's rough I'm gonna give it some time let's see let's see who thinks this is gonna work do I know things working on the show and the first time you know you definitely want to bet against that just as a general rule but I'm the eternal optimist so I'm gonna I'm gonna give it a thumbs up all right I think it's gonna and we want it to I mean you've already got the browser open but no I want it to open for me though all right go ahead do it all right Dorian's got his drink ready what are you drinking today durian high-quality h2o some tea some Earl Grey beer what you got left over with core dumped from Wednesday leftover gorgeo cuz that's what you do with gin is you just leave it around until you have nothing else I used the rest of my good gin on that core dump ohh ooh country is not find all right student weary params so this is a very nice detailed error message that is a very nice so maybe one maybe we can even boats yeah maybe when you put quotes on it you were right and I was wrong I've been wrong before all right this was it so I've got what's on it we're saving compiled success Oh so I mean I was riled but that was not the reason that it didn't work okay a compiled uh should we see if there are any yeah let's see reload it and see if you get go ahead and clear that and then reload it and then see if it connects to the instance at all I can't read any of that so you're gonna have to scroll up and and try and read them so we have an error actually cut the error earlier and can't read today's you know what today's cases is not a thing so we never where did I type today's cases oh yeah I define those as being in results today cases and today tests this is from that your API yes yeah and and I I gave you how I would have named them and Andrew in the chat got it uh-oh hey oh those are the numbers from our instance Geist's let's just pretend like that rediff didn't show up down there well that's a tree over here that that's some victory right there I I approve of this action so the the real test is going back into the component and walking through it and figuring out why the things that we type to result in pack it up y'all we got a success that's right arrow so uh yeah let's let's dive into the component and show some detail on what we did and why it worked so we started from a stubbed-out component which you can get from the youtube description so if you go to the the github link there that'll take you to our repo and under that is will be the component that we built today the stub that Brad started from is there that's how he installed it on his machine right before the show the first thing that we did was add we installed HTTP effect and did all the other now CLI like precursor steps of getting now CLI and node and that sort of stuff but once you have the component loaded and can do now CLI develop and render something from the stub we we walk through the rest of this today which was what are some of the interesting things here so we are consuming create effect up there so we added that but the other things that we're consuming are and we added action type on line one so that we could use component bootstrap which is a defined by service now when the component loads and you can get that from the developer site documentation there's several and there's several other ones there that are very useful in the lifecycle handlers yeah I thought this was this is something that when I was originally reading the documentation just kind of glazed over because there's so much info in here and you know I couldn't really connect it to anything real at the time but when I saw this used and then came back and looked at it it was pretty interesting to have you know there's some events that get dispatched at different points when my components are getting loaded and rendered and changed that are pretty nice to come in here and use and and use as a trigger to do something in your component right yep and so we use the bootstrap one which is the loading one and you could use other ones like an arrow thrown or a property changed it's a very very handy one so properties and components are super important because you need to do things as a result of properties changing typically and then back in our component we are consuming that bootstrap process and dispatching our own event fetch Cova data and we're sending it some properties and then we're consuming that in fetch Cova data action handler that we created which is using create HTTP effect which is you know calling an outbound rest message and then if you get a successful response you have success action type that we define there's also a failure action type I'm not sure that failure is the right word but there's definitely another one that is already predefined that you use there I was gonna try to find it yeah it's on that page but scroll enough so we're we only care about success today so we we dispatched a new action data success and in that basically we just took our payload what you would typically do here after outbound rest is partial response and manipulate the data and make it ready to be consumed by the rest of your component right in this case it was a since we were the API provider from the scripted REST API that we built we built it so that it would be very simple to consume and so we didn't have to do very much to consume that because we built it well that many times you're not big provider of your API and therefore you know you need to do way more parsing and manipulation of that response data to get in it into some usable form for your components to consume ours was really simple so we said update our state with result in it and then if we go up to the view where we're wrapping up here just a teeny bit the teeniest bit more there oh no you had the whole thing I'm sorry so in our view we're saying hey we're going to establish these two new variables today's cases today's case tests and they're coming from state dot result and then dot our variable names and then we consume those in our now cards which we are those are service now provided library components it could have been one of your own components that you've built or partners etc that dependency it was established at the top yeah so Brad is showing you if you go to reference and then at the top right of reference is the component library and there's some really useful information about each of these once that service now is providing so there's the API reference there's its properties and actions that already decided defined for it in the usage is really useful page for me at least like this usage page is so handy because it tells you one the the breakdown of the parts of the component and there's helpful suggestions on when and how you should use this particular component yeah this the component library page is really nice and obviously this will be updated you know as we go through new releases and there's more components available you know right now these are all the components that are available in the Orlando release and so in the Paris release you know in in q3 there will be more components released here so I think we're good on the screen share we were we achieved our objective victory was had of it so we built our component we are consuming an API it's from our ServiceNow instance that we wrote ourselves last time a scripted REST API that we created to consume a third party API but we abstracted our component away from that third party API into something we could control outside of that component building because once I deploy this component to my instance which we didn't do but it's very simple to do which was now CLI deploy and then that will package so it'll do that same process as develop did it will do the build process for your component minify it and send it up to your ServiceNow instance into the scope that you have established for that component and only one component can go into a scope and our future selves will thank us for adding in that layer of abstraction yes they will right well one thing I wanted to say is you know it can be we're right at the beginning of component development still and I know for me as I'm trying to I have a couple of little projects that I'm trying to do with components and it's sometimes frustrating that there's not enough examples out there we will I think we're pretty close to having some more examples out there and you know if you have components that you built and you want to share let us know that and in the chat and you know we and I'm the chance to look at those in the comments of the YouTube in the comments or over on the developer site in the blue one of our component blogs add a comment there yeah and then we'll well link to that and if you have a really good example and you want us to post that repo in the repo that's linked in the description below let you know use one of those methods to reach us and we can do so so let's uh let's rate our our special guest hosts starting with Brad yeah so I had this three philosophers Bourbon Barrel ale which was nice I normally have a lot of bourbon barrel stouts in the winter but we're kind of leaving the winter it was really good I would say it was a 4.25 I give it a bump because we were successful a success BOM and Jared you've got some delicious to his his real fruits sparkling water fourteen calories in this can and I'm gonna give it a 4.0 again nice and my Highland Brewing Gala ko is it's quite good it's quite tasty probably probably four it doesn't get a successful because I had faith in Brad I had all the faith and but it was it was very tasty so I hope you enjoyed creator con week if you participated with us this week for creative con stuff if you didn't if you're watching this later and you haven't done anything with greater con go to knowledge service now calm there's on-demand content there more than a hundred I think it's two hundred things now next week is now on now it's the focus for now on now and I believe that is in the schedule for next week obviously if you're watching this to much later that will change but for right now next week is now on now which is service now talking about how we at ServiceNow consume and use service now to make our lives as ServiceNow employees better you know so we say that we make the world work the world of work work better I'm also good at slogan slogans and and so this is our chance to highlight how we make employees lives better with ServiceNow internally and I know I have experienced some pretty delightful parts of consuming services internal at ServiceNow through ServiceNow interfaces so there's been some great times for me for those things anything else that you find folks want to share before we leap no Darren is there gonna be a part three on this are we gonna add some caching or any fun stuff anywhere in the line I think part three next week if we can get it so the workshop owner might join us next week and if he does we'll do part three components and and he'll walk us through any of the parts that we could have done in a more best practices standard practices sort of way and give us some flavor in detail that you know we just don't have the expertise to share yet I mean we're working on it but we're not component expert so if we get a component expert next week we'll do a part three and otherwise we'll hold off on a part 3 for this until we get someone more expert to take this to the next level all right so with that thank you for joining us everyone out in the chat if you're watching this later thank you for participating put those YouTube comments in we actually do read them and respond to them so go ahead and reply there and see us anytime at developer.samsung.com have a great weekend thanks everybody
https://www.youtube.com/watch?v=prNlKHE0NhY