Hey everyone My name is Ryan lemur. I was here in 2014 for the first Foucon and This is my first time back. So it's great to be back at the time I did a code jiggle bandie the first code jiggle bandie with Dovel de laul and Incidentally today is the second one. He's doing one with Morton Cromberg. So be sure to to catch that It's gonna be great My talk today is about Haskell and making sense of the type system. It's a talk about my experience of going from What I would call core Haskell or Haskell 98 To the kind of Haskell you will find in modern code bases and there's quite a gap so I Came across Haskell about 10 years ago Someone just showed me a few lines of code and asked me if I knew what language it was and I got hooked and Read a few intro books Gave me a good education in Functional programming. It's a great education in functional programming. I really recommend it for that but Then you kind of hit the doldrums. There's a big vast kind of Sahara desert between the functional programming and core type system of Haskell 98 and the kind of Types and use of the language that you will see in modern code and So I haven't used Haskell for any longer than kind of a six-month period at a time So it's like an old friend that I don't get to see often enough But it's been a long time enough to to Look around it a bit. So I was stuck and in 2015 I wrote this book It's a little book some way between a little book and a long tutorial layered from Haskell 98 into More modern aspects of the language I finished it almost to the day two years ago and I only read it read into it again recently for for this talk and It kind of still stands. I'm I wrote it when I was two years more ignorant than I am now about these things and I Would recommend it if you find yourself in that gap between Haskell 98 and wanted to make sense of Type systems you see out in the or uses of types that you see out in the wild I When I read it now, there were a few things that kind of I had to raise my eyebrows a little bit about and that I would have said differently But I can assure you nothing will scar you for life In that sense. So I would still recommend it today's talk is really pitched at you know Haskell is not a broadly used language and So I've pitched it I've tried to pitch it on pitch it on a dual level where Where if you don't know Haskell at all you can hopefully still make some sense of it in all statically type languages you get this fact that types classify terms so terms of values and types Families of values you could look at it like that so This is all pretty obvious Kinds of types and this is the type. I'm going to just carry around a little bit in this talk. So it's a maybe type maybe something means It's a way to express an eligibility or optionality of a term so maybe char could be just char a or nothing and That's all good. The Haskell type system is amazing if you haven't seen it before if you're used to Java or Other statically typed languages It will blow your mind although ten years later. It will blow your mind less those languages have really drawn in a lot of The great things about Haskell some of them But still in Haskell types are not first-class so You can say x equals hello, and this is true for any statically most statically type languages You can say x equals hello, but you can't can't say x equals to the type string Compiler doesn't know what you mean. You can do equality on Terms, but you can't say if x equals type string You can pass Values to functions, but you can't pass types to functions You can't return types from functions. And so while the functional aspect of Haskell is very High level in the sense of type of you know functions of first class types are not and So the question then is what classifies types, so I'm going to just dip in and out of some code as we go along There's the maybe type, and I've just rewritten it there as Maybe a that's the generic type Is either nothing or just something and so I can ask for the type of just some string and the interpreter says it's a maybe string a string is the alias for list of char and But I can't say what is the what is the type of maybe It doesn't make sense Because types don't have types in in a literal sense here But I can say what is the kind of thing so I can say what is the kind of integer? And it'll just say star It just means type any type. It's a type kind of string Is just a type star Kind of maybe string is a star so That's that's quite different to the term level if I say what is the kind of maybe Well, that's a star to a star so now it's saying I'm maybe as a type that takes a type It's a type constructor, and if I give it a type then it returns a type So maybe it's not a type technically it's a type constructor, but maybe string is a type If I look at type classes in Haskell type classes in Haskell are like interfaces in similar to interfaces and so here I've got a type class show that Defines the interface for to string essentially for any type and if I ask what is the kind of show? It says star any type Show takes any type and it returns a constraint so Kinds classify types to some extent in a very blunt way I Can for instance not say maybe maybe because maybe takes one type But maybe his type is higher order kind so While the kind system is very blunt it just has these Arity specifications. This is just an arity of a type So one type this is a type that takes a type you can get types that takes multiple types And constraint so these are the only three types mainly that The Haskell type system can three kinds that the Haskell type system can distinguish so we can already start seeing cracks in the facade here The kind system is untyped the language gets a bit tricky. So you could also say it's not kind safe It's only arity safe. It only speaks of how many Is it one single type or is it something that takes a type or is it a constraint? So I want to show you an example that I'm going to carry right through this talk and It's So, okay This is what happens when you do dry runs of the code before you speak I warn you against that So I just want to show you the list type That you all know that that is the algebraic data type form of a list a list is a empty list Or it's a cons of something to another list And so there is a term of a list. I want to do something a bit more interesting. I want to create a sized List so a list that has its size in the type and So here's a data type vector na N is going to it's a type that describes the the size of this vector and At this point it's not going to help me much if I ask what is the type of This term it will just say it's a vector n string and so will this one be So n is still not a very useful thing. I want to do something like this I want to say well null is this is a type of a vector zero It's a it's an empty list, but I can't do that because Zero is a term. It's not a type. So I need a type and so the common way to do this is Something called Pino numbering. It's an idea from the 19th century actually It's just a recursive way of describing natural numbers. You start with zero One is the successor of zero two is a successor of that and so on And so these are two algebraic data types zero and successor that we're going to use now in our type vector so I can say Null is vector of type zero and This one is a vector of size one So we read it like this successor of zero is one successor of successor of zero is two I'll just speak like that from now on but this this is still quite Wild and rough because I can say successor of false and the compiler is perfectly happy with that It was show me successor of Boolean So how do we how do we get more precision with this type? That's where generalized algebraic data types come come to the rescue and really it's a very simple idea But it's got profound Implications and it's used very broadly you literally cannot leave the house without GDT's if you're working in Haskell So instead of the Algebraic data type. I showed you earlier. Now we have refined Types for this so I can say no is a type of zero vector of size zero and This is a bit more interesting cons takes a type and another type of size n And it returns a vector of size in plus one Which is quite amazing because now the type can if I ask what is the type of this? the Interpreter can tell me this is a size list of size one And here's one of size two so as you're using the type constructor cons the the data type constructor It's building up on the type label. It's keeping track of the size of your list And now I can't do things like What is the type of? earlier, I faked the size of the no list and now I can't do it because it's the compiler will tell me I wanted a Type of this but I got type of that I want a type of zero It should be zero, but I got a bull so things are getting a bit more kind safe Type safe And so now I can do some things with this with this type I can do Vector I can write a more refined zip so I can say if I zip two sizes two vectors of the same size I should get one of the same size and in fact if I then try to zip things of Different sizes together. I will get a type error and it says I expected this type vector to Char, but I got vector one char. So the type system is now Catching a whole lot of things that you would typically have to get at run time or have preconditions and post conditions for Similarly if I want to write the tail of a Vector I can now say in the type well tail only makes sense for something with the size of At least one so successor of n is at least one because It's either one or more And in fact if I try to and that's what we got the error for earlier if I try to Define a clause for the null a Case of of vector. I I'll get a type error and it will say I couldn't match this I'm looking for zero here, but you're giving me I Don't have this function doesn't work for vector zero So that's quite interesting that the type system can start doing stuff for us that Just not possible otherwise well possible with Actual term level code So that's all good. We've solved vector a bit, but the successor I Can still butch I can still shove any type in there and the compiler will be perfectly happy with that so Let's just look at what we've done there the ADT the algebraic data type For that case this n was free I could just put any type in here, so it wasn't very type safe similarly there. I could just shove any junk in there and Compiler couldn't really help me With a generalized algebraic data type. I've essentially taken this This is our vector with the terms null and cons and I've connected each term now here with the type Cons is at least one size one null is always size zero and So I've constrained that n in the vector n by using generalized algebraic data types But what if I wanted to do something now like? Append so I Append some a list of size n and m and The resulting type should then be n plus m, but I can't use plus Regular plus because regular plus is defined on term level and so I but I want to write Conceptually something like this. I want to write add That's a pretty straightforward Haskell definition of plus in that sense, but what with the What with the signature of that type level function look like so how you do that in Haskell is with something called type families and I'm going to use interchange the words type families and type functions, but I will show you why they are called type families so there's our Zero and successor and The way you would write a type family a type function you could think of it for now is in this pretty awkward syntax type family add equals and then the The clauses of what would be term level definitions on our type instances, but other than that on the right side of this Syntax it looks pretty much like a function that only came in 2008 actually when I when I met Haskell and 2014 Pretty recently when I was here last This closed type families syntax came we can write a function like this. There are quite good reasons to to use either for different reasons, but I'm going to use this syntax from now So now I can ask things like what is the kind of add What is the kind of the add function and it says it's something that takes a type and another type and returns a type What is the kind of zero? so now that just takes one type because one type has been Essentially bound so it looks like but like carrying on a function level and I can do that And then I must just show you Something very trivial, but actually quite interesting if you haven't seen it before is if I add one plus one I get Just says well, that's a type of star, but there's a nice way to just ask it ask the interpreter to Actually do the type level computation for me And so I'm going to do that and learn we hold there. We go one plus one equals two And this is now type level arithmetic. It's happening on the type level at compile time Martin Thompson spoke about efficiency earlier by the way and When we talk about type level computation, we're talking about extreme in efficiency So I'm going to ignore that for for this case, but it has actually great applications, but not for high-performance computing So let's use this type function on an append so there's my old Algebraic data or generalized algebraic data type and I've gotten a pen function there that uses this type level add function and It's interesting to note here that Again, the the function definition is completely oblivious about this happening above it on the type level You just define a pen like you normally would But on the type level through this generalized algebraic data type constructors It's carefully or it can't do it any other way. It's working out what the correct Type is and it's doing this type level arithmetic in the background in that way so That's all cool, but if I add I can add junk. I can say add into bull and Let me just show you if I ask it to Resolve that it just says if you add into bull you get into bull That's fun to show the the difference between type families and type functions so Just to recap we had we could do proper type arithmetic here, but we could Do whatever we like with the types. There's no kind safety And When we added junk types The compiler didn't complain because essentially what's happening is type families are not Actually functions. There are equality axioms. So if I say add zero of successor a successor It's essentially compiling that to Equality axiom and it's saying if I see add zero to successor I can reduce it I can simplify it to the right-hand side and so that's why when you add into bull It just leaves it as that because it has no way of simplifying it. So this type arithmetic while it looks like function applications actually just this play of Solving equations and on the compiler level So we with our generalized algebraic data types solve this Kind safety issue with the n in vector, but we still have this other problem So with successor I can still put anything in there so It would be nice to do this kind of thing if I could define a unifying natural number type that Unifies zero and successor and then I can say Those two are natural numbers of kind net and then I can start constraining things more And so how you do it is actually when I saw this first I thought Well, that's pretty crazy, but let me tell you about it. It's a good hack. It's a good I don't know if it's a hack or a great technique, but What you do is you define a regular type not data net with terms zero and successor and then you promote it You shove it all up a level you lift the whole thing up a level. So not becomes a kind zero and successor Become types and if you want to distinguish between types and terms you can always use an apostrophe like this To make it more clear even what's going on I can put I can promote Boolean data bool is just true and false true or false And I can promote that to kind bool and types true and false. So why on earth what I want to do that Let me show you some applications of that. So Type promotion is a I haven't mentioned these things at all. These are language extensions So Language extensions are compiler specific. You won't find them in the language spec at all And that's part of what makes it a bit bewildering to go from Haskell 98 into real-world Haskell Because language extensions are broadly used and they're not defined and documented in the same way as you would find them Find the Haskell 98 kind of core and the only way to really learn about them properly is to read the papers Or that book I wrote Although that just covers a small number of them So there's our net data type. That's a regular data type with terms zero and successor and But now I can actually say If I ask the type of zero it will say well, that's a natural number but if I ask the kind of the Type zero zero is now the lifted term zero. It will say that's a natural number and So now my type level Function is using these promoter types I don't even actually have to put the apostrophes in the compiler can completely generally figure out Oh, you mean the type or you mean the term and Now if I tried this junk add I Get a type error. It says I expected kind net But all I got was this You gave me something else You can only give me types of kind net which are zero or the types zero or successor So now we're getting more type safety kind safety. Sorry the bull Example I was showing you Now I can define a type level thing that says is this type zero and Is there is the type zero? Zero the answer is type true So we've got all the regular things we know happening now on a high level And now I can have increased kind safety here with Vect n and I can be explicit and say That n I mean to be The natural number kind so I'm constraining it to the two two types zero and successor That's all great, but there's still limitations because if I wanted to write a length function for this vector I Can't do I just can't do this. I can't say Vect n a Gives n because that's exactly what you would expect It's just just take the n out of that type and give it to me as the result Can't do that because you can't return types for functions raw types and But I can do this I can say well, okay return a natural number This is now a type on this context in this context and But this doesn't help me much. I can put a bug in the definition there and say The length of null is one and the compiler is totally cool with that because it's not connecting these two dots and That's really what Dependently type programming then is about is to say I want this type to depend on this type I want types to inform Future types for the downstream in a in a type signature So let's Let's soldier on and see what that might look like so with our type promotion now of NAT I've got kind safety Vector and a the end is kind safe zero and successor and the end and successor all good and unified by this type, but we still don't have Dependent types, so I can't have You saw the function I showed you length But another example is if I take just a normal replicate Function that we use quite generally on the term level Give it a number and a term and it will give you a list of a size of that number of that term So I can't do this. I can't say well give me something that takes a natural number and returns vector in a So either way, I can't have this. I just can't have this dependency and the way you hack it and here I'm going to just The area is gonna get a little bit thin here if you don't know Haskell But I just want to give you the gist of the idea You after we've promoted this type We actually mirror it again on a lower level And so we actually write a rapid type regular type to wrap that type of that kind We have regular terms the s is for singleton. This is called a singleton pattern And so we bind regular terms With types so using generalized algebraic data types again. We're binding terms with types and Singletons are at first look like a terrible hack and then the more you look at it It's very ingenious the way it uses the type system and so on but it's a hack So let me show you what that looks like And this is our last little code excursion. So there's our natural Number type and I'm using data kinds. So everything will be promoted Everything that can be promoted will be promoted there's my type function add and My type vector and here's the singleton type. It connects zero to type zero Successor to type successor and now I can write my length function like this I can return a wrapped type with a singleton and I can ease it's easy to define and I can now actually when I if I do If I want to define the length of null is one I'll get a type error and because the the type system is not connecting the dots I've given it a way to To to let one type depend on another one I replicate function Similarly, I cannot take a wrapped natural number and return a vector of that size and We we've got dependent typing and something to note here is on the left-hand side while I'm pattern matching on terms those terms because of the singleton map morphically to the types and so when I pattern match on the term level I'm actually pattern matching on type level So this is dependent pattern matching fake but it is so and It's just want to show you this type signature here If I ask what is the type of the partially applied function there of replicators zero it will say It's going to take whatever type, but whatever you return is going to be of size zero Singletons, I've now just written one by hand, but there is a singleton's library and this uses template Haskell metaprogramming in Haskell It uses a template splice there and Now I can just define It's so you can think of it as like a macro and in that macro I'm just defining regular term level stuff just defining the natural number that you saw earlier and in regular ad function and this will actually Promote be promoted. There'll be a ad function on term level. There'll be a singleton version of it with the wrapped kinds and There will be a kind Type-level function ad so it will generate all of that and it will generate the singletons and so on and There's our length function now and the subtle difference there is is that We use singleton there instead of s net But singleton library does a whole lot of other things for you and it starts making more interesting things possible So I can actually if you think about the length of vector Why should I even define that because it's in the type So if I give you a list that's the whole point of the size vector if I give you a size vector I shouldn't even have to Implement this the type system should implement it for me Because now this definition. I'm just walking the vector and doing it the hard way So how you would do it and here I just want to show you really some crazy Don't take it in my real point is look at how messy and syntactically noisy. This is but I can actually Define in the in the way. I can ask the compiler to just grab the Number out of the type and this is the syntax for that and But now I'm still working with singleton types wrapped natural numbers and so I can Simplified some more with some fancy footwork in the singleton library. I Just want to show you how messy it gets with that slide and that's the end of our code so faking it gets pretty messy and We would it would be nice if you could you could easily imagine something more like this where If I just cleanly ask the compiler just grab that end out of there and return it So Haskell is absolutely heading in that direction in fact, there are experimental extensions now that go well towards this it's still Razor's Edge at this point in 2015 Guy Richard Eisenberg under the supervision of Stephanie Byrich who is a big Haskell player Put a rotor thesis that actually shows exactly how to make Haskell more dependently typed There's a lot of work to be done and It's already somewhat later than I expected after I read that So it's expected that in Haskell nine Things will get more like that and we will really be freed from Hacking with singletons But why would we bother with us all this? Type level programming. There's a lot of practical Implications so append you saw but also look at something index something. We've all written a million times It would be nice to constrain the type of the number you get in So that you don't get out of bounds errors so that the type system can actually well You will get out of bound errors if it's out of bound, but the type system will prevent it You don't have to put preconditions in your code Transposing matrices, it would be nice to say Mn goes to Nm And if I take something from a list It would be nice to be more precise about what the sizes of those vectors are Another thing that I haven't gone into at all here is printf print the print function is famously difficult in Type language like Haskell because the string informs the Types and even the arity of the function and so that's you can't do that at all with regular Haskell So that becomes possible with dependency type programming Also, you this is a very pervasive thing of where we have to write Multiple versions of functions for multiple arity that kind of thing can get nicely unified with Dependently type programming so Idris if you've ever seen Idris you might have thought why are you going to all this crazy trouble? Because that's all you have to do an Idris all of the Everything I all the jazz I spoke about Is a non-event in Idris? I can just write type Types in terms type term level function I can do that I Can do that the types in terms are all unified in Idris Idris is a is a Haskell like Language and in fact how you install Idris is as a package into Haskell So Idris is kind of like this Beautiful shining polished gem of where Haskell is heading Although Haskell will never quite reach it There are other dependently typed Programming languages fully dependently typed Coke is the oldest one in 1984 very old precedes Haskell by good well few years and Coke by the way in 2013 and won this ACM software system award Almost 30 years after It was born Other winners of that award are TCP protocol Unix tech typesetting system Worldwide web protocol, so it's in good company, and I find it very interesting that 30 years later This is it seems that the time has come for this in a different way It's been around and it's been used in academia for a long time, but it's There is a crossover feeling in the air you can really feel it's It's it's beginning to happen now Idris Coke and Agda are total languages what you call total languages, and I'll explain to you now Idris is Partially total, but basically what you get is You move from regular programming into what we would call proof systems, so totality is worth mentioning The moment we have type-level functions We have compile time computation and the moment you're computing You have the whole thing problem. You might have things that recurse and don't don't get Don't get solved You know doesn't terminate and so you move the Turing halting problem to compile time from runtime with the penitly type programming And so this issue of termination is a very big thing So how coke and Agda and deal with that is they their type systems are such that they Enforce totality so totality means the type systems are so sophisticated that the compiler can can enforce That you cannot write recursive functions that will not terminate and how does that work? Well, you can actually what it does is it tries to always prove that if you do have recursion It converges every step converges and so that it will converge Obviously that limits the generality of the language, so that's why we don't use coke and Agda for everyday programming Idris is Somewhere in the middle Idris can prove totality for a large class of Functions very amazing. I never knew that that was even possible before I came across these these languages And the other issue that's really worth looking at here is this The curry if you've heard of the curry Howard correspondence. It's this idea that Type level term level is isomorphic everything you can define in a lambda calculus You can define on on a type level and vice versa Haskell curry Actually in discovered The curry Howard correspondence the first he was the first well him and him and Howard, but he actually ever appeared of 30 years saw this in different Aspects it's it's one. It's actually curry hard correspondence Kind of refers to this family of isomorphisms between term and type and another way of looking at it is That whenever you write a program with the type It's the program is the proof of its type the type is the theorem the program of this proof if it if it can If it proves the type With dependently type programming it's worth Thinking about well, how does this related testing testing shows the presence of errors Proof show the absence of errors, so that sounds great, and you would think wow We don't need to test But in practice it's going to be somewhere in the middle There are but I think there are large classes of things that we shouldn't be tasting that we should be proving in with type systems by the way Morton and I were talking earlier, and he was saying you know the only thing types are good for us to prevent you from getting anything done and I I know why he says that I'm not a type junkie, but I have a lot of I Kind of fell in love with Haskell types. I fell out of love with other and C sharp types Horribly fell out of love with that Saw Haskell type system and thought wow. This is a type system. I could live with and then kind of reached its limitations and then I've kind of got Sobered up about that and I must say now with dependently type programming I'm getting a bit drunk again, and I'm thinking wow. This is actually Maybe now is the time for types finally so if you have criticisms about types as I think anyone has who has worked with it also It's worth looking at Dependently type programming. It's a new paradigm that actually shifts the whole ball. It's the whole new ballgame again and all your old criticisms you need to kind of update them and and To keep your arguments fresh, okay, so Just a historical sweep of that Haskell 98 actually was finalized I think in 2000 but documented in 98 T's 2003 type families 2008 Type promotion Very recent 2012 Singleton's also 2012 type promotions went through a few iterations last big type promotion iteration when I was here last very recent this dependently typed Thesis written in end of 2015. I think it was published. So here we are I'm being kind of conservative here. Maybe Haskell gets more dependent before then Haskell will never have totality like Idris does but and you then you might wonder well, why would you not just switch to Idris and Haskell is just a huge ecosystem. It's it's a Working language Idris is at this point much more limited in its scope But I would say for the same reason as you would you should look at Haskell for the most concise expression of functional programming. I Think Idris has the most concise expression of dependently type programming if you want to learn dependency type programming in Haskell you will work much harder than just taking Idris in although Unfortunately, I think you cannot learn Idris without knowing Haskell a bit because it's the same syntax and then I wonder if let's say another 10 years or so if Static typing and dependent typing aren't going to become synonymous because dependent typing even partial is so much more powerful if you feel it if you experience it you will Have the same experience as you do when you feel first-class functions for the first time. It's that same feeling I get It's it's it's like a tectonic shift and So, you know the more I learn the more I think this is this is what I feel about software. I Think we're just beginning. I mean APL Erlang here. These are different universes different laws of physics And we're just about to begin So that's my story. Thank you any questions Complain Yeah, yeah So I don't know actor well enough, but I'll tell you this if you read which I'm which I think we spoke about the other day It sounded like you you have gone into Idris somewhat Idris has taken in Agda. So he's read that last big Right of Agda was 2007 and so it's about then five Plus years later that Edwin Brady took in all of that and so my sense of it is that it's a it's a Modernization, but it's partial. So as you say you can fake partiality in Agda also. So I Think also what? So there's that it's more modern. It's newer which by no means means it's better or anything, but I Think it would have learned from some of those mistakes And I think it would it's because partiality is built in because you don't have to bend backwards to get partiality I think partiality of instead of totality is very important in practical programming because I think Full-proof systems have their uses, but they're not going to be they're not generally useful for most of the things we do So I think that that to make partiality first-class is maybe a big new kind of thing or not a new thing, but a better twist on it perhaps for for The kinds of things we would want to do with it and the other thing I always find interesting about languages is There's there's more to it than the syntax in the language itself because there's this Languages come with their ideas and they're So closure comes with it didn't invent immutability, but it expresses it very nicely And I think Idris expresses type-driven development very nicely. It's a very strong statement of that and so I I factored that into Into whether you should go with this one or that one or that that's my that's what drives my Decisions cool anything else? I? Hope I didn't put you entirely off Dependently typed, but check it out when you want to learn types cool. Thank you


