Good evening and welcome to Town Meeting Television's continuing coverage of Town Meeting 2021. Today we'll be talking about the village of Essex junctions upcoming election and then we'll also be the town of Essex will have an election to on the school budget school questions and an article related to the relationship between the town and the village and the village will be looking at their own village budget as well as articles that Andrew Brown the president of trustees is going to run us through and we're also pleased to have Evan teach with us. He is the unified manager of the town and the village. The town meeting election is going to be held on the 13th of April and there will be another information meeting or an information meeting which will go over some of this information as well on the 7th at 7 o'clock so without further ado I welcome you both thank you for joining us. Remind people they can certainly call us at 862-3966 if you have questions and Andrew I'm going to ask you to share your screen and walk us through the village budget and articles. Absolutely thank you Lauren Glenn and thank you Town Meeting Television for having us today really appreciate the opportunity. So glad to have you here it's been a long year for the village in the town. To say the least thank you. So as you had mentioned this is an opportunity to go through the budget as well as the ballot articles for the Village of Essex Junction's voting that's coming right up for many of us you should already have your ballot in the mail so hopefully if you have not voted yet now you can have the information to back up your choices. The first thing I'm going to go through is article one which the question is in relation to the budget. Shall the voters approve of the budget? So what I'm going to be going through is the general fund and the general fund highlights. Some of the biggest impacts on the budget this year are the highway and the fires rolling stock capital transfers which have been moved into department budgets historically they have been within their own separate line item whereas now they are within their departments. With this move the highway rolling stock would be transferred to a fund paid for by the town that has been approved by the town already. So the concept of doing this has been approved by town voters. There's an additional $25,000 that's been transferred into the building's maintenance fund to address priority building projects. Staffing levels will remain stable and that budget benefits are relatively stable from prior year as a fiscal year 21 budgeted increase did not materialize. With this I also wanted to just note that in essence this budget is a status quo budget. This budget allows for the village to continue to do the things that the village has been doing for the past or for the previous years. There's no new service. There's no new effort with exception of one thing that I'll be going through in just a moment. So with the general fund the budget itself is a little over five million at $5,300,000 from FY21. This proposed budget is at $5.6 million with a $200,000 change which equates to a 5% general fund increase. You can see here what contributed to that increase. Most notably you'll notice the capital transfer which allows us to repair our infrastructure. Salaries and benefits is the other most notable increase. We have people, we have really good people who work for the village and we want to make sure that we can pay them a livable wage as well as benefits to help to retain the employees. The other item I wanted to address is really the new item and that's this board member stipends. This board member stipend is for all board members not just the trustees, not just the planning commission and not just the zoning board. This is an effort for all of those volunteers who serve on our various committees that we have in the community to help ensure that those who volunteer get some type of remuneration for their time as well as from an equity lens ensure that people who may need childcare can afford to have childcare for their family so they can attend these meetings. When I think of this, I think of in my professional life I have a colleague who would love to be on her community's recreation advisory board but she's a single mom and as such for her to do so she would need to provide childcare for her children. That's at a cost that she really can't afford in and of in and of itself. So in this extension by doing this it would allow for community members to be able to compensate a babysitter to help influence the future of their community. This is something that personally I'm excited for and hopefully we'll be able to help to increase the diversity of candidates we get on our boards. Can I ask you a question, Andrew? Yes, please. That capital transfer it's plan it conforms with your capital plans. But is this when it says transfer what does that mean? So what does yeah, yeah, so what this is is we have a capital budget and that capital that capital fund is in a different account from our general fund. And so in order to fully fund our capital fund, we have to take money from the general fund and put it into the capital fund. And so that $96,000 increase is to increase the amount that comes from taxes to go into the capital fund. That capital fund is also funded from water users from stormwater users, so on and so forth. So not to put a fine point on it, but why is one third of the increase? It looks like it's you're levying new money, but it sounds like you're just moving it from one place to another. What we're doing is we're increasing the amount that's going to be moved into the into the capital account from from the general fund. It's been a planned increase that we've been doing for years to help ensure that we're keeping up with the cost of construction and the cost of doing this work. But that money already exists in the capital fund. So last year there was an amount that was approved of and this $96,000 is $96,000 additional dollars for that fund. I see. Alright, thank you. Yes. So as I mentioned how the budget itself was going up 5%, it's important to talk about what that actually means the tax impact. So as you'll see, what's going to be taxed in fiscal year 2022 is only a $75,000 change, which will result in a 2.1% tax levy increase. The tax rate itself is going up 0.97%. Some of the reasons as to why the increase is less than the budgeted amount is that other revenue sources have increased. So for example, funding from the town of Essex, which pays for highway and stormwater budgets has increased. That covers a normal increases in a change due to the rolling stock in the capital transfer and highways. There's also a small estimated increase in the grand list, which has also been included in this that impacts how much is levied against taxes. What all this means is that the average village homeowner whose average assessed value of their property is $280,000 would see almost a $9 tax increase for the year. One thing about the assessed value of the property is I wanted to stress the word assessed. It is not appraised. So you can go and you can get a market rate on your house that may be assessed at $280,000. But your market rate for that house at this point in time may be closer to $350,000, $400,000 given the retail market or the real estate market we have right now. So again, if you go to the grand list, you can find what your your property is valued at and use that $280,000 as a benchmark. Andrew, is there a reappraisal scheduled for the village soon? It is not scheduled at this point in time. I don't believe but Evan teach I would look to you to correct me if I'm mistaken on that. No, we don't have one scheduled, but our town assessor is alerting us to the fact that it may be coming within the next three to five years. Thank you. Thank you, Evan. I also wanted to go over where our tax dollars go as village residents. So if you look at this pie chart on that lower left hand side from fiscal year 21, you'll notice that 14% of our tax dollars went to the village of Essex Junction to cover the things that we do here in the village. 21% went to the town of Essex and 65% went to the schools into the Essex Westford school district. So when that average home receives an unadjusted tax bill of almost $7,000, this is how that how that gets distributed to the various entities. And you're speaking really only about the village's portion of that budget. Did the town's portion of that budget get approved in March? Yes, the town's budget did get approved up in March. And so at this presentation, it is only talking about that smallest portion of the pie. And voters will also be voting on the school budget. This village voters and town will be voting on the school budget in April. Yes, and the school's information on the ballot is on the page and is opposite to the municipal's. So our budget or a ballot does have two pages or does have one piece of paper, but two sides. One side is for the municipal side. The other side is for the schools. Thank you. Absolutely. And then I mentioned the Capital Fund, that transfer that I mentioned before. These are the things that we were planning to do with that Capital Fund. One of the biggest things that we're going to be doing is there is a covert on Dentmore Drive that has failed. This was due to the, I believe it was the Halloween 2019 storm where we had such such an impactful rain event that the covert failed. The road was unstable and so we have to replace that that covert. This is a portion of the road that has been blocked off and is not travelable. If I just made up a word there. And so this will replace that this upcoming year. You'll also notice other portions within the various funds. One thing that I know our community is really excited about is the Essex Junction Recreation and Parks Playground Equipment that's going to be coming to Maple Street Park. It's going to be replacing a equipment structure that is due to be replaced. And for those who have seen it on social media, I'm not sure if it's on the village's website yet or the recreation department's website yet, but it's going to be a really nice playground to have. Looking forward to seeing that when it gets completed. And you'll notice some other portions about debt related to the Water Fund, Waste Water Treatment Fund and a super exciting Vactor Truck that will be replaced this upcoming year. What's it? Oh, a Vactor Truck isn't evacuated.  It's what we refer to humbly as a super-sucker 5,000.   And yeah, it's an EPA thing. Yeah, thank you. So that's it for the budget. Evan, did I miss anything that you want to make sure that gets covered? No, sir. You hit you hit the stipends and you hit the budget pretty good. So thanks. So if we're ready to move on, the next article that village voters will be asked is, shall the village authorize the transfer of the remaining balance in the land acquisition fund with an estimated balance to be approximately $82,000 to the Economic Development Fund to be used for downtown development? Really, some of the crux on this one is that in approximately 2012, the village agreed to remove nearly all the funding from this account and put it into the capital fund to help pay for our existing infrastructure needs. And the amount of money that's left, frankly, is just sitting around and in order to do something with these funds, there must be a vote by the entire village to use of money, which creates significant delay in real estate transactions, let alone the ability to find land in the village for that amount of money is next to impossible. Whereas by reallocating these funds from that account and putting it into the Economic Development Fund, we can be more expedient in the use of these funds and do things like continuing to address parking, improving the village property in front of the Firework Restaurant to five corners. We could test closing Main Street after the present connector is built as well as many other efforts that we can't do by keeping it in this funds. Can you just remind those of us who aren't in the heart of the village what the Crescent Connector is and what finishing it means? Oh, yes. So the Crescent Connector is a fun and exciting new road that we just got final approval of from the state for the right of ways that will allow travelers coming either to from Main Street and or Maple Street. So Roots 15, Roots 117, going towards Williston on two way or vice versa to get around five corners. This brand new road would help to reduce traffic by a congestion by about 30 seconds as well as allow for the development of lands that is along Park Street and Maple Street that is under developed. So it would allow for the owner of that land to do more than what they have been able to do. That road is going to be built in two phases. This first phase and this construction season is going to replace all of the railroad crossings that are within our community. And then in phase two, which will happen in the subsequent year, that's the construction of the actual road. A place on the village website where people could get more information about that. There is at sxjunction.org. If you were to use a search feature and type in Crescent Connector, it's all within one page there. Great. Thank you. And Andrew, I'll just add one thing to that with the new railroad crossings. All of the railroad crossings will have cross buck arms. So instead of just the flashing light, the arms will come down. And then all the traffic signals will be interconnected. Sounds safer. Set up. Anyway, sorry. Go ahead, Andrew. No, it's OK. So Article 3 is shall the voters approve of extending the one cent capital improvement tax, also known as economic development tax, as established in 2016 to be reconsidered at annual meeting in 2024. So that tax is the same thing that I was just mentioning of taking the money from that previous land acquisition fund and putting it into this other fund that was created in 2060. Back in 2016, there was a stipulation that this this fund would have to be reconsidered in the current year. And so that's why we're coming back to ask voters to continue it for a couple of more years to align with the merger timeline, where should merger pass by the time it would go through the legislature, we would find ourselves in the annual meeting at 2024. And at that time, ask ourselves as a community, do we want to continue it or not? And so that's what this would allow for. It would also allow for us to continue to do things that we have already done, such as some of the things I had mentioned before with parking lot improvements and increasing public parking. We've used the funds in the past to also do things like purchasing new banners to help improve our streetscape to fund for the property that's in front of Firebird Restaurant at five corners. And for those who happen to go to that restaurant at five corners, the parking area behind the building, we've been able to improve using using these funds. I mean, it's those that one cent on every hundred dollars worth of property value. What's the one cent? It's a one it's a penny on the tax rate. So the tax rate increase that I mentioned before, I think it was point eight four. This would then mean it would be a tax increase totaling of point eight five. So that's like 90 cents a year or something. I don't know what that equates to. Evan, do you have to know what that would equate to the average village homeowner? No, but if the tax is eight dollars and ninety four cents as a total, it's probably about. It'll be less than that. Yeah. Yeah. We generate about one hundred and ten thousand dollars a year on the penny throughout the entire grand list of the village. So article four shall the annual stipend for the position of a trustee of the Village Board of Trustees be raised from five hundred dollars to a thousand dollars. This is very similar to that other initiative for committee member stipends. One of the things that we did is for the planning commission and the zoning board. We have dug or we have proposed to double their stipend. Currently, planning commission members and zoning board members receive a two hundred and fifty dollar a year stipend. And we are proposing to increase theirs to five hundred dollars a year. And ours is also being proposed to increase from five hundred to a thousand. A lot of this, again, having to deal with trying to help increase the diversity of the pool of candidates we have, as well as, frankly, to increase an amount that hasn't been increased in more than 18 years. That's the longest. But that's the current longest serving tenure of one of our trustees, who has said that their amount hasn't increased in their time. I find it interesting in looking at the the amount that other communities are compensating their board members. You have the town of Essex and Colchester at a thousand and three thousand. I'm sorry, a fifteen hundred and three thousand. The city of Burlington is five thousand dollars. And if I recall correctly, the town of Brattleboro just approved of their select board members to receive ten thousand dollars. So while we are, yes, asking for double the amount of money, it certainly is nothing like what is happening in other communities. But we do hope to be something to again help to increase the diversity of candidates we get. As, frankly, many of us on the board have been on the board for quite a few years and have before that time have been on previous committees. And as those of us who are up for election this year running uncontested, maybe there would be a contested election again. And so with no question there, going to article six. I'm not going to read this one as those who are watching can go ahead and just read on the screen. I'll just make sure to keep this up for a little while. Essentially, this is the non binding resolution about should merge or fail. Then should the then should the village of Essex Junction pursue separation from the town and to form our own independent city. This came about through a citizen led petition where they received more than the five percent of the registered village voters than necessary. They're then required by state law to have this put on the ballot. And so we're doing so. This is certainly an issue that has been discussed a little bit over the past few years as we've talked about merger. But really the way that I see this and as it's been relayed to me is this is sort of the village's voice and saying the status quo has to go in that village residents are really tired of the status quo and that should merger not pass. We need to know where we're going next. And so this is really a way to help get a sort of dip our toe into the water to the temperature of the community and ask if merger doesn't pass. Do you want this at the same time? One of the things that we're finalizing at the trustees level is we're finalizing a committee to look at what the impacts of various governance scenarios would be on our community as a way to really start that conversation of where do we want to go from here in the in the case that merger fails. So should this merger reconsideration vote that I'll get to in a bit, should that pass then or should that pass then this doesn't matter. This essentially just goes away. That committee that I referenced wouldn't be necessary. But again, should it fail, then that's when these other efforts kick in. If this also passes, if this passes, yes, should this fail, then that would be a very clear indication. Well, it depends on how I would say it depends on how telling the results are. I think it's as a conversation starter. So how would you describe the status quo? The status quo are things where we in the village are taxed for for duplicative services. So if we look at the community development department in the town of Essex, it is designed, paid for, it is designed and paid for to serve only those residents who live outside of the village. It does not pay for any community development efforts within the village of Essex Junction. Frankly, it's because we in the village had, I don't want this to sound like a kid's I had at first. But in essence, what happened is in the village, we had a community development department. Then the town of Essex decided they wanted one too. And so in the village, we pay for hours and we pay for the pay in part for the town of Essex's. But yet for the town of Essex's we in the village don't receive any benefits from that. And so what I'm saying the status quo has to go. Let's just one example of those departments that are duplicative. But yet we don't see the benefit of. And so if a merger doesn't take place, which in effect would combine the work of those two departments, then the question is what what do we do next? Yes. And this process, a separation into forming an independent city is the same process that Winooski did with Colchester, that Rutland did with the town of Rutland. And it is one where this venture is only open to and voted upon by village residents. And so it's. Right. And then there's an article one. The last portion of this is a special town meeting article one, which is a reconsideration vote of the merger vote that just happened this past town meeting day. So again, there was a citizen led effort where a petition that was signed by more than five percent of the town of Essex's registered voters to reconsider this effort. Because of that petition, state law required the select board to put this out to vote again to the entire town of which the village residents are town residents. And as such, village residents will notice at the very bottom of our ballots, this one question of reconsidering the merger efforts. It is the exact same plan or it is the exact same plan that was voted on a town meeting. There are no changes from it. And it's frankly the exact same process that was used in 2006 when merger had passed in the town as a whole, but then was reconsidered in 2007 and with about two thirds, the with fewer than two thirds number of voter turnouts, that plan was then overturned. And so merger failed at that point. It's been a long road for your communities, hasn't it? It has. It has. You may have sensed it in my voice. This has definitely been a long road for the past few years in particular, as we've come to this point of finalizing the charter, finalizing the plan of merger and finally getting a chance to vote on it. Thank you. Thank you. And that's the end of the presentation. Evan, is there anything you'd like to add to Andrew's presentation on the questions before the voters of the village and also the town as an article one? He did such a great job. The only other thing is, you know, we talk in terms of government and stuff. A citizen led petition is something that is in the state. Neither the village board, neither this like board did these measures. These were citizens who met the state standards for the number of signatures on a petition and ballot. And therefore the only questions the select board had was what day to do the election, not whether it's valid, not whether you should do it, not whether is it inflammatory. It's the law and we follow the law. So can I thank you for that clarification? Can I just ask you, how did you manage to limit the the village budget given this pandemic and the stresses and costs to your community? It seems quite a feat that you accomplish such a modest increase. Oh, that that's a team effort from the all the department heads, the village board, our fantastic finance director and just some good old hard fashion work. One good thing is that as part of our equity work in with the town, a nice chunk of rolling stock that the village has historically paid for themselves, moved over to the town budget. So when you combine all that, the taxes, the village is still paying taxes to the town. So that went up a little bit more than the villages did. The village went down. And what's rolling stock? Rolling stock is equipment, things like trucks. Large things like generators. So mainly it's trucks, but things like generators that are at our buildings. Our police building is a large generator. Our village hall has a generator. So if the power goes out, the village hall can still operate. The police department rate, the public works garage can still operate. Thank you. So Andrew, unlike Evan, the unified manager, you are largely a volunteer.  What has kept you motivated to lead this effort through this period of time, which is further complicated again by the pandemic? But what motivates you? And what would you like to say to the village people? Wow, that's a great question. Thank you. What's motivated me through this effort is, frankly, my love to the community that I that I live in that I grew up in. I've called Essex, whether it be the town of Essex or village of Essex Junction home for over 90 percent of my life.  It's efforts I've seen through this pandemic where the community has really come together to help each other out and have just further instilled what is commonly referred to as like the village way or just a community way of coming together and doing what's best for each other. That's what kept me going through this as it has been a very tough time to say the least. But it's the community appreciation and love that have kept me going. Well, I want to thank you both. Evan Teach, Unified Manager of Essex and Essex Junction and Andrew Brown, the president of the trustees of the village of Essex for talking with us here today about the upcoming election in the village of Essex Junction and there will also be an Essex vote on article one and the school budget. So the village will be voting on their budget, their articles and the school budget. And that election is going to be happening on April 13th. It's Australian ballots. So you will be going to the polls. Will you be sending out ballots in advance? They are already been mailed to every active voter registered. Fantastic. And then if folks want to have more of an opportunity to talk over these proposals that are on the ballot, there is an information meeting on the 7th of April at 7 p.m. And the coordinates are going to be on the website of the village, which I think we are listing here as a as a title. So thank you both for joining us and thank you to the team at town meeting TV for continuing coverage of town meeting 2021. Thank you. Thank you very much.


