Next game we want to discuss. It's New Orleans and New York the Giants going head-to-head The point total is projected at 50. Do you see this as a shootout type game? We got Drew Brees looking like you know Hall of Famer and Eli's starting to get it together with his offense. So what do you think? You know the Giants have been another team that's been playing to the under They're eight and two of the under and their last had enough football games We've seen their offense been anything but explosive as you mentioned Eli at least got it going a little bit last week Against the Houston Texans. This is an interesting game in which everybody that we speak to likes the New York Giants here But the Giants have been bad at home. They're not a good home team. They're just not You know, they've been they've covered three times out of their last nine games at home They're three and six the last nine home games against the spread now I know it's different last year different coach, etc And yes, they look good last week, but who's a better football team the New Orleans Saints, like, you know I'll break this down. Do you want Drew Brees? Michael Thomas and Alvin Camara. It's like a pickup game here. We're here in the in the schoolyard here So you want Drew Brees Alvin Camara Michael Thomas or you want to say Gwant Barkley Odell Beckham and Eli Manning if the last one wasn't Eli Manning I'd be like, oh this Odell Barkley trains looking pretty cool Yeah, but look I think they're pretty comparable but all depends on if that Giants offensive line Can protect and can give Eli time like they were able to do last week against a bad team The New Orleans Saints and it's a good point that you're raised the New Orleans Saints have been good They've been good road favorites as well. They win games on the road They find ways to get it done. They're four and one their last five times have been favorite on the road I'm not a fan of the hook here at three and a half and we saw that the Giants played the Jags tough Except Eli just couldn't close the deal. Odell was open a couple of times But only lost by five they didn't get the two-point convert They would have lost by three this game just screams three points Written all over it to me a lot of people are I know a lot of fantasy people are high on Eli this week and stuff I'm not so sure this game is a track meet Maria My gut instinct tells me the Saints probably win the game by three maybe four points But it feels to me like an under this game I know we don't have it listed as our best bats, but feels like an under to me. Let's call Saints win 24 21 All right, which is a push in the under. Yeah, it is it is I mean you're looking for a track meet Well, look the Saints offense is just so potent. I think they've scored like 35 points like I'll be going to the fan Dual sports book if you want give me some money. I'll get it in for you Maria watch the over I'm afraid my Giants won't be able to keep up But we can stop at the the metal lands right on the way to the game remember Remember coming into the year though Remember and even last year people talked a lot about the New Orleans Saints improved defense We haven't really seen much of that so far this way I think we will this weekend against the Giants lower scoring game in my opinion Okay, give me the Saints probably pushes though if you can get the three I love it at three to three and a half scares me, but I think it's a lower scoring game That's it That's it. All right.