Everybody forced here ripping it 2021 select football hobby 3 box number 34 random teams You can always find these results at latent sports cards calm. I'll leave them up here for a second Thanks everyone for joining. Good luck What's his touchdown interception ratio the past three seasons? I want to know We're also Wilson was on trajectory, but he's not on that trajectory anymore is what I'm saying Are you doing give me hand signals? Dude Jake's trying to call an audible right now He's just want to scratch his face. It's just like oh man. Is that the signal to I don't know Fonte Smith on the club level rookie Eagles Guys silver field of a rookie Pat Freiburg sealers. I don't have time to check the numbers So I'm gonna say no hall of fame for us Wilson right now silver concourse rookie Buccaneers Jalen Darden Elijah Moore field level rookie Jets T Higgins 61 of 99 Jersey card for the Bengals I mean, I guess if they let Eli and ill anybody in from your level silver rookie Jets Elijah Moore Silver Sensation George Kittle Niners silver concourse Matt Stafford Rams Davis Mills club level rookie Texans a blue club level rookie Eagles Kenneth Gainwell Number 39 of 99 silver club level Najee Harris Steelers rookie ETN premier level He's had big two weeks in a row now big games Concourse blue Marshall folk Rams 110 of 199 silver premier level set the Williams rookie Broncos So headlines on you Baker to retire become a commentator.  Anthony Schwartz 93 of 199 rookie Jersey Otto Browns Like is it gonna pay more than be in a backup quarterback in the NFL? Because he's like the definition of like replacement level quarterback Concourse rookie silver Rondale Moore Cardinals purple premier level Mario Cooper Cowboys Numbered 56 of 75 club level rookie silver Josh Palmer Chargers Silver and rookie selections Davis Mills Texans Concourse of a rookie Kylan Hill Packers who's running the World Series Philly's six strike color concourse to a for the Dolphins 160 of 249 premier level silver Rogers Packers Richie Grant rookie concourse maroon Falcons 59 of 149 and a Steelers Alan Fannica Otto 14 of 99 Steelers Justin Fields for me level. All right, let's let's let's heat this break up a bit. Let's see.  Well, I don't mind the ashes if the ashes when that means dusty Baker gets a World Series Andy Ordon would get a ring wouldn't hate it Would just prefer the Phillies.  He looks so good with like I know his numbers aren't great But he's got nobody there and he still looks pretty good, man He's a gamer. He's a baller Nice hit bears awesome rookie signature memorabilia tie-dye. Good stuff. There's a Mack premiere level Silver sensations Mack Jones Patriots Concourse over Sam Garnold Panthers Silver Ian book club level rookie Saints Lawrence on the field level base Yeah, I think it's gonna be pretty good for a while Tri-color club level Nick Bolton chiefs rookie 123 of 149 concourse over rookie Davis Mills Texans Silver Vikings premier level rookie Amir Smith-Marsett Bateman just get a safety Hacker stink dude Concourse blue Lamarge Lamar Jackson Ravens 197-199 premier level silver rookie Dianne Brown commanders Tri-color concourse rookie Trey sermon Niners 170 at 249 premier level silver Alvin Camara Camara might get traded Justin Fields concourse. You got orange concourse rookie Kenneth Gainwell Eagles numbered 49 at 49 a Bucks Levante David Silver auto Silver snap shots shut Jalen Hertz Eagles concourse Silver rookie ojolari Giants It's a heated debate about Russell Wilson Concourse maroon rookie Eagles Devon say Smith 38 of 149 in the end. It's the Hall of Fame. It's pretty arbitrary Club level silver might get sticky dolphins. I Say put anybody who wants to be in the Hall of Fame in it. I don't care Silver Aaron Rogers field double Packers There's already enough bums in there anyway like Joe Namath They need to have the Hall of Fame within the Hall of Fame for guys like Brady and Manning and And Jerry Rice, you know silver marquise Brown Ravens Jersey Concourse of rookie Devon T Smith Eagles with a ding on the bottom of that car Bottom-right ding on it Josh Allen will get Josh Allen's unlike his fourth year's fifth year Think he's got a ways to go He's on the trajectory. You know what why not put him in yeah, just Brady. I'm cool. Just Brady I mean This you call open the the pro football Hall of Actual Fame But we'll put the real ones in there you guys on bar about TO first ballot no matter what Silver premier level Ed Reid Ravens. Oh, no, I'm ours. You brought up bonds and Clemens Berry bonds best baseball player ever Got it's the end rookie club level for the Jags got a Dax mill field level white rookie for the commanders 3035 concourse over my home's chiefs Trey Lance concourse got CD lamb 82 of 99 Jersey card for their Cowboys Jalen reyger first ballot Conqueror sir keeps over or Sean Slater Chargers It's a Vikings legend right there Terry Judy premier level tri-color Broncos 19 of 199 silver premier level Demetric Felton rookie Browns Dude once TO don't once TO did the popcorn celebration and signed the ball. Oh, yeah Just for that alone. That's for his ballot Hall of Fame stuff right there club level tri-color Josh Allen Jags 123 of 149 Dante Hightower Patriots Silverado 40 of 299 Honestly Jags Josh Allen probably the best Josh Allen. He dominated the bills last year Silver sensations Justin Herbert silver field level George Kittle Niners My thoughts on Trevor Lawrence, I think he's pretty good. I think Trevor Lawrence is pretty good You see it flashes here and there they just That team still kind of stinks pretty bad Concourse blue DJ chart Jaguars 14 of 199 concourse silver juju He's a better path protection Got concourse over Zach Wilson Ricky Jets Yeah, they're finally using at the end so they get some running game going they just don't have a field stretching receiving option concourse red Tom Brady Buck and ears 60 of 99 premier level silver Rashad Bateman rookie Ravens Same brown Kyle van Neu kick the 30 yard field goal what? It's there Smith concourse silver escraged rookie Seahawks Yeah, I think it's kind of the same. I don't think he's it. Yeah, I don't think he's as good as Lawrence But at this point like it just depends on their their their organizations Michael Carter rookie purple Jersey auto Jets to 49 Lance premier level Silver Naji Harris selections. Yeah, I would agree Kyle van Neu is probably the best kicker in the league club level silver Randy Moss Vikings Stuart recap So for some more big hits We did have a really nice one though. We got a relic CD lamb cowboys Bengals Higgins Ravens Marquise Brown autos bucks Levante David Patriots high tower Anthony Schwartz rookie Jersey auto Browns to 199 Allen Fannica Rookie Jersey auto Jets Michael Carter to 49 and a Justin Fields rookie signature memorabilia tie-dye big card for the Bears there Thanks again, everybody. We have more football coming up


