nt or something like that I forget how our our um our police chief refers to things like that they're not going to be going out um into a business specifically looking for failure to post the rights but if someone comes to them and says comes to the human rights director and says hey they don't have the poster up the human rights director could walk over to the business look to see if the poster is there and if it's not issue a warning um yes that'll take some time um a little bit of time from the human rights directors or the police departments um you know time of day uh but but that that's it's it's more of a enforcement on complaint I don't know if that's answering your question but it has that that penalty in the penalty block doesn't isn't in the contract a municipal contract or the tax relief agreement bylaw those are you'd have to find a breach of contract so that would be you'd be alleging a breach of contract and you'd be into that type of enforcement already Andy are there questions on this issue well I I guess I'm just getting back to the question as to whether other communities with similar provisions have had experience in the costs of enforcement for it or what we've now narrowed down to is um which I was trying to get up the fines and um if so what the report on that has been if there hasn't been an inquiry then I think we've probably give exhausted it and should go on I mean we have a study set up and then yeah we we have in a sponsor specifically gondon or campton and say hey how many of these fines for wage and tip theft have you issued and how much staff time did it take we haven't done that to the other communities that have adopted those that we did offer to talk to Northampton and get yeah I will follow up with that okay okay thank you and then Andy you raised the other question which one yeah I know I was more pointing it out and I don't really particularly um want to get into the discussion myself but I wanted to make sure that other counselors are aware that the initial statement on the top of the memo that Kathy Patton Mandy Cento stated October 14 said says the the purpose of the two bylaws is to strengthen Amherst's ability to assure that employers receiving um town taxpayer funds comply with state wage hour laws and to provide Amherst's tools to present wage theft and then uh two pages later expand that purpose and to something that is really a different subject an important subject but a different subject um and that's um on hiring practices and um if people are uncomfortable with going into really a two-purpose bylaw um I think that I just wanted to make sure that everybody was aware that it's really gone beyond it goes beyond wage theft and into another subject and I'll leave it at that so um Paul I do want to ask the following question in any other policy statements of the town including bylaws do we have targets if you will or percentages where we state what we should be in terms of hiring or what for contracts or anything like that in terms of minorities women people who live in an area or a geographic area I don't think so okay so this is the only bylaw and the only town policy in which we have some stated guidance and this is again as the sponsors have pointed out it's not punishable it's a guidance okay right um sorry don't drop um no go ahead go I would add that you know we we have residency guidance for all of our boards and committees we require them to be Amherst residents um we require our town manager to be an Amherst resident they don't have to be when they're hired but they have to be within a year or something like that um so we do have residency requirements for various um positions in town I do not know whether our police department I know it's been common in the past for police departments and fire departments to have residency requirements I do not know whether ours does we're getting nos to that so and I was really more after the issue of percentages uh particularly as the what the state guidance is at this point and I'm also hearing that we don't have that stated any place else's policy no but we are matching the state guidance in this bylaws and I would just add that um the construction industry has been one that has been one of the least diverse industries um in our country um the military police fire other industries that have traditionally been also not diverse in terms of gender as well as race um historically across the country have made more progress than the construction industry has um and so yes it's uh Andy is correct and that these are two different issues that are together in one bylaw and um we have been as uh from the carpenter's perspective as we advocated for this wage theft is a big problem in our industry and as we've talked to counselors and municipalities to address it we've also taken that opportunity to raise that um there is also a diversity problem in construction and and we've been urging municipalities to kind of join in on helping fix that problem and we found that where um you know aggressive recruitment to change and address the diversity problem is something that many of us in the industry are working to do but it really helps when there are owners of construction work who are also requiring or setting goals in this case are contractors to work towards um more diverse um uh workforces all right uh I'm going to go out Alyssa you've been very patient uh please go ahead so for the public believe it or not we've talked about all this stuff at committees a lot and tried to work out all these details it's just that there's just more and more fine tuning and more questions that arise and maybe some that just hadn't been answered before so I'm going to ask some questions that I just asked that be answered for our next meeting right rather than somebody trying to figure them out right now the first is actually a comment based on what you just asked about Lynn in terms of what other policy statements or bylaws might we have that have targets or percentages I just want to point out that we have a TIF agreement with Atkins that says that we were looking for employees of the greater Franklin County economic target area and Amherst in particular and that was something that KP Law complained about in their original memo and I said well that's funny because we already did it once and I know that uh KP Law is not likely to say oh yes that was a terrible idea but um I don't know how that you know again the reality is like you said we don't have a policy or bylaw that has targets but we did in fact outline targets in a previous contract so um whether that was a good idea or not it was certainly something we thought we thought was a good idea with whatever town attorney we had at that time to do that um in terms of other parts of this when it talks in the responsible again not expecting an answer tonight when it talks in the responsible employer by law and says defines tax relief and says means any form of tax relief granted by the town under a TIF agreement and as we saw in the KP Law and as some of us already knew TIF is a very specific thing under state law or pursuant to any other provision of law regulation authorizing the town to grant tax relief so to be clear which is like incredibly boring but and in the weeds but what we did with Beacon North Square is not a TIF it's special legislation that we have in place that we are allowed to use for affordable housing and we used it with them so I just would like someone to verify for our next meeting that that kind of agreement would fall under that second part of the part pursuant to any other provision right as opposed to being a formal TIF under state definition and it just means that we would have to write the contract with them in such a way that this would be enforceable whereas what contract we wrote with them before we obviously believed there was not going to be wage theft or we would not have entered into an agreement with them but from everything we've been hearing over the last many months that's been problematic in terms of enforcing with subcontractors and so we would in future were we to do another affordable housing project with Beacon or anyone else we would be able to write the contract reflective of this new bylaw that would then enable that to be enforced in a different way so that's a good thing but I just want to make sure that that project which is not a TIF TIF but a different kind of TIF actually is covered and it sounds like it will be well okay but it would be good to yeah that's fine it would be good to be clear about that just because when KP law wrote they acted as though we didn't have any TIFs and we have one special legislation and we have a couple of other actual TIFs yeah no we intend to the bylaw is written in as an intent to cover especially the special legislation great that's why the sponsors added the sentence about what would not be included in this this definition instead of what is included you know the KP law's recommendation was to say accept and she added a big clause in there and we had big concerns that that clause actually then took out the applicability for the special legislation and all so that's why there's that extra sentence that says this specific section of MDL does not fall under this and that's the the tax sort of write-off type relief that we grant during budget season every year for veterans and and you know elderly the over 65s I think those types of special tax relief we're saying this doesn't apply to but it does apply to that so great and then the other I'm sorry the other one I had is in regards to and it was really just again a previous conversation at TSO and then a couple of people both the counselor and one of the presenters have mentioned the Human Rights Commission the Human Rights Commission has a limited role here as is clearly defined in the bylaw it is a very useful role in terms of meeting with the attorney the attorney general in terms of reporting type materials it is not and has never been and I have said over and over again at public meetings yet Lisa mentioned it again tonight that someone who believes they've experienced wage theft should go to the Human Rights Commission that is factually incorrect and it's still in appendix d as being go to the Human Rights Commission that's not correct we the Human Rights Commission is obviously subject to open meeting law and it would be ridiculous for someone to go to the Human Rights Commission and say at a public meeting my wages were not paid by ex-company at a public meeting I just that needs to be removed from that appendix moving forward I realize that's not part of the bylaw the bylaw is very clear it says human rights director which then leads to my second point that I think needs to be addressed in some fashion prior to our November 9th vote which is that we have not had a human rights director since Deb Bradway retired from being both human rights director and human resources director we do not have a human rights director with that title so given that the bylaw very clearly talks about the human rights director's role again I don't want to hear explanations tonight but it needs to be clarified in a memo to the town council for next time and to the community how that's going to work that obviously it must be someone designated by the town manager for that sort of work but there's not someone with that job title right now and again really really strongly feel as I'm sure you understood that it's not appropriate to take wage theft complaints to the Human Rights Commission because they can't meet about it privately they'd have to talk about it in public and that's entirely inappropriate okay any comment from anybody at this point all anybody else I would just say we'll fix appendix D it was probably at one point it was to the NRC and we just exactly we just didn't affect it when we ended the bylaw we'll fix it so the only follow-up I think coming out of that is to clarify who is in fact the designated human rights director from all of your three points is that correct Alyssa got it Darcy yeah I just have to say that our support for these two bylaws or is it three I'm not sure it's two seems to me to be a no-brainer as Evan said TSO took this up really early we took it up on May 4th five months ago and we first heard it we gave suggestions for for amendments which the which the sponsors worked on and came back with the proposal for the addition of the Human Rights Commission piece which had previously been a separate committee that was going to be created so they changed that on our request but the reason that we took it up so early before we even had a review process was because of COVID-19 because of the urgency of the needs of low wage earners during the pandemic and now we see that the pandemic is going to go on and on for at least another year and and so it's particularly pressing to get this passed as soon as possible in in my opinion we we really want to support responsible employers as as the sponsors noted and contribute to the health and well-being of the workforce and community we don't want those responsible businesses who abide by wage and our laws to face unfair competition when others can at wage theft and I really really want to thank the advocates and the counselors who stepped up to sponsor these bylaws because it allows Amherst to really show leadership in supporting our low wage workers during this time and generally going into the future Darcy let me suggest that at this time is there anything that you would like to add to your statement that would actually be your official TSO report on either bylaw um well on the 14th the TSO did vote unanimously and to recommend it to the council before it moved on to GOL we made a number of suggestions in the first meeting which as I mentioned the the sponsors looked at and they came back with amendments for the May 18th meeting when we voted so I don't think we have we I think I don't really think I need to add anything more than that um yeah we voted unanimously to recommend thank you and George I'm actually going to go ahead and ask the same thing now for GOL your the statements for both bylaws whether I wish to add anything or whether it just to report the report GOL's actions okay um good um I wanted to begin by saying that I actually support this bylaw and I plan to vote for it but that's said in anticipation of the fact that GOL is asked to look at the bylaw simply as a matter of clarity consistency and actionability and a key part of that is the legal review so um as you have perhaps some of you painfully had to wake your way through the GOL report there's now two of them that spell out some of the discussion and also some of the areas of of of difference between KP law and the sponsors and as the sponsors made very clear this evening they spent an enormous amount of time working with KP law both in the GOL meeting and also later and came to I think a fair amount of of agreement but there still remain some areas and so what I tried to highlight in the second report are areas where there still remain some differences but Pat was perfectly correct that um the KP law did not identify any what's called sharp conflicts between this bylaw and state law what they did point out and it's in my report and I'm sure you've all read it is that there are areas where this could get sticky at some point um so I don't have anything really to add to it it's there for everyone to read bottom line is that we declared it clear consistent actionable by vote of four in favor and one abstention I'm sorry both both yes for both bylaws we did each bylaw separately and the vote for each was four in favor none against and one abstention so um we've had a very healthy discussion on this tonight there's a couple things that we've asked that they'll be follow-up on and I've made note of those and I'll confer with the sponsors on those before our next meeting and are there any final comments otherwise this will come up again on November 9th and we'll have some answers to some of the questions that you've asked I want to thank all three sponsors and Lisa for bringing this to us originally enormous amounts of work have gone into this uh and Kathy will be with us on the 9th and we can get to thank her as well all right so then with that we're going to move on we've done appointments uh we're going to do the committee and liaison reports finance committee is first Andy the skip CRC oh I did I'm sorry um and in fact there's not much to report there's a report in your packet um you know and I would just ask that you read that uh the the report details particularly one vote that CRC took to recommend that the council forward something to go out um I I will be talking with Lynn about getting that on an agenda at some point um and that relates to issues surrounding town council multiple member body appointments um as Lynn announced earlier uh CRC will hold a joint hearing with the planning board on November 4th at 8 p.m the planning board meeting will start at 6 30 but the hearing that involves article 14 and zoning bylaw will start at 8 p.m and CRC next week we'll have a meeting at 2 p.m and we'll be discussing zoning uh probably article 14 will be on that agenda um there's a possibility that 40 r will be on the agenda but I don't think that will be on it I think it will just be zoning priorities and uh article 14 okay uh Darcy you you have your hand up question yeah I have a quite I just have a comment about the CRC report is this a time to do to make that comment um I uh I really appreciate that CRC debriefed its planning board interview process um and I agree that a change in our process is one that the council needs to discuss um I don't agree that the issue should be referred to GL uh because it's one a policy um it um it will end up being one way of doing it or the other um it's not GLL's own guidance document states can GLL recommend substantive changes that alter the intent or function of a measure no GLL only evaluates proposed measures for clarity consistency and actionability doesn't evaluate policy to what GLL will not recommend any revisions to a proposed measure that change the intent of the measure or its functionality unless GLL determines that the intent or function of the measure conflicts with mass general laws the charter or the adopted town bylaws thus I believe that this discussion that we need this is a discussion we need to have with the full council and that any action start here um then if we come up with proposed language that we can agree on as a policy or as a new rule of procedure or whatever um I personally think it probably should be a new rule of procedure it would then be referred to GLL um and but GLL isn't the body to recommend which policy to adopt I'm just writing down notes sorry um right is there any other comment regarding that Alyssa I agree okay then we will come up with a time to put that on the agenda of the full council before the referral okay and I'll speak with different counselors who have more able to describe the process in full that was used before we go forward with that let me just try to find a time on the agenda for that any further comment on that all right now we can go to finance committee sorry Mandy Jo I didn't mean to slay Andy the finance committee report is really the report that was provided in added to the packet on Saturday along with several documents and I had asked the documents put in in advance because we were having problems getting the report into final form for a couple of reasons that I wish I won't go into but um in any event the report was really covering um sort of our discussions about the fourth quarter year end report and uh the process for the coming year and a little bit about the question of the inventory so um I just will leave it as to whether there are any questions that come from either the report or any of those documents and if none then I am finished and Jo you have your hand up yep um just a quick question on the consolidated timeline actually two questions um the consolidated timeline has the council referring the CPA items to fincom in that it looks like maybe April it's hard to tell and voting on the CPA stuff in June but the regular timeline said CPA was going to finish its report in December so I'm hoping that we're not going to sit on a report for four months or five months that we're going to actually do that referral in January and vote in February or March and so maybe it just didn't get shifted when CPA's timeline got shifted maybe this consolidated timeline didn't shift that and it would be really nice the other comment on that is it would be really nice if the consolidated timeline also included uh capital uh the JCPC functions because it does not include JCPC on this timeline at all it says budget but the capital budget it includes it as part of town council um presentation of CIP in April but it doesn't include like a JCPC when it's doing its thing okay thank you for the comments and uh when we have our next meeting which will not be tomorrow as noted uh when we have our next meeting I will make sure that we get those reviewed again that was submitted to us by staff and um we talked about it some but did not have uh a complete review to the level and so your comments are very helpful thank you thank you um GL George uh just note that we're meeting on Wednesday um and that the main item of business will be continuing to discuss the council process for evaluating town manager's performance and for setting town manager performance goals Mandy Jo you still have your hand up thank you okay town services Darcy uh yes I won't repeat what's in the report um except to say that uh TSO unanimously voted to recommend approval of the FACE technology bylaw proposal um we'll be speaking further to the transportation advisory committee about how we can work together effectively um and uh that uh important appointments for the community safety committee are coming up at our meeting on I believe they're coming up on October 29th although I have not confirmed that with the town manager um the uh and as we mentioned earlier the October 22 meeting is postponed until 4 30 p.m. on October 29th thank you um are there any liaison reports okay we've done the approval of managed uh town manager's report Paul highlights yes um so first off the elections are happening uh the voting is happening we've had um early voting starting at the banks community center on starting on Saturday uh over the weekend on Saturday and Sunday we had 236 people vote some of the counselors who actually voted as well um we also have a uh the voting ballot if you want to hand if you want to put it uh your ballot if you don't want to go through early voting you can drop it in the drop box that's on the main street side of town hall that's also available um no real um problems over the weekend although there was a line pretty consistently so that people are eager to do the early voting which we're very pleased about um so uh in terms of uh so that's the big thing we're focused on I am we had the first meeting of the interview team for the community safety working group really good meeting for that group um and uh so worked on a number of the questions that they would like to ask the process that they would like to use during the interviews um we're now securing actual interview times over the course of the next week so we can interview all the applicants and getting this pretty talented group together for big chunks of time as we're going to it's going to take multiple hours of their time to be able to interview everybody who put their name forward so we thank the these these folks for dedicating their time to this um so those are the two things the big things that I wanted to mention if there are other things that you have questions about I'm happy to answer them yes um there is a small confusion uh which we may have contributed to um Bob and I went and did early voting on Sunday and we were asked when we're in line by the poll workers if we had taken out a um absentee ballot and we said yes and then they had to call Town Hall to say put a stop on that when they're going to vote in person so um the people after us when they were asked that question said yes and here they are and so all that they had to do was to give their empty unfilled out ballots to the poll worker so Bob sent out a memo but some people have been getting confused so I believe this is correct and please correct me if I'm wrong if you have filled out your absentee ballot you can take it in person to the drop box but you do not take your filled in ballot to the early voting but it would save the town workers a lot of time if you took your unfilled out absentee ballot with you if you go to vote in person and then they will take it and that way they know you're only voting once but they have to they will be they're going to check on every um absentee ballot that has been sent out to make sure that that each individual only votes in person or by absentee ballot is that absolutely correct yeah so um on the list is a designation if you've requested an early voting ballot if that if there's that EV designation there they need to verify with the town clerk's office that that hasn't been received by the town clerk at this moment in time so if you so that you only get to vote once so you can either do early voting by by giving you the envelope or doing it at early voting in person so they will verify whether you've done which one you've done if you if you have the ballot that's fine you don't need to have the the blank ballot with you if you have a filled in ballot you can't take it to early voting because you put that in the drop box because they can't accept a filled in ballot that's only for in-person voting right so but my point was you could save some people some work if you brought your empty ballot with you which i which i had done yeah it might save some time but i think they would still validate that with the clerk's office um you have your hand up just a couple of questions i was wondering if we know thank you for the numbers for in-person early voting i was wondering if we know what percentage of all resident all voters have already voted including the absentee and malin early voting ballots um so that was one question what can you update us on the status of the strategic partnership agreement negotiations with umass is number two emergency rental assistance you talked about in your um memo your report uh could do we is it is it allowed for us to know how many families have benefited from that program right now like how many have been awarded and then just a sort of a housekeeping travel thing west pomeroy lane or road or whatever it's called um where there was a lot of construction going on and the road is torn up it is a moonscape and dangerous to drive on um so when will it get paved i know you might have to have it sit and if it's not going to get paved for a while it needs regraded very badly um so west pomeroy lane has been the site of numerous water mean breaks and you know they've been investigating why you know that that that road has blown out several times and it's usually um something wrong with the pipe and we were they've done a lot of investigation there seems to be like an electrical current or something that's grounded in there so um they've done a lot of different things so they just decide to replace the entire thing and so that's going to take some time and i should resolve that um that challenge i don't know how when they're paving is is going to be done but i can find that out for you um you'll have to remind me the other points strategic partnership agreement no progress on that um not a lot of interest at the university level to talk about beyond what they've already committed to with the schools and i don't think this is the opportune time to be asking the university at this moment time but it's not off of my radar screen at all um and uh remind me of the other two the emergency rental assistance just how many families and then if we have a percentage of how many people have already returned so emergency rental assistance there was a report given to the affordable housing trust on thursday night i didn't write down the numbers i can get that number for you easily um it was it's a um it was less utilized and we had hoped and we discovered some reasons why more people started to fill out the application and finished it so that is an indicator that either the application was too too complex or for some reason people got to a point and stopped filling out so that was something that the affordable housing trust had talked somewhat about uh in terms of number of people i know that um about half the people have requested um early voting uh but it's meant in terms of how many turned as have turned in today i can find that out they we keep a track we do keep track of that thank you at the entrance you have your hand up yeah um two meetings ago i asked about the ambassadors and i know your report reflected today that it is fully staffed now and i'd like to know how many people were hired to be ambassadors uh do you have that number i do 20 okay i know that 20 how many are white and how many are people of color yeah you asked me that last time pot and i apologize for not getting back to sooner i did i don't have that number yet but i'll have that for you tomorrow morning okay for the full because i think that i remember at the very first meeting when i brought it up you said oh i didn't think of that um and it seems to me that that's something that we need to think about and i need to know the result of of that thank you yeah and i would like to add that in addition to that poll it would be very useful to know other statistics about the ambassadors like where they're where they live are they students or not uh it'd just be interesting to know i met a group of them at one point i knew at that point one was from holy oak another one was from springfield so just be useful enough okay i'll see what you got are there any other questions of the town manager right then uh we're moving on to town council comments um let me just say i i now have a spreadsheet of all of the topics that people listed the last time i will be adding the one that came up tonight to that which is the issue of how we do planning board appointments and zoning board of appeals but there's one i want to clarify and that is one request was to look at the salaries of town counselors and the reality if you go to the um actual charter you will find that it states in section 2.4 of the charter that if you're going to do this you must do it within the first 18 months of your term we have now exceeded the first 18 months of our term and so we can no longer look at whether or not we would raise the salaries of or the compensation for counselors or the next round of counselors the next terms so that one is off the chart that's going to get removed okay here's my chart see another one of my wonderful matrices um uh dorothy you have a question this is a comment a statement of praise um thank you to uh paul bachum the town manager and to bill fridt mooring and to scott livingston and to all the people who made it possible we have a i believe permanent um speed blinker on amity street which is attractive and i think it's a little solar powered top i'm not sure affirmative nod from paul and that i hope will really help in um stopping some of the speeding on the street because a lot of the speeding is inadvertent people just don't realize how fast they're going and most people when they see that will slow down so um many people have already expressed happiness and joy because this has been a major concern uh on our street so i just wanted to give thanks for thanks i do so thank you hey and dorothy you have your hand up yeah i would just like to say two things one is um uh if mandy joe or some other person is keeping a running list of potential changes amendments to the charter that would be really um interesting for all of us to take a look at and see if we want to add anything to it and um also on the issue of salaries um i'm not sure i agree that we should take it off the list of things that we should discuss um because we might want to put it on that list and um it's just unfortunate that the whole black lives matter conversation came up at such a time when you know exceeded that 18 month limit and you know there just were a number of people who said well we we wouldn't be able to run for town council um if we're not going to be paid a reasonable amount for our work um so it's just a bind that we're in um and we're also in that bind because we have a three year and one month term that will ever have that yeah so that that is unfortunate and you know what do we say to people yes you should you should still run for office um and then once you get elected you can raise your salary um who's going to do that you raise your salary in the term you're in according to the charter and in fact that's also how the state legislature works you can only raise your salary for the next round of council uh right right um so oh so then they're totally screwed because even if they run thinking that they're going to raise their salaries it still won't be until the following term that's correct so yeah yeah we we missed the boat this time around um and I I think the charter should allow us to do it right why wouldn't we not why would we not be able to do it for the full length of our term I'm not going to have the discussion tonight I'll add it to the list but I'm just saying yes maybe Joe you your hand yeah I I could get into that as a charter commissioner as to why we didn't allow that but I'm not going to because we can't as a council change the charter it's that simple we we can't do it so um the charter says what it says but what I wanted to comment on I am keeping a list but I am keeping my own list of what I've seen that I might want the charter to change I am not keeping a council list or other people's lists so I encourage other counselors if they have their own desires of things they don't like in the charter start your own list because there will be a charter review commission and it will happen in about three years I believe and at that time you as a former or current counselor or whatever it is whatever you are whenever that review commission starts you can send them your list and say hey when I was serving or as I'm serving here's things I found that I didn't like I'm going to do that with my list but my list isn't going to agree with your list potentially and I'm not keeping a council list the council when that commission forms may want to keep their own list or may want to send a list but that's for another time so I encourage every counselor if they find something they don't like about the charter to write it down for themselves so that when there is a charter review commission you can forward it to them that you have your hand yes just a quickie I'm really thinking a lot about the relationship between council committees and the community committees I've been encouraged to think about it by a couple of different counselors and some residents and community committee participants and so I'd like to see that come up on a retreat because I think it's going to be a very intense issue and there may be other issues I think it's time for us to get together in a different way to look at some of the things that are happening so one of the options that I've been considering is pulling you for a retreat retreats on zoom are really difficult but the advice I've been given is don't do it for more than about three hours so that beyond that it really becomes kind of useless so I have meetings we're working on it you know I have it on my list of two address and then let me just get back to the retreat are there any other comments at this point okay there are no items under the 48 hour rule and so we are going to be going into executive session and we will not be reconvening so we need to take a vote to go into executive session correct I move that we move into executive session to consider the purchase exchange lease our value of real property um the chair declares that an open meeting may have a detrimental effect on the negotiating position of the public body is there a second second you need to read the whole motion Lynn the whole motion is I move that you missed the town council will not reconvene an open session following executive session no I excuse me and so it then there's a semicolon and says the town council will not reconvene an open session following the following executive now pat is there a second second okay and now we're going to vote and we start with um tharcy demont yes rishmer's yes hannity yes ma'am yes evan ross yes yes there's ryan yes uh steeve schreiber yes uh andy steinberg yes there are schwarz yes valley ball mill yes lisa brewer yes and pat gantel yes thank you so the public meeting is now going to end and there will be a note on camera's media for that you have all received an email which is includes the new link for the executive session so you'll go off of this link and go on to a new link okay see you there in about two or three minutes


