We start this Tuesday edition on the Sports Mag Zone by continuing our discussion about the Guyana Cricut Board calling for the resignation of Cricut West Indies Vice President Azim Bazarath. The GCB wrote to CWI President Dr. Kishore Shallow on the 4th of October. In that letter, the Guyana Board indicated they withdrew their vice presidential nomination of Bazarath and called the Cricut West Indies election process flawed and illegal. Of course, the CWI elections held March earlier this year. They also issued a 14-day ultimatum for Bazarath's resignation. That ultimatum expires Wednesday, that's tomorrow, the 17th of October. Item 92 of the memorandum and articles of association document of Cricut West Indies under the President and Vice President's section states, No person shall be eligible for election to the office of President or Vice President at any meeting of the members unless, not less than 30 days before the data pointed for the meeting of members at which the election of the President or Vice President is due to be considered. Bazarath shall have been left at the office of the Secretary of the Board of Nomination in writing signed by two full members accompanied by a notice in writing signed by the nominee of his willingness to serve if elected. Quite a modful there, but to break it all down for us and to help us understand from a legal standpoint is former West Indies youth captain, now Attorney-at-Law Zair Ali. It's a pleasure to have you on the Sportsman zone. How are you doing? Well, good evening to you sir, good evening to all the sequelers and West Indies Cricut and to my brothers and sisters at Horsie Corugia. Yeah, absolute pleasure to have you, quite a modful that I just went through in terms of the articles of association of Cricut West Indies. Can you break that down for us and give us your understanding of whether the Guyana Cricut Board is on firm footing with what they are asking of Cricut West Indies and that is for the Vice-President to resign and for elections for that position to be reconvened? Well, first let me put my comments into perspective. I am basing my comments this afternoon on the information and the public domain. And I must also indicate at the outset that the rights and privileges of the parties involved. My comments is not to prejudice any rights that may be available to those parties, including the access to court if it reaches that far. But however this afternoon, I'd just like to look at any context where there is in fact a dispute and a dispute that has been around for some time. So along those lines I'll be looking to traverse this afternoon with your assistance. Can you break down for us your understanding of the situation and whether the GCB is on firm footing with what they are asking of Cricut West Indies which is for the Vice-President as in Bazarath to resign and for new elections for that position to be reconvened? Well when you look at that rule 92 that you just read from the articles of incorporation in memorandum and the bylaws of that particular Cricut West Indies, it's very, very strict in terms of what is required to be done in terms of the nomination of an individual. What we are seeing in that particular provision or what I would like to share or suggest is that one needs to now look at the spirit and intent of that 92 in the context where it's definitely demonstrating the need for notice to be given early for whatever administrative requirements that has to be carried out. So what we are not seeing any rules from my humble review is the rule that governs a withdrawal. So that takes me to the point that when there's a dispute in terms of a dispute in this particular instance the question is what should be the approach or what should be the suggested approach if in fact the articles of incorporation of the bylaws of Cricut West Indies may appear to be silent about that particular issue. So I'm not going to pronounce it conclusively as to whether in fact the guy in the Cricut Board has strengthened their case or whether in fact Cricut West Indies is right to stand by their position. But what I would like to see coming out of this is whether in fact we are using Cricut West Indies processes to really have expeditious and amicable resolution to this matter which has been for some time. And having said that may just share with you that there are particular rules in the Cricut West Indies bylaws that speaks about that the power of the Cricut West Indies to hear and determine a matter to amend and repeal the rules if in fact there's silence in this particular area or to take any lawful action to resolve this matter. So I am taking the line as whether in fact at this stage whether we can sufficiently say without prejudice to any party whether we have exhausted the remedies that are available within the framework of Cricut West Indies. What would you suggest are some of those remedies? Well when you look at Cricut West Indies bylaws what you're seeing clearly is that there's room for and I don't know whether in fact as I'm basing my comments on the public information on the public domain but I do not know whether in fact there was a properly constituted special meeting by the members or the slash the shareholder of West Indies Cricut to properly debate this particular issue and have a general consensus so you have all the other members having an opportunity to comment on this matter. So that's number one and when we speak about that special meeting may I say as well that we also have to be very cautious in terms of the subject which is the vice president issue in terms of that special meeting good sense need to prevail as well to ensure that there's integrity in the discussion so that's number one. Number two there's also a built-in alternate dispute resolution in the articles of incorporation and bylaws which gives us and gives us meaning Cricut West Indies the opportunity to look at arbitration so one will want to be exploring the remedies that are available within the framework so that there's full and frowned disclosure there's transparency and the actions are taken towards good governance in West Indies Cricut. Yeah and Zaheer I was thinking about the fact that you know CWI president he came out and he was one of the voices that said of course the process was done in a legal fair transparent manner we also heard from the BCCI they also said that do you think that those two voices coming to the forefront those people are reputable where CWI Cricut is concerned the whole esteemed positions does their voices hold any weight in this matter? Well definitely when you have the president of the Cricut West Indies speaking and then you have the guy in a cricket bottle so respond and we often you know respect these authorities guy in a cricket board we know a member a stakeholder shareholder West Indies Cricut and by extension we have the chair which is the president so we often respect the positions that are coming and meeting each other but what we require in my respectful view is that it is clear that there's a dispute thus far based on the public information so the question is how do we go forward do we do we um do the parties hold their side in it strictly or should we and that's the point I'm making is that are we really exploring the internal framework or even if using the internal framework to say okay let's appoint an arbitrator or two arbitrators so look at this issue conclusively so that you'll have the stakeholders in West Indies Cricut more receptive to such an approach as opposed to both parties just holding a position and arguing on that basis yeah I get what you're saying but you're saying you know auto court settlement might be easier where the way going forward is concerned because it's not as hostile as if you are to go to court court matters tend to take some time and it can also create a rift within the Cricut West Indies organization is that well I'm happy that you went there and hence why I opened my indicator that my comments does not get to watch prejudice in any rights that may be available to the parties including going to the court if need be but what I'm saying is that is what we are speaking about and we already have the need to look at rebuilding West Indies Cricut so could you imagine that instead of focusing on building West Indies Cricut an actual Cricut and investing in Cricut that now we have now to entertain litigation and hence I'm saying that there must be some level of maturity and the actions taken by Cricut West Indies are not omitting the Ghana Cricut Board must all get to what's the best interest of West Indies Cricut and hence why I'm going back again by identifying in my respectful view I don't feel that we have already used the avenues that are available internally to at least give us the best opportunity to resolve this matter and if that fails well then I can understand that we are thinking litigation but I don't feel that we have exhausted in my respectful view all the avenues to resolve this matter yeah so here just to get a clear understanding whose responsibility is it to lead that process in terms of exhausting all the available resources or guidelines within the organization because let's say you are the Ghana Cricut Board and you're not hearing from Cricut West Indies what you would like then it would make sense that we would end where we are right now which is the Ghana Cricut Board threatening legal action well again an excellent excellent question um we have the option for a special general meeting with three full members requesting that meeting so if we are looking at a particular dispute between the Ghana Cricut Board and um and the issue in relation to the appointment of the vice president the other members the other stakeholders need to recognize where their power or where the authority may like to assist in resolving this matter so if three full members request a special general meeting with an identified agenda and this matter is debated and a decision is taken by Cricut West Indies one can now start up okay that we are now utilizing the highest authority of Cricut West Indies to be able to debate them and and ventilate this matter so that is one angle we can take and I may also say that the president by virtue of his authority can also um request a special general meeting the question is whether in fact he may want to have on board the vice president or um for this purpose move a resolution to be able to debate the matter um conclusively or we may also consider having the vice president be present to to be heard in the proceedings so there are many different um context that we can look at it but within the rules there is the option for a special general meeting to really look at this particular issue and especially if we are the parties are looking at the rules that exist where you have rule 92 but one may argue okay is it silent in terms of withdrawal when can a withdrawal be made and and those sort of issues so that resolution may be geared towards resolving the matter or even looking to take corrective action to amend the rule so that this does not reoccur in the future so we need to be mature and again we must not omit to use and I keep popping at this point the built-in alternate dispute resolution methods within Cricut West Indies it is bigger than an individual it is bigger than a board and we need to see what's in the best interest of West Indies Cricut and to avoid any unnecessary litigation in this process in these proceedings yeah well say here you've been involved in West Indies Cricut for a long time as as a player and you understand the toxic nature of some of these um contentious issues in West Indies Cricut in the past 10 minutes that you've been on or so I've heard you use the word mature at least three times with regard to the stakeholders approaching this thing in a in a mature manner and just to follow up on the answer that you just gave um isn't it that the GCB feels as if they are being ignored here on this issue which is why they have gone a legal route or threatening a legal route because my understanding is that since March they have been asking for this issue to be addressed so the ball does appear to be in the court of the CWI to to exercise these internal um approaches that you just spoke of and um and and and and deal with this matter instead of what appears from on the outside to us to be the GCB being ignored well what what when we look at this particular situation it is quite clear that the Guy in a Cricut board is actually from there is actually invoking the board for discussion but just writing the Cricut board in my view asking for the resignation of the vice president um while you may be right and well inclined to make to to ask for such a um a response let's look at it in a bigger picture where if in fact there's a dispute the question is where the other members the full members of West Indies Cricut Board of the Cricut West Indies what are their views what are their purpose are they really promoting good governance by remaining silent so the rules was was was structured to give other parties who may have the answer to say okay let's move on meeting and debate this issue so it's not one individual or one shareholder or one member that should be now in this debate but it should bring in the shareholders and bring in the directors to use the rules so that we won't only have a correspondence going to the Cricut West Indies demanding a particular response but Cricut West Indies themselves are looking at say okay what can we offer to you should we move into a special general meeting you will have your opportunity to debate it other person will have your perspective and be you the board processes to look at it and if then you still do not agree well then we can you know revert to your other legal recourse but we see a very strong position taken by the Grinner Cricut Board and as I say we cannot be prejudicial to them they have chosen that but we have to respect that but I'm going back to Cricut West Indies that we need to to use the rules of the board and I'm not seeing that and I'm probably asking any ambassadors of West Indies Cricut let us explore and use the rules properly to be able to solve and resolve this dispute yeah on a point of clarity to use the rules you're beseeching for the the rules to be used this is coming from Cricut West Indies the Cricut West Indies has to invoke this well we have as I get I gave two options a while ago the chairman as president can invoke a special general and secondly in the absence of him three members three full members of the Cricut West Indies can ask for a special general meeting so the question is the issue is now table in this matter properly so that they can be properly ventilated and then all stakeholders now can be given a feedback as to what transpired in the meeting and what the board decided as opposed to with hearing you know Cricut West Indies standing by the vice president and probably right um that probably their perspective and Guyana Cricut was asking for the resignation so my question is the Cricut West Indies and the president by extension respectfully they are not the only members of the of the board there are other members for example we have Barbados we have Jamaica we have the Libert island we have even Rhode Island so the question is if we are really serious about moving West Indies Cricut and resolving this dispute then one may ask okay where are these stakeholders in the in the proceedings yeah so here I just want to be clearer before we close out here that essentially what you are saying no issues with the Guyana Cricut board writing to Cricut West Indies but for the first step to speak about the resignation of the vice president and litigation that maybe there were other options or there are other options available to them before they got there and those are the options that they probably should have and could have explored in the letter to Cricut West Indies am I correct in saying that well I do not want to to be prejudicial to the position that they have taken my right in the Cricut board and asking for a response into the resignation but what I'm saying is that having written to the Cricut West Indies as the authority what one may have anticipated is Cricut West Indies looking at the letter and let us have some amicable correspondence as to okay maybe let me offer an alternative but what we are seeing in this particular context so from the public domain I'm not I'm not seeing the opportunity to have further dialogue and meaningful dialogue within the rules of the board so hence why I'm saying that is it if we as we speak if there was a the the the constitution of our special general meeting and it's debated then we have other variables in the part to look at but at this time is just a letter from the Guyana Cricut board asking for a particular response from Cricut West Indies and on the other hand we're hearing okay that they're standing by their position but how we really use the rules to resolve the matter so that's the that's the issue I'm actually tabling this afternoon yeah completely understands here I guess we'll just have to wait and see what happens within the next 24 hours the ultimatum by the Guyana Cricut board expiring on Wednesday that's the 17th of October that is tomorrow is there we appreciate your input on the show today and I'm sure that we'll be reaching out to you again to have a few more conversations around West Indies Cricut thank you very much for the opportunity to comment on what I said and as I open my comments was not yet to watch prejudice in any of the rides that may be available but looking at what's in the best interest of West Indies Cricut yeah Zahir Ali there former West Indies youth captain and I tell you something if you've ever seen Zahir Ali Batt for a second you might think you're watching Brian Charles Lara he had a Brian Charles Lara style I'll never forget it I was 11 years old and I saw him playing for Trinidad in Tobago at Sabina Park against Jamaica it was the red stripe ball at the time and yeah didn't he look like the Charles wasn't the Charles but aesthetically he looked like him we take a break but back with more on the sportsmax zone