Hello my fellow sniffers and marlings my name is Marlene McCohen and this is Leo and this is Jersey and we want to welcome you back to my channel Jersey just literally picked up my hand and demanded that I give her a head scratch oh did you hear that small little helicopter well that was none other than my Picasso we're in for it today some good old bird crazy fun today I thought we would go back to old school style and I would give you an update on what it's like to live with my little Leo here now for those of you who are just tuning in let me give you a little bit of backstory yes stop okay well the first thing you need to know is he's a bully yeah okay this is great though we're getting Jersey in a video I have a lot of things to share with you guys first of all I've been doing a lot of vlog style videos and I'm really enjoying those and I hope you guys are too sometimes it's nice to come back here and just give you some updates talk to you guys see how things are going so so here he is Leo for those of you who don't know YouTube actually got me Leo well my fans all pulled together and decided that I should have this wonderful beautiful bird even though I already had five large parrots and we got a lot to talk about about Leo now if you're interested in my first video with Leo I put the link below now although I said I already had five birds I gotta tell you about this guy the first thing I should tell you about is that he is the perfect six bird to a flock why do I say that because I swear five birds would have been at my limit but to have six I would need to have a very special kind of calm beautiful sweet personality and that's exactly what I have first of all let's talk about Leo's plucking those of you who know the Leo story you know that Leo has a little tiny bit of a plucking problem especially in his back they told me at the store that I got him from that in fact he was so plucked they didn't realize that he even had these yellow feathers here coming in his owner died previously so he was probably very upset about that and he still gets a little bit stressed sometimes so although he does it a lot less I do catch him wanting to pluck when I am with the other birds like he's getting nervous right now or when I'm talking to someone else which is a habit that we really got to work on through socialization and making him know that it's okay and teaching him how to integrate with the rest of the flock so as far as this plucking I think there's a lot of things that we can do for improvement I've been giving him his avicom and featherific and I have noticed some improvements but as you see he gets very jealous let's give you a recap in the life of Leo when Leo came home from the beginning he was very very quiet he basically didn't say anything he also didn't really move he loved to be on me he loved to cuddle he loved head scratches he was open to people touching him especially women he's okay with men holding him but they don't really have some of the same rights that women do when they approach him but nobody has the same rights that little girls do Leo loves little girls I would love to know in his back story what it is with little girls now I mentioned that Leo has been very very quiet well Leo doesn't really talk I haven't heard him say anything but then again I kind of have do you guys remember the video I made on the like app where I was able to get some footage of Leo talking kind of arguing but I was upstairs first thing that I ever heard Leo do and he started doing it when I was out of the room sometimes birds like to practice what they know or hide what they know but they want to vocalize but they want to do it when you're not there one thing that really activates this in Leo is actually a constant noise I'm kind of weird and OCD and addicted to hairdryers so I just go turn on my hairdryer and hang out with it but a lot of the times if I leave it on and Leo can't see me that's when he starts talking and he also likes to whistle I do believe that Leo can be a great talker but he just hasn't shown it to me yet what I honestly think from having birds for a very long time about Leo is that he's very shy I think he will definitely grow into a bird that does a lot more and says a lot more than he shows right now but it's possible that it was very traumatic for him because as you could see he's so loving so whoever had him before had to have taken really good care of him so I'm assuming the death of his owner and companion really took a toll on him and that's why he's so quiet right now he appears to be a dream bird like even my mom adores him because he just sits Leo is the type of bird that if I forgot to lock the cage or left him on a stand and came back in four hours Leo would be in the same spot he doesn't damage things he doesn't chew things in fact he doesn't even play with toys I can't hand Leo anything and watch him play with it it's kind of a shame because I want him to be busy and able to entertain himself and like to forage but he's just not interested in anything as of yet I have seen him take some initiative to play with things like pens and if he does pick something up that I really kind of don't want him to pick up but if it's not dangerous I will let him because I just want to see where he's going with it I want to encourage him to get out of his comfort zone overall I would say that Leo's a very shy bird but he's also becoming very very possessive so before where he was kind of friendly to everybody else now he's very protective over me Leo and I spend a lot of time alone together because as you know Leo has been in sort of like a quarantine he's good to go now he doesn't have to be at it but he doesn't really go into the Avery with the rest of the birds which is what I call their preschool or daycare so he spends a lot of alone time with me hanging out making videos pretty much a working bird he's really good at making review videos with me because he just sits and chills and he really is on his best behaviors and therefore with all this alone time he's becoming very possessive what I need to be doing to get him out of that is socializing him more so most of the day I'm just here and there's no one to really socialize with him but every time someone comes over I do make sure that Leo gets some time with them even if it's a guy and someone like my dad I let Leo just sit on their lap I say don't be too invasive with Leo you don't want to make him angry because after all you are a guy but just let him sit there and show him that sitting on strangers is okay actually not strangers but just somebody else it's part of socialization sometimes if you want to socialize a bird you want to make sure that the other person knows that they don't have to touch the bird or come at the bird or try to get a head scratch to be satisfied the bird can just sit on somebody's knee while they're on their phone or hanging out that's what I do with Leo when my dad is in town and when my brother comes into town that's probably what I'm gonna do when my sister comes in I make sure that they actively have a lot of alone time because my sister just loves Leo but Harry my sister's dog is very jealous of him so life so far has been pretty easy and pretty chill he loves love as you could see I'm in love with his big head if you saw me take Leo to Bird Mart he is the best he's basically to little girls what Jersey is to guys which is amazing right Jersey Jersey do you know you're in a video so I basically have these two birds to go with me and meet you guys when you're able to come to my meet and greets then you can definitely meet Leo and Jersey so it's been really cool I have introduced Leo to some little girls ever since Bird Mart and he is crazy man like he does not want to get off of them I put Leo on my niece so he gets nervous he just wants to play let him come that's it for your hand down there you go feels good no and then I tried to take him off and he was so angry I was like wow because for Leo not to come to me back to the person that he loves means that he really enjoys where he is it's like he's a bird for kids but I want to tell you guys the craziest thing when we were doing that like app video my mom was babysitting if you'll remember Tracy's baby Bella when I was editing the video late at night my mom came in with Bella and Leo's body language showed that he was dying to go be next to Bella but Bella's not a little girl she's a baby so I don't know what Leo's intentions are so I told my mom she basically shouldn't be in the room with the baby so my mom left and that was that when I went out of town I got a video text from Tracy and my sister and in the video Leo was playing with Bella and I'm like what are you guys doing basically my sister was on the scene and they were all playing and they had nothing but time to focus on the situation and we found out that Leo really likes Bella and he was fine with her but I didn't know if he was just next to her I had no idea what the situation was so the other day after I came back my friend Tracy came to visit and she came with her baby and when she entered the house with Bella Leo made the exact noise that he does when he sees Rocky which by the way for those of you who haven't been following the Leo story he loves my macaw Rocky and he did that when he saw Bella so I was like oh man so anyway I'm sitting down with Tracy and we're having like girl chat and it's a Saturday and then suddenly George comes in and he goes where's Leo and I go in his cage he goes no he isn't you're lying he's underneath the covers because I had like blankets over me and George just assumed that I was kind of like hoarding Leo under there to get some cuddles but I wasn't and I'm like no I'm not stop joking with me he's like Leo's not in the cage Leo doesn't go anywhere Leo stays put and then I'm like yeah just look harder cuz you know how men are no offense to anybody but they just like don't see things in front of them and for him to even notice that Leo was missing being as quiet as he is I was pretty surprised like where's Leo gonna go Leo has practically never went on the floor by himself except when I come home and then George goes oh my god there he is and what was he doing he was climbing up the couch via my phone charger on his way to override Tracy and take his place next to Bella so since I had nothing but time to monitor the situation over comes Leo marching over to Bella and I was like oh my god oh my god don't let him next to her and Tracy goes no it's okay and I'm like what do you mean she's like don't worry watch and Leo like ever so gently like touched her toes and then she kind of pet him she's like eight months old she kind of pet him and I guided her I held her hand and next thing you know she's petting him she understands and he's so gentle and I'm like wow so then I bring him next to me and he's kind of upset about it he wants to be next to the baby and he's like touching her toes and she's smiling and she loves it she loves birds because she's a little Leo and she was supposed to be born on my birthday so anyway she's gonna be a bird lover now Leo's gonna go down and distract Picasso who's actually sleeping and bully Jersey that's another thing that we got to talk about reminds me anyway so Leo just comes over and hangs out with Bella and a little while later Bella starts crying and Leo goes over and gets mad at Tracy he's very protective he doesn't want Tracy to go next to Bella so next thing it's me Bella and Leo hanging out and Bella's hungry so she needs a bottle but Leo doesn't want Tracy to do it he wants me to do it so next thing you know I'm feeding Bella with Leo and Leo's ever so happy like in between me Bella and the bottle and there I am being all maternal and stuff because Leo likes babies it's the weirdest thing so I think that is just unbelievable and amazing like what bird has a thing for babies and little girls yeah like why do you have a thing for babies and little girls next thing about Leo is Leo within the flock because I hang out with Leo all day and I mentioned he's possessive over me he is like anti-possessive over the rest of the birds he does not want them involved in my life he is not afraid to go bully the birds but when he tries to bully Vinny it's kind of the funniest thing when they're on top of the shower and Leo goes to bully Vinny the Vinny's like what what you trying to do and then Leo goes oh okay that's not gonna work yeah nevermind um I'll just sit here so they do integrate in everything because obviously I hang out with all of them at the same time like right now this is a very normal situation for us but Leo just really is a little bully I still see a feather on me in the corner of my eye Leo likes to whistle I have heard him do a lot of different things lately that I hadn't heard him do before so I do realize that he has a little bit of creativity in his whistling vocabulary and I'm looking forward to hearing a lot of new things as far as him taking initiatives like he did when he wanted to come see Bella and leaving the kitchen to come into the living room which I call a development in birds it's a good thing and a bad thing developments mean that the bird is getting less shy they're learning how to navigate the house they're feeling more comfortable but it's a bad thing because it's when you gotta start watching out for them and all the trouble that they cause especially if you have more than one bird but I'm always proud of what I call developments and I believe that Leo being a six bird is developing a little bit slowly but but of course in a shy manner not in a slow manner of capability he's very capable so for example if you have only one bird you're going to find out that it's so smart and responsive and entertaining and every bird that you get after that also has all those capabilities but the work that you were able to put into the first bird when he was alone will really really make a difference and show through especially with birds like African greys so that's just something to note but of course every bird has its own personality and can shine and grow and I'm just waiting for Leo to have that day in that moment he is very communicative though right now he's tapping on a water bottle telling me that he's thirsty birds are very aware of liquids so if you ever see your bird touching a bottle chances are that he's thirsty you want to come here and get some Picasso came to because Picasso is thirsty okay first we'll give Leo some water do you want some water want some water no are you mad you're mad at Leo that's how Leo indicated he wanted water very smart nice development able to drink from the bottle let's talk about Leo and George Leo is a really good bird so I can put him on anybody if somebody wants to hold him I can be confident that he's not going to bite but if you make the wrong approach with Leo like how some people do when they move fast around the bird or they're like oh hey and go above the head then Leo doesn't really appreciate that approach is everything with Leo so him and George get along fine but he really makes it obvious that he loves me the most and that's not all that's fun for George but he definitely keeps trying he loves food this bird is extremely food driven even in all his silence you can tell when he wants something that you're eating he makes the cutest little beeping like squeaking noises like you can hear them right now even if you're eating far away he'll start doing this as if to say are you coming to give me some food and of course I always include him he can eat like there's no tomorrow it's unbelievable actually he's kind of like his own burrito look at him uh look you see how he is he doesn't want anybody else next to his mommy but I love them and I love you but my other birds they don't care they know that they have a very secure position within the family as you could see Jersey is not faced Picasso's not really faced right you're not faced there he goes he's gonna go up the shoulder and he's gonna try to bully Picasso and Picasso's gonna be like that's nice for you buddy but I'm here so that's kind of the dynamic of Leo's relationships see now he's kind of fluffed his feathers which means he's kind of about to give up and then he's gonna pipe his little head down yeah and chill out right baby got a little nervous overall I am just having the best time with Leo I find him to be very therapeutic his feathers are so beautiful and soft he's a gorgeous bird as you guys will see from my Instagram I'm kind of obsessed with taking pictures of him I don't know I ended up with all these birds in this video but I'm really happy that they're behaving right baby you're okay you're okay mommy loves you just as much it's very important to have a long time with all birds just to de-stress them a little bit make them feel like they're number one right Jersey yeah so those two that's what they do it never gets too serious Picasso's not scared of anything it's really funny overall I would say Leo is just very very therapeutic relaxing and a perfect sixth bird with that being said there is probably no perfect seventh bird because Leo has taken the cake on that one that is all guys I hope you enjoyed this Leo update I had so much fun telling you guys all about his little personality and quirks and follow me on Instagram and Twitter at Marlene McCohen where you can see these guys all day and what they are up to I love you guys so much