All right. I think it's a good time to start. Can you guys hear me at the back? Awesome. So hey, everyone. I'm Oindrila Chatterjee. I recently joined Red Hat as a data scientist. And as you can see from my sash, I'm also an organizer at the Fund Committee for DEF CON. So I hope you guys have been having a lot of fun so far. And if not, for starters, this talk is going to be a lot of fun. So thanks for coming in. But a lot more fun is going to be tonight at the party, which is Star Wars and Hacker's theme. So please be there. And while we wait for that, let's dive right in. So as you must be already aware, cognitive systems today present exciting opportunities for building new kinds of applications with really powerful intelligence behind them. And when I say cognitive systems, I mean AI or artificial intelligence systems, which exhibit capabilities such as learning, understanding, and reasoning from data. And one such system that we are going to look at today is the sentiment analysis system. So what is sentiment analysis? So sentiment analysis is nothing but getting sentiment values or polarities from natural language text. And why do we do it? Why do we do sentiment analysis? Products. We want to know, without reading through each customer reviews, what people feel about the new iPhone. Organizations want to know what its consumers or customers feel about products, services, tools, technologies that the organization has to offer. Public sentiment, we want to know what's the consumer confidence is to the spare increasing politics. We want to know what people think about a particular candidate or a particular issue. And prediction. We want to predict market trends from sentiment analysis and also maybe predict election results and whatnot. So the applications of sentiment analysis are numerous. But how do we do this? So we do this using techniques of NLP or natural language processing, which encompass various machine learning and deep learning tools and technologies. And what is NLP? What is natural language processing? So NLP sits right at the intersection of artificial intelligence and computational linguistics. And it basically allows computers to understand and for interpret and manipulate human language quite as good as we do. And having said that background, let's look at what we will learn today from this talk. So firstly, I'll talk about my experience working on a sentiment analysis service and how we narrowed down to a single service. Secondly, we'll talk about how we continually improve the service and also by introducing feedback. Thirdly, we'll go over the lessons learned while going through this process. We'll go over the usage of the framework and how to implement such a service. So there are various ways of performing sentiment analysis. So I'll give like a brief overview of what are the three primary ways in which you can perform sentiment analysis. So firstly, is a lexicon or a dictionary-based approach. So in this approach, you derive sentiment from a piece of text based on the count of the words that are appearing in the text and what sentiments do they signify. And also you apply a rule-based approach. So this is like a very generic, very basic approach at tackling a complex thing like sentiment analysis. Second comes a machine learning approach. So in this approach, what you do is train a machine learning model and make a learn from training data which is being labeled into particular sentiment types and have the model predict on new data. And thirdly, it's a deep learning-based approach wherein you create a self-teaching learning system which learns from multiple layers which are also called neural networks. And this also learns from large data sets. So these are the three ways in which broadly one can perform sentiment analysis. So let's look at what we started with. So our first pass at the Building a Sentiment Analysis Service was actually composed of three NLP tools, three open-source NLP libraries which are Stanford Core NLP, Vader, and Text Blob. So these are three really good and robust NLP services which are available. So Core NLP is based using a recurrent neural network which is a deep learning-based model and it's trained on a tree-based corpus called the Sentiment Tree Bank which lets it actually learn the compositional effects in natural language. Second, Vader. Vader is a lexicon or a rule-based approach and it's mainly targeted towards social media text but it does a good job otherwise as well. Thirdly, Text Blob is a classifier-based approach and it is trained on the IMDB Movie Review data set which is a large, huge data set consisting of movie reviews and it's annotated with the sentiment for each review. So we had our free models and we are treating them as three classifiers and our goal was to get one prediction for our red-hat-based artifacts. So what we wanted to do was we had free models giving out free predictions.  And this was a pretty straightforward and good initial approach and tackling sentiment analysis. And the thing about, the thing specific about this was since Stanford Core NLP treats derived sentiment sentence by sentence that is it gives one annotation for each sentence. We were now treating our entire chunk or paragraph sentence by sentence. So this method had some limitations firstly the accuracy of sentence classification. So basically there were a lot of misclassified negative sentences. Secondly, we saw foreign languages which were similar to English like Spanish, German, French which uses those same characters were often misclassified because they were thought of as English. And thirdly, the domain specific sentences were misclassified so that really means sentences which are specific to Red Hat's customer service or you know, things which are really context specific were not being identified in true sense. So now what we tried to do is we took out three classifiers and we brought in training data. We labeled some data that we had and created a training data set and now we again got the predictions from the three classifiers when treated independently one by one the training data and we assigned them weights based on how they are performing. And now we had a weighted majority based voting schema to get one single prediction. And this was, this got brought about some improvements as compared to the previous service now that we had built a stacking or model stacking based approach using weighted majority vote. Secondly, we were also filtering out the non-English sentences using Google's lang detect API. And thirdly, we also, what we did was we fed in some context specific terms which are specific to Red Hat into Vader's lexicon. And this brought about some improvements in performance and the metric that we are using to determine our improvement is the F1 score and that's giving us a good gauge of how the models are performing in comparison to each other. So as we see in positive and negative labels it showed quite some improvement and also improved the neutrals by a little bit but we were mainly concerned about positives and negatives. So this was great and another thing which is really important which is attached with sentiment analysis is entity detection. So what are entities?  So why are we doing entity detection is nothing but we want to understand what are our sentiment scores pertaining to specific entities that we are actually interested in. And the entity detection model which we built was using Spacey which is an open source NLP tool again and the limitation with that was we again weren't able to identify some Red Hat context specific terms which we are actually interested in like Ansible, Rail, OpenShift, Red Hat CloudForms, so on and so forth. And often non-entities were classified as entities like words just because of the capitalization or their position in a particular sentence were being thought of as entities whereas that shouldn't be happening. And thirdly, many entities were being misclassified that is words like Rail was being thought of as an organization and OpenShift was thought of as an organization wherein that shouldn't be the case. So we took some steps to elevate this issue so we compile a huge list of Red Hat context specific terms that we wanted to be identified in our service and we created a balanced training dataset and used that to retrain Spacey's model. And this gave after a lot of passes, after a lot of versions of the training data we saw some improvements. That is we saw now higher number of context specific entities being recognized which was a great thing. We saw better classification of entities as well. Now since the training data corrected the classifications we saw better classification then we saw lower non-entity detection that is lower detection of words which are not entities. So having said that after this process we had our sentiment analysis service, we had our entity detection service but we wanted a single service to serve the purpose and we wanted to explore other options. So we thought of exploring a deep learning based approach for sentiment analysis. So as many of you might be knowing or just to give a high level overview of what deep learning is. So one of the primary goals of deep learning is to learn, to represent your inputs in such a way that it's actually easier to map your inputs to a target task. So here we have like a crude drawing of a convolutional neural network in the left and as you can see that the input is fed through a series of layers and each layer has an activation function which is produced. What an activation corresponds to is actually a model's representation of what's contained in the input that you feed in. And as you can see on the right, right there, the features the CNN is learning are actually pretty high level features as compared to simple pixels. You see car wheels, I don't know if it's really viewable but you can see it's pretty good in car wheels there and also faces, features which represent facial features. And for terminology sake, the thing on the left is a source model which is like a pre-trained model for the rest of our talk and what we introduce after that is a classifier on the top of it, top of the pre-trained model basically. We'll get into this a little more but this is just to set the basics, right? So the first prototype approach that we tried was a recurrent neural network using long short term memory units. And in order to understand how deep learning can be applied to this, think about the kind of data that we are feeding into our deep learning model. So in our case, we are feeding in string inputs and to perform stuff like back propagation, matrix multiplications, dot products, we cannot operate on strings. So we need to convert them to vectors. And for our case, we work with again, the IMDB movie review data set which is a large data set and we wanted to convert it to a vector. So these vectors need to be created in such a way that we should be able to represent the context, the meaning and the semantics of the word that they appear in the sentence. And in order to create such vectors also called word embeddings, we use vector generation models like glove, goto-vec and so on. And so what the vector consists is or the embedding matrix consists is of one single representation for each and every word that can appear in the paragraph. So then we create an IDs matrix for each review that is that consists of all the vector embeddings for each review that we are feeding in. And we then look at our reference neural network model. So how a recurrent neural network is different from a traditional feed-forward neural network is actually the temporal aspect of recurrent neural networks. And what we do is, so here we have a hidden state vector associated with each vector that we are feeding in into the system. And long short-term memory units are nothing but modules that we place inside of RNNs. And at a high level, they make sure that we are able to encapsulate long-term dependencies in the text. And using this model, we now train the model on the input that we have and we see the results. So the results look like this where we see that the F1 scores of this LSTM-based model perform much better than our initial service. And that's a great thing, right? But we weren't really happy there at that point because firstly we wanted to explore more, see how we can do better. And this needed a lot of training time and computational resources which we wanted to avoid if possible. So as we see in this graph, the main limitation with deep learning-based approaches is that deep learning is not applicable in each scenario always because of the lack of the label training data that we often need for our tasks specific or our tasks in organizations. And in addition to having high training data, label training data requirements, there's also huge training time and computational expenses associated with deep learning. So that's like a major limitation that we wanted to alleviate if possible. So we looked at approaches like transfer learning and some of you might have heard transfer learning. It's nothing but you have a model. It's really applicable. It's really a long-time research and computer vision and image processing. So what you do in transfer learning is you train your model on certain kinds of data, as Subin also mentioned in the previous talk. You train it on certain kinds of data and you have a train on new kinds of data by not changing the entire model completely. And you must be wondering how does transfer learning work for NLP and why is pre-training useful in NLP? How is that useful? So simply put, it just so happens that pre-training allows a model to capture and learn a wide variety of linguistic phenomena and such as long-term dependencies and negation, for instance. Well, on a task specific or a domain specific task like sentiment classification. And this works in language because as it happens, negation, for instance, is a really important property in text and when we want to derive sentiment polarity, negation is a useful feature to understand sentiments or even sarcasm, for instance. And a language model that possesses universal properties could actually be useful in tasks where firstly there's a lack of annotated data sets or language resources. But this idea is also exciting because we are not only aiming to build a universal model, we are also addressing some of the difficult challenges in ML research that is availability of data and resources and computational expense mainly. So one of the primary researchers in this domain was the bidirectional encoder representation from transformers. So this was like a really revolutionary technique in using transfer learning in NLP and it was released last year. So this actually tries to alleviate the main issue that is shortage of training data. And what it does is it works in two steps. So the first step is a semi-supervised learning on large amounts of data. So what happens is you take in a data set like Wikipedia, for instance, and it is not labeled, but it's huge and we have lots of data which is stored in Wikipedia and you make a model learn from the features which are appearing in an annotated text and you build a model out of it. And then comes our second fine tuning step which is more supervised and here you're introducing a data set although smaller than the previous task, but still large and you make it do task specific classification. Like for our instance, we fed it with data which was labeled with sentiment annotations and hence it can classify positive and negative sentences. So in this second task you can introduce whatever you want. You can basically do entity detection, code reference resolution and a lot of other things fine tuning procedures. So what makes BERT really different from the previous approaches? Firstly, contextual representation. So you might have heard about Glove and Word2Vec. They are context free representation and what that means is the word bank be it in the context of river or in the context of money would have the same representation in Word2Vec but here we have different representations for words which have different meanings depending on context. And secondly, it's a deeply bidirectional unsupervised language representation. So what this means is unidirectional models are actually trained by predicting each word conditioned on the previous words that are appearing in the sentence. But for bidirectional model, what you do is you mask out words and let the other words appearing before and after that predict the word. So it's based out of a masking technique and it's deeply bidirectional. And thirdly, in this approach, the model actually encapsulates relationships between sentences, not only words. So what that means is you have, say you have sentence A and sentence B, what you do is you get a probability score of whether the next sentence is an actual successor of the previous sentence or is it just some random sentence appearing after it. And last but not the least, really important for us, the transformer architecture is much more parallel as compared to the RNNs which are very sequential and because of which we are able to utilize if available GPU infrastructures and this really improves our training, hyperparameter tuning, prediction procedures all at once. So we trained the model using BERT and we plotted the results, the F1 scores. And we saw that the F1 scores of the BERT based model were even better and a lot better than the LSTM based model. So this was pretty exciting. We had reached better scores and much better classification accuracies. And why is this important? This is important because first of all, we are classifying better. Secondly, now we are annotating one label or one sentiment score for an entire piece of text as opposed to the previous approach where we were labeling sentence by sentence. And thirdly, this was taking much lesser time to train on the GPUs. I haven't put the matrix here but it's there on the repository. So this was really exciting. So after deploying this model and performing the analyses, you actually review the trained model's performance and see whether any adjustments must be made to the annotator to make improvements for its ability to detect sentiments. However, in a cognitive DevOps environment, you do not really stop there. The cycle doesn't stop there. A wider view of the training system over time incorporates feedback from the users of the system and from the system that you piloted actually. And this typically includes a custom user interface with which users can interact. And the model is used by the application and the results are actually shown in the application UI as you see here. So the end users can actually view the results in form of an application UI and provide their feedback on sentences which are not being classified accurately. And this feedback is collected and stored from many users across many interactions within the system. And what do you do with that system, with that feedback that you have now collected? So what you do is at a given threshold, this feedback is incorporated back into the system. Optionally, the feedback can be reviewed by machine learning engineers or data scientists and corrected or re-annotated if required. And you typically incorporate a batch of feedback back into the system with the initial annotated corpus and retrain the model. And thereby produce the next version of the model. And we repeat these steps until we have reached our wanted accuracies or whenever, say a new variability is introduced in the system and you can perform this retraining. So as you can see in the diagram, we incorporate the feedback in our second supervised fine-tuning step and we add the feedback back into the data set that we are using for training the model. But some lessons that we learned while going through this procedure. So firstly, you know that AI systems learn more as they encounter new training data, but it is also important to test your model early and often to verify that it is actually extracting desired insights from data. So you should measure the performance of your system regularly as you add new training data and these regular measurements help you determine when your model performance is actually not improving with new training data, which either indicates number one, I need to refine your model itself or when it reaches a logical stopping point or actually change the initial training data that you had. And it is also advisable to go beyond the metrics of F1 score, precision and recall metrics as you start going deeper. And there are some metrics that you could track. For example, firstly, the number of ground truth that is a training and test examples that you're using in each iteration. You should be tracking what's the split of training and test. Secondly, you wanna be tracking the number of records in the ground truth for each label type that is in the new data set that you're introducing. How many are positive instances? How many are negative instances? And each artifact related to your AI system should actually be tracked in source control. So this includes your code, your model, your training data itself. And software developers are really familiar with the virtues of version control, but this is really important in machine learning, developing machine learning workflows as well. And secondly, what we learned, that you need enough variability in your training data such that your model is actually able to learn all patterns that you wanna extract. So firstly, too little training data provides less data for the model to learn and results in underfitting. And too much training data is also not good. It results in overfitting. So you need to have a fine balance between the training and test split. And because both overfitting and underfitting can lead to poor model predictions and thus affect the performance on the test sets. And hence, the selection of your representative ground truth is absolutely critical to training cognitive systems. And with this, we can look at a short demo of the model serving. So, can you see my screen here? First, what we are gonna do is, in this folder here, we have saved. So what we have done is we have trained our model using the Jupyter Notebook infrastructure and we have saved our models into a folder in a .pb format called model.en, a model underscore en, my bad. And what we are gonna do is try to create a Docker container using the TensorFlow serving API to actually serve this model and enable us to draw predictions from a web UI. So for that, what we are gonna do is first, actually, I have the commands here. Why don't I make it easy? So first, we're gonna pull the TensorFlow serving and we are going to run that. So I'm calling it serving base demo. And now what we are gonna do is next, we want to add our model that we have saved in model underscore en to the container that we pulled from the TensorFlow serving API. So, and now we wanna commit the changes that we made. Just gonna check here, if I can find my mouse pointer. Okay, awesome. So I'm simply gonna check if the documents are created. So as you can see, 18 seconds ago, serving model demo, that's the latest image. And now we no longer need the initial container that we had pulled the serving base demo since we already added our model to it and we are simply gonna kill it. We need to run the container. So, gonna be hoping that we could get it, awesome. So this has been served and what we can do next is look at a simple flask of Python file that we created for the client that we have for a flask app. So as you can see here, we run it on, we have actually, what we do here is get a post request on the same port that we open and what our post request actually does it, does is points it to the model that we have served using the TensorFlow serving API and get predictions and it's actually as simple as that. So we are gonna run this now, this works by Python. Awesome. So we have this URL, I'm gonna just paste the link here because I didn't want it to default going to Chrome. And yeah, so as you see there's like a text box here where you can submit your query, your sentence and what it should return is the probabilities for the two labels that we have trained it on, the negative and positive labels and the negative corresponds to zero, the label zero and the positive corresponds to the label one. And I'm just gonna enter random sentence here, I like that kind of talks as simple as that. And as you can see here, we see these are the two probabilities of the labels zero and one and it finally returns the greater one, which is the label one, which is of course positive and if we enter something which is negative, that should be the label, right? So it returns a label zero and this is as simple as that. So going back to our slides, we don't need our backup demo and how do you build such a system? So in order to build such a system, we used our open data hub infrastructure to do this. So what open data hub is, it's like an integration of tools to support machine learning and data engineering workloads for various personas like data engineers, machine learning engineers, et cetera, et cetera. So you can do ETL, you can run your models and you can even serve it once it's deployed and developed and also you can do stuff like monitoring hyperparameter tuning using the open data hub infrastructure and also the thing which is really useful for us that it provides custom images for Jupyter Notebooks if you wanna run your workload, say using the TensorFlow API or you wanna use Spark for ETL, you can use that and this really improves and enhances your model training and deployment procedures. So you can also, to learn more about this, you can also watch the recording of the talk given by Pete and Joanna from my team. I've linked it there and that's, I think about it. Thank you for listening. So this is the first time I've heard about BERT. I did some Googling on it. It looks like it came out from Google. Are you using the BERT PyPy module that I'm looking at, the BERT embeddings 1.0.1? Yeah, we are using the TensorFlow model, the TensorFlow version of BERT which comes in four versions. We are using the large, uncaged version of that. Okay, and how old or new is that, the one you're using? How old? Yeah, how long has it been available? Oh, it's a very recent development from you, Google, which came out in December 2018. Okay, yeah. You might have mentioned this already and I might have skipped it, but so you train your model on the IMDB dataset, right? And so the test accuracy and all the results that you are showing us, was it like from the test split of the IMDB dataset or was it from the Red Hat's own dataset or like how was the test like, you know, it was tested? Great question. So the F1 scores that I'm showing it is on Red Hat's customer dataset, like the customer service reviews that we are using. So those are the ones I ran the F1 scores on. But I trained it on the IMDB movie review dataset because that's the only huge dataset that we have at this point, but with the feedback loop, we are trying to collect more annotated datasets. Yeah. Yeah. Can you talk a little bit about the BERT network as in how big was the network and was it easy to train and whatever the hyperparameters that you were training, what that you were optimizing for? And one more thing, did you go back to the entity detection part with the BERT model or did you just didn't get to it? Yeah, great question. So first part of the answer training the BERT-based model was it was a little challenging because it was a two-step procedure. The first, we didn't bother to retrain the pre-trained BERT-based model which would take like two months to train on four GPUs. But what we did was we only worked on the fine tuning of the model which did not take a lot of hyperparameter tuning because in the example sets given in the repository, they had recommended the hyperparameters for our classification task like sentiment analysis. But besides that, it would take a lot of training time on only using CPUs, four cores and 16 giggram. So switching to a GPU infrastructure really sped that process up. And yeah, the second part, did you, yeah, so you asked if we also went back to the entity detection. So we did not go back to the entity detection as yet because that's still behaving pretty robust using this PC API. But we might wanna in the future use the BERT infrastructure for entity detection as well. Any more questions? All right, thank you.


