Okay, so we'll get started. Let's see the first thing that we have on the agenda is announcements. I have to this. And I'll, does anybody else have an announcement? I haven't announced it. Okay, go first. Okay. There are two more or less retirements that have taken place in the last week. First, Nate Barrington is no longer on the Community Preservation Act committee. He's been on, I guess, for two terms the last six years. And he's been chair for the last two years. And he's really been a great supporter of affordable housing for us. And, you know, he's certainly favored the things that we've favored money for the housing trust. Support of money for 132 more camped and road. And that's both in the AC meetings and also before town council. So I don't know who succeeds in mind, much or whether they've had a vote yet, but I do know that Nate's often will certainly miss them. And the other retirement that I wanted to mention is Joanne Campbell. After 20 years as executive director of Valley Community Development. And I guess two more years on staff. She is taking retirement. And I think that's very significant for us and for Hampshire County and others in the Pioneer Valley. So Joanne has provided great leadership over the years. In addition to working with Laura to spearhead the work at Amherst studio apartments 132 North Hampton Road. She also was involved in developing a family housing development in Amherst. I think it was 12 years ago. She's also been a great source of wisdom and advice for me.  Certainly some of our meetings. And also meetings of the Amherst housing coalition. So I'm definitely going to miss Joanne. There is a new executive. Director Jane Lock here. Who has appeared on some of the calls with the board of appeals. So we welcome. But no question that we're miss. Joanne. So those were two things I wanted to mark. I don't know if anybody else wants to say anything about Joanne or Nate. I mean, Tom, you've known Joanne for longer, much longer than I have. She's an amazing. Who's been like. This leader for the area. Just a really. Nice. Calm. And. Hard working. Affordable housing. That place was. Pretty chaotic. She. She took a lot of time. And she turned it into a very, very effective. Agency. So. She. Thanks. Nate, you said you had an announcement also. Yeah. I had a call today with mass housing. They have. It's been, they haven't a relatively new program. It's been around for six or eight months or so. They call it, I guess like their Commonwealth builder program. It's for workforce housing for home ownership is what they were looking at. And. They have 60 million for the program. And they still have a fair amount of money still to give out. And you have to be either a gateway city. Or a qualified census tract. Or I guess the city of New York. But. Amherst has qualified census tracks. And so they were just, they've reached out to every community that could. I guess possibly qualify. And they asked if, you know, they, we just talked about it. And I had some information sent to me this evening, but. You know, You know, they're looking at like a 20 to 30 minimum 20 to 30. Minimum a unit home ownership project. And. I thought the East street school could be. Something that might be relevant. You know, it's up to $150,000 subsidy per unit. It's a, it's actually at the closing. So it's, you know, developer would still need to take out construction loans, but then there would be a. Repayment at the time of closing. And then they only ask for a 15 year deed restrictions. They're trying to build equity. So the program really started to. Advance home ownership and equity and. Minority populations and populations that don't typically have home ownership. So. You know, I don't know if it's something that could work in Amherst, but. It seems like they're. They said they probably have, you know. I don't know. A third of it is probably in projects already. Some of it is, you know, really perspective projects. And so. They're looking to get projects going. So, you know, whether or not it's an Amherst, but. It's up to 120% AMI. And. Like I said, only a 15 year deed restriction. And you can combine it with other funding, you know, but then you'd have to lower the AMI. So. And they're really hoping to get projects that are already through the zoning process. So. So. You know, it's okay if we have something that might be a year or two out, but. I just thought that we could have a future discussion if we think it's. A project that's worthwhile. It can't fund a home ownership program where, you know, they give out grants to different first time home buyers, but. I asked that. I thought that'd be a better way to go. Amherst, if we could get $10 million and whatever $3 million and do home ownership, but it doesn't work that way. Well, if not East street, maybe strong street. Yeah. I mean, it's interesting. They do, you know, condos or, you know, any type of home ownership unit can be mixed rental and home ownership, but they would just, you know, subsidize the home ownership. Okay. Well, great. That's good news. Okay. The next item is review of minutes from June 11th. I sent those out. I think earlier this week. Or maybe earlier than that. So does anybody have any comments on the minutes? And they'll be accepted as submitted. No comments. Okay. Yeah. I have a comment. Oh. In the discussion about one 32. With Hampton road. I think Laura. Invited us or implied that, that we were welcome to help. Come up with a name for the. For the house. Yep. That's right. I forgot about that. And are you saying that's not reflected the way you want it to be? Or. I don't think I see it at all. Maybe I just missed it. Not right.  You don't have a name tonight. Do you? No, I don't. I think that's good. I can add that sentence to the notes. I'll make sure that's in there. That's what we want to do. Okay. Thanks, John. Okay. So with that amendment, I think we'll accept the minutes as submitted. And we're ready to move on to the discussion of. The general public opinion of the. Amherst COVID-19 emergency rental assistance grant program. And as people know, I invited Janet. Janna is the assistant director for community services. For community action, pioneer Valley. And she is the person primarily responsible. So I asked Jana to do a few things, including introducing the program. And then beyond that, there are a few open issues I think we could discuss. And also we should go over the work that we've done today on marketing the program and see if people have any other ideas. So I think that's the main focus of this agenda item. It's probably our biggest agenda item. So with that, I think I'll give Jana the floor. Right. Hi, everybody.  And I think John forwarded the application earlier today that we, yeah, there it is. So it's, I mean, so the program guidelines are, you know, basically what the town of Amherst asked us to do. So you need to live in Amherst, you need to be a renter, you can be of any immigration status, you need to have reduced or no income due to COVID-19 since April 1. Either living in subsidized housing, have a Section 8 voucher, have an MRVP voucher, be currently receiving raft, except if you're receiving raft for utility support. We are following the low income housing tax credit rules around students. I can't be entirely comprised of college students. There are exceptions to that. So if you were a single parent full time student and your children are full time students and that would be, or, you know, your school age children, that would be fine. You can have sufficient, you have to have insufficient income to pay your rent for three months. There's income limits. We're going to do a lottery and preference will be given to families with children under the age of 18. I will say that we are off to a great start. I'm actually, I was a little surprised. We've gotten 26 applications since Monday at 3pm. Wow. Yeah. Yeah, it's pretty, pretty exciting. Of the 26, 22 of them are complete. Four of them are partial. So what I realized is happening is if you go, and this may have happened to any of you who went to look at the online application, if you go on to the online application, and you either start filling it out or you even just look at it. And then you close your browser. The online platform we're using then counts that as a partial application. So I have four as a 4pm I have four that are partial. Some of them. Clearly, you know, wrote their first name and then in email address and then close the browser. So I don't think that those folks even actually know that they submitted an application so we I need to contact them. I mean, it included me, Jenna. I mean, it included me this morning because I kept thinking, why is this happening. I looked at it too, I think so on Mondays. I did too, but I didn't write anything anywhere. So I don't know, maybe didn't count that. I'm more blank. So I meant to look to see if I could change a setting so that would stop happening just because it's, I mean, it's fine but it's a little confusing. Of the so of the 26, three of them so far appear to be ineligible I have two that live in subsidized housing. And one that lives in leverage. So I will follow up with them. The good news on the people who live in subsidized housing are good news bad news is that they, they, they appear to owe rent, owe back rent but community action has a whole lot of other money that we can spend on those folks and so we can just contact them. And let them know they're ineligible for this program but can actually then most likely assist them with some other that we have so I think that's that'll be fine. And, oh, let me see five of them, which is what's most interesting to me, just looking at the ones that we've gotten is only five people are behind in their rent. We have a lot of proactive folks which is great. But I was surprised I thought more people would be behind there's definitely a lot of comments about people worried that their unemployment is going to end. So, I think this, you know, is perhaps what you all were thinking about when you designed this program is that it really could help folks who aren't behind maybe not get behind or, you know, help keep them afloat longer. So we, yeah, so we've worked out some of our procedures about how we're going to handle this. Again, the volume is a bit higher than I expected in the first three days. But we have staff working to contact the completed application folks. The way that it works is we fill out the online application it doesn't ask you to submit anything. And so we have a program called share file that's a Citrix program that we've been using for our other programs that you send basically an email to the applicant that said with a link for them to upload for example their pay stub or their, you know, their documentation of their related income loss or reduction so we have staff that are basically dedicated to this project that are going to be contacting those folks some people also have some some you know there's some questions missing on their application so we just need to clarify. One person has 11 million dollars and listed as income and I think that that's just a fantastic. Yeah, it is. And then it's like, okay, that's clearly wrong. So, you know, sometimes, you know, when you people are filling it out themselves they make mistakes and so we just need to make sure that we know we have all the correct information. And so all these applications started, they've been submitted online, right, so they, they've been. Right, so we haven't, I don't think as of today have had any requests for the paper applications we've gotten some calls. We've now at the top of the online application it says in Spanish if you need assistance with the application to call community action and we have bilingual staff that can help folks. Either do it with them over the phone and translate into Spanish or we'll figure out how to get those folks the application. And that yeah though that's I mean I've seen john sent it out a lot of places so that's clearly working. It popped up on my Facebook feed in several places already. I mean that's my update and I'm happy to answer questions or other concerns that folks have. I'll just say quickly that you know we, the town put it on, you know, our website and our Facebook page, we emailed every, every landlord who's registered for the rental program so you know, this week, you know to, I don't know how many hundreds of landlords should have received it this week. I know some have they've emailed back so that hit a lot of people. Yeah. Great. I got a question. This is said for our non English speakers. You did say that you do have Spanish speakers but as we know, in Amherst, you know we have came both in Vietnam means the ocean Portuguese we have all these other folks who don't speak English, you know when I took a look at the application, I understand why you need all that information but when you first look at it again, you can look over well right. Because I think it's like six or seven pages. So for our non English speakers outside of Spanish, what kind of help is there for them. Um, so we can actually has a contract or account with the language line. I think that that is probably what we would do if we had folks who were speaking on something other than Spanish. We have the language line to probably, we have the application, the staff have it in a fillable form, so they could go through the application with the person on the phone, which could be time. But I'm open to other suggestions if there's other community organizations that we could work with to help with translation. I'm happy to reach out to them. And on the Amherst webpage, you know, the way we embed text is that if someone uses Google translate or if they have a software that they can it translates everything to their native language and I think we accommodate up to 80 languages so I don't think the software program does the same thing so if someone you know because it's it's it's different when you're in this when you're in the application it's not you know like the webpage it's the software so I don't I don't know if they would offer a way to do that so. I can look into that. Yeah. Thanks. That way you don't have to, you know, translate over the phone it's you know if someone has technical difficulties you could, you know, but, you know, I worked with our it on that so whatever we put on our website can be translated I guess pretty easily I don't know how clean it is like I don't know how accurate it is. It's a different language. It's fairly accurate, you know, I do, I check the Portuguese translation is it's fairly accurate. It's not 100%, but it gets a point across let's put it this way you're done. Good. Yeah, sometimes we're told not to. Yeah, sometimes if it notices that something we want on the web page is either like, you know, compound sentences or something that may be difficult to translate to the web now so. I was just wondering where else. I mean it went to landlords went to programs I wonder if there's any like just general public outreach and papers or any other what other kinds of outreach things have happened if if they have. Yeah, it will probably be in the bulletin. I just made a note to myself I had meant I thought I'd emailed it all a double check to the Amherst human service network into COSA to the Hampshire Council of Service agencies. And that'll hit a pretty broad, you know, a lot of agencies can then have that information. Community health center. They're part of I think the human service network, the Amherst human service network but yeah, they just make sure. Yeah. The process of doing a mailing, not specifically for this but just in general of all of the programs, sort of coven related programs that community action has. And we were sending out 2800 postcards, I think they went out today, not specifically in Amherst but I think the Amherst there's like at least 200 families on the Amherst list, using our fuel assistance database so that will also hit people some people directly at home. I know that I've emailed and I might send out some more emails to like family outreach of Amherst. I told Laura Reichman to Amherst community connections whaling to Craig stores Kevin Noonan, and also to the Amherst tenant assistance program run by Julie Federman and Nancy Schroeder. So those are all places I've emailed. I also emailed to the Amherst schools, they run a meal distribution program for poor families. I sent it to two people who have responsibility for that program. My hope is that they will take the online form, print it and distribute it with food to people who come to the six or eight locations where these meals are available. I don't have any good feedback from that but I hope so. Mindy Dom has also distributed on her Facebook sites and on Twitter. There was something else. Did it go to the survival center. Did the survival center get it somehow. Lev is on my mailing list. Lev Benesra so I'm sure she got it on the other hand one of my mailing list or notes to left kick back and said that she's away till July 20. And I'm not quite what we emailed today so I think she knows about it. Yeah, well she might have been away today because that's when I got a kickback. Maybe if you talk to Kelly, she'll know somebody else there who can be responsible for making sure it gets distributed at the Amherst survival center. Right. I mean I'm hoping to email to the landlords. You know, I'm hoping they'll approach their tenants, you know with it we don't. I mean, I don't know how that works but like I said a few were interested in it and they had follow up questions or something so at least we know I know it went out but I'm really hoping that we'll get you know landlords interested. Yeah, I actually got an email a couple of weeks ago from a small Amherst landlord who has two tenants that she believes are eligible for the program. And I did send her an email with the announcement. We'll probably get something back from her tenants. I don't know if there are any other ideas that we haven't mentioned that people think we could use. Yeah, I don't have a particular thing in mind I wonder if there are any, I can't think of them offhand but if there are any immigrant support organizations, for instance that we could make sure get a copy. Are there any Americans? Is that is there an office in Amherst for Center for New Americans? Yeah, they're part of the Amherst Human Service Network so they would see that you know just thought when you said that I thought of community legal aid. You know they might not be, they should, I should probably contact them directly. The Amherst Senior Center is also on my mailing list. The director and one of the staff members. He said this but we could also reach out to Massachusetts Job Jobs with Justice, they might have a few ideas or be able to distribute among their network. Okay, good idea well thanks. How about churches, the churches and synagogue. I was gonna say the exact same thing Rita. At least a half a dozen of those, the pastors or somebody else is on my email list. I'm not sure whether it's enough, but it includes at least half a dozen churches and Amherst. Maybe we could do it a little bit more systematically. Make sure we don't leave anybody out. And the JCA. The ACA is on my list, Judas Wayne is on my list. The rabbi. I'm not sure the mosque in Hadley is on my list. I don't know if I have an email for that. Anybody has contact there. That would be another to. I think I could, I think I could get it through a circuitous route but I think I could get it there if you. Yeah, I could get it there. Okay, good Carol thanks. I just emailed it to the, the Amherst Pellum neighbor to neighbor group. Oh, yeah. I do think if John right if John I saw John's email to the schools and lunch program I mean that's if that goes out that'll be. You know, reach a lot of families to directly. I don't know how they would, you know, if they send an email out but that'd be a good one. I don't, yeah, I don't have too much else. I mean, I guess I can email a few more places and we can see what happens. It seems like the words out there who already received 26 application or 22 or whatever. As of right now I'm not worried, but it could slow I mean sometimes you get a lot in the beginning and then it slows down. So, yeah. That's what you would expect. But I at the level that it's funded we kind of guessed that it could serve as much as 80 households, maybe even more depending on how many are family family versus single. Okay, there were a couple of issues that have come up that I thought we would talk a little bit about seek everybody's advice on these. One has to do with the fact that there are several pieces of demographic information that are requested on the application. And Nate raised the concern that that might be a barrier to some households and applying either because it introduced the level of complication or they were reluctant to answer those questions. And as a consequence, they, they might not complete that information. Jana, on the other hand, just speaking for her for a minute, said that community Action Pirate Valley uses that information on all of their programs or maybe virtually all of their programs. And it's part of information they need on reporting to the federal and state government about who enrolls in their programs. And so, even though this is a separate program from Amherst, they still would follow that that procedure. I was wondering whether or not you could allow people to simply skip those, and it would show up as missing data, but you wouldn't necessarily tell people that they could skip it so that very few would end up not filling it out since it would be present there. Usually with an online application, if you skip an item, the application will say, oh, you miss this, you've got to get this, it's a required field. So, those are the concerns, if you like, that have gone back and forth between Nate, Jana and myself. The other options would be to say, okay, we're keeping them all in, they're all required. Another would be to drop them all. So what do people think about those questions. I can also just clarify to on what, so the way that the online application is is set up. Race. So these are all listed as required fields race has a decline. Oh yeah, military status I made not required. I could add decline to the other ones and so people could not they could choose not to answer ethnicity. Primary language is kind of important for us to be able to communicate. But I could, I could make the other ones. I could make it. I mean that one. I have mixed feelings about why we ask it in general. But I so and I work status included for the head of household because again I feel like that's actually sort of helpful information for the program to know, you know what they check off but my concern about keep putting them all is not required is that then people will skip them entirely. I would add a decline so that folks could just choose it not to answer them if they didn't want to. That seems fair to me then you me so you know that someone looked at it they had to see it, but they can decide that I don't really want to answer this but you know that they decided that they didn't just miss it. Not see it there or something so you as long as there's an active ability to say I don't want to answer this seems okay to me. Is that for the items that Jenna described where she would include that or for all of the items Carol in your mind. I would probably go either way, especially the ones that already have something like that there are you like sexual whatever it is you can say other race you can say you decline. I wasn't thinking about this when I ever looked at it first time so. And it may not be an issue. I mean I didn't realize that some of the things were to say decline so I do kind of like that option that means they actively had to answer the question as opposed to not knowing if they skipped it or missed it. I will say on gender. I can't, I can leave it other I can't put decline. I have a database. I have to have first name last name date of birth and gender in order to put like those are the four unique identifiers that the agency uses to not duplicate people. So that one would be really hard for me to have decline. But you can have other. Yeah. I could also add other things if people wanted it to not say other but to say other categories. Well, I mean I know for the race, the HUD has those, you know, odd, you know, categories and so, you know, when we for some of our agency sometimes a lot of them come back and a lot of others just checked because, you know, either they're comfortable or they, you know, how do you, you know, if you can only check one. I mean, I think the, yeah, as long as the trust doesn't feel like it would be a, you know, a barrier I just didn't want, you know, applicants to become ineligible if they feel uncomfortable answering one or two of these demographic questions and so you know we as a trust we had never discussed that. And I just, you know, just now we can now I just want to make sure that we're, you know, we wouldn't be excluding, you know, potential applicants. Any other discussion? It looks like Mindy, Mindy Dom's an attendance that she has her hand raised. Oh, okay. Welcome Mindy. Mindy, you can unmute yourself, you'll be able to speak. Hello, can you hear me? Mindy, thank you for, I'm thrilled to be here and kind of listen in on the implementation of this incredible, wonderful program. You're fading out. Can you hear me better now? I'm going to be right on top of my computer. For gender I was going to suggest if it's possible with the community action database that the third option should be an X. And the reason why I'm suggesting that is that I actually have legislation in the state around creating a non-binary option on state applications and forms. Currently, the RMV uses an X for a third non-binary option for gender on driver's licenses. So instead of other, we could conceivably put an X, and that would allow people who consider themselves non-binary to see that they're represented in those options. That's all I have to say. Thank you. I'm really grateful to have the opportunity to listen in. Thanks Mindy and thanks for distributing this to your network. My pleasure. I wanted to tell you, I think I texted you, John. I've also sent it to other elected officials and the United Way. And I think that you may want to also include the housing court in the places that you send it to. Okay, good idea. I'm going to agree with Mindy with regard to gender, but I'm really torn with having it all be voluntary in terms of putting in there or not. I mean, certainly decline is an option, but I think it's important also maybe it needs to be said there somewhere that we want to ensure representation and that's why we want some of this information. Because we also want to make sure we're targeting or that we're including, I don't like the word targeting sorry, including as many members from our community as possible. And if we're not reaching them, I think then, you know, we have to rethink how we're doing this. Yeah, no, I agree. I mean, sometimes we'll let service agencies do what we have a lot of funding is say that, you know, we encourage them but it's not required but I think on the online application I guess it's maybe you don't have the ability, I don't know if there's an ability to write, you know, like a disclaimer in or something or like, you know, used for grant reporting only or, you know, stays in house, I mean, you know, just, I think sometimes we get questions like, you know, does this get reported to federal authorities? Most part it's no, it doesn't. So I don't know if there's a way to look at that on the application just so it eases people's apprehensions if there are any. No, I think I can tell I think that's a great idea. I can do that. I can send, I'll draft up a sentence or two and then I can send it to John and Nate to just make sure that it's capturing what you want it to say but Okay. Okay, I want to move on to another item. We all agreed that a letter should be sent out to landlords, asking them if they would match or contribute in some way to additional rent forgiveness beyond the emergency rental assistance program. And both Dana and Nate, I believe, said that we really should have some kind of form that the landlord sends back to us if they are going to do rent forgiveness. I, on the other hand, were thinking, why do we want to add other paperwork to this program? And so I wasn't sure that we needed to do that but really just have some informal process where landlords could email back their response. So I guess I'm willing to be outvoted by Jana and Nate unless somebody else has a thought about this. I just want to clarify that I actually was suggesting that we give them a sample lease addendum that they could use because I feel like if I was the landlord, I wouldn't want to just have like a verbal agreement with my tenant that I've reduced their rent for three months. They, you know, the lease is going to say that they owe that money. And so if there was a way to say, oh, and you can use this, here's a sample lease addendum that you could sign and have your tenant sign and attach to your lease that reduces the rent for those three months so that they feel like their lease is still valid. And it would save them the time of actually like writing up their own lease addendum, because I think they would not want to do that. Nate, would that satisfy you? Yeah, no, I think, you know, I thought, I, yeah, I think the lease addendum is fine.  I don't know, right? Or I'm not sure why they would if they wouldn't, but I mean, I think there was like a, you know, one page addendum that seemed pretty simple. It was like filling the blanks if a landlord is willing to and it was pretty generic and easy. I guess it seems important to me is there's some place where there's a record of the agreement so that you can't have either the tenant or the landlord come back and say, I never said that. You really owe it even though I said you didn't or whatever. Just so, just so there is some way to go back if there becomes something unclear later about, well, what did you really mean? I thought we didn't have to pay any more rent forever and no or whatever, you know, it just seems like it would be useful to both parties to have some record of whatever the agreement was. Okay. Well, I was going to say, so we're going to send the landlord an agreement, right, that says we agree that this person's our tenant, and that we're going to accept this amount of money from the town of Amherst for these X amount of months. If you could also then send them the, you know, at the city we could have then also say if you're going to reduce your rent for those three months with your tenant, send us back a copy of your lease addendum with your contract. So let's hold up the process necessarily and have them then take a long time but I feel like my experience with landlords is you really only get one chance to get the documents back and it's usually when you are, they are waiting to get money from you. So if we pay them, I think we're giving, they're getting less incentives to return something. So if we are trying to sort of get it all at once and sort of wrap it up and then they don't have to talk to us again, you know, every month, then that might be an incentive for them to return. I apologize if there's any landlords on the phone but sometimes, you know, it's just easier if they are looking for your payment. So we also want to provide an incentive for them to be recognized by the town as being part of this program. So I think we want to collect their names as well and maybe not how much, you know, we don't necessarily want to publish how much they forgave but a cumulative amount of forgiveness seems like it would be something positive to publish. Yeah, I think that's a good idea Rob. Well, we'll work something out with Jana that includes the addendum, but also lets them know in the letter that we do intend to publish the names of landlords who have put in their own rent forgiveness but not the amounts. Great. Okay, there are only a couple of other things that I wanted to mention. You might want to talk about this. There is apparently an avenues from the state or federal cares program where the state will end up reimbursing us for 200 of the $250,000 that we've agreed to put into this program. Is that correct Nate. Yeah, it may be all of it.  So, you know, if we were just doing a rental program, and it wasn't so directly related to the loss of income because of COVID it wouldn't, it would be harder to be, you know, reimbursed but I really think that this seems eligible so I've sent information to different staff who I think then conferred with, you know, I don't know what agency they're working with, but it seems like this is eligible for reimbursement so, you know, we do have to, the town has to pay out first and then we would request reimbursement at some later but yeah I think we may even be able to recoup the whole cost 200,000 was originally for what was thought was the rental subsidy amount but I even think the full cost can be recouped we're still working on that. Okay that's great. It also means that after we get through with phase one and we look at what we've learned. If we want to expand the program and continue it into another phase. Then we would probably have the resources to do it, whether we get reimbursed for that second phase or not. So I think that's very good news. Yeah I think the only caveat there is we need to spend the money by the end of the calendar year, which I think you know I don't think will be a problem but Right, we should be able to do that. And could I just clarify calendar year being December? Correct, yeah not fiscal year but just I think calendar year is what I was told. Two other items to mention. Wayfinders has just announced a new expanded raft program that people can apply for. It's actually a new state program again I believe using federal money but I'm not quite sure. In any event, it's broader than our program in a number of ways. The one that I particularly recall is that it would include mortgage payments, not just rental subsidies but also mortgage payments. And that will be a first come first serve program. There aren't population or other priorities for it. I believe those applications are probably now available online. It's a statewide program but in the Pioneer Valley, it's run by Wayfinders. So it's possible we'll have some people applying to both programs which isn't necessarily a bad thing. I don't know quite how you would handle that, Janet, but it would be a possibility. We ask them if they're currently receiving raft but we don't have to receive applied. So when we send the landlord verification out to the landlord asking, you know, saying, asking them to sign off, we do ask, you know, are they receiving assistance from anywhere else. So sometimes if there is a lag from when they apply to us and then let's say they got approved by raft and raft paid something. Then presumably the landlord would know and if that was the case then, you know, we would perhaps reduce what we were going to pay. I mean, or, you know, figure it out with Wayfinders. So, yeah. It could extend the program so that they get three months from us and three months from Wayfinders. It could. The other thing I wanted to mention is that CHAPA in collaboration with Mass Housing Partnership did a survey of voluntary survey with towns and cities that are doing these programs. And I believe there is something in the neighborhood of 20 programs that now are launched or will be launched shortly and another 20 towns or cities that are considering launching these programs. Now there are 356 towns and cities in Massachusetts, but nonetheless, if we had as many as 40 towns and cities that were undertaking this, that would have a very significant statewide impact because I think we're talking about larger rather than smaller communities. And I did send people a link to the CHAPA MHP report if you're interested in knowing more. Yes, there are other comments or questions. I think that wraps us up for discussion of emergency rental assistance. Thanks very much, Dana. You're having me. Nice to see you. Yeah, nice to see everyone. Wait, how do I get out? Okay, the next, most of the next items are relatively brief items, I think. The zoning board of appeals is now met twice to discuss Amherst studio apartments. And I was going to say a little bit about them. I know, I think Laura is sitting out there. So if she wants to add what I have to say or maybe just substitute for me. We can do that. Yeah, Laura, could you raise your hand? And Nate can recognize you. She raised your hand. She's, she's brave. Laura, you can, you can speak. Hi, everyone. Can you hear me? Yes. So, yeah, we just embarked at last on our hearings with the zoning board of appeals. I think some folks here listened in or participated. The initial hearing was a presentation primarily by valley about the project with a bevy of questions coming to us from the zoning board. And then the next hearing was public comment. And again, some of you spoke and I really appreciate it. Most of the commentary was positive. We didn't have a lot of critical comments. And then there's been a mix. John's been keeping you at prized of the letters and things public comments written public comments that have been coming in. Again, strong level of support with some mixed in with some pretty fairly intense critical commentary by people who live nearby. Our next hearing will be on August 6 and we'll continue the discussion then with the zoning board of appeals. People who can join our most welcome, because I think from here on the least portion of each hearing for public comment. And so people can speak their mind or they can address other comments they've heard during the hearing. So, the more the merrier. Yeah, we'll say at the last hearing, the chair allowed approximately three minutes for each public comment, which is still significant. I assume the same thing that will happen on August 6 at 630. I'll probably send out a an announcement and a link just before. But if you can put it in your calendars it's great for the zoning board of appeals to hear real people in the community. Talking about the support for the project. In addition to receiving written testimony. I agree with that and, and to give a balance. I mean if they were hearing, you know, 10 negative comments in a row, it would affect them and so we always wanted to be a balance of comments that are that are being heard by the zoning board. Also, if people want to follow along the towns done a nice job of posting a lot of information online. So our zoning application is there you can see what the plans look like now. You can revisit the support of services plan if you want to you can look at budgets so really, really a wealth of information is available online. Yeah, I think the August 6 meeting will focus, at least in part on the social server service support plan. Because it didn't seem as many of the ZBA members were familiar with that in the earlier two meetings. And it does appear that that's something they wanted to spend more time talking about. Right. So, if anybody has anything to say in particular about that. Again, I would welcome it as obviously Laura would. Just, you know, remind us members or if you want to let people know they can also you can also submit comments online is an online form where you can send an email to myself or to marine pollock is the planner who stats the ZBA so comments can also be submitted and writing and they're transmitted to the ZBA as well. I think the ZBA. My thought on it is they've been they've been talking about some pretty small details in my mind on the project and I think the social service plan. And there's some questions my neighbors about you know why 28 units why not less why not family unit so I think maybe in August will be a more kind of robust discussion about some of the substantive issues of the project. And so it could be good to have people there to support it in the ZBA has been talked about, you know, landscaping and free to things which is, you know, important part of their review but I feel like the members are satisfied with the plans or they just haven't been asked to just to talk much about in general in terms of, you know, the number of units or that it's studio apartments and kind of quiet about that so I'm not sure how, you know, what will happen in the future meetings that. So, I think more support and explain the need for that, the better. Okay, any other comments or questions about the ZBA process. Then we will move on. Oh, somebody have a hand up Nate. Yeah. Am I unmuted now. Yes, you can. Okay, thank you. I just wanted to say that my impression is maybe unfairly that members of the ZBA, for the most part have no understanding of how much housing costs. You know, they haven't been dealing with this issue for months and months. And so they really don't understand the need as well as I think they should. So I would like to encourage people to weigh in on that topic. Thank you. Thanks, Alyssa. Okay. Nate has been trying to get contracts for wetlands consultant and possibly another consultant related to both the East street school site, and the strong street site. So, where are you with that now Nate. Actually, there's a consultant out of window who's we're working on a contract for the East street school site now. And I thought I would have had a little more information. You know, he provided one quote as well and do the flagging. And then we, you know, we're at we actually want the consultant to bring this to the conservation commission and get it. So it was approved as a. So previously we had some study it but it didn't go anywhere. So it's never a formal wetland delineation and the consultant we're working with is willing to do that.  And then, you know, you mentioned strong street but East street was the priority so just trying to get that moving. And if there any word when the town would allow people to come in to look at the asbestos and lead issues in the building. Just this week they said that they would allow people in. So, starting, you know, mid July to let people in so you know, I'm going to reach back out to Accutec or, I forget what it was, who had been in there before but yeah I mean I was just told this week that they're allowing people and consultants. Okay, it would be great if we could move East street along and even get started with strong streets and people know my preferences to be looking to get the next thing into the pipeline, not to sit back and say oh it's great we've got going, but to start to think about how to get C and D going as well. Yeah, yeah. I assume that there's nothing happening on Hickory Ridge at this point. No, I've heard that it's, you know, still looking positive for the town but nothing, nothing yet. Okay, any other questions or comments on East street or strong street or anything else related to finding new sites. Anybody have a new site we can go for. Okay. Next item is brief. I'm not actually quite sure about this, but I believe that the CPAC has made two recommendations related to housing to town council but I don't think they've been reviewed by town council yet. A new program would give approximately $245,000 to Valley Community Development to start up a new home buyer program in Amherst. A few years ago, which they did pretty successfully, a new program like the older one would allow for four households to be supported through the home buyer program. It's getting harder and harder to locate possible homes in Amherst, but nonetheless, if it has some success in the past, then I think it's great that CPAC has voted to recommend that program to the town council. I heard and I can't even remember where I heard it, but that CPAC also included $200,000 for the housing trust in its recommendation to town council. I guess I went around looking at various sites on the town web page and couldn't find any confirmation, but somewhere I believe that that was communicated to me, even if I can't tell you the source of this moment. So both of those are great for us and great for affordable housing in the town, assuming that I've got it right. Okay. And, you know, in the future we're going to have to continue to work on CPAC for support. We've done pretty well for the last few years, and I hope we continue to be able to do that in the future. I had a couple of legislative updates. Since Mindy's on if you want to talk about what you're familiar with related to housing or augment whatever I have to say, that would be great. The House and Senate have agreed on language for the FY 2020 supplemental budget, which is basically money appropriated into the principal budget they passed earlier. The good news is that includes $20 million to expand draft. The cap had been pushing for 60 million. But I suppose they'll be happy 20 and hope to get maybe 60 million in FY 21 21 budget. That would be good. The budget also includes 13 and a half million for housing authorities and 5.8 million for permanent supported housing, which I guess goes into the DxE budget. So that's good news on the positive end for funding for affordable housing. Some of the things that have happened that I thought I would mention, and these are bills introduced by people in the House and Senate in the house. Mike Connelly and Kevin Honen have filed a bill to protect family stability for tenants. Homeowners also and certain multifamily housing owners impacted by COVID-19. These protections would lengthen the eviction moratorium and a number of people you may have also received other emails about extending the eviction moratorium. So this bill that's been introduced would accomplish that. The bill will be assigned to the housing committee, I think is a joint committee. So if people want to send letters or emails of support, I think that would help push that along. And then the other thing earlier in June, Senator Sal Domenico filed legislation to create a statewide right to council pilot program. And again, that's something that we voted for and cast town council to push as well, which they agreed to do. And we're moving toward a right to council program to help to prevent eviction. That would be great as well. Mindy, if you're still out there, is there anything you wanted to add? Maybe not. Okay. I don't think Mindy's here anymore. Okay. Thanks. Any other notes or thoughts about affordable housing related legislation? Okay, then moving on to the next item. We're getting towards the end of the agenda folks. There is an opening for a new trust member. This is the position that Nancy Schroeder left. I don't know if it was two months ago or three months ago, I can recall exactly. Anyway, at this point, I think there could be as many as 10 people who have applied for the open position. Yeah, I'm not sure they've all applied. Some may be holdovers from the last application who may still be interested or may not. There are 10 people on Antwell Mills lists. She's the one who's managing these four. The town manager, and she's working on setting up interviews with the candidates. Hopefully, which will occur later this month. So I'm not sure if they're still. If they're still entertaining do applications. If you know somebody who's interested, check back with me or with the Angela Mills and we'll find out if there's still additional opportunities for people to apply. I think I was trying to look quickly you still can complete a citizen activity form right I think that's just seeing it. Maybe you can submit at any time. And so if someone's interested, I would just, I would encourage you to find it actually online. Interest and survey. Yeah, oh community activity. So yeah, I think you can complete that anytime and submit it so. Okay. The only other item that I had is just to mention upcoming events. We already talked about the ZBA hearing on 132 Northampton Road, which will be on August 6, 30pm. If you can put that into your calendar to potentially speak on that occasion. That would be great. The schedule date for the next housing trust meeting is Thursday, August 13, which would again be at 7pm via zoom. Is there any public comment that we haven't heard already this evening. Is there any public comment that we haven't heard already raising an eight. No, I was going to say, I think I'd emailed the trust and the planning board would discuss 40 are next week and they may not think there's they're reviewing the Amherst media site plan for the new headquarters, and that was continued to July 15, depending on how long that that review goes they may not discuss 40 are coming next week. So I'll just, I'll email the trust, you know, sometime next week just to see if there's any thought on that from the planning board chair but, you know, if I don't want people to sit around for two hours waiting for them to discuss it, but I'll let you know if I think it's will be an agenda item and I'll get to it. Thank you. Someone told me the town council discussed something and earlier in June, and it was, it was almost a five hour meeting. And so I find I was like, well, when in the meeting, I'm not going to have to watch five hours to listen to 10 minutes. Luckily, someone could tell me, luckily, someone emailed me and told me when I could start listening. Yeah, so I don't I don't want anyone to, you know, it's reported anyway so if you can't make it for next week when they talk about it you can always watch it later but I think you know the board has received a lot of comments about 40 are. And so they're discussing whether or not it's something to move forward with in the downtown or, you know, more move forward with it all right now so I you know I think I think they haven't had a chance to really discuss it amongst themselves which they hope to do. Okay, I don't have any additional items. Anybody else have anything they want to raise before we sign off. Okay, well, this time we're leaving you with the rest of the evening actually open. You can all go online and watch Hamilton or something else. If you'd like to do that. I thank everybody for participating in this meeting and for your comments on our emergency rental assistance plans. Thanks everyone. Okay. Thank you everyone. Thank you everybody.