Welcome to this video session. So in this video session, we'll be discussing Flask, which is a Python based micro web framework, mostly used to build web-enabled Python scripts. So let's also quickly see what outcome has been planned for the following video. At the end of this video, the learners or the audience is expected to develop an ability to use Python's Flask framework in building web-enabled Python scripts. And the following should be the prerequisite for the current video. Build a small REST API. Given two get variables with integer values, this API will respond with a value which is equivalent to the addition of the two variables. So let us see how it is all done in Python's Flask framework. So let me on e-dry, so it's my dry here. Within that, I have created a blank Python file with the name main.py, and the same file I am editing through PyCharm Community ID. The same file is opened here. So we'll start writing a code for this. The first line which your Python script needs to include if you want to use Flask is an import statement. And here, what we'll do, we'll use from clause. So from a module called as Flask, let us import an entity called as Flask. And we do need one more import, and that would be request. Add modules for our Python script where we can run our Flask. So the first statement to create a Flask-based app is to create a variable named app. And we'll initialize it with the object of Flask. And here, it will pass the name of this Python module. So we have initiated the app. Now, with the help of Python decorators, what we do is we associate a URL pattern with a method in a Python so that whenever, in case, whenever the development server of my Flask is running in the background, and whenever user request that URL pattern, the associated method gets called and whatever business logic or the code which we write in that method, it executes. So right now, we want to have a method which does the addition of a number. So initially, what we'll do is we'll create just a simple hello world like a Flask app and then we'll modify that to our REST API so that it can do addition of to get passed variables here. So let us first only define a simple root pattern. So we'll use app.route. And here we'll define the root URL pattern. And so this URL pattern will now be associated with a method hello. So here, whatever this returns, the method hello returns, that would go as an HTTP response to the browser. So I would like to just return a small hello world statement here. That's it. So we have it. And once we define this method, we need to make sure we initiate it. So what we do here is, generally we compare the name to equal to main. So we want to run this through a command prompt. So we need it so that the script only initiates the Flask development servers if it is run through as a, if it is run as a command line application. So now I can call app.run and I'll enable debug flag is equal to true because I want to capture the debug information as well. So this, the code here, once I have this code, what I need to do is I need to go to command prompt and run this application by using Python. And I have verified that my Python is 3.x. So I can now comfortably run this main.py. So now we have run that. And you should see this output. If you see this output, it's a clear indication that I don't have any errors and the development service is probably running. And you can see that these current web, hello world web application is being served on following URL, one, two, seven, localus and 5,000. So let us open a browser and let's see what output it is exactly printing at that point. So I have just observed this, whatever the method has written, what my method has written, it has written hello world, the same output has appeared here. Now the same method, we will now modify it so that I will be in a position to add two numbers. And these two num values will be passed to the flask backend as a get parameters. So let us see how it is done. So I'll switching back to my PyCharm ID and let us retain this as it is. And for addition, let me define one more URL pattern for it. So now I will specifically ask it to be add. So slash add, I'll put one more add pattern here, add slash add. And now this method, I'll call as add. And after this, okay, let us just keep it as a no need to add a slash because we need to construct a query string with a get parameters. So I'll just put this as add and this add will get two numbers as get parameters. And I would like that get parameters to be of form num one and num two. So what I'll do is, I'll directly return the addition of that. And I'm assuming that the get variable name will be num one and num two. So accordingly, I'll create two variables to hold the values where one. Now I need to retrieve the value from the query string. The method to retrieve that is by using request which we have already imported here. Request.args.get and just specify the name with which the get parameter will be passed. So it is num one for where one. And likewise would be for where two as well. So it is where two and here it becomes num two. Once I have them in this here in this form, I'll need to do an integer addition. So I'll call result is equal to though since they are string, I'll explicitly pass them to int. So that addition of two integers happen here. So I have a result variable. Now I will directly return result. And since the return being a numeric time, I'll convert that into str. So let us see if this works. I have saved it. Now let me say clear screen. I have a program saved here. Let me just verify app.root it slash add and I need to provide this two numbers as get num variables integer, integer addition. Yes. So we are ready to execute it. Let me remove this some spaces if not required. Okay. So let me run this once again. Python main.py. Yes, my application is running. Let me move to the browser window. So I'll see if my earlier hello world. Yes, it is working. Now I'll try the, our URL. So add. Now after add, I'm supposed to pass a get parameter. So it's always starts with a separator question mark. And then num one is equal to 10, a separator and num two is equal to 20. If this works, when I hit enter, if this URL works and if my code presumably, if it doesn't have, has any errors within that, then that should return with 30. So let us see. It says that name one, num one is not defined. Okay. Let me see. This is what generally is the output when you have improper code. It's okay. I think I got this. It says that num one is not defined. So what wrong we have done was they are not known. They are where one and where two. Okay. So let me save it and see what has, okay. So the moment I save it, it automatically reloads it. Whenever change is detected in that the developments are just loads it and upon loading, I don't find any error. So I can safely go to this and once again initiate this request again. Okay. Now you can see that it has returned with the addition of two variables. So we have taken a get form of request, but in some cases I might even take, for example, I might even prefer post method as well. So in that case, we always specify them as a string specifically here. It's a sequence of strings where it meant I mentioned a post and so even this works. Let me see. Yes. No error. Once again, I'll hit enter. So you will once again find that, for example, now if I make it as 25, it should see 35. But now remember that now since we have added a methods, now this method can accept. So this the decorator root add can now and this entire the flash setup here can accept HTTP get base request as well as post base request as well. So if you do not specify it, the default is get. And for this video, what do you think? Does plus support post method? You can pause the video and just go back a few slides back and you can rewatch the video and you can guess the answer from earlier video part. The answer is yes, it does support. We have seen that how it is done. We put when we are running that when we are defining a method in apps decorator root. So I'll show you as a quick. So I'll do a control that I'll show you. That's how we add a support for Python for post methods. So that's it for this video and a curious readers can go in detail through the official flash tutorial and documentation to explore far more powerful capabilities of flash micro web framework in Python. Thank you.


