Hi everyone and welcome to this CNCF webinar where we'll talk about what's new in Argo workflows 3.0 That was just released here this week. My name is Henry Plixt and I'm a principal part manager here at Intuit And hi, my name is Alex. I'll be doing the demo today. I'm a principal software engineer in Argo maintainer so before we go into The the meat of 3.0. I wanted to give you a brief history of what Argo is and how we ended up where we are today So Argo is is a set of kubernetes native tools. We're running and managing your jobs and and applications with kubernetes So Argo consists of four different open source projects. We have Argo workflows, which is the The the star of the show today and then we'll also have Argo events Which is an event-based dependence manager and then we have Argo CD and rollouts Which are the declarative continuous delivery tools and progressive delivery tools That you can use to manage applications and manage your rollouts in various shapes and forms Argo started a few years ago. It was incubated at a startup called Aplatics Which was then fairly quickly acquired by Intuit. Intuit had a need to build a self-service developer platform and modernize the way we were doing our software development and managed applications So Aplatics was required and tasked to to build that to to build that and with Aplatics came the Project Argo workflow at the time as they were building out and as we were building out this these new developer platform There was also a need That we realized to have a continuous delivery platform and hence Argo CD Was born so Argo workflow was the first one and then Argo CD came shortly thereafter And then one of the Argo workflow users BlackRock later contributed Argo events into the project And as this matured, we also realized the need for progressive delivery and Argo rollouts was incubated about a year later and Premiered at kubecon about two years ago now About a year ago now Argo was Incubated as a CNCF incubating project and just a few weeks ago We filed the PR to be a fully graduated project. So the project has added A lot of features a lot of contributors and gone through a lot of Mature ingest in the last last couple of years here. So we're really excited now how far the project has come in a very short time and that's also Evidence by the the number of contributors and the growth we've had in our star count on github We're now up to over 15,000 stars We have almost 4,000 contributors of which over 900 are actually contributed contributed contributors either Active right now we have contributing the past code to one of these four four projects and they're very active slack Channel with several slack channels We have over 5,700 members currently And it's a really good spread in the community around this project from there are vendors that are stepping in and helping here That are offering the commercial support options for Argo. We have a lot of users and individuals that are using You know the the regular open source versions of this and in all And contributing to to the success of this this project. You can see just in the last year Now Argo workflow that the oldest the most mature of this project have added now 50 percent new stars in in less than a year And we've actually done Of the 350 releases that we've done in the Argo project over the last Almost four years 50 percent of those releases have been in in the last year alone There's been a lot of good growth both in terms of features in terms of contribution and in in terms of stability in in the various Argo projects And one thing we're we're also really excited about Is seeing how Argo Argo workflow in this case is getting picked up by other open source projects and and building an ecosystem of of related projects where Argo is used in a component And Argo being Cloud native at its core and having a very flexible architecture makes it easy to integrate with Makes it lightweight. It's all container-based. So it's really Easy for for others to pick up Argo and and use that as as a you know workflow engine as part of their their project And it's also a a familiarity Piece to this where the workflow as code you can use yaml to describe describe your workflows to describe How you do things and that fits in nicely with how these other projects, you know, we have platform and framework projects Like kubeflow Or kendro we have cooler the which is a A Unified interface to interact with various workflow engines underneath that's also supporting Argos all all these kind of come together and use Argo and support Argo as as a Plug-in orchestrated underneath and we're really excited to see this this ecosystem growing It's been growing pretty fast here. Just just in the last last A six six months a year here I also just want to mention, you know, in terms of the stability and the scale That Argo is used that at into it as an example since that's where where Alex and I work And this platform that I mentioned initially that a platyx was tasked of building we now 5 000 service developers that are on boarded to this to this platform and With over 11 000 applications deployed Over 350 plus Kubernetes clusters all running in AWS with with well over 15 000 nodes and So it's pretty sizable sizable architecture that we're using Argo for internally here, and we also have a significant population of data scientists that are using workflow as you know the The tool for executing workflows and pipelines and doing the running the ML ML jobs So so really excited to take this into Into the next level here with with 3.0, which is our first major release in a while So i'm going to hand it over to Alex here now to do some go through and do some demos Alex Uh, thank you, Henrik. I'm just going to take over the screen recording from you just now again Good, you should be able to see the slide. Is that right? Yep, I'll take your silence as yes, so our go workflow 3.0 is probably the largest um release of argo workflows um Since no 2.0. I expect um and the main area of focus in this is what one of the main areas of focus has been around the user interface enhancements Um, we've actually added around 20 000 lines of either new or or changed code within the user interface And i'm going to give you a demo of probably about four or five really new exciting features coming in version 3.0 and also a sneak peek at a couple of features coming up in version 3.1 So the first New feature coming in version 3.0 is is support for argo events We're providing both an api and a user interface for people who use argo events Now for those of you who are not familiar with argo events It is a cloud native and cloud event compliant system for consuming and Trigging actions based on events So a typical example might be a file being dropped into a bucket and resulting in a workflow being executed or A slack message or other messaging platform resulting perhaps in a message going to kafka for example And so being able to provide this in the user interface Is filling out a really an area we felt was really lacking for argo events because it's quite It's often quite difficult to diagnose issues in a cloud native landscape without a user interface to help you I mean if you're ever looking at logs I'm sure you you never look directly at the raw logs from kubectl You go into some kind of logging facility like splint to do so So let's have a little look at the new argo events user interface If you're familiar with argo workflows too You'll probably recognize the same color schemes and layouts here But what will probably jump out at you immediately is the fact there are a number of new buttons on the left hand navigation here Well, I'm going to go through several of these in our in this presentation So the first New area here is an area called event sources Now if you're using argo events event sources is is the thing that results in some kind of action happening All right, there's a number of different types of event sources But this user interface not only allows you to create them. It also allows you to update and list them So let's create a new one This is a pretty canonical example of an event source This one's a calendar event source that will will create an event in the system at an interval of every 10 seconds So let's create that You can now see we've got a user interface I can expect the calendar and I can go up and have a look at all the different event sources will also be listed in here The other key resource in the argo events universe is is a resource called a sensor And a sensor is something that results in an action being triggered as a result of an event source Ascending an event over so two key things event source What has happened and a sensor what what needs to happen what needs to be triggered as a result of that first item Let's create an event source now the event source here I'm going to create a little bit more sophisticated than the previous Example here it contains the two templates the templates are the triggers the first template here is going to create an argo workflow So the result of this is every Every 10 seconds an argo workflow will be created and the second one is a logging trigger diagnostic trigger That'll just you print out to the console the Contents of that particular event. Let's create that And again here I can edit this once I've created it. I can have a list of these different sensors But if I want to go and diagnose an issue, I can actually move into this new view called event flow an event flow shows The event sources the sensors and the triggers and the actions that result on them I can actually enable the event flow view here by clicking on this button And that'll show me every time an event occurs an animation will show what's going on the system And the specific goal behind this the specific use case is this just to make it easier to understand and debug issues that are going on with the system I can actually have a look at these individual ones. I can click on them And I'll get some additional Options here. This is just a view and I can go into that open edit one I can also have a look at the standard kubernetes events that may have occurred related to that resource And I can have a look at the log files here when you can see that I've got some structured logging going on here from the calendar The same thing also applies for the triggers. I can click on the triggers and I'm provided with additional information here about that as well And finally I've got some additional diagnostic information Shown on this around the number of messages that have occurred here So if I if I don't looking at the screen and look away, you can see those numbers go up as a result of it And then finally I can even go and click through into those workflows and take a look at the workflow itself and do But the usual kind of investigation So that's a little bit of an overview of argo events in the user interface as well as the new event flow capability Next I want to talk a little bit about Some under the hood changes that we made in version 3.0 So argo workflows user interface is built on fundamentally two technologies A one technology is grpc And the other technology is react And react allows you to write two different types of component One specified as a typescript class and the other specified as a typescript function What we found during our development of Argo workflow 3.0 user interface is we found ourselves wanting to fix a number of kind of pre-existing Issues and bugs and things that didn't work particularly well And what we found when we're doing that is actually it was often much easier to rewrite completely rewrite an existing class style component as a functional component It was faster to do that Than actually to fix the previous issue which is a bit of a rebuke of class components, but also I think more really just shows you the power and simplicity of these Functional components how easy the art of writes and how easy the art to debug Okay, I want to talk about another little example of a feature in here I'm going to talk about widgets Now a widget is the way to embed that bit of information about a workflow into other applications And we have a couple of different kind of widgets. I'll just show you them now If I go into the view here of my workflow I am provided with slightly different options here at the top of the screen you can see that there's a new Logs viewer that's really used for anybody debugging logs Allows you to actually look at the different types of logs from the different containers in the pod Allowing you to get a bit more insight into what's going on Not just in your container, but also in the other containers running within the pod And there's also this new share link and I click on this I will get just an example here of The widgets that Exists for this particular workflow and these widgets are animated. So When a workflow starts operating it'll it'll start, you know in the gray state if it goes becomes fail It'll advance the red state or it'll change the blue set These are embeddable and you can just have it a look at the url to embed them here as a preview And let's just open that up in a new window And here we go. That's my little widget. I can embed that if I click on it Then it'll just take me to the workflow itself Now that's kind of fun another another type of widget is related to the cron workflow So a cron workflow just a bit of a recap for people who are not familiar with this Is a workflow that's triggered on a standard cron schedule. So this example here is going to trigger once every minute If I click on that cron workflow, I'm given a share button here as well I can click on that and I've got status badges and In this example, I can see that that was already running It just went from a blue state to a green state. So that's a good example of this And this hopefully will make it easier For those use cases where you probably want to build some kind of framework or platform around argo workflows But you also want to include some of the more sophisticated and useful user interface elements One of the most valuable parts of the argo workflows user interface Is this graph stroke dag view showing the workflow as it changes and executes Okay, so that's a little bit of an overview of widgets The next thing I want to talk about is reports now reports are kind of a new feature They've been polished a bit in version 3.0, but they came in 212 So for many users if you're upgrading from 210 or 211, this will be a new feature for you The goal of a report which appears under this reports option down on the bottom left hand side Is to give you an idea of how your workflow's behavior or specifically your workflow template or cron workflow Templates behavior has been changing over time and you've provided some options on the left hand side here I'm just going to use that cron workflow Yeah And I'm provided with two graphs here The first graph is a duration graph that allows me to determine if my workflow has been taking longer over time And the second one is a resource consumption graph now resource consumption is um a slightly older feature dates back to version 2.9 and each workflow will provide kind of a high level summary of Of the ballpark of the memory and cpu or gpu that workflow is used and that allows you to track cost over time. This is this is This is specifically about the amount that was requested and therefore directly correlates to cost And so you can see for example the cost of this one is pretty much stable Your cpu and memory have have remained unchanged over time And this also works if you've got archived workflows if you are using the workflow archive This can actually look at back at historical data as well I think this will be really useful if you've got a long running workflow It's running for a very long period of time or a number of times over a long period a longer a long requested feature from Argo workflows is controller high availability The goal of high availability is if the controller that operates the workflow crashes for any reason It can take some time for that controller to start back up again It has to query all the workflows in your cluster and build some datasets But also there may just be some underlying kubernetes scheduling issue that means for some reason that controller can't start up for some time So we've introduced a feature that's quite common in other work other kubernetes controllers is a thing called leader election And this basically allows you to scale your controllers deployment to two or three And when one of those controllers goes down another one can be spun up I'm not going to show you this. It's, you know, very much a terminal level operation But it's relatively straightforward to do so you add some r back around The new kubernetes api called the coordination api, which is how we do how we do leader election And then you just scale your controller to two or three replicas And typically you'll probably also use a thing called az anti affinity to ensure each of those replicas is running in a Different availability zone for your cloud provider. This means if one of those Extremely unlikely sorry not let me correct myself extremely rare But absolutely guaranteed to happen availability outage happens I mean that will happen regardless of which cloud provider using that will happen to you one day You'll actually already have two controllers in hot standby In the two other availability zones and one of those will automatically start up and take over executing Your workflows. So even if you have an outage an availability zone outage You can you'll still be able to recover another really Under the hoods, but I think very impactful enhancement in version 3.0 is a concept called a key only artifacts A key only artifact is defined Is the same as a normal artifact But rather than specifying the whole set of configuration you only need to specify The configuration related to the key. Let's have a little look at what that might look like See if I can find this example Okay key key only artifact. Here we go So this is an example of the key only artifacts and the main difference the most users will notice is here under the Outputs. I don't I only specify the key for my s3 bucket I don't have to specify the the entire thing and the rest of the information for this will be populated from Either the artifact repository reference or the defaulted it Configurated artifact repository and they'll be able to read to that explicit key So previously if you if you wanted to not include the bucket and other kinds of configuration You actually also needed to You know, if you wanted to have an explicit key You would have needed to include that in an entirety and this is very useful for examples where I want to Um use some formatting here in in the workflow And this also has like a nice side benefit for large workflows that have many artifacts with them Then they use a large fan out This actually uses less disk space within kubernetes to create and store that Particular workflow. That's a nice side effect there related to that I'm going to talk a little bit about some upcoming features Some users are probably going to skip version 3.0 and go straight to version 3.1 and version 3.1 is going to follow quite soon I'm hoping that we'll have it Release candidate available in the next few weeks and it's going to bring Three or four particularly new um interesting features. I'm going to talk a little bit about one called data template So one thing that's always been quite difficult to do in our go workflows is efficiently create a fan in fan out Map reduce style job and data template is a new abstraction that allows you To easily do the fan out part of a fan out job and I'm now going to show you an example in our user interface here For the examples, it's data transform Here we go This data transformation Lists a list of log files in a bucket and each of those log files then becomes part of the iteration loop So this allows me to list a bucket and then start up one other step for each item in those buckets This has loads of really interesting use cases For example listing your python files in a pocket and then potentially running those python files separately Um, so let's give this guy an execution here. So let's just talk a little bit about it first Here I have the data template marked by data colon and under that I have a source and an artifact passed This this tells me which bucket to list that this is the s3 bucket and this also uses key only artifacts here as well So I don't need to list the rest of it and this just lists any artifact in that bucket with main log Then that's passed to the next step here. So that'll let'll print those to standard outs They're passed the next step as items the next step. I'm going to perform some processing on those ones So let's execute this workflow So first step as I mentioned list log files in the bucket That'll go into the bucket and use whatever api method is used It's very typically a very lightweight method that allows you to list those items in the bucket And then it'll proceed to create one additional step for each item that was listed in that bucket There we go. You can see that with 142 hidden nodes. There was a large number of log files listed in that bucket And It'll Found those out and do one operation per item that you can see how this could be really useful Your first step could produce a number of artifacts that you want to iterate over But maybe you only want to iterate over some of them, you know, you can then use that filtering operation to do that Another new version coming up is Expression tag templates now most users maybe already familiar with tag templates It allows you to substitute information From for example input parameters or workflow parameters into a particular template within a workflow Expression tag templates builds on this to allow those templates to not just be plain substitution of variables But actually fully formed expressions using the expression syntax that many users will already be familiar with Let's have a look at an example Now let me walk you through this example. This example contains one Dag template that's going to iterate over a number of numbers and print out some information in the dates The way to differentiate an expression tag template from a pre-existing template is rather than starting with just two curly braces It starts with two curly braces and an equal symbol Then the rest of the contents of that tag is an expression In this case, you can see they've got an array that i'm going to be iterating over filtering out numbers that are Not greater than one and finally converting that to JSON, which is necessary for with param And then going to pass that in as a parameter called foo Let's have a look at that pod zero template Pod zero template is going to print out some information to the standard to the console It's going to print out the word hello Followed by the evaluation of this expression This expression is based on that input foo takes it as an integer Because parameters normally are strings and multiplies it by 10 So in this example, we've got a list of one and three We're going to skip one and just have three as the value for foo and it's going to multiply three by 10 to give you 30 Then it's going to print out the date, but I didn't want to include the entire date I just wanted to include the year So here i'm using a template library that comes built into argo workflows 3.0 called sprig sprig is a very common template in system for the go language and provides a whole number of useful functions for manipulating data And this particular one is for formatting dates and in in the sprig date format function 2006 really means just print out the date with only the year and that'll be the workflow creation timestamp Let's execute this and see what happens Here's my task and you can see that the it's only running with task zero And we can have a little look at the inputs and outputs of this task Here we go as predicted a single task with a number three It runs successfully and printed out. Hello 2021 The final and one of one of the most exciting features is the introduction of a container set and emissary executor Now these are two separate features, but they work extremely well together and it's going to be rare to talk about one without the other The emissary executor is a new executor To add to the existing accuser we already have including docker and pns That basically builds on the lessons learned for those plus some additional lessons We learned from working with the team behind tecton cd an emissary executor Uses shared volumes to coordinate inter-process communication And as a result of that it can it allows us to run multiple containers within a pod Today, you can only run a single container within a pod But with the emissary executor you can run multiple containers within a pod and actually have the processes Within each of those containers wait for the process in a previous container to complete This allows you to create a directed acyclic graph of of containers within a pod to do processing And one of the one of the great benefits of this is because they're containers within a pod They can share things like volumes and also communicate together with each other over local host An emissary executor on its own is not enough to achieve this We also introduced a new template type alongside his resource container and the other types of templates It's just dag and steps called container set and a container set simply specifies a group of containers that run and the dependencies between them So let's see this in action Now there are several examples we can choose from here And the first one i'm going to choose is this graph workflow which demonstrates the ability to connect multiple steps within a workflow now One thing i'm just going to quickly highlight here is there's additional annotation This is also introduced into argo workflow 3.0 in previous of work art versions of argo You were committed to a specific container runtime executor for all your workflows within within your controller Version 3.0 allows you to use a label to use different executors The different executors have a trade-off between power security performance and so forth and this allows you to experiment with new ones without Risking the other ones or or mix and match the ones you want to use for particular workflows depending on your requirements As i mentioned this new feature is based on the idea of container set and within containers i list a series of containers And the dependencies between them Let's let's start this workflow and you'll be able to see this in operation Now one of the things i love about doing the container set demo is it's often extremely responsive So responsive it didn't appear to execute they all appear to execute once i can assure you that's not the case Because these are separate containers rather than separate pods they do not have that overhead Of waiting for the other pod to complete the communication by the kubernetes api And synchronization they'll all execute as fast as possible and it's really good for co-locating tasks within a single place Let's run another example here, and i'm just going to show you that the another one of the benefits here this Container set workflow uses a shared volume specified here that's mounted onto all of the containers on the path specified here So so x is a shared workspace And in our example, we're going to have an artifact that's produced by container a and it's going to be written into that workspace But then collected from the output There we go and here we go you should see that this executes extremely quickly as well typically within A few moments there you go. There's another example of the container set template So as i previously mentioned our go workflows 3.0 introduces a number of new features I'll just review them here for you the argovents api user interface with the event flow view for diagnosing issues and the ability to create Event sources and sensors through the user interface A significant refactoring to improve the performance reliability Maintainability and robustness of the user interface. Many users will note that you don't get as many disconnection errors in version 3.0 Control a highlight high availability through leadership election that allows you to survive Availability zone out even survive a availability zone outages key only artifacts which simplify the definition of a workflow And reports that allow you to look at the history of a workflow understand how it's changing over time Then in 3.1 data template that allow you to fan out workflows based on the contents of a bucket within side your artifact repository And conditional parameter logic, which I haven't talked much about here That allows you to select which one of the outputs of a dag or steps template Is passed downstream Expression tank templates, which allow a lot more flexibility around expressions used within side your template And the container set template necessary executor that allow you to co-locate multiple steps within a pod To take advantage of things such as the ability to communicate over local host or shared volumes Now we're still in 20 Oh, hang on. Are we 2020 or 21? 2021, aren't we? And you know, you spend so much time locked down at the moment It can be hard to remember We're looking forward to some new features coming up. So we didn't talk much about this but earlier on this year We did do a survey to understand what our users wanted We've got some really interesting and useful feedback from that And one of the ones that came back is more capabilities for working with python A lot of users use a python and are familiar with it and don't really like working with a yaml that is so ubiquitous within the kubernetes ecosystem We're also looking at the ability to To run workflows that span multiple clusters and multiple namespaces So for example, you might have a build job that builds a container in one cluster You want to run that in another cluster and then deploy some additional information in another cluster But you have to all specify within inside a single workflow And we think that'd be really useful for both machine learning and infrastructure automation use cases We also want to look at building a plugin framework that allows for integration Extension things like life cycle hooks or the ability to write your own templates We talked a bit about container set template today in the new data template The plugin framework can actually allow users to build their own templates to do whatever they want to do And we're looking at doing that with a new thing called the http template And finally we're looking to improve the whole developer experience from making it make it easy for people to work within the ecosystem So that's all I have to talk about around New features in version 3.0 and upcoming features in version 3.1 I'm now going to pass it back over to henrik to close the session Yeah, do you want to jump to the last slide? Let's see. I think there's one So I just want to thank you for for stopping by and listening to this. I hope You gave a good overview and got excited about all the new things that are coming in 3.0 as well as its sneak peek on 3.1 so There's some additional information available in the release blog that's available on the cncf blog There's also the argo website that has more information about the project yourself how to get it And we also have a very active slack channel So there is a link here to help you join the slack channel and join the conversation There's a lot of good Information being passed around a lot of good help in in a slack channel So please check out the website Check out the release blog if you want more information about what we just presented on and Come and chat with us on the slack channel if you want more information Thank you everyone


