+-------------+------------+----------------------------------------------------+--------+---------------------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
|Topic |Presenter(s)|Summary |Duration|Tags |Certification Quiz |Captions |
+-------------+------------+----------------------------------------------------+--------+---------------------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+
|Service Stack|James Gray |Detailed discussion of Service Stack; how to use it.|1:32:56 |#TrainingVideos, #FridayDeveloperTraining, #ServiceStack, #ClarityTraining|Service Stack|2020-06-19_ServiceStack_AutoGeneratedCaption.txt|
| | | | | | | |
| | | | | | |
|
+-------------+------------+----------------------------------------------------+--------+---------------------------------------------------------------------------+-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------+00:00:01.500 --> 00:00:04.623 - That's fine, so let's do. Let's go over the. 00:00:05.520 --> 00:00:07.660 - Let's go over the the spreadsheet and I don't know 00:00:07.660 --> 00:00:10.014 - Chris. If you want to. If you want to introduce, introduce 00:00:10.014 --> 00:00:11.726 - that and if we want to spin one 00:00:11.726 --> 00:00:19.520 - up and. Keep going on that. Yeah, basically we just made a 00:00:19.520 --> 00:00:22.258 - spreadsheet. Spreadsheet with all of the topics that we came 00:00:22.258 --> 00:00:25.042 - up with at the beginning, I think it was the beginning of 00:00:25.042 --> 00:00:26.434 - this year or late last year. 00:00:27.030 --> 00:00:32.265 - An we just rated them as a group so we just want to go back 00:00:32.265 --> 00:00:37.151 - through that list and update it an for a few of you that haven't 00:00:37.151 --> 00:00:41.339 - seen it. Supposed to Google doc just a Google sheet so it's 00:00:41.339 --> 00:00:46.574 - Excel in the cloud. An just has a each person has up to 10 votes 00:00:46.574 --> 00:00:47.970 - that you can cast. 00:00:48.570 --> 00:00:53.498 - So please keep it to 10 uhm and then essentially you can cast as 00:00:53.498 --> 00:00:58.426 - many votes as you want, um, on any of the topics, as long as 00:00:58.426 --> 00:01:03.706 - you stay at or below 10 votes used. So if you had a topic that 00:01:03.706 --> 00:01:07.578 - you really wanted, you could vote 10 times for that one 00:01:07.578 --> 00:01:12.154 - topic. Or you could vote twice for two five each and the idea 00:01:12.154 --> 00:01:16.730 - is that we accumulate the votes in any given week and the topic 00:01:16.730 --> 00:01:18.490 - with the most votes gets 00:01:18.490 --> 00:01:22.150 - coverage. So we'll pick it, you know, trainer Ann and kind of 00:01:22.150 --> 00:01:25.750 - have them go over those those topics that have the most votes. 00:01:26.270 --> 00:01:29.990 - And then at the end of each training for the topics that 00:01:29.990 --> 00:01:33.090 - were completed that we've covered will remove the votes so 00:01:33.090 --> 00:01:37.430 - that you have them back again if you voted for that topic that we 00:01:37.430 --> 00:01:41.770 - completed. So just kind of be an ongoing thing for you to kind of 00:01:41.770 --> 00:01:45.490 - go in and update it. It's just been awhile since we've updated 00:01:45.490 --> 00:01:47.970 - that, so we wanted to take a few 00:01:47.970 --> 00:01:52.170 - minutes. And do you have the link to that Eric, or do you 00:01:52.170 --> 00:01:55.950 - want me to grab that and send it out? Where is I don't visit 00:01:55.950 --> 00:02:00.348 - development team. I can get it really fast. OK, just take me a 00:02:00.348 --> 00:02:04.380 - minute sure, and if anyone else has it and you want to share it 00:02:04.380 --> 00:02:05.820 - in the channel, feel free. 00:02:06.590 --> 00:02:10.310 - Yeah, I think it's a great idea. I think that ultimately we're 00:02:10.310 --> 00:02:13.410 - just kind of looking for feedback. You know what we 00:02:13.410 --> 00:02:17.130 - learned from it, whether it be in a development level or a 00:02:17.130 --> 00:02:19.920 - communication level, or even just like that training suck. 00:02:19.920 --> 00:02:21.780 - Don't ever do anything like that 00:02:21.780 --> 00:02:25.424 - ever again. You know, just feedback. We're trying to switch 00:02:25.424 --> 00:02:29.736 - it up a little bit and you know, maybe it wasn't planned out the 00:02:29.736 --> 00:02:33.432 - best, but we're hoping that we would, you know, at least some 00:02:33.432 --> 00:02:36.820 - people would learn some things from it, and the people who 00:02:36.820 --> 00:02:40.824 - maybe didn't, or at least able to, you know, kind of pass on 00:02:40.824 --> 00:02:44.212 - their knowledge to others. So just kind of any feedback and 00:02:44.212 --> 00:02:46.060 - I'll kind of open the Florida 00:02:46.060 --> 00:02:50.020 - whoever. Hey I have 00:02:50.020 --> 00:02:57.521 - feedback. The thing that was the most confusing I guess, 00:02:57.521 --> 00:03:03.811 - and the most liable to cause openended amount of time 00:03:03.811 --> 00:03:09.472 - required, which isn't really optimal for our training format, 00:03:09.472 --> 00:03:16.391 - is that we didn't have a clear requirements, an wait. We 00:03:16.391 --> 00:03:21.320 - went really. First thing that it needed to be in, you know 00:03:21.320 --> 00:03:25.357 - six hours total, so I think a lot of expectations weren't 00:03:25.357 --> 00:03:29.027 - really being capped up on what we were doing, which 00:03:29.027 --> 00:03:30.128 - cause some problems. 00:03:31.380 --> 00:03:34.125 - Yeah, that's great feedback and definitely something that that 00:03:34.125 --> 00:03:38.090 - we kind of caught onto. And it's been said a couple of times. 00:03:38.090 --> 00:03:42.055 - And, uh, yeah, definitely would be it was that kind of hinges on 00:03:42.055 --> 00:03:46.020 - the not really planned as well. And we were kind of hoping I 00:03:46.020 --> 00:03:49.680 - don't know what we were hoping for on that, so that's good 00:03:49.680 --> 00:03:53.340 - feedback. I don't know if Chris you got anything else on that, 00:03:53.340 --> 00:03:54.865 - you gotta be Crisp Ific 00:03:54.870 --> 00:03:57.058 - Too many of us. 00:03:57.060 --> 00:03:59.310 - I did this. 00:03:59.310 --> 00:04:03.030 - Oh yeah, I. I mean I, I think that's definitely valid feedback 00:04:03.030 --> 00:04:06.440 - and I think moving forward you know is basically what I'm 00:04:06.440 --> 00:04:11.090 - getting out of. It is. It's cool to make apps, but the way we set 00:04:11.090 --> 00:04:12.330 - it up wasn't cool. 00:04:12.830 --> 00:04:14.498 - Is that basically it in a 00:04:14.498 --> 00:04:17.446 - nutshell? It was a pain in the 00:04:17.446 --> 00:04:19.880 - app. I mean I enjoyed it. 00:04:20.510 --> 00:04:23.159 - Uh, it was. 00:04:23.160 --> 00:04:28.980 - It was a client project that we weren't going to get spanked 00:04:28.980 --> 00:04:31.405 - for. It turned out badly. 00:04:31.410 --> 00:04:35.502 - So let's take the first. Let's take the first training out of 00:04:35.502 --> 00:04:39.935 - it, uh, where that 'cause that was kind of the issue was the 00:04:39.935 --> 00:04:43.686 - first training. So taking that training out of it, uh, what 00:04:43.686 --> 00:04:48.119 - else? What can we? What kind of feedback do we have from there? 00:04:48.119 --> 00:04:52.211 - I have some good feedback about the first training is what I've 00:04:52.211 --> 00:04:56.303 - learned is having somebody that has eyes on like both the front 00:04:56.303 --> 00:05:00.736 - end and back end and speaks to like the technical side of it, 00:05:00.736 --> 00:05:02.100 - is a really good. 00:05:02.120 --> 00:05:04.706 - Idea for success or planning for 00:05:04.706 --> 00:05:10.992 - success? Uh. So bringing back in the idea of like 00:05:10.992 --> 00:05:15.532 - technical leads and being able to communicate with the project 00:05:15.532 --> 00:05:16.894 - managers or whomever. 00:05:16.900 --> 00:05:23.225 - What the next steps are and how we should implement certain 00:05:23.225 --> 00:05:28.400 - things. Um, an pressure. The timeline besides the PMS. 00:05:28.410 --> 00:05:30.378 - Is a great idea for all 00:05:30.378 --> 00:05:32.470 - projects. Uh. 00:05:34.100 --> 00:05:38.624 - The other thing that I learned is I really wanted to dive more 00:05:38.624 --> 00:05:43.148 - into the C Sharp side of things. We really would like to get 00:05:43.148 --> 00:05:46.280 - some, uh, some training experience with more back end 00:05:46.280 --> 00:05:50.108 - stuff so I can really understand all the things that are 00:05:50.108 --> 00:05:52.860 - happening there. Um? 00:05:54.040 --> 00:05:58.336 - Front end was really fine. Uh, we did borrow some things from 00:05:58.336 --> 00:06:03.706 - the Internet. Uh, but it we had to get it working and we try to 00:06:03.706 --> 00:06:08.360 - get it is working as fast as possible, so we had something to 00:06:08.360 --> 00:06:09.434 - show the client. 00:06:10.100 --> 00:06:13.730 - Uh, and that was ultimately our biggest goal was to deploy 00:06:13.730 --> 00:06:17.360 - something so the client had something to see. Cool, yeah, I 00:06:17.360 --> 00:06:20.660 - would say definitely. Unlike the technical leads, uhm, you know, 00:06:20.660 --> 00:06:24.950 - I think that we kind of don't. I guess we don't really have 00:06:24.950 --> 00:06:27.920 - somebody that's called a technical lead. You know, I 00:06:27.920 --> 00:06:31.550 - think that we have some people that you can definitely reach 00:06:31.550 --> 00:06:35.840 - out to on that, and we're trying to implement those in, like the 00:06:35.840 --> 00:06:38.810 - architecture meetings at the beginning of the new projects. 00:06:38.810 --> 00:06:40.460 - So where we do have? 00:06:40.470 --> 00:06:43.430 - You know someone that has a pretty good understanding on 00:06:43.430 --> 00:06:47.870 - both the front and the back end. If not two people to kind of go 00:06:47.870 --> 00:06:51.126 - through those and estimate those out. An architect in a little 00:06:51.126 --> 00:06:52.902 - better than just hey build this 00:06:52.902 --> 00:06:56.255 - feature so. You know, I think that that's something that we're 00:06:56.255 --> 00:06:59.000 - working towards, so I think that's that's great feedback 00:06:59.000 --> 00:07:03.270 - there. and I think that here, in a little bit when we talk about 00:07:03.270 --> 00:07:06.625 - the book, I think then you're a perfect candidate for that. 00:07:06.890 --> 00:07:09.860 - Anybody else have, uh, any feedback from the trainings? 00:07:10.950 --> 00:07:14.610 - Yeah, I'll say something. So, uh, I think our team was one 00:07:14.610 --> 00:07:18.270 - uhm, when they didn't really have as much progress as far as 00:07:18.270 --> 00:07:21.930 - like, um, the funding goes, um, they first day of training. Uh, 00:07:21.930 --> 00:07:24.065 - we had a lot of issues with 00:07:24.065 --> 00:07:28.728 - come. Or I guess our local or just trying to get the app going 00:07:28.728 --> 00:07:32.446 - in general so that kind of took the majority of that. So we 00:07:32.446 --> 00:07:35.592 - already started a little bit behind an we really only had 00:07:35.592 --> 00:07:39.024 - time to work on it during training. So then on the second 00:07:39.024 --> 00:07:42.456 - day like we did make some progress but we were trying to 00:07:42.456 --> 00:07:45.602 - stay between the requirements and so we were really trying to 00:07:45.602 --> 00:07:49.034 - make it work and we just had some difficulties. I guess doing 00:07:49.034 --> 00:07:53.324 - so and it was just kind of just us to kind of getting through it 00:07:53.324 --> 00:07:55.326 - and so I would say that was 00:07:55.326 --> 00:07:58.534 - something that. Uh, we had issues with UM by the training 00:07:58.534 --> 00:08:02.252 - was really fun. I feel like if we made more progress on the 00:08:02.252 --> 00:08:05.970 - first day then we would have had a better um app on the 00:08:05.970 --> 00:08:09.116 - second training day and to show the client. But we were 00:08:09.116 --> 00:08:11.976 - really trying to save between the requirements so that's why 00:08:11.976 --> 00:08:14.550 - ours was not in the same caliber I guess. 00:08:16.250 --> 00:08:18.974 - Sure, yeah, I mean, you know that's going to happen, um, but 00:08:18.974 --> 00:08:22.379 - I think the goal was like if if you had to take away from that, 00:08:22.379 --> 00:08:24.649 - 'cause If you had troubles, then maybe you were troubleshooting 00:08:24.649 --> 00:08:27.146 - things and you could, you know. Now troubleshoot them again I 00:08:27.146 --> 00:08:30.097 - think would be a good takeaway if you if you have some of 00:08:30.097 --> 00:08:35.810 - those. Yeah. You just now experienced in 00:08:35.810 --> 00:08:37.472 - troubleshooting angular 9 00:08:37.472 --> 00:08:40.622 - applications. But it was really fun. I think it was 00:08:40.622 --> 00:08:44.366 - really cool, uhm, but I think we can do it better next time 00:08:44.366 --> 00:08:48.110 - if we do it again, um, but that's just kind of my key. 00:08:48.110 --> 00:08:51.854 - Back as far as like my team on how we were with the 00:08:51.854 --> 00:08:54.446 - issues that we had, so um, things could've been 00:08:54.446 --> 00:08:57.614 - different. But maybe next time if we do it, they will 00:08:57.614 --> 00:09:01.070 - be an we have the experience a little bit better now. So 00:09:01.070 --> 00:09:02.510 - yeah, that would be good. 00:09:03.590 --> 00:09:08.606 - Shall we get started on the voting the vote voting ritual 00:09:08.606 --> 00:09:12.254 - via the Google Doc spreadsheet? So Sarah Yeah. 00:09:12.260 --> 00:09:16.544 - Are we gonna reset the votes or we just gonna go crazy so we 00:09:16.544 --> 00:09:20.522 - have a couple in here that we've gone over. So for example like 00:09:20.522 --> 00:09:24.194 - Kindle Grid CV grid, we've gone over that right? So the green 00:09:24.194 --> 00:09:28.784 - ones are the new guys so we want to vote on the green ones or. 00:09:28.810 --> 00:09:32.170 - No, the green ones are supposedly covered. It does need 00:09:32.170 --> 00:09:36.874 - to be updated a little bit, but the main the main thing I would 00:09:36.874 --> 00:09:41.578 - say is that we want to make sure everyone has the link and then 00:09:41.578 --> 00:09:44.938 - yes everyone should go through an remove the votes from 00:09:44.938 --> 00:09:48.634 - anything that you don't want covered anymore. Or you know put 00:09:48.634 --> 00:09:50.650 - the votes where you would find 00:09:50.650 --> 00:09:54.290 - appropriate. So you're welcome to kind of update your votes at 00:09:54.290 --> 00:09:58.868 - the end of, uh, I would say at the end of each training. So 00:09:58.868 --> 00:10:01.484 - basically, until let's say Monday, close business, you're 00:10:01.484 --> 00:10:05.081 - welcome to update your boats. And, uh, if you update your 00:10:05.081 --> 00:10:09.659 - votes after you know after that point we just may not be able to 00:10:09.659 --> 00:10:13.583 - account for that in that week's training. So just know that. I 00:10:13.583 --> 00:10:17.834 - mean, it's not like it's the end of the world, but if you're 00:10:17.834 --> 00:10:21.431 - going around changing your votes every hour or something just to 00:10:21.431 --> 00:10:25.742 - be funny. The cutoff is Monday. The end of end of the day, and 00:10:25.742 --> 00:10:29.655 - then that way that allows the team to kind of plan for the 00:10:29.655 --> 00:10:30.859 - training that week ice. 00:10:31.420 --> 00:10:36.628 - How do you change the color of this thing? How do you make it 00:10:36.628 --> 00:10:40.370 - green? We need someone to own keeping this spreadsheet up to 00:10:40.370 --> 00:10:42.351 - date so that we don't have a 00:10:42.351 --> 00:10:47.416 - kind of. You know logistical issue with it. 00:10:47.540 --> 00:10:48.660 - Yeah, I can do that. 00:10:49.650 --> 00:10:53.610 - OK, and then I also I'm just checking to see. 00:10:55.380 --> 00:10:59.800 - OK, I see Kelsey on too awesome. So Kelsey, if you don't mind 00:10:59.800 --> 00:11:03.880 - helping too with just making sure this is a test of today. 00:11:04.660 --> 00:11:07.309 - Oh yeah, absolutely. 00:11:07.310 --> 00:11:11.392 - This is this spreadsheet is gonna get kind of up to date or 00:11:11.392 --> 00:11:15.160 - out of date and there it is extremely busy. He's willing to 00:11:15.160 --> 00:11:19.242 - keep it up to date but he's he's always getting pulled into stuff 00:11:19.242 --> 00:11:23.010 - like around the Clock. So if you can just help him and 00:11:23.010 --> 00:11:26.464 - collaborate with him to make sure that this gets updated and 00:11:26.464 --> 00:11:30.860 - you and he can do a quick review sometime next week and just go 00:11:30.860 --> 00:11:34.314 - over what that means. But it's basically as these trainings as 00:11:34.314 --> 00:11:38.396 - we complete them. We just need to remove the topics or just you 00:11:38.396 --> 00:11:42.210 - know kind of. Put them down on the list so that it's not 00:11:42.210 --> 00:11:43.358 - cluttering up the view. 00:11:44.190 --> 00:11:47.700 - Sure would be perfect, thanks. 00:11:47.700 --> 00:11:48.969 - OK, right on. 00:11:49.780 --> 00:11:55.019 - Uhm, you are also welcome to edit a only your column and less 00:11:55.019 --> 00:12:00.661 - you want to mess with CB and then you can edit his column 2. 00:12:00.670 --> 00:12:05.864 - OK, alright um so do we wanna add does anyone have we want to 00:12:05.864 --> 00:12:10.316 - go through and add some things to this? If people have some 00:12:10.316 --> 00:12:14.026 - ideas and maybe something that they're covering. And um, Steph 00:12:14.026 --> 00:12:18.849 - or connect or DNN that we want to, we want to go over. 00:12:18.880 --> 00:12:22.676 - Troubling you right now that we can maybe do a training on for 00:12:22.676 --> 00:12:25.304 - everyone else or what's something that you had been 00:12:25.304 --> 00:12:28.808 - troubling with. And now you've got to figure it out and you'd 00:12:28.808 --> 00:12:32.896 - like to give a training on. I vote I vote Jesse be one of 00:12:32.896 --> 00:12:36.108 - those latter people. Alright, so power hour with Jesse power hour 00:12:36.108 --> 00:12:39.612 - with Jesse. Yeah, everything you learn, you have to take a shot. 00:12:39.620 --> 00:12:44.285 - Uh, so uhm. I can add it to the sheet, but also it's just I 00:12:44.285 --> 00:12:48.328 - don't think it would take too long up. As far as like updating 00:12:48.328 --> 00:12:52.371 - like configs for 2020.1 I made a little dockets in nucla know uhm 00:12:52.371 --> 00:12:57.036 - so maybe we can go over that or maybe I can just post it the 00:12:57.036 --> 00:13:00.768 - link again. It's also in stack over probably but Jesse has some 00:13:00.768 --> 00:13:05.433 - pointers on that too so maybe we could do like a joint thing or I 00:13:05.433 --> 00:13:08.543 - don't know it might get 15 minutes here. Updating configs 00:13:08.543 --> 00:13:10.098 - or adding configs or yes 00:13:10.098 --> 00:13:15.560 - enabling. Um, like new features and stuff. Oh really, Jason 00:13:15.560 --> 00:13:19.400 - Configs. That's that's awesome. At the same time, we could do 00:13:19.400 --> 00:13:21.689 - one where you can add stuff to 00:13:21.689 --> 00:13:25.020 - it as well. Do that. 00:13:25.020 --> 00:13:27.176 - Weather right now I got you. I'm 00:13:27.176 --> 00:13:30.188 - already in here. OK cool thanks. 00:13:30.940 --> 00:13:36.246 - Um, just just kind of out of that as well. Uhm, well, we, uh, 00:13:36.246 --> 00:13:40.794 - kind of go over. Like? What series of settings to turn on 00:13:40.794 --> 00:13:44.963 - for a specific channel? Because that's one of the things that 00:13:44.963 --> 00:13:48.374 - Heather Ann, Jesse and I was running to Avadi 00:13:50.800 --> 00:13:54.750 - Yeah, I would say from a business perspective I would 00:13:54.750 --> 00:13:58.700 - like the majority of these trainings to go toward very 00:13:58.700 --> 00:14:02.650 - tactical. So like immediate hands on things that we don't 00:14:02.650 --> 00:14:07.390 - know. Or maybe we could use a reminder on or more granular 00:14:07.390 --> 00:14:12.525 - details. So I think that would be great if you guys would just 00:14:12.525 --> 00:14:14.895 - add these topics to the list. 00:14:15.440 --> 00:14:18.520 - And you're welcome to keep calling them out as you're 00:14:18.520 --> 00:14:21.908 - adding them. Please go ahead and add literally anyone on the 00:14:21.908 --> 00:14:24.988 - team. You're welcome to add any topic to this list. 00:14:25.500 --> 00:14:29.728 - And the idea would be that you can get can get other people to 00:14:29.728 --> 00:14:34.258 - vote on it too. If you want be like Hey, this is what we were 00:14:34.258 --> 00:14:35.768 - working on and better dad. 00:14:35.780 --> 00:14:39.329 - You're also welcome to use teams too and be like Hey guys, this 00:14:39.329 --> 00:14:43.151 - has been a trouble spot for me. If you feel the same way, vote 00:14:43.151 --> 00:14:46.973 - on it and that way will cover it in the training. Uh, Chris. You 00:14:46.973 --> 00:14:48.884 - wanna take it away on the book? 00:14:48.930 --> 00:14:56.115 - Yes, Sir. So um, this kind of with the same idea in mind as of 00:14:56.115 --> 00:15:03.282 - this training. Um, that we did, uh, I. I went online and I 00:15:03.282 --> 00:15:07.890 - found a book that is essentially a workshop, uhm? 00:15:08.450 --> 00:15:14.546 - Anne, let me see if I can get my screen to show here as well. Um, 00:15:14.546 --> 00:15:17.594 - it's a workshop with essentially.net core and angular 00:15:17.594 --> 00:15:24.662 - 9. And, uh, the Long story short is it's it's a very, UM, 00:15:24.662 --> 00:15:28.991 - hands-on activity driven book. And it has really specific 00:15:28.991 --> 00:15:34.282 - projects that it kind of walks you through as you're going 00:15:34.282 --> 00:15:39.092 - through different components of.net core and angular 9 an I 00:15:39.092 --> 00:15:43.902 - don't mean that in the literal component technical term, but 00:15:43.902 --> 00:15:47.750 - just like sections of functionality, and it goes 00:15:47.750 --> 00:15:50.155 - through some of the basics. 00:15:50.210 --> 00:15:55.632 - Of. Youknow.net core, overall bootstrapping, and just some of 00:15:55.632 --> 00:16:00.972 - the physical files and and how they work. The configuration 00:16:00.972 --> 00:16:03.642 - files and differences with with, 00:16:03.642 --> 00:16:10.886 - you know. Dot net in general and then it also does kind of a 00:16:10.886 --> 00:16:15.416 - similar thing with angular 9 where it kind of meticulously 00:16:15.416 --> 00:16:20.399 - goes through all of the different files and what they do 00:16:20.399 --> 00:16:25.835 - and the folder structure, and then it kind of builds up into 00:16:25.835 --> 00:16:30.365 - into actual components and into modules an then into for.net 00:16:30.365 --> 00:16:31.724 - core entity framework. 00:16:31.760 --> 00:16:36.692 - For.net core and some of the just kind of typical things that 00:16:36.692 --> 00:16:37.925 - you're gonna need. 00:16:38.560 --> 00:16:41.960 - With the Web APIs and just general functionality that you 00:16:41.960 --> 00:16:45.700 - guys all kind of played with with the most recent project 00:16:45.700 --> 00:16:50.460 - that we did, but it's it's a lot more detailed and it's got a 00:16:50.460 --> 00:16:54.540 - kind of slew of kind of supporting data around it as you 00:16:54.540 --> 00:16:58.960 - would expect with the book, and one of the things that we did 00:16:58.960 --> 00:17:03.720 - about a year. I guess it was about a year ago, little under a 00:17:03.720 --> 00:17:08.480 - year ago is a group of folks joined together and we got a C 00:17:08.480 --> 00:17:15.623 - Sharp book. And it was a very relaxing um 1700 or 2500 Page 00:17:15.623 --> 00:17:21.806 - Book 3. And I'll have you know that I finished the damn thing. 00:17:21.806 --> 00:17:24.998 - But um, anyways, uh, it was not 00:17:24.998 --> 00:17:31.470 - easy. And we kind of got bogged down because a lot of the team 00:17:31.470 --> 00:17:36.310 - was kind of like hey, can we actually go through some 00:17:36.310 --> 00:17:39.830 - examples and crystallize all this? You know, scholarly 00:17:39.830 --> 00:17:45.110 - information that we're getting an and so this book would be a 00:17:45.110 --> 00:17:49.070 - very delayed answer to that. So good feedback, guys. 00:17:49.090 --> 00:17:56.220 - Spot spot. Hey, that's great. Better you know 00:17:56.220 --> 00:17:59.200 - that's that's that's great. 00:17:59.200 --> 00:18:02.990 - I learned what Doctor Ilities. 00:18:02.990 --> 00:18:07.685 - And I've got it. I've got it up here, so let me show my screen. 00:18:07.685 --> 00:18:12.067 - I'm VPN from my Mac into my PC at the office. So um, anyway, 00:18:12.067 --> 00:18:16.449 - this is the table of contents and you can kind of see it goes 00:18:16.449 --> 00:18:20.518 - over some basic things and you guys are welcome to look at this 00:18:20.518 --> 00:18:24.587 - too. I sent the link in the channel so you might have a 00:18:24.587 --> 00:18:27.717 - better viewing experience if you do that, but it just 00:18:27.717 --> 00:18:31.160 - meticulously walks through a lot of the things that you would 00:18:31.160 --> 00:18:32.412 - expect and probably find 00:18:32.412 --> 00:18:35.838 - beneficial here. Yeah, so I found this to be really helpful 00:18:35.838 --> 00:18:40.368 - for me. Um, I already know a lot of these things, so it was kind 00:18:40.368 --> 00:18:44.596 - of a breeze for me to just crank through it and get really far 00:18:44.596 --> 00:18:47.918 - really fast, which I found to be really enjoyable 'cause it's 00:18:47.918 --> 00:18:51.844 - like. Oh well, I can do this. This isn't going to be a 00:18:51.844 --> 00:18:54.864 - problem, but I also found that the descriptions were precise 00:18:54.864 --> 00:18:57.884 - and detailed enough that if I didn't already know it. 00:18:58.420 --> 00:19:02.171 - It would give me a good background and and you know 00:19:02.171 --> 00:19:05.922 - exactly how these pieces work and the fact that it's very 00:19:05.922 --> 00:19:09.673 - hands-on was really helpful because it helps you to kind of 00:19:09.673 --> 00:19:12.060 - crystallized that knowledge quickly. Just gives you 00:19:12.060 --> 00:19:15.811 - something to hang, hang that information on. so I thought it 00:19:15.811 --> 00:19:17.857 - would be really useful as a 00:19:17.857 --> 00:19:22.232 - group. To spend about 15 to 30 minutes, so not the majority of 00:19:22.232 --> 00:19:25.950 - the training, but 15 to 30 minutes and just kind of do a 00:19:25.950 --> 00:19:30.088 - cliffs notes version. Of you know what what we were covering 00:19:30.088 --> 00:19:33.871 - in this book in any given week and kind of go through this 00:19:33.871 --> 00:19:37.654 - whole thing over the course of like 10 to 12 weeks or something 00:19:37.654 --> 00:19:41.437 - like that. And that way maybe it's like a chapter a week. Kind 00:19:41.437 --> 00:19:45.220 - of a deal. And then we just go through the examples and you 00:19:45.220 --> 00:19:48.421 - just kind of have someone show the examples during the training 00:19:48.421 --> 00:19:52.204 - and kind of talk through for the for the entire group. What some 00:19:52.204 --> 00:19:55.405 - of the key tenants were. And kind of summarize that for 00:19:55.405 --> 00:19:57.151 - everyone. So even if you didn't 00:19:57.151 --> 00:20:01.294 - read it. Or go through the exercise. You still benefit from 00:20:01.294 --> 00:20:03.224 - some of the cliffs notes. 00:20:03.260 --> 00:20:06.593 - Sorry if I'm saying that wrong. If it's Cliff, notes or 00:20:06.593 --> 00:20:09.320 - whatever, um, but yeah. Basically, I guess I would 00:20:09.320 --> 00:20:12.956 - suggest possibly, you know one chapter a week and that would be 00:20:12.956 --> 00:20:17.198 - 12 weeks. Um, and so we could spend about 15 to 30 minutes at 00:20:17.198 --> 00:20:20.834 - the beginning or the end of training and just kind of go 00:20:20.834 --> 00:20:24.470 - over this together and then for those in the group that wanted 00:20:24.470 --> 00:20:26.894 - to actually actively participate, will buy the Kindle 00:20:26.894 --> 00:20:30.530 - or the print version of this book and we can save safely, 00:20:30.530 --> 00:20:35.075 - ship it to you via Amazon. You don't have to come pick it up or 00:20:35.075 --> 00:20:36.893 - anything. If you want the print. 00:20:37.210 --> 00:20:41.074 - And then you guys would be welcome to go through this and 00:20:41.074 --> 00:20:45.260 - we could just kind of have like you know, go through one chapter 00:20:45.260 --> 00:20:49.124 - a week, type of an assignment and get, you know, get yourself 00:20:49.124 --> 00:20:52.666 - through this. One of the things that I've found personally about 00:20:52.666 --> 00:20:56.208 - reading books and going through exercises which this book is all 00:20:56.208 --> 00:20:59.750 - about, is it really boost my confidence and the majority of 00:20:59.750 --> 00:21:03.936 - the time what I found, even when I'm quote unquote an expert at 00:21:03.936 --> 00:21:07.800 - something. Hell, I'd say half of the time, if not more. I'm 00:21:07.800 --> 00:21:09.410 - actually Googling to get an 00:21:09.410 --> 00:21:13.409 - answer anyway. But it's always really nice in it. In it I would 00:21:13.409 --> 00:21:16.399 - even say in many cases very critical to have that 00:21:16.399 --> 00:21:19.987 - scaffolding or the framework to kind of hang your thoughts on an 00:21:19.987 --> 00:21:23.276 - kind of plan around and know the basics and understand the 00:21:23.276 --> 00:21:26.565 - fundamental. So obviously you've got to have both things, so I 00:21:26.565 --> 00:21:30.452 - just thought that this would be a great way to kind of get 00:21:30.452 --> 00:21:33.143 - everyone's confidence locked in on some of these newer 00:21:33.143 --> 00:21:36.731 - technologies. I think that's one of the benefits of being part of 00:21:36.731 --> 00:21:40.319 - a development company is that you can kind of push to that. 00:21:40.410 --> 00:21:44.190 - Next level and stay up to speed on some the latest technologies 00:21:44.190 --> 00:21:48.600 - so, but I thought it would be a lot more organized than what we 00:21:48.600 --> 00:21:51.750 - just did. No offense to our amazing leadership 'cause you 00:21:51.750 --> 00:21:55.530 - guys kind of figured out that you know doing these hands on 00:21:55.530 --> 00:21:59.310 - activities would be awesome, but you guys are all busy and you're 00:21:59.310 --> 00:22:02.775 - solving problems left and right and working around the Clock so 00:22:02.775 --> 00:22:07.185 - it's just hard for us to be able to put together. You know this 00:22:07.185 --> 00:22:10.965 - level of detail now. There are some other books out there that 00:22:10.965 --> 00:22:14.820 - are really hands-on. Um and this I would say, is like a medium 00:22:14.820 --> 00:22:18.880 - level of hands on so it has a lot of activities, but it also 00:22:18.880 --> 00:22:22.360 - has a good amount of kind of textual content that's kind of 00:22:22.360 --> 00:22:25.840 - talking you through things. So if you guys would prefer to be 00:22:25.840 --> 00:22:29.030 - more activity based, you know there are books that are even 00:22:29.030 --> 00:22:32.800 - more hands on than this one, so I'd love for you to actually 00:22:32.800 --> 00:22:34.540 - spend some time digging in and 00:22:34.540 --> 00:22:39.050 - looking at it. Um and share your feedback? Um, and just kind of 00:22:39.050 --> 00:22:43.028 - give your give your thoughts on it in detail, but if you'd like 00:22:43.028 --> 00:22:46.700 - to share your initial thoughts and in any kind of high level 00:22:46.700 --> 00:22:48.230 - now you you certainly welcome 00:22:48.230 --> 00:22:54.246 - to. OK, uh, what I was thinking would was it would be great if 00:22:54.246 --> 00:22:58.448 - you could highlight the sections that apply to what we are 00:22:58.448 --> 00:23:03.796 - working in in South and that way we can focus on will be most 00:23:03.796 --> 00:23:05.706 - relevant to our our work. 00:23:06.480 --> 00:23:11.618 - So that the reason that I would suggest this be 15 to 30 minutes 00:23:11.618 --> 00:23:15.655 - every week is because this is kind of, you know, Greenfield 00:23:15.655 --> 00:23:20.059 - slash, new area that we're working on now. A lot of this 00:23:20.059 --> 00:23:24.096 - does apply to connect, but inside of Seth most of this 00:23:24.096 --> 00:23:26.298 - isn't going to apply right now. 00:23:26.890 --> 00:23:30.630 - Um, certainly with the updates that we're working on with.net 00:23:30.630 --> 00:23:34.370 - core and angular nine, it's gonna be very applicable. So 00:23:34.370 --> 00:23:39.232 - really the direct answer would be in the near future. A lot of 00:23:39.232 --> 00:23:43.346 - this is going to matter, but in the immediate day-to-day, the 00:23:43.346 --> 00:23:47.086 - list that we're working on inside of the Google sheet. 00:23:47.630 --> 00:23:50.806 - And prioritizing, especially with specific topics that you 00:23:50.806 --> 00:23:55.570 - guys are running into and you want to cover, that's going to 00:23:55.570 --> 00:23:59.143 - be the most direct immediately beneficial training, and that 00:23:59.143 --> 00:24:04.701 - would be more based on what you guys put in the list. And you 00:24:04.701 --> 00:24:09.068 - know anything that we're seeing as leadership team and we want. 00:24:09.620 --> 00:24:13.088 - In the absence of other feedback that we think makes sense to 00:24:13.088 --> 00:24:16.964 - cover. Does that make sense? That makes sense. I'll just 00:24:16.964 --> 00:24:20.660 - wanted to see if there's any low hanging fruit to grab. 00:24:21.520 --> 00:24:26.518 - I think it is I think there is a good amount for connect because 00:24:26.518 --> 00:24:31.159 - I mean a lot of this is going to be pretty straightforward for 00:24:31.159 --> 00:24:35.443 - most people, but I found that even even if that's the case, 00:24:35.443 --> 00:24:39.013 - you know there still are some helpful things that are 00:24:39.013 --> 00:24:43.297 - reminders, but the actual just kind of walk through of how net 00:24:43.297 --> 00:24:47.938 - core works and some of the basic files and how they function. I 00:24:47.938 --> 00:24:52.222 - found that to be pretty helpful and then it has just some 00:24:52.222 --> 00:24:53.293 - helpful background information 00:24:53.293 --> 00:24:57.092 - on. Uhm, you know some of these different programming languages 00:24:57.092 --> 00:25:01.628 - and kind of what's going on and what the history was behind 00:25:01.628 --> 00:25:05.408 - that. I found that to be particularly helpful, because if 00:25:05.408 --> 00:25:08.810 - you're upgrading or you're working with an existing system 00:25:08.810 --> 00:25:12.212 - and you're trying to think about the architecture that 00:25:12.212 --> 00:25:13.346 - backgrounds actually pretty 00:25:13.346 --> 00:25:18.070 - helpful. And then, um, some of these pieces are actually very 00:25:18.070 --> 00:25:23.250 - similar to what we're doing in in stuff. But like I say, a lot 00:25:23.250 --> 00:25:27.690 - of connect is, you know, it's it's going to be a directly 00:25:27.690 --> 00:25:31.760 - applicable to what this is doing, and there you know this 00:25:31.760 --> 00:25:37.680 - isn't as much of a C Sharp book or an angular book as it is like 00:25:37.680 --> 00:25:42.120 - a hands-on, almost like a cookbook with a tour of some of 00:25:42.120 --> 00:25:46.190 - the basic technology and just making sure that you have the 00:25:46.190 --> 00:25:47.670 - basics down really well. 00:25:47.720 --> 00:25:51.841 - Um, so I think that this is going to be more catered toward 00:25:51.841 --> 00:25:55.645 - folks that you know, they may may not have ever dabbled in 00:25:55.645 --> 00:25:59.132 - these, and they want a really solid foundation for kind of 00:25:59.132 --> 00:26:01.985 - dabbling in some of these technologies. And kind of 00:26:01.985 --> 00:26:04.838 - getting their confidence up about implementing them in a 00:26:04.838 --> 00:26:08.325 - real example. So my theory is doing this offline mostly and 00:26:08.325 --> 00:26:12.763 - then bring it back to the group. To summarize, is a good way to 00:26:12.763 --> 00:26:16.250 - get everyone exposed and then for those who want to really 00:26:16.250 --> 00:26:17.835 - invest in it, you can. 00:26:17.870 --> 00:26:21.808 - And will purchase the book and kind of help keep you 00:26:21.808 --> 00:26:25.030 - accountable to this 12 week clarity programming program of 00:26:25.030 --> 00:26:28.252 - getting your booty and gear on these new technologies. 00:26:30.170 --> 00:26:32.420 - If you want. You don't have to. 00:26:33.130 --> 00:26:36.850 - It's an optional get, 00:26:36.850 --> 00:26:43.198 - including. Mine, mine goes into our for race. 00:26:43.200 --> 00:26:47.140 - But thanks for the feedback, Brandon. I think basically what 00:26:47.140 --> 00:26:48.322 - you're saying is. 00:26:49.030 --> 00:26:52.319 - The majority the time should go toward tactical things that we 00:26:52.319 --> 00:26:55.309 - can use immediately, which I think makes total sense. Um, 00:26:55.309 --> 00:26:58.598 - that's why we're kind of shifting Tord that for the next 00:26:58.598 --> 00:27:02.784 - at least I you know, I think the goal would be to take these 00:27:02.784 --> 00:27:04.279 - training topics that you guys 00:27:04.279 --> 00:27:08.796 - list. In any we come up with and make that the primary focus of 00:27:08.796 --> 00:27:11.788 - the meetings. Yeah, I think one thing is really important as 00:27:11.788 --> 00:27:14.780 - well as like reading like reading through a lot of this 00:27:14.780 --> 00:27:18.316 - and you know kind of what Chris was talking about as well as 00:27:18.316 --> 00:27:21.036 - like Google searches will still happen. You know, especially if 00:27:21.036 --> 00:27:24.300 - you know like all that, just like the basics and like even 00:27:24.300 --> 00:27:27.836 - past that but it will mostly be for syntax instead of like how 00:27:27.836 --> 00:27:31.100 - to do something 'cause you'll know in the back your head. I 00:27:31.100 --> 00:27:34.364 - know I can do that but I just don't particularly remember the 00:27:34.364 --> 00:27:35.996 - syntax to how to do it. 00:27:36.010 --> 00:27:39.904 - So I think you know, while Google searches will still be 00:27:39.904 --> 00:27:43.090 - had, they'll be a lot more precise and tactical. 00:27:44.220 --> 00:27:47.964 - That's right, yeah. I mean, I think I think what I've seen is 00:27:47.964 --> 00:27:52.284 - the way I would say it is. It's like board game and this is like 00:27:52.284 --> 00:27:55.740 - an expansion pack for most of the team. Uhm, you know you've 00:27:55.740 --> 00:27:58.908 - already played the core board game, Ann. You may not have 00:27:58.908 --> 00:28:02.076 - played the expansion pack. This is the rules for the expansion 00:28:02.076 --> 00:28:05.820 - pack, and if you haven't done any of it really that much, then 00:28:05.820 --> 00:28:08.700 - you know let's let's work together offline. For those of 00:28:08.700 --> 00:28:12.156 - you, feel free if anyone else has comments, feel free to jump 00:28:12.156 --> 00:28:15.612 - in. For those of you who want to go through the book. 00:28:15.630 --> 00:28:20.034 - And and do the active exercises. Uhm, anyone on the team is 00:28:20.034 --> 00:28:24.805 - welcome to do that. By the way, um, just please let Eric or 00:28:24.805 --> 00:28:29.280 - Chris know. An uhm, and you're also welcome to just chat in 00:28:29.280 --> 00:28:33.760 - here and say, sign me up. You can just say that, um, sign me 00:28:33.760 --> 00:28:40.046 - up. Anne will get you signed up for the Kindle book or the the 00:28:40.046 --> 00:28:46.076 - print an I guess did not know if you would just say you know sign 00:28:46.076 --> 00:28:51.302 - me up and then hyphen Kindle or print and that way will know 00:28:51.302 --> 00:28:56.126 - which one to get you and then basically so you're aware you're 00:28:56.126 --> 00:28:58.538 - making a non blood oath blood 00:28:58.538 --> 00:29:03.140 - oath. Going to do your best and you don't have to be perfect, 00:29:03.140 --> 00:29:07.690 - but but do your best to get through one chapter a week and 00:29:07.690 --> 00:29:10.840 - complete the exercises. I think it'll take you about. 00:29:11.440 --> 00:29:15.962 - An hour to two hours a week, um to do, and it's actually really 00:29:15.962 --> 00:29:19.192 - relaxing. Easy reading. The author is done. It pretty good 00:29:19.192 --> 00:29:23.068 - job of making it pretty. You know it flows pretty nicely, but 00:29:23.068 --> 00:29:26.621 - worst case you might tell yourself two to four hours a 00:29:26.621 --> 00:29:28.882 - week for 12 weeks to get through 00:29:28.882 --> 00:29:33.862 - this whole book. So, but you know, the the upside is your 00:29:33.862 --> 00:29:37.542 - building your career and you know regardless of where your 00:29:37.542 --> 00:29:41.222 - career leads you, you'll have this knowledge and that's really 00:29:41.222 --> 00:29:45.270 - you know personally, and as a business, that's one of the 00:29:45.270 --> 00:29:49.686 - goals that I have, and certainly the business has for our team. 00:29:49.700 --> 00:29:53.704 - You guys are also welcome to make suggestions for other books 00:29:53.704 --> 00:29:58.436 - or other kind of formats. There are a lot of other really nice 00:29:58.436 --> 00:30:02.440 - examples. One of the examples that will probably do and we 00:30:02.440 --> 00:30:07.900 - kind of talked about this like I want to say this is 7 or 8 00:30:07.900 --> 00:30:12.268 - months ago now, but the E shop for containers E shop on 00:30:12.268 --> 00:30:16.892 - containers. And and that was a really nice setup with some of 00:30:16.892 --> 00:30:18.802 - this newer technology as well. 00:30:18.970 --> 00:30:23.038 - It's somewhat out of date now. Um, compared to this, but that 00:30:23.038 --> 00:30:27.106 - might be another good example to kind of go over architecture and 00:30:27.106 --> 00:30:30.157 - some some of the newer technologies, but any other 00:30:30.157 --> 00:30:34.564 - examples like that that you guys see that you might enjoy and you 00:30:34.564 --> 00:30:38.632 - think it would be beneficial to group, please just let Chris or 00:30:38.632 --> 00:30:42.361 - Eric know, or you're welcome to chime in with those now. 00:30:43.210 --> 00:30:50.723 - Um? OK, so service stack is the way service that is the 00:30:50.723 --> 00:30:58.465 - API layer. It is the piece that is the the the other. Let the 00:30:58.465 --> 00:31:03.995 - outermost wall of the back end that the Internet can 00:31:03.995 --> 00:31:07.313 - communicate with, including connect including People's 00:31:07.313 --> 00:31:13.203 - browsers. No, all kinds of stuff all over the place. Anything if 00:31:13.203 --> 00:31:19.965 - anything wants to talk to stuff it has to talk to the API. The 00:31:19.965 --> 00:31:25.761 - API is, uh, it's. It's now two projects, but it's a project 00:31:25.761 --> 00:31:30.591 - that physically instantiates and starts a service stack back end 00:31:30.591 --> 00:31:35.421 - that registers and listens for endpoint called path to be 00:31:35.421 --> 00:31:38.802 - followed with information set along them too. 00:31:38.810 --> 00:31:39.600 - Uh. 00:31:41.150 --> 00:31:44.710 - To to to have some kind of reaction in within. 00:31:45.370 --> 00:31:49.660 - Excuse me, kind of reaction within stuff and they reply with 00:31:49.660 --> 00:31:52.780 - some kind of message in virtually every case. 00:31:53.820 --> 00:31:59.163 - Now, uh, uh, a regular like common 8 Web API system Web API 00:31:59.163 --> 00:32:03.684 - is out by Microsoft. It uses more like bottle view controller 00:32:03.684 --> 00:32:08.616 - style things where you have a class that has a series of 00:32:08.616 --> 00:32:12.726 - functions inside of it. Those functions get an attribute like 00:32:12.726 --> 00:32:17.247 - HTTP, Jeter, HTTP closed. Those kinds of things and it allows 00:32:17.247 --> 00:32:21.357 - for communicating in a very specific way. It's very common 00:32:21.357 --> 00:32:24.645 - way. If there's something really wrong with it. 00:32:24.710 --> 00:32:28.038 - A man it does, you know, allow for a lot of you know 00:32:28.038 --> 00:32:30.342 - versatility in a lot of different ways across the 00:32:30.342 --> 00:32:31.622 - system, as this thing that's 00:32:31.622 --> 00:32:37.054 - grown overtime. Service stack functions differently in that 00:32:37.054 --> 00:32:40.449 - it's more about a re 00:32:40.449 --> 00:32:46.348 - usability. Uh, ease of maintenance? Uh, as well as, uh, 00:32:46.348 --> 00:32:50.596 - automatically generating a clear forms of documentation. Uh, for 00:32:50.596 --> 00:32:57.204 - for use, as well as making it a very explicit in that how routes 00:32:57.204 --> 00:33:01.924 - are constructed and how they would respond depending on like 00:33:01.924 --> 00:33:08.060 - if you give it a different verb, such as get versus post versus 00:33:08.060 --> 00:33:11.364 - delete or put or Patch or a 00:33:11.364 --> 00:33:13.458 - custom verb. If you want to 00:33:13.458 --> 00:33:17.106 - sign. And what to do on those individual things? 00:33:18.140 --> 00:33:24.120 - Um so. Primarily speaking, uhm, it was decided 00:33:24.120 --> 00:33:29.280 - along time ago. Even before I took over the project as the 00:33:29.280 --> 00:33:35.300 - lead architect back in the era of Noah, who none of you know he 00:33:35.300 --> 00:33:40.030 - was building a system. He was the first one. Tried to 00:33:40.030 --> 00:33:44.330 - implement angular on us. It was basically Seth what was 00:33:44.330 --> 00:33:45.620 - effectively set 4.0. 00:33:45.630 --> 00:33:48.610 - An invading into 4.1 where we were building this new 00:33:48.610 --> 00:33:51.590 - infrastructure where we were going to start using angular. We 00:33:51.590 --> 00:33:55.464 - were going to start using this new API process so that we could 00:33:55.464 --> 00:33:58.444 - simplify how we were working with the different systems and 00:33:58.444 --> 00:34:01.126 - make them more reliable and maintainable across the board. 00:34:01.126 --> 00:34:04.702 - When you have these larger teams of people, each trying to submit 00:34:04.702 --> 00:34:08.874 - their own stuff and try not to have them all step on top of 00:34:08.874 --> 00:34:12.604 - each other's toes. Good thanks and service that came out. Um, 00:34:12.604 --> 00:34:14.692 - uh, quite awhile ago and and. 00:34:15.220 --> 00:34:18.894 - We were working in one of the version fours. Actually think 00:34:18.894 --> 00:34:22.234 - they're really working version three of service stack. One of 00:34:22.234 --> 00:34:26.576 - their sub sub bills and three and we worked on it for quite 00:34:26.576 --> 00:34:30.584 - awhile and we really liked how it was changing and working on 00:34:30.584 --> 00:34:34.258 - those things. Instead of flowing really well with how the team 00:34:34.258 --> 00:34:38.266 - was functioning at the time and then eventually we were like OK 00:34:38.266 --> 00:34:39.936 - this is going pretty good. 00:34:39.950 --> 00:34:43.202 - But there's a. It's a a paid versus free and there's no 00:34:43.202 --> 00:34:45.641 - support. Depending on what you're doing with the licensing 00:34:45.641 --> 00:34:49.706 - and stuff like that, and we had to, we had to mess with a few 00:34:49.706 --> 00:34:52.958 - different things. But when we built it up we were like, OK, 00:34:52.958 --> 00:34:56.481 - let's go to four and let's get the license and make sure that 00:34:56.481 --> 00:35:00.004 - we're doing this in the way that we can get proper responses. We 00:35:00.004 --> 00:35:02.985 - can cooperate. More features form service tech so that we can 00:35:02.985 --> 00:35:05.966 - do more unique things, like how we're going to handle file 00:35:05.966 --> 00:35:08.947 - uploads because we were on for three, we're actually going to 00:35:08.947 --> 00:35:10.573 - do file uploads in a separate 00:35:10.573 --> 00:35:13.629 - process. 'cause it wouldn't handle it correctly. Uh, so in 00:35:13.629 --> 00:35:17.241 - version four we were able to fully implement a lot more of 00:35:17.241 --> 00:35:20.853 - the basic features and make use of the utility that service tech 00:35:20.853 --> 00:35:24.164 - provides for different things. So it's kind of a history around 00:35:24.164 --> 00:35:27.475 - what it is and why we implemented it. Now my start 00:35:27.475 --> 00:35:28.980 - showing it. It actually looks 00:35:28.980 --> 00:35:31.520 - like. Just I'm assuming that my screen is visible at this 00:35:31.520 --> 00:35:32.392 - point, is that correct? 00:35:34.300 --> 00:35:36.040 - You got it, yes. 00:35:36.640 --> 00:35:40.982 - So I have a staff 2020.1 here. This is the bleeding edge one. 00:35:40.982 --> 00:35:45.324 - I've actually got some bug fixes that are I get some for tickets 00:35:45.324 --> 00:35:49.666 - that are in this branch it I have not pushed up yet. I've 00:35:49.666 --> 00:35:53.006 - done a full code coverage analysis with this branch and 00:35:53.006 --> 00:35:57.014 - everything in it just to make sure that I'm covering stuff as 00:35:57.014 --> 00:36:01.022 - I change it with these things and then here is where service 00:36:01.022 --> 00:36:05.030 - tax starts to come into place. For the longest time until 2021 00:36:05.030 --> 00:36:07.368 - we only had this one project, he 00:36:07.368 --> 00:36:11.350 - recalled. Clearly got ucommerce dot service and it was in the 00:36:11.350 --> 00:36:15.288 - services layer and its purpose is to load and instantiate the 00:36:15.288 --> 00:36:18.868 - service tag API with 2020.1 as explained in the previous 00:36:18.868 --> 00:36:22.090 - training. We've added this, a secondary one that basically 00:36:22.090 --> 00:36:23.164 - just instantiates it. 00:36:23.860 --> 00:36:26.687 - In almost the same way, but it filters which end points 00:36:26.687 --> 00:36:29.000 - actually get loaded, which reduces the startup time and 00:36:29.000 --> 00:36:30.799 - somewhat increases the security because there's a 00:36:30.799 --> 00:36:33.369 - whole lot of end points that just physically never get 00:36:33.369 --> 00:36:35.939 - loaded, so you can't call things like editing a discount 00:36:35.939 --> 00:36:38.766 - because the storefront never needs to do that. It can call 00:36:38.766 --> 00:36:42.364 - to add a discount to a cart, but it doesn't need to be able 00:36:42.364 --> 00:36:44.934 - to physically edit or create a discount or anything like 00:36:44.934 --> 00:36:47.761 - that, so it kind of obvious. Get some of that information 00:36:47.761 --> 00:36:48.018 - away. 00:36:49.430 --> 00:36:54.090 - Hello. That does the filtering in a bit, but I would feel 00:36:54.090 --> 00:36:56.950 - that moment I want to go over the structure of like what a 00:36:56.950 --> 00:36:59.370 - an endpoint physically looks like, and to do that one of 00:36:59.370 --> 00:37:02.450 - the best ways that I can go do that is kind of bringing up 00:37:02.450 --> 00:37:04.210 - the product routes and the product service files. 00:37:05.400 --> 00:37:08.337 - I'm going to go ahead and shrink these things that we 00:37:08.337 --> 00:37:11.274 - maximize the room that we've got going for the file so 00:37:11.274 --> 00:37:12.876 - you guys could read it all. 00:37:14.010 --> 00:37:16.362 - Is that pretty legible? Do you guys? do I need to zoom 00:37:16.362 --> 00:37:16.950 - in any further? 00:37:18.720 --> 00:37:24.702 - It's good to me. Uh, will report for recording purposes. Size 00:37:24.702 --> 00:37:28.830 - compliance. So for instance here, here's a great starting 00:37:28.830 --> 00:37:31.470 - point right here. Get product by 00:37:31.470 --> 00:37:36.062 - ID. What we've done here with this is, uh, get product by ID 00:37:36.062 --> 00:37:41.252 - is a class and I gotta put this is actually a two spots here. I 00:37:41.252 --> 00:37:45.750 - got it where 84 is generating the basic routes. It is a class 00:37:45.750 --> 00:37:47.134 - instance in C Sharp. 00:37:47.680 --> 00:37:51.100 - Uh, we're inheriting another class that has this one property 00:37:51.100 --> 00:37:52.468 - only called implements ID. 00:37:53.040 --> 00:37:55.480 - There my headset turns off because I don't hear anything. 00:37:56.460 --> 00:37:58.532 - Are you able to hear me now? 00:37:58.532 --> 00:38:03.117 - Yes. Come here you brighten. I understand how service tech 00:38:03.117 --> 00:38:07.713 - works, but I'm not sure you really explained it in a simple 00:38:07.713 --> 00:38:11.926 - enough manner that a lot of our team would would understand 00:38:11.926 --> 00:38:14.990 - what's actually happening when we load service stack. 00:38:15.820 --> 00:38:20.643 - So so basically service stack is a framework that makes it a lot 00:38:20.643 --> 00:38:25.466 - simpler to build out an API. We can provide a lot less details 00:38:25.466 --> 00:38:31.031 - and a lot less code would be need to be written to you to get 00:38:31.031 --> 00:38:35.112 - an API up and running with service stack, and that's that's 00:38:35.112 --> 00:38:39.935 - the main goal and it handles a lot of the authentication and a 00:38:39.935 --> 00:38:44.387 - lot of the API processes that would normally need to be coded 00:38:44.387 --> 00:38:47.726 - out so that basically what service tag is it's. 00:38:47.730 --> 00:38:50.802 - An interface where we can build up a framework for an API 00:38:50.802 --> 00:38:54.130 - without having to do a lot of the grunt work that goes into 00:38:54.130 --> 00:38:59.040 - that. OK. Thank you for now it's correct. 00:38:59.040 --> 00:39:00.190 - There any other questions before 00:39:00.190 --> 00:39:04.318 - I move on? Uh, yes, can you please zoom in, please? The 00:39:04.318 --> 00:39:07.216 - recording will see that thank you. OK, uhm so. 00:39:08.320 --> 00:39:12.772 - What we have a we have this get product by ID endpoint. 00:39:13.580 --> 00:39:15.165 - To create the endpoint, we 00:39:15.165 --> 00:39:18.573 - create a glass. And the classical literally just be a 00:39:18.573 --> 00:39:21.263 - class itself. It doesn't even have to have any properties 00:39:21.263 --> 00:39:24.760 - in it or anything to in order to create an end points. The 00:39:24.760 --> 00:39:27.181 - thing that becomes important for service stack is this 00:39:27.181 --> 00:39:30.409 - route tag. When you put this out tribute of route on it 00:39:30.409 --> 00:39:32.023 - and then you specify at path. 00:39:33.050 --> 00:39:36.266 - Uh, the verb that it will respond on, uh, those are the 00:39:36.266 --> 00:39:38.946 - two minimum things that you physically need honor out in 00:39:38.946 --> 00:39:40.018 - order to make it. 00:39:40.980 --> 00:39:45.308 - Excuse me Uh, physically register itself within service 00:39:45.308 --> 00:39:49.544 - stack in order to recognize that there are out there that should 00:39:49.544 --> 00:39:53.780 - be spoken to now in this specific case, we have as part 00:39:53.780 --> 00:39:58.722 - of the route the path on route we have an ID number that needs 00:39:58.722 --> 00:40:04.017 - to be set so that we can get a specific product by its ID. Now 00:40:04.017 --> 00:40:06.841 - instead of is actually implementing this property all 00:40:06.841 --> 00:40:11.077 - over the place, open over again. I have a class called implements 00:40:11.077 --> 00:40:13.901 - ID that specifies that property along with the. 00:40:14.580 --> 00:40:17.109 - Along with the attribute attribute of API member that 00:40:17.109 --> 00:40:19.919 - says information about this property and how the API should 00:40:19.919 --> 00:40:23.010 - interact with this property. So for instance, the API member tag 00:40:23.010 --> 00:40:26.101 - says that the name of this properties ID, which should be 00:40:26.101 --> 00:40:28.911 - kind of obvious. But sometimes you want to put other 00:40:28.911 --> 00:40:32.283 - information. Or do you want to show it like a different casing 00:40:32.283 --> 00:40:36.217 - or something on the API while it in C sharp? It would still might 00:40:36.217 --> 00:40:39.308 - still be these this Capital ID you can actually override that 00:40:39.308 --> 00:40:40.713 - specification here by giving it 00:40:40.713 --> 00:40:44.467 - a different name. You specify the data type, which actually 00:40:44.467 --> 00:40:47.477 - doesn't affect the API itself. It does affect the output 00:40:47.477 --> 00:40:50.186 - documentation for something like swagger so that the customer 00:40:50.186 --> 00:40:53.497 - who's like or the end user who's trying to consume this 00:40:53.497 --> 00:40:57.109 - information so that they know how to talk to the API knows 00:40:57.109 --> 00:41:00.721 - that this is an integer versus a decimal or something like that,00:41:00.721 --> 00:41:04.935 - and that it's not a long, so if you put a number that's that's 00:41:04.935 --> 00:41:07.945 - higher than the maximum integer value, it would actually throw 00:41:07.945 --> 00:41:11.858 - an exception. So it's very clear to them that this must be an 00:41:11.858 --> 00:41:13.430 - integer number. Come here. 00:41:14.280 --> 00:41:18.912 - The parameter type here for path is how we specify that the 00:41:18.912 --> 00:41:20.070 - parameter should be. 00:41:21.300 --> 00:41:24.855 - Inside here versus in the body of the request. 00:41:25.410 --> 00:41:30.100 - And we have it is required true, saying that if the value was not 00:41:30.100 --> 00:41:34.120 - fast at all, like the API physically like it was sent over 00:41:34.120 --> 00:41:37.470 - the wire without anything after this slash or anything before 00:41:37.470 --> 00:41:41.155 - it, then just simply throw a 404 because it can't understand 00:41:41.155 --> 00:41:44.170 - what's going on because you didn't provide the appropriate 00:41:44.170 --> 00:41:47.855 - information in order for the API to register the the interaction 00:41:47.855 --> 00:41:52.110 - correctly. Um, after that we also specify how and what it 00:41:52.110 --> 00:41:55.663 - returns. With this I return object and as a generic that 00:41:55.663 --> 00:41:59.539 - says what kind of object model should I be expecting to return 00:41:59.539 --> 00:42:03.092 - so that the API documentation can benefit can spit out owing 00:42:03.092 --> 00:42:07.291 - to product model which will have these properties on it so I know 00:42:07.291 --> 00:42:10.521 - how to use the information that's coming back from my 00:42:10.521 --> 00:42:14.074 - request is that I return. Is that a service tax specific 00:42:14.074 --> 00:42:17.304 - interface? Yes, I return comes out of service attack itself. 00:42:17.930 --> 00:42:22.490 - There is also the. If it doesn't return anything which you should 00:42:22.490 --> 00:42:27.430 - never do, there is an I return void as well from service stack. 00:42:28.170 --> 00:42:30.340 - In there. Hum. 00:42:31.010 --> 00:42:34.057 - That allows you do that, and that basically says this. This 00:42:34.057 --> 00:42:37.381 - returns nothing up on its reply. You might get the like the 00:42:37.381 --> 00:42:40.705 - status code or whatever from the request like status 200 sets for 00:42:40.705 --> 00:42:44.306 - four, so it's 500, but you won't get an actual physical body on 00:42:44.306 --> 00:42:46.799 - your reply. However, and everywhere and stuff we always 00:42:46.799 --> 00:42:49.846 - want to make sure that we're returning something so that we 00:42:49.846 --> 00:42:52.616 - could tell the user interface more specifically this worked or 00:42:52.616 --> 00:42:55.940 - this didn't work because we have too many things that would have 00:42:55.940 --> 00:42:58.987 - a status code 200, but when I actually physically have failed, 00:42:58.987 --> 00:43:02.034 - so we want to make sure that we're turning something every 00:43:02.034 --> 00:43:05.910 - time. And ideally in the future we want to make sure 00:43:05.910 --> 00:43:09.276 - that all of these I returns are actually wrapped in a 00:43:09.276 --> 00:43:12.642 - set action response. So if I can get this stop waiting 00:43:12.642 --> 00:43:15.396 - for an editor command finish over and over again, 00:43:15.396 --> 00:43:16.926 - what I would ideally want? 00:43:18.040 --> 00:43:19.500 - It's hard to say this. 00:43:20.070 --> 00:43:21.150 - Every time. 00:43:22.220 --> 00:43:25.000 - So that you always get these action response, which will 00:43:25.000 --> 00:43:28.614 - include messages that say that you know we got a 200 from the 00:43:28.614 --> 00:43:31.394 - response, but the individual things about why this might be 00:43:31.394 --> 00:43:34.452 - not be available like there was a security concern around this 00:43:34.452 --> 00:43:36.954 - particular product or there was bad information about product, 00:43:36.954 --> 00:43:40.290 - so it's not a valid product in order to physically request it, 00:43:40.290 --> 00:43:43.348 - or it's not visible to the storefronts because it's a back 00:43:43.348 --> 00:43:46.406 - end only. Think back office only product that's used for internal 00:43:46.406 --> 00:43:49.742 - purposes or something like that. I who knows it could be any 00:43:49.742 --> 00:43:52.522 - number of things. I would like that to be there. 00:43:52.630 --> 00:43:57.358 - By making that transition is a long and arduous process to make 00:43:57.358 --> 00:44:00.510 - sure that everything gets updated everywhere to verify 00:44:00.510 --> 00:44:05.238 - that all that works, so we don't. I'm not doing that right 00:44:05.238 --> 00:44:09.090 - now, OK? Two additional piece of information that we can provide 00:44:09.090 --> 00:44:11.950 - and this this really just helps with the documentation. Here is 00:44:11.950 --> 00:44:15.070 - the summary tag that says. What is this end point forward and 00:44:15.070 --> 00:44:16.890 - supposed to be like just a quick 00:44:16.890 --> 00:44:21.350 - blurb that says. This is what we do with this endpoint. Using it 00:44:21.350 --> 00:44:24.977 - to get a specific product boom done. I don't need a long drawn 00:44:24.977 --> 00:44:27.767 - out explanation about what's going on or anything like that. 00:44:27.767 --> 00:44:31.115 - I kind of just need the quick summary of what's what this 00:44:31.115 --> 00:44:33.068 - endpoint is 4 and this does end 00:44:33.068 --> 00:44:36.508 - up inside documentation. Uh, the priority value is something 00:44:36.508 --> 00:44:40.564 - that, um, if two end points by defaulted service tag. If you 00:44:40.564 --> 00:44:44.282 - had two end points that could physically resolve out to the 00:44:44.282 --> 00:44:48.338 - same thing, the one with the highest priority is the one that 00:44:48.338 --> 00:44:51.718 - actually get processed, and that is something that is possible. 00:44:51.718 --> 00:44:55.436 - However, we don't have anything that implements it and does it 00:44:55.436 --> 00:44:57.802 - that way in our system with it. 00:44:58.730 --> 00:45:02.414 - What I'm using it for with priority one in priority two is 00:45:02.414 --> 00:45:05.791 - I'm actually using as part of RT 4 documentation for generating 00:45:05.791 --> 00:45:08.247 - the typescript data. In comparing the difference between 00:45:08.247 --> 00:45:11.931 - the object itself and its hashed version of the end point. So 00:45:11.931 --> 00:45:15.615 - it's basically the same thing, but with the word cashed on it 00:45:15.615 --> 00:45:19.606 - and then the cash allows it to go use the Redis caching for 00:45:19.606 --> 00:45:22.676 - whatever the response originally was in order to provide that 00:45:22.676 --> 00:45:26.053 - information out of the cash or The Walking through the actual 00:45:26.053 --> 00:45:30.044 - like us through the API into the work flows down to the data 00:45:30.044 --> 00:45:31.579 - access later with the mentalism 00:45:31.579 --> 00:45:34.383 - mapping. And all the time that it required Oregon physically 00:45:34.383 --> 00:45:37.587 - run those things through so as you run through this stuff, you 00:45:37.587 --> 00:45:40.791 - get the priority to on the caching and that just helps the 00:45:40.791 --> 00:45:43.995 - T4 four at understand that this is the correct route. If it 00:45:43.995 --> 00:45:47.466 - detects this, because when it text it it loads it up and it 00:45:47.466 --> 00:45:50.670 - binds both this route and this route. Since this is a Harriet, 00:45:50.670 --> 00:45:53.607 - so we're using this priority Toyota help filling that out and 00:45:53.607 --> 00:45:56.010 - prevent that from causing a problem inside the T4. 00:45:57.010 --> 00:46:00.453 - That's the basics around the class itself, in the kind of 00:46:00.453 --> 00:46:04.209 - things that would go on to it. These classes could also have 00:46:04.209 --> 00:46:07.339 - other additional properties on them that In addition to the 00:46:07.339 --> 00:46:10.782 - things that they might inherit, or these are the places, for 00:46:10.782 --> 00:46:13.912 - instance, this particular route is a partial class. They're all 00:46:13.912 --> 00:46:17.355 - partial classes. An overall I file here. I have these three 00:46:17.355 --> 00:46:20.798 - custom properties that I'm adding onto the model so that it 00:46:20.798 --> 00:46:24.554 - can recognize it In addition to what generated by the four. So 00:46:24.554 --> 00:46:26.745 - when I get into the product by 00:46:26.745 --> 00:46:30.600 - ID. And specifically stating how much quantity I want, what store 00:46:30.600 --> 00:46:35.124 - I might be in, and what brand this is involved with an and. 00:46:35.124 --> 00:46:39.300 - The reason for that is with the product's. One of the things 00:46:39.300 --> 00:46:43.128 - that we have is volume based pricing with several of our 00:46:43.128 --> 00:46:46.608 - pricing mechanisms like price rules and tiered pricing. So I 00:46:46.608 --> 00:46:49.740 - specified the product quantity that quantity that I used 00:46:49.740 --> 00:46:52.524 - whenever I'm generating the pricing information on this 00:46:52.524 --> 00:46:54.612 - product model so that I sent. 00:46:54.690 --> 00:46:57.440 - Stuff on there and you'll notice here that this description is 00:46:57.440 --> 00:47:02.610 - actually wrong, uhm? He should actually say that want to take. 00:47:04.480 --> 00:47:09.720 - I should actually say affects volume, I say. 00:47:10.700 --> 00:47:13.868 - Yeah, that's a little more apt description for that 00:47:13.868 --> 00:47:17.036 - property is doing and this information gets spit out 00:47:17.036 --> 00:47:18.444 - into the end documentation. 00:47:19.630 --> 00:47:23.007 - Uh, on that stuff and you'll notice here that these things 00:47:23.007 --> 00:47:26.691 - are not required. They could be marked required if I wanted to, 00:47:26.691 --> 00:47:30.068 - but in this case there all mobile they're not required to 00:47:30.068 --> 00:47:34.059 - be on the model and they don't need to do anything now. Earlier 00:47:34.059 --> 00:47:37.129 - when I mentioned that we had that separate project for 00:47:37.129 --> 00:47:39.585 - launching storefront with filtered, I filtered set of 00:47:39.585 --> 00:47:43.576 - endpoints. This is how we do that here is this used in store 00:47:43.576 --> 00:47:47.260 - front property on the class says that it should be generated in 00:47:47.260 --> 00:47:49.102 - with the T4 Times script and 00:47:49.102 --> 00:47:51.874 - loaded up. Whenever the storefront API starts, it's the 00:47:51.874 --> 00:47:55.498 - same thing with this used in store admin, which is not this 00:47:55.498 --> 00:47:59.424 - at that man, but the store admin that's used by like stores and 00:47:59.424 --> 00:48:02.142 - vendors to control their individual store in a multi 00:48:02.142 --> 00:48:05.464 - store site setup. That's not very common or anything, so it's 00:48:05.464 --> 00:48:09.088 - not a big or opted ask, but this using storefront one is 00:48:09.088 --> 00:48:12.108 - definitely the piece that let's you physically load that stuff 00:48:12.108 --> 00:48:16.794 - in. And because it's partial class, I can go put it into the 00:48:16.794 --> 00:48:20.655 - separate file and do that and take care of that. There some of 00:48:20.655 --> 00:48:24.219 - you may have noticed during the process of working with this T4 00:48:24.219 --> 00:48:26.892 - files, I had had these properties inside these files 00:48:26.892 --> 00:48:30.753 - directly, so if you ran the T4, you have to manually restore all 00:48:30.753 --> 00:48:34.911 - those things. I have since fixed that and they are now in the in 00:48:34.911 --> 00:48:39.069 - a separate file, which I am not seeing. Lots of my head in the 00:48:39.069 --> 00:48:40.554 - camera. The name of it. 00:48:40.730 --> 00:48:44.318 - But there is a singular file that I have where all those 00:48:44.318 --> 00:48:47.607 - classes are listed out, and I've added the appropriate tags at 00:48:47.607 --> 00:48:51.494 - all of 'em that weren't already that were inside the T4, so we 00:48:51.494 --> 00:48:55.381 - don't have to worry about saving that on the T4 anymore, so we're 00:48:55.381 --> 00:48:56.278 - safe there now. 00:48:56.320 --> 00:49:02.350 - Hammer So like for the API storefront, 00:49:02.350 --> 00:49:06.000 - can we still attach an like because they're separated out? 00:49:06.000 --> 00:49:10.745 - Is that still one attached to one process, or is 2 separate W 00:49:10.745 --> 00:49:14.760 - 3 WP processes? So if we know we're hitting a storefront, 00:49:14.760 --> 00:49:19.140 - specific APR end point, we have to attach to the API storefront? 00:49:19.850 --> 00:49:23.390 - If you're working from the admin, you need to attach to the 00:49:23.390 --> 00:49:26.635 - admins API. If you're working from the store front, you need 00:49:26.635 --> 00:49:28.405 - to attach this to the storefront 00:49:28.405 --> 00:49:32.180 - API. Workflows will come with it, correct? Yes? Um, because in 00:49:32.180 --> 00:49:36.008 - the admin is loading every end point and the admin isn't 00:49:36.008 --> 00:49:40.532 - looking at the API for the store right? It's only looking at the 00:49:40.532 --> 00:49:45.056 - admins API so it doesn't matter if the endpoint is used in both 00:49:45.056 --> 00:49:48.884 - places. The advent APIs only looking at the admin set of 00:49:48.884 --> 00:49:52.712 - endpoints, which is everything. So you don't need to go if 00:49:52.712 --> 00:49:56.540 - you're you're doing stuff like you're trying to fix a problem 00:49:56.540 --> 00:49:58.628 - in the product editor in the 00:49:58.628 --> 00:50:01.305 - admin. You don't need to attach to the API for the storefront, 00:50:01.305 --> 00:50:03.970 - just the one for the for the admin. Does that all make sense? 00:50:04.830 --> 00:50:10.160 - Yes, OK. I just realized that this one has to 00:50:10.160 --> 00:50:11.485 - say problems with that same 00:50:11.485 --> 00:50:15.845 - thing on there. OK, so that said, um, when you have your 00:50:15.845 --> 00:50:19.265 - your end point builds up and you have all the properties of 00:50:19.265 --> 00:50:22.400 - specified on it, with all the different things that you wanted 00:50:22.400 --> 00:50:24.965 - to do, whether something required where the parameter is 00:50:24.965 --> 00:50:28.385 - going to be in there in the body of the request request. 00:50:29.410 --> 00:50:31.108 - It is a query string parameter. 00:50:31.810 --> 00:50:36.052 - Uh, you know if it's a nullable, what kind of what name is it 00:50:36.052 --> 00:50:39.688 - going to have the data type in? The description is going to 00:50:39.688 --> 00:50:43.021 - generate on the documentation and ideally want as much of this 00:50:43.021 --> 00:50:46.657 - information as you can get an including. You also want to do, 00:50:46.657 --> 00:50:50.596 - you want to get your XML summary tags on stuff too, but that's 00:50:50.596 --> 00:50:52.414 - also like a most people don't 00:50:52.414 --> 00:50:56.592 - have. Let me just automatically drop it off like I do, so like 00:50:56.592 --> 00:51:00.123 - that after that point all that information it gets defined and 00:51:00.123 --> 00:51:03.975 - used in with service tax service tech will load it up. However, 00:51:03.975 --> 00:51:08.148 - if you don't give it a handler service stack will go up. I 00:51:08.148 --> 00:51:12.321 - recognize your end point, but I don't know what to do with it. 00:51:12.321 --> 00:51:14.568 - So to recognize what to do with 00:51:14.568 --> 00:51:19.546 - it. We need to go down into the handlers for it, and I'm 00:51:19.546 --> 00:51:20.838 - going to bring up. 00:51:21.910 --> 00:51:25.430 - Handler, which I believe this one is actually go writing, yet 00:51:25.430 --> 00:51:28.630 - so already subscribe a simple. OK, so this particular endpoint 00:51:28.630 --> 00:51:31.830 - has an original implementation an I have actually over Rednet 00:51:31.830 --> 00:51:35.670 - because I have to handle those extra properties of the store in 00:51:35.670 --> 00:51:39.510 - the brands on it in the pricing factory context needs to be 00:51:39.510 --> 00:51:42.710 - aware of quantity that I've specified. So what the base 00:51:42.710 --> 00:51:46.550 - implementation would do if you were if you were just kind of 00:51:46.550 --> 00:51:48.150 - ignore the override for the 00:51:48.150 --> 00:51:53.723 - moment. Is it basically says it's an async and it's an async 00:51:53.723 --> 00:51:58.962 - endpoint? It responds to the git verb it takes into class as the. 00:51:59.550 --> 00:52:03.112 - As the property type of the the parameter and then you just you 00:52:03.112 --> 00:52:06.400 - just say request. It does need to save the word request if 00:52:06.400 --> 00:52:08.866 - you're actually not need to actually take information from 00:52:08.866 --> 00:52:11.880 - it, you could do an underscore to basically just eat the 00:52:11.880 --> 00:52:15.168 - variable, but you do need to physically have it as part of 00:52:15.168 --> 00:52:18.456 - the thing in order to make handlers and then have the stuff 00:52:18.456 --> 00:52:21.470 - in there so there's get there supposed to delete. You could 00:52:21.470 --> 00:52:24.484 - have custom verbs. There's also add what's called the any and 00:52:24.484 --> 00:52:27.498 - the ending basically says it doesn't matter what the verb is. 00:52:27.498 --> 00:52:29.142 - I'm going to handle that version 00:52:29.142 --> 00:52:32.770 - of the request. But we don't like to use that because it can, 00:52:32.770 --> 00:52:36.094 - uh, it could cost confusing for certain people and and and for 00:52:36.094 --> 00:52:39.418 - the system itself. Uhm, so we don't want to do anything with 00:52:39.418 --> 00:52:40.803 - that too severe right now. 00:52:41.680 --> 00:52:46.356 - And by default, what it would do is if we just go public get 00:52:46.356 --> 00:52:50.030 - workflow for products, um, passing in the ID number and had 00:52:50.030 --> 00:52:53.370 - no context profile name because it's in production, it would 00:52:53.370 --> 00:52:57.044 - just be the null checks profile name is only relevant inside 00:52:57.044 --> 00:53:01.386 - unit tests and then it awaits it and then replies once the weight 00:53:01.386 --> 00:53:05.728 - is completed on that. This is a case where you don't want to 00:53:05.728 --> 00:53:09.402 - ever elide the result with async alighting, because the what will 00:53:09.402 --> 00:53:11.406 - end up happening is the full 00:53:11.406 --> 00:53:15.094 - task. Well, uh, get sent over the wire in a right that is 00:53:15.094 --> 00:53:18.141 - wrapped around the result and that will mess up your ability 00:53:18.141 --> 00:53:21.742 - to consume it correctly on the other end. So we don't want to 00:53:21.742 --> 00:53:25.066 - do that there. We wanna make sure that we wait inside the 00:53:25.066 --> 00:53:28.113 - function here and then replied the result of the final awaited 00:53:28.113 --> 00:53:29.775 - value that comes out of the 00:53:29.775 --> 00:53:33.389 - async call. Now in this case, because it is overwritten, what 00:53:33.389 --> 00:53:36.370 - we do here is I've got an override function here. I've 00:53:36.370 --> 00:53:39.080 - taken in the same information and then I'm basically just 00:53:39.080 --> 00:53:41.790 - adding all this extra info and then I'm technically I'm 00:53:41.790 --> 00:53:43.958 - actually calling a different workflow endpoint that includes 00:53:43.958 --> 00:53:46.668 - the pricing factory context that now had this extra information 00:53:46.668 --> 00:53:49.649 - on it in order to get this different function call quote 00:53:49.649 --> 00:53:52.946 - for products. And that's basically what you do there. 00:53:52.946 --> 00:53:55.926 - So this is the physical handler, which is this one 00:53:55.926 --> 00:53:59.204 - simple function. It takes in. The thing is the class you're 00:53:59.204 --> 00:54:02.184 - running on that stuff, and it does these individual things. 00:54:03.820 --> 00:54:07.492 - Now the cash 10 point that we talked about earlier. What that 00:54:07.492 --> 00:54:11.470 - does is you basically have it take the by ID cash request and 00:54:11.470 --> 00:54:14.530 - then you have this function called. That's simple in here 00:54:14.530 --> 00:54:17.896 - it's called create and return cast result, which is a handler 00:54:17.896 --> 00:54:21.262 - that says taking it given the original request go called the 00:54:21.262 --> 00:54:24.322 - normal end point for it, which would actually get the 00:54:24.322 --> 00:54:27.382 - overridden one, which is this one. And then whenever result 00:54:27.382 --> 00:54:31.360 - you get from that, make sure that you cash it in Redis. That 00:54:31.360 --> 00:54:34.726 - way as long as the cash is aligned for that one. 00:54:34.770 --> 00:54:37.590 - Uh, it will go back and always return that cast result instead, 00:54:37.590 --> 00:54:40.410 - and that's what this does is. It basically goes and makes that 00:54:40.410 --> 00:54:42.055 - call. And if you want to look 00:54:42.055 --> 00:54:45.750 - down inside that. It's basically just a task factory that goes in 00:54:45.750 --> 00:54:48.870 - and runs that request and pulls it back out and there's some 00:54:48.870 --> 00:54:51.730 - extra code in here that's a little weird and some other 00:54:51.730 --> 00:54:55.370 - stuff going on. I was trying to make sure that I did the async 00:54:55.370 --> 00:54:58.750 - part of it right in order to make sure that it was always 00:54:58.750 --> 00:55:00.830 - waiting correctly, and it's awkward because this is 00:55:00.830 --> 00:55:02.910 - technically not in async function that they provided. 00:55:02.910 --> 00:55:06.030 - They don't have an async version of this inside the API itself, 00:55:06.030 --> 00:55:09.410 - so I had to work around a few things, but this is basically 00:55:09.410 --> 00:55:12.790 - what it does and it it does work and it works pretty well. 00:55:12.890 --> 00:55:15.150 - We're doing. I've only had a few problems with it, 00:55:15.150 --> 00:55:16.958 - um, since since the full implementation in getting 00:55:16.958 --> 00:55:18.314 - this out to where it was. 00:55:19.440 --> 00:55:23.106 - So any question about the these kind of, uh, taking in the class 00:55:23.106 --> 00:55:25.926 - and having the handler running one with that end point. 00:55:26.650 --> 00:55:30.140 - So basically it's similar to like um, not similar. Obviously 00:55:30.140 --> 00:55:34.328 - it's an API, not an internal, but it's kind of like mediator 00:55:34.328 --> 00:55:38.865 - where it says OK I I'm sending some request over with this with 00:55:38.865 --> 00:55:43.053 - this method. With this class is the parameter and it says OK. 00:55:43.053 --> 00:55:47.939 - Now I'm going to go take in DC, realize it and then go find 00:55:47.939 --> 00:55:50.731 - whichever whichever method implements this class is really 00:55:50.731 --> 00:55:55.268 - well. I mean it's a high level version of what it's doing, yes? 00:55:57.050 --> 00:56:00.270 - That's exactly right. So that said, there are some other 00:56:00.270 --> 00:56:03.490 - scenarios in here that get a little more advanced with 00:56:03.490 --> 00:56:04.778 - different things, but really. 00:56:05.480 --> 00:56:08.743 - If you're having to run into one of the scenarios, I would ask 00:56:08.743 --> 00:56:12.006 - that you probably want to get with Eric or get with myself in 00:56:12.006 --> 00:56:15.269 - order to kind of run through what that scenario is to see if 00:56:15.269 --> 00:56:18.030 - there's any other things that need to be considered and how 00:56:18.030 --> 00:56:21.042 - they might need to be done. But primarily speaking, this is what 00:56:21.042 --> 00:56:24.305 - the handlers do. So what I'm going to show next is the API 00:56:24.305 --> 00:56:27.568 - itself. When you're talking to it. So this is my local here and 00:56:27.568 --> 00:56:30.329 - I've got it open with the product editor. I'm going to 00:56:30.329 --> 00:56:33.090 - duplicate this tab and go directly to where the API comes 00:56:33.090 --> 00:56:38.513 - up. So when you create the desktop modules clarity E 00:56:38.513 --> 00:56:39.507 - Commerce API. 00:56:40.980 --> 00:56:45.361 - In the IIS or the API dash store front now that there's that 00:56:45.361 --> 00:56:48.394 - second thing, um, it's supposed to pull this up. 00:56:50.660 --> 00:56:56.600 - I might have metadata turned off. Let's try API. 00:56:56.600 --> 00:56:59.795 - The old one here. Here we go. OK, so this is the This is an 00:56:59.795 --> 00:57:02.990 - older copy, uh, and I I went to it 'cause I don't want to go 00:57:02.990 --> 00:57:04.481 - hunt down at the setting it to 00:57:04.481 --> 00:57:08.332 - turn it back on. This is a standard soap API interface kind 00:57:08.332 --> 00:57:11.566 - of thing where you could deceive like some of the information 00:57:11.566 --> 00:57:14.506 - about the documentation to build information about whether or not 00:57:14.506 --> 00:57:16.564 - the endpoint requires authentication. Things like that 00:57:16.564 --> 00:57:20.680 - on here and it kind of just list out all of these properties here 00:57:20.680 --> 00:57:24.502 - so you could get a list of pretty good list of every single 00:57:24.502 --> 00:57:27.736 - endpoint that's in there, and there's many many many many many 00:57:27.736 --> 00:57:30.970 - many many of them because we have extended set of cooperation 00:57:30.970 --> 00:57:34.498 - is for every table as well as all the custom endpoints that 00:57:34.498 --> 00:57:36.262 - got added for all the different 00:57:36.262 --> 00:57:41.480 - things. Um, now that considered in that said, Um, you don't 00:57:41.480 --> 00:57:47.785 - really ever want to click on any of these because we have models 00:57:47.785 --> 00:57:53.120 - that reference themselves in kind of a loop process like a 00:57:53.120 --> 00:57:55.060 - product model references, eh? 00:57:55.870 --> 00:57:58.480 - A product model preferences a product associations which also 00:57:58.480 --> 00:58:01.380 - reference product models and it gets stuck in a serialization 00:58:01.380 --> 00:58:04.860 - loop and trying to build this documentation in this UI and it 00:58:04.860 --> 00:58:07.760 - gets broken and basically just sits there and spins forever 00:58:07.760 --> 00:58:11.240 - until you kill the kill the kill the web process. So you 00:58:11.240 --> 00:58:14.720 - can't really use it for those things. You can get a basic 00:58:14.720 --> 00:58:17.910 - idea of just like what the endpoint name was, you can't 00:58:17.910 --> 00:58:19.650 - really use it for anything else. 00:58:20.920 --> 00:58:24.064 - This does, however tell you whether or not an end point has 00:58:24.064 --> 00:58:26.422 - been registered correctly in this visible within the system. 00:58:26.422 --> 00:58:29.566 - To make it really quick and dirty, doing on that, and you 00:58:29.566 --> 00:58:33.234 - can also type in the filter here and it will narrow it down. So 00:58:33.234 --> 00:58:36.116 - if you're trying to look for specific endpoint by its class 00:58:36.116 --> 00:58:39.770 - name. Like for instance, if I want the get product by URL 00:58:39.770 --> 00:58:42.890 - Here that just happens to be on my screen. I should be 00:58:42.890 --> 00:58:44.190 - able to go to this. 00:58:45.230 --> 00:58:48.441 - And there it is right there, so we know that it got registered 00:58:48.441 --> 00:58:51.158 - and got loaded up correctly inside service tax and it knows 00:58:51.158 --> 00:58:54.122 - how to handle at least knows that the route is there, not 00:58:54.122 --> 00:58:56.839 - necessarily handler, and so can actually fire and talk to it. 00:58:58.100 --> 00:59:01.270 - Uh, so to get around that problem of that serialization 00:59:01.270 --> 00:59:04.757 - loop that happens, and the same thing does happen, it was 00:59:04.757 --> 00:59:06.659 - slager, which is why we don't 00:59:06.659 --> 00:59:12.219 - use swagger either. Is I created a T4 file? Uhm, that will 00:59:12.219 --> 00:59:15.747 - generate documentation for us in a different way. 00:59:16.340 --> 00:59:20.636 - And that information is visible within the admin. 00:59:21.280 --> 00:59:23.520 - So it's this appy reference here underneath system. 00:59:27.320 --> 00:59:30.695 - And it takes a moment to look as there's a lot of HTML it plugged 00:59:30.695 --> 00:59:33.845 - up at once on here, and I've even got this here. I need to 00:59:33.845 --> 00:59:35.870 - get I need to re run my T4 and 00:59:35.870 --> 00:59:39.560 - fix it. But as you click through this stuff, this is basically 00:59:39.560 --> 00:59:42.541 - what is similar to what swagger would do. Although you don't 00:59:42.541 --> 00:59:44.980 - have the actual like endpoint interaction, it's similar to 00:59:44.980 --> 00:59:47.961 - what the soap UI would metadata would do, where it's giving 00:59:47.961 --> 00:59:50.400 - information about the endpoint, and I haven't tried creating 00:59:50.400 --> 00:59:53.923 - like a basic example of how to talk to it with typescripts and 00:59:53.923 --> 00:59:56.904 - what it would look like, and actually this information is out 00:59:56.904 --> 01:00:00.969 - of date, so I need to update the T4 and make sure that it talks 01:00:00.969 --> 01:00:04.221 - to Berkeley and that we always used then, then cash instead of 01:00:04.221 --> 01:00:07.202 - success error. So this is something that I need to get 01:00:07.202 --> 01:00:10.760 - updated. Uh, but the idea here is every end point that that is 01:00:10.760 --> 01:00:13.940 - in the available in the system brother. It's in the store front 01:00:13.940 --> 01:00:17.385 - or the event API should all be available here, so you could see 01:00:17.385 --> 01:00:21.095 - them with fair reference here of what they can do so you get the 01:00:21.095 --> 01:00:24.540 - path that's inside there and you can actually see that as a mouse 01:00:24.540 --> 01:00:27.985 - over it in the bottom left. Here it's showing a direct link that 01:00:27.985 --> 01:00:30.105 - I can click that will pop into a 01:00:30.105 --> 01:00:34.964 - new tab. Uhm, and then it goes in. It goes OK, unable to define 01:00:34.964 --> 01:00:38.066 - request because this is giving the default of that. Let's say 01:00:38.066 --> 01:00:40.040 - if I do this with one instead. 01:00:41.900 --> 01:00:43.150 - That's weird. 01:00:45.410 --> 01:00:46.508 - And you tab. 01:00:47.520 --> 01:00:48.678 - Like that indirectly. 01:00:51.280 --> 01:00:54.630 - Nope, that's not working from the browser, but it will 01:00:54.630 --> 01:00:55.970 - probably work composed man. 01:00:56.750 --> 01:00:57.490 - Um? 01:00:58.810 --> 01:01:01.882 - Well, I'll check it out later, but Uh, Yeah, that's the idea 01:01:01.882 --> 01:01:05.210 - is. You're supposed to be able to do that. You can do some 01:01:05.210 --> 01:01:08.538 - basic calls like that in order to figure out what some of these 01:01:08.538 --> 01:01:11.610 - things are and how they work. You could build there should be 01:01:11.610 --> 01:01:14.170 - enough information here in order to replicate what's going on 01:01:14.170 --> 01:01:16.986 - with service with service tag using post man and it has 01:01:16.986 --> 01:01:19.802 - information like get what it returns the path it's on it. 01:01:19.802 --> 01:01:22.618 - This is the summary tag that's on the class. Here's the 01:01:22.618 --> 01:01:25.434 - properties that are added out there listed in a table format 01:01:25.434 --> 01:01:27.994 - and those that API metadata description for the data type 01:01:27.994 --> 01:01:29.274 - parameter type where there was 01:01:29.274 --> 01:01:31.562 - required description. All that information gets printed out to 01:01:31.562 --> 01:01:34.760 - this so that someone who's not aware of how to consume it. It 01:01:34.760 --> 01:01:37.958 - doesn't have access to the back end code, would be able to look 01:01:37.958 --> 01:01:42.140 - at this and go. OK. This is kind of what I need to do in order to 01:01:42.140 --> 01:01:45.092 - make this work. If I come in here and say get count. 01:01:45.630 --> 01:01:50.668 - Uh, image by ID. I'll get an account image model back. 01:01:51.380 --> 01:01:55.033 - And you can see that the the account image models will I get 01:01:55.033 --> 01:01:58.967 - back instead? And if I click on that it takes me down here and 01:01:58.967 --> 01:02:02.901 - then I have another bug in this thing that I need to fix. The 01:02:02.901 --> 01:02:05.992 - documentation is not going to whole lotta love here, and it's 01:02:05.992 --> 01:02:09.364 - something that I definitely want to fix at some point. But these 01:02:09.364 --> 01:02:12.174 - notable models are every model that's been found inside this 01:02:12.174 --> 01:02:15.265 - page and it creates a model block here that basically just 01:02:15.265 --> 01:02:18.918 - describes the model on it and put it in. If I can forcibly. 01:02:19.740 --> 01:02:21.640 - Expand it. 01:02:25.970 --> 01:02:27.950 - If it would be there, let's say it would be. 01:02:27.950 --> 01:02:29.138 - So let's see if I can. 01:02:33.710 --> 01:02:36.480 - Shoot, uh? Turn off. 01:02:39.360 --> 01:02:42.780 - Maybe you can add show yeah? 01:02:42.780 --> 01:02:45.614 - Try show 01:02:45.614 --> 01:02:49.020 - show sometimes. No. 01:02:49.750 --> 01:02:53.122 - It's being weird. OK, I would need to like really figure out 01:02:53.122 --> 01:02:57.337 - what this is, but the idea is it prints out in a quick like HTML 01:02:57.337 --> 01:03:00.990 - table of what other properties of the of that model are all the 01:03:00.990 --> 01:03:04.081 - information that's on those API metadata tags on them so that 01:03:04.081 --> 01:03:07.172 - you could go in and consume that information and view it. 01:03:08.600 --> 01:03:13.460 - Um? So that's that documentation. There that all 01:03:13.460 --> 01:03:16.980 - that information also ends up inside these things. 01:03:17.580 --> 01:03:22.247 - Uh, if I go over here to the API, that's part of what 01:03:22.247 --> 01:03:26.196 - generates this information for this API. T4 for things like the 01:03:26.196 --> 01:03:30.145 - DTO classes. So for instance, if I go down to say. 01:03:30.170 --> 01:03:33.461 - Yeah. So like these are all the models that we would inherit, 01:03:33.461 --> 01:03:35.270 - but if I go to an end point like 01:03:35.270 --> 01:03:38.702 - accounts. Here's like create account contact TTL. This is 01:03:38.702 --> 01:03:40.760 - the. This is the DTO itself of 01:03:40.760 --> 01:03:45.034 - the class itself. Classes that it inherits and is able to 01:03:45.034 --> 01:03:48.121 - duplicate and then it generates documentation for all those 01:03:48.121 --> 01:03:51.894 - things as well. If I had a property that was like. 01:03:53.810 --> 01:04:00.514 - Number. See probably not just the ID number thing. 01:04:01.030 --> 01:04:03.868 - Uh, looks like nothing here, but that's probably over in the 01:04:03.868 --> 01:04:06.706 - other side. Other side. Uhm, there will be properties in here 01:04:06.706 --> 01:04:09.028 - and then the documentation that gets generated all those 01:04:09.028 --> 01:04:11.350 - individual things inside the typescript here so that when 01:04:11.350 --> 01:04:13.930 - you're using your intellisense on things you can get telescopes 01:04:13.930 --> 01:04:16.768 - tooltips like this. It's a see this data search model because 01:04:16.768 --> 01:04:19.606 - it has information on it. It's a public interface available and 01:04:19.606 --> 01:04:22.960 - then the documentation is on it. You'd be able to see this over 01:04:22.960 --> 01:04:25.798 - in those other files and find out what's available on the 01:04:25.798 --> 01:04:29.152 - bottle and how you find these things that need to go with it 01:04:29.152 --> 01:04:34.788 - on there. And those kinds of stuff for consuming the 01:04:34.788 --> 01:04:37.518 - information over in your other 01:04:37.518 --> 01:04:39.309 - services. Myself detail here. 01:04:39.900 --> 01:04:43.824 - And let's see, there should be a CBI somewhere. Yeah, get store 01:04:43.824 --> 01:04:46.440 - administrator user. So here's all the information that's 01:04:46.440 --> 01:04:51.018 - available on there. We know that the verb is a get, you know the 01:04:51.018 --> 01:04:55.596 - path that it uses inside the API. We know the C type that was 01:04:55.596 --> 01:04:58.866 - generated from. That's the class that was in the sea. 01:04:58.890 --> 01:05:02.460 - We know, uh, it says it has an at returns, but it's not putting 01:05:02.460 --> 01:05:05.010 - the actual values. I want to double check that's getting 01:05:05.010 --> 01:05:07.560 - generated correctly. All look into that and what the property 01:05:07.560 --> 01:05:11.130 - is that it has inside the URL that has the path it has that 01:05:11.130 --> 01:05:14.955 - store ID on it. You have to pass a store ID, which is what we're 01:05:14.955 --> 01:05:17.505 - doing. Here is all the information generated in as part 01:05:17.505 --> 01:05:18.780 - of the service tag information 01:05:18.780 --> 01:05:22.326 - which would be. Yeah, in all the situations kind of something 01:05:22.326 --> 01:05:25.602 - that you can kind of get with Web API. If you got really 01:05:25.602 --> 01:05:28.626 - complicated with it and had to build a lot of stuff yourself 01:05:28.626 --> 01:05:31.902 - with service tech allows us to do a lot of these things. Sort 01:05:31.902 --> 01:05:34.926 - of out of box and or like more easily extensible with Artie 01:05:34.926 --> 01:05:36.186 - force that we use extensively. 01:05:37.200 --> 01:05:41.022 - Does that kind of help a lot with the what service pack is 01:05:41.022 --> 01:05:44.256 - what it's doing, where it's doing it is even have anymore 01:05:44.256 --> 01:05:46.902 - particular questions or scenarios they want me to run 01:05:46.902 --> 01:05:50.430 - through. Yeah, I think that's great. I did jot down one so 01:05:50.430 --> 01:05:53.076 - you mentioned that it increases the re usability. So 01:05:53.076 --> 01:05:55.722 - what specifically does it allow for more re usability 01:05:55.722 --> 01:05:57.486 - over like the generic Web API? 01:05:59.080 --> 01:06:02.666 - For one thing, it the class inheritance that you can get 01:06:02.666 --> 01:06:06.252 - with these classes allows you to do things like the captain 01:06:06.252 --> 01:06:10.164 - points where it's a separate input to cashing it. All has to 01:06:10.164 --> 01:06:14.076 - do is call the original end point in order to get the 01:06:14.076 --> 01:06:17.336 - request for that stuff. There's also like everybody gets to 01:06:17.336 --> 01:06:20.270 - implement like the implement ski or the implements ID 01:06:20.270 --> 01:06:23.856 - inheritance, or like the create an update product models like to 01:06:23.856 --> 01:06:27.768 - create products here it gets to inherit product model it, but so 01:06:27.768 --> 01:06:29.398 - this up certain sodas update. 01:06:29.420 --> 01:06:32.960 - I don't to go physically right in all those those values. All 01:06:32.960 --> 01:06:36.205 - those individual pieces I could just inherit the same model and 01:06:36.205 --> 01:06:38.860 - then extend them or override individual properties as needed. 01:06:40.370 --> 01:06:43.142 - I got you something like a 01:06:43.142 --> 01:06:44.620 - regular. Gotcha. 01:06:46.740 --> 01:06:48.396 - I see what you're saying, OK? 01:06:50.500 --> 01:06:53.470 - Now, there are definitely aspects of service tech that we 01:06:53.470 --> 01:06:56.737 - don't use. For instance, you can actually have multiple verbs in 01:06:56.737 --> 01:07:00.004 - a single class, and you can have individual properties on that 01:07:00.004 --> 01:07:02.677 - class that get consumed in different ways under different 01:07:02.677 --> 01:07:05.944 - verbs and things like that. However, that ends up getting a 01:07:05.944 --> 01:07:08.617 - little too complicated, especially with the way that are 01:07:08.617 --> 01:07:12.478 - tied for the typescript works I did after a long time we were 01:07:12.478 --> 01:07:16.042 - like we're not going to deal with any of that stuff because 01:07:16.042 --> 01:07:19.012 - it's not worth that extra complexity in some of those 01:07:19.012 --> 01:07:21.982 - things we could be doing that like we could have. 01:07:22.150 --> 01:07:26.278 - One class that could do all three of these things. I would 01:07:26.278 --> 01:07:30.750 - have put a post and a post or like a Patch so like. 01:07:30.770 --> 01:07:34.433 - This will probably Patch this. I probably have put into this 01:07:34.433 --> 01:07:37.763 - one's post, uhm for producing the three different things for 01:07:37.763 --> 01:07:41.093 - what they are expected or something like that, but just 01:07:41.093 --> 01:07:44.756 - physically handling that stuff is fine in the back end, but 01:07:44.756 --> 01:07:47.753 - then handling it as the typescript layer gets more 01:07:47.753 --> 01:07:51.416 - complicated in that the people who are trying to consume that 01:07:51.416 --> 01:07:54.413 - information gets out. Typescript would be more confused about 01:07:54.413 --> 01:07:58.742 - what they needed to do, so I just I stepped away from that 01:07:58.742 --> 01:08:00.407 - level of complexity on things. 01:08:01.180 --> 01:08:05.492 - Cool, uh, and then my second one that I had noted down was, uhm. 01:08:05.492 --> 01:08:08.880 - He said that file uploads were better with service deck and 01:08:08.880 --> 01:08:12.268 - then maybe that's different now. But how does service Dec handle 01:08:12.268 --> 01:08:16.272 - this file uploads? So whenever you go in and you need to do 01:08:16.272 --> 01:08:19.352 - like file upload handling or file download handling. In Web 01:08:19.352 --> 01:08:23.356 - API there's a lot of crap you gotta do just exactly right in 01:08:23.356 --> 01:08:26.744 - order to write the response correctly into a lot of other 01:08:26.744 --> 01:08:30.440 - stuff. Some of that is still in play here in service stack 01:08:30.440 --> 01:08:33.891 - however. In in working with it and doing different things, 01:08:33.891 --> 01:08:37.730 - service dec's got a lot of versatility and how we could 01:08:37.730 --> 01:08:40.871 - divide their response. For instance Web API. Normally you 01:08:40.871 --> 01:08:45.408 - would only have it be a capable of returning in one format with 01:08:45.408 --> 01:08:48.898 - service stack is capable of both consuming and replying in 01:08:48.898 --> 01:08:52.737 - various formats like XML, JSON, CSV, TSV as well as several 01:08:52.737 --> 01:08:56.227 - other formats. Could even write your own custom formats for 01:08:56.227 --> 01:08:59.717 - sterilization for stuff like that, but that's a lot harder 01:08:59.717 --> 01:09:03.870 - than. In even Webbie I were you gotta you have literally got all 01:09:03.870 --> 01:09:06.270 - those things itself, whereas service stack it provides it all 01:09:06.270 --> 01:09:09.630 - out of box. You have to mess with any of those things. So if 01:09:09.630 --> 01:09:11.550 - I were to go in and mess with 01:09:11.550 --> 01:09:14.138 - specifically. The file upload process, let's look 01:09:14.138 --> 01:09:17.654 - at the, uh, it's going to be in the media projects. Let's 01:09:17.654 --> 01:09:19.119 - let's close all these files. 01:09:21.380 --> 01:09:26.359 - Let's go find the uh media section and see if you can find 01:09:26.359 --> 01:09:27.891 - the file upload service. 01:09:30.020 --> 01:09:33.250 - OK. 01:09:34.940 --> 01:09:39.440 - So there's this piece, and then let's look at the file upload 01:09:39.440 --> 01:09:42.815 - control that happens in the storefront, 'cause That's down 01:09:42.815 --> 01:09:43.940 - in here somewheres. 01:09:44.590 --> 01:09:49.205 - So we got a widget here that let's you load up load. So 01:09:49.205 --> 01:09:53.110 - here's a file upload widget. When you create the file upload 01:09:53.110 --> 01:09:58.080 - in the why. This is usually with a candle box that like a candle 01:09:58.080 --> 01:10:02.340 - uploader file. What it does is it basically talks To this end 01:10:02.340 --> 01:10:06.553 - point. That media store files upload with Jason and I 01:10:06.553 --> 01:10:10.723 - automatically upload the file as soon as you select it. 01:10:10.730 --> 01:10:14.522 - And sends it to the server and then the server physically takes 01:10:14.522 --> 01:10:17.998 - information from this endpoint, parses it out, it puts the file 01:10:17.998 --> 01:10:20.842 - into the appropriate location based upon your settings. When 01:10:20.842 --> 01:10:24.318 - the app settings file up where files are supposed to get 01:10:24.318 --> 01:10:27.794 - stored, and then after that and you would like savior record 01:10:27.794 --> 01:10:30.954 - like savior product record, we would pass information that says 01:10:30.954 --> 01:10:34.114 - this was the filename we eventually got and things like 01:10:34.114 --> 01:10:37.274 - that. So this endpoint talking to media store files upload, 01:10:37.274 --> 01:10:41.066 - let's go find that end point inside the back end which is. 01:10:41.080 --> 01:10:42.488 - This guy right here. 01:10:43.310 --> 01:10:46.610 - So the post request it takes the information in. It inherits 01:10:46.610 --> 01:10:50.510 - information and it knows that as part of the request then on our 01:10:50.510 --> 01:10:54.410 - property on this right here like it's not any of these, none of 01:10:54.410 --> 01:10:57.710 - these properties are like the body of the file that's just 01:10:57.710 --> 01:11:00.110 - happening inside the HTTP request properties that service 01:11:00.110 --> 01:11:03.110 - that just basically inherits from original Web API. And then 01:11:03.110 --> 01:11:07.010 - you work with it. So if I look at the handler for it. 01:11:07.860 --> 01:11:11.880 - I had to handle that says uhm, you know, gogeta files provider. 01:11:11.880 --> 01:11:14.225 - We need that first for us, Um? 01:11:15.000 --> 01:11:18.528 - Uh, we take the they request dotfiles, which is the HTTP like 01:11:18.528 --> 01:11:21.762 - files list. We take out the entity file type which basically 01:11:21.762 --> 01:11:25.290 - said this is supposed to be a product stored file or it 01:11:25.290 --> 01:11:28.818 - supposed to be a sales order. Stored files which folder to be 01:11:28.818 --> 01:11:31.924 - putting it in. No context, and then the request includes the 01:11:31.924 --> 01:11:34.927 - extra information that we were looking for. So like when should 01:11:34.927 --> 01:11:37.930 - the file expire which we don't actually use async? We don't 01:11:37.930 --> 01:11:41.206 - use, but the intent behind that is that for extremely large file 01:11:41.206 --> 01:11:44.755 - it looks like you're trying to upload a file that's a gig or 01:11:44.755 --> 01:11:47.758 - larger or something like that. We want to implement chunking so 01:11:47.758 --> 01:11:50.761 - that we can provide progress back to the expected the UI. 01:11:50.761 --> 01:11:53.491 - However, that is never been fully implemented, so we just 01:11:53.491 --> 01:11:56.494 - kind of sits there and everything and then if you had, 01:11:56.494 --> 01:11:59.224 - especially if you have a specialized upload ID, you could 01:11:59.224 --> 01:12:00.589 - pass it over the wire. 01:12:00.690 --> 01:12:03.800 - However, by default, what it does is it just basically01:12:03.800 --> 01:12:07.532 - creating a quid for that file to upload it. That way multiple 01:12:07.532 --> 01:12:10.331 - files to be uploaded from different places at different 01:12:10.331 --> 01:12:13.441 - times, even with the same filename, but they'll get a 01:12:13.441 --> 01:12:14.996 - different upload quid every time 01:12:14.996 --> 01:12:17.620 - regardless. Probably the the wires can't can't get cross 01:12:17.620 --> 01:12:18.760 - disease on that stuff. 01:12:19.600 --> 01:12:23.786 - So we take that those request files and this does have. It is 01:12:23.786 --> 01:12:27.972 - an IHTP file, so it does have the actual file contents in the 01:12:27.972 --> 01:12:31.514 - binary stream inside this for access and then in the files 01:12:31.514 --> 01:12:35.056 - provider we handle where it where and were supposed to do 01:12:35.056 --> 01:12:38.920 - with it. So for instance with a double USS 3 files provider, 01:12:38.920 --> 01:12:42.784 - what we do is we basically kind of forward slash redirects of 01:12:42.784 --> 01:12:46.648 - file into a WSS three rather than writing it to the local 01:12:46.648 --> 01:12:48.580 - files and dealing with it there. 01:12:48.580 --> 01:12:51.682 - But but primarily. Everyone uses the local providers. Let's let's 01:12:51.682 --> 01:12:56.932 - focus on that. With that we get is we pass in four. We have a 01:12:56.932 --> 01:13:01.508 - for each other on the file list on. On each file we go in and we 01:13:01.508 --> 01:13:04.940 - save. Save the file and it basically goes in and does the 01:13:04.940 --> 01:13:07.514 - standard like parsing of like reading the stream buffer, 01:13:07.514 --> 01:13:10.946 - pulling the pile content out and then writing it to a physical 01:13:10.946 --> 01:13:14.950 - file using it to create new and. But before it does that. One of 01:13:14.950 --> 01:13:18.382 - the things that it does it double checks to see if there's 01:13:18.382 --> 01:13:22.672 - a file with the same name in the same place, and if it does it 01:13:22.672 --> 01:13:23.816 - automatically it creates a. 01:13:23.890 --> 01:13:27.094 - Just like in windows, when you make multiple files in the same 01:13:27.094 --> 01:13:30.832 - place. So if you had file dot CSV and that was the file you 01:13:30.832 --> 01:13:33.769 - were you were dealing with and you were trying to upload 01:13:33.769 --> 01:13:36.439 - another one. That said the same name, it would automatically 01:13:36.439 --> 01:13:39.910 - increment and create a two and if it found the two was there 01:13:39.910 --> 01:13:43.381 - then it would just create a three and so on and so forth. 01:13:43.381 --> 01:13:46.852 - And we keep doing that until it could find a filename that was 01:13:46.852 --> 01:13:48.988 - now available. That way different people get upload 01:13:48.988 --> 01:13:52.192 - files again. It's to make sure that that stuff stays unique and 01:13:52.192 --> 01:13:54.595 - prevents overwriting and then whatever this filename, but it 01:13:54.595 --> 01:13:58.024 - gets. Ends up with is part of the response. The upload file 01:13:58.024 --> 01:13:59.444 - service, when it goes and 01:13:59.444 --> 01:14:03.433 - replies. So on the upload response that replied which is 01:14:03.433 --> 01:14:07.237 - when I upload response and it's allowed to be an interface. In 01:14:07.237 --> 01:14:10.724 - this specific case 'cause we don't see realize it back. We're 01:14:10.724 --> 01:14:14.528 - telling all the way back to the interface here that when it 01:14:14.528 --> 01:14:18.649 - reacts to a file as having been uploaded, it will read that file 01:14:18.649 --> 01:14:22.136 - name back out. So there's the response, a response files and 01:14:22.136 --> 01:14:26.574 - it on each of those files it goes in and reads the file name 01:14:26.574 --> 01:14:28.159 - that it got from it. 01:14:28.820 --> 01:14:31.988 - So that information kind of flows all the way back in and 01:14:31.988 --> 01:14:35.156 - I'll be back out. So even though you started with a file 01:14:35.156 --> 01:14:38.588 - that just said file dot CSV, if you end up with file space, 01:14:38.588 --> 01:14:40.700 - parentheses, three close parentheses dot CSV, it all 01:14:40.700 --> 01:14:43.604 - still works correctly, and it knows what to put onto your 01:14:43.604 --> 01:14:45.980 - master record in order to save that information correctly. 01:14:45.980 --> 01:14:46.508 - That's where. 01:14:47.960 --> 01:14:51.920 - And you'll notice here that the, uh, the upload process here kind 01:14:51.920 --> 01:14:56.870 - of took care of a lot of stuff for us. I don't want that. I 01:14:56.870 --> 01:15:01.490 - want this. I want this guy here, so let's get rid of these three 01:15:01.490 --> 01:15:05.494 - here. And you'll notice here that like we had this stuff here 01:15:05.494 --> 01:15:08.902 - to prevent the the file save route from getting messed up in 01:15:08.902 --> 01:15:11.174 - the wrong place. If there's filing assistance, automatically 01:15:11.174 --> 01:15:13.730 - appending the counter, it's going. It's doing the file 01:15:13.730 --> 01:15:17.138 - buffer stream over here in the back part. It doesn't. For each 01:15:17.138 --> 01:15:20.830 - file it does it with an async call with the input stream it's 01:15:20.830 --> 01:15:23.670 - writing it out to the file buffer. Everything is happening 01:15:23.670 --> 01:15:27.078 - there and all that works really well as far as uploading it 01:15:27.078 --> 01:15:31.054 - there. But in Web API you have to write a lot more of that 01:15:31.054 --> 01:15:34.462 - stuff into the Web API endpoint itself in order to have access 01:15:34.462 --> 01:15:35.598 - to the information correctly. 01:15:35.600 --> 01:15:38.490 - But service tag has allowed us to some somewhat smooth 01:15:38.490 --> 01:15:41.669 - over how some of those things work. As far as this 01:15:41.669 --> 01:15:43.981 - processes and not having to have specific weird 01:15:43.981 --> 01:15:46.871 - attributes on the endpoint handler in order to know that 01:15:46.871 --> 01:15:50.339 - it's supposed to be in coming with a file or anything like 01:15:50.339 --> 01:15:53.229 - that, service sector says, oh, there's a file here, I 01:15:53.229 --> 01:15:56.697 - can use it. I don't care where you are, you use the 01:15:56.697 --> 01:15:59.587 - file as long as they're in your inside of requests. 01:16:00.650 --> 01:16:04.848 - Does that help? It does, thank you. 01:16:07.320 --> 01:16:11.940 - Anybody else having questions all have a question that I would 01:16:11.940 --> 01:16:16.980 - need it. I realized that I was talking and nobody was reacting 01:16:16.980 --> 01:16:18.240 - about the, uh. 01:16:18.250 --> 01:16:22.320 - Type of bad data that's being returned or consumed by their 01:16:22.320 --> 01:16:27.500 - favorite bag. I thought that it can do Jason, XML and so on and 01:16:27.500 --> 01:16:32.680 - so on. and I saw in your example at the beginning that would be 01:16:32.680 --> 01:16:37.860 - just I return of product model. How do you know if it's going to 01:16:37.860 --> 01:16:40.450 - return? Return Jayden or external or whatever? 01:16:41.350 --> 01:16:44.848 - That is part of. That's the content type header that's that 01:16:44.848 --> 01:16:46.120 - comes in with requests. 01:16:46.890 --> 01:16:51.544 - Says what it? What it, what it accepts and what it will give 01:16:51.544 --> 01:16:55.840 - service that get on the on the service layer here with the 01:16:55.840 --> 01:16:59.420 - classes and everything. Every type is available at all times. 01:16:59.440 --> 01:17:03.015 - You're actually hitting the API that you specify what what type 01:17:03.015 --> 01:17:05.615 - you want in there. So if I open 01:17:05.615 --> 01:17:09.490 - post man here. Which I haven't opened it a little while, so 01:17:09.490 --> 01:17:10.690 - it might have an update. 01:17:12.640 --> 01:17:17.689 - It's OK, I bet Siri hasn't updated Visual Studio code yet. 01:17:18.340 --> 01:17:22.300 - OK, so here with the headers you have the content type header 01:17:22.300 --> 01:17:25.600 - that. So here's the application JSON. You specify the buying 01:17:25.600 --> 01:17:29.230 - type of what you're physically going to send in what you're 01:17:29.230 --> 01:17:32.530 - going to receive on these requests, and that will specify 01:17:32.530 --> 01:17:36.490 - what gets the ring in virtually every case. Here, we're going to 01:17:36.490 --> 01:17:40.120 - be using JSON. However there are more legacy systems and things 01:17:40.120 --> 01:17:43.420 - like that, like our clients might have in order to 01:17:43.420 --> 01:17:47.050 - communicate with Ceph, they might need to use XML or some 01:17:47.050 --> 01:17:48.370 - other system or formatting. 01:17:48.450 --> 01:17:52.122 - Which service that would then allow them to do on that? A 01:17:52.122 --> 01:17:56.100 - second way that you could do is you may have noticed back inside 01:17:56.100 --> 01:18:00.078 - this upload, which here there's a dot chase on that on this get 01:18:00.078 --> 01:18:04.056 - call actually are overrides that and let it do that and it knows 01:18:04.056 --> 01:18:08.034 - it needs to be a dot. Jason versus XML and you can use 01:18:08.034 --> 01:18:09.870 - processes like that in order to 01:18:09.870 --> 01:18:12.390 - make that. Visible impossible there as well, so that's kind 01:18:12.390 --> 01:18:15.380 - of a sad little thing that you can do there and the service 01:18:15.380 --> 01:18:17.450 - tech itself has the documentation on how to do 01:18:17.450 --> 01:18:19.290 - that. However, that's an advanced scenario that you 01:18:19.290 --> 01:18:21.820 - would actually need to change that or deal with that because 01:18:21.820 --> 01:18:24.350 - in most cases it should just be seen within just work. 01:18:25.510 --> 01:18:28.623 - In post man, can you show us an example of changing 01:18:28.623 --> 01:18:32.019 - the accept header to XML so we can see that come back? 01:18:33.290 --> 01:18:35.990 - Uh, let me see. 01:18:37.420 --> 01:18:39.748 - Let's see I got. 01:18:41.680 --> 01:18:44.950 - Let's see if I can get it to do it. 01:18:45.960 --> 01:18:50.679 - Oh, it's not doing that because this is the other one I want. 01:18:52.090 --> 01:18:56.180 - Yeah. 01:18:59.750 --> 01:19:04.482 - OK so I got an invalid request here, that's fine, so this is 01:19:04.482 --> 01:19:09.942 - with Jason. Now if I change the header here to be I think is it 01:19:09.942 --> 01:19:13.582 - activate application XML, you want the content type to be. 01:19:14.290 --> 01:19:19.425 - Jason and then the accept tag to be XML 'cause except is what 01:19:19.425 --> 01:19:20.610 - you're expecting back. 01:19:22.670 --> 01:19:27.488 - The edges of the moment so I can just get that. 01:19:30.260 --> 01:19:35.430 - Yeah, so now we have XML coming back instead of JSON. 01:19:40.920 --> 01:19:44.131 - And then, similarly, I believe what I can do is I don't have 01:19:44.131 --> 01:19:47.589 - that tag on there. I can do dot XML that should do the same 01:19:47.589 --> 01:19:49.050 - thing. Yeah. 01:19:50.120 --> 01:19:54.545 - Yeah, shut up. So I do this. I take that off by default. We get 01:19:54.545 --> 01:19:58.675 - Jason back but with a dot XML at the end I automatically get XML 01:19:58.675 --> 01:20:02.510 - from it or I can use this accept header and get XML back. 01:20:03.160 --> 01:20:07.204 - But I did it appear in less. You're actually getting an error 01:20:07.204 --> 01:20:10.574 - because it's trying to like something is expecting XML, but 01:20:10.574 --> 01:20:14.281 - nothing is telling it to get XML. You shouldn't need to 01:20:14.281 --> 01:20:15.629 - actually mess with this. 01:20:18.420 --> 01:20:19.876 - It's cool that I can do it out 01:20:19.876 --> 01:20:21.580 - of box though. Yeah. 01:20:22.670 --> 01:20:25.478 - Do you know it? 01:20:25.730 --> 01:20:28.946 - Go ahead. I was wondering if 01:20:28.946 --> 01:20:35.310 - you. No, when will be able to or if we be able to in the future, 01:20:35.310 --> 01:20:38.910 - use the newer versions of service stack to take advantage 01:20:38.910 --> 01:20:42.870 - of the new functionality's they have out now. Not until we 01:20:42.870 --> 01:20:44.310 - switch to two.net core. 01:20:48.490 --> 01:20:52.600 - Um, there's really in looking at the documentation of things. 01:20:52.600 --> 01:20:57.532 - There's really nothing that we need to consume with it until we 01:20:57.532 --> 01:20:59.176 - deal with that network. 01:21:00.390 --> 01:21:03.890 - Uh, it's not worth the time in the effort that it would take to 01:21:03.890 --> 01:21:06.390 - do the major overhaul for the upgrade, because the difference 01:21:06.390 --> 01:21:07.890 - between 4 version four and five 01:21:07.890 --> 01:21:13.602 - is significant. I was hoping 01:21:13.602 --> 01:21:16.410 - to find. 01:21:17.980 --> 01:21:21.560 - Burning, what specific features are you talking about? Are you 01:21:21.560 --> 01:21:25.856 - talking about like like with its DI for agentic? Or you still 01:21:25.856 --> 01:21:27.646 - talking? Just enjoy other things 01:21:27.646 --> 01:21:32.503 - in general? There's there's a lot of new functionality that is 01:21:32.503 --> 01:21:38.061 - out of the box with service Dec 5. Like you can accept any sort 01:21:38.061 --> 01:21:43.222 - of authentication like open off 2.0 or all of those out of the 01:21:43.222 --> 01:21:47.986 - box, and there's a lot of really nice new features or building 01:21:47.986 --> 01:21:52.679 - out APIs. Cool, uh James, are you still looking for something 01:21:52.679 --> 01:21:57.494 - or you get to go? Not this is al breaking up. This is the general 01:21:57.494 --> 01:22:01.346 - format that they could bring up is this God? JSON? XML, GSP, 01:22:01.346 --> 01:22:05.198 - CSV, HTML that he can drop and basically the different ways to 01:22:05.198 --> 01:22:06.803 - to bring up this formats. 01:22:06.850 --> 01:22:10.333 - You can specify a different content types. By default, 01:22:10.333 --> 01:22:14.977 - should be Jason because that is the Wiley the smallest format is 01:22:14.977 --> 01:22:19.621 - much smaller than XML as far as data bits over the wire. 01:22:19.630 --> 01:22:22.213 - Then you can also do like specifying particular formats 01:22:22.213 --> 01:22:26.518 - for an end point or or a class that has a bunch of end points 01:22:26.518 --> 01:22:29.675 - in it. All the end points required to follow that those 01:22:29.675 --> 01:22:32.832 - kinds of stuff, and then it's also got like soap interaction 01:22:32.832 --> 01:22:36.276 - and it's got message packets of other stuff that you can do. 01:22:36.276 --> 01:22:38.859 - However, we don't have anything that actually implements those 01:22:38.859 --> 01:22:40.581 - things 'cause we don't. We don't 01:22:40.581 --> 01:22:43.002 - currently need them. Other than what is being automatically 01:22:43.002 --> 01:22:46.600 - provided out of the box in it, but calling it came up and said 01:22:46.600 --> 01:22:49.684 - I'm trying to use message pack in this one particular way. We 01:22:49.684 --> 01:22:52.768 - would then go sit down with them and figure out what exactly 01:22:52.768 --> 01:22:55.852 - needs to happen in order to make updates, but until we actually 01:22:55.852 --> 01:22:59.193 - have someone who needs to that there hasn't been any need to go 01:22:59.193 --> 01:23:01.249 - in and make any additional customizations with our 01:23:01.249 --> 01:23:03.305 - endpoints are being handled. Design anybody else everything. 01:23:04.100 --> 01:23:08.338 - Cool, uh? Well then I don't. I think we're done early here so 01:23:08.338 --> 01:23:12.576 - if everyone would would take the time um, before they kind of log 01:23:12.576 --> 01:23:16.814 - off or before they get to the next thing. Since we have 20 01:23:16.814 --> 01:23:21.052 - minutes here and go, you know vote for your next vote for the 01:23:21.052 --> 01:23:25.616 - next topics or whatever on the Google Doc or put in a new topic 01:23:25.616 --> 01:23:29.528 - or whatever. Or if anyone has anything that they want to go 01:23:29.528 --> 01:23:33.766 - over or show right now. If not, then I think we can adjourn 01:23:33.766 --> 01:23:36.410 - here. And Greened out I guess. 01:23:37.840 --> 01:23:43.673 - What's that? Even green or made green, or it wasn't even 01:23:43.673 --> 01:23:47.600 - on. I don't know if it was even on there OK? 01:23:48.720 --> 01:23:50.970 - Just wondering on it now. 01:23:51.780 --> 01:23:54.948 - Cool and then actually Kelsey's gonna send just a quick little 01:23:54.948 --> 01:23:58.116 - same survey that you got before and hopefully you can uhm. 01:23:58.810 --> 01:24:01.346 - Real quick, just add some additional information that 01:24:01.346 --> 01:24:05.150 - you got from this training on what service Dec does and how 01:24:05.150 --> 01:24:08.954 - it works. So that would be awesome if we had one extra 01:24:08.954 --> 01:24:12.758 - thing I probably could cover a little bit here. Love is it. 01:24:12.758 --> 01:24:13.709 - Jason service client. 01:24:14.790 --> 01:24:19.578 - That service that provides UM, which we use a lot in connect. 01:24:20.200 --> 01:24:21.520 - What do I even had? 01:24:22.220 --> 01:24:24.452 - Good enough to show that really 01:24:24.452 --> 01:24:28.190 - sweet. Right this second? 01:24:28.190 --> 01:24:30.410 - What are you going to do? 01:24:31.400 --> 01:24:34.210 - Uhm, OK, here we go. 01:24:34.820 --> 01:24:39.150 - OK. OK. I'm sick. 01:24:42.720 --> 01:24:46.884 - I'm going to do a quick run and show the Jason Service 01:24:46.884 --> 01:24:50.354 - Client which basically having C sharp talks to see rather 01:24:50.354 --> 01:24:54.518 - than the Duke. As we all know how the typescript talks to 01:24:54.518 --> 01:24:59.723 - the API. We do that all the time. A lot of you may not be 01:24:59.723 --> 01:25:02.499 - familiar with how the JSON service client continues. 01:25:03.810 --> 01:25:08.122 - So if you want to show that real quick since we have a few 01:25:08.122 --> 01:25:09.662 - minutes, this is the older 01:25:09.662 --> 01:25:13.754 - connect version 3. That's fine as long as I'm showing the 01:25:13.754 --> 01:25:19.698 - client. Yeah, I just wanted to make sure everyone knew. 01:25:22.060 --> 01:25:27.920 - Oh, of course it did. A common object instead of 01:25:27.920 --> 01:25:29.678 - an actual one. 01:25:30.970 --> 01:25:33.777 - On what I really ******* I think 01:25:33.777 --> 01:25:40.109 - is this. Yes, you OK. So we have this class over and then 01:25:40.109 --> 01:25:44.599 - connect project called pretty car service. What it does is 01:25:44.599 --> 01:25:49.089 - basically just wraps around a JSON service client with the 01:25:49.089 --> 01:25:51.783 - authentication for connect already built in. 01:25:51.810 --> 01:25:56.206 - And what it does is it started in with the you always send it 01:25:56.206 --> 01:25:59.816 - with the author. Where to handle the callbacks? Emulate some HB? 01:25:59.816 --> 01:26:03.468 - What's the username, password to basic stuff like that? And we 01:26:03.468 --> 01:26:07.452 - add some the API key in and actually this is more relevant. 01:26:07.452 --> 01:26:11.768 - I should go away and then it just Lee calls with the client 01:26:11.768 --> 01:26:15.088 - the post request to authenticate with that username and password 01:26:15.088 --> 01:26:19.404 - so that you can start a session with inside there and then go 01:26:19.404 --> 01:26:23.056 - make another stuff. One of the nice things about Jason service 01:26:23.056 --> 01:26:27.824 - client is. How in regular C sharp, if you were to go in and 01:26:27.824 --> 01:26:32.542 - write a something that would go talk to an end point like a soap 01:26:32.542 --> 01:26:36.923 - or whatever and you have to do it all manually. There's a whole 01:26:36.923 --> 01:26:40.967 - lot of Boilerplate Code you have to write in order to physically 01:26:40.967 --> 01:26:44.674 - talk to it. It's dozens and dozens of lines for both, 01:26:44.674 --> 01:26:46.696 - sending information, receiving information, serialising it, 01:26:46.696 --> 01:26:49.729 - deserializing all that stuff. Whereas this thing actually is 01:26:49.729 --> 01:26:53.436 - aware of our endpoint classes and can do them all dynamically 01:26:53.436 --> 01:26:57.122 - it directly. And make it super awesome and fast, which is 01:26:57.122 --> 01:27:01.386 - really nice. So if I were to go look for something like um. 01:27:01.960 --> 01:27:04.888 - Uh, let's see. 01:27:04.890 --> 01:27:07.516 - Look in the GP ones, 'cause I think those will have one in 01:27:07.516 --> 01:27:08.930 - here even if they float up with 01:27:08.930 --> 01:27:13.854 - a bunch of errors. I just need to show code here, not showing 01:27:13.854 --> 01:27:15.012 - actually working um. 01:27:15.820 --> 01:27:21.428 - Uh, let's see there is the job post. 01:27:22.250 --> 01:27:25.298 - Now that slash Douglas. 01:27:25.300 --> 01:27:31.128 - OK. Where is that thing? 01:27:32.030 --> 01:27:34.270 - Looks like out there. 01:27:34.770 --> 01:27:37.510 - Here, let's do this then. 01:27:37.510 --> 01:27:37.810 - Boy 01:27:39.350 --> 01:27:41.737 - Wish I had better prepared this part. 01:27:44.100 --> 01:27:48.200 - Get instance. 01:27:49.500 --> 01:27:53.370 - This. 01:27:55.120 --> 01:27:58.040 - For it Here. 01:27:58.560 --> 01:28:01.920 - OK, so here's here's an instance where on this controller this is 01:28:01.920 --> 01:28:05.560 - in the X Project. In one of these older ones here where we 01:28:05.560 --> 01:28:08.920 - go in and we create this JSON service client that is actually, 01:28:08.920 --> 01:28:12.000 - we call it clarity comma service because the rocky ground getting 01:28:12.000 --> 01:28:14.800 - such properties done were plastic in the host. The API 01:28:14.800 --> 01:28:17.880 - key, the username and password for it. And then on this 01:28:17.880 --> 01:28:21.997 - service. We're physically making a request that says send and 01:28:21.997 --> 01:28:25.660 - request method method now get store full here. If store model. 01:28:25.660 --> 01:28:29.989 - Those are both were both classes that are inside Seth and I don't 01:28:29.989 --> 01:28:33.652 - need to define anything else. I don't need to write extra 01:28:33.652 --> 01:28:36.982 - serialization stuff, it just does it for me. All that 01:28:36.982 --> 01:28:40.978 - boilerplate code basically got boiled down to one, or if I were 01:28:40.978 --> 01:28:44.974 - to wrap this around properly. You know a couple of lines of 01:28:44.974 --> 01:28:48.640 - code. To deal with. 01:28:48.640 --> 01:28:52.124 - We now have all this stuff down. In the end, it's just these 01:28:52.124 --> 01:28:55.340 - couple of lines and then I moved to one this helper function 01:28:55.340 --> 01:28:58.556 - which goes does the DPS. Does the DTO that we're using with 01:28:58.556 --> 01:29:02.040 - its route attribute you supposed or delete or a Patch? Or put or 01:29:02.040 --> 01:29:06.060 - get and if it does then go call it based on that type with the 01:29:06.060 --> 01:29:09.276 - client and just physically pass into my TL model and just deal 01:29:09.276 --> 01:29:13.028 - with it that way and then reply and there is an async version of 01:29:13.028 --> 01:29:15.976 - this as well that does the awaits and such. It actually 01:29:15.976 --> 01:29:19.192 - already should have. This is a very date copy. I didn't have 01:29:19.192 --> 01:29:21.572 - any like. I you know, common practices that should be done 01:29:21.572 --> 01:29:22.760 - like this should all have to 01:29:22.760 --> 01:29:26.500 - figure weight falls on them. Which is why I had it 3 red 01:29:26.500 --> 01:29:30.210 - area. OK, uhm so that there is an async version of this as well 01:29:30.210 --> 01:29:33.125 - that could be awaited and do that. But basically it boils. 01:29:33.125 --> 01:29:36.305 - All that Boilerplate back down to just this one couple of lines 01:29:36.305 --> 01:29:39.220 - here to really simplify the process that make it in there. 01:29:39.220 --> 01:29:42.930 - If I had to do all that manually every single time. But all those 01:29:42.930 --> 01:29:46.110 - things I'm doing a bunch of messing with a bunch of using's 01:29:46.110 --> 01:29:49.290 - I've got possibility of memory leaks. I gotta make sure I take 01:29:49.290 --> 01:29:52.470 - care of all that stuff which can get real nasty overtime and 01:29:52.470 --> 01:29:54.855 - especially spread across a large enterprise level system like 01:29:54.855 --> 01:29:56.180 - this where we gotta make. 01:29:56.270 --> 01:29:59.240 - Lots of different costs. A lot of different places, lots of 01:29:59.240 --> 01:30:00.590 - different reasons, and do lots 01:30:00.590 --> 01:30:05.720 - of things. But this simplifies a lot of that stuff out, and 01:30:05.720 --> 01:30:09.420 - having a JSON service client let's us simplify. So those 01:30:09.420 --> 01:30:13.860 - things a lot, we even use those things inside, SEF or to 01:30:13.860 --> 01:30:17.560 - recreate APIs that we talked to. Four things like the 01:30:17.560 --> 01:30:21.260 - SurveyMonkey service provider, or like talking to some of the 01:30:21.260 --> 01:30:24.590 - providers like paneer. I create these models that basically 01:30:24.590 --> 01:30:27.550 - mimic exactly what their their endpoints documentation says 01:30:27.550 --> 01:30:32.730 - that it does, and then I use a JSON service client to talk to 01:30:32.730 --> 01:30:34.950 - it so they could simplify all 01:30:34.950 --> 01:30:38.570 - that information. I do have to go in and go physically create 01:30:38.570 --> 01:30:41.918 - these models, but those models are really easy to make up and 01:30:41.918 --> 01:30:44.708 - then basically just flat out with all the information and 01:30:44.708 --> 01:30:47.219 - then I have something that's maintainable and theoretically I 01:30:47.219 --> 01:30:50.009 - could even go out in like contact that original company 01:30:50.009 --> 01:30:53.357 - and say, Hey Payoneer I made these classes that allow me to 01:30:53.357 --> 01:30:56.147 - do serialization stuff with it. Really. Well maybe you guys 01:30:56.147 --> 01:30:59.495 - could release like a new get package that would be based on 01:30:59.495 --> 01:31:02.285 - this kind of information. That way we're helping the community. 01:31:02.285 --> 01:31:05.354 - I haven't done that yet, but that's something that would be 01:31:05.354 --> 01:31:06.749 - we could consider for doing. 01:31:06.790 --> 01:31:10.750 - So they providing and Jason Schema for for those requests. 01:31:11.530 --> 01:31:14.374 - Uh, yes, uh, if you like Spain, you're specifically. 01:31:14.374 --> 01:31:16.270 - There's extensive documentation for how to 01:31:16.270 --> 01:31:18.798 - consume their API that includes what the properties 01:31:18.798 --> 01:31:21.642 - are, what their types are, showing JSON examples, XML 01:31:21.642 --> 01:31:24.486 - examples on their stuff. Basically, I just use that 01:31:24.486 --> 01:31:27.962 - to create classes that would do the same thing if you 01:31:27.962 --> 01:31:31.754 - were to interact with it in a manner that is similar to 01:31:31.754 --> 01:31:33.018 - how service stack wood. 01:31:34.240 --> 01:31:37.573 - Without it and their side of the system isn't even service 01:31:37.573 --> 01:31:41.209 - stack. But I can use this JSON client and these classes to 01:31:41.209 --> 01:31:43.633 - mimic that process to simplify the long-term maintainability 01:31:43.633 --> 01:31:45.148 - of all these different things. 01:31:46.720 --> 01:31:52.060 - So that was my extra speelde to kind of talk about that. 01:31:53.660 --> 01:31:59.672 - And this is actually relevant to connect version 4, which is the 01:31:59.672 --> 01:32:05.325 - net. Core version because when we can communicate with self 01:32:05.325 --> 01:32:10.175 - using that we are using a wrapper around clarity. E 01:32:10.175 --> 01:32:12.600 - Commerce service to do that 01:32:12.600 --> 01:32:15.490 - communication. All right, uhm, let's see. 01:32:17.650 --> 01:32:20.260 - I believe that, uh, Kelsey, posted the SurveyMonkey in the 01:32:20.260 --> 01:32:23.653 - chat. If we want to fill that out, I think we're gonna go 01:32:23.653 --> 01:32:26.002 - ahead and adjourned, so everybody have a great weekend. 01:32:26.002 --> 01:32:27.046 - And thank you, James. 01:32:27.820 --> 01:32:29.240 - Thanks. 01:32:30.300 --> 01:32:33.715 - Thank you James. Happy Birthday 01:32:33.715 --> 01:32:36.899 - Jesse. Happy Birthday Sissy. 01:32:36.900 --> 01:32:40.431 - God thanks a 01:32:40.431 --> 01:32:46.620 - birthday. No. Happy Birthday, Brandon. 01:32:46.620 --> 01:32:52.940 - See you later. Thank you, bye thank you, 01:32:52.940 --> 01:32:55.310 - James. Thank you.