the Sony Boost and you have a new 75 inch 4K TV. So what is this one? This model is our X940E 75 inch model, brand new for 2017. It's full array local dimming LCD illuminated by LEDs. What's special about this model for 2017 is that it features our proprietary 4K HDRX1 extreme processor, a processor that was previously only available on our flagship model, the Z9D Master LED Television, which continues for us as flagship. But now that technology and processor has made its way down the line into additional models, including this one here. So Sony processing makes magic a little bit with the image, right? It smooths things out very nicely. What does it do? It really, really does. The reason why is only Sony has the expertise from the lens to the living room. We're the only ones that can make a TV that also create content. We make professional cameras. No one else can match that expertise, that level of mastery. So with respect to processing, processing is what differentiates and makes a difference with everything. Processing is what takes your existing source and enhances it and renders it in stellar fashion so that upscaled content looks more impactful, more impressive. It gives a depth, a realism, a dimension to the picture you wouldn't have otherwise. The X1 extreme is going to be in all the TVs. Not all the TV, well, I can't speak to future plans. But what I can say definitively is that for 2017, as opposed to it being only available in the flagship Premier model, for 2017 you have it more accessible to people in models as far down as our X930e. So this one is the X940? Correct. That's the X930. You got it. So here we have our X930e, the 2017 model as well, featuring that exact same X1 extreme process that we were talking about. 65 inch. And the same basically? As well, in terms of processing capability, very similar, where that television is full array local dimming. This one is a hybrid. It is an Edge Lit TV and it features our proprietary technology, our Slim Backlight Drive Plus, which is an improvement over the prior model year. It's going to give you increased brightness, better, deeper contrast, and more points of control. Now, with this television, you're going to get essentially full array type performance from an Edge Lit TV. Edge Lit. Yes. So the light comes from the sides somehow? Correct, as opposed to direct, as is the case in the 940. So it doesn't go into the eyes. It goes to the side of it? It emanates from the sides, but you have light guides and multiple layers. And as I said earlier, multiple points of contact. So you have more precise granular control than you'd have typically on an Edge Lit television. Nice. Let's go over there, because it talks about the X1 extreme. And I'm going to get up close with the chip. Here we see the X1 extreme, which looks like a nice chip. X1 has been already very successful. Last year, two years ago, when did it start? X1. Correct. X1, first to market, 2015 series models. With that, it imparted some capabilities with respect to noise reduction and upscaling. X1 extreme elevates the performance of our processing on your television in that it does a number of different things. Three key things that you'll be able to enjoy because of the X1 extreme processor that we'd like for consumers to keep in mind is, one, dual database processing. The processor is intelligent enough to see your source resolution of real time. And analyze. If I just get over here, it says source material, real time, analyze, resolution, and bit rate, and make adjustments based on those conditions. It's simultaneously pulling from a noise reduction database as well as an upscaling database. Notice the difference here in this church versus up here, upscaled. So which one is the one that's still the all, this whole upper row here, features the X1 extreme. The lower row would be ones that have X1 extreme absent that don't possess. A little cycle through. Tomorrow I'll be real quick. Thank you, and have a great evening. Let me show you real quick. Just some example of the upscaling versus the X1 extreme not having the X1 extreme. OK, it's going to come back. Such as you need to. Here we go. Notice the detail in the brickwork versus down here. It looks more hazy versus much tighter detail. You see that? It sounds like it's recreating something that's not even there in an image. It's like a magic. Almost because it has databases to pull from. Again, because of Sony's experience from the lens to the living room, it knows what it's seen on screen. It's intelligent to know what's noise, what would be an artifact, what needs to be softened, and it's also able to see what that which needs to be sharpened, such as textures and so forth. So it's not just upscaling, which is already quite magical. It's like smart upscaling of different things. It's an intelligent optimization. Yeah. It's like deep learning kind of thing. Kind of, if you want to think about it. I mean, it's the smartest processor out there. And it's so capable, in fact, that another thing it does is super bit mapping, which is to say, with 14-bit processing over here, you'll notice on the screen, without X1X, you notice those lines, that kinetic banding there, kind of like the Looney Tunes cartoons? Well, up here, you won't see it, where you have areas of gradation, so sunrises, sunsets, skies, bodies of water, like the Caribbean Sea here, where you have depth and you have shallows, where you have blending of color. It smooths out areas of blending, so it's more naturalistic in appearance without that distracting annoyance of kinetic banding that you might have on lesser processors or lesser processing means, I should say. And then over here, this is something that's quite special. Object-based. HDR remastering. So on a typical television, on the television, it might analyze a frame and adjust that entire frame against a single contrast curve. By comparison, the 4K HDR X1 Extreme Processor does object-based HDR remastering, which is to say, the processor is intelligent enough to recognize distinct individual objects on screen, and those objects on screen are adjusted against their own contrast as well as color curves. Thus, simply put, it gives the picture a depth, a realism, a dimension to it that it wouldn't have otherwise. I think it's gonna cycle through here again and I call your attention to the footage of the surfer. If you look at it on the one without it, actually, here are my mistakes. It's gonna be sushi content. They'll show you some detail with the knives and so forth and the scales of the fish and even the appearance of the fish themselves and the scallops. Not just that the colors are more vibrant, but they seem more clearly defined. In a second here, they'll apply some soy sauce to the Maguro. Here we go, this one.  That's the immersiveness. That's the optimal experience for high dynamic range content and it's because of our proprietary X1 Extreme processor. So this is completely awesome, right? Do you have a 4K HDR at home? I certainly do, yeah. And it would be nice if there were more content, right? There's a little bit. It's true. There's content available, content to be had on streaming services such as Netflix, Amazon, or Sony's very own Ultra service, but the reality is is anyone who says to you, you could go home this evening with a brand new Sony 4K TV and enjoy your local nightly news in 4K is lying to you because it's likely not shot natively in 4K. Thus, the importance of upscaling technologies and capable processors such as this X1 Extreme because upscaling is the bridge from today and the present until such time as there's even more content for you to enjoy at home with your friends and loved ones. And those three things you just shown, is that also partly improving 1080p content kind of also? Is it useful for that? Like this improves, this adds HDR to content that's not HDR. So because of these televisions, they have the ability to upconvert standard dynamic range content to near HDR just in a similar fashion as it takes lower resolution sources, say 1080p and upconverts them and enhances them. So a Blu-ray disc 1080p will look better than you've ever seen before. You'll notice textures in the wardrobe, your favorite characters and actors that you'd never noticed before. And it's not that it wasn't present there. It's just your TV previously didn't have the ability to render it. So do you have a 65 at home or a 55? I have a 55. 55, but 65 is quite a lot bigger, right? It is, it is. And is it better to get a 65 to actually seal this 4K pixels? Good question. The general guideline for 4K resolution because it's four times the number of pixels is high def is you want to observe a guideline of one and a half times the picture height. That would be minimal viewing distance from the display, whatever size works for that space. Now, optimals for you and your family to decide. But again, the minimum to observe would be one and a half times the picture height. Is it possible there might be some psycho visual aspect with it? Even if you sit further away, it looks more natural if it's 4K, even though you don't see more pixels because you're so far away. You're quite right. I think you'll still enjoy the benefits of it even at greater distances from the display just because there are literally more pixels present. And 4K is awesome, but HDR is also a huge, like amazing thing that adds to the TV market, right? It really is. And it's what I think takes things to the next level. Years ago, a number of manufacturers were very focused on 3D and really the idea behind 3D was to give consumers a more immersive experience in the home. And I think that with 4K HDR, you have that immersiveness. You have that sense of depth. It feels like the action is not so far removed from you as viewer that you don't need to don special glasses. As long as you have a capable display, with a capable processor, you could potentially enjoy a great experience. So there's my YouTube channel with 4K content is a PlayStation with 4K content. You got it. There's a whole bunch of other 4K content coming. So there is an HDR 2017. There'll hopefully be a lot of HDR that just gonna blow people's minds like completely. I would tend to agree. I would say expect to see content choices increasing at an increasing rate. All right. So, and it'd be awesome if there was like a 4K camera so you can have a 4K video conferencing with your family. Is there anything like that, you know? Not to my knowledge. I can't speak to future plans. I'm not aware of anything as such, but. That'd be a great selling point, I think. If there was a 4K HDR camera somehow to do video conferencing with your family and see them in 4K HDR, that'd be like a reason to buy 4K HDR also, I think. Okay, thanks a lot for this. Sure, my pleasure. Yeah, my pleasure.


