So yeah, as said, my name is Christian, most of you probably know me for the non-fins that basically means a cat, just some context, but not here to talk about myself, but instead the thing I worked the last year on. So what I did was revamp the web service with a single page application. And yes, I'm in a bit of a hurry here, so I have a lot of slides. So excuse me if I tangle in my words. So this is the finished product. So yeah, I have the screen here. So basically it's a finished technology magazine, and my mic is a bit better. So yeah, it's a tech magazine, it has a lot of technology articles, it has a weekly digital magazine, this is a new thing. Before this new site it was only published twice a month, but when we did this, we opted to once a week. But enough of this, you can check it out if you want to. I don't know if anyone heard that, but you might ask why would you build this one if you've seen the previous one. But yeah, so first of all, this started as an MVP to see if headless WordPress would suit a client's purposes. And yeah, the new digital magazine was one thing, the old site is so legacy that it was hard to implement such a thing in it anymore. And it also serves as a building foundation for the whole media group. The media group has like 20 different magazines similar to this, so we can use this as a general building block. And the client wanted to adapt modern software development practices. And last but not least, the old site was pretty awful. Just one thing to note about it's subscriber page, payloads, page loads took sometimes over 30 seconds, and yeah, if you have a user page that takes 30 seconds to load, that's not good. But how would you build this? The most obvious ones, add filter, add action, should be the self-explanatory. So every time we wanted to change something, we did this. And we hooked these, a few thousand lines of code with them. So to talk about a few thousand lines of code, I basically built a neural resolver. Those who saw me in Uvascular might have remembered that. And we did some custom end points as well. Then we used Composure package and patch package because we had to use some software considered Abundantware and we had to fix some bugs in them. So those who don't know, those are nice, but JavaScript and PHP. Then Continuous integration was a key part of all this. It allowed us to ship changes fast, run tests under code, and if the test didn't fail, we could deploy the production. And this has made breaking production very hard. But still, we managed to do it just yesterday. Some of our stack listed right here. This is not even half, but yeah. So now we get to do interesting part. As I said, I have a lot of content, so I had to do this. Only Vince gets this, but that's not my problem. So I had to cut a lot of content out and I prioritized the most interesting ones so you can go and leave and see Elisa at the end of my talk if you want what I appreciate if you stay here until the end. Well, I'm going to start with church engines and social medias. And as you may know, the loading problem is the most common one in single-page applications when they're shared to Facebook for the first time. The clients paste their URL to Facebook and sees nothing but loading in the embed. So how do we avoid that? And so as you see here in the background, very dim, but it is there. That's the whole HTML response of the single-page application that we have. It's less than 80 lines and doesn't contain any meta tags at all, which is unacceptable. So we used Puppeteer to fix this. So Puppeteer is a Node.js library for Google Chrome. It allows us to simulate user interaction and run code. On addition to that, we can just render the whole application in a browser that behaves like the normal Google Chrome. So the basic idea is to run a Node server that runs Puppeteer and route to that server from nginx. It can be done for our users. Users that aren't just looked in or just for bots and we did the bots because it's easiest one to implement. The other options kind of require you to code the same way that you would render react traditionally on the server, which is a bit different. So to show you, this is just basic nginx configuration. We have a pre-render block of the configuration. I don't know if that's the correct term. I'm not an nginx expert, but I did the config. So we checked a user agent with regular expression, but these, and if it matches, we simply route them to the pre-render service, which is basically Puppeteer server. At this point, the Puppeteer server takes control and just a tiny bit of heads up. We did things a bit differently for Puppeteer. So we add headless to parameter to the URL when we render the first application first time with Puppeteer. So some tweaks happened. It's a new site. There's a lot of ads, and ads make the page slower. So we remove the ads to give you an example. Don't use that to access the site without ads, please. So yeah, so obviously there's this one problem with it, the same one that Facebook and Google and others have, that they don't know when the page is ready to be rendered like, or taken, or snapshotting, or whatever. But it's pretty easy to do once you're in control of the application. So we simply defined this function that checks the global in window called ready to render that when it equals to true, it completes a promise. So this is basically a promise. If you don't know what's promise is, sorry. I'm not going to explain. I don't have time. So we basically wait until the app says ready, and when it does, we extract HTTP status code from a myth attack that we have. We did that with React. It's a bit hacky, but it works. And if the request ends in a 404, we can have a 404 response instead of the 200 that would otherwise always come out of the Puppeteer server, and we just take the HTML and return it as is to the port that's requesting the content. And as a side note, it's a good idea to remove images from the loading process, because it doesn't make any sense to load images when the browser doesn't have a screen, and no one even looks at the images. The market doesn't change one bit with this, but it makes it much faster. So what's it's ready to render in window? So basically we have a Redux action that we call when the main component on the page has finished loading. And that action starts this saga. When the application is in headless mode, it does something like remove the scripts and sets the render to the true. If it's not in headless mode, it does nothing. So now we have the full content and meta tags, like here's the full response. It doesn't fit anymore. And there's meta tags that you can't see, but they're there, believe me. But yeah, there's this one minor problem that nothing actually works. And it doesn't work. I mean, everything is broken, like this should be there and it's there. So I'm going to let that sink in for a moment, just read it. So basically I had to import do not use or you will be haunted by spooky ghosts from style components. This is because style components does support server rendering, but it only exposes the API for it on actual server side. And our server rendering is done in a browser and then just return to a server. So we can't use that.  And yeah, then we just added it to the is headless check in set rendered. And this four lines of code in total fix all of our CSS. I don't recommend you use style components, but if you do, you can fix it like this. So just to show you, here's the pre-rended site. Let's see what kind of demo effect I get today. Nice. It works. So as you can see, there's content missing, but this is all that the bots care about the main content. So we skipped everything else to get fast page loads. Focus was just stolen. So how did we build the new side without breaking to old? As I said, we were building an MVP on top of the old theme-based site. And the old theme-based site had to work as this while we were building the new application that eventually replaced the old sites. This was surprisingly easy. I didn't expect it to be this easy.  So this is a key part of a code. So every custom short code that we had that rendered HTML to the theme-based site, that was basically useless in the React application. So we changed the short codes and rendered returned JSON instead of HTML and injected a component on top of the JSON in React. It's a bit hacky, but it works. But it's going to be hacky if you're going to do single-page applications with WordPress. So I wasn't supposed to go there. So as a way of optimization and a way to make sure that we don't actually change anything inside the theme-based application, we only loaded a code that changes everything we need inside REST API requests, which is pretty easy with this. Just include it in REST API in its action. And no, not by any other. So that one bit of code here, it's missed by the highlighting, but basically every ACF image that we had was in ID form and return. So when we requested anything from the API and it contained an ACF field of an image, it only had an ID which was basically useless to us. We didn't want to make an additional request. So we changed every image inside ACF to an array. As of what's the return type in the graphical user interface was. Then when we wanted to use the same menu for both of the applications, we needed to change something which is to use this filter inside blogging and changing the query parameters inside REST API is also pretty easy. So this is Springt Mag, but it's actually the DigiMag. So we wanted to order it by the public state instead of the chronological order in WordPress. And we wanted to remove some values from it too. So this is just an overview of how you actually change the item. I'm not going to go into detail on that either, how we change the query. So basically I'm going to show you the function in a bit, but we wanted to include six weeks of next issues of the DigiMag in the results instead of from the first published one. So we did it like that. And the removal is also just replace something in the array. There's also some broken syntax highlights. Yeah, it's basically just a meta query and we have a lot of caching in front of it. So it's fine that it's a meta query. Don't judge me. So moving on to the problem that made me want to go with my career as a developer and move on to live as a sheep farmer. So this is pretty bad if low-end devices take 30 seconds to render your application. So a few months ago, we started noting that sometimes when you clicked a link in the application, it cost a full page reload instead of seamless retouching. But we dig into it a bit further and found out that it was actually transitioning, but it was triggering a reload immediately before the transition. So we tried debugging it, but we couldn't even reproduce it like every time. It was just a bit different. So the problem got worse and worse. We didn't even look at it for months. Like it didn't occur to some users at all, like me. I didn't have the problem. So finally, our thick lead isolated the problem to Google Tag Manager by simply disabling every single script on the page and just checking what causes it. And it was Google Tag Manager. And after that, it was pretty easy to fix the problem. So in this Stack Overflow answer that you don't have to read, the main catch is that if you have triggers that have set the wait for tags and check validation checkboxes, you have to uncheck them as these are unnecessary and even harmful in single-page applications. What these basically do is they abort the page transition in traditional web pages like it aborts the request to the new page and sends the data to Google and then restarts the request again. So what did this for us? It tried to abort the request, it didn't, so the page went where it went and then it reloaded the page. And if you have a Galaxy trend, you try to browse an article, you're going to have to wait 30 seconds for each of them. So that was not very nice. We also had a similar thing with Frosmo as well and turns out that trackers don't work really well in case of single-page applications. Frosmo has fixed it now, but if you have to use trackers, consider again. So moving on to cache invalidation, the hard parts of this presentation. And I'm going to preface this with that this was a major fail. So, slide the easy ones first. For any front-end assets that you have, CSS, JavaScript, SVGs, use the file name with an MD5 hash in it like dog.md5hash.jbeg. The next one, I don't know, turns out these easy things aren't so popular. They don't exist. So moving on to the hard parts. So, we use a lot of WordPress transients. So, I built a better class-based API. I'm going to go over the strike-throughs in a moment. So basically, yeah, it's a class-based API instead of the Procedural standard API. It uses it in the background, but yeah. The main feature in it is the predictable transient names. It had prefetch and a list of transients with meta and an inception mode, which lets you put transients within transients. But these were removed for technical reasons. I'm going to tell about them in a moment. But then, one thing that uses transients a lot is the cache-proxy endpoint that I did. It's for third-party or native WordPress endpoints. So, say, post endpoint. We can't easily transientify that. But if you're relative to the cache-proxy, yeah, no problem. On top of that, I added auto-magical transients for all custom API endpoints. It's just one line of code if you want to use transients in it or not. And magic needs some ugly things behind it. So, yeah, as I said, unfortunately, because we're going to only run memcache, the small solution didn't run so very well. So, I didn't know that memcache maximum value size is one megabyte. And the list of my transients quickly got to four megabytes, which says to a few thousand transients in it. So, I tried storing it in WB options inside the WordPress database, but, yeah. My escuel didn't like it. I don't know why I'm not human today. But BHP could handle the value just fine. But production crashed a few times as a result of my smart code. So, we simplified it a bit, left out the list, refetched an inception mode. But a system like this could work just wonderfully with readers, or any least, recently used cache without sensible value limits. And my remote is broke. This is my demo effect today. It works. Yeah. So, I don't see my own presentation anymore, but I don't need the notes. It's just that I'm switching contacts like statement in time, so I really need the notes, but who cares? So, we run it over a weekend. It didn't go with the four megabytes, and we pretty much populated all the transients that we ever would. But, yeah, my escuel choked on the transient list. So, we didn't have the possibility to use it. But, if you use readers, readers, how do you pronounce it? I don't care. Yeah, you could use this. So, I'm going to show you some code. This is the disclaimer. I hacked it together from the parts of code that I wrote and parts of the code that are now in production. So, no guarantees whatsoever. So, look into it. And I will publish a dual-kit blog containing similar features than these. But, I have to have time first. Maybe it's done next week. Maybe it isn't. Yeah. Just to show you how. These aren't really complicated things. It's just different. So, here's the Transientify class constructor. It's, I'm not going to go into detail. Well, basically, it sets a key that's the base of all transient keys. So, we use, we have a custom access level system. So, we embed data from that to the key. So, we can have different transients for different access levels. And these are just functions that really shouldn't get anything from WB options but they do. And here's the partial options of the class. So, basically, you can set a different expiry or different permissions for bypassing transients. So, basically, every editor that we have has to get the latest content instead of the class content. You can go into detail. Prefetching is also pretty easy. You just maintain the list and then you call it in with a cron job and you loop the list. So, the interesting part of this is this get function. So, basically, the get function doesn't do anything with get data in callable here unless the transient is actually missing or invalid. So, if there's no transient, it will call get data and it's up to get data to set the transient with the set function. As you see, it's past this. So, it has access to the same transient, for instance. And this is just the magic behind it. It's rather simple code, but don't do this. And yeah, it's just a cron job that triggers the prefetching. So, to show you the category endpoints, costume endpoints that we have, this is our category endpoint that I built. So, yeah, you just define the endpoints in the construction and you define an expiry for it. This is the transient length and this is the actual API endpoint. It's pretty simple, but under these is like 2,000 lines of code. So, transients are really required in this case. To show you the base class under the costume rest route that we have, it's rather simple. It just extends WP rest controller. Yeah, you give it the namespace and a route and that's it.  And yeah, this is just so complex that I don't have the time to explain it. So, actually 10, 35. Yeah, so I'm not gonna explain it. It's there, take a picture if you want. I'm gonna put my slides online today. It's there. I'm in a bit of a hurry here. So, transient cleaner. It's just basically hooks on the filters or actions and if it loops things, if it matches transient, it will clear it. This is really just an ugly class that does nothing nice. Don't think of me as a good coder, especially Jacob. So, I don't think I have time for this. Basically, every request that we make from the client side to WordPress is cash to local forex which uses indexed database behind it. This makes application faster over time and allows for offline use. We actually shipped offline feature yesterday but we had to roll back it for other unrelated issues. So, if it were to make changes to the data that we have stored on the user's device and we changed the components, everything will break. So, we have to do something to make the local database clearable. So, we used versions. Basically, these are just objects that contain some properties like the version and these are compared with, yeah, these are compared with future classes that I'm going to show, but yeah, you can use a version to clear all data from the user's device. So, we simply create local for each source out of wrapper class around it. Add some functionality. So, we used hashes for the keys to save a bit on user disk space. We compare the version of the cache item with the application version and if it's too late, like, oh, it has been, it said that it should clear. We will nuke the cache and that's it. And yeah, it's a rather simple code too. So, we can hook this up to the data retrieval function that we have. We have a WB client, JavaScript class as well. I'm not gonna show that, but we have that. So, we have hooked into the get method of it. So, all of it, if data is going to be cached automatically, but it has a problem, like it's going to keep growing forever. So, let's build in least recently used cache for the front end based on the disk storage class. So, we have a list of all the items in the cache it can contain a thousand items and if it goes over that it will clean 10% automatically. Then, that's just basic. So, we override the get method inside disk storage to set the order every time a request is made and accessed from the cache. It moves upwards in the list so it doesn't get removed and it just uses the disk storage get behind of it. This is just the cleaning method. It's not the manual, but this works. So, on top of that, I'm gonna have to wrap up this one, I think. Yeah, so, dealing with fragmented data, which made me regret not using TypeScript. Well, basically, there's many different formats or at least two in this case for seemingly the same data. Like, this is a response from a WordPress native endpoint of an image featured image to be stacked and this is an ACF field image inside an REST API response. So, as you can see, they're a bit different contain the same data, usually. So, this is the case for everything inside the ACF fields that we have from this plugin and other things as well, but for the sake of simplicity. So, we want to use the same components, regardless of if it's ACF image or featured image. So, we used models. This is basically just that JavaScript object contains three properties at all times and the components can rely on them so they don't have, why am I moving this? So, they don't have to do this kind of ugly thing inside the component and don't ask why ACF image is always an image.cuba. That's just the five year old thing that we couldn't change. So, okay, I have time for this then. So, authentication in English is both with WordPress. The obvious thing to use was cookies. Like, that was the easiest one. Anyone that's made a REST API request from the WP admin has wondered why it's so easy. Probably, I did. But with cookies, you have to use nonsense with important requests and you can't do that or you can, I did and when I run into trouble, I want to ask for help and this is what Ryan McHugh told me. So, basically he said fundamentally, cookie authentication is only meant to be used inside logins or themes and if you're not using them, you shouldn't do it. Just ignore the rest of what he said. I don't like the idea of creating a single page application that's boosted up by WordPress. So, moving on to other options, JSON web tokens we used briefly, but they're meant for server to server applications and not really client side applications. So, all of it was, we used this commercial plugin called WP or server which is in this address. I don't really recommend it, it was horrid, but it did the job. So, this is how I set it up. Yeah, so the doc suggests that you do this, even though this is from the user credit and source grant type documentation. You might see something wrong with this. So, base 64 isn't an encryption, it's just an encoding. So, if you were to embed this client side, we would have some troubles later on. So, what could possibly go wrong with this one? Everything. So, let's do something else. So, instead of finding the documentation blindly, we did that, but with our REST API endpoint. So, we just post the username and password at the header and forward the request to the OAuth server and return it to the client normally. So, I'm gonna have to wrap up now, but this is how we did the authentication. I spent like two months getting it done. So, I don't really recommend the plugin, but I don't know what your options are. So, I'm gonna have to skip these. Yeah, thank you. It's been a pleasure, but too much content I know. So, to send you down some rabbit holes, here's the reasoning behind the nonces from REST API. Take a picture if you want. And here's the property start article. We just did this one and added some boilerplate and put it in production. It has worked tremendously well. I can just recommend it, just do it. And this was the Google DacManager answer. And yeah, I've been, kiss only. Thank you. Thank you. So, we have about five minutes for questions. So, if we have some audience questions, please raise your hands and then there will be a mic given to you. So, there's one in the back corner. Hey. This was a fully react front end, right? Yeah. Is there any reason why you chose Puppet here over, for example, Next.js or something like that, which actually provides all of the server rendering? Yeah, basically. Did your course then continue or did I interrupt you? So, we didn't want to use Next.js because it's react, but it's different. You can't use same kind of things like you can't use react router with Next.js. And we wanted to use react router. You just wanted to use it. And we wanted to try Puppet.js. I see, because you have in Next, you have the possibility to do server-side rendering and every concurrent request after the initial request is done in the client, right? I'm not sure if I heard that. In Next, you can actually do both things. You can do server-side rendering. Yeah. On the initial page. Yeah, I've used Next.js briefly. I liked it a bit, but we just didn't go with it. No other reasons at any other. Thank you. Yeah, other questions? There's one over there. When building this, did you look at GraphQL over using a REST API? I wish I used GraphQL, but we didn't have the expertise. No one know how to use it, but everyone wanted to use it, but we didn't know how to set it up. I've heard Morgan, I think, has set it up. I'm not sure. Maybe I heard it. Maybe someone from them is going to talk about it sometime. Hi, I'm Christopher. Did you notice a change in SEO performance before and after the design? Yes, it went down. Well, it's been temporary. We had some problems with the property, obviously. But yeah, it's going back. I don't know actually why it's going down, but maybe it's because it wasn't able to find sitemaps in the beginning and that caused a bit of trouble. But every new article that we publish is there for within like 15 minutes from publishing if you find with the title to put it to Google, it's there. So it should be okay, but definitely metrics are down. Any more questions? There was someone already mentioned next, J.S. Did you ever consider Gatsby? Isn't that more like, I don't know what to call it? It's a basic. Yeah, so it's more like a generator. Yes, but it's basically a... Yeah, well, yeah. So I hadn't heard of Gatsby before we started this. I guess it would have like built-in direct WordPress support with the GraphQL. Yeah, so it sounds nice. So maybe I'll consider that in the future. Yeah, most of this stuff would have been solved just like that. Yeah, hey, thanks for telling me that now and not a year ago. I said that I was going to build this, so why didn't no one tell me what to do? Like, I had no idea what to do, but we did it. Yeah, we have one more question on the back there. Was there a reason why you wanted to use the build in WordPress REST API endpoints because I've found it easier to use a transform function to put the data in the format I want to use instead of just using whatever WordPress spits out? Yeah, mainly it was an MVP. That was the reason and we kind of had to stick with it. It's going to improve in the future, I'm sure of that, but as a minor announcement, this is my last day at Binsett. So I don't know how it's going to evolve at this point. OK, I think we're out of time for questions. So yeah, once more, let's give a hand to Christian.