Hello, welcome to SS Unity Society site and this is continuation of SQL Server Performance Training. So, here we gonna discuss about Non-Cluster Index Scan and Non-Cluster Index Seq. So, in the last video of this video series, we have discussed about the Table Scan and Cluster Index Scan and Cluster Index Seq. So, if you haven't watched that video, so before going forward, I would strongly recommend to watch that video. So, let's start with Non-Cluster Index Scan and Seq. So, as we have discussed earlier in this video series, we cannot create more than one Cluster Index in a table. That's why we need to create Non-Cluster Index if required. So, what is Non-Cluster Index Scan? When query perform a Non-Cluster Index Scan, columns spot off Non-Cluster Index and access in the query. Let's assume we have a address table as we have seen in the last video. So, if we will create a Non-Cluster Index on the city column and in the select statement if we gonna select only city from the table, then that would be going to perform as Non-Cluster Index Scan and its bearing performance unless last data with the most of the columns and rows will be retrieved. Next is Non-Cluster Index Seq. So, what is Non-Cluster Index Seq? So, when query performs a Non-Cluster Index Seq, then columns spot off Non-Cluster Index and access in the query and it uses those columns in the where clause. Like, we have address table and we have created a Non-Cluster Index on the city column. Then in where clause, that city column should be used. And it's good in terms of performance. So, go to our SQL Server Management Studio to check in the practical. So, here I am using SQL 2.0.12, you may have Android versions of SQL Server. So, as we have created address temporary table in the last video, so let me drop this table. So, table dropped successfully. Now, let me create the table and it would going to take the difference from address table. So, let me execute the query. So, as we can see 19,640 and record should be inserted with the table. So, as we can check the if we have any index or not. So, initially we have discussed if we want to create any table with the into command then it would going to create the table and insert record on the table but it will not going to create any constant. So, we can check by executing sp help index then the table name. So, here as we can see the object address time doesn't have any index right now. Before going to test the table scan. So, let me enable this set statistics I own. So, we can execute and now we can execute this address time table and here we can get the logical reads. So, we can execute and go to on the messages tab. Here we can see logical read is 342. So, 342 is the logical read as we seen in the last video as well. And, if we will use the where clause where city is Boston then again we can see it will going to return 342 records because it will scan all the pages which is available for the table. Now, let me create a non cluster index this time with the city column. So, we can execute this command and it should be created. Now, go to on the non cluster index scan. So, this time I just want to get the city from this address time table. So, we can execute and we can check. So, before going to execute let me enable the execution plan. Now, execute the query and go to on the execution plan and here we can see index scan and it is non cluster index as we can see. So, go to on messages tab and here as we can see logical reads. So, logical reads is 89. So, if we want to get data from this non cluster index scan and it would read only 89 pages to get this city column. So, let me check about non cluster index seek. So, here we just want to use this city column as in where clause. So, we can execute this query and here we are getting only Boston that is fine. Go to on execution plan and this time we can see index seek that is non cluster index. Now, go to on messages tab to check the logical reads. So, this time logical read is 2. So, it would take only 2 pages to get the output. So, this is non cluster index seek. If we will compare between these 3 then in case of table scan it would take around 342 pages to get the output and in case of non cluster index scan it would take 89 pages to get the output and once we going to use the city in where clause then that would be the non cluster index seek. It would take only 2 logical reads to get the output. It means only 2 pages to be scanned. So, here as we can see we are getting only 1 column that is city. But our requirement we want all the columns from this address time table. So, let me execute this query and check the execution plan. So, we can execute and go to on execution plan and here as we can see RID lookup. So, we will discuss about RID lookup in the next video. So, here basically it would take additional lookup with the table because in non cluster index we have only 1 column that is city and other columns are available in the table. That's why this RID lookup is required. So, we will discuss about this RID lookup in the next video in detail. So, I hope you have understand about the non cluster indexes scan and non cluster indexing. So, thank you so much for watching this video. If you like this video please subscribe our channel to get many more videos. Don't forget to press the bell icon to get the notification of our newly uploaded videos. Thank you so much.