For more videos and people's struggles, please subscribe to our YouTube channel. The second week of the trial part of the extradition hearing of Julian Assange ended on Friday, September 18. The week saw the defense bring more witnesses who testified on a variety of issues related to the work of Julian Assange and Wikileaks. In a variety of ways, defense witnesses proved that the case against Assange was politically motivated. A key argument of the defense has been that for this reason he should not be extradited to the United States. The witnesses also made it clear that he would not get a fair trial in the US and that he would probably be in jail for the rest of his life. Defense witnesses repeatedly shorted on the prosecution's argument that revelations by Wikileaks had endangered the lives of people. Multiple witnesses demonstrated how rigorous Wikileaks standards were in processing the information. Number of witnesses revealed how important revelations by Wikileaks had been reporting the true extent of US war crimes and brutalities in various parts of the world. Julian Assange is facing 17 charges under the Estonash Act and one charge under the Computer Food and Abuse Act. The charges entail a jail sentence of around 175 years. Assange is being prosecuted for working with Chelsea Manning to expose the US war crimes and atrocities in Iraq, Afghanistan and other countries. Daniel Ellsberg is a US whistleblower who released the Pentagon Papers detailing the US involvement in Vietnam and Southeast Asia. Ellsberg strongly defended Assange comparing their work. He talked about the safeguards Assange took while releasing the documents and pointed out that he even offered to cooperate with the US government so that there would be no rest in releasing the documents. Ellsberg also shorted on the prosecution argument that people's lives had been endangered by the release of documents by Wikileaks. He rejected attempts of prosecution to differentiate his pathbreaking work from that of Assange and Manning. Most importantly, he made clear that Assange would never get justice in a US court. US lawyers Louis and Erking talked about the kind of prison sentences and treatment Julian Assange may face if he is extradited to the United States. Both the lawyers agreed that Assange, who is 49-year-old, may end up in spending his entire life in jail if he is convicted. Louis talked about the Alexandria Detention Center where Assange may be kept in if he is extradited. He could be placed in solitary confinement even before his trial begins. Louis also talked about the special administrative measures which will be used to apply pressure on Assange. Duckins spoke about the kind of pressure and coercion that the US government will apply on Assange to get him to admit guilt. All of this makes clear what kind of treatment awaits if Assange is extradited. Khalid al-Masri is a German citizen who was kidnapped from Macedonia by the CIA in 2003 and was tortured, sodomized and forcefed in jail in Afghanistan. Some months later, the CIA discovered his was a case of mistaken identity and abandoned him in Albania. Khalid al-Masri and John Goyes, a journalist who wrote about him, described the role of WikiLeaks in ensuring that he could fight for justice. Cables released by WikiLeaks also revealed extent to which the US applied pressure on the German government to take no action despite overwhelming evidence of criminal acts by US personnel. Kerry Schengman is a lawyer who is also an expert on the espionage case. In his testimony, he talked about how the law was always used as a tool to suppress the dissent and critiques of the US government. Schengman talked about how broad the act was and how it does not allow for a public interest close, namely someone who reveals information under public interest can still be prosecuted under the act. He also said charging journalists under the law would be a chilling effect. He added that the use of espionage act was truly extraordinary and that it all signs pointed to a highly politicized persecution. John Sloban is a founder of Iraq Body Count, an organization which documents the number of killings in Iraq following the US invasion of 2003. He explained how WikiLeaks' Iraq war logs were vital in revealing information about 15,000 deaths that were not known earlier. Both Sloban and John Boyes, as well as another witness Nikki Hager, talked about the rigor with which Assange and WikiLeaks checked the documents and redacted the certain information which would have identified people and put them at risk. Several protests also took place in support of Assange.