The outfit cooking small detachment unit is designed to supply the necessary attachments and utensils required to cook rations for 15 to 40 men. The outfit is primarily for out-of-door use by isolated detachments. For shipment by vehicle, the windshield section is placed on top of the packed stove section. The stove draw bolts are locked on the windshield keepers. This is done to securely fasten the two sections together. When a vehicle is not available, the outfit is divided into two sections. The sections weighing about 40 pounds each may be easily carried on two packed boards. A five-gallon gasoline can which supplies the fuel to the stove may be carried on a third packed board. The windshield section consists of the windshield, the sterilizing pan, two six-quart pots, two larger pots, one eleven quart and one thirteen and one half quart, and two frying pans. There are also the maintenance bag, the cutlery bag, and the cutlery roll with their component parts. The second section is the stove section and is packed with the following items. The four perforated plates, the gravity feed adapter from the gasoline can, the downdraft burner from the burner well, and five sections of stove pipe. Before examining the rations to be cooked on the outfit, let's review briefly what is meant by the term ration. A ration is the allowance of food for one person for one day. The primary factors considered in designing operational rations are to keep them light in weight while retaining maximum nutrition and palatability. Many components of operational rations are pre-cooked foods which may be eaten hot or cold. However, for better eating, most food should be served hot except in extreme hazardous conditions. Food components discussed in this film correspond as nearly as practicable to those of the field ration A. The big difference is the substitution of canned items for the perishable counterparts. The ration operational B is made up of well-balanced and varied meals. This menu provides a 15-day cycle of non-perishable foods having a caloric value of approximately 4,400 calories per man per day. It consists of canned meats, cereals, canned fruits, canned milk products, canned vegetables, dehydrated fruits and vegetables, powdered milk, and powdered eggs. In combat, the ration operational B is used to serve hot meals to all personnel daily. The ration small detachment five persons was designed for small group feeding. Although the ration was intended to provide sufficient food to sustain five men for one day, men may combine their rations in order to cook on the outfit. Because groups are sometimes required to subsist on this ration for several days, five different menus are provided to minimize monotony. This diet contains approximately 3,600 calories per ration. The five-in-one ration now includes new and improved meat items, dry cream for coffee, and better confection items. In choosing a place to set up the outfit for cooking, take care to ensure against food contamination and fire. Select a level area of land protected from the wind. For purposes of this training film, complete setup of the outfit cooking will be demonstrated. Usually the burner assembly and fuel delivery section are assembled before moving to the field. Remove the sections from the packed boards. Place the stove section on the ground. Remove the stack sections and fuel delivery and burner assembly. Set and lock the windshield on the stove top. Make sure the windshield door is away from the wind. Install the first stove pipe section in the stove pipe well with the band type lock on the bottom. The three slots in the band type lock should engage the three keepers in the stove pipe well when the pipe is turned clockwise. Add the other sections of the stove pipe by fitting the straight end of one section over the crimped end of the section below. Screw one end of the fuel conductor nipple into the receiving hole and the burner cap. Slide the other end through the hole on the top of the flame shield. Be sure the gasoline supply can is filled. Grasp the adapter by its plug cap and insert the air vent tube in the fuel can so that its end points toward the far corner of the can. Raise the clamp on the adapter plug cap and hold it firmly with one hand. With the other hand, screw the adapter plug cap into the gasoline can aperture until it is securely tightened. Then lock the adapter and the air vent tube in position by pressing the clamp down. Screw the male brass hose fitting into the female end of the drip interceptor on top of the cap. Tighten it with an alligator jaw wrench. Screw the free end of the fuel conductor nipple into the coupling nut on the drip valve. Screw the female end of the hose onto the fuel inlet of the drip valve. Place the burner in the burner well. Tighten all joints to prevent leakage. Check to be sure the stove is ready for action. The next step in the preparation of food is the lighting of the burner. Before lighting, make sure the draft gate is open. This allows an increasing amount of draft and accelerates the heating process. Remove the burner from the burner well and place it on level ground. Open the drip valve slightly. When the fuel appears in the crack between the burner cap and burner body, close the valve. Keep face and body away from the burner while lighting. Ignite the burner using one of the following methods. One, ignite rags or paper in the burner well and insert the burner. Two, ignite the burner with a match as far away from the stove as possible. And then insert the burner into the burner well. Open the valve to allow a slow drip for at least three minutes. Gradually increase the flow of fuel until the maximum heat with the least smoke is being obtained. All openings on the top of the stove must be covered with perforated plates. After the stove is fully warmed, the draft gate should be closed. This forces the heat to circulate throughout the stove section. There are several menus that can be prepared in the outfit by men who have never been to a cooking school. Some of the meat dishes are in the stove. Of course, the coffee may be made in advance and kept hot until the space is needed for another item. The dehydrated potatoes are mixed with water and stirred until smooth. The cans of sauerkraut are opened and poured into one of the pots. The size of the pot to be used will depend upon the number of men in the detachment. The fruit cocktail is now opened and poured into a pot or maybe served directly from the can as shown here. When the bread has been cut and the butter cans opened, place the pots containing the potatoes on the sauerkraut on the back portion of the stove. Seasoning may now be added. The grill will be used on the front portion for convenience in frying the frankfurters. While the vegetables are cooking, the meat can be placed on the grill. Timing is very important here in order for the vegetables and the meat to be ready for serving at the same time. After all the men have been served, fill the sterilizing pan with water and heat on the stove. This can be used for washing the utensils. When all the cooking operations are completed and the wash water is hot, shut off the burner. To do this, close the drip valve and leave the burner in the burner well until the stove has cooled enough for packing. Remember, the outfit is packed in two sections. To pack the windshield section, place the windshield on the ground with the windshield door locked into position. Place the sterilizing pan inside the windshield. Place the two frying pans side by side in the bottom of the sterilizing pan. Put the two small pots side by side in one of the frying pans. Place the two larger pots one within the other in the second frying pan.  Arrange the ladle and the dipper so their dipping portions are at opposite ends in the cutlery bag. Cover all the pots with their respective covers. Fasten the windshield cover to the windshield by locking the three draw bolts on the three windshield cover keepers. To pack the stove section, remove the perforated plates. Remove the gravity feed adapter from the gasoline can. Take the downdraft burner from the burner well. Disassemble the stove pipe. Raise the hinged pan rests on the stove and place the stove pipe on one side of the baffle plate which separates the inside of the stove into two parts. Put the downdraft burner, hose and adapter on the other side. Now the two sections of the outfit cooking small detachment are ready to be mounted on packed boards to be transported to the next position. It has been shown in this film that it is possible to feed hot meals to men in small detachments. Menuse can provide a very appetizing and satisfying meal when enough attention is given to their preparation. But don't forget that when using the outfit cooking small detachment, all safety precautions must be taken to avoid fire and possible injury to the men. Select a level area of ground for installation. Make sure the windshield door is away from the direction of the wind. Before lighting, make sure the drip valve is closed and the draft gate is open. Food. The role played by operational rations in more recent conflicts is well known. However, military analysts and food research workers are ever making a component of this movement. As military things require change, the components in the ration are changed. Whatever the components might be, with a little imagination and ingenuity, buried and balanced meals can be prepared on the outfit cooking small detachment. Most of the principles and procedures shown here can be found in the Department of the Army Technical Manual, TM-10-703, Outfit Cooking Small Detachment.


