meeting of the 2013-2014 Common Council to order. Will the clerk please read the quote for the meeting? Thank you Mayor. Giving credit where credit is due is a very rewarding habit of form. Its rewards are inestimable. Thank you very much. Next would the clerk please call the roll. 12th present. Alderman Lissard and Alderman Carlson are excused. Alderman Vercy and Maddichick are not. Next will please stand and join me in the Pledge of Allegiance. Next item on the agenda is the approval of minutes from our last meeting. Alderman Hammond. Thank you Mr. Mayor. I move to approve. Second. It's been made. The minutes are before us for any discussion. Is there any discussion on the minutes? Seeing none will the clerk please call the roll. 12 ayes. Next we'll go on to Council Appointments. City Attorney. Sustated today. I hereby submit the following appointment for your consideration. Sean Hurley to be considered for appointment to the Sustainable Sheboygan Task Force to fill the unexpired term of Josh Eldridge whose term expires for 2018 signed by the Mayor. And Randy Schwer to be considered for appointment to the Mayor's International Committee to fill the unexpired term of Susan Kirschner whose term expires for 2018 also signed by the Mayor. Alderman Hammond. Thank you Mr. Mayor. First off I'd make a motion to suspend. Is there the suspension is before us? Can we need to vote or just all those in favor of suspension please signify by saying aye. Opposed? Motion passes under suspension. Thank you Mr. Mayor because there's meetings coming up that's why we're suspending and so I would make a motion to confirm both appointments. Second. Thank you for that motion and second those appointments are before us. Is there any discussion on them? Seeing none will the clerk please call the roll. 12 ayes. And City Attorney we have one additional one. Right and for on confirmation of appointments Rebecca Clark to be considered for appointment to the Sustainable Sheboygan Task Force to fill the unexpired term of Vicki Hall representative from Environmental Group whose term expires for 2018-2014 signed by the Mayor. Thank you Alderman Hammond. Thank you Mr. Mayor again moved to confirm. Second. Moved and second to confirm the last appointment. Any discussion? If not will the clerk please call the roll. 12 ayes. Next we'll move on to the public forum. City clerk. Yes this evening we have two on public forum. First one would be Kyle Blindauer. Is Kyle here? Kyle could you come up to the front please? And Kyle I need your home address please. 1204 Cooper Avenue. Cooper? And we'll have five minutes sir. Okay. I'm here to discuss the Sheboygan rail trail project. It was supposed to be up for vote in the Common Council this week but that got held at the Department of Public Works meeting last Tuesday. Currently it will be on vote tomorrow in the Marine up Parks and Forestry Commission. It will be coming back here eventually so I figured tonight's as good night as any to discuss it. I have a little bit of history I can pass it on to the members they can read that and then I'm just here to educate you on the vote. I'm I was concerned when I heard that they're considering naming it the Sheboygan trail. I thought that was a not really thought out. The railroad helped build the city and I think that we should name it something the trail something related to the railroad to give us some justification. Like I said I have a history I can pass out and then you guys you can read that. I wanted to just leave that with a clerk we'll distribute it later then Kyle thank you. And next on the list would be Colin Cachal. Colin you want to pull the mic up a little bit people are having a hard time hearing so you need to talk right into the mic. Alright Colin Cachal 321 Bluff Avenue. Okay you may have five minutes. Okay I know that the topic of concern tonight is the new mid-lake management of the Wildwood softball softball park. They are asking for the same thing that the Armory Foundation is. This is the chance to prove themselves with a one-year lease. We are asking for the same thing but for only nine months. The Armory Foundation asked the council to approve our request that we submitted so that we can have a direct dialogue with public works next Tuesday and hopefully get started preserving improving and providing enjoyment at one of Sheboygan's most beloved buildings. Our softball season starts now and we need you to help jump start our season so we can prove to you that the Armory Foundation represents all the citizens and visitors of Sheboygan and will help improve the quality of life in our downtown district. Thank you. Thank you Colin. That's it for public forum. Thank you. Next we'll move on to a presentation of the Next Door Neighborhood Network program presented by City Development, Chad Pellecek. So while Dave's setting that up I'll just give you a little introduction. What we're going to talk about tonight is a new online private social networking system called Next Door that the city has partnered with out of a company in San Francisco. There's been some email correspondence to department heads and older persons on this but what we wanted to do tonight is go through a quick PowerPoint presentation and show the public what this tool is and how this would work for communication. This is very similar to Facebook. The only difference with this is it's a secured private social and you have there's social networking site in you in order to be a part of it it's the city's been divided up in the neighborhoods and in order to be a part of it you need to you need to either there's three different ways that you can sign up it's either through phone mail or by putting your credit card number in and they verify your address that you actually live in that neighborhood. So what we what what it is is it's really a communication tool from really the city side of things and we've been doing a lot of neighborhood meetings with the police department planning department in the Sheboygan neighborhood pride group across the city for the last three years or so. This tool is really a kind of another means of it won't necessarily take over the neighborhood meetings but it would be another communication tool for the neighbors to can talk about issues and happenings within their neighborhood it is also is it working it's also a means of communicating it's also a means of communicating and awareness between the neighborhood members so we we're looking at it from the city side of things is another tool of trying to communicate with residents of this community the in the neighborhood it's a communication tool between the residents themselves and they can talk about a number of things it's all privately held as city government we can't see any of that we're just going to be using it as a means whether it's the police department or the DPW or just regular city administration pushing information out there similar to what we would do with a twitter account on our website so as you can see here i'm not going to read through it but there's three ways of being come up part of them methods of being in the neighborhood it's either a postcard with a unique code sent to the home address a phone call listed to read the registered home address or like i said a credit card billing what we've done is map the city out into neighborhoods and identified key people within those neighborhoods so we've done the first bullet point mapping the city and we'll show that to you shortly we've used the police neighborhoods as a tool for kind of breaking our entire city down into smaller neighborhoods we've recruited members and these are founding members these are the first people in the neighborhoods that really are the legendary people if you want to say the founding members that really start the dialogue in the neighborhood and kind of get their other neighbors on board to start the process we've sent out emails and and correspondents to about 850 to a thousand contacts that we had on either the police department's contact list or the city development's contact list and got interested people from a number of neighborhoods to start this process tomorrow we'll actually be going live with next door there'll be a press release going out about our partnership with next door and it's really the phase of launching this to the entire city and allowing the city to start posting information into these neighborhoods so what we're looking for is if the for example if the public works department has a particular garbage schedule that's behind and they want to just notify a specific group of people within the city we can do that if there's a water main break or there's a road construction project happening in a neighborhood we can just pick out a particular neighborhood and notify the neighbors in that area versus the entire city so what i wanted to do is just show you a minute video if i can get this to open this is a this is an introducing next door that's off their website and it kind of gives you a little bit more specific information as soon as this people don't know their neighbors or how best to contact them it's difficult to ask for help and advice without being a bother next door changes all that with free and private neighborhood websites that make it easy for neighbors to connect and talk about the issues that matter it's an online place where you and your neighbors can ask questions stay in the know and exchange local help and advice here you can meet your neighbors get recommendations for local services and learn about neighborhood events whether you want to spread the word about a new park find an owner for that bookcase in your garage or be alerted of recent crimes in your area next door makes it easy to keep up with everything going on in your neighborhood all recommendations are organized and archived so next time you need a trusted dentist or electrician you can find a great one in seconds next door is a secure website where all members must verify that they live in the neighborhood you can be confident that your communications stay within a trusted environment designed just for you and your neighbors getting started is easy with just a few clicks you can get up and running with next door for your neighborhood as your neighbors join the website you build a stronger and safer neighborhood when neighbors start talking everyone benefits to get a next door website for your neighborhood go to nextdoor.com so so this is kind of um this is an example of a neighborhood where you can see the different parcels the colors that are in our red are in this neighborhood this is an example but the the neighbors the colors that are in red are people that have joined this neighborhood that's what we're hoping to get this is really geared towards we've got parcels about 600 parcels in each neighborhood some neighborhoods are a little bit larger um so we've kind of seen this as a communication tool but this is really the shabuigan city you can see all of the neighborhoods that have been mapped out there number of areas have been kind of put together to make them a little bit larger but the majority of them are neighborhoods that the police department has we've currently under the green have 13 neighborhoods on the north side that have launched that means that they've got at least 10 members in the neighborhood and they're communicating on a on a daily basis as a private networking 15 neighborhoods the ones in gold or yellow those are neighbors that there's a founding member and there's they don't have the 15 members yet but they're working on it and every day neighbors are inviting neighbors and they're continuing to build that to get to 10 neighbors to be able to be in the launch category and 28 under the red are unused that means there hasn't been really any interest in those areas and and I think you know I I'm we're willing to work Nancy Maring in our office is a new employee she's been working really hard on this and understands this and if you live in a south side neighborhood and you have an interest in this as you can see from the map there is not a lot of launched neighborhoods in that area so we would be willing to work with you in you know the south side area that obviously the north side area has really taken off we can see who's we can see the number of members that are in it we can't see who the participants are we know who the founding member of that neighborhood is and that's about all the information that the city sees we don't see anything on the private social networking that's happening that happens between neighbors but it's like I said another communication tool so tomorrow we're actually going to be announcing this partnership with next door and really opening this up this is kind of a precursor really opening this up to the entire community as a networking communication tool I've talked about it similar to Facebook but it's more about verifying your addresses to participate and you know like I said if you've got a if you live in a neighborhood and you're willing to come on and be part of it I we think it's another great tool to kind of communicate what's not going to take over neighborhood meetings but it's kind of that in between thing to keep talking about issues and things that might be happening within the neighborhood a lot of people ask well how this is free there's no cost to the city there's no cost to the resident and they ask how do they do it they their business plan is to work with local businesses on advertising just like a lot of other businesses do and bring on some local advertising as part of this as we move forward so well you can get to it off the city's website and then we're really just linked into nextdoor.com and they'll bring on the local advertising that's how they'll fund this so we just wanted to kind of give everybody a you know an update of where it is it's it's been really a initiative of the mayor as another communication between our neighborhoods and we'll be launching this probably tomorrow so if there's any questions i would be happy to answer the questions otherwise the mayor may have thank you Chad is there any questions for Chad right now all right well thank you for your attention are we all ready Sue okay David i think she needs some additional help right now i'd like to take this opportunity to welcome our new fire chief Mike Romus the city of Sheboygan welcomes Mike as its new fire chief chief Romus started his new position Monday February 24th Mike's the Milwaukee native native and has served in the Milwaukee fire department since 1983 where he has held a number of positions with progressive responsibilities including that of a firefighter heavy equipment operator lieutenant captain Italian chief deputy chief and assistant chief lifelong learner Mike holds an associate degree in fire technology a bachelor of science degrees in physical education health education and fire science management and also a master of business administration he's achieved the designation of executive fire officer from the national fire academy and fire chief officer with the center of public safety and excellence and then his long-standing member of local and national fire chiefs association Mike his wife Melanie will be relocating to Sheboygan his children Mike and Elise are both attending UW Madison and as a matter of fact his son Mike is a trumpet player in the UW band and in his spare time Mike enjoys having being active in the community attending festivals plays and concerts along with visiting local restaurants and entertaining friends and family he's enthusiastic and really ready to serve the citizens of Sheboygan please welcome Mike Romas I just want to let everyone know that I'm very excited my family we've already bought a house up here we're excited to be here I'm excited to work for the city of Sheboygan and for the citizens of the city and everything that I've been involved in I had a I started last week Monday unfortunate we had a fire death on Tuesday morning I came back for that it was very very unfortunate and our prayers and our thoughts go out to the family of that incident and I'm very proud to be the chief here and everything I've seen and heard from everybody just really bolsters that makes that true people I'm working with are unbelievable they work very hard they're very dedicated to the citizens in the city of Sheboygan and it's just an amazing place to be and I can't thank you for the opportunity can't thank you enough thank you while Mike's coming in the door and joining our team at Sheboygan we've got to say goodbye to some people have been with us for quite a while Karen Menzer would you please come forward Karen was hired at Mead Public Library in February of 1984 as a children's librarian she earned her master's degree in library science later that year in February of 2006 he was promoted to a manager of the youth services team in February of 2013 she became the interim library director for four months while the library board conducted their search for a new library director Karen has been voted at one time by her employees the best boss anyone could have she's one of the founding members of Sheboygan children's book festival and that's been her dream come true Karen's convinced many world-famous authors and illustrators to come to Sheboygan and collaborate with the John Michael Kohler Art Center Bookworm Gardens in the library the program attracts between four to five thousand people every year to Sheboygan for a weekend each fall the 2014 festival authors and illustrators that yet to be publicly announced but they include another CalDOT winner and we are amazed each year at the famous names that Karen comes up with to bring to Sheboygan in retirement Karen plans to continue volunteering her time to ensure the future generations have access to good literature and spend time more time with her family and her horses we look forward to seeing her regularly at Mead Library she continues to weed the juvenile nonfiction selection and offers her time to do special library programs like the make-and-take a model aircraft home on March 8th Karen's last day as an employee at Mead was on February 28th I have a certificate I'd like to read yeah a certificate of appreciation the city of Sheboygan is honored to present Karen Menzer this certificate in recognition of your 30 years of dedicated service to the city of Sheboygan and Mead Public Library thank you I just want to say that I have truly enjoyed my 30 years here at Mead Public Library and serving the citizens of Sheboygan thank you and another employee that we have to say goodbye to is Dale Kuhn Dale would you please come forward Dale started with the Department of Public Works in 1977 in 1978 he was promoted to laborer one in 1979 laborer two 1980 sanitation operator and in 2007 he started another position as special service driver and maintenance worker two until his retirement on March 3rd today Dale is a big fan of Jeff Dunham the famous ventriloquist and stand-up comedian all of Dunham's characters have been described as politically incorrect gratuitously insulting and ill-tempered Dale's favorite character is Ahmed and he's known for imitating Ahmed as he visits some of the city hall offices during his deliveries but Dale also brought many memorable moments to the employees at DPW during his 37 years of service and one of the most that his co-workers enjoyed was his habit to tell jokes almost daily basis Dale would have a new joke or humorous anecdote to share with his co-workers be it rain shine or snow he'd get almost everyone into a laugh or at least crack a smile before they all went on there and signed tasks for the day sometimes he may have told that joke many times through that day and some of us would hear it twice but you know that none of his co-workers minded because of his genuine desire to make them laugh now keep in mind that Dale handled the city's refuse five days a week for most of his career and he never lost his sense of humor now that's a real accomplishment Dale it's an honor to provide you with the certificate of appreciation on behalf of the department public works for working there for over 37 years of service to the city of Sheboygan and again the city of Sheboygan is honored to present Dale Kuhn with a certificate of appreciation and in recognition of your 37 years of dedicated service November of 1977 through March of 2014 Dale thank you very much first off i'd like to thank the city of Sheboygan for hiring me back in 1977 i'm glad i could continue my service with the city of Sheboygan for almost 37 years i'd also like to thank all my past and present co-workers and management people for their guidance leadership and friendship and i hope i can continue during my retirement and hoping to spend more time with my family and friends not that i'm retired thank you very much this last week had the privilege of attending the Sheboygan county champion celebration at blue harbor where Sheboygan county and the city of Sheboygan were a nominee for the working together award and the Sheboygan river cleanup i want to read a little description from the program after more than 30 years of discussion the cleanup and dredging of the Sheboygan river was completed in 2013 the city and county leaders and community stakeholders stepped up to gain support and financial backing to get the job done there were many challenges throughout the course of this dredging project but parties involved had incredible passion and commitment to see the job through the 100 million dollar collaborative effort will reduce health threats for people fish wildlife and enhance the economic development opportunities the river is now 10 feet deeper in some areas the success of this project will have a lasting effect on Sheboygan and Sheboygan county for many years on thursday as mayor i was proud to accept this award on behalf of the city of Sheboygan we have a great team here at the city and everyone played an important support role in this river cleanup the common council approved contracts and appropriated funds other departments were involved were city attorney's office finance purchasing dpw engineering redevelopment authority and planning department the coordination of this effort largely fell on the shoulders of our director of planning and development Chad Pellecek he was a rock star when he came to the daily coordination between the contractors and the city permitting issues and many other issues he also helped to coordinate open houses he was truly the go-to guy when any kind of coordination between the city and the contractors and their agencies arose he coordinated with all the affected neighbors and coordinated the use of 2d watering treatment facilities as well he worked with the military heritage museum to get office space for the contractors and to utilize the work site for them chad attended all the work group meetings coordinated all the other departments involvement for a successful project and i want to recognize him for the exceptional work that he did on the Sheboygan river project by presenting him with the award that the city received from the chamber of commerce chad will you please come forward thank you it's it's it's really a collaborative between the number of city departments all accepted on behalf of the planning department but it really was a huge project and i appreciate getting acknowledgement over this and i think you know going forward we're not done with that project we have some other issues to deal with one of them is beneficial use impairments that have been put on as part of it and matter of fact next week epa will be back in town to start trying to remove number one the restriction on dredging that hasn't been in place for 20 some years so the project continues but we're seeing some benefits of it in some interest in our river that we haven't in a long time and i think it's going to be good for the community moving forward so thank you okay next we have some hearings um yeah we can just read them all the first one is 2.1 i'm going to read all the hearings and then we'll allow anybody to speak on any one of the hearings they would like to 2.1 for the vacation and discontinuance of the remaining 40 feet of new york avenue the right away from west line of north water street to the east bank of the sheboygan river item 2.2 is to amend the zoning map for property at 1539 north 33rd place from ur urban residential to class so suburban office 2.3 is to amend the city zoning map for property located at 1712 north 17th street from nr 6 residential to uc urban commercial 2.4 is to amend the city zoning map for property located at 1704 north 17th street from nr 6 neighborhood residential to uc urban urban commercial and 2.5 is to amend the city zoning map for property located at 1714 cambridge avenue from ui urban industrial to uc urban commercial does anyone wish to speak on any of those hearings does anyone wish to speak on any of the hearings does anyone wish to speak on any of the hearings alderman hamman thank you uh move to close the hearings second move in the second to close the hearings will the clerk please call the roll 12 eyes motion passes next is our consent agenda items 3 1 through 3.1 2 alderman hamman thank you mr. mayor i move to accept and accept and file all all our o's accept and adopt all our c's and put all resolutions upon our passage second thank you for that motion and support the consent agenda is before us does anyone have anything they'd like to discuss seeing none will the clerk please call the roll and consent 12 eyes thank you motion passes next we'll go on to reports of officers that will include items 4.1 through 4.1 1 those would be referred alderman hamman thank you mr. mayor i would like to pull 4.4 for discussion and vote okay is there a second second then moved in second and to pull 4.4 for a separate discussion and vote under discussion thank you mr. mayor i would like to put i would like to pass this or put the resolution or excuse me what am i talking about here i would like to move that the arrow we put on file okay accepted in place done file thank you okay we have a motion in a second to discuss this now and put the arrow on file is there any discussion on the arrow alderman hamman thank you the reason we're pulling this is this is money that the city collects on behalf of the bid and they would like to get this as many of you know they're embarking on a master plan and need the funds to pay for some of the expenses that go along with it and we prefer not to wait a couple weeks to get it so this is just a pass through that we collect for them so thank you thank you for that discussion anyone else okay seeing none we'll call the roll 12 eyes motion passes and item 4.3 will be referred to strategic rather than finance but otherwise all the referrals will be as they are on your agenda under resolutions 5.1 is a resolution by alderman hamman authorizing moving the city of was shaboygan wards 22 and 23 for all future elections to good shepherd lutheran church at 1614 south 23rd street alderman hamman thank you miss mayor i'm going to put the resolution upon its passage second it's been moved and seconded to pass the resolution is there any discussion seeing none will the clerk please call the roll 12 eyes motion passes item 5.2 is a resolution by alderman van der wheel authorizing the city attorney to hire outside council to represent law and licensing in the council for a quasi-judicial hearing regarding the suspension slash revocation of taxi cab driver's license zero two three five and authorizing payment for said services alderman van der wheel thank you mr. mayor i move to suspend the rules suspension okay we'll do a voice vote all those in favor of suspension signify by saying aye opposed that passes under suspension move the resolution be put upon its passage second been moved and seconded to pass the resolution any discussion on the resolution seeing none will the clerk call the roll 12 eyes motion passes 5.3 is a resolution by alderman authorizing accepting the jurisdictional transfer of county road ls within the county highway system to become a local city street alderman heidemann thank you mayor could we take that with 6 1 yeah we'll hold that then till 6 1 thank you okay then we'll go on to 5 4 which is resolution by alderman boran bellinger pentaco herman authorizing entering into an agreement with the mid-lake softball organization ink for operation and management of the wildwood softball complex for the 2014 softball season alderman boran thank you mayor i ask for suspension of the rules please okay all those in favor of suspension please signify by saying aye opposed under suspension under suspension i would make a motion that the resolution be put upon its passage second is moved and seconded to put the resolution on its passage under discussion alderman hammond thank you mr mayor i just want to do point out a couple highlights of this that i think make it worthy of approval first off there's a clause in here that if possible 20 of this year's gross proceeds would come back to the city to be held for future improvements i think you know that's a good direction forward secondly it asks for a financial review of and that's submitted to the council i think that's kind of where we might have gotten off track a little bit also provides for two reps from the city on the board of directors of mls o and then secondly from the finance department asking for a fidelity bond for the treasurer i think that was a great idea by director amodeo to put that in so i think this is a good agreement and would encourage people to vote for it thank you thank you for that discussion any other discussion on the motion seeing none will the clerk please call the roll 12 i's and items 5.5 through 5.7 will be referred to various committees onto reports of committees uh 6.1 is an rc by public works recommending entering into an intergovernmental cooperative agreement between the city of shabuigan the town of shabuigan and shabuigan county for county road ls relocation and this will also include the previous item we talked about 5.3 alderman heidemann thank you mayor i i'm i'm gonna make a motion to suspend rules second all those in favor of suspension signify by saying i i i opposed motion passes under suspension okay i'd like to make a motion to accept and adopt the rc and pass both the res and also pass the resolution that has been moved and seconded to put the uh the motion before us is there any discussion on the motion see none please call the roll 12 i's next we'll go on to matters laid over item 7.1 is an r o number 231 of 1314 by the planning commission recommending amending the zoning map for property located at 1539 north 33rd place from ur urban residential to s o suburban office alderman hamlin thank you mr mayor i moved to accept and file and put their ordinance promise passage second thank you for that motion in support is there any discussion on the motion see none will the clerk please call the roll 12 i's motion passes item 7.2 is our own number 232 of 1314 by the city planning commission recommending approving the vacation and discontinuance of the remaining 40 feet of new york avenue right away from the west line of north water street to the east bank of the sheboygan river alderman hamlin thank you mr mayor i moved to accept and file and pass the resolution second thank you for that motion and support is there any discussion on that motion see none will the clerk call the roll 12 i's motion passes 7.3 is an r o number 250 of 1314 by the city planning commission recommending approving the change of zoning map of property located at 1714 cambridge avenue from ui urban industrial to uc urban commercial alderman hamlin thank you again mr mayor i moved to accept and file and put the ordinance upon his passage second thank you for that motion and support the motion is before us is there any discussion seeing none will the clerk please call the roll 12 i's motion passes item 7.4 is r o 251 of 1314 by the city planning commission recommending approving the change of zoning map of the property located at 1704 north 17th street from nr6 neighborhood residential one to uc urban commercial alderman hamlin thank you mr mayor i moved to accept and file and put the ordinance upon its passage second thank you for that motion and support is there any discussion see none will the clerk please call the roll 12 i's item 7.5 is r o 252 of 1314 by the city planning commission recommending approving the change to the zoning map of property located at 1712 north 17th street from nr6 neighborhood residential to uc urban commercial alderman hamlin thank you mr mayor i moved to accept and file and put the ordinance upon his passage second thank you for that motion and support that motion is before you for discussion seeing no discussion will the clerk please call the roll 12 i's motion passes item 7.6 is r c number 313 of 1314 by the salary and grievances committee recommending amending the municipal code is to add and delete various positions and the police department's table of organization alderman donahue thank you mayor i would move to excuse me accept adopt and put this ordinance upon its passage second thank you for that motion and support the ordinance is before us for discussion see no discussion will the clerk please call the roll 12 i's next we have a closed session on the agenda alderman hamlin oh i'm sorry we have other matters city attorney thank you your honor 81 is the resolution to authorize the transfer of appropriations in the 2014 budget that will be referred to the finance committee 8.2 is an r o by the city clerk submitting communication from attorney michael bower providing documentation regarding initiating proceedings to vacate and discontinue the west 33 feet of a public way in the town of shabuigan known as north 32nd street that will be referred to the city planning commission 8.3 is an r o by the city clerk submitting various license applications for the period ending june 30 2014 and june 30 2015 that will be referred to law and licensing and then alderman hamlin thank you mr mayor i moved to convene in closed session of the exemption contained in 1985 one e wisconsin statutes for the purpose of deliberating a proposed development project where competitive or bargaining reasons require a closed session second thank you for that motion and support the clerk will call the roll for closed session 12 i's motion passes we'll take a five-minute recess and reconvene at about 12 minutes to the hour