Hi everyone, Sean with jaspyscasebreaks.com here doing 2020-2021 Panini Prism multi-pack cello one-pack break random team number 21 where we're giving away four spots in the $400 Yanis basketball mixer. So 30 spots, everyone gets a random team at NBA, no vet common ship. At the end of the break we'll take all 30 customers' names, randomize them, top four names each when it's spot in the $400 basketball mixer, which hopefully we can do tonight. So here is our list of customers from Bennett Page down to Brody Vaughn and Last Spot Mojo and the teams from the Atlanta Hawks down to the Washington Wizards. Dice roll to randomize both lists and pair them up. Separate dice roll, separate randomizer at the end of the break to give away those four spots. A 4-1, five times for the break itself. Fifth and final time from Revital down to Revital and five times on the teams. Fifth and final time from the Brooklyn Nets down to the Oklahoma City Thunder. So five times on the teams, five times on the customers, and five times on the dice. So we're not going to read through the full list and no trade window on this since it is a filler break but we'll take a look at some of the possible opportunities in here obviously. Hornets there, chances at Lamello for Revital. You've got the Kings, Tyrese Halliburton, Brody Vaughn, and Timberwolves there, Anthony Edwards, Sean Maddock. There you go. Obviously everybody else. Patrick Williams, Bulls, quite a few others in there too. Let's sort that by team, print, rip, and then like I said after the pack we will do another randomizer to give away those four spots. And here's our pack. Final list. There is the final list for the break. Gorin Dragich, Silver for the Heat, Revital, and Alexi Pokhachevsky for the Thunder in Revital. Anthony Edwards, Timberwolves, Sean Maddock. Jade McDaniels, Timberwolves, Sean Maddock. Paul George, Clippers, Revital. PJ Washington, Hornets, Revital, and Kendrick Nunn in the Heat and Revital. There you go. So that's the pack break itself. Now let's pop back over here and give away those spots. So here is the customer list again from Bennett Page back down to Brody Vaughn. It is the top four on the randomizer after, top four after six and a four ten times. Good luck. One, two, three, tenth and final time. Okay, so you can see ten times on the randomizer, ten times on the dice, and top four names after ten. So from spot five down to 30. Thank you guys very much for getting in on this. Hopefully I can do better for you in a future filler. We do have one more filler where you can win spots for this break in the store. And we do have a couple spots straight up that you can buy. But special thanks and congratulations to Julian Schiltz, Revital, Matt Arnold and Revital. There you go. Top four, ten times on the randomizer, ten times on the dice, and that was our top four. That was 2020, 2021, Panini, Prism, Multi-Pack, Sello, one pack break, random team number 21 from jaspyscasebreaks.com. I'm Sean, jaspyscasebreaks.com. Thanks for hanging out. We'll see you next time.