Hello, everybody. My name is Willem, and I'm one of the tech leads on the data science platform team at Gojek. And I've seen some Gojek people here. Is there still anybody left? Any Gojek people? So today, we're talking about Feast, an open source project that we developed over the last year or so in collaboration with Google Cloud. So the agenda today is, why are features important? What are some of the challenges working with features? Some of the design goals we have with building a feature store. MVP we built, lessons we learned from that. I'll show you some examples of what it looks like to interact with the system, and then kind of our vision going forward with Feast. So the company like Gojek, and I think most tech companies, you have two things that are actually quite important. You have your products, and then you have a lot of data. Sometimes the data is also a product. Especially in Gojek's case, you want to empower most of your products through intelligent systems, machine learning. But these systems depend heavily on the data. So we can talk about features and these data points on many different entities or aspects of your business like your customers, your drivers, the locations. Gojek has 18 different products. So we have a lot of variety in our data sources. And the features that we can get from these data sources are critical in powering these ML systems. So for us, at least features data is critical, and our models need features. So I'm going to give you just a high level. This is actually a little much higher level than the previous talk. So I'll go through it quickly because I'm sure you guys are all very technical. But this is a basic data frame. It's completely synthetic. We've got in the green columns are just features or attributes. And they're essentially properties or observations on a specific entity. In this case, it's a driver table with driver IDs. And these drivers are entities within an entity type of driver. So this is the most important part of actually building an intelligent system is aggregating and creating these features. So in a toy example, let's say we had a booking table. This is essentially a transactional table for a company like Gojek. And you had features on your entities on the left. If you wanted to predict, let's say you're building an allocation system matching customers and drivers, if you wanted to predict what is the most which drivers most likely to convert or to have a successful trip. So if you look at the column on the far right there, it says trip completed. And that's just a Boolean flag on that transaction. And those are historical transactions. So if you want to train a model on this, you actually want to enrich that data frame on the right there with driver data. And to do this, you need to do a join. Now, this is a very simplistic example, but for large and complex systems, you often join hundreds of features onto a single frame. And this is something that data scientists does commonly. And it is something where a lot of errors can creep in because you will notice that the timestamps of the features are typically different from the timestamps on your transactions or whatever you're joining it onto. So doing a point in time correct join is actually kind of tricky because if you don't match these two things together correctly, you're going to leak feature data. You'll train your model on data that it won't have in production. And the accuracy will degrade. And you won't even know that unless you have very good monitoring systems. But let's say you can do all of that perfectly.   And that's going to be the product. So you're just going to run through all these examples and train it. And I'm looking at this from a data engineering and an engineering perspective because I'm an engineer, not a data scientist. So it's up to them what they want to do inside of their model. But I care about providing the whole system around this modeling and building their end-to-end ML systems. So once you have your model as a data scientist, you want to ship it into production. But you don't really know or care about the infrastructure around it. So you'll have your incoming request in production. And that request will have, let's say a driver ID or an entity ID as well as some feature data. And that'll be fed into the model. And an important thing to note here is that the features will be the same for the model. It won't change. And it's not just that the types are the same but the actual source data has to be the same. So the real question here is where do these features come from? Because these features are not coming from production systems. If you're integrating with a production engineering system, they're going to have IDs. They're not going to have feature data stored for you. So as a ML platform team or a data engineering team, we will have to provide those features. We will have to enrich that yellow driver ID with the green feature values at some point. And we have to do it in a way where it's consistent with what was given to the model training. While at the same time ensuring that there's no staleness in that data or inconsistency in the way that it's transformed or created or sourced, even if it's just the distributions that are skewed. So those are some of the concerns we had when we were looking at feature engineering at Gojek and a lot of our projects that it was very hard to do this. But we had some other challenges as well. There were two personas that we're trying to address here. One is a data scientist.  They're very busy with primarily feature engineering and building data pipelines. And these pipelines are everything from sourcing data to transforming data. They're doing a lot of data validation and data quality checks. Essentially there's a lot of plumbing that goes into it. So we wanted to free them up from that. Then we also wanted to make sure that there was more reusability in the work that they were doing. So they were doing a lot of work from scratch. So essentially there's zero visibility across teams a year and a half ago and you basically had to have a relationship or you had to have published something or a team has to publish something for somebody else to know about it. And that's a challenge in a large organization where you have hundreds of engineers and hundreds of technical people that want to reuse work. And there's also a trust factor there even if you know about somebody's work often teams are recreating it because they're uncertain about how it was created and they can't actually inspect the data source and data transformations. So we wanted to help with that. We wanted to help with getting data into production. That's the third point that data scientists shouldn't think about that. And finally we should ensure that there's a consistency between training and serving to avoid model skew. The second persona that we wanted to address was the data engineer. So typically these data engineers in large organizations are fielding a lot of ad hoc requests. If you don't have a platform that does everything for you then each project that comes along will require the data engineers to go and spin up a Redis cluster or build an API to find schemas and contracts and everything and then manage that instead of monitoring. You actually want to build this an infrastructure that can just manage this for you especially because 70, 80% of projects and there are many projects are not too different. They're not unique enough to require ad hoc infrastructure. So we wanted the feature store to address the needs of this data engineer. Also in terms of data processing we wanted to make sure that the data engineers not to manage the scale or compute whether it's importing or exporting data or just serving features in production. It should be easy for him to just have features there that's fresh and that's being served to production systems. So our design goals with Feast was we wanted reusability in the features. We wanted to make sure the teams could see other teams features and have confidence in how it was created and in using it in their production systems. We wanted to ensure that there was consistency in training and serving because we're building an infrastructural system here. It is a great opportunity to build consistency into it as a first class concept. The third thing we wanted to do was we wanted to ensure model, the future creation and the future usage was different. So this is something that's extremely common in most small teams. In most small teams you build one big pipeline. You're doing everything from raw data to a batch scoring at the end. And every time you iterate on your features you rerun the whole pipeline and it's extremely time consuming and it's actually wasteful. But you want to actually put asynchronous checkpoints that are essentially like stores or so for example a feature store or model store that breaks this pipeline apart because the cadence of developing those three separate stages is different. So you can have a data engineering team in one side of the world developing features and on the other side of the world you're just selecting features. The fourth thing we wanted to do was we wanted to provide access to features in real time, I've already spoken to that problem. And we finally wanted to support the tools that data scientists were used to already. So we wanted to make sure that we go to where they are. They can use pandas, they can use Python. We don't take them into a foreign language or anything like that. So our solution to this was Feast. And our vision with Feast is that it's essentially a bridge between models and data. So we can't address all models. There will always be models that are too different to that sit on as edge cases. But we believe that most models can be addressed with a single interface. And so the goal is for Feast to be the interface between essentially any source data and that model. So where do we begin? We began with a collaboration with Google Cloud PSO. So that was between Gojik and Google. The product of that collaboration was an MVP, Feast 0.1. The primary focus areas, we have many design goals. The primary focus areas was one, we wanted to support both the production or all of our production ML systems, especially the batch training and online serving and have a reusability and discovery of features. And the open source that you can Google for the Google Cloud blog post on that. That was at the start of the year. So this is a high level of Feast 0.1, the MVP. And I'll talk a bit after this about how things change and some of the lessons we learned when we rolled this out. So firstly, this is an infrastructural system. So even though we did comply with the design goal of making it easy for data scientists to use with the tools that they're familiar with, it is an API or a system that you interface with is not something you run locally. It's a centralized system. It has a single warehouse, a single online serving API as well as a backing store, which is the Redis cluster. So in our case, the warehouse is BigQuery and we have ingestion as a layer within the system. So essentially you're loading in data from upstream sources. So it can be Kafka or PubSub or BigQuery or Object Stores. We have interfaces to many of those different sources. So this is an infrastructural piece and the data model was essentially entity feature related. And I'll tell you a little bit later about why we moved away from entity feature relationships. So in this case, you had, for example, if a person registers an entity, which is something you do in Feast 0.1, it creates a table and then each feature is a column on that table and it grows as a very, very wide table. And essentially when data is written from these ingestion jobs or when you're ingesting data, it goes into rows in that one single table. So essentially if you have many different ingestion jobs being written from many different sources, you have a very sparse table. So for example, if you have a stream writing every second and you have a lot of batch features that are only updated once a day, you'll have 80 or 90% of your rows or your cells just being empty. So the serving APIs are separate, but feature data is consistent because we have a single ingestion job that ensures consistency, so we meet that design goal. So the lessons we learned when we rolled this out to our production systems and our teams in Gojek, the first one was every engineering team wants their own Feast. They don't want to have a central Feast that they depend on. That's too scary for them if they're not running it themselves. So this is the first thing we ran into. The second thing we ran into was that the data scientists were creating really, really strange entities, composite entities. So they were doing something like service area, which is essentially like let's say an area where we were running our services like in Jakarta. Service type is essentially a product and just the flag is weakened. So this is not an entity like a driver or a customer or like a digital merchant. No other team is gonna want to use this, but it is useful to that specific team that does create this composite entity and they store their features on this composite entity. So we realize we have this need that's being fulfilled, but this is polluting our namespace. So if a new team comes on and they're looking at entities they see these weird abstract entities and it's just a very strange experience. Then the third one is the retrieval suffers with the sparse, very wide tables that we have created. This data model of ours was not efficient. And it was partly because we depended on a specific technology, Bigtable, which we eventually moved away from towards Redis. And when you store the data in this model in Redis it's really not as performant. So this is one of the pains that we had. And the fourth one was feature validation super important data scientists. And if you're building an infrastructural system like Feast it's the perfect place to put in validation statistics and alerting on feature distributions both training as well as preserving. And then finally aggregations. So Feast 0.1 doesn't do aggregations all that happens upstream, but feature creation and feature engineering on the transformation level is actually very important. So it's something we're looking at adding in one of our later releases. So where are we now? Okay, we released Feast at the end of 2018. If we're rolling it out to many production systems in 2019 we're currently, we're at 0.3 right now, 0.2 introduced decentralization. So we broke Feast into two phases essentially. We put a Kafka stream in the middle. So all data goes into a Kafka stream when you're ingesting it. And from there you can sync it into various Feast deployments. So at Gojek, we have just a central Kafka bus and each team has a certain Feast deployment for their system. Yet at the same time you still have a centralized Feast core essentially a registry of features. And so you have both centralized management but you have decentralized serving. So for Feast 0.3 we introduced some new concepts there to reduce the sparsity in our data models. So we have something called the feature set. You don't define just a feature you'd find a group of features and this group of features maps onto a source data frame or a event stream. And so we know that this information is coming in together and we know the time that it's coming in together. So those rows are always written as full rows. There's zero sparsity unless the creator of that event adds nulls or something. So that really changed, completely changed the data model for us. So current Feast is essentially an interface. So we're moving away from an infrastructural system to just something that is as thin and as lean as possible. It's able to load from various sources so streams and warehouses, flat files. It's able to store, serve historical features for model training. It's got a Python SDK if you want to use that. So we support Python as a first class language. We also have online serving with the GRPC API and we have a GoLang and a Java client that you can use if you want to use those languages. And this allows us to serve model or features that low latencies two or three milliseconds. We also have a consistency guarantee to avoid model skew because we have a centralized bus that distributes data to all of these stores. And then we have obviously the centralized management of features and the related metadata. So how is Feast evolved from 0.1? So these are the two concepts that I introduced just a few seconds ago. Feature sets, it completely changed our data model. It maps onto sources. It improves the retrieval times because if you're storing dense rows, you can actually compress that a lot easier so you can get about 70, 80% compression and you can store a lot more information and a lot more localized and you can just look them up and serve them to the end users. It also provides isolation. So if you have this team that's creating strange entity composite entities, all of that complexity sits in the side of feature sets. And I'll show you a little bit later what a feature set looks like. But essentially, nobody else can see that unless they want to see that. So the feature set is an implicit namespacing mechanism. And then like I said, you have these decentralized stores with Feast 0.3. So the architecture is something like I have on the right there where you have multiple private clouds or VPCs and you have a shared VPC perhaps that they can network with. So they can understand data sources and where to find data based on what this core registry tells them. But they don't actually need the core registry to find the data. They can find the data themselves. They're completely isolated from each other. And if this shared VPC goes down, they can still operate and serve information and features. Okay, so just to show you a quick example of what the API looks like. So let's assume that we want to train a model on trip completion. So it's just the example I showed you earlier. It's a toy case. So in this case, we're gonna do two things. We're going to first register a feature set, load in a data frame into Feast. We're also going to register a stream and load in that data from the stream. And then we're going to retrieve that data for online training, sorry, for batch training. And we're going to serve the model online and retrieve from the online API. So the first thing we do is this is the very simplistic example. You're just reading in a CSV into data frame. You're creating a feature set with a name. The only thing we need there is the name. And then we're inferring that feature set, the schema of the feature set based on the source data. So it looks at the properties of that source data frame in order to build that feature set. And this gives Feast an understanding of what data is captured in that data frame. Then you register it with Feast and then you can load the data in. So in this case, it's a push-based model. So you're pushing the data into Feast. So we currently support both types of push and pull. So here you're loading data in. And on the right you can see the schema that it's inferred.  And it detects that the driver ID and that is the entity or the entity type. Okay, so now automatically this is available in serving and it's available for training as well. But you can assume that you've got millions of rows, not just four rows. So if you want to do a stream, this one is a little bit more explicit. So here you're saying create a driver stream feature set. It's got the specific entity. It's got this one feature. And there's a Kafka broker and a specific topic that you will find that feature on. And it basically maps fields onto those features if you use the same names. So you apply this feature set and it will spin up jobs and it will automatically start sourcing that data. And what I'm not showing you here is how the serving stores are configured. But essentially you have a subscription at your serving store where you say, I want to subscribe to these feature sets. I only care about these feature sets. And then it will automatically start pulling in for information. And then if an end user or a client hits that serving store for information, it will have it or not based on the subscription. So now we've registered two feature sets and one for your batch store and one for your serving, one for your batch data and one for your streaming data. So how do you train a model? So you've got a list of features and you need to hit feast the API using the Python SDK with your list of features as well as your driver entity rows. So the entity rows here that drivers variable or object there contains two things. It contains the driver IDs as well as the timestamps that you want to join onto. And typically those timestamps are the same ones that the trip completed event happened at. So like the transaction timestamp. And then all of the features will be joined onto that by feast and it will be returned. And you can call the two data frame method and it will materialize that as a data frame but you can also just access the Averafile or whatever file that the serving store produces for you directly. You can fit your model and you can train it. And you'll notice that if we go to online serving the feature list is going to stay the same. So the API is very, is completely consistent. You're just referencing a feature set name with a feature within that feature set. And feast, sorry, just to go back for a second. Feast is automatically joining these features in a point in time correct way. So it makes sure that the timestamps are actually correct and the joints happen correctly. And what I'm also not showing you here is that it can do, it can do staleness detection. So if you're trying to reference features that are too old, it'll automatically drop them and warn you and return metadata based on missing values and missing keys. So there's some more complexity here but this is the simplistic example. So if you go to online, you're gonna do the same thing but it's even easier in online because you're just going to give driver IDs and the list of features and it'll automatically return a list of these values to you. So it'll enrich your ID. So if you're gonna send in the driver ID and the yellow on the top there, it'll just enrich that. And then you can just send that straight to your model and Feast will automatically make sure that the shape and the contents of this data is consistent with training. So your model knows exactly what it's gonna get. So what's next for Feast? We have just finished 0.3 development. We are hoping to get Feast 0.4 out either by the end of this year or early next year but the proposal should come very quickly. We actually want to do this in a completely open source so we are interfacing with the Kubeflow community as well as some folks and other large tech companies that are using Feast or at least playing around with Feast. In addition, we're also adding, we're thinking of adding project namespacing into Feast as part of this proposal. And we are looking at one of our big next releases will be feature statistics with visualization as well as capturing the schemas of data frames. So if you export data, feature data from it with a batch API where you create a data set, we can actually understand that data, the schema using a tool like TFDV or equivalent and capture those schemas within Feast and use that for validation both in an offline as well as online way. And we also want to add additional sources so non-GCP specific ones. Right now, it requires a little bit of dev if you want to do this yourself but we want to make it easy to extend Feast. And finally, some other high-level goals for each one is the Feast UI, adding feature transformations as well as lazy loading batch data so that you don't have to push it into Feast. So the key takeaways, Feast makes sharing and reusability of features easy. Feast makes it easy to do point in time correct joins of large amounts of batch data for training model and it allows you to serve feature data online easily and in a consistent way to your batch training. So if you want to get involved, we've got a GitHub page over there. We've got activity there and we've got a Slack channel as well that you can join. It's on the Kubeflow Slack. We're in the hashtag Feast. And you can join our mailing lists which I've linked to as well if you want to get updates on new releases. We are very actively developing at the moment and there are a lot of proposals that we are going to make and we'd love to get more contribution from the community as well. Right, thank you. Questions? Everybody? I was wondering what kind of infrastructure requirement for this platform actually. If I want to play around and for training or sharing data, what would be the... Right, so we have one hard dependency right now and that's BigQuery. So the warehouse for all the versions of Feast requires BigQuery, but the warehouse is an optional component as well. So you can spend our Feast locally. We've got a Docker compose file in the repo. We've got mini cube installation instructions. So you can pretty much do everything except do the batch retrieval. But if you want to do that, you need to use BigQuery for that. It's probably the most requested functionality is an open source warehouse. So we really want to add that soon, hopefully by the end of the year, but worst case early next year. We're thinking of just building on top of an existing interface there so that we can support many different external stores. But to answer your question, you can run pretty much the whole Feast locally in a mini cube or with Docker.


