logo

NJP

UI Builder in San Diego - Live Coding Happy Hour

Import · Feb 19, 2022 · video

[Music] [Music] hello and welcome to live coding happy hour the show where anything can happen we generally have a goal this is not a well-polished demo we're here to show you something on the servicenow platform that gets us in the general direction and you get to see how the sausage is made how we learn and talk the discussions that are happening all that good stuff that goes through the brain of a developer and between the four of us we just about make up for that one developer so let's go around and do some introductions starting with this gentleman to my left hey everybody my name is brad tilton i am a senior developer advocate with a developer program here at servicenow i've been developing on the platform for a while and i am excited to continue last week's show and do some more ui builder stuff howdy howdy howdy hi everyone i'm earl gk i am a developer advocate with servicenow i been on the platform for about four years now i think almost five and mostly with the higher education sector before i join servicenow and i'm chris johnson uh i am a senior manager of design for the ui builder team i'm located here in wisconsin and i've been at servicenow for just about three years my name is chuck tomasi senior developer advocate at servicenow been with the company since mid-2010 was a customer for a couple of years before that and have a long long long history in computers which we won't get into here next on the agenda we have like we have an agenda for this well-oiled machine we're gonna go around and introduce what we are drinking because this is live coding happy hour so same order mr brad i have a delirium noel it's a belgian uh beer that i had never heard of and i saw it and it looked kind of cool so that's what we're drinking today have you had deliriums before no check the abv on that it's 10 i checked it and there's a reason there's a pink elephant on the label brad is uh keeping to tradition with his eye high ap baby what happens when you drink and code and go on camera you're driving again too this is going to be great okay uh i have a modern times cosmic race so they say hazy tropical ipa nice nice so i went out today and i tried to find a san diego beer in wisconsin and i was unsuccessful so i am drinking a wisconsin beer in wisconsin and i'm drinking the new glarus gyrator with that funny fish on the label um it's quite quite delicious new glares has good stuff i'm not knocking them i i'd get a spotted cow any day that's right only in wisconsin i'm surprised you couldn't find like a green flash or something you know i i i i was frustrated but it is what it is it is what it is all right and i am going since since uh i'm not in my region again this week well i think i was i had four peaks last week i've got a full sail from oregon this is their amber so headed in the fridge i forgot why but now this is the second to last the penultimate full sale of the six-pack so we'll see how that goes okay mr brad over to you what's our top my mirror exploded all over my desk when i opened it just now so all right okay uh today we are going to continue what we started last week and hopefully get into a few different things as well um i have we ran into some issues last week we'll kind of talk about a few of those and uh why we why we ran into them we're cheating this week we brought an expert in that's right we could do that on live code why my ears were burning last week he's the one who's yelling at the screen going it's right there [Laughter] all right so what we're doing is we've got uh this artifact manager app that we've uh talked about and used on the show before and uh it's an app that we use to kind of manage all of our content and planning process and we would like to be able to uh plan it a little better or you interact with it a little better so we've created a workspace experience for it we ran into some issues last week where our our grid wasn't showing up correctly and i replicated i i rebuilt the app in a new instance a simple version of it and uh and everything worked fine uh so the instance stack we were using has some little idiosyncrasies and it's been around a long time so i think there were some just some issues with that so this is basically where we got to last week this is a list of artifacts and uh we are we're currently are we this one is this right what's today the 18th yeah yes so this is today's show and an artifact manager uh so again this is where we're kind of managing our blog posts live streams podcast um and and all of those things so last week what we did was we used the new repeater component and we built out this grid based on the repeater component um i don't know why my stuff's not showing up here that's weird um anyway we did that there we go i think my all my data had to load into the repeater component um so we've got uh we're pulling from my data resource we're pulling the title the plan publish date the state and then if it has a short url uh we're displaying that here and if it doesn't we want to show a button that says create short url and then in today's show what i want to do is i want to make that button actually work and actually create a short url for it and update the list um so i like when a goal is uh we i want this thing to work yeah well it works so right now it's just informational we want to make it interactive right i smell a modal coming up yeah i think i think we're going to use a modal is probably what we'll do there and just to show a little bit more about what we're doing here i've got a data resource that's a transform data resource that i built uh just so that i could kind of give give the data how i wanted to it's pulling from a couple of different tables and doing a query on the back end so again our data resource is just uh it's an array of objects and each object represents an artifact and so what we're doing uh with the visibility on these fields is we're saying if the short url is empty show me the button and if there is something in it we want to see that short url so we've got a little script here uh and that's how we're we're showing that um before we get into what we're doing today we had [Music] one of the things we had talked about last week was can we do things like style the odd number rows differently from the even number rows we didn't really know that uh and that was one of the things we were going to ask chris about and we talked about it a little bit before the show and then we're like wait we should talk about this on the show so everybody knows what's going on there yeah but uh yeah chris give us some background on on that well with css um there's a really easy way to to do this normally and that's using a pseudo selector that allows you to target you know the first item in a list or the last item in a list or every other item in the list and and those sorts of things and and that's a capability that's built right into css if you're not embedding your css as inline styles and the styles that we're doing in ui builder are actually injected directly into the tag they're inline styles and thus pseudo selectors like you know colon hover colon active and these other things are not available to use now i think there is potentially other ways to achieve this effect by maybe styling the the grid directly and trying to do sort of like having the grid generate every other row with a different styling i would need to play around with that a little bit more but the easiest kind of low low hanging fruit way to do it is is not something that's at our disposal because we're using the inline styles yeah that makes sense yeah so sorry no problem uh one thing i did want to call out also is one one of the questions we had uh when we were looking at so last week because we had some instance issues instead of showing a grid everything just kind of showed vertically and we had thought well maybe this was because uh we had these stylized text components and we had divs or um headers or something like that and i did want to show that this week like this is an h3 and it does work in the grid so i don't believe like your stylized text is going to affect what you do on the grid so you could use an h1 you could use a paragraph whatever tag you want to use is still going to show up horizontally in the grid there yeah are we talking that up to old instance bug we are chalking that up to old instance but i replicated everything in this instance and it works fine um so it's this is my pdi so it's not like it's you know some crazy instance but yeah i was pretty concerned after watching last week's episode yeah so no more no more using that instant step my maybe we'll z boot that at some point there was a comment in there wouldn't it be nice would be nice to build the l-training styling writing the repeater component and i think that's a that's a great point uh thanks for the feedback um it's like that's a great feature suggestion yeah now's a good time to get those feature suggestions in yeah that's right you want some give some feedback right now um so chris one of the things you were saying so i noticed that i can't really do a lot of styling uh from the repeater itself so i put a container inside the repeater and you were saying that you can turn on styling and do some interesting things in the repeater component yeah so um we have a bunch of different use cases for different teams and when we built the repeater component we tried to make sure that all those different use cases would work and we found that in some cases you wanted the repeater component to sort of be an invisible component when you went to the runtime to not inject anything into the dom and in other cases treating the repeater component in the same way as a container was actually a really handy thing to do you didn't need another element it just kind of was more logically laid out and so we actually enable a toggle so you can move between the world of you know invisible runtime repeater and a repeater that has styling properties that you can add to it and so in the case if that grid is a fairly simple grid you could probably achieve these same effects here depending on how you're you're making it work uh by just you know setting the styles and and doing it directly that way so do i get any like extra functionality from doing in the repeater or it's just a way to make it simpler because i don't need a container inside yeah so it's it's really more about the specific needs of your page and kind of how you're making things work so you know how you're using repeaters here it you're kind of creating sort of like a table but there are other use cases for repeaters where you might be repeating over pieces of data in like a cell and so you want the repeater not to have any kind of layout associated with it at all and in other cases you want to have that layout and so we give you the ability to toggle between them and you know just enable disable that that state and kind of play around with it we wanted to give you the flexibility to make that decision based on what you needed to do nice a question that just came up in my mind can can i nest repeaters do you know you absolutely can oh nice yeah so so in that case you know i'm just sort of making up an example off the top of my head but you know maybe you have a set of icons or something like that that you want to repeat over um you know based on the data that you've got or you know avatars or something like that and you you're putting those inside of like a card you could you could totally do that with the repeater component nested repeaters is supported excellent all right well i think what we want to do is ultimately i want to be on this page and i want to say create short url and i want to create a short url url record and then update my uh i guess i don't need to update my artifact manager record and then i need to refresh the list um so i think i want a modal let's do that and i think i'm gonna want a custom modal here oh that's right uh so with the modal the custom modal it gives you some things by default um so we're gonna let's give it a header we're getting uis within ui's right this i don't think this has changed my it looks like the styling may have changed a little bit uh but i don't think the functionality changed yeah and i think that there's an issue sometimes with modals where um sometimes things don't display unless you you know save and refresh and and uh so you know you're not seeing the stylized text right now but if you save it it should be there that makes sense uh what do we what do we want to call this let's say create short well we're calling it url all right and then here um i think we're going to need a full url so we're going to need an input we input ur i don't think i've used this component before input url let's call it [Music] target target i like that we can pre-populate this uh but we'll worry about that in a little bit uh target url i don't think we need any of this required uh we can do required but i believe all this does is adds a little icon to it it doesn't actually do form controls it doesn't enforce it okay you have to do that yourself and then we need um wait did i put that on the bottom you did that's all right uh let's i know i could move it but we're just gonna do this instead you want a slug yes oh no oh yeah and probably a description would be handy too because that's also oh that is a field yeah those i think those are the three minimums wow it doesn't like it if you try to put the label instead of the component type all right so let's go ahead and save there we go uno mas oh that's right oh so this is different uh the the um so if you're if your component has slots yeah are they still slots yeah so um with with the move to layout three and i know you guys talked about this a little bit uh on a couple of different episodes but um in many cases the need to think about slots is gone but you still can create what we call named slots inside of your component and those are sort of areas that you can add content into and so the input comes with two end and start and it always came with two and we always allowed you to add content into it but we've now kind of reflected uh those previously invisible things in the ui on on the stage so it's easier to understand that oh there's something here that you can put stuff into and if you don't put anything in there it'll just not show up but you could add for example an icon into your input there or something else to kind of communicate better the state of what was going on i like that let's add an icon while we're here [Music] an icon of a slug you could do like a url icon or something yeah i i do like the slug idea i don't i don't know that we have a slug icon in our repository but uh it might be a good uh request for our i'm gonna call font awesome today i think it's link is if i remember a card is url you just use a picture of me [Laughter] uh sure let's do that all right uh and then let's stick a button here and what's the right thing to call this create and submit everybody likes exclamation points and that's right it's very important for your ui to have a lot of exclamation points you got to get your description in there too uh all right um let's yeah we might as well put the description in so i'm gonna uh let's put it at the end i guess long links and short links by themselves are let's put it here dangerous i almost type description i think you want a an input right yeah that's i've been doing too many stylized texts do you want a text area or an input i think we want a text area okay yeah that'd be better do you have a max number of characters that that field supports i mean i'm sure it's like 4 000. i can tell you no i don't i don't think it exceeds 255 because there's a single line oh is it a single line all right let's go i'm gonna double check real quick i don't know what it is in this instance because i will say 255. um all right so let's uh let's make sure we can pop our modal up and [Music] the description field is in fact speaking of modals come on show description 1000 it is a big text all right so let's refresh and make sure that our modal pops up and see if we like the way that it looks all right that looks good this button shouldn't do anything it's a good looking modal it is all right and the nice thing is uh if it already has a short link the button's not there so we can't create one we don't need to do worry about that uh that data validation uh we should really i guess oh we won't worry about it let's let's keep this simple all right so in our modal uh what we want to do is i guess this gets so complicated um but uh how do we do that let's i think we need some client state parameters to hold these values and then we'll need a script when we say make it so grabs the client state and pushes it into the database yes i really want to pull right so what we have is a lot of our um a lot of our artifacts have draft urls and so i think we want to pull the draft url if it has one and then if it doesn't have one oh that's a good idea so let's i think we'll need a client state parameter to map that draft url from um yeah can i get i don't like it there we go oh fine um to grab our draft url and then we'll want to populate it when we when we hit the button i think exactly so so basically [Music] when we hit the button i think we'll need to write the um the url for this specific item in the repeater to that client state parameter and then show it in the modal because i think once the modal pops up we won't be able to access the specific spot in the repeater where we were does that make sense i think so i think you'll have to pass that in yeah that makes sense just want to make sure we're all following and i explained that okay um all right so let's add a new event handler and we're going to update a client state parameter which is draft url and i want it to be so this is one of the things that came up on the show oh it's not doing it here item uh value draft url so i noticed when i was doing binding that i could uh like for example i can click on item here but it doesn't give me the little at symbol in front so it doesn't work until i yeah i noticed that too that's annoying a little thing that came up there all right so we are we're writing that and then i think in the modal we want to show that uh in the input url so the value i want to bind the value to that parameter rough url all right so let's see if that worked uh let's figure out uh this one [Music] flow designer with bim so flow designer with bim if i hit this all right that looks like the right one it worked nice and you can edit that should you need to i believe so yeah so that's kind of an attribute of that component the reason to use the url uh input type instead of just the regular old input type is that it gives you kind of that edit view click behavior automatically that's nice because then if i wanted to validate that that's a url which it won't be right now because that show is not uh published yet but uh sam says take a drink i actually did take a drink with that we're good all right and then so it might actually have a slug as well uh but i'm not oh yeah we are grabbing slug there we go do any of them actually have the ones that yeah i don't you shouldn't you have two of them that had a short link already so yeah those i guess would hopefully have slugs um yeah this one has another one yeah big point all right so the slug is technically used for the blog and i think that it could actually be different so i'm not gonna i'm not gonna use that there all right so we made that happen now what we need to do is if somebody's filling out the modal we need to set the client state parameter once they input something so i think we want value set and then we're going to update so this one we're going to update that existing draft url the new value is going to be [Music] the payload of the event that's not right it's the right uh oh it's just payload value right and then we're going to need uh we're going to need a couple of client state parameters for the description and the slug and then we're also going to need one for the sys id so let's go ahead and make all of those right now let's go description and if i was really worried about this i would make better names there could be other things on the page but there was a suggestion earlier in the chat too around perhaps making this a big old blob of json instead of individual properties which is a good idea the nice thing about doing it this way though is that you don't have to dot walk into the json yeah yeah because we're using this draft url a couple of different ways yeah the the json would be good too i already created all of these so we're going to do this but whoever said the json idea i like that um all right so we'll do this with a description and and one thing to also note here too is that you know these components have uh invalid um events and so if you wanted to do the um kind of error handling or disable your make it so button until valid input had been put in you could wire up to those events as well and do it that way nice maybe if we uh if we're so good that we finish early maybe we can go back and do some data validation description that was on the description yeah and then we will go slug set an event there i have one extra event on this one so it was what's the difference between input input i don't know for a fact but that to me potentially could mean you could do things on like keystroke so when every change of the input you you could get an event that you could wire up things to know for a fact that that's the case but that seems like what it could be yeah and there's key down to um yeah so i guess if you were doing like an like a auto complete type type thing that would be what you use yeah all right and then we want to uh so we'll wait on that button and did we so for the short url we also want to update the client state parameter and set the sys id uh this is gonna be item and just a quick review item is uh the um basically the item in the array inside of the repeater where you are and value and so you can continue to dot walk one of the things i noticed about this is if your if your json blob is more complex than this uh level uh you i don't think you get auto complete past this level or i didn't when i was messing with it um so like if i had you know if since id was a property i think i'm i'm done with autocompleting at that point but you can still access those variables for those properties i believe the autocomplete in that case is leveraging the schema and so if it doesn't have a schema to look at it it doesn't know how to auto complete against it that makes sense so could we provide you could provide that schema right you you can in certain cases i think in in this example because you're kind of building those client state parameters and json on the fly i don't know that we support building a json schema for the client state json all right so let's uh let's create a new client script here and this is going to be create short url and we want to say what is this this is a short url query um should i write this or just copy it let's uh write it only using your index fingers thanks uh let's go back and see i don't think i have good i don't remember what the what i call the uh yeah what do we call those fields let's go look at that sexy interface i am going to look at my short url table and see what my field names are all right we have redirection url which is the new one let's see yeah that was the target yeah so that's the one we don't need we want url slug and i guess label is what we're using for a description oh right it's going to create the redirection url yeah so it won't actually do it here but it's it's fine because this is my uh my skeleton app that i created to do the show all right so our fields are url slug and label so url equals no it wasn't labeled it was description should we call this uh oh yeah i can just click in draft url and then label url slug all right so first thing we're going to do is make sure we're getting all this stuff i'm glad i'm not the only one who uses console.log to debug my javascript all the time all the time let's go this is not the right way to access client state parameters but the names are all right at least uh api dot state that's what we want here and then i didn't have to remember them you got sampath like a little excited there i know sorry but thank you for the assist there uh query there we go all right so let's see if this logs out correctly so on button click we will call this script so what do what do we think the chances are that this works 100 very good 100 a lot of optimists on this call today i know all right so let's use the one that has the there we go here is something slug it's going to be if it doesn't work i will finish my drink and refill boy query url um we're gonna have to do some uh escaping we shall see yeah probably should so this is what we expected uh so that's good so we're getting there it's sort of working all right and then we want to go this is going to be api dot state ssid and then oh i need to create a we need to create data resource so i'm going to save and does it create all right so we've got our create record data resource and i never remember what exactly it needs so let's uh talk amongst yourselves while i go copy some code from somewhere else do what this is where earl puts our faces back on the screen [Laughter] never mind the man behind the curtain um actually let's uh no let's let's find it somewhere earl can put up some chat comments or something yeah looks like andrew's got something good to drink kentucky bourbon barrel special that's i'm supposed to be doing something else i'm not gonna read the chat squirrel barrel aged something i caught my eye so we had a question earlier chris um someone asked we had a problem with putting in formulas inside of um uh the field where it was like the if statement then i wanted a um expression and then it returns true and then what to return if it's true what to return if it's false in the same um parameters yeah and we couldn't we whenever we tried to do an expression it wasn't working so we were wondering if you knew how what what is the exact syntax that it's expecting out of that one i think that question came from sam you know i uh i end up having to go to the developer docs when i'm writing expressions as well so i usually start there with the proper syntax um and play around with it until i can get it to work yeah i don't remember the specifics from last week's episodes to know if we could like take a look back and like debug the problem um i'm assuming it was a syntax error of some of some kind well so um sam has what the um what we tried to do last week and it wasn't working where we were trying to return um you'll see like in the that first parameter it was we were hoping it would show up as true but it just wasn't accepting it it didn't it wouldn't even validate it as a as a proper parameter because it would give the red underline underneath the if statement well yeah i don't think i don't think expressions worked and the first parameter was the problem so if it if it was a thing that was returning a true or false from that parameter or something and probably that's the only way to do it huh i guess we would we could um do the expression somewhere else and then return that here that would be the way to solve it yeah it's and it's possible that in some i mean in some cases what you want to do is more complicated than what the expression engine can handle and so then in that case you just revert to the client script sort of environment and do it that way um so yeah i don't i'd have to go back and look to know exactly to try and troubleshoot it but my my gut says that it's it's along those lines where it wasn't returning the right value and so the script was going i don't know what to do with this and then it was just you know clearing it out one of those things where we we have the shorthand to simplify some simpler things but if it's anything more complex we probably shouldn't be doing it here anyways yeah i think that's a good rule of thumb all right so i figured out what else i want to do here so i also want to update a record wait uh update is that not called update record it is called update record what are you updating we're going to update the artifact with the target url it already has the target url not necessarily only if it had a target url already oh i see okay so we're just gonna do a force the update anyway um i think we're gonna do another create record that goes into the related list but i don't know if you have that in your data model on this instance i don't think i have any related lists on this instance all right so this is what we're going to do um this one takes uh society parameter as well we have that here except we want a different query for that one um in fact wait that should be artifact id so perfect query is just gonna be i stopped talking so let me so we also have an artifact table and we also want to update this draft url on the artifact table so that's draft underscore url do you want to use the short url for that then are you going to use the original draft url we need we actually need the long url because i think that some of our data polling uses that url okay uh equals ah draft url why why are these red did i do i have a you got a missing quote or something something's mismatched check that at the end of the draft url on the end of line 12 yep good call thank you syntax highlighting that's right and then we need to change that table name i haven't had any problems with the last 35 years in vi artifact short url all right so we're gonna do this and then we want to update record create record this all looks good to me and then one other thing that i want to do is when our update record updates successfully i want to refresh this artifacts and short urls i need to scroll down there we go uh and so then our list should update all right so let's uh do we have a preview open for short urls yeah so this we should be able to refresh it let's add a created parameter all right we saved i think this is gonna work i believe all right so create short url let's uh just give it something then our slug will just be [Laughter] oh the other thing we need to do is make the button close the modal yes so i did that did you already say make itself i did hit the button um yeah it should have refreshed the list for us already but let's see so that didn't work or maybe it did let's see everyone drink oh it did work oh yeah so we shouldn't get a redirection url yet no because we didn't run the flow to actually go and create it this is just the the front end of it all right so it did work and if i refresh it was this one so i don't think we updated the i don't think we updated the artifact record let's see so which uh which record was that uh more recent one error handling let's go i don't have all of the data in here just do i not have title in this list that's wonderful [Laughter] all right let's uh title and then the urls are there uh where is here it is so it did not update the url so that's why that didn't work so let's go back and look and see why it didn't update the url so that's this one it's because sysid is not the name of this parameter this property it's record id of course and then uh so uh we had another good idea uh that was just auto uh close the modal after we successfully execute the uh actually i think we could probably close the modal before yeah this is one of those pesky error handling questions i know close the model doesn't work exactly um yeah let's do it let's do it on uh on success here on failure can you make it go to bing.com i think we could it's actually uh it's actually a little more what happened to our oh we put it on the update that's right there is a redirect um link to destination oh yeah yeah we could do that i'm team close the model yeah we're gonna close where's open or closed modal dialog there we go and by default it closes so another modal on error all right let's try uh this one already has a url uh this will just create another one but sure uh we didn't did we make those see yeah it is so let's this time we'll go and then google and then we'll call it google here let me google that for you is there is there a let me bring that for you yeah don't know oh something went wrong all right let's see i like andrew's suggestion just open another modal that says are you sure you want to close the first model [Laughter] it did work that time bing.com so we got that updated yep and then take a drink uh oh it's probably my data resources uh is messed up which is fine i think my data resources may be looking at the other url fields good job though you got you got it working man here let's do this [Applause] not yet [Laughter] that's so loud in my ears all right so what's the other one published url let's just update them both i should have done this when you said bing badabing bingo bango going for the throat publish url publish url that's right no in the um ap oh in the industry the same url though we're just yeah you want the same url yeah you're right uh all right so this is our last our last try here all right let's pick a random one i don't think this one has a short url so uh what's uh here um uh ask jeeves yeah isn't it. yahoo we got a few more to go it needs a dot-com i think alta vista oh it looks like it'll it'll accept it i mean it's not going to work either way yeah i was around when alta vista was a thing all right that was what's new in ui builder oh it did refresh right before no that wasn't the right one where this one all right well i i think uh we'll just have to be okay with some success here what was that was uh what's new in ui builder that didn't work at all check the console did you get a log oh yeah it worked something's wrong with my data resource that's fine blame it on the data resource but we are uh we are out of time cheers sweet good job brad all right did we achieve our goal i think we did how much yeah it mostly worked right if the goal was to drink beer then oh i'm close yeah so we had a question we needed to uh refresh the data broker uh i believe we did do that that so the the uh success event on that update record refreshed the original data broker her data resource and then it also closed the modal were there anything that we missed um that we did last week uh chris that you would have hoped to be able to talk about this week if it came up again [Music] no i mean the layout stuff was was the thing that was concerning me and i'm glad that we got that resolved by cleaning up the instance so that was the big thing any cool thing that you want to point out that we never even approached like for anybody that's interested in new stuff in ui builder well i mean you you all have talked about all the the new stuff with the style panel i think that that is particularly exciting and definitely streamlines the creation of complex pages um so i'm i'm super proud of the team and and you know what that enables in in this uh release i i can tell us a little story if you guys would like yeah so uh i think this is the fourth time i've been on live coding happy hour and i don't remember if it was this the quebec release or the rome release where we tried to create a um an alert that popped up when the modal did something successfully and we we couldn't figure out how to write the json yes well that is the reason why we created the json editor oh that's about that show and the fact that i i didn't know what schema was and i couldn't provide the right thing i was like well this is stupid we gotta we gotta fix this so that was that's the origin story so you know embarrassment of me on live coding happy hour resulted in a great feature uh in san diego that is a great feature because it is uh you know not you don't even always have the schema in the reference docs so having it show up with the properties in the json editor if you don't know what we're talking about go back and watch creator toolbox on tuesday where ashley showed the json editor that's new in san diego but that that's that's really cool i like that yeah okay sorry and with that let's rate our beers yeah i had the delirium noel um i i had about half of it uh and uh it's pretty good i'm gonna give it a four five is that with the uh quarter point success factor that's with the quarter point success factor yeah uh i don't know i had a cosmic rays modern times it was okay i'm maybe i'm not just big a fan big of a fan of ipas but um 3.75 that's fine so i realized that i shouldn't drink beer that doesn't have the abv value written on the label because this is clearly a higher abv than i was expecting uh it's good it was like i don't know like a 4.8 but but uh you know i was expecting a little bit lower abv than what i got it's like a restaurant that doesn't have the prices on the menu that's right that's right that's right you turn the cameras on and chris is in the background [Laughter] market price that's right [Laughter] all right i had the full sale oregon's original amber and i'm going to give this a 4 5 also this is going down nice and easy it's a good good coding beer any last-minute announcements as earl prompts us with the lower third well we are finishing up uh next experience our next experience segment of the san diego um release season next week is flow designer week we've got creator toolbox on tuesday and then on friday we've got a special live coding happy hour with some some other guests that are kind of going to come lead us in something uh you may know them from the podcast between two functions but they're going to come lead us in uh some flow designer whatever have got the between two functions don't forget to check out the link at the bottom of the screen for all the rest of the schedule that we have for the rest of san diego content always keep checking back at that link we're going to keep saying it every week thank you gentlemen everybody have a wonderful weekend unless of course you're watching this on a monday morning well have a wonderful week whatever time of day it is for you we wish you all the best stay safe and we will catch you again real soon take care everybody [Music] do [Music] you

View original source

https://www.youtube.com/watch?v=cXkMWtMmHL8