Hi, welcome to another episode of tuner it's talking. I'm Liam and I'm Magnus and this time We're trying out a new format that will probably keep for the rest of our videos We're like we do a spoilers free commentary section in the beginning and at the end We have a section with spoilers in it where we like to discuss the ending of the book and stuff for those who have already Read it or who just don't really care. Yes, and today We're talking about me and Earl and the dying girl by Jess Andrews It came out in 2012 and it's very apparent that it came out in 2012 The story follows this guy named Greg and his friend that make movies Eventually making a movie for a girl from Kimia. He's dying of it. That's the title It's a it's pretty depressing book. Yeah, but it's still funny. Yeah, it is it is still funny How did you feel about the sense of comedy in it? Um, I thought it was funny I thought it was very There's also a lot of segments that are in list format. There's just there's a lot of interesting like messing around with words and like formatting and I Think it's really creative and I like it and it definitely feels like like some teenage boys scatterbrained Attempts to write a book. Yeah, it's a very playful weird book and I think Like for the style of dialogue that it's going for It can be kind of grating because it's like what a teenager would be going through like conversations with like parents and friends and stuff So it's kind of nicer to read it in a script format because it's a little bit more like, you know, it's easier to read Yeah, there's less words more detached. Yeah, that's where it attached. Oh, and I don't know if we forgot to mention this yet or not But it's set in high school. It's both it's all of their senior year actually all the three main characters And I think that plays like an important role in the story Like it wouldn't really work if they were in like middle school or like a different year of high school I think it's very important Yeah, and it is definitely very much about I feel like transition and so the fact that's their last year It's it's it works. Yeah, obviously. Yeah, and they talked about like college and stuff and I think it portrays like That feeling of being someone who like it makes casual little movies with your friends as we do I think it portrays that super realistically like I read parts of it I was like, wow, this is like so relatable. Like I've literally experienced this before like when He like mentioned his movies to someone and they were like Oh, you should like submit those to a college and go to like film school with your little films And it's like my movies aren't that good, you know, they're just for fun So would you recommend this book to anyone and like what's your rating out of 10? My rating it probably like I saw it's seven out of ten It can kind of feel like it's repeating itself and how much it says that Greg is insecure and then he hates himself but that's sort of a minor annoyance if you're reading it because it is so fun and playful and There is so much other interesting stuff going on in the story that that doesn't interfere too much, but it can't get annoying I probably give it Yeah, like like a six or seven.   It's like the it's like that level of self-deprecation It's a little like ungrateful, which I guess is true a teenage boy experience But still it definitely can be kind of annoying to read, but it's still good Um, I think we've talked enough about the main character Greg I think we should talk about the two other titular characters Earl and the dying girl What were your thoughts on them? Did you like them? Did you like them more than Greg? Which one of them I definitely like as as like a person forming an opinion on Greg even though he's fake as a person I like Earl and Rachel Moore. Yeah, but I definitely think Greg You know works better as the center of the story just because Earl and Rachel even though Rachel has leukemia obviously they both have their life together Yeah, and that's how they play off Greg because Greg does not yeah, and Greg has a lot of issues and All right internal issues and Rachel and Earl both have more external issues, right? And you could obviously make a movie about them, but you'd have to change the whole story Yeah, the narration probably would be is like just like depthy and interesting. Yeah, but yeah, I think as characters Just thinking of them as such I really like Earl the most. He's so interesting and weird and Funny I kind of prefer his sense of humor over Greg's. I don't know what that says about me, but I love Earl He's like so weird and silly and I just like I want to hop inside his mind and see what's going on in there No, he's definitely like the best character on the book I think and I do love how he's like a he's like the straight man to Greg's like self-deprecating Insanity constant self-hate, okay So we are going to talk about Rachel, but we're going to put that in the spoiler section, which will be starting right now just Pre-readers and risky kids can watch this section Yeah, I want any spoilers scroll We're gonna be exploring the whole book just read it first and then come back and watch it go check it out from the library Come on. Yeah, okay spoiler section spoiler section Rachel's character. She dies I will say the plot of the book is pretty predictable It's like yeah, they're in high school. He's kind of a Weird little guy. It all turns out pretty much exactly how you expect it to turn out by the end But it's still pretty good and it has a lot of good little moments along the way like the fun moment the fun moment Oh my god. That was like my favorite part of the whole moment is hilarious Oh my god. Yeah, good a quick synopsis if you forgot or if you are being risky and haven't read the book Earl and Greg are best friends with this teacher and he's like kind of crazy Yeah, he's a weird teacher and he has this Thermos full of fuh that he calls the Oracle that is just in his office And they asked to try it one day and he says no and he leaves the room He's like really adamant about it. Mm-hmm, and then once He leaves they go and try it and then they end up stoned out of their minds And we love to talk about this. Okay, they end up there was drugs There was drugs in there were drugs. They are on drugs in my life 30 pages and it's a delight. It is a life Very funny scene Greg is a mess Greg is a total mess and he has to go and talk to Rachel Who is yeah, we dying of leukemia. So she's a little depressing. Yeah, it is it is pretty rough So Greg and Rachel's relationship is kind of Strange. Yeah. Yeah, everyone at school thinks they're dating because they're a guy and girl that are friends But really they're just friends. Yeah. Yeah, they're just buddies and it's like really complicated because she's dying So, you know, they don't really know how much they can get done with their friendship And like how much they can actually do so it's still kind of like Standoffish the whole time, you know because they see no point in it But it's it's like interesting, but I love that it's not like saccharine, you know, it's very real With the way that his character is he's very selfish in a way That's so true to being a teenager and just being like a human being You know, I think everyone is a lot more selfish than I like to admit But he's very truthful and I think the whole book is a really truthful depiction of being in high school and experiencing a tragedy and how people react to that, you know Yeah, and I thought it was great and usually with that stuff.  It didn't overdo it It was if anything not sweet enough, but yeah, I thought it was really well done Another thing about the style that I really loved was how you can tell that this guy just has a lot more experience writing movie Scripts because there's so many great callbacks within it It's like watch it's like binge watching a bunch of episodes of Full House like the the callbacks are so good Like in the earlier part of the book When the fuffings have buffing happens their teacher recommends them a restaurant and the book ends with them going to that restaurant And I just love all of that stuff. It makes it really enjoyable to read. Yeah, I Enjoyed that there was a lack of romance between him and Rachel Usually I feel like most romances and stuff are so forced, you know, it's like this doesn't need to be here but that was Like there wasn't actually much of that at all and I thought that was really nice, but I feel like the way that his whole arc revolves around like The death of Rachel mostly it's like, I don't know it just felt kind of weird like She's just like a prop in the story. I wish that they had talked more about her But I guess that wouldn't be true to life because it's based off of just Andrew's like actual life experiences I don't know. Yeah, it does.  That's just his stream of consciousness and his like Thought process gets annoying. Oh, yeah Thanks for watching our video. Go research some alien vomit. We'll see you next time Bye and check out the book from the library. Check out the book from any Long Beach public library in your area Check it out. We want you. We want you Okay, bye


