Enhancing wifi temp integration for a cooking application - Live Coding Happy Hour for 2020-07-24
[Music] so [Music] hello and welcome to live code happy hour for july 24th 2020. this is the place where we do servicenow development live coded unscripted right here for you and let's introduce our team today starting with brad hey everybody my name is brad tilton i'm a developer advocate with a developer program here at servicenow i have been doing servicenow development in some form or fashion for about 12 years and excited to be here today awesome thanks brad and chuck hi i'm chuck tomasi senior developer evangelist at servicenow been on the platform for about 12 years customer for two years and an employee at servicenow for the last 10. and where did july go and i'm andrew barnes developer advocate in the platform business unit along with brad and i've been on the platform for just shy of six years now ad servicenow in this role just shy of two years now and enjoy working on the platform doing custom applications integrations and large-scale deployment of developers applications so let's introduce our drinks and then we'll start talking about what we're going to build and craft today all right i will go first i have a three philosopher's wine barrel aged belgian ale um i'm pretty excited about it i'm excited that sounds great i have a yeti mug with the servicenow logo filled with a homemade slushie that has citrus uh slushy stuff and krapa and uh some club soda lime soda or something to loosen it up so cheers that sounds appropriate for a hot day that i assume you're having where you're at chuck this is the end of a big bucket and uh fortunately my daughter who's living in our guest house looked at and gave me one of these she did not care for it which is fine with me because i love this stuff nice and today i've got a sour apricot peach um sour beer from edmonds oast brewing in charleston south carolina pretty excited about that today uh so this is episode three working on this um in the description below um right now there's a link to episode one uh which also links to episode two and i'll get the linked episode too uh in there but it was it's just the previous video um in our channel right now um and we are going to uh a couple of things right off the bat today is the first full day of paris early access so uh we have restrained ourselves uh very well up until this point and uh keeping the paris stuff off the show but now we don't have to do that anymore so we are working uh in a paris instance today and we will be using at minimum one pairs feature a new feature uh today that we sort of alluded to that we would be using last week but now we can actually show it and uh then along the way we'll probably point out some other pairs features um and you can expect us to have multiple uh occurrences of this over the next nine ish weeks of the early access program where we'll focus on uh you know at least highlighting one paris feature every week so brad why don't you catch us up on what we did the the last two times real quick uh and then we'll jump in sure so uh we we built uh a few weeks ago we built an app to manage uh long cooking sessions and you know i think we built it in a way that it could manage any sort of cooking recipe um sessions but the focus on ours is really a long meat smoking session because that's what i do a lot of and andrew does it uh and you know behind me in my virtual background i have the smoker going sadly i don't actually have it going today but i do have the thermometer set up so we can test with it but we've got we've got this cooking management app and one of the things that i wanted to do with this app was connect it to my wi-fi thermometer which has a rest api and pull in some data into my app so that i can you know have the data and do some things with it and and really perfect my smoking game um and so last week uh we did connect uh to the wi-fi thermometer after getting integration hub installed and this week we are going to make sense of the results that we get from the wi-fi thermometer and actually populate that into the table awesome so any questions that we want to run through i don't think i have any chuck do you have anything that was burning left over from last time before we pick up don't say burning leftovers on a cooking show oh man that pork shoulder so good brad it was good we the great thing about a pork shoulder is that you know you you pull it and you eat it and then you get to eat it the next day and then you can put it on tacos or a pizza and then the next day and then the next day i'm told yeah i'm gonna get one this weekend oh man i love pork shoulders you get like four good days of uh good uh delicious juicy meat that you can just use in a there it's very flexible in what you use it in so you can make all sorts of stuff you think maybe we could use our 500 credit for exercise equipment on a slow cooker [Laughter] i don't know only only if it's like a pedaled powered one [Laughter] all right let's drop into the screen share and uh pick back up where we left off with the the integration all right so i have a uh i've got my browser open here with oh my you guys moved to the other screen and scared me and i thought i wasn't on the zoom anymore i'm still here though all right i've got uh i've got my browser window open and this is our cooking management app that i've got at a pdi here uh this pdi has been upgraded to paris uh so we did a little bit of pre-work today uh to make sure that we didn't spend the show upgrading to paris ferris we are on the paris release i've got a cook set up for today that i just got set up and really the only thing we have on it is that it's connected to this fireboard thermometer and this was a table that we added last week to support this integration and just going in here we've got a couple of tables here this logs and temperatures table and the log table is is for me to enter in you know anything that i do whether i'm adding logs or you know in injecting the meat with something or spritzing it or rapping uh anything that i do gets a log and we want that to also have a corresponding temperature and get whatever the temperatures are at that time i do have a cook going with my fireboard where i just have an ambient temperature that's outside so it's uh 90 97 outside and then i have another probe and a glass of ice water that is about 33 so we should get some temps back when we try uh when we try it it takes a long time for that pork butt to get done [Laughter] it should get warmer and it will take a long time for that reading from the uh the cup of ice to change because it will it will just stay at 32 33 for until there is no more ice yeah which shouldn't take too long because it's almost 100 outside all right so let's go ahead and open up flow designer and we'll take a look at what we did last time previously on live coding happy hour uh so we created an action and i'm going to switch to [Music] we created this fireboard action there where we take the device id as an input uh every every one of these fireboard thermometers has a unique device id and it's something we sent to their api in order to get the temperatures so that's going to be our input and then we wrote this rest step that uses a connection that we've set up to do the authorization and then our resource pass path we're passing that device id and we should get some values back uh so we'll go ahead and test this and what we want to do is use a new paris feature to do something with the results uh which i think we already spilled the beans in the comments yeah the chat room already figured it out i mean it was upside down andrew so he he he knows things because he's living in the future nice it's true what's saturday like it's saturday like there so yeah all right so we ran it it looks like it was successful and it it was i think so this is our response body uh which is this json object uh and it's got our 34 it's our already getting a little warmer and our outside temp uh and so we have we have some other data here we have a timestamp and the channel uh and i guess we don't get the channel name uh but that's okay all right so it's working so we have our action uh it calls rest api and it gets something back and now we need to do something with it so i think we should use the json parser which is a new paris feature for integration hub in total transparency have you done anything with the json parser yet i what i have done is this so i have scrolled down to look at it to make sure it exists in my instance before we did the show you're slightly ahead of me then so this is where i'm at with the json parts parser hopefully uh it'll it'll just work really well and uh yeah okay and so previously we had uh the xml parser so this should look very similar i'm told that they they work very similar yeah so they they should be i the interface looks exactly the same as the xml parser so hopefully they are very similar i haven't read any documentation i just know this thing exists um so i'm i'm gonna i'm gonna just put the response body into the source data okay and uh create object generate target structured payload view let's try that oh no oh okay i should i guess the first step is what should what are we supposed to do with it i feel like uh do we need to generate some source data first to get it to give us something you need to paste in to this uh so i remember all this from the xml one and i have a terrible memory but so go back to your execution that you just and get that payload that json payload and copy and paste it into the uh the the area that has the number one uh and it'll build the structure that's right because it's the complex object from that i guess it's the same nope all right so we're going to put that in here yep and now now our buttons show up and now our expectation is that the complex objects is generated over to the right uh so you should be able to hit the down arrow next to that yeah the little twist other one the other one the other side your other left there and this should show us now is this what you expected so you you went you just boiled right through it uh but looking at the data is this what you expect it to look like and potentially could you uh do us a favor and just open up any old uh you know go to google and pick your favorite json parser renderer and pop it in there let's do it a graphical json parser oh so it's easier to read well just so that you know ooh this week we had our our expectation set so here's what it looks like uh you know in this formatter and so our data you know an array with the objects under it that have two objects uh four properties fields in each one yeah and now we go back to here and then look to see that i always have root at the top which is an array of objects all right so we can yeah a little better but yeah we've got an array and then this is one of the objects here's the problem each of the objects and then there's four things under it yay that looks that looks right that looks pretty good so the next step would be what label them accordingly uh i don't need if we should be fairly happy with the names of the fields and then under array i don't think so oh yeah i would probably name it to something like uh what's the name of the the this system um is this probe data what's the yeah i think it's a probe data it is uh we're getting each probe that is active uh as one of each each probe is an object in the array so i would probably call that one pro all right so yeah probe and then the one above it is probes they're probed and then the top one name it you know you have what whatever the system is or something let's call it probed no [Laughter] i like it what's the name of the system it's uh fireboard yeah put fireboard there all right now what exit edit mode yep and now you should be able to expand those and view those in the data pills on the side once you hit exit edit mode all right i feel like i need to save something i would too that seems reasonable any time i have typed something in flow designer integration hub i i always feel like i need to save it neighbors often probe probe lovely okay now what you could pass those to the action or what do you want to do with them yeah what do we want to do to them so what's our our action our action gets some current information about the device so what do we want to output from our action so this is uh this is the architectural question right how abstracted do we want this do we want our action to just return us the data or do we want to have the action put the data in a record somewhere i don't think we i think we want the action to return us some data and then the complex object from the flow yeah from the floor okay then then basically what we want to do is just pass the outputs of the json parser step into the output variables of our action and we're done yep so you need to make a fire like a fireboard output object with the array of objects inside it though the whole structure that you just built all right this would be object so do we actually you could hopefully you just want an array right so yeah you could put the array of object inside it you don't have to pass back that top level root yeah if you do array object and then grab that array object you should and drop it there so hit exit mode and then drop drop your pill in there and then go back into exit mode and sometimes it auto populates the structure for you it's supposed to when it's happy untwist the triangle change hey all right now i'm glorious bring back a comment because there's one other output we may want to pass but i'm not sure if it's needed or not i want to see if it changed between orlando and paris so let's try what we've got one thing i'll want to pass is the status code oh that's good especially if you're not going to do any error handling inside your action uh at least let the consumer of your action handle it i always forget that and i regret it every time oh status good is what we want yep anything else i'm i'm holding that comment there is one other that i'd like to pass but i don't know if it's needed anymore with and that would be a count of how many you got i shouldn't need a count well what i found is for each over the but for each will be the array if the count is zero for whatever reason when it looks great for look up the records but when you pass back an array of objects of a complex data type like that four each does not work when it's zero i've run into this over and over yeah i i had a weekend uh slack chat with one of our product managers on this so henceforth i said i i honestly promise to always pass back a count and then you can do an if count is greater than zero now run my for each but i don't know if that's changed or not let's uh let's return it anyway just in case and we won't use it you're going to need a ripped step after your json parser step then uh can we not just get it from no oh yeah we won't have a game we have to count it it's really just give me the length of probes um couldn't couldn't we just count it from the flow like we already have this data and the flow no i don't have a length method unless you well no you i mean we could do the same thing i guess if we just pass this like we're passing an array of objects to the flow so the flow will get an array of objects and the flow can do the count based on that right where is it going to count it yeah we'd have to add a script i'd prefer to do that here so just add in a script step that all it does is return the length of that array this way we'll have it if we don't need it and it satisfies the condition of getting some scripting done on the screen like this is live coding i got i got a little uh you know y'all are clicking a lot of buttons here where's the there's the scripting last week we did get some oh we yeah we've been getting crap from you guys have been talking a lot of architecture lately when are you gonna build something uh all right so my inputs i need an input huh uh-huh this would be your it's going to be the array or your list [Music] just the right chrome's array.object you're going to leave it called parameter give them a chance man he was already in the script box i gave him a chance [Laughter] i waited all right he would have hit it as soon as he went inputs dot oh my gosh i was like wait what [Music] great so hilariously i'd probably just do outputs dot equals this is this is another one of those philosophical things because i have you you could do it here but i've i've often found that if i try to set outputs too early in my script they sometimes don't return properly so i'm spending some temporary variables and then do all the outputs assignment at the end like here just it kind of breaks it up into process the inputs you know is this empty is it not do i need a default value do i not then i do the processing part and then i do the outputs part yeah for a one-liner like this i he probably could get away with it but i think i would just try and get away with it do we know this do we want the status code here too or do a i mean if we want to handle the error checking here or probe array.length pipe pipe 0 or something just to say hey if you don't have a real array then don't crash like i could check to make sure that it exists first yeah if if probe array or if inputs operable array been doing a little bit of uh spoke making and this will drive you nuts when the remote system doesn't return you exactly what you want every time should i actually assign this to something all right it could have been a lot shorter but could it could have been a contender all right and now we now to create the output variable here as well which has to be probe array length which copy and pasta is the way to go that may still fail you know because it could say dot length is not an attribute of null undefined if if if your probe doesn't return an object this is going to wig out you are correct um that's a little too much uh yeah uh what the naming convention for these is it's just is what you need to put here that's why i said copy no no it has to be the exact same name oh the label no don't we drag it yeah the label oh no this is the label that's whatever you wanted to be called label label the name name has to be your outputs name name andrew's giving me crap about error checking is for people who don't have confidence in their hackery no i know you can't camel case an output variable for whatever reason then we're gonna so that idiosyncrasy is still intact i may have pressed the wrong copy you're gonna have to delete it and do it again maybe i don't know all right oh should be an integer as well good point mark scott for the plus one i mean we mostly deal on javascript we mostly lean on javascript and lose type checking types are her suggestion we never use that point okay now you need to set it to your own and now you need to map that output into the output of the action yep the step up to the action output all right i tried to add a one just a second ago yeah i got it okay that's making sure the uh that one yep we'll name the we'll name the steps better names later i'm still kind of embarrassed it took me as long as it did to realize you could rename those you could just go up there and type yeah like it took me a year before i realized that and it was like accidental when i did i think it was accidental problem let's do where you signed a demo going oh cool you could rename the actions i'm going to run a test when you've got a data panel and half of them say script step it's not very fun a test um by the way there's a handy dandy paris thing right there on your screen that he just closed we'll get to run it again apparently so invalid return type do what now we failed on the script step invalid return type complex probe array and string do not seem to know the input the input type object type of your input really we left the input as a string uh you don't set it you know you just drop it in there what other object type could it be complaining about you knew script thank god return type is what it seems to have the array over there in the runtime value for probes but it says type string do we have to decode it did we just drop a json object yeah you do you you're right i think it's an oh yeah pretty sure the json first time nice good call all right so our uh our dot length said uh i don't know what to do with this all right that makes sense so much for the error checking i do that right all right now i'll pause ah it's just the uh the run test in background is a new feature especially it's a new feature and is especially handy for you know those long running things where you might actually want to do something else while it's going about its business so for example i would have really liked this when i was building the uh the workshop for ci cd uh where you you know activate a plug-in in another instance when you're testing that uh you don't want to wait for that thing to like come on i was building an action that was doing a data stream and i wanted to you know do a log statement out and watch the log but hey you know flow's running you can't do anything else oh yeah that's a good point i know uh the same still says string same error oh probe array is going to be a string because that's what we're passing in right viewing probe ray i'm hoping that's a string please don't make us put type of an instance of all over the place [Music] realize that the json parser returned like a length of an array yeah we didn't set anything special you have to define output as a complex object the output of what i mean the output of json already is but not the output we're just looking for a simple integer we just want to count we're saying how long is the array wait where where is our so yeah it's failing in the script step and valid return type so give us a log for uh length and just comment out the outputs if it's in there and it doesn't need to be published but he did save it because brad's a saver i am i have not saved so upside down andrew had the idea where we set a default value on our input which is very handy i i appreciate that yes json parser output anything other than a json object i think that's its sole purpose in life don't you hate running something knowing it's going to fail only to see a log statement wait a minute oh i hadn't clicked into it so it still failed yeah we knew it was going to we just put the log in there oh you commented out the output output okay got you i i was doing that just to rule out that there wasn't something weird with output yeah right because it is saying invalid return type what so let's go to system logs and see if our length got in there so it recognizes at least hi i'm an array and low designer crabby krabby flow designer uh you're sorting by created here yeah we should have seen that here so um probably getting the error before we're getting the log why don't we uh something in the script yeah we didn't actually test the json parser so what if you want to comment that out for now we saw the results of the json parser right like in your execution yeah did we you won't do a json stringify oh it needs something to pass it in i just want to see if we get an error just trying to pass this value okay nothing to do with scripting so it just doesn't want you to oh go go back to your go back to your action fireboard probes yeah we wanted to pass the whole array maybe it can't yeah you need to you need to pass it the object just the fireboard yeah but we don't we have a fireboard well try that pass up the top level object we're just gonna because we're we trying to pass out probes as well all right let's do that and test it that would be annoying if you can't drill in and pass a piece of somebody's output okay that's annoying but workable work aroundable yep so now uh can you open up the uh can you click that execution and show us what yeah so this is still a very usable object yeah yeah so we we can pick back up now so yeah so this is this is an object with the the probes array right that's sad that we can't do someone else's output yeah mark says less of a parse more of a convert to object that's good all right right and so i think all you need to do here is just do inputs.prorate dot rubber array probes probes that's it uh oh yeah because we get that object yeah just add pro dot probes at the end and we should be good is is my hope all right andrew guaranteed this is gonna work i heard him say it i'll guarantee this is a different one yeah unexpected token means you probably would get this there yeah one second that's the input we have a syntax here somewhere rub away probes you shouldn't have to json parse again yeah that's probably a good idea oh yeah i mean we really shouldn't have the json parts again i mean that's legit what yeah we used to chase you do for the response body but that's about the only time now how many test tabs can we get you've exceeded the fire limit hey oh it's all green two the answer is i saw that in the action output too yeah and and that's the expected and desired answer so where is the action output uh right there you gotta go there it is all right and we got 200 and we got now it's up to you if you want to put it in a flow with or without the if length check count uh count dracula says one two ah ah ah all ah shall we publish this publish i'm going to paint a 404. publish it all right we're publishing [Music] so what we ultimately wanted to do with this one was whenever i have a all right so let's let's go back so what are you doing you're creating new temperature log entries yes so [Music] i've got all sorts of uh reference fields i get to play with too which makes [Laughter] all sorts of reference fields um so we are uh reed probed popular temps is what this does and what are you going to trigger on um and i want to put this in our cooking application so we had our spoke in the fireboard application or our action there yep do you want this as a flow or a sub flow we're going to do it as a flow for right now but generally i do think it's a good idea to put things in sub flows i'll be having that discussion on monday's community live stream all right so we're going to run this when i create a log entry on the there's going to be a lot of these oh yeah we had said when you go out and create a log entry saying i checked this or i turned this higher or i added some then grab the temperatures at that point so it's more of a reactive on-demand thing um we probably need some conditions uh we're going to assume that uh no so the log entry will be related to the cook and the cook needs uh the thermometer to exist otherwise we don't want to try to there you go is not empty which is interesting because string fields they don't have that they just have is and is not and if you say is not and leave the field empty it is not empty so where's my uh oh i see i need to go get the fireboard icon all right so we have this default which is what we're going to end up passing uh but let's go ahead and walk to the cook and then we're gonna get the thermometer i should have used the little martiniology this is where i use the yeah the data pill picker and then the id is what we're passing here very nice i wish martini olive had caught on for the name of that like that's uh it's my favorite one that i've heard so that's what uh cannonball is a nice secondary one but martini olive is my favorite all right so we should get what do we get we get an output and uh just to make chuck happy we'll use an if statement here but you can try a forward each without the f see what happens but don't cry to me when it's nothing ah there we go nope probe count i've had this bitter persona thing on the podcasts this week this is this is yeah it's been a long time without a cruise this year it's my go-to vacation so variable i thought we renamed no somehow variable got stuck in there leave it it'll fix itself later really how did that sneaky oh yeah i saw that at the end like whatever all right so we have our our uh array of probes and then we're going to iterate through them okay and then what do we want to do when i log or do you want to create records i think we want to create a temp record and then associate it to the log okay record so we can do that i am really really enjoying the create or update record action that's nice so the cook oh we get to do our uh so the cook is use the martini if it's one level in i'll let him get away with it but if he's drilling in two or three i'm done all right so we have our relationship there we need the um port where's our temperature the temp is denmark for reference don't call things variable kids don't call your variables default either um oh we need to tell a thermometer because also don't don't call your fields next yes sir or query query or event got burned by that one once when i went to write a mail script and then we also we have a port port is also the same as uh pro but i think channel channel that's what that is nice port channel probe we'll just use them interchangeably and do you want to get the uh temp type or are you uh comfortable with it always just should i just always assume that uh we're gonna use so i don't think i have a field for the temp type actually so i should i should you should that'll be in v2 all right so we're creating our record and then we want to no it has a reference to the log so we don't need to update the log i think that's it is cornucopia of reference fields we are linked to everything a many to many to many many all right i think that's all we need here [Music] all right so probes that is that is high quality that's right test it for real there be probes when it's time to touch like a pirate day it's not yet sometime right yeah september 24th i can usually remember it the day after yeah all right so we're going to do a real test because i didn't have any logs to test against there uh we'll call this other we're creating a new log yay here be our test i thought i had this auto population and what i said dentist did we publish uh i did he published the action but uh the flow the flow yeah it was activated it's been activated do we have any executions on it oh oh temperatures there they are there we go that that worked six victory i need to do something with the name here but your ice is melted so let's see if i look at the log that that is a clear sign that the ice has melted is 46. warming is happening in brad's house it is it's hot outside that's called localized warming uh so yeah we we are associated to our log entry and it worked i call that success i mean that that tastes like victory yeah it does you want to change do you want to change variable or populate a name or anything we've got a few minutes yeah let's change uh let's change variable so where did you see that output output it's got to be outputs open variable go to edit yo sneaky sneaky rat this was the probe oh can i not change the name yeah that's fine nobody sees yeah i mean that's that's a freebie well if you if you do any scripting with it you'll see it but yeah you want to delete it and put it back in i'm gonna i'm gonna delete it because it bugs me that's how that's how i would feel about it too because at some point we're going to want to use this again and yeah i would feel so obstinate i would slack a product manager why can't i edit this wait that was editing uh yeah yeah and that exit edit mode to drop the data pill in there you want it called probe array child zero uh i think that was the that was the what do we this is what we want to put in yep voice and now we have to go update our outputs to make sure that it looks the way you want that looks better oh better the drop down to make sure everything looks kosher nice wonderful thanks you could make those labels nicer too those labels look like variable names created temp channel degree type i don't know i'm good with it [Laughter] yeah you wait till you get to uat man see what the user said all right what's the temp mean for this temperature tracking thing do we need to update this or will it always someone that says can you make this proper case you're gonna have to this is gonna go away isn't it yeah you're gonna have to just gonna this is gonna all go away yeah so we'll uh only the ones just just the ones that are referencing that we'll try but our four each won't won't happen anymore oh okay that's bizarre um well i have to wait can we not update this browser screen i just did that i wonder if we have to delete it this right other things allow you to edit but this one doesn't oh yeah yeah because there's no all you're doing is you're telling it what to iterate over yeah but it's done by reference then we're gonna remove our okay it'll just the references it's gonna impact create record all right i was i was very worried that i was gonna have to redo this whole thing oh wow all right that was man i would have thought it would just remove the ones that were from that but andrew was asking if there any more uh new transform functions oh that's good let's uh i'll put data pill in there and see what happens let's see oh that's the wrong yeah you gotta you gotta put your data pill on there we're gonna put something in there then you get your fx on the data bill uh that is i don't remember so the answer was yes there are some more um there's not a lot a lot more but yeah so there are definitely some more transforms available there i saw simple math that might solve the problem of adding one to a value i remember when we made our first action to do that to the simple math stuff that was a long time ago still works nope no i've lost it i've been clicking around too much you you're now you're click clicking heavy there focus man this is this this reminds me some of the support calls i used to do brad there we go there we go uh i want to click the x man the x redoing something i've already done that's the worst oh but it always goes faster the second time oh we already got thermometer i need temperature this is the one temp and then probe is the last one so what's going on with the cook being a select cook drop-down field thing once you finish this oh yeah the first field is empty but it's got like a choice list instead of a reference that is odd i think i dragged something back in there yeah so how did i do that well that looks like a reference field maybe that's just the way it's right but he needs he was going click happy on us for a while i probably clicked on how do we get back there that looks good i think when you said you didn't want to fx it that it went away yep yes like it was like oh well you don't want to function well you didn't want this data pill then let this be a lesson always name your variables properly the first time save it save it save it before you have to do it again so funny andrew we've all been there all right let's uh test what was the one we did what's today i think it was this one here that's the one that didn't have a oh you didn't take the chance to hit run in background oh that would this would have been the perfect time yeah [Laughter] to what happened one of two to to go over to the listeners just refresh there this is what we want yeah um you know i also uh i think we're gonna add something do i have a timestamp somewhere oh there's a created date that works for that all right okay i think uh i think we did it so you're gonna need it and we redid it you're gonna need another another action to go get your port names and then be able to reference those by port number right to do a number of name mapping or something yeah i think uh when i get information about the current there's a session well let's look there's a session api and it'll give me sounds like a good name for a beer a session api oh the label yeah the label for the channel i'll get that if i when i get the whole session data which maybe i'll go back and do afterwards all right well i will uh stop sharing wonderful nice work nice so that that was that was pretty good we got to see a couple of little paris things we didn't go heavy on the pear stuff today because we really wanted to to make progress on the the cooking app we got nine weeks to go so let's stretch this out uh so but yeah get your hands on a personal developer instance for paris and uh get rolling with that um i don't think i had any questions or elaborations on what we did today i mean it was continuation of last week's and uh just buttoning that up so uh we nailed it nailed it please don't saw us nailed it uh so that worked pretty well um yeah we announced uh the uh paris is available uh in the pdi's and the early access programs so if you're a customer um that you know wants to get your hands on paris you can uh get a paris pdi or you can go to hi and enroll in the early access program uh and so that you can get your sub prods uh you know at least one of them upgraded to paris and and check it out and see you know what your upgrade uh effort is going to be uh next week we will be focusing on uh the debugger and uh global app source control so one of those two things will be uh worked into the show on friday and uh both uh there will be a blog for debugger and a blog for uh source control and global applications uh and i am super excited about the uh source control for global apps and the not uninstalling my applications when i uh deploy them from source control like i am i am so delighted with that change that i will be hard to contain into words in the blog entry uh but the number of times that i've blown away an app deploying you know switching branches or something and the data all my data goes away and i get so sad it's so sad and it's always right as soon as you hit you hit go no [Music] [Laughter] [Music] yeah usually when it gets me is when i'm when i'm trying to commit to source control and i have uh to i have to apply remote changes yep so the thing i'm trying to do is you know just commit and it you know previously it wouldn't let you until you uh you know deployed remote changes and doing that does the uninstall and install and so that that's what every time that i accidentally did that that was how i did it was when i was trying to do a commit and had to do a uh you know update from the the just just probably like one or two things snuck in there in the in the repo that needed to be deployed locally got that it's been too many times you have our permission to put an animated gif into the blog [Laughter] um so there is lots of cool stuff in pierce for developers we're going to have entries uh every week uh during the early access period we're also going to have some special guests come join us um that are you know expert on that week's item so next week uh show will be early uh so we'll be doing it uh during uh idc friendly time because we're gonna have uh the product manager and the uh the senior manager of that engineering team for the professional developer tools who runs the debugger join us for the show next week um so we'll be at a special early time for that and expect to see some other engineers and product managers as we can work them into the show um during this period so we're trying this out let us know how that's working for you guys if you appreciate it let us know because it takes effort to get more folks to to come on the show you know product managers are exceedingly uh spread thin resource some days so getting their time even an hour for the show is is a lot of effort uh so let us know if that is worthwhile and if it's not we'll try something you know we're iterative so we'll try it and if if it's working good we'll keep doing it and if not we'll try something else um anything else you guys want to share before we go to the rating of our drinks no not for me chuck does uh tech now on tuesday since these are developers and i'm only gonna post that link into the chat for us absolutely it's very easy to remember anyway it's bitly slash tn is in tech now 77 reg so tech now 77 reg i'll put that in the chat in just a sec when i stop talking but uh we will be covering the platform paris features at 8 am pacific time do the math wherever you are what that comes out to be and we are launching a new uh servicenow developer podcast called breakpoint if you want the link for that i've got the bitly link that goes to our host and it's currently being replicated and pushed out to the various directories like apple podcast and google and spotify if you know where to look for it uh so it's called breakpoint two words you get it you get the idea there are other break points that have to do with tennis should have done some research i suppose but it's not tennis related and uh we will be doing talks with both internal product managers on features like we're gonna have on live coding happy hour we'll also be talking to customers and what their challenges were and what they've built and cool stuff like that so look for that in the upcoming months the uh short url for that is bitly slash sn dash break dash point so i'm trying to keep these simple so i can remember them but i'll get both of those in there if you go to that omni dot fm is where that resolves to and there will be icons as we get those in the various directories so there will be a spotify link that you can subscribe to there will be an apple podcast link i've been looking on pocket casts every couple of days it's not there yet our first official episode there's one up there that's just kind of an overview of what is the show what is it about what you can expect the first official one is with our very own brad tilton about getting started as a servicenow developer so that will be coming out on the fifth and then we'll be going every other wednesday so really looking forward to taking my 15 year old hobby and taking it to work and actually starting to make money off of podcasting after all this time nice so let's go back around the horn uh and rate our drinks and uh say hello to this weekend brett all right i had the three philosophers uh wine barrel ale and uh it was very good i'll give it a four two five uh nice yeah and yours chuck mine is gone the grappa citrus slushie was delicious um clean glass club 4.0 nice and my sour apricot peach um sour beer was quite good it is a four five um these are these are good and it's my last one of that uh of that uh brand and they they're impossible to find so probably won't have again uh for a long time so thank you brad uh for uh sharing your cooking app with us thank you chuck uh for joining us and giving us great insights and thank you all of you guys who contributed in the comments uh please if you're watching this later you know reach out to us on the developer site the developer blog the community and share your thoughts with us we're always happy to engage with you and have a great weekend everybody bye-bye
https://www.youtube.com/watch?v=0ljU-mB6OeQ