Live from Las Vegas, it's theCUBE, covering UiPath Forward Americas 2019. Brought to you by UiPath. Live coverage of UiPath Forward here at the Bellagio in Las Vegas. I'm your host, Rebecca Knight, along with my co-host, Dave Vellante. We are joined by Craig LeClaire. He is the vice president of Forrester and also the author of the book, Invisible Robots in the Quiet of the Night, how AI and automation will restructure the workforce. Thank you so much for coming on theCUBE. Thank you. Thanks for having me. And congratulations, it's already made number 11 on Amazon's AI and automation bestseller list, so. Well, it's not quite bestseller, but okay, that's great. Thank you. Thank you, it's doing well. If anyone calls your book a bestseller, you just take them out. I'll just take it. So, it is a story right now. I mean, there's a lot, there's so many changes going on in the workforce and there's so much anxiety on the part of workers that they're going to lose their job, that all these technologies are going to take away their livelihood. So, how are companies managing this? Are they managing it well, would you say? Or is the anxiety misplaced? Give us an overview. Yeah, so I don't think companies are really aware of focus on the things that companies focus on. They focus on efficiency and productivity and so forth. And underlying that, it's of the invisible robots. The point of invisible robot book is that there's a lot of media attention on the hardware aspects of robotics. In fact, the Superball last year had, you know, 10 commercials with hardware robots. But it's, if you look at this conference, you look at the number of people here, what are these people doing? You know, they're going back to their companies and saying, you know, this UI path and there are other providers in the market. We can build software robotics, we can build bots to do some of these tasks that a lot of these humans are doing. And while there is elevation of the human capability and a series of more exciting moments perhaps, but it's not going to make you more relaxed as an employee. And then you look at the overall job numbers and our estimates are very conservative compared to some of the other reports that are at 45, 50% of workers over 10 years being displaced, we think it's 16%. But still, when you look at just the US numbers, that's of 160 workers today, 160 million workers, that's a lot of people. So displaced and then sort of re-targeted or vaporized? No, well, the 16% is the automation, is the net loss of jobs. Now in that tremendous number of new jobs that are coming up, so we have a formula to calculate that. The work personas have different relationships to AI and all workers and be very well protected for a long time. People that have clipboards in their hands, a lot of people leaving those cubicles that aren't going to be able to migrate to other personas. And so we have a change management issue. We need to start driving more education from the workplace through certification. And that's a really critical thing I'll talk about tomorrow. That the refresh of technology with automation is 18 months to 24 months, you can't depend on traditional education to keep up. So we need a different way to look at training and education. And for many, it's going to be a much better life, but there's going to be many that it will not be. What was the timeframe for your net 16% loss? 10 years. 10 years, okay. To me, a lower net loss number makes sense. And in fact, if you could elongate your timeline, it probably shows a net job creation. You could make that argument anyway. I don't know if you- It's being made. You don't buy it though. I don't. The World Economic Foundation and others are having huge net new numbers for jobs based on AI. Some of the large integration companies that want to build AI platforms for you are talking about- Of course. Trillions of dollars that it would be added a value to the world economy. I just don't buy it. And the reason I wrote this book was because what's going on here is very quietly preparing to displace a lot of effort, starting with relatively small tasks. It's called task automation, but then expanding to more and more work and eventually adding a level of intelligence to the task automation going on here that's going to take a lot of jobs. And for most of those 20 million cubicle workers, they have high school educations. You know, the bigger problem is this level of anxiety. You know, you go into almost any bookstore and there's a whole section for dummy books. You know, and it's not, it's, you know, is it because we have this sort of cognitive recession or because, you know, there's a, it's because the world's getting faster and more complicated. And unless you have the digital skills to adapt to that, the digital skills graph is growing. And we need to have as much focus that you see here and energy on building automation. We need to have an equal amount of focus on the societal problems. Yeah, and it really comes down to education too.  Craig, one of the things we talked about last year was, you had made the statement that some of these moonshot digital transformations, you know, aren't happening for a variety of reasons, but RPA is kind of a practical way to achieve automation. Still very true. Have you seen sort of a greater awareness in your client base that, you know, hey, maybe we should dial down some of these moonshots and just try to pick some, you know, clear winners? Yeah, we have a number of prediction reports coming out from Forrester and they're all saying basically that. I'm doing reports on what I'm calling in the intelligent process automation market and that's really RPA plus AI, but not all aspects of AI. You know, it's AI that you can see in ROI around, you know, it's AI that deals with unstructured documents and content and email. It's not the moonshot more transformative AI that we have been very focused on for a number of years. Now, all that's very, very important. You're not going to transform your business by doing task automation, even if it's a little more intelligent and handles some decision management. You still need to think about how do I instantiate my business algorithmically, you know, with AI that's going to make predictions and move decision management and change the customer experience. All that's still true, as true as it was in 2014, 2015. We're just seeing a more realistic pullback in terms of the investment profile. Well, and so we've been talking about that, you know, all day is, you know, taking automating processes that have been around for a long time and you, I think, identified this as one of the potential blockers before. If you've got old processes that are legacy and I think you gave the story of, hey, I flew out here on American Airlines and it's the old Sabre system. How old are those processes? So we've, you know, the old term paving the cow path. So the question is, given all the hype around RPA, the valuations, et cetera, what role do you see RPA having in those sort of transformative use cases? Well, here's the interesting thing that was, I think, somewhat accidental by the, you know, what really changed from having a simple desktop automation?  So the RPA platforms had to build a central management capability. UiPath calls it the orchestrator, others call it the control tower. But when you think of all the categories of AI, none of them have a orchestration capability. You know, so the ability to use events to link in machine intelligence and dispatch digital workers or task automation to coordinate various AI building blocks, as we call them, and apply it to a use case, that orchestration capability is pretty unique to the RPA platforms. So the sort of secret value of RPA is not in everything that's being talked about here, but eventually it's going to be as a coordinating mechanism for bringing together, you know, machine learning that'll begin the cloud, conversational intelligence that might be in Google, you know, having the RPA bots, you know, work in conjunction with those. But if I recall, I mean, that's something that you pointed out last year as well, that, you know, RPA today struggles with unstructured data, you know. Well, it can't do it. Right, we talked about NLP versus RPA. RPA, give me structured data, I can go after it. Yeah, but that's the RPA plus AI bit, though.  And with the combination of the two, you can reach, I think what the industry needs to do, or the buyers of RPA, they need to take the pressure off this immediacy of the ROI. In a sense, that's what's driven the value. I can deploy something, I can get value in a few months. But to really make it effective and transformative, you need to combine it with these AI components, that's going to take a little longer. So this sort of impatience that you see in a lot of companies, they should really step back, take a look at the more end-to-end capabilities, you know, and take a little hit on the ROI immediately so that you can do that. Yeah, I mean, I can definitely see a step function. Okay, great, we've absorbed that value, we get a quick ROI, but to your point, there's got to be some patient capital to allow you to truly transform. In order for RPA, if I'm, I won't put words in your mouth to live up to the hype. Absolutely, I totally agree. And I'm still very, very high on the market. And I think it's going to do extremely well. Well, if you look at the spending data, it's quite interesting.  Yep. You know, UI path from your last wave kind of took the lead, but automation anywhere, blue prism spending, even in traditional incumbents, maybe not even RPA, but maybe more process automation like Pegasystems. The spending data suggests that it's the rising tide lifting all boats. So my question to you is, how do you see this all shaking out? Huge valuations, the bankers are swarming around, you saw them in the meeting yesterday. You know, at some point, there's got to be a winner takes most, the number two guy will do pretty well and then everybody else kind of consolidates. What's your outlook? Well, there are a lot of emerging players coming into the market. And part of my life is having to fend them off and talk to them, you know, but, you know, in the RPA wave that's coming out in a week, it's going to have four new players in it. Companies like SAP, well, they acquired a company, right? So they acquired and they built internally and have some interesting approaches to the market. So you are going to see the big players come into the market, others I wouldn't mention that'll be in the market in a month. And it's getting a lot of attention. But also I think that there are domains, business domains that the different platforms can start to specialize in. The majors, the UI paths of the world, you know, will be horizontal and remain that way. And depend on partners to tailor it for a particular application area. But you're going to see RPA companies come into the testing market, software testing market. You're going to see them come into the contact centers to deal with intended mode in more sophisticated ways, perhaps, and those that don't have that background. You're going to see tailored robots that are going to be in these robot communities that are springing up. That'll give a lot of juice to others to come into the market. And like you said, you're going to see, we've talked about this as well, Rebecca, the best of breed versus, you know, the sweet, right? Whether it's SAP, Enforce talking about it, I'm sure Oracle, throw its hat in the ring. Why not? Hey, we have that too.  Well, the bots actually make that argument less powerful because you can use the bots to give you that integration as a layer. And so they're going to have to come up with some different stories, I think, if they're going to, you know, continue to move forward their platforms, move them to the cloud and so forth. So, best advice for workers in this new landscape and how it is going to alter their working lives. And also your best advice for companies and managers as you said, maybe not quite, they're grappling with this issue, but maybe not, and they're not being disingenuous to workers about who's going to lose their jobs, but this idea of as they're coming to terms with understanding quite all of the implications of this new world. Yeah, no, and I'm presenting data tomorrow that shows that organizations, employees, and leaders are not ready, and I have data to show that. They're not understanding it. My best advice, I love the concept of, it's not a forest or concept, it's called constructive ambition. And this is the ability in an employee to want to go a little bit out of the box and learn and to challenge themselves and move into more digital, to close that digital skills gap. And we have to get better at identifying, companies need to get better at identifying constructive ambition in people they're hiring and also ways to draw it out and to walk these employees up the mountain in a way that's good for their career and good for the company. I could tell you, I'll tell a few stories on the main stage last night. I've interviewed Walmart employees and machinists that could no longer deal with their machine because they had to put codes into it. So they had to set it up with programming steps and the digital anxiety was such that they quit the job. So a clear lack of constructive ambition. On the other hand, Walmart employee graduated from one of their 200 academies and was able to take on more and more responsibility. Somebody with no high school degree at all. She said, I've never graduated from anything in my life. My kids have never seen me succeed in anything. And I got this certification from Walmart that said that I was doing this level of standard work and that felt really, really good. So companies can take a different view towards this, but they have to have some model of future of work and what it's going to look like so they can take a more strategic view. Well, Craig, thank you so much for coming on theCUBE. It was a really great talk. I always love to come on. Another plug for the book, Invisible Robots in the Quiet of the Night, you can buy it on Amazon. Thank you. I'm Rebecca Knight for Dave Vellante. Stay tuned for more of the CUBE's live coverage of UI Path Forward.