It's Diddy Canem back today with another video. Huge thanks to you for tuning in. If you're not subscribed, go ahead and subscribe one. Give me a thumbs up and do not skip those ads. In today's video, we are gonna do two go-share orders and we're gonna learn the difference between being a helper and being a driver. Are you guys ready? Let's go. On our first order, we are gonna be a helper. I'll pick up paper. Y'all see what's going on, baby. We are picking up from home goods. We're gonna drive 10.2 miles, 21 minutes of drive time, and we're picking up a large dresser and we're gonna receive $41.67 enough money to pay the rent. Let's go. 12 seconds later. So we have a huge problem.  I'm keeping it to you because I'm located a little upset about this. We get here at home goods to pick up the order. We get here at 11.30, our pickup time is 12 o'clock. At 11.45, guess who called me? The other person who we supposed to help to pick up the order. He called me and told me this. So you said you would be here around 12.30 to 12.45? Yes, could be sooner, you know. I mean, all depends on the time and traffic. So as you guys can see, he told me he's not gonna be here until 12.30 to 12.45. So I'm like, I don't know if I'm gonna wait all that long, baby. I already been here since 11.30. I do not wanna see here for another hour to hour 15 minutes and play games with you, baby, because you got another order and all that stuff. That ain't gonna do with me. So what we did was reach out to support and guess what support said? Support you out of pocket. I'm gonna tell you guys a little bit after this. Support you out of pocket. So they asked me, can I see her and wait for him for that time? Absolutely not. Then I asked them, if I do wait, will I receive extra pay? They told me no, because they cannot charge a customer more money because somebody was late. What they gotta do with me? Take some of his money and give it to me if you got the problem with that. Now, my main issue with all of this, this is what I have a problem with. On GoShares website, it said that if I cancel between 48 hours and one hour before the project start time, I will have to pay a $20 fee. If I cancel less than one hour before the project start time, I will have to pay a $30 fee. And if I do a no show, that means I don't show up at all, I will have to pay a $50 fee. But this is my issue. Guess what?  Zero dollars. The lady told me that they're gonna waive my cancellation fee like I did some wrong. Come up below and let me know if I'm tweaking or not. Now, just because of all of this, I need you guys to smash the subscribe button, give me a thumbs up and do not skip those ads. Guess what? We still gonna get to this bag. Let's go. One week later. Guess what? It is a week later. And guess what we got? Another one, another one, baby. We have another order on GoShares. The pickup place is home goods yet again, but not that one, another one. And we are gonna drive 2.1 miles, six minutes of drive time, and we will receive a payment of $67.31. Enough money to pay the rent. I know you wonder what you're picking up. Guess what? We are picking up two chairs. And guess what else? That's great about this order. It is only for one person. So we do not have to worry about anybody else. We're gonna be the only driver. So we're about to go out here and get busy. I'm glad you guys are with me. Let's go. It's called GoShares. GoShares, yeah. Uh-huh. So people sleep in those chairs. I actually see the guy here at a bed. He had a bed in one of these. He had a kitchen and everything here. Yeah, one of our friends told me that he got one. Right, but if you don't want to roll it, we can just roll it and I have a curtain right there. I'll pick it up. It's not that bad. You got it? Yes, sir. He just said it right here. Then I'm gonna put this and we're gonna switch this in. You should move that one in and then just give him the ladder. Thank you very much, sir. You're welcome. We're gonna go here. Okay. Back on the ladder? Yes, sir. The cleanest van I've ever been in. See, everyone is impressed with this. Everybody is impressed with the van. He's the only human in me. I've seen a lot of vans in a van look like this. You have to sit down and show them. Let me get this cover and everything situated. How big was the photo first? I think he went in. Oh, you moved fast. Just right there. Right next to it. Right here? Yeah. So you guys know where... Just down the street, right? Just along the street. So I'll meet you there. All right, sounds good. Great. I'll adjust anything. Thank you very much, sir. Good job, man. You guys have a good one. So I'll meet you there, okay? Yes, man. We're gonna separate everything down. We'll be there in a few minutes. Okay, great. Guess what, baby? So, instead of the 6731, guess how much we got? Hold on, wait. Let me push up. 8731, we went out there and got it done. And it was super sweet. The guy helped me load everything. And then my business partner, I got everything out the vehicle, then we roll, roll, roll our belt gently through the storage unit, baby. And I want to say, she was shout out to Jen. She's a great lady. She helped us out a lot. And scared with this extra dub. And she's very nice, baby. So now we are going to get into the difference between a helper and a driver. Number one, a helper usey makes less money. Now, for my first time doing GoShare, guess what? I didn't make that much less than the other guy. I only probably made like $12 or $13 less than him. And the driver is responsible for communicating with the customer. So you're supposed to tell them when you get there. Then you also supposedly are responsible for strapping everything down in the back of your vehicle because the helper does not take anything in their car. They don't take nothing in there.  Now, the benefits of being a helper. I think that the benefit of being a helper is you don't really have to worry as much. You don't have to put none in your car or you got to do a show up there, help them load the stuff, help them unload the stuff. And that's really all you got to do.  But let me say this, but you may have a smaller selection of orders. You might not get orders all the time like that, baby. But as a driver, you are going to make more money but you do hold all the responsibility. That's contact the customer and also make sure you reach out to the helper to let them know that you're on your way to the store and what time they're going to be there and get everything situated between all parties, baby. All in all, I do like Ghost Share. I think it's a good app and I think that if you are there and you want to do stuff like this, you definitely should sign up so you can go out there and get busy. My few problems with the app is, honestly, I do not like having to worry about other people. I don't like it. It's just a thing that I have. I like to worry about myself. And just like you guys saw before, the guy was telling me he was going to be late and they were going to sit there waiting for an hour now. I don't want to do all that, baby. I want to go there, be on time and get busy. Now what happens if I'm a helper and a person is driver and my driver is terrible, he's late and all that stuff, he's going to affect me too. He's going to make me late and he's going to make the customer not appreciate the job that we're doing because he's playing around paying games. It doesn't mean I'm not going to do it though. I do like to go get busy. Also, I'm going to say one more thing. One more thing that I do not like about the app. Ghost Share, y'all be tripping on this app. I'm going to tell you guys what you have to do. So you accept your order, right? So say we had to go to a home goods, right? So you drive the home goods, you have to slide, you have to slide when arrive. Then you have to go in there, you have to look at the items, make sure everything is good. Then you have to slide again to let them know that you're going to load the items. Then you have to slide again where you're about to leave. Then when you get to the place, you're dropping it off at. You have to slide again, let them know you arrived again. Then you have to take it where we have to take it to. Then you have to take a picture. And then get to what you have to do after that. Slide again to confirm you dump delivery. Why do I gotta slide on them times? All I want to do is go in here, say I arrived, get the stuff, put it in the vehicle, take a picture maybe one time to let them know it's in there. Drive to the place, take a picture of the approved delivery and be done, baby. They want you to, they want to slide. They want to slide, it's surreal. They want to slide everywhere, baby. But all in all, I think you guys should go ahead and download the app. I hope you guys enjoyed this video. Again, if you are not subscribed, go ahead and subscribe and give me a thumbs up and do not skip those ads. And lock in tomorrow cause we get back to the bag. Why we get back to the bag? Cause 2023, it's big bags season. We don't keep on getting my reason. I'll see you guys on the next one. We going, we going, we from you already knowing the DDK and I'm on my way.


Easy the all exotic nice It's for a primary. All right, come on. I'm decrypting games Right. I got a strange coin from that. Come on Jade Robert Jade Robert Jade Robert. Yes Finally finally Finally I've got it Finally is mine. I don't care. It's tonight. It's the Jade Robert Yes, yes, yes Oh Got an exotic somewhere in there, and I don't know what it was Didn't buy from sir.  It's all that to to to get back get back That enough 30 step.