Seems our instructor got hit by a kryptonite on his way over here So let's start off with the tutorials. This one is on D3JS and Instructor Samir Segal is here. So I'm really sorry I woke up this morning I slept really late last night working on this woke up this morning. Nothing was working So I was just thinking about you know, I mean even if I come what I do So at 1040 was my last comment. Hopefully things are working Anyway, let's just get started How many of you use D3 before And So what I have over here is basically more basic We can start with more basics and then more basic stuff. We can just quickly go through this And then Something whatever everyone wants to do, okay, so if you can just open up this you are a I I'm learning ember so I try to put something using ember and what I have is just three sets of sections You know to me B3 I mean you guys are familiar with B3. That's why you all I have but D3 has just You know a single a simple thing that you can understand if you can understand that and if you can master that then life becomes really easy So it basically segments data and it into three states, you know Enter update and exit state and if you can understand what you want to do in each of these three states So if you can understand what you want to do in each of these three states, then life becomes really easy and simple, right? so and then so so D3 is this you know It can take data in any format that it has to be just on CSP and all of that But we'll just skip all of that because those things are there in the API references We'll just sort of go directly to some of the things if you know the critical parts if you can get that And I think you can use the API reference and then become pretty good at D3 The way I use D3 is I just go into those gallery section see the part that comes to my need And then pick that and then see what kind of data it needs You know, how do you prep the data and then sort of modify push and pull and edit and make it work There's a good section called Section if you can read that later, but there's something called about there's a philosophy on how you will be usable charts using D3 And that's interesting in your time. Maybe we can look into that Anyway So what I have over here is a very simple sort of sandbox sort of thing Over here, you have a code editor and this is your data You can add data to this Right now So this first section is just talking about philosophy of D3 Just talking about these three scales So this code over here does absolutely nothing The div over here has an id called graph And if you run this code, it will just simply add an SVG element and G which is a container So the way we build sort of graphs in D3 is we try and put everything into containers These G containers and that becomes really easy, you can translate it, you can transform them So you work on a group of elements together And SVG is where, you know, we can put up It's like a container for, you know, adding SVGs Anyway, you can just go ahead click on enter data And you can click, you know, load which will sort of add some code to this So this first section what it does is just adds a container This will be called once only internally once I'll just try to keep it simple You know, the sandbox will just call it once And all it does is adds this G element to which we will add, you know, anything that we want to add later on Now, if you look at your data, this is your data So 1, 2, 3, 4 is just an array, right? And what we're trying to do right now is we're trying to add subcodes So this SVG element, this G element that is written using that We're going to add circles, we're going to add data to this And, you know, in the interface we're going to append circles, specify centers and radius So, you know, the interesting part is just these three lines So what you, you first over here you say select all circles So if any circles exist already in the DOM in that SVG container And then we'll add data to them, right? And once it adds this array it will very quickly get to know whether this is the data This is new data that's going to be added to the DOM or not, right? And then only for those elements it will then add the circles So if you go over here and click render graph you would see sort of four circles, you know, come up, right? It's doing nothing, I mean all it's doing is that it's taking this value 1, 2, 3, 4 Applying it by 50 and specifying that as the, you know, XY coordinate and the radius Is this simple? Is this too basic? Is it okay? Right? So this is just the first part where you are adding, you know, SVG elements, DOM elements to You're adding SVG elements to the DOM, sorry The next phase is exit, right? So what I'm going to do is actually let me just go back to Let me just stay in this phase, let me add some more elements 5, 6, 7, 8 and so on, right? And let me render my graph so I get more points, right?  You see nothing happened because we haven't changed any of the data just yet, right? Now let me go ahead and remove the fourth element over here And let's click run, right? We click the fourth element, right? So maybe this should have become red, but this became red, right? So this is pretty interesting because B3, the way we've just specified, if you go back to Yeah, so you go back to the code over here, beta, exit, you know, which is filled red B3 didn't understand that we removed the fourth element, right? It just saw that the array became shorter So it assumed automatically that the last element got removed from this, right? So by default, when you supply data to B3, if it's in an array format, it just works on positions It works on the index, on indexes, right? So we have to sort of tell it and make it understand, okay, what is the unique ID? Maybe the value is unique or, you know, some other time in your JSON object And we'll come to that Or, I mean, I'm just very quickly showing you the update phase If I go ahead and if I change the six and make it maybe ten, right? And if I click run, you would see that the data has moved, right? So it's sort of understanding where, and if you see the first three elements, they haven't changed, right? So it's understanding, okay, these elements are in the same place But all of them have become green, right? So that's another interesting thing, that if you look at the code over here, it says data It doesn't say enter or exit, so by default, it means it's in the update phase and it gets B3 So every time B3 loops, right? It looks at the data and it always runs it through the update phase, right? Unless it's new, I mean, if it's entered, it would go into the enter phase And if it's exited, it would go into the exit phase But otherwise, it would just run through this, right? Now let's go back and correct this issue, you know, where we moved some element in between But we got this red spot over here, right? If you go ahead and look at this code, you can see over here that we've added a function called So earlier we used to just supply data as an array, right? And now we're supplying data with a function called d, i So d is the value and i is the index, right? So by default, you know, B3 treats it this way Where, you know, this is sort of the standard default behavior where it would, you know, look at each element in the data And you need, it would identify its uniqueness by its position, right? But if we now set this as B, right? And let's go ahead and clear our graph Let's render this again Now let's go ahead and remove this fifth element What was the fifth element? So it not correctly identifies it because we've sort of done it, you know, based on the value, right? Anyway, this seems simple, but this is the crux of B3 If you can sort of figure this out, then, you know, everything else is sort of the APIs And the more you use, the more you understand So the way you need to sort of, when you're sort of trying to build a visualization, right? So one aspect is how the data is coming in, you know, preparing the data in the format, etc And that, you know, maybe the next two speakers would cover in greater detail But once your data comes in, then you need to start looking at it in this sort of model But, you know, what is the new data? What is the data that's changing? And what's the data that's leaving this visualization, right? And segment your graph into two parts One is the setup of the graph, so where you set up axes, you set up, you know, maybe the labels or the title And then something that will loop always, right? So that's how we've sort of done, you know, like we have a setup function and a drop function, right? Is this going okay?  What T3 has, T3 has some, you know, great support for scales, right? So it has, I mean, two large sections are like linear and ordinary But it also has a time scale, it has, and the time scale is actually pretty interesting So when you're trying to do a time series visualization, it will try and understand how your data is split up over time So maybe it will show Monday, Tuesday, Wednesday, right? Or if the data is over many months, it will show automatically Jan, Fed, you know, and so on and so forth So these scales do a lot of heavy lifting for you They have something called as ticks, and if you can specify ticks are basically the number of, you know, what are those called? Basically grid points, right, on a scale And so if you specify five, it will give you five ticks which evenly space out in the entire range that you have So this is how sort of a scale looks like, right? So you say D3, linear scale, linear range, you specify a range So the range, these would be typically your pixel values, you know So what is the width of your graph, what is the height of your graph And then you have something called as, then you map the domain, right? So you remember the sets, some domain and range, right? So over here in the domain, we would put a value and we would get a pixel value out for that, right, from the range That's the whole point of scale We're translating a numeric value that our graph has into a pixel value in the domain, right?  And if I do a D3.extent of D, yeah? So you get 1,56, so it automatically gives you this, right? And so this makes life very easy, you can do it in one step and it moves, you know, very easily So MVA supports bindings, but when you use this, you know, editor called Portnero, the whole thing gets messed up So if you see the data that we have over here, 1, 3, 4, and you get to see 3 bars, right? R1 is basically over here, you know, which is at 0, right? Because the mistake we made was we said extent where we said, you know, so it would have got 1 to 4 And it would have mapped up to 0 to 400 So 1 would have mapped to 0, which is right here, right? And 4 would have mapped to 400, right? So if you see this, so what we've plotted over here is very simple We have to select all the rectangles, right? Add the data and in the interface, create new rectangles Who's width are, you know, split by the factor of 50 And we're specifying height, so over here we've specified wire, right? Which is our scale And if you see over here, this is something really cool I haven't supplied any argument, I've just said why, why the function? So automatically D3 takes each data element and passes it to that And gets the value and then adds that as the height, right? If you want to see how this looks So there you can see that, right? So x, x we were incrementing it by 50 And height is over here, so, you know, the first one is 0 And the last one is 400 And width we were again specified as 30, right? That's it, so we specified the height But you know, we would have expected a graph which was the other way around, right? Normally that's how we look at our charts And this is how sort of, again, D3 draws Because its origin is at this point, the leftmost, left top corner, right?  So you would translate your y and you would change the height to be the inverse You know, maximum minus this value So you could do that Or what you could do is you could reverse your ranges, right? So earlier we would have sent 1,4 Now we're sending 4,1 Now 4 maps to 0 and 1 maps to 400 pixels, right? And so you could use that And you could specify that for the y value, right?  Then there are something called as ordinal scales So, you know, what we've been doing If you reload the page, it seems to work fine Okay I don't think it's loading the wrong section Anyway, so let me try and sort of correct this here itself So we want to create an ordinal scale whose range of bands are 0 and 400 Let's see if it works Okay, so again, so over here there's a slight difference I won't just directly supply x I'll supply x of y Now let's just play this book Exactly, I'm expected but anyway So what we've done over here is we've created a new scale for ordinal So, you know, linear scale is just f of x It's a function that will have a linear mapping And ordinal scale is typically sometimes when you have range values So you don't want to segment all your data into certain ranges Or when you have labels, like say, you know, Monday to Sunday you have some data But you want to show Mondays, Tuesdays, Wednesdays, right? So those are discrete ranges So that's when you would use an ordinal range So what we've done over here is we've used ordinal scales So we've said ordinal scale and we've specified a range band So over here we're saying it should spread between 0 and 400 pixels On the x-axis side And this is sort of to define what the... So the data you're speaking is the same data again? Exactly, 1, 2, 3, 4 So same for x, same for y? Same for x, same for y, yeah So then the graph is fine, right? Right, we could change that So actually, so x, we're supplying i If you were supplying d, then suppose your data looked like this It would be messed up 4 would move to the right and 1 would come forward Whereas we wanted to show it in... So we want this value to be plotted first And then this value So that's why we're supplying i, which is position, rather than d Sorry, this was the other thing that I could have done So now 4 is moved, right? 4 is the first part and so on and so forth Okay, anyways, I was explaining to you over here So range bands are... So what you've done is you've said 0 to 400 is what should scale to on the x-axis This point 1 is sort of padding, right? That is, what is the space between bands if you want? If you don't have any spacing, I think it assumes 1.5 to begin with But if you don't specify any... I mean if you specify it, I think as 1 or 0, 1 or 2 It will completely collapse all the bars together So you'll have all the bars sort of joined together And this way, when you specify this padding We can directly use this value called range band So this x is not defined Just to show you guys what it looks like So this is, you know, this is the range band So it's saying this is about 87 pixels wide, right? Let me see if I change this to 0.5 And then sort of see, so that becomes 44 It becomes 0, so it's inverses So that fraction, it's basically a fraction between saying that What is the padding is to, you know, the data, the bar and the width The padding is extra and the width of the bar So it's a ratio between the two of them So you're saying padding is 0.1% of the bar and width, right? Or the total space And if you make it 1, then padding takes the whole space And there's no space for the bar That's where you get 0 So this is the same Now for the sections that broke in this morning So you guys want to try using the sandbox And try and create axes for this graph So the way the graph is right now Maybe you can add these two lines But can you add an x and a y axis? You guys want to try that out? So there's a link here in this, you know, in adding axes You can open that up You can look at how they... So this is how you would add axes to the graph You have this SVG element that's anyway coming to you So you can add a class for axes Specify the width and height Add an open element And then call this function axes And the function axes, you would define it You know, something like this Where you would say d3.svg axes Scale x And you could specify tick values And this function You would then tick back and call it over here In this manner Then you would get an x axis You guys want to try it out? The translate basically moves from the origin It moves 0,30 So the whole G element moves that way So try it without the translator And see how your graph looks like And then add the translator and then see So actually that was the next sort of topic So this is how actually d3 sort of looks at a graph So the origin is your top left corner, right? And then we typically put everything into a G element And we translate the whole thing, you know Which is margin left, comma, top So the whole graph moves this way We do this because then you get spaces For space for your axes Otherwise your axes would not be visible And obviously if you're going to add margin On all your sides Then your width of your graph has to be recalculated So typically you would These would be sort of the first few lines Of your reusable chart You would define sort of, you know Default margins And then you would, you know, do something like this So like, you guys are familiar with backbone And you can use extend and things like that So basically you get back an option You get a complete set of options And if the user has specified some values It will overwrite And then you would do something like this Like to translate your entire graph Anyway, just coming back to the axes It would be something like this Like this So this is actually a helper function You could draw an axes for you The axes would look like something like this Where you have a line And then you have, at regular tick intervals You have labels that have already clicked The good part about this is that When you're starting off This is really easy to do The bad part about this is that This is not dynamic So if your graph changes And the scale changes Like, let's say, you know You're getting whatever Pollution data And in the evening, suddenly there's a huge spike In pollution, right? So your scales change So then, you know, this axis Will not scale So you would have to draw it By scratch You would have to put a line And put tick values, etc And we could come to that But basically, so here we have this We specify tick values If we don't specify tick values It would sort of decide on its own And we put this one, two, three, four There's another function called ticks So if you don't want to put tick values You can specify ticks This is really good when you want to say Okay, I want only, you know So many ticks on my axes Otherwise By default, I think it puts 10 But you can change it to any number It gets a little crowded sometimes You want to lower that number So over here, we've created an axis element And then we go right to the bottom And then we add this to our SVG element We go right to the bottom Because of the whole Z index aspect If we had put this up front Then this axis would have been behind the graph Now, our axis is just I mean, everything is fine But it's in the wrong place And that sort of comes from your Translate, the question you're asking So right now we've just We've translated it to 0, 30 But 0, 30 is Nowhere on our graph Our graph has a maximum value I mean, this bottom part Of the graph is 400 So it's that easy And you can use CSS to sort of Improve this You could either You can look at this This is the path element In class called domain So you could go ahead And style that and say Look at something like this You can always go and look at Someone else's graph And sort of get this What's happening here The interesting part is You split your styling between D3 and CSS So in D3 you can just Add a class And then go into your CSS And then sort of change the data And that works really well Because then In D3 code you just focus On getting your graph up and ready And the heavy lifting And the styling can then Just happen through CSS And these are all regular SVG elements So you can apply a lot of things On the side Is this okay? We already discussed this Yeah What's the function like When you write that Translate So that's the screen now Like that translate So any hints on How to write that code better Because let's see here some variables You have to write translate That screen close Less variable So that's a Java script right at the end of the day So if you're using poppy script You could use interpolation If you're using underscore You could use Things like that Your question is about That these would be parameters How to write that code a bit more Clear So typically What you would do is you would do this You would In your setup function You would get something like this The options along with The data So if I'm building a reusable component I would do this And then I would say These are my default options So I would say This is my default width Of 500 pixels This is my default height And so on and so forth About margin etc Then What I would do is I'm not sure but I think It's underscore which has this You would say options Default Options And you would take those as your options So what you've done now If the user forgets to specify something You've provided default values Then you would say This is my width You would calculate Your width as options.width Minus Whatever things like margin.left And all of that Then you would use this Function over here However you write it now In JavaScript you could do this So Variable is fine Variable is fine So trying to write that function Arguments and strings Isn't there Another way that you can call that element See I don't think so Because this is actually You're specifying this property I might be wrong but I don't think so You're specifying this property It's almost equivalent to See this Translate Over here It's almost equivalent to document.getElement By id and then saying DotValue equal to something So This is one way But if you want to If you're using coffee script or something like that Then It becomes pretty easy you could write Something like this Translate Offset So this is called interpolation And coffee script I just directly supplied like this But when it runs it will actually Make it this Because coffee script compiles into JavaScript Or You could use something like underscore That might make it easier And comes to 10 plus Does that help? But Maybe you want to check that out It works Is it possible to not just Express it as a string It would help you to tell whatever It's a more complex function I don't think so I don't know What is the issue with What is the issue that You see with this representation I think so I was just writing the same piece of code Doesn't sound so neat that String with arguments I was trying to find something better But I couldn't This happens For something like transform Where you can in the attribute Specify parameters Plansate scale Usually it doesn't happen for the other attributes Anyway For instance It's just putting in the parameters Usually only for transform That's all Like we said Between coffee script or underscore template Got an option of doing the other thing Now those are not necessarily Faster You could for instance use underscore template And run it But this is just blazing fast Might be worth getting used to it So this transform and translate Are properties of This SVG Absolutely nothing to do So that doesn't have anything To pass G dot call some transform No there isn't But one possibility is To write a generic helper function That creates a transform attribute For example, suppose I create a function That takes a dictionary That says width colon something Or sorry translate colon something Scale colon something Rotate colon something And that function would return these values Like becomes simpler You know where you don't have to You don't have to decide it once So that you don't have to This is what I mean Oh okay I feel that also For this is the property of the SVG container So it's you know You actually just Like I was showing you in that From toolbar You actually just supply those arguments And It does We don't translate You know We don't transform Transform, translate 0, width right 400 pixels It's got something else Sorry I'm looking in the wrong It's here Anyway so these are Properties for the SVG and it takes this And it does its work Anything else here The next part You know it gets really boring To sort of see your data and static format Right and the real power of T3 Is that it gives you pretty Raw access I mean a pretty low level access to How you want to be visualization I mean have you ever worked with Vocal visualization API and then you sort of Realize this chart doesn't support This sort of functionality It happens I mean many of you use some sort of visualization API there are certain I mean It has certain limitation Whereas this is giving you raw control About each and everything About how you want to design those elements How you want to labels to come How you want to rotate and stuff like that So you can Combine different sort of animation And get your graph On this thing Okay so let's look at this So if you see them that you know There was some animation right Unfortunately we don't have a random Let's just keep coming up and going What we're doing over here is So what we're doing over here is So how do we get that animation It was very simple right In the interface we specify What are You know basic rectangles But when data Changes we have added Two other things called transition So whatever comes after transition Will be transition from its previous value To the new value between Right and that So like over here I specified Why so why it will change Right why and height Both of these parameters will change Over this duration of 2000 Right We sort of adds some other functions Like interpolation and things like that So you can specify your own custom animation That's pretty cool So basically a step function You know in that duration From you know New value how it should go You could specify so you could have an easy function It could start really fast and then slow down Or it could start slowly with a lot of inertia And then become really fast Right so this kind of Access it gives you in sort of Capabilities which are not possible You know when you're working with standardised Visualization packages So now if you see this This graph appears Directly and then When I change the value You know then it Sort of transforms Right This is no fun right You don't like to see data Show up and then sort of behave differently Right so What you know one interesting Thing that you can do is You can always specify So you can always specify You know an incorrect Starting value here So in my interface I'm forcing it To start off with an y Actually you know in this case We want it to be 400 You got the point I mean it Actually we had to make the height also 0 So what do we do We specify you know Default values At the interface Then we forced it to Animate As soon as it loads it Right so now if you see this Now it comes out correctly Right So this is pretty Pretty straight forward it's a simple trick Right which you can apply You provide it certain defaults And then force it to run through The update phase So every time it does run an update phase You know whether it's going through an interface Or not It does that So this is and you can add I have only worked with Standardized interpolations But if you guys are familiar with Flash et cetera then You should find that pretty interesting These are simple mouse events So we are used to sort of using Google visualization or some other Where you put your mouse over you get a little tilted Right you get some sort of indication If you look at some of the really Cool graphs that people have built using D3 they use a lot of these Masses and simple things you know like Changing the color all over I could go ahead and sort of Add a label and say this is the value I could add a tool tilt and things like that So these mouse events are very Very you know it's pretty simple You can just say on You know on mouse over For this particular element Fill it right and then river it back So I think the important part We all forget to sometimes To river it back So you end up with a visualization That's also fun sometimes So it's really simple you have these Few sets of events mouse over Mouse out right That makes life pretty easy Now the next thing actually I don't have code for in that I don't have time but I think You know this I think is Is like You know When you're moving scales So let me go ahead and show you a graph So in your D3 learning curve You've already covered most of it I mean the basics If you can build a moving scale I think then you can sort of build any Visualization in D3 What do I mean by moving scale Is this So if you see not only the bars Change but even the labels Right Is that Is that visible Can you see the I don't know my script If you see the last row It's going from integer to decimal Number of ticks are increasing Number of Sometimes So that's pretty interesting So one is your values are changing If your values are changing Then you want to recalibrate your scale Because you want everything different So the bars We've already seen how do you transform the bars That's pretty easy So this part is pretty interesting How the axes are changing The scale So the way they've done it is That you maintain two sets of scales The old scale and the new scale Right So you have like scale x, old scale x, y Scale x, new Right You get the new data You plot the new data with the old scale Okay So your data word let's say is off the start Right so it will be here Now you clean it to The new position with the new scale So what will happen is You will see that the data was here Sort of come in like this smoothly inside Right And It took me a long time to figure out exactly how this was working This is what it's doing So if you see values go in and out Very seamlessly And that's all that there is You need to just remember that there's an old x And then you x scale You plot the values only older And then you clean them to the new one Right and that's it It sort of takes care of the rest So if you can build this On your own then You understood everything there is 2d3 and In terms of the philosophy The rest of it is api The more functions you use The more interesting your data is The more sexy your graphs you can build Right So d3 also has Is this font size okay So d3 has these Really cool functions called Dot json dot csv Which make it really easy to read Data from a file Actually first let's just go ahead And look at the data So this is Your data has got Ranges And markers So So there are 5 series The first one is called revenue profit And so on And each of those series have 3 Sort of data sets One is ranges, the other is measures And the final thing is markers And if you go back and you See the graph on top You will see that there are 1, 2 and 3 Check that out Basically there are these 3 Bars, there is this dark There is this light blue And there is grey and these Sets right, so they are also there And then you have this final line marker Sorry, I remember So this dark blue and light blue are One data set Your dark grey is in the background Is one data set And then finally you have that marker value Which is floating over here So he's plotted all 3 Data sets In this one bullet graph Does that make sense? So there are ranges This is 1500 to 255 I think these are the grays Measures are the clues because there are only 2 values And then finally marker is the one value That floats right at the end So In this one graph You can You can show a lot of data You can compare what does This split look like from this year This year if you have 2 quantities Compare it to what it looked like last year And then you could say what your Targets are, so it could be A graph Which is showing you all this data In one go Coming back to this So he gets this JSON data The complicated part That he's done in this Is that he is In this particular graph what he's done He's combined all of this He's looked at how we were working with data Where 1, 2, 3, 4 For him this is 1 This is 2, this is 3, this is 4, this is 5 That is Each one is one element for them He takes that one element And then he plots that data So it's got a little bit of recursive cons To it So here you can see that he's Maintaining the scales If you can see this X1 X1 is getting, it's the new scale So it's passing the new data It's building a scale Just focus on X1 is equal to d3.scale Just this part And he's supplying the data To this and he's getting that Whereas X0 he's saying this is the previous Scale He's storing this in this Chart, underscore, underscore Chart, underscore, variable Or he's creating it. So the first time You don't have a order scale So the first time it won't translate First time it will just be Both the scales will be the same But the next time around You would have the difference in the two scales When they update they would change So here that's where he Stashed the new scale right here The interesting things that d3 has Is Which is pretty cool Is Layouts So this is a stacked Layout What this does is Each one if you see over here Is a path Which is basically an area You specify all the boundaries And then you fill up that path Each one is a shape But Let's go look at the data But if you look at the data So they will all be In excel have you done the stacked Bar graphs Where you have different quantity But you pile them up on to each other The data set behind this is also Similar But the difference is Once you run it through this Stacked layout It modifies the data in such a way That It basically becomes a stacked data set And when you pass it Through this area function And d3.area or whatever And you would get such a visualization So you have You know you have one curve And then the next curve would go over that And the third curve would go over that So d3 does all that heavy lifting For you So this is there in Layouts There are different layouts There are a whole lot So there are all these layouts Bundle, code, cluster Of course I think you had done a pack With realization last time Partition This is your To get donut charts and pie charts Etc What they are doing is basically They are modifying the data And There is another interesting one called Sankey Which is a plugin Which I just recently explored So I wanted to show We are building an enterprise product And an application goes through various teams And at some stage it gets rejected And goes backwards And if you are a good organization You want it to flow forward So we wanted to show what percentage Of them are going back And things like that So the Sankey plot does it really well In nodes, they are the teams So it draws rectangles for them It actually looks ugly But you can just try and show it At the moment So I still need to work on this Make it slightly prettier Clearly you can see I have fudged it from Someone else's example Basically these were the way I can also show you our data So This particular graph Expects the data in this format So nodes are in my case all these teams So this is the financial node So This is showing you all the various teams And then it expects something like this link So between index 2 and 3 That is Application and sanction The value is 21 So Then Sankey takes this And sort of plots it this way Over here What we are looking at Is applications are going forward And it also has An animation built into it Or interactivity That I can pull back and forth So this graph Needs to be beautified But the cool part is that you can see These little steps Which are saying that you are going backwards So there is one application Which is going backwards here 6 You can also see where are people going From where are they jumping directly To the jet stage So The way At least I use D3 Is I Find interesting examples And then try and see if my data looks good In this or not, does it come through Because not everyone can understand What is going on over here And you keep iterating with it And then you sort of figure it out There is another visualization Which is the same data I tried to plot it this way To see what does it convey This really can make much sense This was the euro debt example So once you sort of figure out Your visualization then you start Weaking it and then you start Making it work for your needs Your specific needs Sometimes you just sort of exploring And seeing does my data look good In this or not And then the basic concepts Are always going to be the same So Watching Of the problem And then figuring out How to plot the data Against a particular group How to plot the data Into a particular layout How do I visualize The end result That I am going to use this layout And this data will go with this layout So This is a valid question And my only answer is trial and error So I think If you go to a D3 gallery You have a huge number of options And there are equal number of Community options But not everything is relevant I think You start off over here By looking at what you are trying to plot Is it location based You know Are you looking at some A network diagram Or is it a time series Data set It's a time series word You would look something like this There is another really cool example Called cross split I will try to understand how it works This is a company Called Square that I am going to use So By the way we haven't covered We haven't looked at even some of the advanced API There is something called as context brushes Where you can focus and zoom in On a particular part of your chart So I will say start here Just look at some of these visualizations And then see whether your data Makes sense or not So this is Data about flights You know the arrival and departure times Whether they were ahead of time Time of day when they leave And all of that So if you see this I am changing the So if you look at this This is actually pretty interesting This number 53,8007 And this is all happening really quickly So if I move this My screen is small This is all possible And D3 uses And it has something called as brushes And text brush D3, I mean start here This will give you a good place And then tweak And work backwards into making it work for yourself But definitely look at this resource In terms of You know, reusable charts Once you start Get a handle of things Then you would start wanting to reuse The same components Especially if you are using some MBC framework You know like Backbone Angular or anything like that Then you would want to keep using them You know The way of charts where you are on Was pretty granular control But most of The other APIs and all It's not that granular Whether you need this much of granularity For a day to day work That's also coming So that's the question on your hands Yeah, so sometimes Yeah, absolutely So you could take that call and then sort of decide If you want to do things with D3 And the other thing is you don't You could also use D3 in a different way You don't need to necessarily draw Charts with it You could pass in any kind of data And it could answer this thing about This is new data, this is updated data This is exited And you could use that to do a whole lot of other things I mean, but specifically in the browser So you could arrange Maybe you got a You could create a tweet And how you want to reorder them On your browser you could use that You could even D3 in there So you don't have to draw SVG elements, you could use this With the other There are also APIs built On top of this, right? So Vega for example If you want to use reusable There are other libraries like Vega Which fills up D3 Just use standard complex So I think those are again Things you can try out And in terms of choosing graphs I mean, you can Go and read some of the different books Or some of the other books will basically Tell you what to do in different types That's probably also a good start What are the data handling capabilities Like how much it takes I wouldn't be able to comment directly But you know with The thing I was discussing It had two lakh rows of data And in real time you were Sort of filtering that So that's pretty powerful, that's really efficient It has In great detail in these formats Like loading external resources So you have You could send it XML, CSV Taps, separate files, JSON, text And all of that So that's pretty powerful And really efficient Any other questions? About exporting mechanisms What do you mean by exporting Like print, PDF, or something like that To give it to the next level Of business management You want to export it in a nice graph Or whichever way Linking those to the PPT Or on presentation So I mean This is a web page right So you could take a print screen And I mean On a different note I mean, basically You could make this into a PDF Like Chrome allows you to do it I mean, this is not Specific to T3 This is anything in browser However you can export from browser Those same rules will apply But there was a pretty interesting story Almost a year ago or something There was this company Another analytics company They had Maybe it was charted out I have a lot charted out Basically they had Built this whole dashboard On the web So if you log in you could see your website You could see all these cool stats In a really cool way But they wanted to give the same Sort of visualizations on email So you get an update in every day Or every week, whatever you do And their big challenge was That this is D3, it is JavaScript driven And it can't be served in an email So what they did was Used PhantomJS PhantomJS is like a headless browser So they had a job Which would run And then plan it in a headless In a PhantomJS loop Take a sprint screen Attach it to the email and then send it out So that was really cool Because they reused all their code Which they built for the web For email, so they didn't Create a separate thing And the user experience was the same So how my graph looks like on the web Also looks like that There's no way to retain the interactive thing There's no way to It's not flash So There's no way to export also This is a very roundabout way This is a roundabout way So export it So you could make it a PDF And do the screen and things like that But I mean I don't think You can't imagine There are a few Ways that are emerging In terms of Export options So in New York Times for instance Shankar Released A browser Called SVG Gromar Which is What it does is extracts the SVG Which is one step to the solution There are enough ways Some more granular formats So you can load it for instance in inkscape And save it as a For a lot of time Or save it as an EMF And then import the EMF into Word or PowerPoint So those are semi-automated ways In the sense that you put automated Inkscape to do this Transfer and so on We've recently built something that Was SVG into Microsoft Office native objects For example, there are a few other examples That PDF output like Somebody mentioned using phantom.js Come up directly These are at their infancy But while D3 doesn't Directly provide this support I guess it's more a question of can SVG be exported to other formats The answer is Increasingly but slowly yes But just a separate thing Like you can also run these So we use these visualizations on a mobile as well As fans across mobile and In the web So this is the same sort of visualization That would run on the web That runs over here And you have the same sort of So for us it's very nice Because we are reusing confidence We try to do the same thing in Java And I don't really have a tough time I just want to reiterate that You can just copy the SVG Domain and save it to any file And save the extension as .svg Or in state as And also there's another library called NVDT It gives you a lot of reusable graphs Which are similar to your Google Visualization charts NVDT And you can also do the same kind of customization Also it's a good example For how you can Extend the DT library as Make reusable charts by yourself What type of Fallback we can provide If browser doesn't support SVG And also that So either images Either you store them as images Or I mean increasingly I don't know which browser is But I think IE7,8 maybe They are the only gaps SVG SVG SVG SVG SVG SVG part of it So I actually Supposed somewhat of SVG Did I natively Thank heavens for that That's got us a few crores of revenue Just that one feature And it's not too bad either Of the support But yeah, 6,7 and 8 are one reason Why we'll have trouble with SVG And the other are Browses that just do not But in that case I guess a visualization part Is more IE6,7,8 Candles wouldn't work either The only realistic options are Images like I said Or VML and there is An SVG to VML converter Which sort of works on The whole bunch of that There used to be one that Used to support Which was A fairly robust one I don't know Continues to be supported But without doubt this would be the cleanest way To handle SVG on older Process Images are a good word VML as such is a pretty good standard In the sense that it's Supposed many of the features that SVG does So which means that it's possible to use The interactivity that one gets with SVG With VML as well in some of the older Process But obviously this is a standard that is Failed Like We're a small start-up team So we've just sort of Try to reuse our code And this was in one place So we say we don't support IE But that's not the right approach But that works for us I think Jinseh Bird also doesn't Support SVG SVG is not supported below 2.3 or maybe 3 But Now you have a Samsung Galaxy 4.9 mk Which is 4.1 I think So I mean these are all Sort of You know it's all touch and go In the sense that you're moving forward Things are changing If you really have to support if you have a client Which is on legacy systems Then I think you should do that But if you don't have such constraints I don't think you should try and support The entire ecosystem That's my personal opinion So I just want a quick point for me Was this sort of Format useful Or was it too basic And too much time spent just trying to Make it in the app work We do have feedback from that I would love to know because Just tried a new approach and Just trying to see if that works Thank you so much and sorry for the delay In stopping