The European Union does not have the necessary defence potential to independently confront Russia without support from the United States in case of a potential armed conflict, the European version of the Politico newspaper wrote. Europe is not only unprepared for potential war, it's not preparing for war. Benjamin Tallis from the German think tank DGAP said as quoted by the newspaper, former US ambassador to Poland Daniel Fried shares his opinion. The Europeans don't have the capacity to defend, Fried told Politico. The newspaper explains that since the end of the Cold War, the number of armed forces in EU countries has decreased by 2.5 times from 3.5 million troops in 1989 to 1.3 million in 2022. Moreover, a number of countries have switched from the format of compulsory military service to military service under contract. As a result, for example, the Belgian military is so short of ammunition and funding that soldiers will have to throw stones shortly after the start of any conflict. Politico points out, citing retired Belgian Armed Forces Lieutenant-General Marc Feis. Without support from the United States, Europe is unable to resist Russia in the event of a potential armed conflict. The publication concludes statements by former US President Donald Trump about his intention to reduce the level of support from Washington towards European NATO allies to raise alarm among officials of the community countries. Earlier Kremlin spokesman Dmitry Peskov said that by talking about a possible armed conflict with Russia, European politicians are diverting the attention of residents of their countries from economic issues. He noted that Europeans have always been inclined to search for an external enemy.