So, welcome to this talk about integrating React.js with PHP projects. My name is Nacho Martin. I work at laymini, which is an agency I co-founded, and in the last time, every project needs a fridge frontend for one reason or another. When you talk to the customer, maybe it's a single-page application, but it will be the best choice for them, or maybe it's a more traditional approach, but it will be best. For instance, an admin panel, but they always have some requirement, it always happens. For instance, they need some kind of sub-application in there, complex application, which needs a lot of JavaScript in there, for instance, a calendar for bookings that you cannot do it in static HTML anymore or with jQuery. So we have been thinking about this, how to solve this for some time. And we really like React.js and React native, the mobile version. We have been using it for some time now. So this talk will be very practical, but I would like to address this question, this thing that I see from some friends of mine more and more. As the frontend has become more and more complex, and there are always new libraries, there is always this new library, this is the greatest thing ever invented, and then, yes, next month appears a new library, this is the best thing ever invented, and use abandoned, the last one. So some friends of mine just say, know what? I consider myself a web developer in the past, but nowadays I consider myself a backend developer. I write PHP and I am now specialized. So I just focus in providing a great API, like I do the most beautiful APIs you have ever seen. And I think this has a good side, which is that you are specialized, so you can help your team to build better products. I mean, it's a way you are focusing something, so you become great. But it sometimes comes with this other sentence, say, this and. And you know what? Now that we are thinking some beers, I tell you I don't care any more about this frontend thing. I think it's crazy, and I don't care any more about JavaScript or whatever they are, it's consuming my API. And this is not so positive. It has some, and I think it has some, it has a bad side. For instance, in companies, I see sometimes that now that there is an API, for instance, they try sometimes to divide backend and frontend teams and put them in the same room, for instance. I have seen teams where frontend teams are now under marketing umbrella, and they can only talk by issues in a book tracker. And I haven't even seen a company where they cannot even talk by any way. So they resort to open the door and shouting corridors, like the API is not working. What do you mean? Which field? And I've seen that. I don't think that's like, it's not very helpful to build great projects, right? And also there is a bad side, I think, in the personal level. Because I think it can make you a bit darker. I know this feeling because I had this exact feeling in a different context this summer, not in the frontend context, but very similar, at least for me, which was this context. I was watching the TV on summer and there were some kids doing these summer solstings, these scrolling things. And I just remember, ah, I used to do this when I was a kid. It was something I could just do. I could do here, for instance. Then, but how long have I been without doing this thing? Well, I said, OK, I have nothing to do. I was in summer. And I said, I can just try. And then I put my safe in position and it became very clear that I couldn't do it anymore. It was absolutely impossible for me. I said, OK, I'm not doing this. But then came this thought, this bad thought. I thought, what if I met the 10-year-old version of myself? What would he think of me as a kid? What would he say? OK, let's see in the future what I am as an adult. Oh, I'm this guy cannot even do a summer solst. And I think it can be applied also to web development. I say, if I think of the version of myself who was so excited about web development and so excited about the internet and the exact moment when I put in my resume, I'm now a web developer. I can do this. Then if I freeze this moment, if I talk to this guy, maybe he asks me now, what are you doing now? Which kind now? Your experience. Which kind of cool things are you building? What do you mean you are not doing this? What do you mean you only do? You can only do one part. Which part is that? What do you mean level-free API, restful? Because if he's not level-free, he's not restful at all. Well, maybe it works for you. Which is best, but it's not what I had in mind. This is not the greatest feeling to have. But I think the good news is that if you are just a bit open to the front end, it's very easy to fix this. And I think that React is a brilliant library to do these two. Because React is not a framework in the sense that it's not a set of tiny tools that you have to memorize, and you have to memorize a lot of calls. I don't like this kind of knowledge, but you have to memorize a lot of things, how they combine together. It's more about a few core concepts that are elegant, and they are very powerful. And learning React means that you become natural with these concepts, which are, by the way, concepts that, at least, made me a better programmer. They are about functional programming. They are about declarative programming. They are about managing the state. So let's see which is the fundamental concept of React. The fundamental concept, let's think how to build this to-do list for this. It's a to-do list, typical application. And you have this functionality to add items, or maybe change the order of items. So if you do the first version, it's not an omelet, because you need to do this. Otherwise, it's fried eggs, so you discover this. Then how to build this. There are two options. One is to think just about the state and think, OK, say, whenever I have a new version of the state, I just re-render everything. I clean the component and re-render everything. This is simple, and it's the kind of work I like to do. It's about logic. It's about you can unit-test it. It's very nice to do. But it's not efficient. If you have 1,000 items or 1 million items and you just want to re-order two of them, and you repaint all of them every time, that's not a good user experience. So we don't use this approach. Instead, we do this other more annoying approach, which is finding the document model, which things to change, which things to move. It's typical jQuery work, for instance, with selectors. This is complex. It's not the kind of problem I like to work. But you have to do it, because it's efficient. Your users count more than that you are enjoying what you're doing. But what if you had something like React says, OK, you focus on the first one. You do the first one. You focus on the state, which is the part of the job that you know your business. And I do the second one. In fact, Facebook's engineer will do the second one in a very efficient way. And in other words, give me a state, like care on the state, on a render method. And I will call it and do it efficiently. So you can pretend that you are just working with the state. If you want more control, of course, there are some hooks to have control over this. Then with this in mind, let's write our first component. We have this very simple component, which is just a counter. We click the counter, and it increases the value. So it produces a new version of the state, which is class one. This is a component that is simple enough to fit one slide. So this is the full code of this component. There are some things to notice here. We will see this component in detail. First, I'm using in my slides this new JavaScript syntax. You will see import, class, things like that. This is the new version. This is much nicer. And I think it's more closer, for instance, to object programming, like class. I think it's nicer, just nicer. So I use it. It's even easier to understand. But we will see later how to translate this to JavaScript. So normal JavaScript that this is also JavaScript, but JavaScript that row serves understand it, particularly Internet Explorer, of course. But about React itself, we have things like initial state here, how to set an initial state, how to change a state, or not change, but produce a new version of the state. It's the right way to think. And render function. In detail, initial state, we produce a new object. This creates an object. State is always a JavaScript object, just as simple as that. And then we can assign a state by calling set state with a new version. So this is important, this thing of producing a new state, because we are never modifying the state directly. So we are providing a new frame, if you think of an animation. Just avoid doing this thing. This is a beginner mistake. You may just think, OK, I changed the state. And it's not working, because React needs to know when.  Then about the render function, which is something that at the beginning is a bit controversial, just for one day or two, is you see this HTML inside of JavaScript that looks very ugly at the beginning. It's not HTML, it's JS6. React will transform it internally into JavaScript. It will transform it then into HTML elements. And we will see later how to really divide the presentation and the code. But still it goes against any good practice I've ever had. You have to prepare. But then after two days, you are like, well, my code is clean, so I mean, it's not so bad. Then good practice to make render as clean as possible. Only a return is possible. At the beginning, ah, sorry. There are some things that change. This is part of memorizing. But this class is not class, because it's colliding with the class in JavaScript, for instance. So it's class name and very few things like that. And then you can also insert the expressions between these pointy brackets. Then about making render as clean as possible. It's just only do these kind of things. At the beginning, you don't know where to put your code, and you know that there is a render method, so you try to put your code. I tried to put all my code in there or whatever I could think of the first days. Here, we don't modify the state. Never. Here, we don't make Ajax calls.  We don't change the state of the world here. It's not something that will work. We have to find somewhere else. We have to write our own methods and call them. With this, we can start building our application. But if we are just writing a component, it will become very large, like very confusing at the end, a very super component. It's not very clean. So one important concept in React is to think about hierarchy, about parent children relationships. That's how we have small components that combine together. So you have something like this. You may, from the user interface, it's typically, from this interface, you extract which components you need. We call something like this, for instance, this separation. How do we work with props? Maybe our project manager decides that now we need not one counter, but two counters. And they have now a greeting in Spanish. I don't know why. Say, click me, amigo. Click me, señor. For me, more polite, less polite. I don't know why, but we have to do it. So we can just use our component that we wrote. Yes, as it was just a normal tag. It's not HTML tag. It would be translated to JavaScript, so to our code. Then, and then in our counter method, now we can receive this name, this property, as what is called props, a state that is given by your father or your parent. And you don't have a function to set props. You cannot change the props from children. So this is something that it's immutable for you. So you have to provide, for instance, a callback from your parent. That's possible. But it's one-way binding. This is important. And with this, we have seen a lot of React, like really a lot. Yes, it's a matter of writing and not committing small mistakes that you make at the beginning. In fact, we have seen so much that we can start to provide good practices. Like, if your component only depends on props, you can have this short syntax that is only about templating. If it's just you find yourself just writing a render that depending on props, you have this. You can have this shorter syntax. It's just cleaner. It's like a lambda function in ES6. Then this allows us to do this good practice. If you have a complex component with logic, auto-logic like Ajax calls and so on, you can split it in two. And one component has all the logic. And then in the render, yes, renders the presentational component that only depends on the state passed by its parent. Then this always, as you see, about the state and how to render it. Looks like simple, but it's really powerful. And then it's everything depending on the state. So we can do things like reproduce the states. If we restore a state, we can reproduce the state of a component or even a tree. We can rewind or time travel. This is particularly powerful in Redux. And do, for instance, is something that is not so difficult to do if you are just changing your state. You can log state changes, or you can, for instance, have storybooks. So you have someone who is just devoted to change styles or choose styles. You can have a storybook. There's a library called React Storybook. It feels great. And you put all your presentational components there with different combinations of states. So boot on disabled, like this. Boot on active, like this. And then they can just change, for instance, CSS and see how it changes. But it has more powerful consequences. One of the most powerful consequences is this what they call learn once, write everywhere. Which means that what if instead of this, what if it's this HTML-like component that we had in our counter, what if we have something like this now? This doesn't look like HTML anymore. This has something that is suspicious here. It's this switch-ios thing. This is, in fact, a render method of a mobile application, what it's called React Native. Then React can take your XML tags or your JS6 tags and translate it to JavaScript and then to native components. So they are more performant than just a web view. That's how React Native works. And it's because the web is just one of the targets. There is one side of React that is React DOM. There is another React Native. And there are more. Some of them by the community, not by Facebook itself. One that I find very cool is this React bless for terminal. You would say, terminal, what has to do terminal with React? Well, bless is an awesome library to build things like this. You see it, but it's like it has a map, it has charts. So if you are, for instance, in DevOps and you don't want to do anything with frontend, maybe you can still use React for things like that. I think it's super cool. And then how to, well, we know a bit of React. It's a bit about practicing this. How can we just use it? How can we, for instance, translate this JavaScript model into JavaScript that browsers understand? Well, recommending it up is to use Webpack. This is a module blender. So you have your source files, and you have some configuration to build your assets that you serve to the browser. And then Webpack has many good things, for instance. Manages dependencies for us, which is great. Allows environments. You have a production environment which is optimized and development, which has debugging options. You can do automatic pages reload when things change, or even you don't reload the page, but you change the code, and the state is the same. So without reloading, you change the code in there. This is particularly powerful in React as it's about the state. You can use preprocessors or transpilers. I don't like much this word, because how it sounds. Like Babel. Babel is for taking a modern version of JavaScript. You can even choose the features, even experimental features, and translate them to JavaScript that particularly Internet Explorer can understand. It has one drawback. It's, of course, a complex tool, so you need some time. And we cannot present Webpack in detail in this talk. However, I maintain a sandbox. If you want to look at it with integration with Symphony, I particularly use Symphony with some things for development and things like that. Want to check it out? I will upload slides later, don't worry. Then, but with this, let's assume we have Webpack in place. How can we insert React into HTML? So it's very simple. You just provide a tag, can be selected, and then you say to React DOM, the web part of React, to insert the component in there. Then, and this is what a front-end guy will do. We are not talking about PHP, right? But we can do some things in PHP. We wrote a library called React Renderer. We were looking at some things we wanted to do from PHP in React, and we ended up writing this library. But we were, in fact, copying another library, because we saw what other communities are doing. And there was this brilliant library called React on Rails, of course, for Ruby on Rails that made this guy from Hawaii. As you can probably guess, I guess. Which is very happy, right? And this library is great. So this has two parts. One is the Ruby part, and one JavaScript part that happens that we can use in PHP. So we can start using it. So you see here React on Rails, the JavaScript part has nothing to do with Ruby. So we can just register a component here, and we wrote a tweak tag. So you can say, here, insert my component with these initial props, right? And this will produce this element that then React on Rails knows where to put your component. So this is only something a bit nice to see, but it's powerful in the sense that now we are rendering from a tweak tag, so we can render whatever we want here. We can render this, or we can render other stuff, and that opens as the door to do server-side rendering. Server-side rendering, otherwise. Also called universal applications, and also called isomorphical applications, which happens to have a very particular meaning in Maths. It has nothing to do with the meaning we are using here. I don't know who came up with this isomorphical word.  I say, isomorphical things. And it makes me feel good, and you only leave once, but just keep in mind that you cannot keep this conversation farther with people. You cannot, yeah. So we had this fundamental premise, and this is another consequence. It doesn't say anything about browsers. It doesn't say anything about, I need a running browser. So you can say, what if you give me representation of a string?  Yes, of course, so we can do this. It's good for, for instance, certain general optimization. Happens that the Google crawler, some of the Google crawlers have JavaScript, or others not, and you never know. Also, the Facebook crawler for social tags can be useful for this. And just to be sure, in Search Engine, faster perceived page loads you present with an initial state, so visual elements are in there. So instead of a spinner, it's a loader, you present with an initial version to the user. And also, we can cache this response, which is quite cool. Then how it works in this tweak tag, which is, you can say, rendering both, which is, by the way, the default option. And then it will produce all the code. Like, it will be everything in the first state just rendered for us. And then when React on Rails, or React finds our component, wants to inject it, we want to render it. And we'll say, OK, I see that it's already rendered, so I just take control over the component, make it more dynamical, and make it like a React application, a typical React application. Then how this works in the server side. Which options do we have to do, really, like low level thing? So first option is to call a Node.js to processor. This is, as it would be the equivalent of opening a terminal, we use for this the symphony process component, isolated without the framework. In this library, php.js, I wrote. An adaptation of one Ruby library I found. So it just looks, if you have Node.js, it just opens Node.js and says, OK, here is my code. And I want to render this component, give me the string. This is slow, because you have to know how php works. After every response, between request, you don't share the state. So you have to say, bye, bye, Node.js. I will call you with 90% of the same call next time. But yes, now I want this other component, all these other props. So this is a pity, but well. Then if you have php.js, php.extension installed that allows you to write, to execute JavaScript code from php, this library will use it. You have to compile it once, but it's easy to use. It has the same problem. You have to see this v8 extension, and you see, OK, I have to say goodbye after this, like, fight up. Using php.pm, I think it potentially can be solved, but I've not tried it yet. I think if someone wanted to try this, something that can work. Because there is a third option that is fast. So it's using an external server that is always running. Doesn't know anything about our code. Our code can be our banking, about health stuff. The node server is the same. So it's a bit annoying, because you have to keep it running as another service. And you have to, yeah, it has to be alive. Not super annoying, either. And it's faster. It's just a no-thing. Then options one and two in PHP. You have to provide this renderer you want, psp.exe.js renderer, or external server renderer. It uses, say, I will communicate with another server with a unique socket. So it was like this. I think that one possible setup is to have in development option one or two. And in production, use external server. And if you can cache in production, it's always better. It's something we can cache. Then now we can do this in PHP, or even in Ruby, or whatever, because people say, if you want to do this kind of thing, you have to rewrite your code in Node, which fix me out. Like, I have been working for years in my code. I have my models there.  They are tested. I have to rewrite, because I want to do this. Yeah, yeah, of course, yeah, because this is JavaScript. Well, it's not like this, but it doesn't mean, either, that you have to do it every time. It's something that introduces some complexity. We have to have our node server running. You have to do some adaptations to your code, so it's not making an hijack call in the first time, things like that. But something, if you need it, you can do it. Facebook, for instance, doesn't do it in Instagram. Instagram doesn't do this, even if they are experts, but they are doing it in other cases. So, and then, now let's talk about a bit about library. It has also some support for Redux. We can also give a brief introduction to Redux. Redux is something that is recommended, even by the author of Redux, which is from, I think it lives in London, at least. It's from London. Dan Abramov, he says, the first time you use React, don't use, it's better if you don't use Redux, if you have to be aware which problem, which kind of problem does Redux solve. So, when you find this problem, you know that you can really refactor your code and make it cleaner by using Redux. So, which kind of problem is it? If you are writing an application and it's a bit more complex, you will find that you have different places where you use the same state, right? So, let's see, we have this hierarchy, okay? Then, where should this state live? So, as children cannot pass their state to their parents or to their siblings, it should live in the first common parent, which is this one, it has nothing to do with the name. And also, they have these intermediate components that are just receiving a name and passing it to the children, like, I receive this from my parent, I pass to my children, I don't know if they are still there. So, you see the code and you see name going around, but the component has nothing to do with name, and maybe you have 50 things like this and you are like, I don't understand my code anymore and when you don't understand your code anymore, you know something that will happen very soon. So, this is the kind of problem that Redux solves, right? Redux, I think the important part is you have to have an idea of a circular flow, okay? I think this is the main point of Redux, because when you are using Redux, when you are at the beginning, it's not so difficult, but the code is split in several files, so you have to, like, so this is going on to this file or maybe this other one, so I don't know, until you have the full picture. And if you, when you have this circle, it's better. So, in your components, you can just dispatch now actions instead of changing the state, and action is like a description of something that has happened, kind of an event, it's just a JavaScript object with a description of what we want to do. And then, or maybe a click, and then there is something called Reducer that has, like, it's a huge, well, can be huge, or you can split in several Reducers, tends to be a big switch construction where you say, okay, if I get, if I receive this action, I know how to produce a new version of the state, so I can produce frames, and I mentioned frames, I know how to produce new versions of the state. This state lives in a store, and the store is connected to the components, so now the components can kind of connect it, like they receive as props the name, so they can re-render themselves. So, this is also explained with a picture, I don't think it will work in PDF version, but it's very easy because it will be like a wall moving around, like, following the arrow, so you dispatch an action, you create an action, goes to the dispatcher, and then the Reducer, using the current state and the action produces a new version of the state that is connected to the component, which will be updated, so same circular flow, right? Yeah, okay. So, we can use this in React Renderer because Ruby on Rails has support for it as well, so we just adapted it, and then you can just register a store, and you can connect your components to this store, so you can have just one component using this store, or you can have several components using this store, which can share state now, so you can, if you are not doing, for instance, a single page application, no JS people like to do single page applications so much, but I don't do them so much, so you can have, for instance, things like this, you have static components and react components, and they can just change the state, and the state, well, everyone knows because they share a store, okay. And this is why it will be like a general thing for a general application, but there is one special moment where we can do even better, I mean, there is a point of really a lot of friction, which is forms, friction between front and back end teams and technologies, because there's a lot of things going on here. When do we need forms in React, which are the cases? Inside of React components, you have a React application, you have a form in there, it will be a React form, important forms, for instance, when it's a purchase form, you are saying or renting a house, and you say, this house is not available on these dates, that you are filling your form, I see that, but I can just give you a recommendation of this other house, so this means better conversions, means more money, and probably means happiness, and also very specific forms, which are very dynamical, or I don't know, a calendar, date picker, I have this customer has these ideas, okay, I can do it. Also, forms that are not boring, even they are not related to money, you can, for instance, this is this company, type form, who builds this service, or they can, I think the forms can be used for other things on surveys, but this is a good example. I guess users are more likely to fill the survey if it's like this, then if it's like checkboxes, or radio buttons, that's just what I would personally do, like, you user, get your user, you have to use these checkboxes, just fill them. I have a feeling I would like to have, but suddenly it's not happening, it's better to use this. Then, typically, PHP frameworks have a form component that you may think it's only doing forms, but in fact, it's doing a lot of things. So, in symphony, it's called form, very, yeah. I think in other frameworks, it must be called the same thing, would be very confusing, otherwise. You can populate the form with initial values, you can give hints for which widgets do you want to use, we can bind and commit data, deserialize it into even existing objects, which is very cool, if you try to do yourself by hand one day, it's annoying, you can validate, which is also very annoying to do one manually, maybe with another component, but it's like integrated. And have a way to return errors integrated in the form. And then, they have typically this other side, create view, or helpers in other frameworks, but in symphony, you create a form view, which is like a presentation of the form. And this does the render view, which is awesome, if you give it for granted, like it's something awesome to have, show errors after zoom meeting there, which is also painful to do, and some client-side validation, right? Not so much, but maybe choosing the right type for HTML. But in APIs, at least, I like to use forms still in APIs to receive requests from post, put, to date, create, or patch, things like that, to update values or create new models. You miss many of these things that you gave for granted before, and you were so happy you didn't know. Like, you cannot have initial values anymore, like you can serialize your model maybe, but sometimes, in many cases, it's not the same representation, maybe you have a date in the form, which is a select or month, year, day, and you serialize your model is a string, so you have to work a bit more on this, some overhead, you cannot give, use interface keys, you cannot return errors easily, you have to serialize your form in some date that you understand, and, of course, we miss everything, we don't have anything in the right side. So, and also, if we want to do this kind of work, in JavaScript, we typically want to do even more stuff, we want on-summy validation, if there are obviously errors in there, like the price is negative, I don't want you to even ask the server, if the price is negative, that's wrong, so you can just send an error to the user. Or on-blur, sync validation, password, it's not strong enough, just keep working on this form. Or on-sync validation, just check with the server, your username is already chosen, I have these options for you, or whatever dynamic thing you want. So, but I still use forms for this because this is super good to have, right? Then, suppose this symphony form, this symphony form, in an example, it's typically in other frameworks, it's a choice, yes, with some countries, three countries in this case, and, yeah, the value you show to the user, you write the kingdom, and the value you want to receive in the post, GB, Deutschland, Spain, Spain, ES, and then a collection of addresses is simple and typical, but if I have to do this in an API context, I start to say, okay, have to do this. Why? Because if you are just using static HTML, you have this great view and creates perfect representation of the form, like everything is done, so yes, great view, is there with the right choices with everything. And then if you submit, you receive the exact data you want, not whatever someone interpreted from the documentation or whatever was written in the documentation, who knows who wrote these documentations, so, and then you submit, you bind the request, and then everything works, but in API, you don't have create view, so you have to, yeah, guess, okay, or based on the documentation, so, show the incorridors, maybe, we see, hey, Deutschland is not there. What's going on? So, read the documentation, what do you mean documentation? I didn't know, even it existed. And then, even if I'm writing this myself, the both parts, JavaScript and PHP, when I presume it, I know that it will fail, like I never, I never guess, in a complex form, I never guess the right presentation, the first try, and I start receiving errors like this. Not extra fields, what do you mean? Values selected is not a valid choice, okay, I'm not sure, I have to check. Things like, one of more given values is invalid, you have a long form, like, well, yeah, this is like, what's going on, and then, well, this was animation, throw in the computer, which is the feeling I have, and someone is like, why is taking you so long, it's just a form, and you are like, just leave me alone, leave me alone, I have to fix this, I know I will fix it. What's the problem we have? So, now we have to keep in sync three separate things, form in the server, API documentation, and form in the client. And this introduces some overhead, if you have to do only three, four forms, that's okay, you can live with this, you can argue a bit with the front-end guy for some time, and then you can be friends. But what happens if your application has to do a lot with forms, like we have this customer, they are some dieticians, and they wanted to build like an expert system, so they gather information from their patients in an interview, what I mean about them, a lot of information, and we build diets based on how they are, physically or what they prefer. So, we were very excited about this, so we wanted to do this expert system, they think it's so cool, how can we do this, we were discussing about this, and some day, I remember I asked the guy, what do you have in mind about the interview? What do you have in mind? Just tell me what you have in mind. And he was like, well, actually yeah, we gather a lot of data, and we wanted to have a step-by-step form, because otherwise we'd be huge, okay? And yeah, he just sent me the first thing, yes, don't work so much on it, but just send me what you have in mind. And I preserved this document for historical reasons in my company, which was this, and we were like, okay, and they started to say, this is just the first version, because we want different markets, and yeah, it will be like, we will be changing things all the time, and they send us like some ideas they have, like if you choose your woman, of course it asks you if you are pregnant, which month of pregnancy, stuff like that, if you, so this is asking you, pregnant in Spanish, by the way, or if you say, I must, I practice sports, how serious are you, you are taking supplements before, after, these kind of things, a lot of ramifications, also they wanted always to use iPad, they use iPad and they want sliders for everything, like everything can be used with a slider, they want to do this thing, so it was like the most important thing, sliders. Like for hours, for everything, well, okay, that's, then if your front and back end teams are just communicating with an API and they don't care about each other, this can introduce a lot of overhead, a lot of delays, I think, and which I think is even more important, even if your project sees the light, maybe you will see that the front end guy and the back end guy, in the Christmas party, they tend to not sit together, like, they are like, no, I've been arguing with this guy for the whole year, I hate him, so this is not great to have, I mean, it's not the way to build better products, right? So we were thinking, how can we fix this? What do we need? So we're missing this, we're missing this create view thing, so we can build something, right? In API, it always means serializing, so the answer of everything is serializing. Okay, then, in which format? What happens that there's a very good format for this, which is JSON schema, which is a standard, people, I tend to use it to serialize models, but I think it's also great for serializing forms, so, well, I think more people think that it's not our idea to serialize forms. With every standard, happens that when you read the specification, at least me, I don't understand anything, it's impossible to understand these kind of sentences, but it's easier if you see an example, like, this is how JSON schema looks, has properties, validation rules, types, you can even add your own options in there, it's not so strict about that, so we can add user interface, we want to use this widget here, so I always say, okay, this is great, let's use this, let's serialize, we are looking about people who are doing things like that, where people are using symphony, we are using symphony, so symphony component, you can take this idea to other frameworks as well, but we will serialize it for symphony components. So, there was this guy who was using forms to create forms in the terminal, in the console, so we used the same approach that he was using, the library, by the way, it's published, it's this one, so basically you have a resolver who has a lot of transformers, register, you can register more or create your own, so on these transformers, resolver looks field by field and says, okay, I apply this transformer to this field and I get this slice of the, recursively I get this slice of the form, so you get a full representation, maybe this one is a text area, so you can extract a lot of information from here, or maybe for instance, it's a daytime, so you can say the format is daytime, the widget is daytime, you can have required values, and in fact you can extract potentially, I think all the information that form view can use, it's easier to do than a whole view, so we were very happy because we, ah, sorry, we also needed two serializers that we wrote or the second one we copied from a first press bundle, which is a bundle in symphony, to serialize errors and to serialize initial values from the form, two other things we needed, I think easier but also useful, and with this we had this left part complete, right? So, but we're still missing the second part, where we can say, okay, we are backend developers, we have done our job because now we have backend and even a documentation that is always on sync, describes what we can do, so we, the number of issues decreases, right? But happens that once you have additional schema, you want more things because you can just have them for free, like for instance you can just say, look, we have additional schema now, just using this AGV library or other libraries, you can validate your data against the schema and you, if you see there is an error, just present to the user and you don't even have to send me a request because maybe the price is negative or something regular expression is not right, so we start receiving less requests, which is also nice, and also happens that we have a complete representation of the form, so we can write generators and there are many generators for React or Manila JavaScript, I've not explored the full field of generators, but I've explored the React ones. I think if you want to use one, I think maybe the first option or the first option will be use the Mozilla one, which is like has been for some time and people has contributed a lot, I think it's quite stable. We couldn't use it, so we wrote our own because it was not extensible enough, we couldn't do easily or even so, the way to build a wizard form, for instance, or to customize it so much, so we wrote our own, also using Redux form, which is a library that we think is awesome for forms, and anyways, if you are going to create your generator, it's not something crazy, especially if you only support some widgets, you don't need a color picker, like I had to provide a color picker to publish in this library, I was like maybe someone used a color picker so I wrote this widget, but sometimes you don't need all of them. Then, Redux form, which is the library which is doing the work, in our case, out of work has representation that is powerful in Redux, you can use it without, of course, without this library. You can have all kinds of validation, you can write your own widgets, and you know from the beginning that it's flexible enough, because if you see the front page, they have an example, for instance, for us for wizard forms, which is something if you are writing a form library, it's not something people tend to do, like in the first place, they say, okay, maybe you can adapt our library, but if they are flexible enough, they say, okay, you can use it whatever you want, I mean, the way you want, and they did so we need, we can succeed doing this. Then, using this as well, there's some boilerplate, importing, so on, but the important part is like this, using this component, reform, and passing an schema and submit function, it also has validation stuff, you can also control it, passing more props, write more arguments, but this is the simpler version that also fits the screen. And then, with this, basically we can have this schema and create, react a, react representation, like a react form. And with this, yeah, we got all of this, so we said, okay, now we can focus on the part that we really would like to do in this project, and we are so happy, and we had everything. And then, well, as I said, I maintain a sandbox for these concepts, the libraries we are publishing or so on, maybe you can, if you are using Symphony, you can take directly the concepts, or you can use a sandbox, maybe for something, for starting something, or taking examples, if you are not using Symphony, maybe you can use the libraries without like the bundle part, it's like the connection of the libraries which are pure PHP with Symphony, but the libraries can be used standalone. If you are using, if you are not using React, maybe you can take the idea from this talk of using, for instance, JSON schema. Or using Redux can be used with our React, by the way, which is a really nice library. But in any case, if you are not doing any frontend at all, I would like to just ask you to be a bit open about these frontend people, because just by thinking about what they do or thinking about the frontend, you can sometimes, many times, just do a better job together. And also, which is the main goal of this talk, which is that you have a nice Christmas party, like to save the Christmas, so people are really happy in Christmas party, which is very important. So, you have questions or, well, this is my contact details if you want later, or I don't know. That's it, thank you.