So, what do you want to talk about today? Well, yeah, that's a good question These slides took me a long time and I don't think it's worth the payoff, but let's find out. I was gonna say they don't look that good Hello, sir Hello Jake So I occasionally get comments on the video and people think I'm Surma and people think you are Jake So I think we we should sort that out and you see what I did there, right? I've called you by your name I don't usually shout my own name out But maybe maybe we could put a little thing along the bottom which makes it like super clear who's who because you know import for Like import for our individual brand identity. Anyway We've talked a lot about the the size of images, right and how to make them small But I want to dive a bit deeper and look at the different styles of loading an image when I see a page like this it feels like There's something missing, but I don't always know what I mean It's good on you that the space that there is a blank space because on many pages We don't even have blank page a blank space And you think oh this site is ready to read and you start reading and then things start moving around and it's really frustrating Oh, yes The absolute worst thing that can happen here is a layout shift But this site this site has at least left the space for something But is it a photo is an illustration is a graph is a piece of interactivity like it could be You know more than just an image So a smaller image at this point will reduce the time that the user is in this kind of what's going on phase But we can actually do something while the image is loading as well And that's what I wanted to focus on in this episode You might have seen some types do this I want to say are you going to talk about blur hash because that that had attention for a while Yes, so this is a blur hash or you know some other Form of making it clear. There's an image here. It could just be a couple of gradients or something like that And I would say when I see this it's clear to me now that there's supposed to be an image here It's probably not a graph, but it could have called content in it Like it could have text over the top that wouldn't be obvious from this view What I'm essentially saying is sometimes if there's a slow loading image like this a lot of time I don't care. I just going to read the content, but you only do that once you know the image is Just illustrative of the content like it's not a call. Yeah content in of itself You can solve this problem by throwing more bytes preview like this and once I see this I'm like, right. Okay. It's a kid kid with an ice cream Fair enough. It's just an you know, it's supplementary content so I could just go ahead and read the article and in the meantime the image can continue to load and That's a much faster user experience compared to like having nothing and then the image appearing You know fully loaded meanwhile users just staring at a blank area wondering what's going on But there are many ways to tackle this problem There are some solutions which are pretty new and there are some which are almost 30 years old And I'm going to try and cover all of them In a small video I'm going to start with the old one going to start with JPEG. That's the 30-year-old one, right? 29 I think but there have actually been innovations in this area even in the last few months I want to talk about those as well. So here's an image. That's pretty hard to compress for whatever reason I don't know why this is a really difficult image to compress I guess it's because there's lots of sharp lines Lots of different areas of the image different things going on. I mean technically it's probably quite easy to compressable just look Yes As I was trying to avoid that with this image and it turns out you have to throw a lot of bites at it in order for it to Not look terrible Especially in some newer image formats It's harder to compress this image in you a newer image formats, which is unusual but does happen But with JPEG they're both 300k. They look pretty good. They're both the same quality But they're quite different in how they're encoded Here's how they look when they're loaded over a 2g connection. I made it super slow so you can see what's going on now I'd say That the one on the right feels like it loaded faster Like you could tell what the image was a lot sooner In fact, it kind of feels like the one on the right has finished loading But it hasn't it's still filling in tiny details. These are you know, they take the same amount of time to load because they're the same size right There are people who don't like the effect on the right of it loading in multiple scans like that But I think they're wrong, but I mean don't don't you remember from I mean I certainly do from the dial-up days where most images not most but many images behave like the one on the left the Progressive not progressive, but they're just like with a line-by-line appearance of the final image and then your internet would cut out or Buffering what happened or something happened just when the the core part of there was about to have me like there's the The character I was waiting for something and then the image just stops loading. Nothing is more frustrating Exactly and whereas the one on the right which yeah is a progressive JPEG You get like this low quality version first and then it comes in and fills in the tiny details The one on the left is not progressive some software calls it baseline although that's sort of a slightly different thing But you know, they sometimes use that to mean and not progress as well a baseline JPEG can't be progressive But it also means it can't do some other things Anyway, Squoosh the image compressor that we work on that creates progressive JPEGs by defaults because we we like it We use Moz JPEG Mozilla's JPEG encoder Although there is an option in there to create the non-progressive kind if you really want for whatever reason Now I said there'd been an innovation here So I'm going to take a look at that Chrome and Firefox have received an update to their JPEG decoder recently So here's what it looks like compared to Safari, which which hasn't so three two one go And it might be difficult to notice the difference if you're watching this on like a small YouTube window or for you Soma who's watching it through a teleprompter But it's really noticeable at full-size like for real users here. It is up close. This is the first pass in Safari You get this blocky nearest neighbor Scaling whereas in Chrome and Firefox you get this much nicer smooth appearance and that's pretty new Like Chrome and Firefox were blocky until recently So it's the the blocky part. I think they call that the the DC Layer, right? It's literally just the because JPEG divides them into eight by eight blocks. Are those just the eight by eight blocks With one solid color basically. Yes, that's right It's the it's the DC part of the encoding. So it's solid colors And yes, what you're getting in Chrome or Firefox is just an interpolated Version of that. That's yeah, most Progressive JPEGs will have the first phase just being the DC information. So they're both basically the same data Just that Chrome and Firefox are applying a post-processing effect on the decoder side to make it look more pleasant while more data is being loaded Yes This is literally the same image and loading in each browser at the same speed. It's what you saw there Interesting a screen capture of it. Yeah, so Chrome and Firefox use LibJPEG Turbo as their decoder where Safari uses a custom one. I think a one that Apple made So it doesn't have this benefit yet They might add it. Also Safari's decoder sometimes just doesn't decode progressive images in a progressive way Like it just waits until the whole image is there and I don't know why it happens with some images and not others I don't know. I guess I guess it's some bugs But We also have bugs in our decoder and I found some bugs just making the slides But one of the reasons it took me so long to get these slides together is I started finding bugs in our decoder While making it so then had to go and file those bugs. We sometimes fall back to this blocky effect too early like where we shouldn't That's something we need to fix But JPEG is actually really amazing as a format because you can script like when you're encoding an image You can script what the progressive passes should be like how much detail each pass should have What detail it should be missing and how many passes it should have in total. It's really flexible We might actually ship our own in Squoosh That makes yeah, I saw you had like a draft PR open and I saw you know You were throwing like moving around some some c-code from the Mods JPEG encoder And I never realized and I know I ported the Mods JPEG encoder originally And I never realized that we had detailed control over the the individual passes as they are called of the JPEG decoding That's really really cool. Yeah, so what Mods JPEG will do is it it does the DC pass like those eight by eight blocks and then it as soon as possible Gives you like a low quality version, but with a bit more data And that's actually not great with the the new decoders that Firefox and Chroma using because it throws them into a sort of more blocky Output much earlier than we otherwise would so what I'm trying to do with the one in Squoosh is to avoid that mid step But still deliver You know a sharp image as soon as possible So I'm not going to ship that yet because I want to wait until we fix our decoder box Because then I can get to see exactly what the difference is But if it's still better, then then we'll ship that but yeah, I'll put a link to all of this stuff in the description All right, that's enough about JPEG I want to play a little game and it's all right guess the formats And I'm going to show you an image loading and it's your job to guess what image format it is okay It might be JPEG it might be something else because it could be a different form of JPEG anyway Here we go three two one go What you're thinking you still think you still there I I'm trying to think I think that might be PNG. Oh Well No, you're right. I'll give you that in one. That's this is the lesser spotted interlaced PNG so this is a feature of PNG that's Not used so much. It uses a form of interlacing called Adam 7 which means it seven scans it starts off with a one eighth resolution image a bit like the JPEG we saw before and then it doubles the horizontal resolution Then doubles the vertical then horizontal then the vertical and you end up with seven passes in total GIF has a similar thing But it's only four passes and it only improves the vertical resolution. It starts off with the full horizontal resolution But what I will say is Don't do this don't use interlaced PNG's it makes I mean you've been looking at PNG compression and JPEG XL compression recently how it uses the the pixel before to do prediction about the next pixel This form of interlacing makes that very hard So it ends up being about 20% bigger. It's not great for compression Generally PNG should be quite small So they don't really benefit from this interlacing thing. I would say If you're targeting an old browser Where you need the alpha transparency, but otherwise it's full of the data. So it's a huge PNG Maybe do the interlacing thing But otherwise no Squoosh doesn't do this right now, but I have a draft PR ready to go Do you know the reason I didn't like push this PR your way is I thought it would give you a clue to this question I was hoping you would get it wrong, but you got it right anyway But we'll ship interlaced PNG is in Squoosh off by default of course Nice, I like it. Okay Another question here we go.  It was full resolution from the very beginning just top-to-bottom. It has alpha transparency So there was some form of progression like it you you saw some intermediate steps, but as you say it was It was just a top-to-bottom scan. It was just a scan line basically. So yes This has proper alpha transparency, not just a mask. So and the amount of colors I'd say give us out JPEG is out and it Could be PNG it could be a VIF I guess it could also be JPEG XL, but I actually don't know I think JPEG XL progressive is the whole point that they're marketing is it's the same progressive rendering as JPEG So it would probably actually start with a low resolution I am going to say It's gonna be JPEG or AVIF Not a PNG or AVIF PNG or AVIF. I'm not sure how I would distinguish those to adjust by the Progressive render. I'm just gonna put my money on AVIF because you haven't had that yet It's a reasonable bet, but in this case, this is a lossy I forgot about webp The one you didn't mention. I think if you thought of webp you would have guessed it was but it is specifically Lossy webp so yeah top-to-bottom scan no fancy progressive rendering like JPEG has Part of this is because JPEG is an image format Whereas webp is an image format created from and the keyframes of a video format a VP8 and video formats Do not need multi-scan progressive rendering. They just need to display one frame at a time So it's not something webp can do in fact from what I'm told It was actually a lot of effort for them to even make the top-to-bottom rendering work It was yeah, they had to do a lot of shifting around of data to make it work But there was another element of the load there, which is interesting What I'm going to do here is I'm going to compare lossy webp with lossless webp Lossless webp is like a whole of a format. It's not related to the video codec at all. I'm going to start them now Now the lossy version finishes first because it's a smaller file But notice how it took a lot longer to get started compared to the lossless version Yeah Now have a hunch go on then. What's your hunch? I think You know lossy webp is lossy But one thing that I have learned Throughout our work on Scrooge is that it's very hard to lossy compress the alpha channel And so if you have lossy data You probably have to encode the alpha channel separately lossless because otherwise because if I know it's going to look really really weird That's that's correct. I would say correct answer. Maybe not entirely the right reasons okay, it's it's more of a product of it being a derived from a video format again What these formats tend to do is they you know they encode channels one by one And this was the thing that was difficult for webp to you know untangle So they were like delivering things together, but they didn't do that with the alpha data So the alpha data sits at the front of the file and you're correct It is lossless it uses lossless webp for the alpha data It sits right at the front So that weights that we had at the start was it loading all of the alpha data before it could start adding the color data Which is you know invisible exactly And Yes, I mean they could have done it the other way around but alpha data tends to be smaller than the the rest of the data Whereas lossless webp because it's a pixel by pixel compression. It does the alpha data along with each pixel They could have found a way to interleave the alpha data, but it especially would be in completely different format not easy and Lossless alpha does work something avi f does quite well But yes, that's not how webp does it. Oh, I didn't know I didn't know that avi f can compress loss loss fully loss fully Compress alpha and not have and deal with the artifacts that might happen It works really well So when people struggle if you've got like a lot of gradients and stuff in your alpha channel Whereas that's where avi f will do really really well. All right next format. Here we go three two one go any early guesses There we go So that is an image format that has no Progressive capabilities, that's correct Um Actually now that I think about it I don't even know why I was considering avi f because I think the whole point is the avi f currently doesn't do progressive because again It's a video format thing. It's probably avi f. You are correct. Yeah, this is it the avi f decoders in chrome and far fox They don't have any intermediate rendering at all. It's not even clear whether they can I think maybe the same problem again like the the two color channels are brought in first maybe it might not even be possible for them to ever do any kind of You know even scan line or progressive rendering here and I sped that up compared to the other demos we've seen I Think avi f is magic. It's my favorite image format right now, especially because it's in chrome and will soon be in firefox I've written a big blog post about how great it is But there are some kinds of images that it struggles with and this is one of them I had to throw so many bites at this image To prevent like ugly flat areas appearing it ended up bigger than the jpeg in this case It's one of those outliers Not usually how it goes. It's usually a fraction of the size of the jpeg sometimes like a tenth of the size and it still looks okay Not not the case here That's the whole point of scoosh where you can try these things out because I think one of the things that we really want to Get people to understand like there is not a single image format to rule them all like There's different types of images where different image formats excel at and so it's often the case of actually taking the time At the very at the important images on your website the big ones actually take the time and look at What scoosh has to offer in the different formats and use the ones that work best for that specific image? Absolutely? Absolutely? So I this way that you get nothing until you get everything with an avi f I've been proposing a way to mitigate this. I know you've seen this already It looks like this So this is a four point three k avi f put with a blur filter over the top So it's a tiny little image that can sit at the front especially compared to like 300k for the full image now Without the blur it looks awful Kind of very sort of alien almost art in some way But yeah, once you apply the blur I think it looks like a really good preview and the avi standard already allows multiple images to be in one Container and those can be tagged as like thumbnails So what we're going to look at is you know, if there's a thumbnail to start the image We could show that early in the browser and then like maybe apply this blur filter to it All just ideas right now, but I'm hoping we get something like that So you'll you'll get a preview like this straight away and then You'll get the final image wants it wants it downloads And I mean, yeah, if if the the final image is 300k Adding another 4k isn't really that big of a deal. It's an increase by 1% So your users can get a preview of the image much much earlier, especially for avi f Like if you think you're you know, you're on 3g Downing 4k will be significantly faster than downloading 300k So the time difference will the user sees something will be massive Absolutely, and I'll put links to the spec discussion and some more demos of this effect in the description All right, one more example. Here we go. Three two one go Little gap at the start Oh, and there we go And you know, I don't know if you can see this you might not see it on the smaller screen But we've got kind of these I can see that this yeah blocks appearing of higher resolution it exactly uh, so this is like a a two phase progression sort of like you get the low detailed dc t Similar to jpeg the eight by eight squares and then it's going and filling in The the the full resolution block by block This was a jpeg xl That would have been my guess. Well, it's the one left because that's the one there was. Yeah This doesn't work in any browser yet jpeg xl is behind a flag in chrome and in firefox, but there's no progressive rendering yet A little bit like jpeg. There's multiple ways That progressive rendering can be done and that can be done at the in-code time But also the decoder has has some say in the matter as well Um, this was the settings I was recommended it can do more passes and different kinds of passes Yeah, currently in chrome and firefox it loads more like an avi avi f you get nothing and then you get the whole thing But jpeg xl has been designed with this progressive rendering in mind So hopefully that's what we'll get when it lands in in browsers proper So where does this put us? we've got these Three formats that have some kind of progressive nature. We've got jpeg We've got jpeg xl and then we've got the Haki idea of the avi f with an extra image at the start and not png. Oh, I'm not including that rubbish The image is so big. It's not worth it. Uh, I'm gonna load them all at the same time. Here we go three two one go jpeg still does really really well here um jpeg xl gets to full detail a lot faster because jpeg xl was the the I could get To a decent quality with a much lower file size with jpeg jpeg xl in this case Um in the way that I couldn't with avi f it did a much better job of it Um, but then yeah, so jpeg xl gets to full quality. Um quicker than jpeg but jpeg got to the lower quality quicker than jpeg xl And that's really tiny avi f with the blur filter that was that was there first But it takes forever for it to get to the the full version just because it's such a huge image in this case I'm really excited about the different innovation in this area in different directions that this is taking My gut feeling is still that I will be probably using avi f for most Images on the web Because I'm I'm quite happy with the kind of loss that I get with avi f like it smooths images a lot, but in most cases um That a bit like the the image I started with like the kid eating ice cream You don't need full detail. You just need to give You need to not look ugly But you just need to give the impression of what the image is as soon as possible and avi f tends to do really really well with that but The philosophy of jpeg xl tends to be more for like big high quality images. So things like unsplash flicker if you've got a A news website that you've got a dedicated images page then maybe jpeg xl is going to be the better thing to put there Um, and you get this lovely progressive rendering to go along with it, which is I'm really excited about that I mean I'm actually also quite excited to see If and how web p2 will Fair in the battle of progressive rendering because one thing For me at least that web That sets web p a part is jpeg xl was designed with the web in mind avi f wasn't designed for the web at all it was designed for video Web p is not designed with the web in mind, but specifically for the web They made a whole bunch of shortcuts with like we are trying to find a format For the web jpeg xl wants to work on the web but also work in other use cases And I think that different scoping will allow them to Have a whole bunch take different trade-offs than what jpeg xl As you were saying like they're actually jpeg xl does really well at high quality images in my experience Um, not necessarily at the let's Make it look good with less bytes at screen size necessarily like they do there well sometimes as well But not all the time avf in my experience does better in that scenario But I do wonder if web p2 will Make interesting trade-offs and become a contestant here. Yeah, and it's really too early to tell with web pv2 It's it's all sort of hype right now, although we do have it in squoosh a preview But I do like the way they're heading they're heading like what can we do? That's similar to avif but with all of these web benefits Uh on top and if they deliver on that Then my favorite will switch from avif to web pv2 if they deliver on that because I know they're looking at all of the progressive stuff as well so it's Yeah, we'll do another episode on it When when there's something to show there, but it's it's inclusion people will have a play but it's it's super experimental right now In the meantime, there are other techniques. I showed you this page earlier, but with a blurry preview You mentioned blur hash. I'll put a link to that That's a way that you can create these previews in just a few bytes in this case. It's 50 bytes but You also need to ship a decoder for that which is kind of Fine if you're a native app because you can just put that along with your apk or whatever But on the web if it's your main image Then shipping a decoder along with it becomes or you have to factor it in certainly Um, it's only 1k. It's super small 1k with broadly compression but If you're talking 1k and then a few bytes or the images themselves You know, here's what a 1k webp looks like with a blur filter over the top Like you get much more detail for around the same size if you factor in the size of the decoder And also, you know, it's it's javascript reliant It can potentially break or not even run for some people and it will probably, you know It will occupy the main thread while this kind of image decoding can happen off the main thread There are lots of trades of involved in shipping your own image format versus using something that the browser already supports Yeah, and in terms of trade-off, it's worth mentioning that these blur effects are not free either They can actually be pretty expensive. So that's always something to to measure as well versus like, you know What kind of trade-off are you making there with that with that blur filter? So it's not something I would use a lot on a page But yes, like really one of the best ways you can deal with this thing right now Is just use a format with a nice progressive render. If it's a big image Jpeg is right there right now in squoosh. You can use this progressive rendering stuff Um, and yeah, it's an old image format But sometimes it will give you that best result especially for for you know images that are like 100k 200k If you can get down to 20 30k with avi f then it's that's a better option. But yeah I find it really interesting as you say jpeg being close to 30 years old and actually still it is literally competitive to The next gen formats in some scenarios because it's designed for the web um I'll also put a link to a discussion where the largest contentful paint metric is is looking at How they should consider a progressive image rendering because they don't right now So I'll put a link to that because they're they're going to consider some kind of That cutoff point an amount of detail is good enough um So that will be very important when we start getting more progressive formats, especially things like jpeg excel, but That's all I wanted to cover I think that was a good episode jake. Oh, thanks. I enjoyed it. I learned something Hey, do you know what as long as you press the little thumbs up icon that's that's all I care about It's gonna be one one thumbs up 800 down But now I've said that it's going to encourage people to click it Do you know never mind edit this bit out just don't don't show this bit lucas cut this bit out cut this bit out Definitely cut this bit out. Bye Bye We've talked a lot about the the size of images, right and how to make them small Okay, as you said, I was wondering where you're going with ice cream, but Yes Well, probably don't have that slide on the screen yet. So I mean that's not to lucas Whether this reference works on that it's going well Uh, but I want to dive a bit deeper and look at the different styles of loading an image