All right, welcome into another edition of the fan duel hurry up I'm Joe Ranieri joined by Jim Sonnis of number fire and today We're gonna take a look at something Well has been in the news quite a lot lately that being the NFL and win totals and Jim Before we dive into a few teams here. Tell me my friend am I crazy? This is of the top 40 free agents since the new year opened here. There's only like three or four guys left It's been unbelievable the amount of transactions. We've seen thus far in the last week week and a half Yeah, it's not even just the free agents But there have been significant trades too, especially if you're in an industry like us where you're talking a lot of fantasy football Like seeing guys like to define digs Deandre Hopkins and David Johnson all on the move It's been a lot to talk about so thankfully we've had the NFL here to discuss why everything else is on pause That's been a nice little break for sure But eventually things are gonna dry up like you said not a lot of free agents left to sign So hopefully they will find another way to keep the conversation going for the next couple of months All right, so let's talk some win totals here and we'll start at the top. How about the defending champs? Why don't we look at the Kansas City chiefs looking at an 11 and a half win total At almost even money at this point with our friends at fan duel What are your thoughts on Kansas City making it to a double digits how we say this win total in this season? Yeah, their number is 11 and a half right now You can get plus 105 on the under and there aren't a lot of situations in betting NFL win totals Where you will get plus money on a team winning with a win total 11 and a half That just doesn't happen all that often so basically what you need in order to hit the over here is Kind of an outlier and so I'm gonna go with the under here on the chiefs at 11 and a half because it is plus 105 Just because this situation seems too good to pass up the NFL season There are a lot of things that can happen teams can just underperform They can have a bad stretch of games. They can have injuries, etc. Etc. So getting a team under at 11 and a half I think is pretty attractive and it's also not exactly the easiest division either the Denver Broncos have made a lot of games on Defense the Las Vegas Raiders have a couple of first-round picks the Chargers In flux with their quarterback situation right now But at least they have a baseline with Tarad Taylor there and the rest of that team especially the defense is loaded So the chiefs are an awesome team I expect Patrick Mahomes to continue to be a dominant force in this league for a very long time But getting them at plus 105 on the under at 11 and a half wins is too good to pass up So I'm gonna go under here even though I do like the chiefs overall for the 2020 season. Yeah It's all about that that Super Bowl curse We've heard about so many times before Rams just a couple of years ago How does Andy Reid and the chiefs react? It's gonna be a lot of fun to watch how that division plays out, but they played a team of course in the Super Bowl They beat the San Francisco 49ers their win total is at 10 and a half another tough division What do you think about the 49ers win total? Yeah, the division thought line here is relevant for the 49ers, which is why I want the under on them as well They are at 10 and a half the under is plus 110 so getting some some good juice there as well And I think that the reason that I want to go against the 49ers here Is it's hard to bank on a defense being an outlier for two consecutive seasons? And that's exactly what the 49ers were last year They were second overall in adjusted defense based on number fires metrics and second against the pass now You go an additional year into Richard Sherman's career and potentially we could see some fall off there at some point hasn't happened yet But it could happen at some point and they traded away de Forest Buckner And de Forest Buckner was one of the key forces on that elite level Defensive line that does give them an additional first-round pick in that trade with the Colts But after those two first-round picks the 49ers do not pick again until the fifth round So a long drop off there in the draft still not a ton of draft capital there despite getting that first four to four is Buckner They've also lost to manual Sanders on offense They're gonna have to use one of those first-round picks to address the wide receiver course What you see here with the 49ers is yeah an elite defense and a team that overcame a lot of injuries on the offensive line last year That means that they're probably still gonna be very good for next year But Arizona getting better the Rams still a good team despite a lot of losses there and Seattle It's always lurking so I think this division is gonna be good once again next year Especially if Arizona does make the gains they're projected to make based on what they've done this offseason So under 10 and a half I think that's pretty realistic here a plus 110 for the 49ers if that defense takes any step back We could see them hit this under pretty easily So you know they win 10 wins either they get 10 wins we get the under here So I think I'll definitely take it and bet against both the teams that were in the Super Bowl last year Yeah, it really I they're gonna go if Jimmy Garoppolo can take that next step if he is if he can take that next step That of course many people thought he could It'll be interesting to see how it plays out. But as Jimmy goes. I think that team will go Interesting enough here Jim. There was a lot of rumors about Tom Brady and the 49ers But it looks like he settled on the Tampa Bay box and when we look at that win total It's hovering around nine right now. What are your thoughts on Tom Brady's new team the Tampa Bay Buccaneers? You know, we've actually already seen this number rise from when things open if annual sports book They just opened last week. They were eight and a half There was a lot of juice on the over but now it has gone up to nine the juices now minus 115 I do still like the over there. I was talking to Kevin Cole of pro football focus last week And he said that by their numbers Tom Brady is worth about a win above replacement over Jamis Winston so an additional win there for the Patriots roughly two points against the spread per game with Brady over Jamis And that's a good thing for sure But this is also a good team outside of the quarterback because they've got Mike Evans and Chris Godwin And they also have a better defense than perception last year based on number of fires metrics This Tampa Bay Bucs team ranked ranked fourth in overall defense They were seventh against the past and they were first against the rush by a pretty wide margin now There could be some changes on the defensive line given they have a couple of guys who are free agents But they will be bringing Shaq Barrett back Jason Pierre Paul is back as well a lot of athleticism at linebacker I don't know if this defense will keep up what it did last year, but it should still be a good defense That's a good thing when you have Tom Brady and the weapons that they have an office in addition To a pretty high end or a mid-level first round pick So this Tom Brady move does upgrade this Buccaneers team But I also think they're being uh being underrated for what they have elsewhere specifically on the defense So the over at nine years pretty attractive at minus 115 Yeah, Adamic and so still a free agent a big part of that number one defense against the run last year It'll be interesting Maybe takes a pay cut and comes back to be a part of that Todd Bowles defense A lot of intrigue there for sure now Tom Brady, of course not Resigning with his team the Patriots puts them in a very interesting position too coming out of the afc east a Tom Brady List Patriots team hovering at a wind total of nine. What are your thoughts with them, Jim? Yeah, we're going the opposite here We're going with the under on the Patriots with Tom Brady leaving town But it's not necessarily just because they are losing Tom Brady A lot of it is the same things we discussed for the 49ers where it's hard to bank on a defense being an outlier Two years in a row and the Patriots were actually a hair better than the 49ers based on our numbers over a number fire last year So further uh room to regress for them and they're bringing a lot of guys back So I would still expect them to be good But can they be an outlier which is what they were last year? And it's also hard to expect this offense to excel with Tom Brady being gone They could have Cam Newton. They could have Andy Dalton. Maybe James Winston comes to town Those are all possibilities, but that's probably going to be a downgrade from from Tom Brady and this team with Brady last year Ranked 19th in schedule adjusted passing offense They have not addressed the skill position guys on this team all that much so far this all season They will get to kill Harry healthy, which could be a good thing with a full all season for him as well But there are a lot of question marks on offense and there's also the possibility They decide to run this thing with Jared Sidderman Brian Hoyer And if they do that, I really really like the under on nine wins there for sure So There are too many question marks with this uh Patriots team from for me to go at the over here So I do want the under it's at minus 110. I think that uh with all the question marks on the Patriots offense Even outside of just the quarterback that is an advantageous number where it currently stands Buffalo will be better the Jets believe it or not will be better. Miami will be better It's going to be a tough division for the Patriots this year as well and speaking of a tough year boy, uh the Cincinnati Bengals well, they've got the number one pick and the number one pick We know Jim is a game changer for a lot of franchises. They have it this year the Bengals What are your thoughts on their win total going into the season? Yeah, I like the over here It's at five and a half minus 110 on the over for the Bengals and They were kind of due for regression anyway because they did decide to roll with Ryan Finley for part of last year And he was not really an NFL level quarterback and they get Jonah Williams back He was their first round pick last year should slot in at left tackle So two improvements there as they just regress and don't have Ryan Finley in the sample and Add Jonah Williams to the mix that is in addition to Joe burrow as well Also, we it's easy to forget but aj green missed the entirety of last year Aj green has now been franched a franchise tagged. He said that he will play under that tag for this year So you give Joe burrow Jonah Williams and three really quality wide receivers? I'd expect this offense to be pretty good. They've also made additions in free agency This is a Bengals team that never makes moves in free agency, but they have done so thus far DJ right reader and trey wanes coming over Probably overpaid for trey wins a little bit But still an upgrade of what they had last year and again They get Joe burrow and the 33rd overall pick in addition to burrow with the first pick in the second round So a lot of gains here for this Bengals team. We're getting A good number here at five and a half I think the Bengals should be better than that this year And I think that uh, Joe burrow will be a part of that But the other additions of aj green Jonah Williams and on defense are the main reasons that I'm drawn towards this number And of course a lot of people still wondering what is this coaching staff going to be like and can they take that Talent and have them take the next step So fascinating year ahead for the Cincinnati Bengals with the number one pick in the draft coming up next month And you know finally another team a lot of people thought we're just going to hit the reset button and Blow it all up and start from scratch But they go out there and spend an awful lot of money on a new quarterback named teddy bridge water Also at five and a half wins. What are your thoughts about the carolina panthers win total this year? Yeah, I've been seeing a lot of things you were referring to where people expect this panthers team to potentially tank For trevor lorence next year But if you look at the things that they have done so far this office is not just free agency It kind of goes counter to that they traded their guard trey turner And if they had traded trey turner for draft picks that would have been a signal that they may have been trying to tank For trevor, but instead they got a really good left tackle when he's healthy and Russell o'cune Back in return that is not a move you make if you are trying to tank because Russell o'cune He only played six games last year for the chargers But when he was healthy he played really well and that gives the panthers Good players at left tackle center and right tackle so that offensive line Not as bad as perception you bring in teddy bridge water teddy brings a pretty good floor to him question marks about the ceiling for sure But good skill players around him with Curtis samuel dj more and christian mccaffrey, obviously There is some talent on this offense And I think there's more talent here than he would expect for a team with their win total at five and a half I think that this is a good spot for them. They do still have some high-end picks as well so The ability to address some of the players they've lost on defense specifically james bradbury and lou keekley I think they're gonna make they can make some games I think that this number at five and a half is based around the The speculating that they may tank But their moves thus far this all season have not been the Those of a team that is tanking. So I want the over here on the panthers. It is minus 120 at five and a half So, uh, definitely not a uh, not an even money thing by any means But even at that number I still think that what we've seen so far from the panthers this all season Is a team that's not trying to actively lose games next year All right, I'm gonna throw one final curveball here for you speaking to the panthers bridge water in cam newton out Better chance of landing cam newton patriots or the redskins Based on the bookmakers right now. They're saying washington and I think that's really interesting with north turner Or with north turner, but uh with ron or vera being there. So it's definitely an interesting proposition I just want to see cam play. I don't care where he is I just want to see him play because cam newton went healthy Is one of the most fun to play fun to watch players in the entire league So I don't care where he goes. I just want to see him play joe. That's that's the one request I have here, but I think uh based on the way the bookmakers are seeing it Washington does seem to be the more likely destination Yeah, and I can't wait to see the fashion shows both before and after the games with cam newton It is always good jim son. It's number fire. Thank you very much for stopping by on joe and airy This has been another edition of the fan duel hurry up. Stop by and see us tomorrow. Be well