Hey everyone and welcome to Norris Cove. I'm Yoshida and here at the Cove, we do budget financing planning and just a little bit of DIY and a little bit of everything. So I'm glad to have you today and I would like to show you today. Be planning for the week and my new A6. Yes, I've been showing you me planning in my pocket. So I'm kind of switching things up. I'm testing planners out periodically and basically per week just so that I can see which planners are going to take into 2021. So if you would be interested in seeing how I plan for the week and my new A6, stay tuned. As you can see here, I have some stickers. I have my planner. I have some markers here. I have Tombo and what are these? What is the color of them? Also some mild liners and I have some washi tape here in black and white. I haven't quite decided if I wanted to do a minimal spread or add something. I did a little slight flip of this planner on my Instagram. If you're not on my Instagram or you're not following Instagram, please do so and I'll leave my link or my handle there out here at the bottom. So I'm not going to do a flip, but this is pretty much how I do the weekly. I went back to these inserts by Simply Trendy Co. I love these. I pretty much do a brain dump for the week on this one. So I'm going to take both of these out. Well, I need this one so I can flip back and forth. And then also from her, I got the daily and then I got this grid weekly. I'm going to show you how I used it last week. This was last week. I shouldn't have put that there, but hey, it's there now. So I'm going to take out this and then this pin here is from my shop. I'm going to use that to write and I'm going to put these stickers over here to the side. And the first thing I'm going to do is pretty much blind up my week. Anything that didn't get taken care of last week, I'm going to move it over. Oh, I got to do an appointment today. So that got done. It was my birthday, which was yesterday, which was Saturday. And I don't have to do my daughter's car insurance that was taken care of. So I don't have anything left over, except for this, which I'm going to do today. So I like to go ahead and fill in the weeks and then we're like on the third row here. So I'm just going to go ahead and highlight this row and then I'll fill in the numbers. I'll probably speed through that or cut it out and come back and show you how it looks. Okay, so now we have our dates and then I just start listing the important things here first under this week. And one thing I know for sure is I need to design declutter. I've been on a declutter and I'm not really getting anywhere, but I need to do that. And I need to contact a friend about these clothes that I need to give away for a family in need whose house caught on fire. I need to get her up this week. So today, well, tomorrow is the 19th and I'm just going to put declutter down again. I have to see things more than once. On the 20th, my car note is due. On the 21st, my loan is due. 22nd, 23rd, and 4th, 25th. Oh, and then on the 19th is payday from Etsy and Shopify that have another payday on the 20th. Let's see, what else is there this week? I'm looking at the dates. Nothing rings a bell. Let's see. So far, this is all that we have. And it'll probably come to me as I start to design for the week. So I'm just going to leave that there up to the side. And then now I'm going to get into my weekly and what I'm going to do, I'm going to just take these happy planner numbers and then I'm going to put those on the dates. And again, I'll probably speed through that and then I'll be back. Okay, so now I have the dates in and I use the happy planner number stickers. So this is my thing now. What kid do I use? I really try to stick to a minimal and functional best as possible. But every now and then I like a little sticker. Okay, so what I think I'm going to do is I'm going to start off with my functional stickers. And I'm going to use these, these are from my shop. And I use these to list paydays and things like that, or a day that I am receiving some income. Or sometimes I use them for totals. So Monday. I'm going to put this here because I already know it's going to be Tuesday. Also you guys, I'm going to be doing a video on how to use stickers from my shop. And I'd love for you to tune in for that. This Monday have to work Tuesday is a day off. I use these from Susie Q Plans. And this day I'm off from the salon. For those of you who are new here, I'm a full-time hairstylist. And well, no, I'm not a part-time hairstylist now, but I used to be a full-time hairstylist. And then COVID hit and then I concentrated on my business. And now I just do it part-time so that I can focus on my business. If you didn't know, now you know. All right, now I'm just going to go through. I have a morning routine that I do every day. It involves coffee. That's part of my morning routine. I have my coffee. I meditate. I take the dog outside, but I like to put down a morning routine. And then I've been practicing a little bit on my lettering. And then I just put coffee. So I'm just going to do that all across the day. So there's no surprise there. And I really don't have to write that down, but that's something that I know is going to happen. Only time I don't, I still have coffee time. Like when I travel, like if I go see my daughter in Atlanta and I'm in a hotel. I get up, I get coffee from the Starbucks. At one point, the hotel that we normally stay at, they had it. But now with COVID the last time I was there, they didn't. So I went to the Starbucks. And so I will sit in my car and have coffee time, reflection time. But every morning I do this routine at home. I take the dog out, sit out back and just kind of reflect. So we already know that's going on. Here we have Etsy Payday or Shopify Payday. And also something else. Like I said, I like to, I used to decorate first when I was a more decorative planner. I would decorate first, decorate first, use most of the functional stickers. But now I write down what needs to be done. Then I come back and decorate. And sometimes it's just not room for decoration. So I like to write the important things down first. Okay. I'm going to do some laundry Monday, but I want to put this aside. And I'm going to go ahead and write down laundry because I haven't decided on a kit yet. So. And then I'm trying to get better at posting and being more consistent. So I have these stickers. These were an oops from a Nika's creative closet. And I'm going to use these to highlight my days that I want to do like post. I'm trying to get better you guys at posting on YouTube and Facebook. Because I have a Facebook group also if you're unaware. And so Monday will be a YouTube day. I'm going to upload that because that needs to be our money Mondays. I haven't done one in a while, but I'm getting back on it. And then I need to post to my Facebook group. Well, I did a post today. And then Tuesday is generally an off day for me for shop stuff, work. I try not to do anything on those days, but sometimes I end up doing stuff. So this day will probably be kind of blank. But this is the day that I'm going to take to declutter. And I was supposed to declutter in my office today, but I realized I'm like, Yes, you need to film a video. You don't film videos. I'm going to go ahead and take this long basket. And this is by Villa beautiful. Let it just kind of go over there because that will go into the declutter. Okay. And then I also need to do an Instagram post. I do post to my stories pretty much regularly, but I don't like my main page is something that I need to get better at. So what else do we have? We're still decluttering pretty much every day. I used to sell some declutter boxes and I need to bring those back because it's going to take me a while. We're a family of four, but now three with my daughter living in Atlanta and my husband has been helping. But he doesn't do like the dishes. You don't know where like my pots and all that stuff to go. So and I kind of hoarded a little polish. So I have got to get rid of those polishes old makeup. And on Tuesday, I'm going to tidy along with the declutter office. And I need to do my desk really bad. Okay. So I've done mainly pretty much what I'm going to do Sunday is normally a relaxed day. So again, this kit is by Rose shadow. And I'm not really using kids like talking about, but I just love, you know, I still like them. You know, I have to admit, I still like them. So I still use them. I got a couple sheets. I think a bunch. This is so pretty. So this is what it looks like. Again, this is Rose shadow. I have this in the dashboard. This kit will last me like forever because I don't use kits and I don't use a lot of boxes. I use this one for Tuesday. I don't have to work on this thing. And let's see. When I say this kit is plentiful, it is plentiful. So I'm going to take some of these dots here, these transparent dots and use them like as a checklist. I don't want to overdo it like I always do. I'm going to use it like as a checklist. Wednesday is three things that I want to record. I know I've already put them there, but here, which isn't much. Dining room, which is another table. And then since I use those dots there, I'll just follow through with another little dot, a different color. Then on Wednesday, we're going to do the closets and then drawers, dresser drawers. And I think this is pretty much all I can kind of handle as far as color. I don't know why it was just so beautiful. I just could not like leave it. I couldn't let it stay in the store in my shop. So I had to take it. So I'm just going to kind of balance everything out. And I usually add to the week as things go on, I try not to put too many things on my day because Mondays are always busy, but I'm going to use these total stickers from my shop for this day because I have my card note due. And then on the 21st, which I think is like the 20th. I have, we'll put it here though. I have $96.11 set. I've got to pay days of card note with the clutter. Okay, contact. So on Monday, I need to contact the young lady about the, about the clothes. So and then when I'm doing the laundry, I'm going to just rewash those clothes because I haven't worn them in a long time. So and they're size 16. So I'm going to, so I don't know, I'm going to have to find someone to use this kit. I think I'm going to use this kit in my like journal or something because I need space and I hate to take up a space and I would need it. So I don't know why I ordered these kids. I just don't know why. And then as you can see, this is one of my favorites from my shop, which is the glasses. And I'm going to put that off that day as well. So far, I'm kind of opening my book up for my clients since the shop has been kind of slow. That way I can make some money. Okay, let's get all of this back onto the planner. I don't know if I mentioned this earlier, but I'm waiting on some inserts from cloth and paper. So I'm waiting on some inserts from cloth and paper the monthly. And then I did get their weekly that I'm used to, but I'm really kind of seeing how I like this. So and then this is what it looks like. Pretty cute. We'll see. Okay, and then I need to go to this weekly part. Yeah, these rings are too small. So I'm also waiting on bigger rings. Again, if I didn't mention that. And I just like my planner is a little thick and fat. So I've been kind of feeling like, who are you doing this? You know, like, what are you planning? Like, what are you planning? Like, I just thought it doesn't. I haven't been able to really stick with it, I'll say. But that is it. Thank you all again for watching. If you're new here and you would love to see more content from myself, please do me a favor. Could you hit that subscribe button and come back for more and I'll see you in my next video. Bye.