QuickBooks Online 2022. How do bank feeds fit into your accounting system? Get ready because it's go time with QuickBooks Online 2022. Here we are in our bank feed practice file. We set up with a 30-day free trial holding down control, scrolling up a bit to get to that one to five percent currently in the home page. Otherwise known as the Get Things Done page, the business view as compared to the accounting view. If you want to change to the accounting view, it's something you can do. By going to the cog up top, switch to accounting view down below, we will be toggling back between the two views either here or by jumping over to the sample company file currently in the accounting view. Back to the bank feed practice file. So how do bank feeds fit into your accounting system? That is an important question you want to think about before setting up bank feeds or at least before adding those transactions into your accounting system. If you don't think about that in advance, it's quite possible that you're going to set up the bank feeds.  That being the financial statements, the balance sheet and the income statement. It's quite easy to get overwhelmed if that is the case or if that's the route that you take. And I can understand if that's the route you take because if you look at the advertising around bank feeds and just the name of QuickBooks, it sounds like it's going to be very quick and almost entirely automated. You'll just set up the books. You'll connect to the bank. The bank will then transfer the data into your system, which will just create your financial statements, balance sheet and income statement for you. That's not necessarily the case, although there are instances where you can make it a lot more automated and instances where you're going to have a lot more kind of still work that's going to be needing to be done within the accounting system, which will be dependent on things like are you on an accrual basis? Are you on a cash basis? What type of industry are you in? What kind of level of internal controls do you want over your accounting system? These are questions you want to consider, questions you might want to talk to your accountant about your CPA firm. If you have one about, and so we'll take a look at some general ideas about it here. So to look at this further, let's jump on over to a flow chart. Now this is the desktop flow chart, but it's a good flow chart that just shows us the general cycles of the accounting system broken out by the purchases cycle or expenses cycle or vendor cycle, the customer cycle or accounts receivable cycle or sales cycle, revenue cycle, and the payroll cycle or the employee's cycle. So the basic idea with cash flows, let's go from the easiest kind of scenario to the most difficult type of scenario, and that will typically be dependent on the type of industry you're in, the size of the company that you're in, and whether you're on an accrual basis or not, or a cash basis, which again will often depend on the type of industry that you're in. So obviously smaller companies are more likely to have a more simplified kind of accounting system and more likely to just be able to depend on the bank feeds. So the most simple system would be a cash flow type of system and one in which it's not just a cash flow, but you're going to step further in simplification in that you're going to be reliant simply on the bank transactions in order to record the information into your system. So let's look at that first on the revenue side of things, which I think could be one of the more confusing side of things, and then we'll take a look at like basically the payable side of things. Note that it's quite possible for you in essence to be on a cash basis system on one or the other, on the basically purchases or expense side, but not on the revenue side, on the revenue side, but not on the expense side, depending on your particular needs for your particular industry and of course the regulations involved as well, including tax codes and any kind of reporting regulations that you're trying to make the financial statements to comply with in addition to having the financial statements for your internal reporting needs. Now as we think about these just note that you can think about the bank feeds as in essence simply being what's on your bank statement. So your bank statement usually has like a summary, beginning balances, additions and then subtractions. This is just a mock bank statement and then it's got the data which at its least at the least amount of data that you would have on the deposits and withdrawals. Let's look at the deposits. You usually have a date and then you have an amount. That's what you're going to be inputting into the system at the minimum. You might have some more data that you can use. The system can try to use to try to figure out how to record things. If it was an electronic transfer, for example, then you might have something like the memo, the bank memo kind of information, which could include stuff that helps you to determine what the vendor is. However, the memo itself is not the vendor. It possibly includes information that you can create the vendor from and know who it was from, but the system can't just take that information at this point and just create or in this case the customer that you got the money from. If you're looking at the withdrawals, the minimum information would be the date and the amount and then if it was an electronic transfer, you would have then the same kind of memo line which could help you to determine who you paid, but it's not going to be something that the QuickBooks can automatically kind of put into place and it will not have the information for which account will be impacted, especially on the expense side. On the income side, we can kind of think, maybe it's going to be an income account if it was on a very simplified method, maybe I only have one income account. On the expense side, we've got a whole bunch of different expenses, even if it could determine the name from the memo, which you can't do without your help at least to start off with, then it still needs to assign that name to an account like utilities expense, telephone expense, and so on and you're going to need your assistance on that as well. Now if you have the checks that are involved, then you're going to have the the date which will not be as relevant because it's going to take longer for the check to clear, you'll have the check number, and then the amount. Again, that's not a lot of information just in terms of a raw bank feed to basically record everything that needs to be recorded, which would include the account that you're trying to record something to. So knowing that, let's go back into our flow chart and say, okay well what kind of system would be easiest that I can just automate as much as possible and just basically make our financial statements off of the bank feeds? That would be not only a cash basis, but one where we're reliant on the bank transactions. So in other words, even if you're on a cash basis, QuickBooks is designed for you to record on the revenue cycle, sales or revenue or income using one of these two forms, the invoice if you're using an accrual basis, the create sales receipt if you're on a cash basis. So even if on a cash basis, you can imagine a situation where you're at a register for example, then you would still be using the sales receipt if you were using the full service of the QuickBooks service. That allows QuickBooks to use things like items that allows you to determine and track the sales that you make by items, the services you provide or the inventory items that you provide. If you skip that step and you just say, I'm just going to go right to the deposit line here, you're using a form that you can then record directly to a revenue line, but it's not natural for QuickBooks to do that and you will not be using items. The items are the typical thing that drive and sort and give the more added detail behind the sub ledgers for the revenue type of line item. For example, they're also used to track things like inventory. So that's a little bit of added detail that you would lose if you're just completely reliant just on the banking information and not entering basically the create sales receipt. So if we jump just to the deposit, what kind of industry might that fit in? Well, if you're doing something like online type of stuff, if you get paid from advertising, like you do you do sales for other people or something like that and you do advertising, you get paid by platforms, if you do courses or something, if you get paid royalties, if you get paid from YouTube channels, if you get paid from the channels for courses online or something like that, then it's likely that you just want to get paid once it comes into your account. You're just going to assign it as revenue at that point in time. You're going to get paid with an electronic transfer so that you can probably see who it came from and you can easily assign it out to a revenue account. On the revenue side of things, that would be the type of industry that would be as easy as possible to automate the system as much as possible, going from not only a cash basis to a basis on which you're dependent on the bank and just basically putting your information in the system as it clears the bank. Now, if you if you have to have a cash register type of situation, then you're going to have a bit more difficult of a situation. If you're working at a cash register, like a restaurant, a food truck kind of area or anything like that, then you're probably going to get paid during the point in time of course like a register situation during the day, possibly recording with a create sales receipt as you go. And then you're going to have to take those multiple payments that you have received and deposit them into the bank, physically going to the bank, depositing multiple transactions in one lump sum amount in the bank.  What you would like to do is have an internal control that would be a control against making errors that you enter it into the system first with the create sales receipts, put it into the to the clearing account, which is called undeposited funds or in the newest system, they called it like deposit or amounts or cash to be deposited or something like that. And then you go into the deposit side over here, put it into the actual bank in that grouped fund both in your system and as it will be seen on the bank statement so that you can reconcile the two things. So that what that does is it allows you to record the individual sales transactions and gives you more detail because it allows you to basically record the transactions by customer. If you want that added detail, and it gives you that kind of double check that you can run the tape on what you actually recorded in your register compared to what you deposited into the system. And it gives you that double check that you can then have your deposit that you recorded into the system that you can match out to to what the bank has on their side in the bank reconciliation process. So in that system notice if you're making the sales receipts then you're going to have to still enter the data into the system on the deposit side of things. And then when they clear it when the deposits go through the bank and we'll show examples of this as we go through our practice problem but as they go through the bank you're going to match the deposit which helps you with the reconciliation process but it doesn't help you really to record anything new because you would have already recorded the deposit on your end in your normal accounting cycle. So that would be a more full service accounting cycle which happens to be on a cash basis because your industry is a cash basis type of industry but you're using a full service cash basis entering the sales receipts not being dependent on the bank. So it's a little bit more difficult in that it takes a couple more steps. It's not as automated you can't really automate the system as easily because you want to be able to record the sales receipts. Now then if you're in a situation where you're on an accrual basis system meaning you're in the type of industry where you have to give out an invoice it's going to be more complex you can't just rely on the bank to record your books if for example you're a bookkeeping or you're a law firm even if you just do service items and don't sell inventory for example you still are in a situation where you have to create an invoice for work that was done in the past possibly making billable hours entering those into the system sending out your invoice to the customer receiving every payment later that means when you create the invoice that's when the sale or revenue is increased and that is when you're you're going to record an accounts receivable and then track the accounts receivable hoping to get paid by the customer in the future then recording the received payment at that point in time and then you have that same kind of situation that you could have multiple payments that you receive so instead of putting it into the bank at this point you might then you might then group multiple payments together and deposit them all at one point in time so there's multiple areas where we can kind of we could theoretically fit the bank feed deposits in here we couldn't make an invoice wait till it clears the bank and then and then connect kind of the deposit to the invoice or we could create a sales receipt after we have the invoice and then basically get the deposit to kind of match up to the received payment or we can go through this full process in the accounting side of things and then match up the deposit that comes through the bank feeds to what we already recorded in our system helping us out with the bank reconciliation process so those are those and then if you had inventory that's another accrual kind of component so if you're tracking inventory then that's another area where you're usually going to be pulling away from a standard cash basis system if you're having to track the inventory so we'll talk more about inventory as well if we go on to the purchases the vendor side of thing that means this is the expense cycle and note it's it's possible to be on like a cash basis on the revenue and not on the vendor cycle or more likely for small businesses vice versa you might be more in a cash basis on the vendor cycle or expensive cycle a cruel basis depending on the type of industry that you are in on the revenue cycle in other words small businesses if they have the cash flow might find it easiest to just basically electronically pay the expenses as they become due so if you do that if that would be the easiest system to use on the expenses side of things to be reliant just on the bank feeds so in other words when something becomes due a bill becomes due you just pay it with an electronic transfer that comes right out of your account even if you use a credit card because it is possible to use credit cards and have bank feeds on the credit cards as well if you're paying for it electronically right when it comes due then that would be the easiest thing to say i'm not going to record it on my side at all i'm instead just going to wait till it clears the bank and then record the the related expense when it clears the bank either in the form of a credit card payment or in the form of a cash payment so that would be the easiest kind of thing to do once again you're stepping away from a from a cash basis method to go into a method where you're not recording it at all on your end you're depending on the bank to record it now if you were on a full cash basis system you would do something like record it on your end and then check that it clears the bank and that's still really important if you write physical checks because if i write a physical check then the the problem is the physical check takes a while to clear and if someone calls me and says they haven't been paid i want to be able to check to see if i actually wrote the check in the system and it hasn't cleared or if it's a system where i never wrote the check and that's a question that i can't resolve if i don't write the check and put it into my system as i write the check that problem is not as big if you have electronic transfers because you can confirm the like electronic transfer quite quickly at this point in time but it's still an internal control to if you were to enter it if you have a full service system you enter it into your system as you make the payment and then double check possibly with the bank feed helping you out with the reconciliation that it had cleared the bank now if you're in a larger company or if you have more stringent like cash flow requirements especially and this happens more when you have a whole lot of transactions because cash management becomes a lot more important in other words if i pay the bill at the end of the due date the end of the 30 day period as opposed to the beginning it's not a big deal for small companies which one i do because it's just a short time frame but if you're like a large company that has a whole lot of transactions like a credit card transaction it starts to add up to be able to pay your bills as late as possible cash management becomes more important so bigger companies tend to then want to go on an accrual basis entering the bills into the system which increases accounts payable the other side goes into the expense for example and then sort the bills to pay them at the end of the time period as late as they can without angering their vendor or without foregoing any kind of discounts they can get to pay it earlier so that's when you're going to use the accrual basis which that adds complexity for the bank feeds because then most likely you're going to enter the bills and then possibly pay the bills decrease in the checking account yourself and then double checking that to the bank or you could enter the bills and then pay the bills electronically wait till they clear the bank and then match the bank feed up to the bill so we're going to go over many different examples on on this in our practice problem we'll basically create a practice problem initially or primarily as if we're on the easiest system that we can just automate our system and make our books based on the bank feeds but we'll deviate from that on each of these steps showing an accrual basis where we have an invoice or a create sales receipt situation and showing situations where we have bills and how the bank feeds would kind of fit in or how they could fit in in multiple different types of ways as we think about those processes also note that if you're tracking inventory that's going to be another kind of issue because if you track inventory you have a couple questions do i want to track inventory within the accounting system or do i want to track inventory outside of it so if you track inventory in QuickBooks you're going to be using a what's called a perpetual inventory system and to use that you have to enter a sales receipt or a invoice when you make the sales because those are the items that are going to help you to track the decrease on this side of the inventory if on the other hand you want to use a perpetual a periodic inventory system you might track your inventory on a sub ledger outside on like an excel worksheet and then just enter it into the system and make periodic adjustments periodically at the end of the day the week or the month so we'll we'll talk a little bit about you know those methods with regards to inventory a bit more in future presentations as well so you want to keep these things in mind when you set up the bank feed if you set just setting up the bank feeds easy you just go into the bank feeds you connect it to your bank you've got some difficulties with regards to basically you know what your bank wants for security measures and whatnot but pretty simple to get those bank feeds in that's not the difficult part making sure you're setting them up properly in your accounting system is the is the thing that you want to consider the other thing you want to basically make sure of is uh how far back on the bank feeds do i need to get the transactions is it a new company where i just started this year or something like that and i want to go back say to january you you generally want an entire year of bank feeds in one system if possible rather than basically having you know half of your information in the prior accounting system for one year and half in the current year and then the then so the question is if it's at the end of the year for example at december and i need to reconstruct my entire year of bookkeeping for which is fairly common uh can i go far enough back to get that much data with the bank feeds and for that you also need to consider if i just connect directly to the bank they might not be able to go a whole year back or multiple years back uh so but you can sometimes go further back if you actually physically download the data from the bank so how much data do you need in the system what's the cutoff date of the data that you're pulling into your bank feeds have you already been doing accounting before and now you're implementing bank feeds how can i stop from duplicating data that has already been entered that cutoff date is also something that you want to keep in mind so we'll talk more about these as we go into practice problem