Felly roi, roi sicr yn fydd. Mae hynny'n gweud credu y bwysig i'r bobl fyddwyr ar gyfer drwpol. Rydyn ni wedi gan diolch wedi dipyn o gael gwlad. Cyngorol yn synodol yn y bwysig ac mae'r cyngor ond yn ymwysigol, felly rydyn ni'n rhoi ymblch yn siarad iddo ymwysig i'r gweith save. Yn gyngor y ffordd drwy Walson Hym, oedd chi'n gweithio, oedd ymgromog, ac rydyn ni'n rai'n ei gweithio o èch, ac ymdweithio i'r cyndaill yn rhimol. So, my name is Phil Walsonholm, I'm a front-end developer at CTI Digital in Manchester in the United Kingdom. You can find me on Drupal.org as Phil-Walsonholm and on Twitter as PhilW underscore. We've got quite a lot to talk about, I was quite ambitious in what I put in my talk abstract, possibly overly ambitious, so if we run out of time then come find me at lunch and talk to me on Twitter, happy to answer questions then. So, we're going to be running through what progressive decoupling is compared to regular coupling or decoupling rather. We're going to be talking about what view is in the context of front-end UI frameworks and libraries, talking about why I feel view and Drupal are really good partners, then getting into a little bit of a case study and then finally some tips if you want to take this back home and start playing around with view of Drupal. So, we'll start with what progressive decoupling is. So, decoupling in general is when we break the bond between Drupal as a back-end CMS system that provides data and Drupal as a sort of system that renders your front-end. We can think about coupling and decoupling on a sort of scale or continuum and this is what we have up here. So, on the left-hand side we have our traditional coupled Drupal site where Drupal gets the data, Drupal renders it, it knows exactly what's going to be on the page and because it knows exactly what's going to be on the page it can do nice things like in-place editing, contextual links, layout builder, live previews or that kind of Drupal-y stuff that we know and love. A fully decoupled site is on the opposite side of the spectrum, so on the right-hand side and that's where Drupal is purely sort of an API, a data repository, a content hub and use a framework or library, live view or Angular React to handle the front-end routing, content changes, UI stuff all through client-side JavaScript code. Progressive decoupling exists in the middle in a sort of a happy place where we use Drupal to do all the bits that it's really good at and then we add a layer of JavaScript on top to do sort of more dynamic application-like stuff that Drupal's not necessarily so good at. We'll come back to more benefits of that in a later slide. So, with progressive decoupling, Drupal handles the routing, collecting data from the database or other sources, transforming it through things like text filters, making a render tree, allowing other modules, Contrib, Custom Ones themes to transform that render tree and then finally dumping it all on the page as HTML. So up to that point it's a traditional Drupal site. The difference with progressive decoupling is that we then layer on top of that a bit of extra JavaScript and this could target just a small part of the page. It could be like a block with a live weather widget in it or it could be a larger part of the page, for example, like a real-time block for a sport event or a political event. So we can imagine that most of the page would be Drupal. The header and footer could be normal Drupal blocks. There could be a sidebar of normal Drupal blocks. The only thing that would be handled by the JavaScript would be the section in the middle where we need the dynamic content. Everything else is standard. This is a pretty crazy diagram from a Dries blog post in 2019. We don't need to look at it too closely but I'll talk through what it describes because it's a good way of covering the benefits. In this top red box we've got two columns. On the left we have editorial interests, so I want to be able to have a live preview. I want to be able to control page layout. I want to use in-place Edison and I want my HTML to be accessible. This is a big thing for me with decoupling. A lot of effort in Drupal goes into accessibility. We have an accessibility gate, so we know for sure that things like our form API is always going to produce accessible markup. When we give control of things like forms to a decoupled site, there isn't that guarantee, so you have to make sure that your developers are sufficiently aware and skilled up and able to match Drupal's level of accessibility. If you have a coupled site or progressively decoupled where Drupal is handling the forms, you don't need to worry about that as much. On the right hand side we have more developer needs. These are things like I need to be able to control the markup exactly. I want to use JavaScript because I'm going to be pulling in lots of APIs. I want to do real-time stuff. It's going to be hard to do that in PHP. There's also agency needs. We find it hard to find good Drupal developers, but everyone wants to do React, so maybe we should just build more React sites because it might be easier. Progressive decoupling is when you have both of those problems. You have editorial needs, you have developer needs, and you need to find a compromise. That's what the second box says. It says requirements reflect both editorial and developer needs. The decision tree there leads down to a progressively decoupled website. It's a quick introduction to progressively decoupling. Now let's talk about view. This isn't going to be a super technical talk. It's not going to introduce anything crazy, not too much detail. I really just want to raise awareness of using view because it's probably in the last five years been the thing that's made me most excited about my job. It's changed how I feel about front-end development, especially with Drupal. I absolutely love it. It's really amazing. I don't want this to get into a view versus angular view versus React talk because it's not that kind of talk. If you want that, there's millions of medium articles about that, but I am going to talk about what I think view strengths are, especially in a Drupal context. View, ViewJS, pronounced view, it's an open source UI framework. It's from the second generation of these things, so it's not like Ember or Knockout. It's more similar to React. It's maintained by a core team, similar to Drupal in a way. The lead developer Evan Yu used to work at Google. He used Angular day in, day out, and he thought there's good bits about this, there's bad bits. What if I made my own version? He doesn't actually work at Google anymore. He works full-time on view funded by a Patreon campaign. I checked this last night and he receives $20,500 a month from commercial and individual sponsorship. I think that shows how strongly the view community feels about the product. As a result of that, View is independent from any big tech company. It brands itself as a progressive framework. What that means is it's incrementally adoptable. You can start off using it really easily to control just one thing on your page, and then as your skills develop, as your appetite for using View develops, as your requirements get more complex, it scales with you. It's really powerful, but it's not overwhelming. Finally, the last thing is really important. It's template-based, so rather than writing sort of a JavaScript-defined version of HTML like JSX, you write valid HTML and View will parse that and it will turn it into a virtual DOM at runtime. Got another one of these scale slides, and here we're going to be talking about the sort of footprint of the size and the ambition of these frameworks or libraries. On the left-hand side, we've got React. It's a library rather than a framework. It does one thing and it does it really, really well. It helps you build your eyes that react to use it input. For other features, there's a massive ecosystem. There's so many additional things that you can extend your view app with. That ecosystem is healthy, it's big, and that's really great. There's kind of a cost to that size. There's so many options. People have very strong opinions. You need to spend time finding what works for you, and there's sort of a cost to that decision-making. Angular, on the other side of the spectrum, is a framework, so it tries to do everything.  It's quite heavyweight. You need to buy into using it. You need to commit to using it, but it saves you from having to make design decisions which can take time and be difficult if it's not your specialist area. View, similar to Progressively Coupling, occupies this nice middle spot. The view core is quite small. It's about the same size as jQuery. It does everything React does with a few extra syntactical sugar type stuff. It's got tools for managing animations, tools for managing transitions, but it's not too heavyweight. It kind of stops there. If you want to extend it, there's core plug-ins, so they're separate from the core code base, but they're maintained by the core team. There's an ecosystem which is much smaller than React, but it also has less duplication, so if you need to extend it, there's generally one thing that most people use, or one or two things. So it's got a small footprint. You can extend it, and when you need to extend it, it's not overwhelming with choice. You can talk about why I think it's really, really cool. The fundamental thing is that it gives you a shift in the way you think about your front-end development. So rather than the DOM being a single source of truth as it was in the jQuery days, everything's now databaseed. So if you have an element and you want to add a class to it, you have a JavaScript object that represents that element's classes. You bind that object to the element for a view directive, which we'll talk about in a minute, and then whenever anything adds to that object, whether it's a method in your own code, whether it's someone using the view developer tools, whether it's anything else, the DOM will automatically be updated in real time. So you tell view what data you want to track, and that could be strings, it could be objects of classes, it could be arrays. Whenever those things are modified in any way, it picks up on it and it updates the DOM. So there's no need to create events to watch for changes. We don't have to bind our code to sort of long query string selectors or anything like that, and it just works really, really nicely. As a bonus, a lot of people are using View as a replacement for jQuery. So there's two articles here, Smasher Magazine and CSS Tricks. I'll tweet the link to my slides afterwards if you want to check them out. And View works similar to jQuery in that you can attach it to anything on the page. It can use existing markup, which is really, really great for working with Quick Templates. And we've actually got an example here. So I won't spend too long on this because it's something that many of us will be familiar with, but in the jQuery way, we write a selector, we attach a click event, we do some class toggle in, we do some attribute toggle in. If I was to change that button to a different element, or if I was to change that toggle class, the whole thing would stop working. With View, we've got some new things to introduce. So we have View Directives, which are kind of extensions to HTML that you put in your twig, and which tell you what to do, basically. So that click, that means attach a click event. The colon before area pressed means bind value of area pressed to active, or evaluate this JavaScript. These things would normally be in your JavaScript, you wouldn't have the actual click event function in the code, but it's just an example. Later on, I'll show you a bigger example. And then on our JavaScript, it's just four lines of code. We tell View that we're dealing with this element, and we tell it to track a piece of data called active, which is a boolean, and it starts off false. When the click event happens, active will be set to the opposite of its current value, and as a result, this will update, so area pressed will be toggled to. We've also got a class example here, where we've got a object, which is bound to class attribute, and the class red will be shown if the value of active is true or false. So we're not using a toggle class function, we're just dealing with standard JavaScript objects, standard boolean stuff, which really helps you not get too confused. Another massive thing for me is it's easy going learning curve, so it feels like an extension of HTML rather than a replacement. The documentation is really solid, the community is nice, the dev tools are great, it's quite an easy thing to get yourself into. As an example of the developer experience, I wanted to show how to do something in React, and then how to do something with View. This is how to do a two-way data binding, so what that means is when I type in this input, the value up here is updated. So our HTML is just an empty div called app, and then in here we've got a React component, we set up some state to track value, we've got a function that handles changes, and then we've got our sort of template in the JavaScript file which gets rendered onto the page. So it's quite a lot, I think, of code. I'm sure someone who's better than me at React will be able to write that in a nicer way, but this is an example I adapted from a Flafio Copes tutorial, so hopefully it's okay. To do the same thing in View is that. So this is an example of View knowing that there's going to be a lot of people doing this, a lot of the time, and it provides a little shortcut, which is vModel. So vModel means basically bind this value and then on change, also update that value. So rather than having to specify those two things separately, we're doing it just with the vModel directive. So this would be our twig file. We can see that the markup is in twig, so we don't have to reconfigure our IDE to do syntax highlighting differently. If we've got things processing those twig files, we can still process them. The markup stays where it belongs really, which is in a Drupal templator language. On the JavaScript side of things, we attach View to the element, which is the ID in the HTML, and again we tell it to track a piece of data called name. So that's all it takes. This is a slightly more complex example. It's like a name badge generator. I'm typing in here the name badges updating. We're going to show you some more View directives here. So up here we've got something called vCloak, and what that does is that is removed once View has initiated itself. So in your CSS, if you put vCloak displaying none, that means this whole thing will be hidden until the JavaScript's run, and that stops the user from seeing the placeholders. We've got vIF here, which we use to toggle. So if the name's empty, we get the shug emoji, which comes from here, because we've got an exclamation mark in front of name. If name has a true value, then we show the capitalized name. What capitalized name is, is an example of a computed property in View. So computed properties are really, really cool. They're basically taking an existing piece of data, which is name, and they transform it. And View is clever enough to work out what the dependencies of the computed property are. So it knows that if name changes, then the capitalized name needs to change. And it's clever enough to only update the bits of the DOM that need it. So it's not going to render the whole page again. This is an example of the View DevTools, which I love. They make debugging so much easier. I've extended the example a little bit. There's now a range slider. You can say how excited you are, and then this gets bolder in exclamation marks. You can see the excitement values increasing up here. You can also see when someone clicks Submit, this array, which is currently empty, is going to get a value pushed into it. So I'm doing this, I think with the keyboard or the mouse, but we can see that the DevTools is updating in real time, which is really useful for when something's not working and you want to try and figure it out. Important thing to note is that in both those examples, there was no build process. We weren't having to run MPM Watch or anything. You can use View just by including it as a script tag. If you've got a massive application, you're probably not going to want to do that. You'll want to use Webpack or whatever, but you can start off just doing it like that. That's what I meant earlier about it being really easy to dip your toes into it. For me, View feels really complementary with Drupal. They both have a focus on doing things in markup. With Drupal 8, we started doing a lot more of twig. With View, we keep our directives alongside our markup, so there's less context shift in between files. There's an argument there about separation of concerns, but for me, I'd rather spend less time switching between files and trying to remember what I'm doing. Perhaps that's a personal opinion. They both have a small core functionality, but lots of plugins. They're both independent, open source projects. With the case of View, it's easy to add to existing sites. The project I'm going to be talking about in a moment, we built it as a standard Drupal site until we realised the Drupal Ajax stuff wasn't going to cut it and we had to use View. So, let's talk about that now. The site we were working on was a university website, so obviously one of its core functions was to promote the programmes, the courses, the degrees that the university offers. Especially the undergraduate degrees, they had a lot of what they called variants. So, if I wanted to do a course in my airline management, I could do it full time. I could do it part time. I could do it with a foundation year. I could do it with an industrial placement year. I could start in September. I could start maybe in the calendar year in January. All these variants have different content because one of a placement year will take longer to complete. It might cost a bit more. Until the redevelopment of their website, each of these course variants was its own node. So, there was a lot of shared content between the nodes, but also a few differences. The university was hit with duplicate content penalties from an SEO point of view, and they also had a maintenance overhead. Their CMS users were having to spend a lot of time updating the same things in different places. There was even a bit of a concern about regulations, so the courses have content which has to be there by law and it has to be updated, rather, and they were concerned that having the different nodes would mean that they might not always have the right content in the right place. So, we wanted to get all of this stuff on one single page. We wanted to have a single canonical URL. We wanted to have all the Google juice on focus on that one page rather than distributed. We also wanted a much better user experience. The prospective students were frustrated about switching between all these different pages, trying to work out what was different, which one they should be looking at. So, we wanted a more app-like user experience. We wanted content to update automatically on the page for changes to be highlighted and for all of that to happen sort of instantaneously. So, this is the Drupal side of the solution. Nothing we did here was particularly complex, but we had a really good end result and I think that is one of the things that encouraged me to do this talk. We built something that feels advanced, but when you look at the code isn't actually that complex and as a result we've had very, very few like big issues with it, very few big bugs. On the Drupal side of things, we have a content type for courses with all the usual fields. Anything that's static that stays the same between variants is just a regular field on the content type, and then we have a paragraph field which contains all our variants. So, each variant would be like starting at this time, doing it full time, starting this time, doing it part time, and so on. We exposed the variant data to our viewer application for Drupal settings, which I'll talk about in a moment, and then we have a custom twig macro which prints these variant fields, but if a sort of wrapping element which View uses to control their visibility. So, all the data is actually on the page, Drupal prints it there. All we're using View for, well, primarily what we're using View for is to control its visibility. We also use it to like update the URL so people can share a query string parameter of the variants in. We use it to allow the user to copy the application code to their clipboard for when they apply on external site, a few more things. But the main thing is showing and hiding these variants and presenting a user interface to toggle between them. So, this is kind of a zoomed out view of what it looks like. On the left-hand side, we've got a larger view of the page, and I've highlighted in pink some of the things that change. So, this shows what modules are available, like what units are study. It's also got some introductory text that can change, so that will all be updated. Lower down, there's lots more of those examples, and up here, and on the right-hand side, we've got an example of the user interface. So, this is a sticky bar. We have a study option here, which is the sort of full-time, part-time thing. We also have a start date. Both of those are select elements. If you update one, the list in the other will change, depending on what's available. But we did some user testing, and it turns out not everyone sort of thought to interact with those. So, lower down, we've got these things which look like sort of links or buttons, and these do exactly the same. So, if the user misses the options here in the select element, they can use these instead. And of course, if they change them down here, it also changes it up there. It keeps it all in sync, and that would have been really hard to do, I think, with a sort of DOM in control approach, but with the data in control approach, that's fine, because we just write to the data object and then view updates everything for us. So, this is what it looks like in Drupal. You can see we've got a bunch of course variant paragraphs, and inside then, there's quite a lot of things. Start dates, sort of codes for the application systems, how long it takes, some more internal stuff. There's some entity references there to shared content, like information about the funding options available, or application requirements. So, let's talk about how we get that data out of our paragraphs and interview. So, this is a sort of simplified example. We're going to build a little view app which toggles between two logos. This wasn't taken from the university project. It was a project I was working on recently, which had like sub-brands, and we wanted to sort of be able to change the logo through view based on the Drupal setting. So, on the PHP side, we've got a HTML preprocess function, and we're setting our logo variant value to be B. There's A, there's B, here we're setting it to B. We tell Drupal, we're going to be using some Drupal settings on this page, so we attach that library, and then we create a Drupal setting with our module name and our logo variant key, and we set it to the value of logo variant, so it's going to be B. Then, in our view, we create the component or app, tie it to the ID of app, it could be anything. In our data object, we have got current source, and we're reading this from Drupal settings, which will already be on the page because we attached the library. So, current source is going to be Drupal settings, module name, logo variant, which we'll evaluate to B. Then, we've got an object of our two different logos, so two images hosted on Cloudinary, A and B. Down here, we've got another computed value called logo source, and what logo source is going to do is it's going to return from the array the key which matches this current source. So, this current source, Drupal setting, will be B, it will pick this out of the object. And then, in our markup, we've put a colon in front of the source attribute, which means we want to bind this to a view piece of data, and we're binding it to logo source, which we had on the previous slide. So, let's talk about how we used this. We had some things which are like simple strings, so those we just output a view placeholder with the double curly brackets, which we'll talk about in a minute. And then, when that changes in the view data, it gets updated automatically. We had some more complex stuff. We had things which weren't just the simple string, but were like whole collections of markup. Those things like the entity references, I spoke about earlier, which put in almost a mini page. For those, we made a custom twig function and a twig macro. And what that does is it outputs the field as per normal in Drupal, but it wraps a div around it, which has some of these view directives. And we'll look at that in a second. So, if you hide, shows and hides those elements, if you've got two ways of doing that, you can use vif, which will actually add and remove things from the DOM, and it has vshow, which will display none or display what it was initially. We used vshow mainly for performance reasons. If you've got a lot of things changed on the page, vif will be updating and removing the DOM in quite a lot of places, whereas if you've used vshow, it's just toggling visibility, which is a much cheaper way of doing it from performance point of view. What's interesting is we didn't actually use any APIs for this. When the work first came in, we were like, oh, cool, we can use JSON API. That would be great. But in reality, we kind of didn't really need to because we're just toggling the visibility. An advantage of that is there's no network request being made. So if I'm using this on my phone and I go for a tunnel, like saying on a train or something, it's still going to work because we're not querying an API. For more complex examples or things of external data, we'd probably have to use an API, but in this case, we didn't need to, which was nice. So let's get into the twig side of it. What we've got here is two divs. We've got a data attribute here, which we just use to flash with CSS if it's updated. And then we've got a condition for this one. We're going to be showing this if the user said they want to override this bit of content at a variant level. The more interesting bit is what we've got here. So Rutherford is our theme. It's like an atomic design theme with pattern wrap. So we named it after Rutherford, who was an atomic scientist in Manchester. So we're loading our theme. We get in its twig macros and we've got a twig macro called print variant. We give it the field name. We give it a list of variants, which we want to print. So this is going to print one, two, three, four, as many of these variants as there are for that field. And we give it a field type, which in this case is a long text one. This is our twig macro. So the main thing for us to focus on is the middle. What this does is we render our Drupal field here. So we've got a set block. We put the field markup in it. We end the set block and that's going to get printed out here. To wrap it, we've got a div. We've got a VCloc attribute so the user won't see like five different variants and then suddenly one as the JavaScript runs. We've got some data attributes which we use for the styling, as I mentioned earlier. And then down here, we have got a VShow directive and what this is saying to view is only show this div and its content if the current variant, which comes from the view data object, matches the variant ID, which twig is going to print a integer to. We also have a check to see what the current funding nationality is. So some things like the cost fees are going to vary if you're applying from within the EU or domestically compared to if you're applying from overseas. So that added a little extra layer of complexity but in most cases it was just updating our statements. So twig will run through this. It will print on our different variants. View will control what's shown and what's not. The next thing to do was to build the UI for the variant selector. So this is the thing we saw earlier where you can use the selector element, you can use the links or buttons. And I've pulled up DevTools here. So it's really small but in this highlighted area as the user interacts with these things, we can see that these integers are being updated in real time. So whenever one of these is selected, we know the user is going to need to see some new content. So we run through all of the possible variants. We look at all the start dates, all the study options so they're the full-time part-time stuff. We reduce those two arrays to their unique values and then we find start dates that match that study option and we update the list. So we used quite a lot of low-dash here. We used the low-dash filter function quite a lot. The one that extracts unique values, we could probably have done that with ES6 stuff but in my opinion it would have made it harder for other people to work on, harder for the product to be supported and it would have increased the barrier to entry to work on it. Something that's cool to note is that these are not actually buttons, they're not anchors, they're styled radio buttons. The reason we did that is because these things can only ever have one value. They can only ever be this one toggled or this one toggled for the dates and that's something that radio elements or rather inputs or a radio type give you out-of-the-box with native HTML. So we didn't need to write any JavaScript functionality to make that work, it just worked. That's a trend I see a lot in looking at other people's view code. The way it feels like an extension of HTML means that you're more likely to use built-in HTML things. So there are some caveats with progressive decoupling just like any other type of decoupling. Let's run through those, we've got about eight minutes plus we need to do some questions as well. So accessibility is a big thing. Browsers have been around for a long time, they're really good at letting the user know when there's been a page change. JavaScript and updating the DOM dynamically is less good at doing those things but we've got a few ways around that. First thing is to do you can consider using area live regions. So Drupal has a helper function for this if you search for Drupal.announce. It basically just reads out a string so you can announce that something's changed. For people that might have trouble observing which bits are different you might consider using an animation or like a focus ring type thing to highlight what's being changed. If you're concerned about making the page too flashy for people that might prefer less motion there's the prefers reduced motion media query so you could turn that off. And you should also consider setting focus to things that have changed if there is one part of the page which is changing. It's more difficult when there's multiple things changing. If you want to read more about this it's like a massive subject. It's quite easy to get wrong but there's also a lot of basics which cover most people's mistakes. And the accessibility project A11Y it's a numer in them. Accessibility project A11Y project.com has a checklist and a resources page and I'll tweet those links later on. The other thing to watch out for is SEO. So search engines particularly Google have got a lot better over the years with indexing dynamic content. The way Google does it at the moment to the best of my knowledge is with two waves. So it will initially index your site without JavaScript enabled. It will look at your plain HTML content and then later on it will do a second wave and that's when it will run JavaScript. So it's best to serve your sort of default state as HTML. So in our case the paragraph which is at the top of that multi-value field paragraph field that's always shown. So when Google runs through the page the first time that's what will get indexed. When it runs through the second time it will realise there's a bit more interactivity going on and it will handle that. If you want to see how your site looks from Google's point of view use their fetch as Google tool. Finally we've got some tips and tricks for using Drupal and Vue so these are things that I learnt in the hard way. The key thing with Twig is that they have the same delimiters. So if you print a Vue variable and if you print a Twig variable they're both wrapped in those double curly brackets. So we need to get around that otherwise you spend ages refreshing your page wondering why there's nothing on it. One way to do that is with Twig's verbatum filter. So what verbatum in a single curly bracket and a percentage sign means is ignore everything until I end this verbatum tag. Yeah it's not a filter is it? But that's really good because then Twig won't worry about those double curly brackets and they'll get passed to the browser which means Vue will be able to deal with them. A second way around that is to not use the double curly brackets at all. So if you've got quite a simple situation where we have this span and we want to put some text in it we can use the V text directive. So what that means is update the inner text of this HTML element to the value of leader type in this case. If you want to get really creative you can also change the Vue delimiters. You can set something on the window object which does that or you can do it per app so you could have it as double dashes or triple underscores or whatever but then that's going to make it harder for people that are new to your project that have to figure out what the special delimiters are. So those two are my favourite ways of doing it. Next tip is switching between the minified version of Vue which is great for production but doesn't have the dev tools. The way we do that is we have a Vue Drupal library for the minified version then we have a library alter hook we check to see whether JavaScript pre-processing is turned on at a Drupal level and if it isn't then we switch out the minified version for the unminified version which gives us access to dev tools and sort of much nicer error reporting. Final tip Vue tries to be helpful and it strips out HTML comments from Vue templates. If your Vue template is also your twig template that means it's going to get rid of your nice Drupal theme debugging comments which tell you what templates are being used. To fix that, just add this comments true line to your Vue files and then it will leave the Drupal template comments as they are. So in conclusion, I love working with Vue I think it's really simple but it's also powerful and I think it's a really good fit with Drupal particularly because of how you can use it with existing markup and in twig files. And that's it, thank you very much. So we have three and a half minutes for questions so maybe we do one or two and then I'll be around at lunch if anyone wants to talk about any of this. Does anyone have a question? Hey, yeah definitely. So the question was we're using Vue on this project do we still use jQuery, do we use Drupal behaviors? And the answer is yes, absolutely. Maybe if I was a purist, if my team was a purist we wouldn't be doing that but the reality is we've got plugins on the page like our tabs plugin, we need to control that and that's done through jQuery events so we use jQuery there. I also ran into a problem where our lazy loading script, lazy sizes wasn't detecting some of Vue's changes so we used a little bit of quite dirty jQuery there to fix that. We used Drupal behaviors for the content on the page which isn't handled by Vue. We also call attached behaviors every time view updates certain parts of the pages so that our Drupal behaviors that handle things like the tabs run. So yeah, the two can coexist. We haven't really had any problems with integration there that haven't been problems of conflict. So it's kind of a mixed code base at the moment but we're using what feels like the right tool for the right job if there's a lot of really heavy DOM stuff that can't be done with this database approach then we use jQuery because that's kind of what it's made for and it's still good at that. You're welcome. Anyone else? Okay, add the back in red. Yeah, I can use the boxes but I'm really bad at throwing it. Yeah, can you run it back? I don't want to rear end my talk by breaking someone's glasses or something. Hey. Hi, I'm wondering what would be your suggestion in terms of strategy for progressive decoupling? For example, my team and I are playing with commerce side, so shop. We have a couple of things decoupled, not using view. We are considering it. But I don't know, first thing that comes to my mind is I don't know, product variation, switching, not to use Ajax but maybe switch to view. So back to my question is what about strategy? How to approach progressive decoupling? For example, with commerce sites, what is your experience and suggestion? It's a good question. Something I didn't mention was this was my first time using view of Drupal. I've used it for building SPAs, I've used it for hobbyist stuff but this is the first time I've done it with Drupal. So not by any means an expert. I think you're right in pointing out that the product variation has similarities with the course variations. So I can imagine that a similar approach to what we did here would work. In terms of strategy, perhaps consider building like an MVP, so a sort of prototype. Get one product which has a few variations and then maybe mock up quite a sort of rough and ready, simple looking app. Like I said, the view learning curve is gentle. There's a lot of really good learning resources. You could even just build it in a code pen or something. Maybe I'm not a good strategist, but I think maybe start with a sort of simple reduced case like that and then if you feel like it's great, if you really like it, you can look at doing it in Drupal. It's probably not the best possible answer, but I guess the advice is just to try it. Thanks. Yeah, just really one more. We are over, so feel free to go. But I think someone's waiting. I have a question about search and filtering for courses. On university pages on course catalogs, one of important features is searching. Question is, do you use search and filtering using Drupal filters or view functions? Okay, yeah, good question. So this piece of work was covering the course pages themselves. We had some other work, which was the course search functionality. We're not actually using Vue for that yet. We could do. I know some of the universities have really nice real-time searches. If you're interested in that, I think Algolia are really, really good at JavaScript-based search and they interact with Vue well. I know that their team uses it. But in our case, the course search is a search API of solar, which runs off the Drupal data. It's got facets, but they're handled by Drupal behaviors rather than Vue. But there's an area there to potentially look at improving in the future. Great, thank you very much.  Thanks a lot, guys.