Hello. My name is Dwayne Winsack. I'm a professor at the School of Journalism and Communication here at Carleton University. I'm also the director of the Canadian Media Concentration Research Project. This is a shirk-funded research project that looks at a deceptively simple but profound question. Have the media industries in Canada become more concentrated over time or less? In order to answer this question, we look at the development of about a dozen and a half sectors of the telecommunications media and internet industries over a 30 year period. We're looking at everything from mobile phones to television to newspapers to search engines and internet advertising. We think that this is really important research because for a very long time there's been a lot of discussion, political debate and policy formation in this country that has taken place without a very strong basis of evidence. We hope to backfill that absence of evidence with our research efforts and in fact we're seeing that our evidence is being used in a wide variety of situations before regulators, in Parliament, before Senate committees and even right now before the Broadcasting Telecommunications Legislative Review Panel. We think that this research also has global significance and right now we're putting together a 40-country research project and we're calling that the Global Media Concentration Research Project and basically it will take what we've done here in Canada and replicate that in 40 countries around the world because we're living in an age in which digital platforms and the internet are becoming ever more important and some people are arguing that the commercial viability of other media are now dependent upon the Facebooks and Googles of the world and some are even arguing that the integrity of democratic processes are being affected by these entities. We want to look at these questions and we want to take up the issues seriously but we also want to offer a serious base of evidence from which policy makers worldwide can take their cues.