vegas Conference with g2e, which is usually the end of september. So we will we're in the process of working with the board janice of course has, um As she always does, uh, you know volunteered to really, um spearhead our effort on behalf of the commission will but but we will be looking for volunteers to assist and um So you will get the date shortly and um, work on all the other logistics with the with the association But it's in 2020, right? It's in 2020. Correct. Yes No, it's a it's a conference that I know I know you've attended I have um in the past something that I've been uh, yes, and I know Our fellow regulators are looking forward to coming to boston, especially those from uh outside the united states Exciting news for us. Yeah, excellent Any other reports from commissioners? Yeah, I have one. It's a little bit of uh, um preview of what's to come in in in the next month, but March is a problem gambling awareness month um March begins tomorrow and There are a lot of efforts that go That are visible and a lot of efforts that are behind the scenes relative to a lot of awareness education and prevention we will be hearing from Um director van der linden and others Hopefully during the next couple of meetings Uh on some of the details of what uh takes place in in now two properties Uh in mgm and and ppc And a lot of those efforts just to summarize summarize them very briefly um include education and uh and prevention work with casino employees who happen to be A group that is at slightly higher risk of um having a developing a problem gambling And so um our game sense program is very much a hands-on Program in that effect as well something that is not quite visible to uh to the public But it's important for us to um to understand and appreciate And we will have again a lot of more of those updates in the coming commission meetings Going Well item seven is reserved for Any matters not reason to be interested at this time of posting by the chair Uh having none I have a motion to adjourn So moved Second All those in discussion All those in favor. Aye. Aye. Aye. Five zero Thank you


Innovation is profoundly changing the way we live and work. It is contributing more and more to economic growth and becoming one of the main drivers of development with immeasurable promise. At the same time, the world economy is going through profound adjustments and facing many challenges. For example, Brexit is a sudden challenge confronting us. Global growth remains sluggish and fragile under persistent downward pressure.