Hi, I'm Tori Clark and I'm a postdoctoral research scientist at the Australian National University and in my research I'm looking at ways to improve photosynthesis so that we can grow more food to feed the world. And today I'm going to talk a little bit about how plants specialise the cells that they have so that they can become plants that can do photosynthesis and grow in different environments. So plants start from an embryo which is inside a seed and this is a single cell and within that single cell we already start to see some differentiation so the different ends of the cells start specialising and growing in different ways so that as that cell divides we get a differentiation in the tissues and in plants two main tissue types are derived from that initial cell and we call these meristems implants and these are kind of similar to stem cells in animals so a meristem is a region of cells which can then further differentiate into lots of different cell types and plants are quite interesting because they're a little bit different to animals in animals stem cell is quite determinate so if you want to become a heart cell you would start with a stem cell of a heart and that stem cell can then only produce stem cell produce functional heart cells conversely if you wanted to be a liver cell you would start with a liver stem cell but in plants they actually have this great flexibility in the cell types they can produce from their meristems so from the chute meristem they can produce a range of different tissue types that produce the above ground parts of plants so these are the stems and the leaves and even the reproductive organs such as flowers and from the root meristem it can produce all of the root tissue that's below the ground so how does a plant cell know what sort of cell to become if there's such a variation in what's going on and this is another way that plant cells are quite different to animal cells plant cells are really responsive to the environment around them so it's about actually the location of those cells and what's going on around what environmental signals they're getting from the atmosphere sunlight gases but also signals from the neighbouring cells around them and those signals actually switch on different gene expression patterns within the cells so you can think of gene expression patterns as basically like turning on and off functions within the cell so if a plant was growing and it needed some structural support it would want to produce cells that can be really strong and so one of the ways plants do this is to have cells that produce a secondary cell wall for extra strength and so the genes that control that would get switched on in those cells and the signals would get integrated from the environment around it so we would know that it needs to produce those different signals so from a single cell in an embryo plants can then differentiate right through to produce all these different cell types which then go on to create the different tissues and organs that make the functional plant.


