The bathrooms are located on the right for men and left for the women. Take a minute now to turn off or silence your cell phones. We ask to be respectful to one another. Clapping to recognize your leaders and guests is appropriate. We will clap for our candidates only if they commit to support our agenda. Remember, we never boo. We're here today with a set agenda based on hundreds of conversations and house meetings throughout our congregations and our communities. We have a select group of candidates. This is not an open forum. This is our issues agenda. Our citizens and working families need help in repairing their homes. Leaky roofs, foundation issues and electrical problems disqualify many families from weatherization programs and leaves them vulnerable to gentrification pressures. We're going to occupy rehabilitation funds to make those repairs, to increase the federal CDBG home funds allocation to rehab to 4.9 million a year. Can I ask that you please pay attention? Thank you. And to appropriate half of roughly 3 million in the Housing Trust Public Facility Corporation for this project. Families with undocumented parents are facing problems because they don't have a U.S. ID. They are denied birth certificates for their U.S. born children and they are afraid to call the police to report crimes because they cannot identify themselves. We asked the city to create and issue a city identification card. When immigrants are deported, their U.S. citizen children are left vulnerable. We asked the city to support a legal defense fund to help these children and make sure that they have their legal protection they deserve. To make San Antonio a living wage city. Thanks to our work, city workers now start at a minimum of $13.75 an hour. The next step is to make it $14.75 an hour. However, outsourced workers make as little as $7.25 an hour. We must require contractors to pay no less than $9.50 an hour matching the county's policy. Our tax dollars should not go towards poverty wages for those employees. Project Quest is now a line item on our city budget. Again, thanks to the work of COPS Metro and the support of the city council. A recent study found that Project Quest is the only workforce development program that is proven to lift people out of poverty and move them into the middle class. We asked the city to increase its investment from $2 million to $2.5 million a year to take us from a low wage to a living wage city. Delegates and guests, this is our agenda for today. Here's for today's meeting. We call this meeting to order. Good afternoon and welcome to the COPS Metro accountability session with candidates for mayor and city council. My name is Melissa Seesack and I am a leader with the congregation of Divine Providence. And I will be co-chairing the assembly today. My name is Esparada Rodriguez. I'm a leader with St. Timothy Catholic Church and COPS Metro. Let's start the assembly by seeing who is here. Good afternoon. Thank you. Good afternoon. My name is Sister Gabriella Lohan and I'm a leader with the Holy Spirit Sisters and member of COPS and Metro Alliance. Let us see who's here today. When we call the members' names, stand up and remain standing. Our Lady Walupe Church Westside. Project Quest Catholic Church. Congregation of Divine Providence. First Unitarian Universalist Church. St. Francis of Assisi Catholic Church. Daughters of charity. Our Lady of Walupe Alotes. Slow it down. Sacred Heart Catholic Church. St. Philip of Jesus Catholic Church. St. Margaret Mary Catholic Church. Holy Spirit Sisters. Air Common Catholic Church. St. Leo's Catholic Church. Congregation of Divine Providence. Holy Redeemer Catholic Church. San Alfonso Catholic Church. The American Federation of Teachers. San Antonio Progressive Alliance. Macedonia Baptist Church. St. Timothy Sisters. San Antonio Alliance for Teachers. We also have several guest delegations. Our Lady of Good Shepherd. St. Henry, Bills of South Sand. Spaterian. MacArthur Park Lutheran. University Presbyterian. Everybody, especially our new guest delegations. Congratulations to all of us. Feed us in an opening prayer. Delegations. Okay St. Bonaventure was not recognized. Give them a hand. Able heard first stature for Social Action. San Antonio. Alright, Father Jimmy Dranan. Pastor of St. Margaret Mary's Catholic Church to lead us in an opening prayer. Let us bow our heads. Loving God, creator of our world and author of our life. We thank you for the opportunity to gather this day. Te damos gracias por este día y la oportunidad de unir por las causas de nuestra comunidad. Lord our God, we pray your blessing upon us for we come to you in Thanksgiving for inspiring us to unite our voices and to join our communities for the needs of all in the city of San Antonio. Lord, we pray that you inspire those seeking public office to listen. To listen to their constituents, to the people gathered here today and to remember that in their future they should seek not their own will but the will of the people. Lord our God, may we be united in all that we do. Allow the energy that is created this day to help transform the city of San Antonio and more than anything the lives of all of its citizenry. From the north to the south, the east to the west, every member of our community. This we ask in your holy name, you who live and reign forever and ever. From our Lady of Guadalupe to tell us. Good afternoon. Can you hear me alright? This is the brothers. Are you here to get some work done today? I gotta tell you this is a unique gathering of leaders from all over San Antonio. These community leaders, these voters from all over San Antonio representing COPSA Metro member institutions and guest delegations. This is unique. See normally when political candidates during election season get together what they're doing is they're sharing their vision for our communities. They share their vision and maybe they even get together and they do some debating over it. What makes this gathering unique is that this is a chance for you and I to share our vision for our communities with our candidates. And this is our chance to hear from them about where they stand on our priorities. Amen? Not everybody likes COPSA Metro's method of inviting our candidates here and then inviting them to say yes or no on our specific priorities. I hear some people say that that ain't proper or that's not polite. I'm not here to be polite. We're not here to be polite. We're here to be honest, right? And we're here to get some work done. There's too much at stake for us. There's too much at stake. And so I ask, our response to this is how else do we get to make a judgment on the candidates who will best represent our community's interest? Are we going to decide on our candidates based on who makes the best speeches? No! Are we going to decide on our candidates based on who's the strongest debater among them? No! Of course not. Or how about the fanciest website? Are we in our vote? No! Or how about the cleverest Twitter tweet? No! I don't think so. We're going to make our decisions as voters based on where they stand on the issues that we care most about. And we prefer to get a straight answer. Yes or no. And that's it. Now fortunately, most candidates do indeed prefer to be face-to-face with their voters. Most candidates do indeed prefer to have this sort of intimate interaction. And we appreciate their willingness to be here with us. And for over 40 years, sisters and brothers, for over 40 years, candidates here in San Antonio have participated in this tradition of gathering here with us, with our member institutions, and these guest institutions, to share where they are in terms of our priority. This is a part of the culture of San Antonio and I think that our political process is stronger for it. But let's be clear about one thing. This tradition of ours is only going to stay alive.  This ain't it. We got a lot of work to do ahead of us between now and May 6th. So we got to commit to that.   My friends, this afternoon we are here to get your commitments on these issues. So thank you for being here with us. President Abraham Leakin wrote, the legitimate object of government is not to do for the people what needs to be done, but which they cannot by individual effort do it all or do so well for themselves. COPS Metro leaders believe in our own ability and responsibility to pursue economic security. Our iron rule of organizing is never ever do for someone what they can do for themselves. However, there are some things that we cannot do on our own. Things like roads, affordable housing, and good schools. Our local government can and should promote economic prosperity for all. This is a deeply American belief in the tradition of Lincoln who said it best. The government's job is to clear the path for its citizens to get ahead. Our issues agenda seeks to clear the way for economic prosperity. Some say the city's job is only to provide police and fire and fixed potholes, but there is a much bigger role the city must play. Norton Garcinkel in his book The American Dream vs. the Gospel of Wealth proposes three questions to evaluate economic policy. Does it work? Is it fair? And will it sustain the democratic structure of our society? Nowadays, the focus is almost exclusively on the question of does it work at the expense of the other two? Pope Francis reminds us that the creation of wealth will always be at the service of the common good and not only for the benefit of a few. We evaluate a recent economic incentive by the city using these three questions. The peanut factory loft department complex was built a few years ago. It was built to provide affordable housing for students who attend the UTSA downtown campus, so they said. And in 2012, the 210 development group with loan forgiveness, if at least 30 of the apartments were rented to students. Let's put this deal to the test. First, did it work? In 2016, the 210 development group asked the city to weaken the terms of the loan because the rooms were too expensive and nobody signed up. Did it work? Second, was it fair? One bedroom unit was between $1,100 and $1,800. Is this affordable for a college student? No! Is this affordable for any of us? Structure of our society. When people see that this is how the city government operates, is it any surprise that voter turnout is less than 12%? The same questions apply to improving the Alamo Dome, rebuilding the convention center, giving property taxes to businesses and many other corporate subsidies. Here's a different kind of economic development. Project Quest began 25 years ago to provide job training to help people move out of poverty into local jobs that pay a living wage. Mark Elliott of the Economic Mobility Corporation performed a six-year study on the economic impact that Project Quest has had on both the individual participants of the city. The results were published this week. First question, does it work? To date, over 6,200 individuals have been served of which 87% completed the program. The study revealed that within five years there was a 100% return on investment in only five years. These types of returns are unheard of in other workforce development projects. Second question, is it fair? Quest participants started the program making an average of $12,000 per year. Those who completed the project, the program were making an average of $38,000 per year by the end of the study. Quest effectively moved people from poverty wages into the middle class. Third question, does it promote the democratic structure of the city? Look around and I invite you to look right over here. There are 50 Quest participants and graduates actively participating in democracy today. They give us a glimpse into how the city of San Antonio can address the economic pressures our families are facing. Before we move into these stories, we would like to recognize Sacred Heart Church as a member institution. This was neglected at the beginning. Sacred Heart, thank you. We want to hear from some of these families. My name is Elsa Menchaca. I am from St. Alfonso Catholic Church. Sixty years ago, my parents moved into their home on the west side. They created a great life for my four siblings and me. They instilled the values of hard work and service to my community. Growing up, my house was beautiful. My parents took pride in their home. Then my mom died when my dad was in a fixed income. He no longer had financial ability to maintain that house. Over the years, the house slowly started deteriorating. The roof leaks, being too expensive water damage, the foundation needs major work. It is not the home that I grew up in. My dad is 92 years old. He is a World War II veteran and retired from Cali Air Force Base. He was a hardworking taxpayer all of his life. Yet, when he needed help, there were no funds for him. My father's not alone. When I drive the west side, too many homes are like my father's. But this is not a west side problem. It is not a south side, east side, north side problem. It is the San Antonio problem. For too long, we've invested in tax abatement for developers at the expense of our tax-paying citizens like my dad. Thank you. Good evening. My name is Jessica Guardado from South San Antonio High School and a member of St. Bonaventure's Catholic Church. This year, I received the opportunity to travel to Europe through my upper bound teacher to live what I am learning in a key class. To travel outside the country, I needed to obtain my birth certificate to get a passport. When my mom and I went to get my birth certificate, we were denied it because my mom did not have an ID from the United States. I was shocked that I was denied access to my own birth certificate as a citizen of the United States. I was embarrassed and so was my mom. The country I called home treated me like I was an outsider. I was a lucky fuse because my father was able to come with me and get it. But if I had been sought on this opportunity because my mother did not have a form of U.S. identification, unfortunately, I have spoken with many parents of in our churches and schools who are still being denied access to the children's birth certificate. Thank you. Hello. My name is Mark LaRue and I'm a graduate of the 2015 Project Quest IT Training. I had an excellent job for as an IBM contractor with AT&T. In 2008, at the height of the recession, I was laid off. I found that in the new environment, new economic situations where my skills were outdated and I was a little cool for that particular position. My job search continued until 2015. I struggled, but in 2015 I enrolled in the Rackspace Open Cloud Academy with help from Project Quest. Today I'm now working at Accenture in a new role as a software tester with a new set of skills and a new opportunity. There is no doubt that the skills I obtained from that training had a direct impact on my hiring at Accenture. And today I'm now making more than $40,000 a year. Thank you. Thank you, Project Quest. And God bless you. From our candidate. 50 people here ready to hear your commitment. I'm a timekeeper. His name is John Polofsky. Right there. Candidate. You must respond yes or no to each question. After you respond to all the questions, mayoral candidates, you have two minutes to give or to elaborate. Council District candidates, you have 30 seconds to elaborate. When you see the yellow card that means you have 10 seconds to finish through your remarks. When you see the red card that means you stop. I will now review the questions we have for you. And our audience, you have those in back of your agenda. On housing. Do you commit to increase the city investment in owner occupied rehab to 4.9 million through the CDPG home funds and 1.5 million through the housing trust board on immigration? Do you commit to create a citywide municipal ID for all San Antonio residents and a legal defense fund to citizen children who have lost their parents to deportation? On economic security? Do you commit to raise the city's minimum wage for city workers to 14.75 an hour for contract workers to 9.50 an hour and raise the city's investment in quest to 2.5 million dollars. We'll start with a mayoral candidate. Will you please stop, go ahead and stand up and step forward Councilman Nirenberg or no to all of the questions. Housing? Yes. Is that to both parts of the question, sir? Yes. On immigration? Yes. On economic security? Yes. You now have two minutes to elaborate. I believe that San Antonio can be a great city but it can only be great if we have compassion for the people who live here. It should be people first as we grow.  As mayor, that will be my guiding principle. On housing on transportation on public safety on every issue that impacts our communities, my guiding light as a city councilman and district gate for four years and my guiding principle as a father as a husband and as your next mayor will be that a city that you deserve is a city that treats you and your family with respect. Please vote for me. This is what I will deliver to you. Mr. Medina, please respond yes or no to all of the questions on housing? Yes. Is that to both sets of the question? Correct. Yes. On economic security? Yes. You now have two minutes to elaborate. Thank you. This election to me is more than just a campaign. It's a statement and it's a movement. It's a movement by people coming together to challenge the status quo at City Hall. For the last hundred years every single mayor has been elected by the Chamber of Commerce's money. Well I'm self funding my campaign because ladies and gentlemen I will be the people's mayor of San Antonio and this is very personal to me as the issue of immigration is to many of y'all here today because I like to say that I was born on the south side maybe a little further south than most in a little place called Mexico but at the age of three my mom and I crossed the border maybe we swam a little bit into McAllen then came here to San Antonio to Paso, Los Angeles and we made our way back and I didn't know I was undocumented all I knew is I grew up with an American speaking English, pledging allegiance to the flag of the United States of America and singing the Star Spangled Banner well until I was seventeen when my friend said let's go to Mexico and I was all excited, I told my mom I'm going to Mexico this weekend she looked at me and said no you're not I told her why not oh she sat me down, told me why and I wasn't going to Mexico that weekend one line is I saw how immigrant families whether they were from Asia Africa, Europe or Latin America how their parents struggled they picked the crops cleaned the babies, mowed the lawns but I've also seen how they've raised the next generation of Americans today's doctors, engineers, architects and why not the next mayor of the city of San Antonio Mayor Taylor was invited and she committed to be here I was in the room when she said so as you can see she's not here we don't boo we don't boo however, since she's not here we will not know where she stands on these important issues Councilman Warwick before you answer yes or no to the wages question I have to remind you okay Councilman Warwick before you answer yes or no to the wages question I must remind you that you answered yes in Holy Redeemer Church and you said no at the B session in City Hall but I still voted yes sister yes I know you did votes more than words right well be sure today okay the questions are with three questions which you've got okay thank you you have 30 seconds to elaborate how are you doing Holy Redeemer how's everybody else doing I'm Alan Warwick I'm City Councilman for District 2 and I'm just glad to be here today to one listen to the concerns of Project West that aren't just ESAC concerns they are citywide concerns and I see the entire city here representing and showing that these are important to them so they are now important to me but I didn't know about for today because some of these things are new to me the citywide or city issue thank you Mr. Warwick 30 seconds is very fast fast have a great day Viva fiesta Mr. Keith Tony please Mr. Keith Tony you know the issues Mr. Keith Tony you know the issues housing, immigration and economic development yes yes yes you now have 30 minutes get comfortable I cannot help it you have 30 seconds Mr. Tony alright when I was on City Council sister came to me and said Project West needed an additional $100,000 we didn't get her $100,000 we got her $200,000 we went to Sheryl Scully and said Sheryl you and I both know you can do it get it done I won't say one thing and do another why would I do that it doesn't make sense it should send a message to you I'll say what I mean I'll mean what I say I'm Keith Tony I hope you'll vote for me thank you Mr. Cruz Shaw please come forward you know the issues please respond to them yes yes yes yes yes we'll see we will you have 30 seconds to elaborate President family my name is William Cruz Shaw and I'm just a public servant I'm here for you all I want you to ensure that your voices are heard City Council works for you not the other way around I'm here to be a dedicated public servant to meet your needs sit down and talk answer your phone call you are the boss it's not the other way around when you make a phone call we will call you back when you reach out to us we will return with every effort we can to make sure that all your message are addressed thank you Mr. Shaw Mr. Dory Brown you've been apprised with the issues please give us your response yes see yes see yes you now have 30 seconds 30 seconds to elaborate I'm here truly to serve the people not for the people to serve me and looking at these issues and the questions they gave us economics is truly an issue as a single parent who gets no other benefits no child support I know how important it is to have the right income that I can provide for my child and to provide a home for him as well so I understand about the housing and wanting to be able to keep your home fixed up so that you can have a nice roof over your head and when it comes to the point of immigration my previous marriage I was a Rodriguez my father-in-law was an immigrant thank you district 2 my name is Nimfa Cantu I'm from Sacred Heart Church and I represent district 1 and I would like all the district 1 to come up please you have heard the question I would like for you to answer yes or no so first of all Mr Aff... sorry cactus cactus they say verias veria C C C you have 30 seconds to elaborate my name is Robert Fedia I'm a labor and community organizer for seven years candidate running in district one here I believe that workers rights are human rights I believe that immigrants rights are human rights I believe that housing justice is social justice and I believe if we want to change in the city we need working class people running for city council I will be an advocate for you but I want you there alongside me every step of the way that's why I say we must empower people first vote for me thank you very much the question please an immigration housing the answer to all of the questions is a very proud yes yes yes yes yes yes yes okay I'll say five more times if you want 30 seconds to elaborate please sure thank you for having me my name is Michael Montaño candidate for city council in district one I stand before you as a proud graduate of 16 years of Catholic education right here in San Antonio I grew up on the south side and I'm so proud to see so many of my fellow San Antonio's here today on immigration I helped invent the very first municipal ID card in the country and I intend to bring that here to San Antonio and on housing it's not just enough to help repair homes you also deserve tax abatements on your home so you don't get pushed out by developers who want to come in and change your neighborhoods thank you vote for me on the question of immigration housing and economic security yes or no yes yes and yes you have 30 seconds to elaborate I'm Roberto Treveño I'm your city councilman one of the very big issues that was on that very list about the housing you know that one of the innovative programs that we started in district one called San Antonio on route is being expanded we helped to create that very initiative and it's being expanded tomorrow we will be announcing it through a joint press release with CPS that we're expanding that through a rebate program as well because it's important as the name of the program says we're all in it together San Antonio under one roof and I'm proud proud to serve my name is Gloria Mora and I am from St. Leo the great Catholic Church cops metro also live in district three I now invite the candidates for district three to step forward please mr. Durham will be first there mr. Durham you heard the question already on housing and immigration and economic development would please answer yes or no to all the questions my answer to the first question regards the both questions yes my answer to the second question regarding immigration is yes I'm asking to the third question regards to the wages yes thank you well you have 30 seconds now to elaborate hello everyone God is good and all the time my name is Jerome down run for city council in district three folks I want to dress two things in my 30 seconds the first thing is a $15 minimum wage is not a minimum wage that is a livable wage that is the wage that we deserve as constituents in San Antonio the second thing is your elected officials should represent you and protect you if that means San Antonio needs to become a sanctuary city and issue municipalities for his residents that are currently here and that's what needs to happen my name is Jerome Durham thank you thank you yes my answer to all three questions is yes thank you you have 30 seconds to elaborate gracias buenas tardes my name is Jessica o Guerrero and I'm running for district three because I want to fill the gap between our communities our voices our perspectives in City Hall I want to make sure that all of our perspectives are respected at City Hall and that our views are taken into consideration and that we are at the decision-making table because we are the ones that are most impacted by decisions at City Hall thank you so much vote Jessica o Guerrero for district three gracias woman Rebecca the other one yes to the first question yes to the second question and yes to the third question thank you we have you have 30 seconds to elaborate good afternoon when I started this my name is Rebecca Villagran a proud daughter of the South Side and member of St. Leo's Catholic Church I want to thank you all because I have been working against the status quote that was established so long ago I am proud to have an open door and work closely with cops Metro on our fight for 15 and continuing that work when it comes to our CDBG home funds to make sure no matter what the federal government's going to try to do to CDBG we at the city level can do great things thank you thank you my name is sister consuelo with daughters of charity and a house Metro leader from El Chapman and St. Bonaventure and I am a voter and citizen of district four will be a candidate from district four please come forward Mr. Saldana please respond yes or no to the questions to all three questions the answer is yes and you have 30 seconds to elaborate that's the one I started this I let me start very quickly maybe you won't remember everything that I say up here but just remember this public service when you become an elected official it's about two things it's remembering where you come from and who you work for and on the south side my father is from Mexico he was an undocumented immigrant I'm first generation and I know who I work for and what I'm working for which is people who haven't had a voice and haven't had a seat at the table we got a seat at the table we're going to eat thank you thank you I just want to say that we had invited Ray Guevara another candidate for district four but never heard back from him my name is Adelaia Garcia and I am from San Alfonso the church district five the candidates from district five five to keep please come forward Mr. Lee Gonzales we will begin with you please answer the questions the questions before you yes yes and yes you have 30 seconds to elaborate thank you good afternoon everyone I'm Shirley Gonzalez I'm the council woman for district five I've been serving you for four years I'm looking forward to serving you for two more years since I've been on council the three questions that were asked specifically were greatly supported by the existing council members in myself we were able to push many of these initiatives forward and we would continue look forward to continuing to work with you on all these and if I don't I'm sure sister Gabriella will let me know thank you Mr. Montes please answer the three questions yes yes and yes to all of these common sense measures thank you please elaborate you have 30 seconds thank you all for having me this afternoon my name is Richard Montes I am a proud graduate of Sydney Lanier High School home of the West Side right of the West Side and St. Mary's University I kicked off this campaign to begin to have a broader conversation about progress for far too long our communities have been neglected and we've let our council people get away with just doing the minimum our campaign is about starting a broader conversation about progress let's talk about multi-generational poverty let's talk about dignified housing let's talk about empowering our youth and our seniors not during elections but 365 days a year thank you thank you my name is Deborah Bud and I'm a member of the First Unitarian Universalist Church of San Antonio I live in district 6 and I now invite candidates from district 6 to step forward thank you Ms. Gabrielle Harvester are you have 30 oh please answer yes or no questions to each question I say yes absolutely okay and now you have 30 seconds to elaborate okay I'm really proud to say that I grew up in district 6 I grew up in an older neighborhood as I walk through the streets of district 6 trying to talk to people about my message I'm not gonna understay in Edgewood and they have they have buckets behind them because there's water dripping behind them owner occupied rehab is one of my number one priorities they don't want to sell the luxury developers I am from district 6 I will work for the people of district 6 yes to all questions okay now you have 30 seconds to elaborate thank you so much I'm so proud to be speaking in front of cops Metro I've been speaking about cops since the beginning of this campaign Ernie Cortez and you are the example of the type of community change we need to make this city represent working people are not the 1% from the beginning of this campaign until now I've been talking about a living ways and not just the public sector but the private sector too it's up to these people up here to make that happen when we come together everything is possible both we need if you work 40 hours a week you should not live in poverty Bo Rick Dravino if you want authentic change I'm Mike Phillips with the first Unitarian Universalist Church and I'm a resident of district 7 can I have the candidates for district 7 step forward please note Councilman Medina was invited and he agreed to attend but he's not here the sound of all how do you respond to the questions yes to all questions you now have 30 seconds to elaborate buenas tardes yo soy Anna Sandoval yo crecí en el distrito número 7 pero nacía en Monterrey Nuevo León mi familia se mudó Estados Unidos cuando yo era una arriba el norte cuando yo era una bebita ahí crecí y veo que hoy día aún tenemos los mismos problemas que teníamos cuando yo era chiquita no hay banquetas tenemos diluvios yo voy a transformar al inglés I want to make sure that the people in district 7 have a voice at City Hall thank you hi my name is Alan Chase I'm from the first Unitarian Universalist Church of San Antonio and I live in district 8 now I invite the district 8 candidate yes I'm gonna say yes thank you yet yes to all 30 seconds to elaborate sure my name is Tony Valdivia I'm a candidate for district 8 let me tell you who I am I'm a Christian I'm a husband I'm a father I'm a businessman but most importantly I'm a volunteer and I congratulate each of you for being here today because this is what it's about about being involved and looking out for one each other looking to the person the left of you and to the person the right of you and saying you know what I have your back and once we start doing that we can tackle the true problems that we face here around poverty in crime and safety so please remember to vote Tony Valdivia for district 8 thank you I'd like to add that we invited Mrs. Bram and Mr. Ples and neither came today isn't this great I mean when you look around isn't this just really exciting and great I really wish that Mayor Taylor were here to see this awesome crowd and how involved and excited you are think what I'm gonna do is I'm gonna take a couple of pictures of the crowd if y'all don't mind give me one second and I'm gonna email this to her and if you all would like to take pictures before you leave today you could do the same thing and we'll email it to info at vote ivy.com we'll have someone write that on the board over here so that you'll all have the email address if you're tech savvy and you want to tweet it it's at ivy Taylor at ivy r. Taylor excuse me and so now we invite sister Jane in Slater CDP to give her reaction good afternoon this working can you hear me all right we have just participated in a very important step of our responsibilities as citizens of our city of San Antonio we have articulated our issues and we have called the candidates to respond in the affirmative or if they were so brave enough in the negative to these issues so we've done the first step we have addressed issues of a housing that's not only safe but respectable and that people can live in dignity we address issues of a of a just wage a wage that people can live in dignity and in and in safety and we have addressed the issues that our immigrants face when they cannot get ID or they cannot get legal their legal concerns taken care of so we've done the first step but we're not finished we need to get out and vote not only do we need to get out and vote yes let's hear it we to get our family members our church members our neighbors our friends we need to get them up and out to the polls and voting begins tomorrow early voting begins tomorrow and we have until May the 6th so please think about the responsibility that you have that I have for one another because human dignity human rights are lived out in community with the support of community and we are the community and we need to support one another and are all of us it's for the best lives that we can have for human dignity and human rights so Viva la ciudad de San Antonio Viva thank you thank you Chancellor Slater we neglected thank you we neglected to acknowledge Andy Serabia the first president of cops who was here today just in areas foundation the mother of cops Metro thank you sister okay we have come to the most important part of the afternoon before we adjourn we must organize ourselves to get out the vote you have heard the issues you know where the candidates stand you you see who is here and who was not you must go and vote and use today to help you decide who you will vote for that's a good question even if you cannot vote you know people who can everyone let's commit to get our family friends neighbors and parishioners and make sure they know what happened today and that they vote they got one of them Los Azucos some in quality can be that was a boy on our agenda and some in quality can be that's all it's not key equal is no I see a lot of them almost get out of the bottle see it's not registered for about that this is easy to vote out if you know where it's bought out or not it's all you can see where it bought out that's it's almost can't come from problem in it come from it's not a car it's a person I bought out you have a commitment card take a a moment to fill it out right now. Write down the information on the first half, check that you will vote, and then commit to get 30 people from your church and family to go out and vote. Do you know 30 people? 20? 10? I want you to think about who in your church, parents from CCD, family, friends and neighbors, you can ask to get out to vote and put that number there. But remember, we never tell anyone to vote for a particular candidate. We will tell them where the candidate stands on the issues and hold them accountable to vote. Now, when you are done, pass that paper over to the middle part of the aisle and the floor team will pick those up. Please hold up those forms when you're done. Once you've completed, please pass it on. If you commit to vote and or to get others to vote in this election, stand up and be recognized. Stand up. Stand up and get those votes up. Stand up high for us. My superintendent served from Dominion Church of God in Christ to offer the closing prayer. Thank you so much for providing me to be a part of this event, representing the community of churches of social action. Dr. Jerry Daley is our chairman. God bless you, Dr. Daley. Shall we pray? Father, we thank you for this opportunity to come together and to pray for our community, to pray for our city. I want to pray for all of our leaders and these individuals that are running for office. We pray that they will be people of integrity and wisdom and that they will acknowledge you in all their ways so that you would give them the direction that we need for our city. Bless every family that's represented here today. Bless their children and their children's children. As we leave this place, O Father, I pray for your safety and protection over everyone that's here today. Now unto you, God, we thank you for doing exceeding and abundantly above all that we can even ask or think according to the power that's working in us until you be glory in the church by Christ Jesus throughout all ages, world without end. Thank God, amen. Candidates and guests, thank you for attending. Candidates, Mr. Phillips will now escort you out. Leaders, please stay seated for an evaluation. Please, please continue to fill out your cards and raise them high so that we can collect them. And don't forget to vote. This meeting is adjourned. Get to give us your cards. We need cards from everyone here. Thank you. If you have your card, please raise it up high so that we can collect it. Leaders, please stay for an evaluation. We will start in 10 minutes. Leaders, stay for an evaluation.