Hi, let me ask you an interesting question. Let's say that you have a path, for example, on a C drive folder, new folder. And let's put this path to the string path. What will be the result of printing our string path to the screen? Can you guess the result? You can pause this video and think about the solution of this question and later you can continue with playing of this video to find the solution. When I press enter, I will get the result that C and colon is on the first line and rest of our string without letter n is on the new line. So what's happened here? Here we have backslash and n in our path string and this backslash and n represents new line like you pressed enter. So here we will have after printing of our string, it will be printed C colon, this will be new line and in new line we are going to print the rest of our string. So how to fix this problem to avoid mistakes? You can avoid this problem by putting double backslash sign to your string here. So let's now try to print our path and as you can see you will get the returning result as path to your new folder. That's all in this lesson, thanks for watching, bye-bye.


What's going on, everyone? Sam here with Layton Sports Garden. Serpent 2020 Bowman Baseball HDA Jumbo. Four box break, number 15, random team style. So look again at your random results. As always, you can find those on the website, under the results tab, as well as the link and chat. Thank you all for your patience on this. Do appreciate it. Let's get it going. See another Bobby Whit Red. Pull another one. Very cool. It is DL Hall to 150. Bowman Scouts top 100. Blake Snell to 499. Ran first. But they can't play through the break and it's going to split even. So I'm going to be like, what are we doing? Like I'll hand them. It'll be like halfway through one of these and I'll hand them like a paper of like, Volpe and it'd be like, what am I doing with this again? Funny. That guy's trash. Yeah, there we go, Anthony. Bobby Whit, first. Chrome. Anthony, did you see your on the top 10 trash list this week for insinuating the sticks late at night? I wrote, I sorted one of Anthony's breaks a couple of Mondays ago and I wrote plus solid all caps on the bottom of the notes. He was dying at it. Like dude, that's awesome. Yeah, definitely put that one on the resume right there. The resume for the garbage can. Oh, got him. Cody Hose to 499. Let's do the top 10 trash. Should be at the end of the stream yesterday. I think like before, I think it was after the last break before personal started. This is Dia Sobel Arias to 299 on the white speckle auto. Nice one there. First auto of the break. You're done. Oh, you did it, baby. Jeremy Pena, paper first. John Diaz. Oh, I'll add you tomorrow, Jeremiah. Just remind me, shoot me like a DM on Instagram. There's base auto, Alvaro, Alvaro, Sejas, nice one there for the Cardinals. Alvaro. Poisson. So scary. Refractor, Taylor Tremel to 499. Earnings check. You're literally dog water. You're so free. Freeer than the sample at Costco.  Where you're going, you're lost. You're literally free. Freeing the sample at Costco. You're literally dog water. Earnings check. You have none, zero PR, zero earned. You're such a bot, it's so funny. That's really funny. I'm gonna start doing that to everybody now. Jordan Alvarez, forgot about that. Thank you. Thank you for reminding me there, Spencer. I'm gonna start saying that to people now. Every time I ban someone, where you're going, you're lost, you're literally free. Free the sample at Costco, you're literally dog water. Jarar and Carnacion to 125. I'll show you in between, because I don't know, you probably swear it's in it. I'll show you in between when we get personal. It's purple. Jeremy Pena to 250. There we go, Astros. Houston, Dave M. Let's go Dave, congrats, buddy. Big Dave, congrats, bud. That's awesome. That's freaking really cool. Got that into a mag for you, my friend. Jason Dominguez, paper first. Anthony Volpe. Sounds about right, to be honest, Spencer. Sounds about right. It's probably so hard to play with Chris because he has a PC. He just gets smoked every time. Oh, yeah. PC kids, it's unreal, dude. The aim, dude, you literally just get lasered every time. Robert. What's up? Pretty much, where you going? You're lost, you're literally free. For counsel, though, can't you make cross play disabled? Yeah, you could, but I mean, in order to party up with Chris, you can't, because he's always easy. I know in that situation, it's different, but if you don't have friends, you can still play with Chris. I guess, theoretically, yeah. Like if I played solos, I would throw that on. White speckle, James Beard to 299 for the White Sox. Nice first thought over there. Fuzzy, I'll probably just be calling everything strikes. Alright, let's get me out of here. Alright, poor girl, dude. She hates man, that's mean, bro. I mean the cameraman, that's mean. It's kind of like. Televising that, geez. Ruthless. Oh, they went back to her.  Chill out. My God, this game is over, 25 to one. Really? Seriously? What are we doing here? Purple, Gus Varland, 250. If you could score a single point in the NFL, kind of like an NFL game. Yeah, right. Seven hits. Angels, 28. Blue, Gunnar Henderson, 150. There you go, Oryx. True blue, Jacob Amaya. Nice one there for the Dodgers, the 150. Graz LA, Lubab. That's a gold Yordon rookie, nice. Eight of 50, congrats. Astros, Astros killing it right now, man. Nice one there. Bobby Witt, paper first. Robert Poisson. Ah, kitty. This is my box for you to be like, ah. Yordon rookie. Robert Poisson. Was it another Poisson or what? It was, yeah. Paper Poisson. Pack-to-pack-packs. 2020 Bowman just roots for chaos. Next one I'm gonna yawn. Philip Clark, nice one there for the Blue Jays. Grats on that there, Toronto. It's okay Anthony, I'm getting used to it. Donny knows what he signed up for over there at this point. I didn't sign up for anything. I got signed up by people above me. Not all dear for this. He's dead, he doesn't want you to know that. I hope so. Stop, stop it. Two packs to go in box two. That's hot. Here's a Jose Berrios to 4.99 for the twins still. I hope you're ready, bless you. Jeremy Pena, paper first. Sky Blue to 4.99, Zach Thompson. Right, box two done and in the past. Nothing but a memory here. What, box two? Yeah, sorry. Just, I wasn't ready. As refractor, Grant Levine to 4.99 for the Rockins. Pumped to see the luminance updates and chronicles on Wednesday. Oh my God, the Reds lost the game, also yes. Oh wow, that's just kind of big news. Right? Yeah, also yes. Luis Patino, nice one there too, 4.99 for the Padres. Actually pretty solid, needs up in the digs. Does that product, does that come out for retail on the same day? Robert Pusson, either same day or like same week, usually. Grant, stop it all right. Get me a blaster or two. Oh yeah. Go crazy. You gonna get a hobby this year of it, do you think? Depending on price, I guess. Maybe. That is it, Domingo's first paper. As Lane says why. Because I like it, Lane. Leave me alone. I want my auto, I don't get retail. Leave me alone. While we have possible luminance, what a one. Aaron Ashby, past the deal. Nine packs and we'll lose, there's a sale in Cisco. San Francisco, like everyone's talking out about the Reds, yeah, but they won like nine straight at one point. The same time the Reds were on their streak. Volpe first paper. Blue is Brady McConnell to 150, dude. One of my college roommates was notorious for doing that. Like there'd be like a deep fly out and he'd be like, oh my God.  Oh yeah, I saw Ellie hit for the cycle. Ooh, goal 50. Orioles, congrats on that. Chris D, let's go Chris. Congrats, buddy, that's awesome. Adley on card, of course not a first, but still nasty. Adley, it's an early Adley right there too. What second year I want to say? That's okay, Jay. Jared Naran first. All right, last couple of packs here in box three, then that'll soon be a memory too, Donnie. Oh no, what if your brain works like in a computer in the sense of like every time you had like a memory, it was like a certain size and you had to like delete a memory that it replaced a new one. I'm fine with that. Oscar Gonzalez first, nice one there for the guardians. Six through eighth grade, gone. Bobby Whit Jr. first paper. Robert Poisson, Miguel Vargas the 299, first for the Dodgers and base. A lot of Poissons tonight. Last box at 2020 Bowman, pretty solid break overall. Gold Adley, Perpapena, I'm in on those things for sure. I'm not reacting to any more Poissons until I have the top of them. Is he coming too much? Coming, yeah, much of a burden at this point. Dominguez first paper, Pena first paper, a Whit first chrome. I know, we do need a confinant as well. See the same product, right? No, he's in 22 Bowman's phone. He's in Bowman's past too though. Those are the only two he's been in so far. Base auto, Ezekiel Duran, nice for the Yanks. That's on that Yanks. What's he now? Rangers I think. Will be first paper for the Yanks. Light Lewis's Patino, yeah, yeah, it's gorgeous with the inscribed number. Think so, Patino or Patino. He's up too, I don't know where he is, but I don't know he's up for sure. I still be on the Padres, actually. Like in the Bigs, in the majors. Purple, Sixtho Sanchez, the 250. Alex Thomas, base, base, base, and base. Refractor, Ford Proctor to 499 for the Rays. Nice one there, Tampa. McNeil hidden gems and Hunter Bishop, Barland. Yellow, Joey Bart to 75, the Giants. Hold one off first of Elliott in that actually. And one of the real youth next year, yeah, yellow base. Base chrome, it's pretty solid actually, I'm like. Pobby Whit, first paper. Robert Poisson, it's Barland, first chrome. Blue Rookie Otto, Eson Diaz, nice one there too, 150 on the true blue for the Marlins. Basie Mice, and Durand Chrome and base. All right guys, quick recap here. Base autos, Ezekiel Durand, Oscar Gonzalez, Philip Clark, Alvaro Sejas, Ford Proctor 499, Luis Patino as well, it's 299, James Beard, and Diaz Bell Arias. Blues to 150, Eson Diaz, Jacob Amaya, and a gold Adley-Ruchman, 41 to 50 for the Orioles, and a purple Jeremy Pena first, the 250 for the Astros. Do it for the break guys, thanks again for the fill. Up next, personal.