Welcome to our lecture series Math 1060, Trigonometry for Students at Southern Entire University. For this course, I will be your instructor. My name is Dr. Andrew Misildine. Nice to meet you all. Like the name suggests, this lecture series is about trigonometry, but what is trigonometry? That's what I want to mention in this introductory video. Well, trigonometry is in fact a subset of the mathematics known as geometry, which mathematics, excuse me, geometry is the mathematics of shape and space, those type of things. So as you've studied geometry in the past, you probably learned about shapes like triangles, circles, rectangles, parallelograms, and related topics to that. Trigonometry in this course is gonna focus on planar geometry. That is, we're only gonna be doing two-dimensional things. Many of the trigonometric notions we've learned about in this lecture series could be generalized to three dimensions, four dimensions, five dimensions, and beyond, right? But we are just gonna focus primarily just on two-dimensional type problems, so-called planar geometry. But also trigonometry is not focused on all aspects of geometry. As the word trigonometry itself translates, if you look at the word try, here means three, in this case, gone is talking like a polygon, which has many sides. So first of all, and then the metric here, meter, this means the measurement of, so trigonometry literally translates as the measurement of a triangle or a trigon, all right? So trigonometry is mostly gonna be focused on triangles. And in this introductory video, I'm gonna introduce some vocabulary related to triangles that'll be essential for this lecture series. But trigonometry likes to approach geometry from the perspective where we use coordinates and algebraic equations to help us solve geometric problems. So, so-called analytic geometry. That is the coordinate geometry using the equations to study geometry. So we're not gonna be mostly focused on like geometric constructions, we're not gonna do that, we're not gonna be really focused on geometric proofs, which other geometry classes might do. Trigonometry is mostly analytic geometry focused on triangles and related subjects such as angles and circles. So let me remind you of some important geometric terms that'll be bedrock for the rest of this lecture series. So we're gonna talk a lot about points. So we take points A, B inside of the plane. Like I said, we're only gonna talk about planar problems in this course. And so let's say we have two points. Let's just draw them here on the screen. We have two points A and B. The line segment, excuse me, that connects the two points will be denoted by A, B with the line already above it, excuse me. If you don't put the line above it, this actually measures the length of the line segment. This is a common misconception here. A, B with the line above it represents the line segment that connects the two points. And then without that line, like I said, is the measure of the line. The two are quite related to each other, which is why people sometimes conflate the issues together. So A, B right here is the line segment connected by the points A and B. And so if I were to draw two lines for a moment, let me, let's consider two lines right here. And let's say that these are, these of course are lines. And so we get maybe the point A right here, B right here. If we want the whole line determined by the points A and B, we might say this as like A, B with a erode line segment above it. So this would be the line determined by A and B. Let's say we take a second line, two points C and D, then this would be the line C, D that is the line determined by C and D, all right? And so we know from basic geometry that two points determine a line. So a line is uniquely determined by two points. Well, a pair of lines that'll be extremely important in the trigonometry course is the idea of perpendicular lines. So we say that the line, a line or the line segment, all right, it doesn't have to be the whole line either. If we take the line segment A, B, we say it's perpendicular to C, D. If the angle formed between the two lines is a 90 degree angle, okay? Angle measure is something we're gonna talk about a little bit later on in this course. So how do we describe right angles or perpendicular lines without 90 degrees? Just so you know, a right angle is the angle between two perpendicular lines. And this is often denoted as we draw a little square right here. Let me make it look more like a square. And the reason we do that is that a square itself has four right angles. We often draw a little square in right angle to indicate that this is a right angle. So if we wanted to find right angles without any notion of angle measurement, we can do this with slope, for example. So if we take two lines, let's say we have two perpendicular lines, like so. Again, we have this right angle. We take the slope of one line and then we'll take the slope of the other one, call it m prime. It does so happen that perpendicular lines have the property that if you multiply together their slopes, you take m times m prime that's equal to negative one. So that's gonna be our definition of perpendicular lines for the most part. If we need a proper definition, and we'll denote perpendicular lines by drawing this sort of like upside down T. And this is supposed to be resemblant of this picture we see over here. So perpendicular lines, they're products, the product of their slopes will be negative one. That is the perpendicular slopes will have negative reciprocals, negative reciprocal slope. We'd say that three points are collinear if there's a single line that contains all three points. The significance of the constellation Orion in the Northern Hemisphere is that the three stars which we call Orion's belt are collinear in the sky and relatively close to each other, which is not something you usually see with stars. Any two points, of course, are collinear. Like I said, any two points determine a line. And so if you have a set of three or more points, if that's collinear, that's kind of significant. Well, if something's non-collinear, it means that the three points cannot be drawn on a single line. So you get something like this. And if you take three non-collinear points, this is what we mean by a triangle. So if you draw the line segments that connect these three non-collinear points, let's call this A, B, and C, the points. Then if you join together those three lines, we get a so-called triangle. So that's what we mean by a triangle. It's this shape in the plane determined uniquely by three non-collinear points. We often denote a triangle as a triangle symbol ABC. And so we're gonna talk about triangles all the time. A little bit of vocabulary you should be aware of with triangles. If all three sides of the angle are the same, excuse me, if all three sides of the triangle are the same, we call it an equilateral triangle, equilateral here, meaning that the laterals, that is the side lengths are all the same. We say that a triangle is isosceles if two of the sides are equal to each other. Now I should mention that if three of the sides are equal to each other, that implies that two of the sides are equal to each other as well. And so every equilateral triangle is an isosceles triangle, but we can get a sosceles triangles which are not equilateral. For example, if we draw an isosceles triangle like this, you have like maybe a very skinny angle right here, these two sides are congruent, but maybe the third side it's not, all right? Lastly, if all the sides have different lengths, we call that a scaling triangle, all right? Now typically when people talk about sosceles triangles, they typically don't mean an equilateral because if all three sides were the same, I wouldn't read you to say that, but be aware that by definition, the family of a sosceles triangles does include equilateral triangles, but scaling would be the complement. A scaling triangle would be the complement there of an isosceles, that is scalings don't have any of the three sides together. Later on when we talk more about angle measures, these definitions will make a little bit more sense, of course, we'll explore all this in the future, in this lecture series. If all of the angles in a triangle are acute, where acute angles are gonna be those less than 90 degrees in measurement, we call the triangle acute. Likewise, if there is at least one obtuse angle in the triangle, we call it an obtuse triangle. Obtuse here, of course, measuring, meaning that the angle measure of an obtuse angle is greater than 90 degrees. If a triangle has an obtuse angle, we call it an obtuse triangle. Now, because the angle sum of a triangle will always equal 180 degrees, a triangle cannot have more than one obtuse angle. So if has one, it's gonna be unique. And similarly, we say that a triangle is a right triangle, if it has a right angle. And if a triangle has a right angle, that right angle will necessarily be unique. And so because of that, we often reference triangles based, a right triangle based upon that right angle. So a sketch of a right triangle might look something like the following, where you see that right angle going on over here. And so we often reference things in the triangle with respect to that right angle. The side that's opposite the right angle will be the largest side of the right triangle. It's called the hypotenuse. It would be this side right here. And then the other two sides, which are gonna be adjacent to the right triangle, they're gonna be shorter in length. These are called the legs of the right triangle. So we have one leg right here, and we have another leg right here. And so again, this is some vocabulary that you should know about triangles. In trigonometry, we're gonna be particularly interested in right triangles, at least at the beginning of our lecture series. Later on, we're gonna consider non-right triangles, which are commonly referred to as oblique triangles. I mean, they could be acute. They could be a two, so they're just not right. But for the immediate part of our lecture series, we're gonna focus on these right triangles. And that leads us to the Pythagorean equation, which we'll talk about in the next video.