Hello, I'm Crystal and I just bought this beautiful Jeep Cherokee from Mountain View Dodge.  I love it, my first ever brand new car. And thank you to Patsy and Doug and Mountain View Dodge for making this pretty easy.


The T2 Tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday updates. Hey folks, it's been two weeks. Got a lot to talk about. I'm gonna go as fast as I can. I want to get a little bit of a running start though because of what I actually have to talk about. So the T2 Tile project is about building a whole new kind of computer architecture based on these T2 tiles that you can scale out as long as you can afford to find space and power and cooling and tiles to plug together. And in order to do that you're gonna have to have software. We're gonna need software that can deal with the fact that the hardware is very variable. Some of it's gonna come and go.  And the software is gonna have to deal with that in some way. It's gonna have to have some robustness. And we're gonna need, so we're claiming, we're gonna need a whole new stack of both the hardware elements, the tiles, and then layers of software on top of that. And that's what we've been doing a lot of for the last, well, more than a year, for a couple of years even, to start to build the software stack. And what I'm excited about today is I've got something which is sort of very simple and humble from one point of view, but that seems appropriate to be a step on a path to useful computations because that is the goal. We do little demos that might be kind of goofy and fun. And those are important to teach us what these kind of systems look like, how they can jump. But again, we're trying to build systems that are actually going to provide a programmable framework to build robust, scalable systems. And I think what we've got today is a little teeny step in that direction. So, you know, I have, I grew up in traditional computing, you know, deterministic hardware guarantees to be correct. And so there's all kinds of things that just go unquestioned for me that I turned to when I'm starting to design software for the T2 tiles and hardly even think about it. Object IDs is one that I've been wary about for a long time. The idea that we're going to distinguish between objects by having unique numbers assigned to them somehow. And I've tried to avoid that, but I kept falling back towards it. The idea of go as fast as you possibly can, of course, you go as fast as you possibly can because somebody might need to use your result. You know, how could that not be right? And the basic idea that the way you do a program is you model the work to be done in some fashion and then you make the model crank and that's how you can you program. All of those parameters, all of those time principles came under attack or in fact kind of set me back in the last two weeks. So the story really begins five years ago or more when I was using this 2D printer idea to try to copy objects. So you start with this block, say, and you end up with two blocks. Or, and the way it works is you put down an atom of this C plate, circumferential plating that surrounds the object that's to be copied and measures it and figures out how big it is and then goes through it line by line making a copy over here and then strips the plating out as the last step. So here it is being surrounded and there it is completely surrounded. Here's a version of a much bigger one that's in the process of being copied and here it is after the C plate has been stripped out. So that that was 2016, 2015 actually. And the way it worked was the whole idea of the C plate was that it had two key data members. M Max was the the bounding box of the object being copied, whatever it was. And location is the position of this particular atom of C plate within that bounding box from 00 to M Max X minus one M Max Y minus one like that. And that's how the C plate knew where it was and it knew what it whether something was inside or outside the thing based on the bounding box. And but you know that was not enough. So you say okay is this particular C plate within the bounding box of the of the thing or not. Well it might be within the bounding box but it might actually be a C plate of something else that's getting reproduced. And in fact we'd see various kinds of failures when we were playing with that thing and it would have more than one guy trying to reproduce at the same time. So still I had this idea of QID an arbitrary number a tag number that was going to distinguish one object that might be copied from another. So that the tag bits is what was in charge of that. But bits are really expensive inside an atom in the movable feast machine that the T2 tile implements. So typically I would only have five tag bits which means there was only 32 possible tags 32 possible unique IDs which is not unique at all if we started to have lots and lots of objects being involved. But I thought it was better than nothing and it wasn't clear what else you could do. How do you tell if an atom of foo is really part of you or an atom of hand is really part of your hand or somebody else's hand that just happened to be nearby? And that's what it was. So that was five years ago. Sell identity with using the tags, the C plate that goes around the thing, copy it and then remove the C plate. And five years pass now it's this year starting to revisit the whole 2D copier ideas trying to bring it into the T2 tile framework. And there it was the QID still there still five bits and playing around with it. Here's the key step when the C plate sees an element of the an atom of the thing it thinks it's supposed to be copied. It copies the tag from that thing into itself and then it gets spread to all the C plate that's produced from there and they all think they're part of tag 1F or whatever it happens to be. And you know this is from the video the demo where we had where it was actually sort of things were reproducing not very accurately on the grid and that blue to red rectangle is a block of well now it's called plate rather than C plate it doesn't circumference it's the build plate for the 2D printer and its main purpose is to reserve space to just spread out to all the space that the copy is going to need and make sure it's all empty so it's available and it's supposed to quit if it runs into other obstacles blocking the path including other bits of other plate and of course as we saw in the video it all got pretty messed up pretty fast and it was during that process that finally finally the pin dropped that no we don't need a tag to tell if a piece of plate is part of the same object that we are if this if I'm a piece of plate and this thing is a piece of plate what we do is we look at where I think the origin is I think the origin is at 7 3 so it's over there someplace well if he's one to the east of me then he's at plus 1 0 to me so he should think the origin is at 8 3 and if he does think the origin is at 8 3 then we agree on origin and that means we're the same plate on the other hand if it's got origin his where he thinks the origin is plus his offset relative to me doesn't match what I think then it's somebody else's plate that's all we need so that this is kin method what does exactly that it checks the coordinate of the other guy relative to me and then subtracts where he thinks he is minus that and that's got a match where I think I am and if it does we're on the same plate and that worked great don't need any tags for this for the plate now again in the original idea when the reproduction was done the plate was stripped out but this was seeming more and more like a poor idea why not keep the plate around sort of as a moat a border around the object and then if it ran into any other modes it could use this technique to immediately know is this the same thing is this part of me or is this part of some other organism and it's been great and it's very powerful and it's the basis of everything that's happened in the last two weeks and you know all I can say is you know oh my god it's so obvious after I saw it and yet it took what five years six years of on and off thinking about it to see it it's unbelievable so I went crazy from there okay so now we know so why don't we say we're gonna keep the plate around it's gonna be a durable thing surrounding important other stuff somehow and so how are we gonna do it so I did a shape interface all super general and really cool the idea being that you just have to define this predicate is in shape it gives you a coordinate two six three nine one two and you just return true or false to say whether it's in the shape or not and I've used it to make this kind of key shape or spike protein perhaps that consists of a sort of circle in very loose grid terms and a straight box and that's just by defining is in shape predicate that says if the Euclidean square distance from the origin is less than 25 meaning it's five or it's got this X but bar sticking out then it's in so it was just to show that we can do arbitrary shapes with this thing seems very flexible very powerful I got it handling rotations and soon enough you know had it doing all kinds of crazy shapes going in various directions with it you know great but then as I tried to say okay now what's next beyond making pretty shapes with this thing you know so so here's an example of it simplified one says you know the absolute value X less than 2 absolute value Y is less than 2 that gets this 3 by 3 box or if it's equal to 2 minus 1 so that gets a box with a little handle on it you know why you would want that I don't know why you'd want that but look at this variation we just changed the 2 to a 3 and now you say well is 3 minus 1 supposed to be part of the shape well obviously it is because it returns true from the predicate that defines the shape but the rest of the code will the way the rest of the code works it will not find this because it starts from 0 0 by definition and it only looks at nearest neighbors it will not jump this gap it will never ask if 3 minus 1 is a part of this shape and the more I started working with it the more my wonderful cool super flexible software engineering shape was starting to be a real pain you know so for example like I said how does the shape know where it ends and how are we gonna route signals even if it is connected you know it might be going around in loops and then back how we got to know how to do anything with this and when it really comes right down to it how many shapes do we really need you know there's the famous result that traditional computing all can be done with one logic gate which you know like not and is an example and so how many really shapes if we're going to be building up more complicated spatial computing using the shapes how many shapes do we need so I said nah screw this the only shape you need is a rectangle so that's what we did I got rid of the shape interface and I went to the plate interface that basically it says it's got one thing where you have to say how big is the plate overall it's seven by three and then where is my position on the plate four comma two and the position on the plate is somewhere between zero up to one minus the size of the XY and and that's it so but now we have more information so we can't just represent it by our position so we can do it in pairs so the square bracket is the size of the plate according to this particular little spot in the grid and the parenthesized is the position within it and once we have this we have a tremendous amount of information right at our fingertips so for example we can very quickly realize that these two guys are part of the same plate it's too wide two width by one height and this guy is at zero zero this being and this being is at one zero so in fact these are the two sites that go into this two by one plate this over here also says two by one but it's not part of the same plate because in fact it's the right hand end of some plate that's extending off in the other direction on the other hand this four or five monster is down below goes everywhere well it goes off to the left and up above and we know that immediately without even ever seeing what the heck is up there like that and this just led to zillions of wonderful things so you know it was so much better than just what I thought it was which is determining do we have the same origin so yes you can answer the question are we on the same plate or not but you can answer many more questions as well and you know one thing you can say is do I want that plate so if that site is empty and someone is next when they say well do I want that new say sure I can see if it's part of my plate and five four says yeah that's part of my plate in fact it ought to be for two so it just goes ahead and fills it in because they have enough information to do that the two one plate couldn't care less about it and so forth so all together there are five possible relationships that plates can have with each other given two sites of plate and comparing them they might be on the same plate it might be the left the one contains the other or the one is contained by the other or they're unrelated meaning like they're next to each other or one overlaps the other without either of them actually containing the other and the way the code I'm designing now works is that we're trying to avoid overlaps plate we're trying to have hierarchical nesting relationships we'll still have overlaps plate in our back pocket if we need it but so far haven't needed it and so right now that's an inconsistent condition and the system either is going to lock up or it's going to pull the rip cord and die depending on what particular situation it runs into so this has been great this has simplified everything and really made the code go you know made it have many many fewer bugs much more quickly and it took me forever to see it you know and I was always I you know I was thinking the plate was going to get thrown away so this wouldn't be relevant so therefore we had to have ID numbers so that that things could identify self versus non-self without the plate never got around to saying well why not keep the plate it's helpful you know because it takes up extra space you keep thinking in terms of maximum efficiency and really what we want to do is think about ways to smooth out the landscape lower the order so that you can do more stuff locally and this is an incredible help for doing stuff locally and so the definition of being part of the same organism being part of the same cell it's not even clear what level of metaphor we want to use to describe this is defined by sharing a common origin being on the same plate so once we have these notions of the five different relationships we can easily compute the relations between all pairs of these things just by doing simple arithmetic you know essentially like box intersections you know that kind of thing and it's been absolutely great and you know so so obvious after the fact right you know I can't it takes me to find this stuff so as an example of the stuff that does you know we need swap lines we're going to actually move these things and so in this case I'm calling the swap line concept for this I'm calling it a tecton because it does plate tectonics it moves plates and it also allows them to grow seems pretty good and now in this case because we have the rule that everything's a rectangle and that the tecton is going to apply to an entire plate and any plates inside it as well and so we've got you know a little example like we want to send a plate we want to move that two one plate to the east so we're going to send a tecton moving tecton that's the m versus a g for grow to the west and you know there's one little weird thing here right you know the tecton wants to say two one because that's the plate that it's moving over but it's actually a two zero which is not a coordinate inside the plate so it's kind of like a you know a fence post or something starting from off the edge uh like that which I didn't really like and it has caused some bugs but I've got it mostly working and it moves on down and it updates its own position so it knows where it's going until it gets to the bottom now when it's doing grow it actually has to modify the size and or the position of the plate that it's moving over in the case of move it doesn't but then I had one more question which is what are we going to do now this guy the the tecton is done or it would have been a whole column of them they're all done you know and they're going to look at they have to look at their neighbors and analyze who's supposed to be in there who has priority or something like that and finally again the pin drops you know no no no it's so much easier than that the tecton just erases itself and the healing of the plates automatically takes over it's gone and who needs to have that again five four needs to have that and it needs to be two two zero five four it heals itself so that's the pattern that we're using all through it you do your business when you get to the end you die you erase yourself and the system heals around you and it's been a wonderful division of concerns it's worked really well now additional issues okay we can move the a plate west or east or north or south we can grow it but someone has to issue those commands it's not going to be me clicking on it on the tile out on the grid so i'm going to say all right the upper left corner the origin is going to be the plate control that's the one that's going to issue the command so it can issue at least tectons for west and north but then the question arises as it did when i was implementing it how long do we need to wait before issuing the next one if we want to go west and then north because we want to head northwest how long do we need to wait and it wasn't long when i was debugging all of this stuff that you know it got locked up that it got a west and a north that would cross and they're both the same priorities they messed each other up and so forth just like was discussed in the spot paper last year so you know there's a timer library built into the uh ulam standard library so we could put a timer on when when we release one of the tectons we start a timer and wait for it to expire but it's hard to set that timer because how long the tecton it's going to take it depends on the size of the plate the bigger the plate the longer it takes but even that's not enough because if there's intertile connectors all kinds of reasons could affect how long the given line takes and then once again eventually the pin drops no no no we don't want to go as fast as possible we don't want to put the unlimited control at the center and say everybody is listen to the center we want to go in sync we want to go in consensus with the plate the whole point of the plate is that it's a zone of consensus we all agree on where the origin we agree on our size we want to agree on what we're doing so what we do is we have synchronized control with the distributed clock this is a familiar thing from distributed algorithms the root ticks when it's available and issues a command and the tick and the command flood downstream across the plate when it gets to the max the lower right corner uh uh the max detects that the max knows it's the max because it can check the coordinates and the size and it talks it acknowledges the tick and starts the talk now starts flowing back upstream and the command the way I've written it the command gets executed wherever is appropriate most of the time the commands that we're talking about either get executed uh at the max itself or they get executed at all the border sites when we have a command saying how much space is there around you so that's another thing that the root can do in addition to just saying go north south east west or grow it can say what's the minimum amount of clearance we have in all four directions inside and outside so we can decide do we have room to move or do we have need to move like that uh and and that just happens on tick and talk so automatically as the plate gets bigger everything slows down so that we don't have multiple commands in progress at once you know could it be fancier and have multiple uh uh tectons in flight sure with more complicated code that's what we had in the previous one it was actually pumping as many through of the swap lines through as it could it was buggy but this makes sense this is clear and the point is a plate is a zone of consensus a plate is a synchronization zone so we have one command in progress at any given time and it works great and again again you know uh uh i mean i spent a lot of time trying to think about how to come up with a good timer scheme and then this is self clocking that's what we want all right let's look at a quick demo and then wrap it up uh this is a uh recording that's been going it's a little test atom test 12 that just starts the seeds a little one by two uh plate of test the grid of plate of test 12 and then the root starts issuing move and grow uh uh tectons uh and also commands to the max to do it as well so every time you see a a white a black line there is a move tecton a white line is a grow tecton uh this is you know for some reason it's it's kind of ends up growing kind of wide and i wanted it to sort of end up being more square but then this whole run was interesting enough that i wanted to let it go and it only started what you know two days ago uh something like that and look at that so it's gotten far enough that it when it did its border patrol and says how much space is there outside and inside it figured there was enough space inside that it went ahead and created a sub plate which is now executing on its own and look at that you can see the tick tock of the outer plate is going at whatever speed it's going while the inside tick tock is going much faster because it's smaller and they're all moving through each other the the now we've got a third guy a second sub plate inside there and they're all going at their own appropriate speed given their size as they as they move and grow within a sub within a larger scale plate or within the general grid of their own um and and this has been running for for well it's still running now actually so um now you know it's the display is going faster and faster here we're up to 390 air and every five seconds i think it's speeding up even more so don't be freaked out now there's something i want to show you here to set up yeah i missed it but there okay so look at this that this whole area here is brown that means it's waiting for a tock the lighter yellow and is waiting for a tick but the problem is these two sub plates are right up against each other so this spot in the middle is in the shadow of these two plates and it cannot see the tock the tocks only go strictly upstream the ticks only go strictly downstream so uh this guy cannot talk therefore the guys upstream of him cannot talk therefore the root never sees the tock and now the uh main plate is is frozen and when i saw this it's like oh i gotta kill the simulation and go deal with this but the sub plates are decoupled the sub plates are still executing they're looking inwards and doing their own business and the whole point of having loosely coupled interior systems instead of having it be completely rigid having these things float around and move and have space around them is it allows them to continue building doing their business even when something weird has happened in the larger scale and in fact this resolves itself quite quickly because the the two plates shift position enough to clear the gap there it is i think it might there it happens again but it also clears again and because they're all doing border patrols eventually and pretty soon here the two upper sub plates will move apart there it is now we have a empty line of container plate in between them and so now there can be no shadowing and you know we color the borders uh a different color to drive home the fact that even though they're really just more plate the design principle is you're not supposed to step on the border of your containing plate and that ensures that the root and the max always have a path to talk to each other but since we're flooding through the interior so that everybody knows in case they need to do it if we just keep some empty space around the plates and their containing plates and their sibling plates they weren't up to up to an even a fourth sub plate in here and this is great you know um i've got all kinds of plans on stuff to do with this about that coming soon all right so one last little bit and then we'll wrap it up so there was that ucky flaw that the tectons had to start outside the plate that they were planning on moving and i didn't see any way around it until again you know but if you just add one in this particular example now by putting two two at two zero you have instantly magically created a new plate that contains the entire plate that you're planning on moving and the way the rules is you know contain plates defer to container plates which is what we want so the the uh container plate has priority and the contained plate will just go passive as the tecton moves on through and again now it's all consistent there's nothing weird and it expresses what's going on better the point is the tecton doesn't want to be part of the plate it's operating on it wants to be the work area it wants to represent the workspace that's needed to do the operation so this has all been quite a lot of fun for the last few weeks um and so you know deprogramming Dave you know object IDs no you don't want object IDs how do you do without object IDs using interplate relations it's all about relationships and how do you know about relations well in this case you say do the plate relation are we same unrelated contain container overlap work as fast as you can seems obvious but it's like a nerd at the dance you know showing how fast that they can dance when what you want to be doing is dancing in tempo with your partner uh and in the distributed uh mode it's not about speed speed doesn't help unless everybody can come along unless the consensus can move with you and finally model the work of course no model the work bench model the area that you're working in a whole new stack put some bite into it this is some of the suggestions about how different the feel is in this new world okay that's it uh in two weeks my goal is these plates are computing something somehow i don't know what the details are yet i've got ideas we'll find out in addition my hope is is that we'll have some version of the plate kind of like the test 12 atom we just saw running on the t2 grid and have a demo for next week we'll see how it goes uh this has been a really long one uh i i hope you find it was interesting it not too nerdy because on the path to utility this feels like progress