Hello and welcome to the session. In this session, we are going to discuss the following question and the question says that Find a valid conclusion from the given statements. If you buy a car then you can go for a vacation. If you go for a vacation then you will explore new places. In this question, we are given two statements. First, if you buy a car then you can go for a vacation. Second, if you go for a vacation then you will explore new places. If we see the first statement that is if you buy a car then you can go for a vacation. It is in the if P then Q form. So from here we can identify P and Q. Here P is you buy a car and Q is you can go for a vacation. Now if we see the second statement which is if you go for a vacation then you will explore new places. It is also in the if then form. On comparing it with the first statement it is in if Q then R form. So here R is you will explore new places. Thus we see that it is an argument consisting of three statements P, Q and R. So here premise one is if you buy a car then you can go for a vacation. And premise two is if you go for a vacation then you can explore new places. Using law of syllogism it is represented in the following way. Premise one is if P then Q. Premise two is if Q then R. Therefore the conclusion is if P then R. The conclusion drawn will be if you buy a car then you can explore new places. This is the required answer. This completes our session. Hope you enjoyed the session.


inside of our page objects. And we can't pre-allocate objects to describe the page. And even if we could, we wouldn't want to because we could have 1,000 items in our list. And who wants to spend time waiting for 1,000 items to be pre-allocated when we're probably only going to look at one or two of them, right? What we're really looking for is an easy way to access items in the list. And we can do that two ways. We can either access items in the list sequentially, or we can do a search and look for items in non-sequential manner. So before we can talk about how to build a page object for a list, we should first investigate how do we use lists. So lists tend to have some kind of metadata around them. And this metadata helps users understand how it helps users interpret the information that is in the list. So metadata includes things like how many items are in the list, or what are the headers for the list. Also, lists tend to provide back to the user a common structure. So the items in the list are usually structured very similarly. We don't have lots of different types of items being returned back. They all pretty much look the same. They have the same fields within them. And there's a countable number of items. So we don't get an infinite number of items back. We can count them and we can iterate through them. Generally, we like to be able to read the information in a list that makes it easier if we're trying to find a particular value or a particular item in the list. We can read items in the list. And lastly, we like to be able to interact with the items in the list. So what I mean by interact with them, list items are just summaries of results that are provided back to the user. And usually, there might be a link or something in that list item. And if we click on that link, we can get more detail about the item that's being summarized in the list. So I'd like to introduce to you a pattern called the item list pattern. And it encourages users to think about the problem of building page objects for lists of items using two participant classes, a container class and an item class. So in this pattern, we use the iterator pattern to help enumerate items. We use something called template locators. And then we also use another design pattern called the factory method pattern. So we'll start off by looking at what is a container. So the container class has two main responsibilities. The first responsibility is that it provides access to the list metadata. So these are things like how many items are in the list. The second responsibility of the container class is that it gives us access to items in the list. It doesn't tell us anything about particular items in the list, it just lets us have access to a particular item. The item class, on the other hand, represents a single item in the list. So if you're looking, if you want to query the item, you would get an item class object and you can ask that item, what is your value? And it would also be nice if that item class could be switched to represent another item in the list without creating a new object. Because that way we can quickly go through the list. So what we'll describe is an abstract container class and an abstract item class. And then from the container in the item class, we'll create two concrete classes that actually implement a list. So the container class, as I mentioned before, has two main goals or responsibilities. The first responsibility is that it allows the user to access list metadata. So one of my favorite questions to ask a container is, how many items do you think are in the list? Usually on the website there's a little part, maybe above the list or maybe below the list, where it actually lists the number of items in the list. And so if you compare those two, they're not always the same. And that's a good sign that you have trouble. Second responsibility of the container class is to provide access to items in the list. And there's two ways we can provide access to items in a list. The first way is we can provide sequential access to items by providing an iterator. I think everybody's pretty familiar with the iterator pattern, but we'll go over it just for those who are not. So iterators allow users to get sequential access to elements in a collection of items without having to know anything about the structure of the element or the structure of the collection. So a lot of languages actually provide a way to create iterators in them. In Python, you can use the iterator protocol. The iterator protocol in Python just asks that you create a method called iter. And that returns back what is referred to as an iterable object. In Python, an iterable object just means that you have a method called next. And every time you call the next method, it returns back to you the next element in the collection. In our implementation here, we keep track of the current item. And every time we call next, we increment the current item by one. And then we do a search to retrieve that item in the list. And then when we're finished iterating through the list, we raise a stop iteration exception. Question? This is, I guess, the iterator will not provide you with a random search, but we will talk about different ways that you can, I guess, pseudo-randomly search through the list. So the next topic is non-sequential access to the list. And by non-sequential, I mean that we can search for items by position, where we can say give me the fifth element in the list. And so this serves to your question about random access to items in the list. Say again. No, but that is something that you can implement in the pattern. So the pattern is kind of general, so you can add in your own methods for searching for items. And so being able to search for items by some kind of string, it's kind of touching on the next topic, which is searching by property. So we can say that an item has some kind of value, and we want to search for items that match a certain property, match a value with a property. So along the way, in this container class, we never actually talk about, in this abstract container class, we never actually talk about what the item looks like. We only describe, we only say that there is an item object out there, and the container is just responsible for returning that item object. And the reason we do this is because the item that's going to be returned is really specific to the container that is specific to the implementation of the container class. What I mean by that is that if we're searching on eBay in an eBay list or an eBay container, then we're going to want to return back an item that is an eBay list item. If we're searching on Amazon and we get back lists of items, we want to return back an Amazon list item. And the same goes for the HubZero websites where I work. We search for support tickets or resources. We return back a list that matches the container. And so when we have this kind of situation where we can't describe the actual object that we want to create inside of our abstract class, we should start thinking about using the factory method pattern. So the factory method pattern describes a way where we can define an interface for creating objects without actually defining which class is going to be instantiated. We leave that up to the subclasses of our abstract class. So for example, in our abstract container object, all we can do is define that there is an item class and that that item class takes some arguments. And then in our getItemByPosition function, or our factory method, we actually instantiate whatever the item class is, if you leave it blank and it ends up being none, then you get a none object. But whatever that item class is, we instantiate that with a set of arguments that were provided to us by the subclass of our container. And we also give it an item number. So what this means for the implementation is that inside of our concrete class, in this example, tools list class, we have to set the value for an item class. We have to describe what kind of item we want returned back to the user. And in this case, we're going to return back a tools item object. And the tools item object is just a subclass of the regular item class. So we kind of covered the container, how a container works. Let's move on to talk about how an item object works. So if you remember in the beginning, we had four things that we wanted our item object to be able to do. The first thing we wanted the item object to be able to do was represent a single item in the list. And we can achieve this by just associating some kind of numeric value with our item object. Next, we wanted item objects to be able to be updated dynamically. And so this is where we start to run into a little bit of trouble. Inside of our page object, we're used to sending locators that are hard-coded. So we may have a whole dictionary of locators, and we hard-code each string in here. If we wanted to refer to the first item in this list, we would hard-code a one into our locators. And if we wanted to refer to the second item in the list, we would hard-code a two into our locators. The problem is that this doesn't match up with what we wanted in the beginning. We wanted not to have to create an object for every item in the list. That makes our automation script slow. What we really be interested in is if we can somehow figure out a way to just put an n value in here. And then later on, we can substitute in a value of our choice that is linked to which item in the list we want to represent. So that's the idea behind a concept called template locators. I first learned about template locators from developer Adam Goucher of element34.ca. And he had a video online where he described that you can hand your page object a string with a template inside of it as the locator. Now, of course, this is an invalid locator, right? But whenever you want to use your locator, all you have to do is format that string with the values that you're interested in putting in there. And then you get a valid locator. So we can apply this to our item object. Instead of passing in a locator dictionary with hard-coded locators in there, what we really want to do is pass in a template, a dictionary of locator templates. And then any time we want to update which item our object points to, we can call this update item number. We give it an item number. And then that item number is substituted into the templates, our locator templates. And we get new locators that represent our object. The next two parts cannot be implemented inside of our abstract item class because they're specific to the type of object that we're creating. The third requirement we had for our item objects was that we wanted our item objects to have some kind of value. So our usual interface for doing things, if we have a checkbox on a web page, then we would call the find element by ID or whatever your locator style is. And then we would ask, if we wanted to get the value of that HTML element, then we would ask, is it selected or if it's text box, we would ask for the text or something like that. And instead of doing that, we should be thinking about using page objects that are a little bit lower level. So if you have a checkbox on a page, then you should create a page object that represents the text box and then knows how to set and get the value of that text box or checkbox or whatever. So similarly, if we wanted to set the value, we could use an accessor function or a property to set the value of our checkbox. This same idea applies to items in a list. So in the previous case, we were working with very simple page object that represented a checkbox. But if you have an item in a list, you may have an aggregate of page objects. And so we would still like to be able to say, what is the value of this list item? And the easiest way for me to think about the value of the list item is just to summarize all of the pieces of the list, all the readable data within the list in a dictionary and call those properties of that list item. So what we have here is a function. We call value. It's just a simple getter function. And we fill it with the different elements that are inside of our list item. So in a tools item list item, we may have a title, some details, and an alias that all represent properties of the tool that is being represented by that list item. And we can just go ahead and grab the values of, so for links, we just want the link text. And for details, details is a text, probably like a read only text field or something. And we'll just get the value of that text field. So this kind of function is actually used when we do searching, if we search by property, we would be able to say we want a list item where the title is equal to x. Or if you say it starts with this, then if it starts with a particular letter, you can say your title, you could write a function that says your title starts with this particular letter. So I'm a big advocate of nearly all page objects being able to say this is my value or having a setter function to say set this as my value, because it really makes your automation scripts easier to use. The last piece for the item class is that we want to be able to interact with the item. And this is only natural. I mean, this is the reason why we build page objects. Page objects represent a piece of a web page, and it provides access to the services of that web page. So if we have links on our web page, it's only natural for us to want to actually click on those links or go somewhere. So we can provide little helper functions in order to expose the service of clicking on that link. So that's the basics of the item list pattern. Of course, the original problem that we were trying to solve was that we don't know how many items actually come back in a list. And we were able to solve that by one, not hard coding our locators, use the locator templates. Two, don't pre-allocate your elements. Use something like the factory method pattern to allow you to get elements on demand. Three, we wanted easy access to the elements in our list. And so we allowed objects to be updateable. So the last two, we wanted to be able to access items in the list, so we provided an iterator for sequential access, and then we also provided some search functions for non-sequential access. So another area where I found difficulties with building page objects is iframes. So in iframes, I guess we'll start off with the motivation, which is on the Hub Zero websites, we ask users to upload data and contribute resources to our website. That's the only way our websites can continue to grow is if we have user participation. And part of the process of uploading a resource, we ask the users to describe the type of resource that they're uploading. And so this is a field from the web form where we ask the user to describe what resource they're actually uploading. And this particular one is just a simple text area field. It was very easy for me to write a page object for it, and I was happy when I got it done like five minutes later. All right, so recently our web developers started adding a more complicated field in order to allow people to upload or describe the resources that they're uploading. This is using a CK editor. For those of you familiar with CK editor, it actually runs inside of an iframe. And I thought that when I first saw this, I said, hey, this is wonderful because it allows our users to add rich text to their descriptions. And then when I started looking deeper into it, our users realized, oh, man, this thing's running in an iframe. So the least amount of work I'm going to have to do is to build another page object to deal with getting into the iframe and manipulating this widget. But then I realized that once I was inside the iframe, I could use the same page object as I was using before in my text area. And so that started getting me thinking, do I really have to build another page object if I already have one that works, except for the fact that I need to be inside of an iframe? So before we tackle that question, let's just review how iframes work. This is a web page that has two different iframes and three different input fields. The HTML for this web page is listed down here. And you can see that it has two items in this HTML page. The first item is an input field, i0. And it is located in something that we consider, we call the default context. This is where we work all the time when we're in Selenium. We're working inside the default context. We're not inside of any frames. Everything is good when you're searching for elements. The next item in this web page is an iframe. And the iframe is called frame one. And it sources this HTML page, innerpage.html. And the basic way iframes work is that they just refer to another HTML page. And then they load that up into a frame. So if we take a look at innerpage.html, we see that it too has two items in it. So it has an input field, i1. And i1 is considered to be inside of the frame one context. So that means that in order to work with it, we have to actually traverse an iframe in order to get into it. The other element inside of this web page is another iframe. Who does two iframes embedded within each other? I've seen it on some of our websites. So it has another iframe. Its ID is frame two. And it sources a web page called another page.html. So if we look inside the source of that, we see that there is an input field in there. And it is within the frame two context. Don't forget, frame two context is within the frame one context. So we have quite a conundrum here. We have to figure out how to operate this i2 object through all of these iframes. So if we wanted to build a page object for i0, very simple. We probably have a couple of getter and setter functions. I like to use the function value for my getter and setter function. So then I could just say element.value and get it or set it. We might also have another function for appending. And the append function does everything. It just writes values to the item. It doesn't clear it out or anything. So sometimes that's convenient. All right. Nothing special about building a page object for i0. Don't have to switch any context. When we get into working with the i1 object, we can use a text input object. But we're going to call it text one frame. So this is a page object that gets us into one frame. One iframe. And you'll see here that there's a little bit of extra code added here. So the first thing we do is we find the frame one element inside of our HTML DOM. And then we call switchToFrame. So we have to traverse the frame in order to get into the right context. And then we can operate. We can run our same three functions, find the element, clear it, send keys. That's kind of our core setter function. And then the last thing we want to do is switch back to the default context. Because if you don't switch back to the default context, then everything you search for afterwards is going to fail, unless it's also within the frame one context. So we actually have to do this for all of our functions, and I didn't have enough room on my slides to write all of this out. So I just put dot, dot, dot here. And you can imagine what the other functions look like. All right. Onto object i2, which I remind you is in two different iframes. So if we look at our setter method, we first traverse frame one, same way we did for the i1 object. But then we do it again. We traverse frame two. And then we run our core actions. And then we switch back to the default content. So we could go on and on with this, if you have three frames, four frames. Nobody wants to build page objects where all they're doing is copying the original page objects and then keep adding in all of these iframes. That's not the way I like to spend my Saturday afternoon. So just to summarize, when you're dealing with iframes, you have to enter and exit the context before you work with the item. And then you have to exit the context afterwards. If you have page objects, you probably have to manipulate all the methods in your page objects. And the question still remains, do we have to create new page objects, really? I mean, what we're really interested in doing is having a simple function that works when there's no iframes and performs the core actions. And then if we come across the same page objects within an iframe, we just want to wrap that one simple core function with some code that will enter the iframe, run the function, and then exit the iframe. And if we have to do it twice, we just wrap it again. So we enter the first frame, we then enter the second frame, we run our core actions, we exit the second frame, then exit the first frame. That's what we're really interested in. And that's the idea behind the iframe wrap design pattern. So the iframe wrap design pattern allows us to use old page objects. We're getting some code reuse out of this. It allows us to use our old page objects inside of iframe just by simply wrapping all the methods. Oh, by the way, it uses the decorator design pattern in order to accomplish this. So anybody not familiar with the decorator design pattern, the main goal is to attach additional responsibility onto an object, usually dynamically, and without changing the interface of that object. So we usually see this being applied at runtime. This is not something you tend to do before you build your object. The main advantage of doing something like the decorator pattern is that you can change a single object. You don't have to change the class where it will actually change all of the objects of that class. You can work with a single object and just change that one object. So if we had an object, little a, and it instantiated the class big a, and it has an attribute called f that points to some kind of function. If we wanted to wrap this page object, or this, I guess it's just an object, we want to wrap this object. What we would do is we would first build some kind of wrapper function, and we would break the connection between our attribute f and the function object, and then reassociate our attribute f with the wrapper function, and let the wrapper function call our original function. So it's a little bit of software wizardry going on here. We can apply this to our text page object. So similarly, we have a page object that represents the I1 object, the first input in the frame one context. If it has a value attribute that points to a function, what we can do is create a wrapper function around that that will eventually call our function. And this wrapper function takes care of getting into I frame context and exiting the I frame context. And then we kill the association between our value attribute and our function, and replace it with an association between our value attribute and our wrapper function. So how do you create decorated page objects? The first thing you have to do is you call a function something like I frame wrap. And the I frame wrap function takes in two parameters. The first parameter is the object that you are interested in wrapping. And the second parameter is just a list of frames that you have to go through before you actually get into where you can operate with the page object. So for our I0 object, we don't have any frames, so we don't need to wrap it. For our I1 object, we want to create a page object called text. And we have to traverse one frame in order to work with that page object. And for I2, we create an object, a text object, and we have to create two frames. So first, we have to traverse the I1 frame, and then second, we have to traverse the frame too. So within the I frame wrap method, it instantiates an object called I frame tracker. And the main purpose of I frame tracker is just to help us with getting into and out of I frame. There are two functions in here that are pretty interesting. The first function is a method called wrap callable attributes. So the purpose of wrap callable attributes is to figure out which attributes inside of our page object are actually callable or methods. And then it wraps those attributes. So inside of Python, there's actually a lot of attributes inside of your object. And some of them are data members. Some of them are callable attributes or functions. So it accepts a page object as its O parameter here. And then it just goes through the class, looks for callable attributes. And then once it finds one, it calls this other method called wrap attribute. So the wrap attribute method performs the actual wrapping. It creates a wrapper function. So the first thing it does is it switches into the appropriate I frame context. We've actually calculated which frame level we should be in up above. And then it calls your method, your original method. And then it switches back out of your I frame context. So you can already see that this is very similar to the code that we had to write manually when we were building page objects to represent objects inside of I frames. All right, lastly, let me note one more thing, this wrap attribute method actually returns the wrapper function. And so once we get that wrapper function back, we can start messing around with where this value attribute actually points to. We set the value attribute to point to our wrapper function and not our original function. Our original function will be called by our wrapper function. So now, how do you use an I frame wrapped object? Well, the answer is that you use it the exact same way you use a non-I frame wrapped object. So the decorator pattern describes the way that we can decorate methods of an object without changing its interface. So the way that we operate within the same way that we would ask for the value of an I zero or the input field that is in the default context just by asking for its value is the same way that we would ask for the value of a page object that has been wrapped inside of, that has been wrapped by I frames. So when you call these methods, the value method on objects I one and I two, the code automatically, because we've wrapped these methods with code to get into and out of the I frame, it automatically traverses the I frames and then grabs the value and then returns you back to the default context. So the same thing happens with your setter functions. You can set a value. It will go through, traverse the I frames, set the value of the underlying HTML element, and then return you back to the default context. So just to summarize, the I frame wrapped pattern. I frame wrapped pattern lets you take a page object that represents an HTML element and use it whether it is, I guess, it allows you to use the same object that you would have used outside of an I frame. You can just wrap the attributes and use it inside of your I frame. Also, it uses the decorator pattern in order to accomplish all the wrapping. So one more thing about I frames, there are actually a couple of gotchas. So no pattern is complete without gotchas. So the first gotcha is that not all your page objects attributes need to be wrapped. Things like your constructor don't have to wrap it. So you should keep a list. If you're going to use this pattern, you should keep a list of what attributes don't have to be wrapped. The majority of them may have to be wrapped, but you don't want to wrap methods that don't have to be wrapped because your code will stop working. The second thing is that in Python, if you have properties, properties are just accessors, getter, setter, delete kind of thing, functions. If you have properties, it's tricky to wrap them because in Python, the properties are associated with the class object and not with the instance of the class. So that means that if you want to wrap a property in Python, you have to first create a new class that's a copy of your original class. And then you wrap the properties of your new class and then you associate your new class with your page object. So it gets a little tricky when you're dealing with properties. I found that one out the hard way, so pro tip. So if you're interested in learning more about design patterns, there's an excellent book out there called Design Patterns. It's written by a group of guys called the Gang of Four. I think it's Gamma as the first author, and they usually just call it Gamma et al. There's two websites that I use a lot when I'm interested in learning about design patterns, oodesign.com and sourcemaking.com. And then I guess I'd like to give a special thanks to my team members back at Purdue University who have supported me as I've kind of come up with these different ways of building page objects. And my advisor in the School of Electrical and Computer Engineering, Sam Midkiff, who has also helped me kind of flesh out these different design patterns. So there's one design pattern we didn't get to talk about, and I feel like we're going to run out of time if we actually get into it. It's called the web form pattern. And it takes some of the ideas from these other patterns, but it really promotes a way of filling out web forms where instead of actually, let me see if we can get to some of the slides, the good slide, instead of building page objects for a web form where you hand values where you have a function like submit ticket. This is, by the way, a form for a support ticket. And you can fill out this form. When we build a page object, sometimes I see people with a method called submit ticket. And then you enter in all of the values you want in the form. You just put them as parameters. And instead of doing this type of interface, I try to promote an interface where you just shove all of your inputs to your form into a dictionary and hand it to a function like populate form. And populate form takes care of parsing the dictionary, figuring out that these are actually fields in your page. And these are the values that you want put into the page.  So I'll be around after if you guys want to talk about that. Right now I want to open the floor up to questions that people have regarding the other two design patterns. Go ahead. Yeah, so the question was, are there any suggestions for how to create objects dynamically in other languages like Java? I'm not very familiar with Java. My feeling is that because Python and Java are kind of similar in their object orientedness, that a lot of these design patterns will actually translate over to Java. So I believe a lot of these design patterns were first explained in either small talk or C++. And so I can't speak to the specifics of how to dynamically create objects in Java. My guess is that there would be some kind of way, we were talking about the item list pattern, we were talking about dynamically creating our objects. So my guess is that there would be some kind of way to say that you have a class and just keep the name of the class and then instantiate that without physically writing out the name of the class by storing that name in a variable or a reference to the object that represents that class. OK. OK. So I'll have to look up reflection too because I saw that when I was reading about design patterns, I saw the word reflection. I wasn't really familiar with all the details around it. So I'll have to look that up as well. Other questions? Well, if you guys ever want to get in contact with me, the email is telldsk, if you have anything to tell me, telldsk at gmail. And I'll be roaming around here and you guys can come up and ask questions or whatever. Yeah, let's go, maybe it's quicker to do this. Oh, there we go. Telldsk at gmail.com. All right, thank you for your time.