logo

NJP

Pipelines in App Engine Studio - Live Coding Happy Hour for 2021-03-18

Import · Mar 19, 2021 · video

[Music] so [Music] hello and welcome to live coding happy hour this is march 18 2021 and we are happy to be here it's happy hour it's live coding oh man you can't get better than this we've got the abcs lined up for you again so let's go through the introductions i guess alphabetical order works today awesome hello everybody i'm andrew barnes uh developer advocate here at servicenow i have been building on the platform for about seven years uh we're coming up on knowledge number eight for me i'm pretty excited about that wow and uh i love uh building custom apps integrations and managing large-scale development and over to my friend brad hey everybody my name is brad tilton i am also a developer advocate uh here at servicenow i've been developing on the platform since about 2008 and i think i think this is going to be my 12th or 13th knowledge i missed one in there so the number's always hard to calculate and depending on who you talk to they might count that european knowledge way back when oh that's true yeah so yeah i'm excited to be here today and uh on to you chuck hey my name is chuck tomasi senior developer advocate oh i had two sips of beer and i'm already in the bag [Laughter] custard i've been working at servicenow since 2010 customers since 2008 and stone age history way before that we were just talking about ages and getting old and we won't go there today but had a wonderful discussion with dhruv gupta and ashitosh manat for their podcast brand new podcast they just released called latin v pratten about it's it's dutch for let's talk and we talked we talked well i talked a lot but that's nothing new and you can find out a whole bunch of my backstory from them nice well i'll go ahead and introduce my beer then it is uh hilariously because it's the last beer in this house uh it's the same as last week which is the sour boysenberry plum from edmund's host nice i have a just almond barrel aged out from qv so i'm excited about this one i've gone back to the local well it was either what i drank last week from wisconsin or the week before from arizona so i've got the papago orange blossom uh mandarin wheat so nice and it's feeling a little more like spring and summer around here so i thought it was time to break that out and with our beers under the way what do you say andrew what are we doing today all right so last week um you know we don't have uh quebec shirts yet brad is sporting his new york one and i'm sporting uh what's this uh creatorcon 18 19. i've got creative san diego under here but last week quebec uh went into market launch and with that we uh you know in the the great technology uh you know steve jobs we added another thing right on that day that wasn't in the early access um which is app engine studio um and we're going to take a look a little bit of a look at app engine studio today um and you've got a tech now coming out next week that they should go sign up for um that's that's gonna show app engine studio and like creating your first app and starting from a template today we're going to look a little bit uh under the nuts and bolts uh behind out how to like administer app engine studio uh so um part of and we'll get into more detail but part of the behind the scenes is uh setting up a pipeline from dev test prod or or whatever that might look like for you and uh getting that automation um for the citizen devs to promote the apps that they build using aes up through the stack uh so that's what we're gonna look at today we're gonna have to simulate a little bit of it because our internal servicenow instances uh don't have access to the same uh infrastructure that customers do for this purpose um but we'll be able to show you all this all of the bits fingers crossed fingers crossed this is live coding happy hour so we have license to make mistakes we do have license to make mistakes um is there anything else that we should share about uh you know knowledge or creator con coming up or any of our content before we dive into the screen share i put the link to the registration page if you're watching this before march 23rd go register it's in the chat bitly slash tn85 reg and we've got the yesterday's podcast breakpoint with chris haas about app engine studio so this is like app engine studio season right now if you don't have a hunting license we know how to get i'm sorry nice um and we did have this morning the uh europe and america-centric um quebec launch and then later uh tomorrow morning uh well relativistically to me but like in apj time there there will be one or is that monday i think it's monday night our time about 2 p.m sydney time tuesday okay so that is uh you know if you missed that uh today uh you can uh get it on demand uh now and there's uh 16 um uh you know so there's a keynote and then 16 sessions and one of those is app engine studio but there is some really good content in there so go check that out um you know if you if you don't know what's in quebec uh that's a good place to start actually with that i will start my screen share and we shall get rolling and sharing my screen how's that look there brad that looks good all right so i've got three instances uh to simulate that dev test prod scenario if you have a developer site instance one of those personal developer instances um you'll actually you know not be able to do uh all of this stuff and but you'll be able to use app engine studio you just won't be able to promote them up a pipeline because um kind of like this instance i'm in right now it doesn't have an application repo under the hood that can do that promotion um and so you won't see this message because we've loaded some fake data in those personal developer instances for you so that you'll you'll get past this screen but this is what's happening when you get to this screen is you have not yet configured app engine studio yet and so an admin will have to do this before any citizen devs get to come and and use app engine studio in your dev instance um so the first thing that we're going to have to do is over here in app engine studio we need to set up some environments so um and the way i know that is because you know you need to set up a pipeline and i could have started here on pipeline but then i see i need these three environments and i'd rather go directly to that table instead of doing pop-ups from here so i'm going to go straight to environment and create three there when do you think they would have gone dev test prod on that forum i'm sorry my ocd is kicking in did it does it it's dev prod test i think uh maybe some customers don't have a test invite that there are still can you skip it it's not a mandatory field that is uh yeah that's a whoops in my opinion someone made a decision with you sir might be the beer talking so we are going to uh call this one uh you know dev imp a and will says some customers test and prod so maybe that's what uh i i should have worn my shirt that uh i don't always test but when i do it's in production i do my dev and prod uh so i have got a aes credential i thought i thought i created oh i need a connection and credential alias yes let's see if it starts with one i think it contains it yes does it does it spoke that's what the pdi's use a uh use one that already exists i i don't see oh no let's go look credentials [Music] there's e bonding is there a yes this is there is a icbm sn cd spoke ci cd they're all they're using this one okay which makes sense right because that's sure what we're doing it is it is what we're doing so that i'm fine with that um and i want to uh i already created these i'll create a new one it's fine it's fine um this is going to be admin and this is a yes dot admin and we got really tricky password so phil phil asked a question about exporting the results of aes to another instance instead of using the pipeline i think we should get through this pipeline and kind of show how it works underneath and then i think the answer to that question will be a little bit more obvious okay so um as brad pointed out uh this is um a good place to start and it's probably what the documentation says is go create a credential under the ci cd spoke which if you haven't used or looked at any of the ci cd spoke that is a very useful tool so it allows you to move things between instances with automation uh from source control from the app repo um run atf tests um it is uh install plugins it is super useful um so now that i have my credential i can go back to engine and create my environments so new we're going to call this dev and okay and we uh now have ci cd spoke and we've got our instance earl here submit and now we'll do test test uh and that's gonna be what did i say test was gonna be yeah this one go ahead and get the arrow while i'm there um yes the credential is going to be the same because i'm lazy and let's go ahead and submit and then pride what do you got brad you sounded like you were going to say something i know i was going to wait till we got back to the pipeline but i'll say i i uh you know our um our product management teams for aes uh you know just to head off this question are aware that not every customer has devtest prod uh yes you know we are we are looking at you know future states of you know maybe this is not how your pipeline works uh but for now this is how the pipeline works correct uh thank you for that brad so um i've got the environments i've got the credentials i think that is uh what i need here let me go ahead and so i exported the credential uh and then let's go ahead and export these i just now thought about well that would be really nice if it uh you know did this for me right like i shouldn't need to set this up in multiple places should i i just gave it credentials and the ability to do things in other instances sounds like it sounds like a sheriff why didn't he go and do this in the other instances for me oh i need to yeah that's i also need to get the credential though let's grab the credential and then retrieved import choose so i'm going fast here because i'm just importing two xml files that we don't need to spend a lot of time on that you can do that from any list you don't have to go to retrieved update sets i am set in my ways more clicks than necessary all right more clicks are necessary to wherever i am importing to i i often do that just to verify that it's there but if i'm doing like eight of them at a time it's like i stay on the same list and go next next i actually import xml import xml and then i go into spec to make sure the data came out um import xml here no no go back to the list any header label at the very bottom any any column header menu label menu yeah import xml second from now okay same ui page and it does the same thing you can import an update set here too if you want it's just xml it's just going to end up in a different target table i think i realized that you could do that from any table i thought you had to do it from the table url nope no you could you can do it from anywhere like i'm doing it from here right um but i wasn't importing update sets but the the the whole point is the table definition is in the xml it says where do you want me to dump it it wow it knows where it is 12 and a half years you learn something those are the ones i treasure it's like how did i not know this before and there's still plenty out there so now i've got uh my environments and i need to set up the pipeline in this case we are just going to do one the abc pipeline we're going to make it active we're going to say this one's going to be dev and this is going to be prod because that's the great ordering and this one's going to be test so now we have a pipeline and we have only one active pipeline all others are inactive thanks for that message there aren't any others but sure thanks for telling me so now you'll notice when i reload app engine studio i no longer get that message saying you need to go configure things because it is now configured so that'll be like the very first step that you'll have to do is get that pipeline set up and again for the personal developer instances uh my uh the engineering team that i worked with uh for uh you know the quebec launch took care of that for you um and since you're not gonna be doing any pipeline stuff in your personal developer instance uh you get this nice little wizard and uh chuck show you know tech now it's going to go into more depth on like creating an app uh so we're just going to build one from a template really quick so there are templates um in which allow you to jump start an app so you should find if there is a template near to the application type that you're looking for go ahead and evaluate them and see if it helps jumpstart building your app which one do we want to uh go from today time i feel it i need i need some time off i i love it thanks chuck we will i'm i'm all for the time off wood is there something we can uh repurpose into plant management just ooh we we gotta we gotta uh you know the the plants the plants uh i saw groupies earlier the plants groupies um so i can preview uh what this app looks like with these images and you know i've got some descriptions and what it contains and you know i can even drill into i've never clicked that button and it gave me for like all right cool um and all right nice uh so we've decided time off is a good starter for our application so we're going to build a template i mean we're going to utilize this template to build an app based off that template so this is going to give me a new scoped app based off of that template and we're going to say the abc time off machine gives abc all the time off they need or we could just have a time machine [Laughter] so um this will take a moment it doesn't take a great deal of time um so it was there anything uh that i should have added along the way brad or chuck um to you know uh make sure that you know was there something that i i left out that uh because i'm familiar with this nothing that i can think of around the the whole process of hooking up your dev tests and prod brad yeah i mean not me neither i think uh you know around templates we've we saw those five templates uh you know i would expect to see more templates in the future and then at the moment uh you can only use the templates that we're shipping uh but uh eventually you know the hope is that customers will be able to author their own templates but that is not a current capability awesome well our new scoped app has been created um and i can go to that apps dashboard so there is if we go visit our scoped app list and sort by updated there should be a brand new spanking abc time off machine so this is yeah what gets generated from that template for me and and i haven't had to do anything other than name it yet so i've got 100 1455 application file entries uh already here to jumpstart my app um so this this is what we get um and i could go do five of these so if i've got you know uh five different orgs you know in my company that need separate time off apps for separate use cases and they're all going to manage them separately well maybe at five i might consider doing a more centralized one but they want to do their own thing they want to be the masters of their own domain i can generate five of them for them or allow them to generate their own is is a more accurate statement actually so um now i'm back in aes and i can review what we've got um but we're not going to spend much time on that because we're talking about uh the the pipeline and uh you know what what are the extra things i have to do um and not focusing on the development uh user right this moment um but uh you can see we've got a table uh we've got a mobile experience that traditional form view and then a and now experience portal so we've got a workspace form a now experience portal and so you know this would launch ui builder if i went to go drill in here and configure it we've got some flows we've got some roles and acls so we've got a working app right here and so we need to go make at least one change uh you know before we're going to promote this up the stack uh what do we want to adjust do we want to open ui builder and and have brad tell us what to do for like 30 seconds sure let's do that i think you have to hit oh no you're good yeah or maybe edit edit i would have gone to edit this will just show you all this do it i don't i don't think you can get there from here but i have to i limited a few days of playing hit edit okay it looks like the same thing looks like the same thing but okay was it the same preview wouldn't you know i could have hit preview but i didn't um so yeah i think it was going to launch ui builder either way it's a good landing do you want to sync uh different scope uh no i want to change my scope [Laughter] might have been the 404 page uh yeah so i i didn't i didn't actually click that uh so here we are in ui builder um and i'll even pull in the screen a little bit um just so that you get all of ui builder visible we see some icons right now a few there we go that's good um so here is ui builder what shall we change in here let's uh rename that that's what i'm gonna say i i like to find the content tree on the left and use that to find my things because that seems reasonable heading one especially when you have a container in a container yeah it can get really annoying as or or you start creating nesting containers and if there's nothing in them they're really hard to see yes cookie time nice and we should probably change the button to request cookie time oh request hey whoa that wasn't in the requirements request cookie time all right request cookie time oh that's too long i don't like how that's rendering uh it may not render like that for a real page we'll preview it um so all right uh let's make one more change any one more change chuck which what change should i make this is crazy talk now we'll just change another label recent requests to recent cookies recent cookies all right so we're talking about container five data roman maybe oh yeah recent cookies we're not going to change any at data or at context things at this point no no no user is going to see that so uh oh wait we have an empty state message down below that says time off annie cookies empty state message create a new cookie paid cookie i like that create a new paid cookie request paid cookie request i like it all right i'm gonna hit save before we get too crazy it's what happens when you drink and code kids drinking code um let us uh open this why why do you say no openy you need to i don't know why you would need a page parameter but there is one there okay who doesn't want um [Music] what does that even mean i don't know why i have to pass the landing page a parameter let's delete maybe that was that weird sync thing let's just delete that parameter uh go to how do i do that that's over here at the top right oh yeah you're right yeah required parameters ah yeah bye felicia open if it first doesn't work delete parameters i don't think that's the right answer i just a landing page shouldn't have a required page parameter oh no oh you might need this is i need an audience probably um so if we go here to variants into so we're on the landing page and we're here home defaults and let's go edit audience and see what role or thing i need to be able to render this no audiences let's add one i guess no it's um but let's just go grant me the role yeah so users uh which user am i yeah i'm the admin okay and let's go grab that role that was just generated do rolls edit and if we go here i can go to yeah give me give me admin roll yeah this thing so this is a good point uh time to point out that um you'll be granting uh delegated level permissions to for many of the folks that are going to be using app engine studio and they will not have access to grant roles to other users so that's part of the interaction between your app engine studio users and and you as the administrator is you will have to uh you know handle granting roles in this case i am an administrator and i'm using app engine studio but the app in studio roles itself to be able to come over here and create a new app does not include um you know adding people to groups or to roles so that's that's a thing to note is they can create roles but not grant them to users smart yeah so that that helps you know differentiate the app creating from the administering of the instance uh so now i need to uh log out and log back in or rather impersonate a user and then unimpersony in my service oxley days we used to call that segregation of duties it is i i had to show that in my last my last role at a customer um healthcare organization and when you're you had to show that you weren't the one uh you know that there's segregation of duties for between the person deploying the change and the person authorizing the change and the person who did you know created the the you know what is going to be in the change so we can reload app engine studio now and we can reload this landing page and hopefully we don't get a force [Music] come on i'm nervous because you can't see the all that dog's four legs [Laughter] um so why won't we be able to see that what is causing that at this point let's roll over to our landing page and see if there was anything else that might have been um it might have been a condition it might have been paid page equals home is that page you were supposed to pass home do not pass home do not collect that's a strange all right let's just let's just add that parameter we'll just add that back okay so we were a little hasty in uh removing our parameter knew that was going to come back and bite us yeah but but it was fun it was i enjoyed it um and so now we need to set this to home no it has to be the sis idea of home i'm just kidding and now it'll say i you can save it save it i mean that seems reasonable loading we'll hit say loading it's cookie time it's cookie time nice i should have i should have done plant space for the the plant groupies that's true of which i am one i love plants um so there we go we have uh modified uh our app just enough to say hey i'm ready to get this in production and have my users uh using this and then we'll start taking their feedback and going because this is actually a working app um that's generated from the template so i i don't have to i can but i don't have to add a lot to this uh to get going now you'll notice that i can't submit this right now and why can't i submit this it's because um uh you can't actually submit these uh anr instances because we don't have an application repo behind the scenes so submit is submitting it to be reviewed by the administrator set that is precisely it brad so a that aes rolled user um who creates this app and you know is the is the controller of this app has limited uh you know permissions they are a form of delegated developer and they have to submit a deployment request to an admin level user who can approve that deployment request or reject it and then that's what will move it between this development instance and the test instance and then from the test instance to the prod instance so let's go simulate that even though we can't actually uh you know click that submit button we can take a look at what will happen um when that's done and so if you're an admin you'll see this app deployment request so there should be a filter on this guy to not even show this to like the aes user but only to the admin see to see this deployment request table which if you took my ci cd workshop last knowledge will be incredibly familiar to you because it's the same this is this is actually from that workshop essentially so they took in inspiration from the workshop to create this uh deployment request process um so we will say uh move cookies uh v1 up um and we want to deploy to test environment and uh these things are uneditable because they're supposed to get generated from the submit request oops uh so what will happen is you hit submit and it will automatically create one of these deployment requests in the background so that aes user doesn't even know what's going on i mean i will tell them that a deployment request was submitted to the admin for approval um but they won't see this record directly so uh you know we'll have to uh if we want to go further with this we'll have to make it so that we can edit these um but at this point you know if the pipeline was populated and the app name and cis id were in here um how okay well uh clearly the flow populated the pipeline in the background because there's only one active pipeline that's able to be uh put in here so it it generated that for us so an approval will be sent to the administrator at this point um that's a standard approval under sis approval approver yep it's a standard approval um that will go to them and this is the record that they're approving so they would come here to check out the details and you know maybe have a conversation with the uh you know person if it's the first time you know you want to you know help them the appropriate amount for where they're at so you know their 20th update to their app probably not going to have to have a conversation about it you'll look to see what's in that update and hit approve uh without without a lot of interactions but the first time you probably want to have that conversation with them so they'll approve this record and then what will happen is there's a flow in the background that when this is uh you know when one of these is set to approve it will use the pipeline and that uh the uh the what to do field uh which was move it from you know deploy to test um it will grab so it'll publish it to the app repo and then from the app repo it will re you know tell the test instance hey go get this version of this app from the app rebuild and and that's how it's that's how it works um so we could probably i don't need i don't know if we if those flows are visible let's go look i would hope so oh i i really dislike whoever added this in quebec because flow designer is no longer the top thing it's a regular list of a filtered list of flows so thanks thanks whoever did that i'm appreciating you could find out go to the and see who did the lessons updated but actually i have to look internally to see who did that that co-deployment because it'll just say admin probably here like this will just say admin oh yeah which isn't right yeah updated by main and created by admin so curse you curse you silent developer in the background uh so let's see uh so actually you can see here's our flows from our app um which is great and ooh admin deployment approval flow that looks like a promising flow i legit have not opened this so i was not sure if we were going to be able to see the flow hey look deployment request is created or updated so we can actually see uh you know what the and state is uh pending approval and deploy to test environment hey yours should have run did you have an execution let's see oh we did yeah it probably worked because it didn't have an app id yep so yeah yeah that's gonna error out because of the app id yep awesome so let's go take a look just like people trying to print things that don't come out on the printer so so this is actually this flow is what populated that pipeline we saw it updated the pipeline after i created it and the flow did that because it said go grab the active pipeline and populate that in there and then it you know uses this uh you know publish application with application id so this is i believe nope this is not the stock cicd cicd1 it's slightly different because they added this devnotes but it's it's roughly the same so this is using the servicenow rest api from the sncicd group to publish so again i said the first thing it does is it publishes that version to the app repo and that's that's what this action does i yes yeah i didn't make any changes so uh publish that app with the id and then it's going to you know check to see if if it published and it once it published it's going to then say install that app from the repo to that target instance which in this case is going to be the test instance so you can see it grabbed the test instance credentials so that test environment instance credential and that test environment instance url and it grabbed the app version from that deployment request and this is the stock install application with id action that is shipped with that ci cd spoke and then it you know gets that execution tracker and then if that's successful um what is this publish app search configurations on the test instance oh wow it updates the ai search dictionaries profiles and index tables after the app is published that's nice i think those are uh i think those are all globally scoped probably that's why they do that yeah but but the fact that they thought to do that for us i didn't know they were doing that for us so thank you thank you app engine team may have missed it while i was uh answering a question was atf or instant scan in here anywhere it is not but it very easily can be added yeah right so you can easily extend this deployment to include instant scan and uh atf and what you can actually even do is have those run before it even sends you the approval record right so you can set up a flow on the deployment request table to execute before it even asks for that admin approval to run that instance scan and run those atf's and if successful then ask for your approval and if unsuccessful go ahead and and tell that that submitting user that they you know they have failed atf test cases and uh they need to go address that extensible extensible and then uh you know send emails to let that user know uh that the the app is moved to the test instance so while we can't directly do this we can see exactly what would have been done um had do had we actually have an app repo we could connect to today um and i apologize for not having one but it's not the simplest thing in the world for our internal servicenow instances to have those that's an interesting order number on that module 934 well that the app portfolio management uh is it loaded with stuff loaded and nobody's renumbered anything so we just keep injecting things in between things so there's 68 of them yeah i can see that yeah so that is um the [Music] that what you need to do to get started to use app engine studio to get it configured for your users um you know with that those environments and pipelines and the guided setup will help you do that that will help you get there [Music] questions not seeing anything in here lisa holdenstein's been online and she's been answering a lot of the questions that have been coming up we did have a uh we did have an es6 question uh which the answer to that is we're looking into options for enabling es6 server side that that is a uh oh and a forward lori just corey just answered it anyway so not a week goes by that is uh one of the awesome folks that are behind app engine studio so making that templating process work and turning that template into the scoped app that we have available here uh corey's team is the team that took care of that so kudos to him um so that is what i wanted to show is there anything else that you want me to uh drill into while we're still here um i'll give a quick tip that i discovered by accident yesterday i love it i was making a new app in aes created my table created the workspace went and looked at the workspace and noticed that the the list widget on the landing page had columns in the wrong order as often does when you get a new table click to the list on the left the full list came up columns were also in the wrong order said okay i can go into uib and add columns quickly if i choose to do that or i could go to list layout and change them quickly but what i discovered is that aes does not create an entry in sys ui list the fast fix for this after you create your workspace it's really funny you go to the table and click preview that's it both are fixed if you must change them you have list layout from there so it's like two clicks in your enlist layout one click and you got a better list layout than nothing so this is the hard way and you if you want to change whatever's on the list you're gonna have to replicate pages create variants and do all this other crazy stuff to link your form to their list just go preview your table and and your way ahead so uh if i understood you chuck you said you know i've got a workspace yep i've got lists um and and these are already configured um but if i created a brand new app and i have lists here that are not i want to figure these you may end up with number on the far right and like that's not what i want what you said to do is go to apple studio yep go to that first app and go to table table and click the preview button yep it will show you a standard ui 16 list layout oh and that generates the metadata for the list layout right then and i'm like wow that's already fixed i don't have to do anything how did that happen then i went back to workspace and refreshed and went hey they're both fixed i win [Laughter] well with that uh handy tip i think it's time to stop the screen share would you concur brad all right well that was a lot of fun um i have really enjoyed app engine studio it is uh you know the the future of building apps on the platform and it has been so much fun learning about it the three of us were actually involved in helping get the templates done so we are pretty familiar with app engine stream we're not as familiar with as corey's team is who actually built all of the underlying infrastructure here but uh we've been engaged and i don't know what what uh what other things can we say about app engine studio uh it's you know we're gonna we're gonna be highlighting it more the tech now is coming up uh next week um what what do y'all wanna add about epic it's sexy it is and and it's faster i think the build with chuck session at creatorcon is going to be 10 minutes shorter because of that now that that is quite a statement we shall see we shall see yeah i would say uh as far as spinning up an experience uh app engine studio is definitely the fastest way to create a custom portal or uh workspace experience uh if you go into and i'm gonna have a blog and a video out on this uh sometime soon um but uh if you go into an app in app engine studio you can say you know give me a portal experience and i think it creates you like eight pages that all have lots of components and data resources and they're all hooked up together already and something similar with workspace so even if you're not planning on deploying one it's kind of a good way to to learn ui builder uh to go in there and take a look at what gets generated for you uh and then those templates like i would go in and create an app from a template probably for all of the templates just to see you know kind of go in and look at what gets created with the templates and what kind of experiences you get and take a look through those so there's a lot of there's a lot of examples and app engine studio you know slash ui builder uh that you can kind of look at now that we have access to that we didn't have access to you know prior to a week ago yeah and those are the configurable workspaces that app engine studio will generate that is new in quebec so it's not exactly the same as the workspaces you might be uh familiar with in paris or earlier that was that was great though brad thanks for sharing that so with that chuck uh i am uh showed what i want to show today thank you it was not uh you know we weren't actually able to deploy it um you know and we went into why but you know we know the most have been we we know how to do it yep uh so with that i shall rate my beer unless we have something else all right my sour boysenberry plum uh was really good um this is this is this is a 4.25 that's good nice bread yeah my almond barrel age stout uh was pretty good i'm gonna give it a four two five as well i am once again very happy with my papago orange blossom mandarin wheat from just down the road it even says on the top uniquely arizona that's what i'm looking for all right uh we're gonna stamp that on chuck uniquely arizona 4.5 wow nice so with that everybody thank you very much for joining us if you got more questions about aes of course we have a podcast that came out on the 16th of march we've got tech now as we mentioned link in the chat bitly slash tn85 ridge coming up on the 23rd if you missed it and you're watching this much later we'll make sure you have a link to that as well but go check it out i think i set this up earlier today dev link dot sn slash tech now is the master list we have our own url shortener and we're going to abuse it accordingly in the next few weeks thank you andrew thank you brad and thank you viewer for watching we will talk to you again real soon take care bye bye [Music] you

View original source

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