Richard you had a very important game today against Maxime. It appeared that you drew without too much difficulty. Give us your thoughts on the game Okay, you know first of all I played Karakana because I tried to be as solid as possible I am sort of an expert in losing last round games, so I Tried you know something different Okay, I had this idea in my mind with With night a six and the queen d5 and the whole whole thing basically this night before Previously, but I never really get the chance to you know to try it After that, I think okay. I sort of equalized but I think this bishop b6 bishop d5 might have been you know Not that precise because he had some idea with a4 which I Happened to you know underestimate because of some defense which I thought is working, but it's of course computer says you know that that I have some difficulties afterwards and Okay, he did after he went for this netx d5 and e6. Okay, it's just I'm maybe a little bit better But I I didn't really feel like I can do anything real So you're happy with the way your opening preparation worked today Yeah, I can say that's right now. You're one of the safe guys for the playoffs. You've got a good tiebreak, so With le kuang li am beating Dubov you're into the playoffs. How are you going to prepare for it? What are your thoughts right now? I'm just extremely nervous right now watching my you know I've slashed the game and this is something which you know is always more stressful than you know Thinking about some possible playoffs, but yeah, we'll see how it you know how it goes We wish you all the best and hope to have you back here after the playoffs. Yeah


Hi, everyone. Thanks for watching our presentation. I'm Abby Shelton and I work at the Snite Museum of Art at the University of Notre Dame. And I'm presenting with my colleague, John Hartzler, who's a lead software engineer at Hesburgh Libraries, also at the University of Notre Dame. So in this presentation, we're going to talk about our modular approach for building a collaborative digital collections ecosystem for our campus art museum and the library. The library includes a rare books department and university archives. So I'm going to talk very briefly, since we only have about 15 minutes, about some of our work to connect with and engage with end users. And then I'll turn it over to John, who will focus on the connections we've made between our existing source systems to support the back end of this collaborative website. So to set a bit of context, in 2017, the University of Notre Dame received a grant from the Andrew W. Mellon Foundation to create a unified digital space for archival library and museum collections so that users could access these things all together, like you see on the screen. This was really filling a need for these campus units. The art museum had no online catalog for its collections, while the university archives and library had no centralized access point for their digitized items. Some of these library objects were spread across boutique digital exhibit sites, and a few collections were housed in our institutional repository. So the way we approached this challenge was not to migrate everything into a brand new system, but to instead build and strengthen connections across our human and tech ecosystem to make these digitized collections accessible and useful to our community. So our goals for this project were pretty broad, as you can see on the screen. Basically, we want to get more digitized content out into the world in a way that's useful to people. We want to work better together as a museum and art museum and campus library, and to experiment with some new to us technologies like IIIF and AWS. But because the grant didn't specify any really defined concrete technical deliverables, to further define our goals, we went straight to our community, and we define that primarily as our faculty, students, and staff. You might hear us talk about Marble, that's the name we've given this project, and the site, it stands for Museums, Archives, Rare Books, and Libraries Exploration. So to begin with, I sat down with about 100 faculty, staff, and students, pre-COVID obviously, to ask them about what they wanted from our digital collections site. And over the course of the project, we also talked to hundreds more about different iterations of the actual website when we started building. So for this project, we really wanted to meet people where they were, the real needs that they had, instead of trying to engineer something based on the latest technology out there. So I'm going to give you a quick, high-level sense for what our users really care about. Our users want high-quality images for use in their classroom, or to download for PowerPoint presentations or lecture notes. They want to be able to pull texts like books and manuscript letters into their preferred readers, PDF readers, like Adobe Reader, or to actually print them out for scholarship and use. They want to find images for event posters by searching for what I call first-order terms like blue, dog, family. Museum users in particular want to be able to see what's on view in the galleries, or to revisit objects that they've already seen in person, whether for personal interest or for a class assignment. And there are many more. These might seem like pretty foundational digital collections use cases, but they are our community's real needs that aren't currently being met for our campus collections. And that's sort of what we're starting starting from. But we anticipate that these needs will expand after we launch the platform, and also as the infrastructure and interest in humanities computing increases on campus. And so this is one of the reasons why we've taken this modular approach. We wanted to build in a way that would help us use and reuse our applications and also our data in ways that will serve future unanticipated needs. All right, so that's kind of the high-level human side of things. And now I'm going to turn it over to my colleague, John, who will talk about the back end. Hello. Once we received this grant and we sort of started sitting down as a team and sort of talking about the different types of problems, we realized that we were going to have to address a number of challenges and problems in our existing infrastructure systems. First off, we realized that we actually have a lot of data and a lot of data out there in the world and a lot of different systems. And that data is in use. So these are things like all of our catalog system or embark the museum system, but it's also spreadsheets that people have put together to solve specific workflows or maybe file maker pro databases. And we don't really want to, if we can help it, force people to change their existing workflows to accommodate an entirely new tool and the data needs of that new tool. In addition, Notre Dame doesn't have a dam. There's no place where our image metadata is consistently mapped. And even if we did have a dam, it seems unlikely that everybody who was, who all of the images that we wish to work with would be would be put inside of that system since we have such a plurality of systems already. Finally, like we have all this data and it's all being used for a lot of different purposes and it's incredibly difficult to guess what purposes will come up in the future. Next slide. So to try to handle this, the system that we came up with was to sort of take a four-tiered approach. On the left here you can see that we have existing systems in play. Now this might be embark, it might be a spreadsheet, it might be a Google doc, it might be a file maker pro database. And then we are harvesting it. So on the top we are harvesting two systems that are similar together. And then after that harvest, it goes through a bit of a normalization process and then that data gets stored in AWS app sync. And then there are site building routines that run on top of that. So site building routines harvest this existing data and use it to build outcomes. Those outcomes which are on the far right might be our triple IF infrastructure. It could be the merged marble website that you can go to right now. It might be pushing things into a preservation system or some other small collection website or whatever purpose might come up in the future. So just to take that big picture and talk about one very specific problem that we had inside of our actual infrastructure and that is we have our metadata and image problem. So we have several different metadata source systems. None of those metadata source systems. Well I guess that's not true. Embark references their images but several of our systems do not references the images that are associated with the particular metadata records. So we have to figure out a way to get that data and get those two pieces of data to come together. In addition the different systems are cataloging different pieces of information and they're cataloging it in different ways. So we have to find a way to normalize that process and sometimes data sets are incomplete. So here's an example of this architecture up from the previous slide was sort of boiled down to what we were attempting to do with our metadata normalization process. So on the left here you can see that we have processes for Embark, OLF and archive space where they are harvested and normalized. And then we have processes for the images. Our images are in S3 or Google Drive. There's a harvest and normalization and enrichment. In the metadata case we're enriching things. We are pulling data by looking at the Getty terms inside of the coming out of Embark and doing expansions on them or Library of Congress terms and doing some expansion and we're also doing some location expansion inside of that enrichment. That data gets stored together inside of AppSync and then inside of AppSync we are connecting the images to the metadata. It doesn't happen until it reaches that third step. So step one is sort of pull data, do some transformations on it as is, get it into the next phase where things get sort of merged together and reconstituted into something that we can use to build off of and make things go into the next step. Another of the really, really big problems that we have is this problem of multiple endpoints for our data. We have a lot of different unique boutique collection sites that are already in existence and already have data for them. The problems we have when we analyze them is that we find that they actually don't really have a lot of overlap in their overall goals. So they have a lot of specific unique data needs and all of them already have datasets and workflows set for them. But we still have done created this large workflow for our metadata and we want to make sure that those two workflows come together into something that is sort of maintainable for the future.  We also, so we want to reuse the datasets that we already have and we also don't want people to have to learn an entirely new tool just to manage a site that's been in existence for a long period of time. And it was really this particular problem that made us quite a bit wary of the sort of monolith approach. Monoliths sort of have this problem that they solve a specific problem at a specific time. But as problems change or as you look at a whole set, a suite of problems that you need to sort of solve over time, they can create a lot of technical debt down the road because they have a lot, usually a lot of code embedded in them or they're pretty large. It makes them hard to make specific changes to without breaking other things. And so this is, you know, it's this multiple endpoint piece where we wanted to back up and say, okay, well maybe what we need to do is split up our architecture into pieces of transformations that are pretty specific to the endpoints that they're trying to trying to reach and to also aggregate the same types of transformations in the same level. So here is that architecture again, and we've added in a few different types of data sets. So on the left, maybe we have an existing relational database that is being used for a particular microsite, or maybe there's a FileMaker Pro database that is building another type of site. So maybe some people have data in spreadsheets that are used for very specific purposes, but they have existing workloads that are working for them around those things. AppSync is a type of tool that we can harvest from these systems, and we can connect to it. Some of them we can connect directly, and it allows us to sort of query them sort of across the board. And then we have set up processes, individual site building processes for each of those outcomes. So for example, we are currently working at migrating one of our sites, which is for the Inquisitions Collection. It has an existing set of essays that describe data about that website. They are already in a data format. When our process is done, we will have connected the new Inquisitions website to the metadata that exists revolving around the collection itself, and to another data source that has the existing essays in it. And we will reconstitute the site, reusing the data that we already have at the site building level. AAIF and our AAIF endpoint is another example of how this works. The same data that builds a marble website builds a AAIF endpoint also. It just does a different type of building process, one that builds them into manifest as opposed to one that is building them into sites. That's all nice, but we actually have another pretty difficult problem that sits on top of all that, and that is sometimes we actually don't have the existing data that we need. Like I said, Notre Dame doesn't have a dam. We can't always connect the images to the metadata that it's about. The systems that we have for managing copyright are sort of insufficient to the end needs of the current website goals. Different sites have different pieces of data that they want to display in different ways. How do we account for that? AppSync is really the key here, too. We actually created another process on top of AppSync, which is a tool that we're calling Redbox. What Redbox basically does is it allows us to pull in specific data from our dataset, make changes to it, and write it back. It doesn't actually overwrite the data that was already in existence. It just augments and lays on top of it so that when the site builder comes around and looks for data that's been augmented by Redbox, it just pulls that data augmented straight through, even though we haven't lost the existing data in the existing systems. A lot of this stuff has been set up because we don't really know what our long-term future challenges are, but we can guess at a couple things. We have to continue to work on our metadata transformations, and we need to continue to work in a continuous improvement environment. The continuous improvement environment allows us to adapt our processes to the specific challenges in front of us, but also by breaking up the infrastructure into these four different channels of data maintenance. We don't have to change the whole thing to make changes to part of it. Thanks, John. That was pretty quick, pretty high level, but we wanted to offer you our contact information. Our email addresses are on the slide there, as is our microsite, so please feel free to get in touch with us if you have other questions about what we're doing or want to see the site itself. Thank you all for watching. I hope you stay safe out there.


Part 3 of the canvas behind me where her face starts to take shape. I start to push and pull the paint I do the sketch in pencil just a plain old graphite pencil by the way nothing special. I'm not using any special materials or tools I'm using what I have bits and pieces and parts and She's got some fun texture going on which I didn't honestly wait for the background to dry before I started putting her face on here so that made putting her face on here challenging, but I just couldn't let it go and I love the way. She turned out. I think she turned out really great. So anyway part 3. I hope you enjoy it I'll be back be pushing and pulling the paint using baby wipes to move things around and blend a little bit Although I didn't blend too much. I wanted her loose and set as sketchy and suggestive. I didn't want to Take some of the paint. I was putting on off so that we could still see the rapport behind And we could see all the layers and the depth in the painting at some point you'll see that I just left it because I really liked where she was at I Suspected she might be close to done or done, but I wasn't exactly sure she needed to dry overnight and she needed to Just sit and be and I needed to have it resonate in my head and find out I think about it what I wanted to do if I wanted to do a next step and I did I did add a few sketching lines which is in part 4 and You'll if you want, you know continue to watch the next part I do actually zoom in on her face, and it's just a very quick video So that's it right now Part part 3. I hope you had fun