Welcome to FIG's Weekly Economic and Trading Update. I'm Mark Bailey and this is Jessica Rossett. So Mark, all eyes last week were on the Fed meeting where they raised rates, as was expected. However, the dovish tones from Janet Yellen did catch the market off guard. Also, UK Parliament gave Theresa May permission to start with Brexit and we also had some disappointing domestic job data released. What was your take on it all? Yes, if you kind of really whine back to last Friday when we got the non-farm payrolls and the job data there, which was actually stronger than expected, that kind of ticked the final box that was going to hold the Fed back from hiking. In the meantime, we also got the CPI data and the retail sales, which were pretty much in line with expectations. So as you say, the Fed did hike 25 basis points to 0.75% last week. And as a result of that, everybody was looking at the blue dots. And that was what they were expected to focus on because, in all honesty, the hike was priced in. In terms of the blue dots, they actually stayed reasonably similar. There was a slight movement in terms of the consensus into a more concentrated target zone, but they're still only expecting two hikes this year and three next year. And as you rightly pointed out, that surprised the market. The market was expected in a much more hawkish tone and had positioned for that as well. So you actually saw a really, really strong rally in treasuries. For example, 10-year US Treasury yields rallied around about 11 basis points. They fell 11 basis points to, I think it was 2.49. And that was partly due to the fact that the statement was more dovish than expected. So that was pretty interesting. Moving forward into Australia and the job data there, it was slightly weaker than expected and employment did tick up. The jobs creative was actually weaker than expected, but perversal was actually a fairly positive full-time, part-time split. But again, I think it does just put the RBA slightly on the back for it, maybe a bit more defensive in terms of looking to hike rates in 2017. And if I was looking at the RBA's statistics, I would probably be still looking at a cut. Interestingly as well, and something that people aren't really talking about is that the banks are hiking mortgage rates. We've seen this in investor only loans and on some fixed rates. But what we actually saw this week was the NAB raised its standard variable rate for owner occupiers by 7 basis points to 5.32%. If that is continued and the other banks follow suit, then that will mean a higher cost of capital for mortgage holders. The RBA has always said that it will look through in terms of what we're seeing as a cost of capital, and so if that continues, then they're more likely to cut rates as well going forward. So that's what I've been doing this week. Have you been mining the US high-yield sector again this week? Yeah, so as I mentioned last week, the IM Gold buyback of the 2020 dated maturity bond has certainly created a flurry of activity in the US dollar denominated space. So we've managed to secure an institutional bid at the call price of 103 spot 375. And this means that clients are able to exit the bond now at the same price without having to wait until the call date, which is in early April. So clients have taken advantage of the good supply we have had in the Kindred 2023 maturity bond and also the Frontier 2025 maturity bond and been able to lock in the yield on those bonds now rather than having to wait. And so the beauty in doing this is that they have been able to maintain their US dollar exposure and move slightly along the tenor curve to these longer dated maturity, dated bonds and also diversify their portfolio away from commodities and resources and into some other names as well. Also with the Frontier at the moment, it's been coming at a better yield than where we have seen elsewhere just because it had some softer performance, fourth quarter performance data released in early March. So they've been able to get that at a better rate. And Jess, anything happening in the Australian dollar bond sector? Yes. So as you would have seen last week, Fik has added a couple of new tier two floating rate note bonds to its retail product offering. So these bonds were available previously only to wholesale and now retail investors can purchase them as well. So one of them is Emmy Bank 2020 call bond and then the other one is ANZ 2021 call. And so the beauty of these bonds for retail is that there is very little in the investment grade floating rate bond note bonds available for retail investors. And so this is a great opportunity for them to rebalance their portfolio and put an investment grade allocation in there. And they come in quite attractive yields as well for their investment grade rating and it's around the 4% yield on those, yield to call on those. And I think that sounds pretty attractive for investors to diversify, pick up some investment grade rated paper as well at what you'd say is attractive yields as well. Yeah, that's right. So next week we have RBA Minutes released. What other news and events should investors be aware of? So other than the major event on Saturday afternoon in England where England played Ireland and Dublin for the Grand Slam. Of course, yeah. It's actually a pretty light week. As you say, we've got the RBA Minutes but I don't think there'll be a huge amount of additional information there. And also we've got the House Price Index coming out as well in Australia which does play into the RBA's decisions in terms of trying to control a potentially overheating market and whether they do potentially push it back onto APRA and introduce some macro-potential regulation there. But in the States it's a pretty light week as well. You have some home sales data and also some durable goods. But again, it's a reasonably light calendar after what was a pretty hectic week last week. Thanks Jess. Thanks Mark. And thanks for watching. Tin hats on. Enjoy.