Hello everybody, today we are here with Nero Erlich, who is a professional in how to calculate the profits of your e-mail dropshipping business or actually any business in general. So I asked Nero to come here today and show you how to calculate your profits. And actually the first step for this is how to get your reports from PayPal to make these calculations. So Nero can take it from here. Enjoy. Hi Leo, hi guys. So my name is Nero Erlich. I'm from my profit platform. Basically it's a system that calculates total profit for eBay business. And today I want to talk to you guys about PayPal Monthly Report. The report is a business report that can provide you all the activity in a specific month that you choose. This will generally help you to understand the income of your business and help you understand your performance. So first let's talk about when and how. When do we need to download this file? You must do it in the first day of every month, because in this specific day you need to analyze your store's last month performance. Now I will show you how to download it. I will log into my PayPal account now and I will share my screen so you can see how it's done. So let me just share my screen. You can see it now.  And after the reports you have to click on financial summaries. Under financial summaries you can see the monthly sales. And then you have two options to choose. The first one is to choose the relevant currency that you are working with. I will choose Euro for this example. And the other thing is the specific month that you want to choose. So just for the example I will choose November. The last November I will create the report. And basically just after you will click it, you can see the report in the PayPal web. But if we want to analyze it and to play with the numbers, I recommend that you will click on the download report to the Excel. Now I will share the Excel file and I will show you what is the basically relevant data that you need to take from here. Now I will share you the Excel file. Here it is. So there's a lot of data and there's a lot of numbers and I want to make everything in order. So I will explain the first column. The first column is column A. You can see the dates. This is the dates of every transactions that you made with your customers in this specific month. The next column, column B, is the payment received. This means this is the number of transactions of businesses that you made with your customer in this specific month. For this example, I can see I rolled down. The total is the most important thing for me to show you. I made 73 transactions in this specific month. 73 sales. Now let's go to the next column. The next column is amount received. This is basically the money that you got from your transactions for every business. You can see the dates. Just for example, I will show you this. The date was the 30th of November, one transaction, and this was the amount. So the total amount that I've got from my customers is 1,560 euro. The next column is column D. The value of this is fees. This is pay for fees. As you know, PayPal takes you fees for their services. In this specific month, I paid PayPal 90 euro fees. The next column is column E, refund sent. As you know, there are cases that your customers ask you for refund of their products. After you send the product back to your suppliers, they get their money back. This is the amount of the cases of the refund. In this specific month, I had eight cases of refund. The most important thing for me to understand was the value of the refund. The next column is amount refunded. You can see in every place that we saw a number in column E. Just for example, now here I see one refunded and the value of this refund was 44 euro. So the total refund of all this month was 308 euro. It is important for you to understand that this is a part of the amount received. So basically if I got from my customers 1,560 euro, I paid back some of the customers this amount. The last important data that you have to understand, a lot of eBay sellers doesn't know this data, but PayPal pays you back. We saw that they take you fees for 90 euro, so there is the opposite case. So when every place I refund my customer, I get a fees back from PayPal. You can see in the line where I paid 44 euro for the refund, I got 2.76 euro back to my income cash. So this is basically the four must knowledge that you have to understand. I will summarize it. In column A, we see the dates. In column B, we see the number of transactions. In column C, we see the amount, the total amount of cash that the customer paid us in this specific month. The next one is the total fees that we paid PayPal. The next one is the number of cases that we refund our customers. The next after that is the amount of refund that we paid our customers. And the last one is the positive fees that PayPal gave us back. So basically, this is the monthly report and we must understand we have to download it every first day of every month because this gives us a lot of data about the performance of our business. So we are taking this every first month and then you check all of your data here. Exactly, exactly. There is no other way of doing it. One very important thing which I wanted to add for people to know, a lot of invoices, companies don't give invoices, don't create invoices for the fees. So it means that we pay fees to PayPal and then we don't get money back for this for taxes. So this is something which is very, very, very important because for example, we are in Autodesk so the first half year we didn't know about this and we just lost a lot of money then we got it back but it's something which is very, very important to know. I think that this was very, very, very useful and it will help a lot of sellers. Thank you, Neil. Thank you guys. Bye-bye. Bye-bye.