Dude, I can nerd out when I get to see Blackbeard's crew. At least you can knuck... OOF AAAAAH! Oh no, deals me away! You're doing... Bro, this is Blackbeard's crew. There's no way he can 1v4. Damn, we got a throw down! Okay, maybe he can 1v4. Blackbeard, you're disappointing on another level, bro!  He just sucked in the old town.  Oh, shoot! Oh my gosh. Oh no, am I... Oh no. God! It's beautiful! That is so cool, man! Damn!


So in the previous video as we talked about algebraic functions and how if we're given x we can find y and if we're given y How we can find x in the algebraic setting now an important question related to you know finding x and y coordinates is What is the total set of x coordinates? What is the total set of y coordinates? That is how does one find the domain in range of an algebraic function? Well, it turns out the answer about range is a little bit tricky It kind of pins on the family of functions and as we study different families of functions this semester We'll be able to answer questions about About range forthcoming rides of polynomials. We apply one thing radicals will say another thing exponentials bill say another thing So we'll approach questions about range on a future day. That's that's a little bit more sophisticated for Two too too much for us right now But we are in a position where we can talk about the domain of a function And so when a function is defined algebraically, we're gonna follow the following domain convention If a function is given by an algebraic expression and the domain is not stated explicitly So this would be like saying something like well f of x equals 2x plus 5, you know They tell you this is the function, but they don't specify what the domain is If ever I want to specify the domain I can tell you like oh, okay The domain is when x is greater than equal to 0 I can make that Specification or I might say something like the domain of f is Equal to 0 to infinity same thing right there. I could specifically tell you it But if it's not told if the domain is implicit that is we're just supposed to infer from the formula What the domain is we follow the following convention the convention is that the domain is the set of all real numbers For which the expression makes sense and defines a real number in its unsimplified form And so if a function of course is given by a graph or table then the domain is All those numbers represented on the graph or table. We've talked about that before but for an algebraic function We have to then infer what makes sense here for given the formula So assuming x is a real number. Is there a real number that we cannot multiply by 2? The answer is no we can multiply any number by 2 Can we add 5 to any number we can and so as such there's no restriction on the real number x right here so the domain would be all real numbers which an interval notation You'll write this as negative infinity to infinity right here or as a shortcut for that you can write this double r This is short for all real numbers and for many functions. That's what it's going to be We want the domains to be as big as possible And so we just want to infer what's the largest doing possible given this formula now at this time in the course There's only going to be two Concerns that are going to show up that might restrict the domain of an algebraically defined function though We some more we add later, but for the moment We have concerns of the following nature if you take the square root of negative one or in fact if you take the square root of any Any negative number this actually gives you an imaginary number. We'll talk about imaginary numbers more in the future When we have we will have a lesson about complex numbers. What have you but if you get an imaginary number I should mention that this is not a real number and so this would Violate the domain convention because the domain convention says that the number that comes out has to be a real number So if you take the square root of negative, that's not going to be a real number So it's not going to work. We'll we might relax that condition later, but for now Another problem you have to look out for is division by zero Now unlike the complex number system division by zero really cannot be resolved The consequences of allowing division by zero are too strenuous. It would destroy our algebra I'm not kidding about that.  Let's pick our two favorite numbers, right? I'm looking at the clock We are four minutes into the video and today is let's see my calendar is September 1st So I'm gonna prove to you. We're gonna prove That four equals one, right? And so here's here's the proof of that statement start off with something which we know is true zero equals zero great No one could deny that one Next well zero is the same thing as zero times four because anything times zero is four Sorry anything anything times zero zero right and zero is also zero times one Great, so still true nothing wrong with that, right? but take this equation again and If we were allowed to divide by zero then we could divide both sides by zero and we would get We would get Four equals one la la la la and then the arguments over with right So we've now proven that four equals one using this erroneous arithmetic of Division by zero if we allow division by zero we would have to we would have to allow that four equals one But why just stop there? We would have that any number is equal to one We have any numbers equal to zero and now we have a very depressing number system Wouldn't we you wake up at zero hundred hours in the morning you look at your bank account You have zero dollars you go on Facebook You have zero friends you have to drive to school and you're going zero miles per hour It would be a very impractical number system where every number is zero So if we want there to be non zero numbers We cannot allow division by zero and it's because of this dominance property of zero when you multiply by zero You always get back zero and because of that we can't negate multiplication of zero which is what division is all about So look out for division by zero and so using the domain convention Let's look at the following functions and determine what their domains would be So when you look at this first one, this is an example of a polynomial function You have some multiplication five times x exponents x square which just means x times x you have addition And so this doesn't have any of the problems. We we have to worry about there's no square roots involved There's no division and so by default your domain the domain of f right here is going to be all real numbers Negative infinity to infinity written in interval notation. That's all there is to it Now with example b right here the function g of x is defined as the square root of x plus 2 Because this is a square root function We do have to be cautious that make sure that x plus 2 is not negative And so because the radicand that's the expression inside of the radical there It's not an evolution of radicator or anything like that. The radicand has to be non negative So we have to solve the inequality x plus 2 is greater than equal to zero We'll talk some more about solving inequalities in the future, but this one's pretty mild It's very much like solving a linear equation You just have to remember to flip the sign if you ever multiply or divide by a negative So subtracting 2 from both sides we end up with x needs to be greater than equal to negative 2 Now this is greater than or equal to notice if you take x to be negative 2 G of negative 2 is actually equal to the square root of negative 2 plus 2 which is square of 0 There's no worries about taking the square root of 0 the square root of 0 is itself 0 Which is a real number negative 2 is inside the domain and in fact the domain of g right here is going to be an interval notation negative 2 to infinity and make sure that negative 2 is included in that you want to bracket Because evaluating the function negative 2 does give us a real number there So when you have square roots, you're gonna have to make sure that all radicands present are Non-negative on example c right here We have x over x squared minus x because this is a fraction in fact This is what we call a rational function. It's a ratio between two polynomials We have to make sure that the denominator is not equal to 0 That's the thing that gives us pause right here And so by doing this we basically want to solve the equation x squared minus x is not equal to 0 But of course solving the equation not equal to 0 is basically the same thing as solving equal to 0 So if you want to solve the equation equals 0, that's fine You'll you know remember that the answers you find will then be the things not in the domain So if you want to solve this one, uh factory makes a good technique It is a quadratic polynomial So you could like complete the square or use the quadratic formula Again, these are all techniques that we will review in the future as we study in depth more about quadratic equations But it's very likely you've seen some of these things before By a very simple factoring technique you can just factor out the greatest common divisor between x squared and x You can factor out the x that leaves behind an x minus 1 And that the only way that a product of two real numbers is going to equal 0 is if one of the factors was 0 This would give us that either x equals 0 or x minus 1 equals 0 Which solving the second equation tells us that x equals 1 These are the numbers 0 and 1 will make the denominator go to 0 And these are the only numbers that will make the denominator go to 0 And therefore these are the only numbers that are forbidden from the domain So the domain of h we might say something like the following We want all real numbers x such that x is not equal to 0 or 1 We can describe the domain using the set builder notation Because it's much easier to list the two exceptions than it is to list every number that's allowed But it but an interval notation this would look like negative infinity up to 0 parenthesis union 0 to 1 Again, parentheses here and then union 1 to infinity You could write an interval notation interval notation that way And we're just saying we want all real numbers except for 0 and 1 Do make sure you put parentheses by the 0 and the 1 because they are not included in the domain Because it makes the denominator go to 0 and also make sure you put parentheses by infinity and minus infinity because as those are real numbers They cannot be included inside of the domain only numbers are allowed there real numbers And so as one last example of this domain convention Let's find the domain of the function capital f of x equals the square root of 3x plus 12 Over x minus 5 Now one thing I do want to mention that you'll notice here This is capital f as opposed to the lowercase f when it comes to mathematics Mathematics is case sensitive if I write a capital f that does not mean lowercase f And if I were a lowercase f that does not mean capital f In this situation really wouldn't matter if I call it lowercase f But make sure that you do use capitals when you're supposed to and lowercase was when you're supposed to Because there are many situations which the lowercase and uppercase letter of the same Same alphabetic letter could show up in the formula together and those mean two different things So do pay attention to that Now with this function d capital f right here for example d there's two potential problems The first one comes from division by zero, right? So if you look at the denominator, you have this x minus 5 We have to figure out when x minus 5 equals zero will add 5 to both sides. You get x equals 5, right? And so this is the exception. We don't want x to equal 5. That's one problem with the domain Another potential problem from the domain comes from the radical in the numerator, right? We had the square root of 3x plus 12 So that concern means that if we're going to be a well-defined real number We need to take 3x plus 12 and set it gradient equal to zero and solve that equation minus 12 from both sides We'll write that out there. So we want us to track 12 from both sides The 12s cancel on the left hand side This gives us 3x is greater than equal to negative 12 divide both sides by three The threes would cancel on the left hand side. We then get that x is going to be greater than or equal to negative 4 And so we have sort of two things we we have to consider in order to get the domain x has to be gradient equal to negative 4 to make the numerator a real number And the denominator cannot be 5 Otherwise we divide it by zero and so when we put these things together, right? We have to take we have to take the intersection of these things, right the intersection We have to look at the overlap between x is greater than equal to negative 4 and x doesn't equal 5 And so this tells us that the domain of capital f is going to be negative 4 Up to 5 parentheses. So we have a bracket on the negative 4 a parenthesis on the 5 union 5 to infinity We're again, we have a parenthesis on the 5 that's because 5 is not allowed inside the domain But negative 4 is allowed in the domain because negative 4 would make the numerator go to 0 And it would make the denominator go to negative 9 0 over negative 9 is 0. That's that's a number there That's that's not a problem. And so this shows us how we can determine the domain of an algebraically defined function And so square roots of negatives and division by zero the things we have to look out for Like I said, there will be some problems that will appear in the future as we learn about some other function families But for a good while these are the only ones we have to worry about as we try to determine the domain of an algebraically defined function