Well, the Babidji State football team heads into their shrine game tomorrow against Minnesota Crookston with a new quarterback. Junior Jared Henning will get the start, but freshman Alec Ogden is expected to play. The Beavers, they're prepared for this type of situation as the staff says that they've put together plays in the offseason to suit all three of their quarterback's strengths. So, there's certainly things that Brandon can do that the other two can't. There's things that Jerry can do that the other two can't and there's things that I can do that the other two can't. So, we wanted to get a bunch of install in during fall camp that complimented everybody so that we could have a foundation for when we did have to change personnel that we could still roll. Having that quarterback competition at fall camp, I got reps with them as well. So, it's kind of nothing new. So, I kind of know how like the receivers are on the line blocks and all that. So, it's going to be, it's really comfortable this whole week. It's been a smooth adjustment. Really a good opponent for both quarterbacks to get their first action, you know, maybe we'll figure out who's the guy going forward. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


Ciao Roma! My name is Sebastian Ica, the CEO of INOSES, a design house specialized in embedded systems for people's safety and energy transfer devices. Last year, INOSES and ST Microelectronics cooperated to design a 200-watt USB-C power delivery hub as a reference design, which has been shown as the CES in January this year. When the COVID pandemic started, early this year, one of the ST teams came up with the idea to use the ranging capability of the Blue Energy 2, a Bluetooth low-energy chip, to be used as a physical distancing device. Because of the successful cooperation with the USB-C power hub and our position of ST authorized partner, ST team approached INOSES to create a product based on the Blue Energy 2 reference design package. We started the projects with many questions, dedicated devices versus smartphones, privacy, ergonomic, so we created the collective distancing solution next-hand tag and we speed up the usual process with the use of the ST evaluation board to get the first prototype in a matter of about two months. Refining the design and launching the production of the first thousand units was done in another two months, very short timing. In parallel to the tag, we saw the need for a personal distancing device, so we started another project with ST to use a time-of-flight ranging sensor as used in a smartphone camera. This is the next-hand tag, you can wear it on the wrist or with a clip. Here we can see the alerts as the tag comes within a certain distance to another tag. Let's rob in the CTO and Andy an engineer be our models. When you are too close, you are alerted and if you stay close for a long time, the contact is recorded in both tags. Here is a time-of-flight product which is called Next-Hand Tego. It's a personal distancing device dedicated to all face-to-face situation. It's smaller, much simpler and detects anyone or anything directly in front of you. Of course, if you used to speak to door or walls, it works as well. It can be worn on your shirt or mounted on a stand for placing at a reception desk, for example. Our favorites models again. Hello, I'm Andy, I have a Tego and you not. Oh, we are too close. Let me step back. Now we are both safe. It has been amazing to see how the cooperation between the large company and a small one can realize benefits very quickly. I still barely believe we did it in four months from the idea to the production launch. Of course, it was a lot of work late at night for everyone to be ready on time.  So, my final words, be smart, collaborate and never give up. Ciao,