All right welcome to the banner bunch.  Make sure it's shown on the right screen. Typical agenda. We'll go ahead and have quick introductions of our team here and we'll dive into this one topic. We're going to do clean address. For those of you that touch addresses in Banner or patients to addresses, you'll be a little excited about this software. So we are the banner bunch. Our team's made up of Kimmy, Mark, Tyler, Teresa, Lauren, Carl's telecommunicating right now. Lena, he was backmaning the office, myself from Gabriel and then our leader Michael. So clean address. Who here has heard of us talk about clean address in the past? We purchased this about a year ago and it's taken us most of that time to get set up to where we can implement this. And we're hoping to have it into production and turned on and going every day by the end of the month here. What clean address does, for those of you who raised your hand, does anybody want to take a guess at what it actually is? Explain? No, nobody's playable. Clean address in a nutshell cleans the addresses in Banner. What it does, the way it works is we actually will get files from the U.S. Postal Service of every address that is valid to them across the nation. We'll get those on a quarterly basis so we all step to date. This software bolts on the banner and works very seamlessly with self-service and the in-banner forms to verify addresses as you enter them to make sure that they're up to date. We also have capabilities to run it against the entire system and clean up everything that has been entered in the past, which we will do when we turn this on. We also have the ability to take a spreadsheet of addresses and clean that up and then help put another spreadsheet with everything verified and any messages that come out of that. It's pretty slick and it's very robust. It's made by a company named Rutter Technologies. We have suspicions that it's populated by a bunch of all the Lucian employees because it works so well with Banner. With Banner schools, this is really the gold standard software for doing a sort of that. There's big reasons why more use this software. I'm sure some of you probably want to cross these in the past. First off, it's going to minimize some of our data entry. For those of you that actually have to enter or maintain addresses in Banner, whether you're a student entering application or you're sitting in the back end that's making sure it's capitalized right or take out the special characters, this software does all of that. It cleans up addresses on the fly. By that way, we're able to enforce our data standards. We're able to make sure that everything is the same across the system. We use the same abbreviation for Boulevard. We use the same capitalization and then verifying this proposal service, everything is an accurate address. We're going to reduce a lot of our errors and bounce back mail, free mailings for the lovers because I know right now they get a lot of mail that comes back to them because it's not quite the right address or that house doesn't exist or that sort of thing. This will prevent a lot of that. Then, vicariously, because everything is going to be standardized, it'll help us prevent our house in the future because when addresses come in, we use phone matching, we'll be comparing apples to apples and slightly a skull that's going to throw it off. I'm going to go ahead and give a demo, I'll start with self-service and show you how this works. Most of our addresses come in through applications. That's what I'm going to show you, but it works the same across all of self-service anywhere there's an address like if you're updating your personal information or your emergency contact stuff, it works the same way. Let me go ahead and hop in there. I'm going to go ahead and create a new application for the scratch. This will be nice and clean. So I've gone ahead and changed in our development instance the way that the address has appeared simply because I want to make sure that you see everything that's going on with clean address. The admissions office may actually change the mailing address piece just based on this behavior as well. So anywhere that an application has an address on its gathering, clean address is going to plug in and work behind the scenes. For our standard W1 freshman web app, we've got two sections, one for permanent address and one for mailing address. I'm going to go ahead and show you this permanent address field. Like I said, I added a bunch of fields here that don't normally appear, but I also took away a lot of the requirements just so we can play around with this in the session. So let's just start out with a valid address. We all know 6500% FAA, right? Albany, Oregon, 97321. I'll give you my phone number if you want it, 917-4355. Oops. And I'll like continue. And we're done. Clean address is done, it's an address. So to the user, if they enter that address, they won't notice anything. An applicant usually knows their correct address and they enter it in fine. But behind the scenes, when I continued there, clean address, looked at that address and said, All right, there's a 6500% FAA in Albany, Oregon, didn't quite fill it out exactly right. So we went ahead and standardized it to 6500% FAA, Albany, Oregon, even put in the last four characters of the zip code, corrected the county to any county. They put all that information in seamlessly behind the scenes and the applicant does either of those. So it does all that, it doesn't show you that it did that, it just said, right, it's in. They said, This is a valid address, let's just clean it up a little. But it doesn't give it to you for review? No, but I'll show you what happens if you don't say the problem is that I gave it a valid address and it's really close. So let's see what happens if I give it an address if the address is close enough for it to go in and match it up. If you really screw it up? Exactly. And that's what I'm going to show you next is what happens if you give it the bare minimum information 123 anywhere, I'm not going to give it anything else. And I hit continue. It's going to come back and say this is not a valid address. All right 123 anywhere, but where is that? He needs to have a little bit of information so it can go out to that database of postal US Postal Service Addresses and verify it. So right now it's telling me, try again, we need at least a zip code. How does it handle like apartment numbers? We're going to show you that. So let's say, all right, I'll give you the zip code. That's all I'm going to give you 97321. That's where I live 123 anywhere in Albany, Oregon, and hit continue. It's going to come back. It said, all right, 97321 is in Albany, Oregon. I know that this is average, but there's no anywhere street in Albany. And so it's going to give me a message saying I don't know the street. It's got to be maybe it's close. It could be Anderson, be Angelo, be Anthony. These are some suggestions based on why I've already input. So I'm going to give it a little bit more. I'm going to give it Anderson. I'm not even going to put the place on there 123 Anderson Street. And I have to tell you it's going to be like, all right, well, there's an Anderson Street in Albany, Oregon. We're that far. But 123 is not a valid range. There's no 123 house number on that street. But here are valid house numbers on that street. It could be between 1100 and 1199. It could be 1143, 1185. These are all valid house numbers on Anderson Street in Albany, Oregon. So it tries to help the user get to a valid address as walk us through it. So let's let's keep going. Let's give it 1143 and hit continue. And it comes back and it says, All right, there's an 1143 Anderson Place Southeast. But it knows that there are sweets at that address. If you're asking Kevin, what happens if there's an apartment number? It'll ask you for the apartment number. And here it says that we know that 1143 Anderson's Place Southeast there are sweet 6-3 cabinet. You got to choose one of those to put in the address for it to be valid. So I'll go ahead and put sweet 6. You don't have to do that much. Oh yeah? Can you put like a number 6 on there? Or you can just write after Anderson just put a number on it. We have some correct street lane 2s in the street lane. Well, people too. Right. So if I put sweet 6 on there, I put it on the second line there. I didn't put in anything else and hit continue. They moved on to the next section. It got enough to standardize the address. So let's go back and look at that. Yeah, I didn't put on place. I didn't put something and now it's standardized it. 1143 Anderson Place Southeast sweet 6. All in line one. Fixed up the zip code, put in the county code. And that's what clean address does. Pretty helpful. And so now the applicants as they're going through this is being asked to correct their address and they're not allowed to move on. It's like that about address. And when they do, it's all standardized to our standards and it's mixed because this is a clear question. What's it line for lane 2? On this one, what would be a casing to put there that would stay on that line? Some addresses. The apartments are supposed to go on the second line. It really depends on how the post office expects an address. Some addresses are longer. It was like here with that stay there. I don't know. That's a good question. This is still in testing. So we might as well check. Okay. I apologize for this up and down. The mouse that I'm using is kind of wonky. So I'm accepted it. Let's go see if it stripped that out. What if it flipped it around and said the pair of really belongs on the first line? Well, and that's because the post office for you to add just from the bottom up. So it accepts it, but it's standardized at the same time. Question. When you print labels that usually be print off a line 1 and don't print off a line 2. So is that going to cause us problems when we print labels and some things out there? Right. So that's one of the reasons why we're displaying this now. It's not in production yet. We've got a few weeks before we do production. Some of our business processes, we may want to double check like printing labels and want to know what's going to happen if being care of appears on that first line. I would expect that those are kind of the exceptions. We want to know what happened. So this is what happens in self-service. It's pretty user friendly. The same sort of thing happens in in banner IMD and I can go ahead and show you that as well. So this ties into many of the forms in banner that have addresses. So some of us would rattle off some of those like spading, ppading, fpm, then there's a total of like 25 different forms in banner that use this field. Let me go ahead and show you spading. We can pull my information because I fix it at this time. If we go into address. Yeah, I was playing around with this earlier and we've got 6500. But if we wanted to enter a new address, we can go in here and call it a permanent address. I could do my one, two, three, anywhere example again. And you can notice that I when I'm doing data entry in here, all I really need to do is put in a zip code. And hit tab and it'll fill everything else in, which is really nice. If you're doing data entry, just put it in the zip code and type everything else out. And then I can hit save. And it'll pop up the same sort of message. It looks like it's in banner now. It's not the claim of the self service, but it's the same message. Anywhere doesn't exist in all many get to choose Anderson and they would walk you through the same steps that we just walked through in self service to get to a lot of 43 Anderson, please Southeast. If you agree that No, you have to actually type that it's just suggestions functionality is coming. If it's a brand new street like a new subdivision, is it going to be up to date like that? Now that's that's one of the caveats. There's two caveats and we'll cover those in a second. Second, but that's one of the things you need to worry about. One thing I do want to show you though, is that say, you know, 1143 Anderson place Southeast inform that I'm trying to put in here. But I want to do sweet five because I know that clean address is going to prevent me. It only accepts sweet 6010 right now, but this applicant or person is just telling me up and down there in sweet five and that is the correct address. We have the ability with this checkbox to override it and hit save. And it'll take it. Now the trick to that is if I uncheck this, it'll check it again and say, no, no, no, no, it has to be in my database. But if I want an address that I know is this, I can save it in there. Back to what your question is the caveat is in self service. You don't have this right button. So if an applicant has a brand new house that was built in the past few weeks, that address isn't here because we update those post office addresses quarterly. We'll have to work out our process on how to handle those, but really those handle very minimally. The other example that I've seen a lot of clean address is some 10 some landlord chopped up a house into five different addresses. And technically they're not real addresses though sometimes catch us as well, but they're really one percent of the time. This software will catch everything on a quarterly basis. It's updated and it's very slow. The other caveat that I mentioned, I mentioned number two. The other one is that for those of you that really love hidden addresses and look at all the codes, we are changing the county codes that are in there. Up to now we've been using county codes that were invented by the part of community colleges and work first of all in CCWD up in Salem. Those codes are USPS standards and this software needs to have the postal offices codes for counties. Those are called FIPS and I can't remember what they're saying for federal information standards. So what we have had to do is put in the county codes according to FIPS. So if you're used to putting in 002 for Benton County, the real code is OR003 or for Lynn County, the old code was 022. Now it's 0, it's OR043. We feel that this should be really a non-issue though because not a clean address always makes sure that it's accurate to never data enter a county code again. So I'm going to go back to my next slide show. That's not working real well. So we touched on self-service. Here's some of the forms in Banner that use common matching there or not common matching. We use clean address now. We'll see. Go and match. I was talking with somebody earlier about doing data entry in there. Spade and prepaid and FT and Venns, I say, but there's many more. We can give you the full list if you want to submit. But pretty much anywhere there's an address, you're going to see clean address cleaning it up. And I did mention that the county codes have changed as well. It should be pretty much a non-issue except for IR. We're going to have to convert out for CCW. Any questions? Any questions about clean address or any questions about Banner in general? That was a pretty quick one today and you get the rest of the time available for anything you want to talk about. What are you thinking of the software? So we hear from us right now it's in all our development instances. We've been testing it pretty heavily. We have a couple of minor issues that I've skirted around during this demo. But we're working to get those resolved. We're also working to clean up all of our county codes. Kim and Carl, we're not clean at all. Kim and Tyler have been working on that. A lot of our jobs have county codes hard coding. So we have to clean up all that before we can come this home. But we're open to having this new production by the end of the month. Really nice. Do you think this is going to impact anybody's work career? Yeah, that's a damage. I know you're just going to feel good. I just heard like three or four sides of there. Yeah, the goal is now we don't even think about addresses because we can trust the software is what we're calling international. Oh, good morning. Good question, Kevin. This software only works for US Postal Service. Ryder Technologies offers address data on something like 200 countries or something like that. But we only purchased the United States because I don't think we have very many addresses coming up. Maybe you exist, but they're small enough that we don't have to pay money to verify every single one. On that screen, if you choose anything besides the US, does that mean it just turns it off basically? Right. So what Danny is asking is out here on self service. If you choose a country, it'll actually deactivate the address because there's no overriding self service. That's one of the work arounds that I've heard of. I know I see that it's that when they have somebody calling and saying try to submit my application, but it will not take my address. Don't tell us it happens. Don't tell us a work around that we could tell us. I shouldn't tell you. No. No. Just say you want to say what you're always to get around. Yeah. Thank you. Yeah. Who's Steve Tuerson? Other questions, comments. It doesn't have to be about being at this point. So how would they get to those developers? So that's a good question. Does everybody know how to get to a development instance to help test all these different URLs? All those mind boggling. All those crazy URLs. So one of the changes we recently made, and we didn't really publicize this a whole lot. If you go out for our banner home page out here, we now have a link for testing. If you click on that, it drives you way down to the bottom of this page. Then you've got these banner instances and you have access to any one of our instances pprod, which is always a week behind in the data. We call it every Friday from production. Test D test and dev out which are cloned on more of a quarterly basis. If you click on one of those, then you can get to banner. You can get a big banner session or you can get to any of self service for those test instances. This is helpful if you're helping out with releases, admission, self-sacrifice, active affairs, or sort of finance. All these areas are interested in the next version of banner that are coming out. This is going to do our work. So they help out testing there. Right now, clean addresses in all of these instances can help test in this as well. See how it behaves. This is one of the changes that we're making. We're slowly starting to update this page and get a lot more useful information on it. They're a little bit unusable. So if you have any input on this page, let us know. This page is going to become very popular if it hasn't already. Last weekend, I even went to the fix where you're not allowed to shortcut and open banner directly from your computer anymore. You weren't supposed to do that first place. Did anybody have a shortcut directly to banner? Just Kevin. If you have a shortcut that goes directly to banner, you might have noticed that now when you click on the shortcut, it takes you here for yourself. You may have to hit start banner or big banner. One extra step, it allows us to tighten up the security around banner so that we don't have open sessions from anywhere. It gives us a funnel on all the sessions to banner. This is something that we did about a week ago and nobody knows much of it. We tend to try to communicate our changes, especially if they're going to be bigger like the hotkeys. We got infected by hotkeys. A few people are in their hands. I hope you don't hate us or swear too much. Cleanness control. Control. What did that do? It was a keyboard shortcut that we like. The list of values, yeah. Control S for save instead of F10. That's a big change. Shift-pinch down. Shift-pinch down to control F10. Shift-pinch down. Shift-pinch down to control F10. Yeah. I used a fork. Now I have a sheet of the new ones taken to my computer. I didn't even know that one existed. I got used to the ones I used before already and I used the ones that I used before. We really appreciate you understanding on that change. I know that that one, if your brain's hardwired to shift-pinch down, it's a little top to get used to the new hotkeys. That's just one of those things that we're maintaining for very little reason. Now we're publicizing what the baseline hotkeys are and we've made a little more awareness to what Kevin said. Some people are using them more. How is the communication on that change? We're trying to get a better sense on if we're reaching everybody across campus and people know that things are going to happen ahead of time so that nobody's really caught on where when we do make a change. I think I started from the time until I actually did it. So when they came and then your keyboard was broken but the distance to that is slowly going to be wider. We're using the banner current users group pretty heavily to send out a lot of information. We're trying to be aware of faculty that may or may not be getting those in the hotkeys and who's getting information across campus and who's not because we will be making more changes over time and I want to make sure that people are aware that those are coming so that first off, you just know about it and then second, if the business process has to change because that's something that we can plan in advance or if we're going to make a change that's going to hugely impact the area and we find out before that change happens we can help plan ahead or even postpone if we have to. People come to these meetings and definitely don't. If it's just a email through the app, it's not certain. And the invites for this go out to banner current users and I've wanted to sometimes faculty don't pick up those in our scores. I'm trying to have more communication with students as well. We're going to get in touch with us and the leadership council and start getting their input on things. I think we can go away and focus right before we change self-service. I'm not. And we've gotten a lot of great feedback on the banner bunch. These are fun. We like doing these. What sort of banner bunches would you like to see in the future? What sort of areas would you like to learn about? We're always looking for more ideas for these sessions. Some of the ideas that we have is when self-service starts to change look and feel that which will probably happen here in the near future. We'd like to go banner bunch on that before the change actually happens. Those sorts of things. Or if new functionalities come out or going back to baseline those sorts of things we'd like to do. Sessions on. I know you've got waitlisting coming up or prereqs. I don't know if those are more too technical or too specific to one area but we've started up those sorts of things. Or even functionality that maybe we don't use a whole lot like quick flow or workflow those sorts of things. Quick flow of my banner too. Quick flow of my banner. We can look at what's been or something like that. That'd be a good one. Those are good little chunks that we can do in these. Any other questions? Comments. I said quite a group this morning. That's what happens when we don't have coffee in the back. That's great. Well, I don't have a whole lot of stock questions. What can you guys think of that maybe we need to talk about or should I just end it early? We've thought about having like a point of questions that we could ask ourselves. My thought was asking about communication. All right. Well, if there's no other questions or comments I think we'll just go ahead and end it early. I'll put this out on the website so anybody can get on and eat too. Is that done? Now we can give a status something down that as well. Is everyone aware of the banner baseline project? Raise your hand if you are. Not half of us. For those of you that aren't aware or for everybody else, the status update, we've kicked off a really big project to bring banner closer to you the way of listening to the rumors.  In fact, we're the first community college in the nation to adopt banner in 1931 or 1.0 or even earlier. A lot of the functionality wasn't there until or we were used to an old IBM system that we had before. So we've changed banner for the years because we have access to it because we can do that. What happens though, when you do that is over time the system that you're maintaining and the system that we're training on gets farther and farther away from what the company actually delivers. And at this point, 26 years on, it's becoming a maintainable and unsustainable to continue doing that. We've built a lot of really cool functionality in this system. We don't want to just like delete that information or try to move away from that. What we want to do though, is take some of those chunks like waitlisting. We built our own waitlist system for registration and turn on the baseline delivered functionality for waitlisting. We make that transition from a homegrown waitlist system to delivered functionality for waitlisting. That's a good example because there is functionality that matches that, if we can make that switch. One of the switches we did about six months ago was from class information rating to faculty self-service, which is very similar. Wasn't exactly the same, but I have most of the same functionality. So we can bridge that gap and be able to spend more of our time focusing less on our time focusing on fixing things that are broken and the pieces that we've built ourselves and more of our time focusing on turning on cool functionality for systems like degree works or elusive mobile research. So we plan on spending most of our bandwidth over the next year, evaluating all those homegrown pieces of banner and changing them to be the way that elusive delivers that. Or finding other ways to meet that functionality or I'm sure some of them are just obsolete. We've never used them in years and they'll need to keep being paid. All sorts of things. Question. What are the big rosters? Class rosters, like in faculty self-service. So faculty self-service does have the class lists. It's not the same as the old class information rating though. What do you use class rosters for? The guys use it for attendance a lot. And they use it for, like you would a class list if something was all in one place. Right. They miss it a lot. So the important thing that's come up is the ability to export it. That's what I've heard the most. Copy and pasting the class list into like a spreadsheet or exporting it or something like that. You added a CSV file from the, there's a banner report for a class list. So some of the ways that we bridge that gap in functionality between what we home built on class rosters and what's delivered by recent. For most people just having that list and tapping self-service is not. Or sometimes they would copy paste a little bit into Excel if they needed to for attendance tracking. For people that need more information like email addresses or phone numbers that sort of thing. There's a banner job SWR CLLS that will output a CSV based on a CRM. Those are a couple of the ways we've done that. Now for attendance tracking also something to keep in mind is that as we get closer to a baseline version of banner we can upgrade to banner nine which has attendance tracking built in and it's very slight. We're just not quite there yet. And that's why you guys wouldn't build anything right on top of what we have now. Yeah. And I'd love to come sit with you guys and watch how you're doing attendance tracking and try to see if there's better ways to handle what we're doing already. With a lot of expertise we simply want to be able to print out a list walking across. Right. Just as simple as that I just want to share my list and your students here. Yeah. And that very simple kind of request is that people are going to see a lot of frustration.  I don't want to have to log into something. Just want to print this. Right. So you find really like that type of paper. Yes. Yes. Because obviously for a lot of them the times they don't use their podiums during back in 15 minutes and the time it takes to turn the podium on set it up, log it in. For them it's a loss of class. And they want to be able to walk in preparing right in your role with that piece of paper. And so it's, you know, from their perspective I think it seems like such a really simple thing to do that they've been doing for 15, 20 or more years. Right. And they really struggle with the loss of what seems like a very simple way to remain functional and classroom without interfering with their course time. So. Exactly. Yeah. And also some of the part-time faculty that's going to have to be in there so they just have self-serve. It just gets kind of. Yeah. A lot of my guys are college mainstream guys or the industry guys. And so they don't have a lot of base ground into any kind of a student. And they want to ever. Yeah. They come in, they teach for us, they do a fabulous job, and we're gone. So is there any reason why we can't have the tab back and take everything out of it with the faculty and advising? That would be against the back of baseline movement that the president needs to sign up on. I would think though that what you're describing I taught a class last term and I went into WebRunner and printed out my class list before each class. So that's what they're asking for. So I don't know why they... I'm saying it doesn't... That means maybe it's a true issue. Maybe it does need to slide down and show them how to do it. What actually is not the class list? They can... Yeah. She's talking about we actually listed out and actually had your days. So based on the term, based on your class. You actually said you actually had days. Yeah. There were two more programs. So part of it is it was homegrown so we have to tell people only to make your grades in the Internet Explorer. At the same time, we're telling people use Gmail. And by the way, Chrome was really nice. And use Mozilla for Moodle. But use Explorer for grades. So it's moving to the banner product which means it's tested on multiple browsers. So trying to move to something that spans browsers and technology. So if we bring something back, we go back to saying only use this one browser. Well, if the answer is no, then just tell me the answer is no. I just want to ask the question. What I'd like to do is come back there and help me. I lost my secretary at a time when I was building my office. Or got married. It was a huge place. If you'd like, I would really like to come and say with you and watch your process and see what sort of improvements. I mean, it really helps us to see it from your eyes and watch your fingers work. We can make all sorts of assumptions. Definitely idea. But we really don't know 100% how you use banner. I want to see that. Because it might be eye-opening and allow us to say, oh, well, there's this other feature or something like that. Yeah, we can make those sorts of changes and process and get it working more efficiently. Well, back in the day, we used to put five CRNs across. Right. Now you got to do one at a time. And again, I think it's a bigger process because there's a structure. So it's like, no CRN file. It puts the CRN in. Right. It's a lot more time-consuming. Which is okay. I could take through my time. Well, and I want our team to work for it. I want technology to work for us. It shouldn't be a barrier. It should be making us more efficient. That's our goal. So let me get up with you after this. We'll go walk through that and see what we can do to make it more efficient. Well, some of the stuff is static. It's your understanding of that. It's there to apply. Well, we want to hear it all. Absolutely. Yeah. I think it's really important in terms of these places where people can identify what functionality was actually lost and what functionality is there. People just aren't finding and are not trained on it. And I think that all comes from that understanding of how back in the 50s classroom we're using various aspects of banner that's now in self-serve. And maybe that's for they go in self-serve and they go, can't find it, must not be there. But maybe it is there. One of the things we've learned from moving away from classification and reading to the baseline faculty self-serve list is that we need to do a better job of change management. Making sure people have training making sure that we've done the analysis to understand what need is there and what value does it have before the change is or more sort of gone. So then we don't end up having any certain issues. Well, one thing is in banner self-serve and the faculty there's a procedure where you can email the whole class and it opens up and you can explore. So I'm teaching them, they come to me to just copy that basically to their group wise but they think that's all silly because it says, well I can just do it. I have instructions on the set for your default male client to be G. Yeah, that's a setting on your computer. You can send that out like that if you're logged in to your email it will open up a Gmail page with that entire list. You can see them. You can send it out to all faculty too. Yeah, because I sent that out to more faculty. There is a way to change that. Is there a distribution list for the sports staff or do you get faculty all emails? I just sent it to everybody. Here's how you change your default. Since we're in Gmail school, we're all logged into it anyway. Maybe we can email a functional detective in faculty self-service when you click that it uses the client or the other video or whatever that is and for a lot of us, we've never bothered to change that so it will automatically look for an outlet. Since it's all on Microsoft. But you can change that to be Gmail. If you're logged like me, the first thing you do is log in to your email and it's open all day long. So if you can chat with everybody you can check with them all the time. It's important to remember too that resending it to everyone that's one strategy for reaching a lot of people. You will not reach everyone. There will be folks who simply don't check or they see that subject and go, Anna, they absolutely ban that. Because I've never had to do anything that I understood was actually I was in ban or I didn't even know I wasn't in. So they will delete that before they even open it. So the multiple ways of reaching whether it's through the secretaries and it's through email and it's throughout the affairs and it has to be in this multiple points of contact before you can really raise the number of people who actually connect to it. That's the sort of thing we're very aware of paying attention to right now is how we're communicating and who we're hitting and pulling the same. If you have any suggestions or put on how we can do better, let us know. Well, I think it's funny what she says to like, I still don't understand what you're saying. As far as I can say, they're two set of systems that one week downloads to the other. They have no idea that they are in so well disguised. Yes, now they don't. I can tell you all kinds of things that say I've never touched Anna. I'm like, really? But they don't know their touches. Very cool. That is a good point that we are trying to use multiple channels and this is one of them and I appreciate hearing that. For some faculty, the first place they go for every question is for every question. I've run a desk looking at computer tables. I mean, I've never signed a text before. If they lose their links to put their outcomes in, then they can't find the link. It's my desk. When you think about support staff, our admins and secondaries in this room genuinely are what keep this whole institution afoot along with you guys. When I can't get a response, I can tell you if we can get one. Absolutely. Very cool. I really appreciate you coming to this. Like Michael said, this is one of our channels to try to communicate and train. Other questions? Are you going to bring donuts to the July meeting? Really? How much do you know? I won't pay attention ahead and see if conference services is open for the next banner bunch. All right. Well, thank you very much. Thank you. Everybody set out the little faces? In the back. Thank you.