bit about functional reactive programming in JavaScript, more of a FRP inspired system in JavaScript. We'll see how we can use FRP to change the way we write asynchronous code in JavaScript both on the server side and on the front end side. So before we get into FRP, I would like to share a story of a dear friend of mine, a software developer always chasing JavaScript like all of us. He never caught it though, neither do most of us. So he was given a task, he had to render some tweets to a web page, a very simple task, right? So he made a small assumption about his task, he assumed that he has an array of tweets of 100 or so tweets and he had to render them to the web page. Now he is an awesome developer, so he divided his specs quite clearly into three requirements. The requirements are he has to show the tweets for the single user only, the selected user only and he has to show that only those tweets which have a particular hashtag and he has to replace the text emojis in his tweets with images. So he starts with his development, with his solution. So he takes the source, tweets from the source and he do the first operation, the first task. He uses filter for that. Now filter is an array extra function. It takes a function, execute that function on every item in the array and creates a new array with those items for whom this function returns true. So basically filtering the array, creating a new array. Notice we are using arrow syntax here, fat arrow syntax. It is just creating a function with one argument t and returning the statement. So first problem is done. Now for the second, he has to show only those tweets which have a particular hashtag. Quite simple, just another filter. So he does. For the third problem, he has to manipulate the tweets now. So for that he uses map. Now map is just same as filter but in that it takes a function, execute it on every item and then it creates a new array with the output of product of this function. So he has all his three problems solved. So next the cherry on the top, he has to render them for that he uses for each. So his problem is solved and quite beautifully so. Now he is proud. He think he has written very good code and he is right I think. Look at his code. His code has no dangling state around outside the operations. Each operation is fully contained. So the code is stateless. Stateless code, easily maintainable code and it is composed of smaller operations to do the whole thing and it is still further composable. And the code is not mutating the source. It's a big thing. If you mutate the source, it becomes very hard to test the operation. So you mutate it every time. How do you test it? So these functional properties, these functional things bring a lot of value to our code. So his whole operation looks like something like this. He has a source. He has a bunch of operations working on the source and that manipulates the data and then takes the data to the sync.  Put the manipulated data to the sync. Now these operations are special in that they do not mutate the code and they do not depend on anything outside themselves. No dependency on the external state. In other words, these are pure functions. For just to be safe, the emojis here might not be a pure function, but let's assume that it is. So these functional properties, these pure functions bring a lot of value to our code. For once, the code becomes very much readable. So you can just look at it and say that there are four separate operations and just understand it in one go. Assume if it was in a big loop doing a bunch of things, if this, if that. Next, the code is maintainable. Now there is no dangling state. The code is highly readable. You will be a lot less afraid to touch this code in future. And it is testable. Pure functions are easiest to test. You just pass it the right input and you will get exactly the same output every time you test it. And it is extensible. It is composed of smaller operations. And if we want to add something more, we just add another operation to it. For instance, he is rendering each tweet one at a time. If we want to do it in a bulk, it is just a matter of adding a reduced operation. And it is reusable, of course. He has to create a smaller operations for the whole thing, which makes it obvious where they can be reused. But it is JavaScript and the only dreams that come true in JavaScript are the nightmares. So the reality bumps in eventually. And it is not pretty. So turns out the source that gives him the tweets is not really giving him an array or something. It gives him one tweet at a time and it is asynchronous. So he makes a request somewhere and gets one tweet at a time. So now all his functional awesomeness, the composability and all goes to the sync with the data. So what options do we have here with the asynchronous data that he has now? So first option is using callbacks. You know, callbacks are pretty. Very pretty. So pretty, you need eyebleach just to keep your eyes from bleeding. But the problems with callbacks are real. So first thing is the composition is out of window. How would you compose a synchronous stream inside a synchronous stream? Pretty hard to do. And the dangling state in callbacks is more than nasty. Just assume you are five levels deep in callbacks. And the number two callback said something. Number four callbacks use it. Not debug. Not funny. Okay. And the code is pretty hard to read. So hard to read, dangling state, not really maintainable. And testability is like, yeah, it's a joke. Okay. The second option he has is to use a promise. Now promises are awesome.  Promises made the asynchronous values first class citizens. We can pass them out as arguments, keep them in variables until we need to get the real value. But after a line is crossed, promises have same problems as callbacks. Almost same problems. First, they are hard to compose, quite hard to compose. And they resolve exactly once. Once a problem, promises resolved or it has given an error. It is pretty much useless after that. And canceling a promise in a pool of, say, 100 asynchronous requests is not something you would do on a sunny weekend. Okay. So maybe it is time to make a compromise. Now he has to use asynchronous source. So he has to make a compromise. Either he uses callbacks or he uses promises. In either case, all his composability, the readability, all the awesomeness that those functions brought is gone, right? But no, he lived a life of no compromise. He won't compromise, not in the face of callbacks. So what he does instead is stood up and jumped out of his window. No choice, right? Windows reminded him of another awesome technology from his favorite corporation, not ECME. So Microsoft has this awesome thing called RXDS. These are the reactive extensions for JavaScript. Now, reactive extensions have been in C-sharp forever. But they have brought it over to many languages now, including C++, C-sharp. It already had them. Objective C, Java. And maintained by Microsoft. So you can say that it is not something just a toy. And learn once and implement everywhere is the trend, right? React Native. So, yeah, you can learn RXDS in one of the languages. And semantics are pretty much same in most of them. So how would the code look like if he had used RXDS instead? All the asynchronous code. Now, he has a source which returns one P asynchronously. So something like this. We converted the source which gave a promise to an observable. Observable is the central piece of RXDS. And then he, I just, I think I copied the synchronous code. Did I make a mistake? Is it the same code copied? So it was a mistake, right? What if it is not? What if you can write the synchronous code just like this? Now, this is a synchronous version. And this is the supposedly right, maybe wrong, asynchronous version. Almost exactly the same thing, right? So maybe the observable is the unicorn which allow you to write the code in this flowing fashion using pure functions and all, keeping all the awesomeness of your functional code. Maybe. Okay. Let's look at this unicorn. Okay. So an observable is a data set, a set which updates over time. So like promises is a value which gets its actual data from future. Similarly, observable does the same thing. Do the same thing. Now, these are the building blocks of functional reactive programming inspired systems in RXDS. FRP is not really possible in JavaScript. It is not concurrent. But it is a FRP-inspired system and quite beautiful. We'll see. And they are like promises. They make asynchronous values first-class citizens. So you can pass these observables around in functions, compose them together. And they have a very good functional grammar, like array extras. We have map, filter, and all that. Observable provides similar operators and a lot more than array extras, which allow you to compose them very well. And they play really well with other sorts of data that we have. So but why should you care, right? Now, observables are awesome. Of course, you should use them. But why bother? We don't like new things. So why you should care? The first thing is that there is a proposal to make observables native in ES7, like promises are native in ES6 now. So hopefully observables will be in ES7. And Angular 2 supports them. They are integrated into Angular 2. So if you really want to master that thing, I hope most of you do. You need to know this. And the new hot kit in the town, it has plans to support them first-class. So now I have you convinced. So what is an observable? So if we take a look at our code from a junior dev's perspective, it is mostly about flow of data. Like we have some data. We do some manipulations on it. And then we do some side effects to it, to show it to the user or keep it in the database or something like that. So how do we represent this data in our day-to-day imperative programming as variables, values in variables? So now in our usual programming, we don't consider time to be a factor. We don't think that time is something. It makes perfect sense though. We deal with asynchronous data often. And we don't have that data always. We get it from future. So if we consider time in our programming, let's call it temporal programming. The programming we consider time. So how do we represent a value in temporal programming? Something which don't have its data yet, but will have in future? A promise, right? But we don't deal with values directly. We keep them in collections. We deal with the plural of values. And that is a table in JavaScript. In ES5, these are arrays. ES6 has more forms of them. So what would be the plural of a promise? How do we represent a collection of observables or collection of asynchronous values? An array of promises is the wrong answer. It is just not the same thing. Now this is the spot where this observable fills. Observable is a, you can think of it as an array which is spanned over time. A collection which gets its values in future, one by one. So then these observables have these operators that allow you to do almost the same stuff as we do with arrays. This is the code which, a synchronous code using an array. And this is a synchronous alternative. Okay? It allows, if you know the array extras, how to use array extras, you already know how to use observables. Okay, now, in my opinion, observable is natural evolution of promise. So if promise is Bulbasaur, what is an observable? Evolve Bulbasaur, of course. Now about the API, the promises have these resolve and reject and then an error while creating and using the promise. Observable has onNext and onError doing the same thing in both the cases. Now it is called onNext because it is a collection. It will get its values maybe more than once. But it is a collection. So it might finish sometime, right? It might have a length. We don't know it yet, but it will at some point. And when it completes, we have this uncompleted callback. So all these three things together, they are called an observer. So observer is, say, as important as observable. I didn't mention it earlier because we don't usually create observers directly. We have a subscribe method on an observable to which we pass either one of these three, two or all of these three functions, callbacks, and Rx just creates an observer implicitly. So why am I mentioning it now? If it is not, we don't really directly use it. Now observables are lazy in that, say, now this code, take an observable and do something with it. Now this code will not execute. It will just stay there. It will not execute until we connect an observer to it with the subscribe method. Only at this point, this code will start executing. And this is a very nice feature. It makes it easy to use the observables very easy. Intuitive, I would say. And there are many operators on observables, like map, filter, reduce, scan, many, lot many. For any case, you might think of. And there are a lot more than this. And we can convert almost anything to an observable, be it variables and arrays, promises, events, callbacks, or even generators. And generators and promises have first-class port in observables. You don't need to convert them every time. And the observables are disposable. Now we convert events to observables. And what's the most common source of memory leaks in JavaScript? Event listeners. We add them, we forget to remove them. Now when we create a subscribe, it creates a disposable. When you subscribe to an observable, we can dispose it with disposable.dispose and it will free all the resources or remove the event listeners and everything. But it is declaratively, we can do this declaratively. We don't really need to call disposable.dispose if we use it properly. Now notice, here I created clicks observable. This observable will have a value every time I click on this count button. But I said that take only five. Forget about this zip thing. I said that only take five clicks from my observable. And after that, it knows that I only need five clicks. And after that, there is no use of it. It will dispose it by itself. So one, two. After this, the event listener is removed. So the chances of memory leaks, if we do it the proper way, are very less. We don't really need to remember to remove all those. And about performance. So observables, RxDS team try its best to keep observables have as little footprint as possible. So because we create an observable, every time we do that map thing. So it has to be like. And swappable concurrency. JavaScript is not really concurrent. But this observables has this thing called schedulers. Schedulers allow you to put your callbacks where you want, like how you want to execute them on the set immediate or process.next click or the way we want. For example, for animations, we want them to be executed on request animation frame. So we can swap them. And when we use arrays, the map, the filter, it creates an intermediate array every time.  Since observable is not really a complete collection at any point, it don't create all this intermediate memory. And it supports transducers. So you can even avoid creating observables. And to be any library to be used, it has to play well with other stuff, right? So we can create observables from native events. We can do the same with jQuery or Zepto events from jQuery promises. Just make a jQuery.get request and convert it to an observable or just use it directly inside an observable chain. But we use frameworks, right? So there are bindings available for most frameworks. So you can just add another library and start using observables within your present apps that you're using frameworks. And the company which has created, RxDS has created this beast as well. The IE6, right? So I know most of you have nightmares of it. So the sport for RxDS goes as back as IE6. They have these compatible builds which sport even IE6. So time for some example. First example we'll see is called follow the mouse. We'll create a three-part mouse chain in which the first part follows the mouse immediately. The second part follows the mouse a little delayed, okay? The third part follows the mouse even more delayed and it wriggles. So demo. So here it is. The first part it follows the mouse right away. The second part it comes a little late and the third part comes even late. And it wriggles because it is too happy. Now imagine how we do it in imperative programming. Any proposals? How will coordinate this delay? That the first part is easy. We just add an event listener. Then we have the second part which does the same thing but little delayed. The third part does two things. Sorry? Yeah. Set time out. How will they play together? Like there are three things. They have to happen in coordination. So let us have a look at how the first part is done. Okay? First thing we do is we convert the event to an observable. I use this underscore at the end just to be sure that it is an observable. My thing, personal thing. And then we have to move the position of that block, right? For that we need the coordinates. The x and the y. For that we create another two observables. The left and the top. From the observable we created from the event listener. And then here's that element. And then we simply do set left. Set left is a simple function. We just change the left and right and left and top on the style. So the code is just as simple for the first block. Now second block does pretty much the same thing but little delayed. Right? And set time out will not really play that well. For that in this example we simply just add just one line of code. We call it that say that now my observable is getting these values whenever I move my mouse. My observable is getting these values whenever I move my mouse. But for the second my second block I want these values late. Send these to me but send them after this delay milliseconds. So these say this is our observable that actually comes when we move the mouse. Say it has this one to three what delay does is just delays them. Send these to me a little late. And for the third one we have the same thing delayed and we create another source which give us value between minus five to plus five every hundred milliseconds. Okay? We use interval for that. So it was just a matter of adding four more lines to make the third block becoming late and work well with another interval that we set. Okay?  A little bit of more real world example. This auto complete is like the hello world of FRP. Any FRP library that you will see anywhere present it will always have this. So, okay, this is what we want to do. Here is an input block whenever user add something enter something we send a request to Wikipedia and show the suggestions. Quite simple, right? But we have some conditions here that we will not send a request until user has entered more than three characters or more than two characters. Okay? We send a request only after the third character and we don't send a request if user keeps typing something. We don't want to bombard the server. We want to send a request only when user stops typing and there is no activity for some time. And we don't send a new request if the value is not changing. So, if user uses cursor keys, we don't send a request. It is not really as easy as it might look like. So, let's see how we will do it. First thing we will do it is create an observable from the event, right? We want to do something when user presses a key. So, that's what we do. We create an observable from the key up and we take the value of the input element every time he presses a key. Next thing we want to do is that we don't want it to proceed if the value is less than two. If the value's length is less than two. For that, a simple filter. And next, we don't want to do something until we have 200 milliseconds of inactivity. Simple a matter of adding a debounce. Then we don't go ahead until the user's value change. If user's value is not changing, we just keep it up to here. And eventually we make a request to the server. Now this function does just one thing. It just creates a jQuery request and sends it as a promise. That's it. We don't even convert it to an observable. So, what this flat map does is that now we have users entering continuously after 200 millisecond delay. Now we are sending a request to the server. Like first goes, second goes, third goes. Now we don't want to handle each and every one of those. We just want the latest one. This is what this flat map latest does. It will receive all the requests, keep receiving them, but will give us only the latest one. So a quite complicated, not really complicated. It is actually quite complicated when we do it in the real world using imperative programming. So I started using these observables a few months back. Since I started using them, I found some very happy side effects in my code. Like the things I didn't really want to do what happened. First thing was when I start solving a problem, I usually make a monolith. Just something which do a simpler version of what I do. And the second phase is to make it modular to keep adding more information. Now I found that my code was almost already modular. It was just a matter of taking observables and putting them in right place for APIs. Because we are creating streams of flow. This is how one operation is done. And modularizing them is mostly matter of either just put the observable in the right place or split it in the half and sort of that. And the code was reusable. Like I used those left-hand top observables back there. And it is very easy to read code. So I use this mostly on my hobby projects at the moment. So I visit them sometimes weeks later or months later. So the code is very easy to read. Just look at them and I know what it is doing. And all this I get by default. I didn't really had to put any effort to do this. And in conclusion we use doing the synchronous programming. We got the same benefits as doing synchronous programming using arrays. Like our code is composable. We write the code in a flowing fashion. There are smaller operations working in coordination with each other. And it is readable. So it's maintainable. And RxJS actually has a great error handling. So any time an error happens at any of those points the error callback is executed and the observable stops. It is actually the killer feature of FRP, RxJS which made me choose it over CSP for playing. But it's more of a homework. So using RxJS we got elegant declarative code, a synchronous code. It is a synchronous so it came lit. So yeah, I hope to see some of you on the dark side. Thank you.