OK, tako, da smo vzout. Zelo smo všim tega mesej, a potem... ...ko smo pridzili. OK, prič sem da smo počučati. V zelo, da smo počučati... ...Tanya, tako... ...daj... ...elo. Vse. Vse, da smo počučati? Zdaj smo počutili? OK. OK. So, go ahead. OK. Thank you. Thank you, Mata. So, today is our second lecture, and it will be primarily about information maximization in neural circuits.  Derived how Shannon entropy follows from three postulates, additivity, independence, and branching process. And then today we will discuss maximum informative nonlinearities. And this morning in my email, when I opened my email, I had a question from a colleague who doesn't work in neuroscience, but he was asking a question, can a neuron transmit more than one bit of information? So, we will discuss that. And we will talk about entropy in information for a Gaussian variable. And in an approximation when the noise is small and optimal nonlinearities in that case, and example applications from both neural circuits and the small application from the fruit fly development. My first question, is there any overlap between this plan and what you heard earlier today and maybe yesterday? I cannot hear, but I will take it as a no. Okay, so, actually, I think it would be good to have some connection back from the audience, or at least test the connection. Sorry? That's good. All right. Good. Now I hear something. Okay. So, I guess that's the plan. If there are any corrections, then we can move forward. And I will start, and maybe it will be for the next lecture, depending on how many questions there will be, information transmission by multiple neurons. So, probably, there is a question. Thank you, Colin. So, probably, you, we discussed it qualitatively, but now, because this is a basic formula for many of the analysis. So, we will talk about the equation for information transmission and various views, in various forms. It's the same equation, but in various forms. So, the first statement is that, as we discussed last time, the information here is the difference between the entropy of the neural response minus this entropy of the neural response given a state of the system. So, in other words, like from the examples that I described last time, this is the entropy of, if you're asking me questions, this is the entropy of my answers, whether I say yes or no sometimes. If I only say yes, this entropy is zero. Then, if I say yes or no with some probability, then we have another entropy of a nonzero entropy, and so I have a capacity for convenient information, but this can be offset by the entropy of my answers when you repeat the same question twice. So, that's the basic premise of information. And now, mathematically, so the entropy of the variable y is the integral of the probability distribution p of y log of 2 p of y. And then, so this minus becomes a plus, and we are integrating over the probability distributions of signals x. And then for a given x, we have the same equation as we had here, but now conditional on x. So, it's the integral dy p of y given x and log 2 p of y given x and the bracket is cut off here. So, you can notice that, even though there is no x in the first integral, you can add it in. So, I just added an integral dx and dy, and p of y became p of x and y. This should be p of y. And then here with this integral is dx and dy comes here. And p of x and p of y given x combine into the probability distribution of joint p of x and y. So, then we have p of x and y, p of x and y log 2. And then, I mean, I guess, it's symmetric p of y in x divided by p of x. So, that's the, and it's called mutual information because you can write it as p of y, maybe I'll write on the board. So, we have, so that is equal to dx dy p of x and y, logaritm p of y and x over p of y and p of x. So, this should be p of y here, and this is p of y. Maybe, Matej, you can write on the blackboard if it's not clear. There is some writing on the blackboard. Thank you. Thank you so much. OK. All right. So, then we have here C. OK. So, now this is our equation that you see on the blackboard, and it's called the mutual information because it is an integral between x and y, and it is symmetric. So, instead of writing on the first line entropy of response minus entropy of response given y, you can also write it as entropy of x, how much the entropy is in the source, minus the entropy of x and y, and you can also write this as entropy of x plus entropy of y minus the joint entropy of x and y. So, maybe write that, Matej, would you mind? So, this will be for our reference. OK. Thank you so much. So, OK. So, then we have a question. I have a quiz. So, I will have an example. This is in many neuroscience papers, but this is the expression that I will discuss is from Nama Brenner working with Bill Balik, but this particular recording is actually from Lauren Zinčić with whom I collaborated as a post doc. So, in this case, you have a visual stimulus sequence shown on top, and this is a primate retinoneuron, and there are many, many trials, 50 trials, or maybe even more. So, you see that, you know, it is like very reliable. It is a machine. You put the signal in, and you can see a clear pattern of the neural responses. So, now we would like to evaluate information that this neuron transmits. So, instead of integral over dx, which is written on the board, you can have integral over time because there is a one-to-one relationship between stimulus and time. And then we are comparing the entropy of responses across time, p of r, and we are comparing the entropy of responses, so entropy this way. We are comparing the entropy of responses for a given time. And so, the, you know, people compute the spike probability, which is shown in R, in red. This is just by average in all these little dots. So, one more time, this is called the raster plot, and each dot is a spike, and this is one trial, this is another trial, so the trials go this way, and in red is the average probability of a spike in the given bin. So, it never quite reaches one, so if it reached one, it would be 100% reliable, but you can see the range of variability. And here in the bottom I have an equation, which is actually a rewrite of the equation that we have on the board. It's information, but divided by the rate of the neurons. So, you can see that the neuron is in two states, p of zero and p of one binary, and integral over time dt, this is kind of probability, instead of integral over x, we have this integral, then r of t means probability of response y given time t, r of t, and then this is probability of y given x, meaning y given t, divided by probability of y overall, and this is normalized by average rate of spikes, so this is information in spikes. So, now I have a few questions for you about this equation. So, first we always say that information reflects and characterizes uncertainty in neural responses, and sometimes reviewers ask the following question. Here is my expression for information, and it's only based on the average neuronal firing rate as a function of time. And there is no kind of expression for how variable is delta r. So, how come information characterizes variability of neural responses if the equation that we got doesn't use it? So, you mean it doesn't depend on the stimulus? No, it does depend on the stimulus. It does depend on the stimulus implicitly, because if I take, and we can also talk about it, if I take a smaller segment of time, then in practical terms this expression will change, but even for a given set of time, there is no, r of t is the mean firing rate of a neuron at the time t, so there is no contribution where is the delta r as a function of t. Shouldn't we have a delta r? So, for example, here in this red graph, this is the average firing rate, but I haven't told you what is the variability in neural. Of course, the equation is correct, and information is based on variability, so it is somewhat of an unfair question, but because it does come up in reviewer comments from time to time, and it's kind of an interesting, the way I answered it, I think it's a useful exercise to think whether we are understanding everything that's written here. So, I can start giving out hints. So the question is why does this, not depend on the fluctuations of r of t? Yes. So in other words, any guess? Well, my guess would be that it does, actually. So in the sense that if you write r of t as r bar plus delta r, then this would have a contribution to delta r squared. OK. So, my theory gets a plus. But the idea is that we also have a model of the neural response here. I told you, we assume that this is a binary neural response, so we treat it as a binary zero of one, and this is the probability that it will produce a response r of t. So for a binary neuron, if I know the mean, I already know the variance. So if I tell you that the mean is one, you know that the variance is zero. If I told you that the mean is zero, then you also know that the variance is zero. If I told you that the mean is 0.5, you know that the variance is maximal. And given our model of that this is a binary neuron, if I know r, I also know p of r, and it doesn't depend on any, for a given time this is p of r, it's a binary neuron. So I also know the variability, I know the entropy. So information, yes, it reflects the uncertainty, but in our case, I know the uncertainty once I know the mean. It's like for a Poisson process, some of you know about Poisson process, once I specify the mean, I also specify the variance. Is that okay? Is that okay? Okay.  This is another question that comes up. So another question that I, and then, you know, some application of this is in more detail, practically, oh, I don't know what happened. This is an example of application, so this is an example of recording from Thalamus. So in the brain, the visual signals start in the retina, they go through a relay nucleus in the middle of the head, and then they go back to visual cortex. So this is a recording from this relay in neurons deep inside the brain. And you can put an electrode next to a neuron, and this is called an interesting situation. There are called S potentials. So you're recording responses from one neuron, but you can also see signatures of what was the input to that neuron. So here is the reconstructed spike train from the retina, and then this is the reconstructed spike train from the Thalamus, lateral genicule, so that's the abbreviation LGN. So even though you're doing one recording, you can actually reconstruct two signals. One is the input signal, and the other one is the output signal. And so we can measure information transmission across this synapse. And by doing this subtraction procedure that I will skip over, and now we can analyze this. So they're both driven by the same signal. One is in the retina, and they record here in the Thalamus in the LGN, and we see signatures of both neurons, the incoming neuron and the outcome neuron. So while it turns out that as you saw from that recording, not every input spike generates the output spike. So in general, the retina, the input signal, is more spikes than the output signal. But then it turns out that the LGN, the Thalamus, produces more information than the retinal signal. So when you multiply these two together, actually you can have some cases where the information is not lost for some neurons. And so it really operates without any information loss. Any questions about this part? So this is an example analysis that was obtained using this example formula between that we discussed, which is r of t divided by average r, and Mati, would you mind writing that equation down for reference? So this is information in the spike train carried by this average neuron with an average firing rate r of t by neuron. I have a question. So essentially this is there is a minus sign here or not? No, I don't think so. So we have information integral. I can't quite see the blackboard, but I think it should be r of t over average r log r of t over average r without a minus sign. So this looks like an entropy because 1 over t is a probability distribution, but this is not a probability. It's a normalized. So it's information per spike. So maybe add on the left-hand side that this is information per spike so if we didn't normalize it by the r bar, it would be a probability. So you say, for example, yes, you have n repetition of the experiments, right? So essentially r of t is essentially 1 over n times number of neurons spiking, I mean, number of times neurons spikes at t. So essentially if you divide then r bar should be this averaged over t, right? So essentially r of t divided by r bar should be essentially probability of having a spike at t. So if you look at a random spike what is the, so it's number of spikes at time t divided by total number of spikes. Is this clear? So then if this is a probability then I think this should be negative, right? Or not? No, somehow it's not negative. So if you look on the left side in terms of information, we know that we have p of y given x divided by p of y. On the left-hand side, the one that you wrote here, yes. So if you integral over dx and dy p of x and y and then you can have p of y and given x divided by p of x. Ok, so p of y is r and x is t. Aha, ok, so here ok, ok. And then these two are one essentially in the sense that you are saying that x and y are uniform. X is uniform and y, which is r, is not uniform but binary. Ok, so. Ah, yes, that's a good point. So y takes two values. On the left-hand side, on the left panel, on the blackboard, y takes two values, zero and one. Yes. Yes, this y takes zero and one. So this is the spike, right? This is the spike. And then if you could write, yes, go ahead. Y is the spike. X is a random time between zero and t. So and then this should be something like a mutual information between spike and t. Is this the idea? Yes, so in information which is kind of a general expression, we should really write sum over y equals zero and one. So we will have p of y equal to zero given x over p of x and p of y equal to one given x over p of y given one. And then what will happen, yes, that p of y, when it doesn't spike, because if the spikes are rare, then that term kind of goes almost to zero. And so you're left with a contribution that y is equal to one. Yes, only spikes. Ok, so this is essentially would be rp of x and y. So this is a joint distribution of a spike and having time t. Right? Or maybe you should divide this by t, actually. Yes, you should divide this by t, I guess. And then, yes, I think the idea is that say this divided by t is the joint probability to choose a time t uniformly between zero and t and that the neuron spikes. Ok? And then the p of t, which would be p of x would be just one over t which is essentially this one over t here. And p of y is just r bar. So if you put all these things together you get this formula. Is it clear? More or less this is an exercise. For you to check that this is a mutual information. Yes, so there's a few more comments about this expression. So if r of t is not very modulated so imagine that it is being so modulated it is very, very small. A kind of constant plus small modulation. So in this case r of t by average r bar will be approximately one plus corrections. So in that case the information will be very small. So when you look at this red trace if it is not very modulated then the information is small. And another comment which is interesting is how many of you know about reny entropies? One, very good. So what we have here? Question, we have a question. Just wait, I'll bring you the mic. So that thanks. In the joint probability distribution we know that they are independent because we can see so the mutual information should be zero. Yes, so if the two variables are independent the information will be zero. Because sometimes when there are a lot of spikes we need to have a spike. Yes, so that's a very good question that if you have, if you look on the expression on the left side of the board make general expression between x and y then if the two variables are independent then p of x and y is equal to the product of p of x times p of y and so the expression under the logarithm will be one and information will be zero. So it is true that if you have two independent variables then the information will be zero. And in our expression if r does not depend on time meaning it does not depend on the stimulus then r of t divided by average r will be one and information will be zero. So imagine that the neural responses in the brain are influenced by the stimuli but also by internal thoughts. So I suppose I am listening to the concert but I am really working on my paper. So in some cases the neurons will be very activated but what I am typing but if I try to compute information with what I am listening it will be zero. So there are other assumptions that go into this equation and we don't know what we will have in exam but maybe I can assign some homework problems that you can then deliver during the exam with example data sets. So for example what happens if you have not 50 trials and what happens is it okay to record for one hour where I can record for 10 seconds. So those are practical questions and in general and then we will discuss them in a moment. So information is a positive quantity so even if the two variables are independent and the information should be zero then when I compute a given sequence you will get a non-zero answer you will have a positive answer and so you might say that there was information. So the technique against this there are several examples so I will digress a little bit and give you an example from everyday life about superstitions so an example from my life is one of my students when on a trip she brings me back a necklace and when I call my program officer they tell me your grant has been funded I was so happy. So then I say what is the correlation I wear the necklace, I get my grant so this is an example if I do not have enough information where really the information should be zero so in example of this recording you can say suppose I have 50 trials which is what was recorded I use this expression, I compute the number then instead of taking 50 recordings you can take 45 recordings randomly a subset, you compute information that you will get is positive will be larger and actually the first person who wrote about this was from Trieste was Alessandro Travis so we can go over his paper the Upward bias in information theory so I would like to ask you would you mind crossing the logarithm? First of all before that we have a question in the chat it's about aged versus young neurons so I think the question is that whether there is a way is there any experimental evidence from which aged neurons would have large information loss so whether the information content depends on the age of the neuron I think this is a very interesting question I don't know I don't know an experimental test to it you have to record from the same neuron multiple times as the animal ages substantially so I think it might be possible in an insert but I don't think it has been done so we could do one could do a study saying this brain area or neurons of this type convey so much information and say well if we take older animals they will have less information so that would be possible and certainly during development one can do this but I don't know the study here I don't know but what we do know something from what we are looking at is in general variability and in general variability increases with age and one of the book is by Schrodinger what is life and then he says that it is when the entropy increases beyond so as we live the organism can only entropy is increasing and then when it's more than can be controlled then that's that and there is experimental evidence for that so there is a paper I would say within the past two years on variability in blood samples and also how quickly a person can recover from perturbation and that variability does increase with age so when we are using this variability and projecting where one over variability goes to zero they predicted the maximum lifespan for a human of about 120 to 150 years of age so that's a study you can look up the it's called maximum human lifespan it's interesting that in that study they measure both variability even in the movement so it turns out that my initial guess would be that as we get older we move less but it turns out that not only we move less but also variability boughs of movement also increases so I'm guessing that a young child bounces constantly and if I go for a walk I go for a walk but then maybe I will take a rest so the variability in the amount of movement also increases with age which is interesting so there are these general ideas about entropy and kind of life which are not necessarily been studied not for neurons at the level of spiking but for neurons at the level of gene expression and also behavioral variability and also blood samples so the idea is that you have perturbations and so how quickly the person can recover from perturbations and that variability also correlates with the time kind of response time auto correlation time in the sequence so yeah go ahead so this is maybe a longer question but I think it's more useful to respond to questions ok, so now we can go back Tania, we have a question from Miyako, just a moment I haven't understood completely why are we computing this mutual information with that time, we are not taking into account the stimuli, I haven't understood the passage from the stimuli to just the time and not the stimuli at time t so yes so let me write down or maybe Mateo, can you write down that 1 over t integral over dt is actually sum over stimuli p of s so can you repeat that so 1 over t let's put it in a box 1 over t integral from 0 to t dt equals integral over ds p of s well, these both are 1, no? no, but I mean that there will be something so we can make instead of the equal sign we can make an error so may I suggest one thing that essentially this should be an upper bound to the mutual information between the spike and the stimuli because of the data processing inequality so this is clearly an upper bound to the mutual information between the spikes and the stimuli, right? so there are two comments so I will just tell you from papers, so we can discuss whether that's correct or not so what people say this is Bill Bialik's paper, so they say in context of these experimental studies there is a one-to-one relationship between stimulus and time ah, okay okay, so then stimulus is a function of time one-to-one so if stimulus is a function of time one-to-one then this is the same thing exactly but let's say for example in this picture you have that in time you have the same value of the stimulus right? so there are two questions, two comments to this so on one hand you can say that well actually if the stimulus is defined as really the light intensity at one moment in time then there are many different if I cross draw a line here in different times I have the same stimulus so that's not true but then they say well actually the stimulus is not just the light intensity at this time but this history of light intensity and it's true and the neuron responds not just the specific light intensity at one moment in time but to its history so if you look at the history then all of these segments are in between time and history yes and this question is important because it also is related to the question of how long should my recording be because if my recording is very short then I have not probed the probability distribution of stimuli sufficiently so in the sum over stimuli p of s that will not really be well modeled by the integral over time because this segment was too short and so we will have not a complete answer so this equation assumes quote-unquote ergodic assumption that our history of stimuli here have probed the full range of stimuli sufficiently well ok, so should we go ahead so now it also the related point is that you know p of s but I can have different p of s so sometimes in this case this is the intensity of stimuli that is taken from natural world as in pixels of an image but instead of and so it's a little bit more peaky as you can see but I can use a Gaussian distribution of light intensities and it will be a different distribution so the amount of information that the neuron conveys will depend on the probability distribution of stimuli if p of s it depends on the entropy of the stimulus it's a mutual information so sometimes what has been published is that the entropy of the neural response neurons convey more mutual information when our stimuli are taken from the natural environment and they will convey less information when our p of s is taken from kind of a Gaussian ensemble ok so that's another another comment so people have studied that many different kinds of neurons respond more vigorously to stimuli taken from natural scenes compared to a Gaussian distribution the disadvantage of that statement is that how do you define natural stimuli and their probability distribution so for a long time I would say that there is no definition for this because we know that the natural stimuli are not Gaussian there is a lot of fluctuations and one can approximate maybe as a modulated Gaussian process but bringing back hyperbolic geometry a little bit although I wasn't planning for this lecture to do this we have the natural stimuli being a combination of signals from multiple sources if we model them as arising from hierarchical network or maybe as a set of stimuli in a uniformly sampled hyperbolic space then we will have a probability distribution of natural stimuli ok, so we have another question yeah, so there is another question specific technical so would the Nyquist criterion be sufficient to know the needed length of the recording based on the stimuli now we should say what is Nyquist criterion so I think I know one answer with respect to special information of hand but let's try to think about this in the temporal domain so let's look at the question again so the Nyquist criterion be sufficient to know the needed lengths of the recording based on the stimuli so I'm guessing that I guess the answer is yes because the Nyquist criterion is exactly how much you should sample a signal of reliable estimate I'm not sure I was thinking of the Nyquist frequency so it will determine what is the frequency of stimuli that I should use so that was my plant answer but maybe is Nyquist criterion different Nyquist frequency? No, I think there is a Nyquist Shannon sampling theorem which I think is what the questions are referred to and I would think yes, this is what and I think this is what this criterion would be sufficient I imagine so let me look this up so far the answer is yes but I have to think about it maybe you can have a look at it and then you can post the answer on Slack so should we go back to rejni entropijs? Yes, so so another reviewer comment that you sometimes can get is says but you know because of all these samples sampling difficulties and the upward bias in information theory I need a lot of recordings so if I don't want to do it I will just compute variance so what does it mean variance so now if you notice here and we have in this equation we have log base 2 or you can just say in the natural log up to a scaling change so now let's remove the natural log at all and instead r of t to average r we are going to write in some power so right now what we get is the 1 over t integral dt r of t over average r to the power of 2 so now if if you can rewrite r of t if we write minus 1 maybe minus 1 and bring it to so somehow it should equal to the variance in normal responses ok so you want me to write r of t as r plus delta r of t ok so then this is 1 over t integral dt 1 plus delta r over r bar t squared so that's 1 then 1 plus linear term disappears because of delta r the variance of r of t divided by r bar squared so what we have is that instead of the logarithm you can write r of t over r or you can write r of t to the r bar to the any power ok so this to the n power and then what that is the reny entropy reny information so the reny entropy is like Kullback Leibler distance is our information p of x log p of x but the reny entropy is p of x to some power and so when we talk about information this is a specific version of the reny divergence between r of t and r bar but you can have any power and if you remove the log then you are getting the variance and so all of the statements about biases that exist for information they also apply to variance therefore when people say oh you know information is so complicated I don't want to do it, it has all these biases I will compute variance but actually bias in information is less than the bias in the variance because variance is also biased but because we are so used to it we don't think about the fact that variance is also biased and in other words this also highlights the intuition between information and variance so if I say this variable accounts for so much variance in neural response that's a statement but you can also say this variable accounts for so much information in your response and those are related things and you can actually show that the Kullback-Libler distance has the smallest kind of error bar and it saturates the so-called Kramarau bound and is more efficient than higher order reny entropies so we have a lot of questions in the chat so the difference using reny entropy versus Shannon entropy for firing neurons so the difference is that I will try to write here on the board so you can write 1 over T dT R of T over R bar to some power K and then K is equal to 1 will be approximately this one and with the logarithm being kind of partial power but K is equal to 2 will be variance and K is equal to 3 are higher order things I think we covered the information in neural circuits and then some practical applications so you can measure quantified information and one thing to notice is that this is firing rate and this is information in bits per spine so you can see that so there will be two comments about this so one of them practical is that this relay neuron conveys more information but also it says that per spike you're not limited to one bit which is a good to know statement and let's go over it, why is that the case so if I have a binary neuron and the probability of firing goes between 0 and 1 then information I will just draw on the board so the information will be so another expression for the information is dx, which is x is the stimulus no, just the entropy of the neural response so we have p of r then this is p of r log p of r with minus so the entropy of the binary neuron between 0 and 1 so that's equal maybe Matej, you can do a better job of writing on the board here so I need p log p minus p log p minus 1 minus p log 1 minus p I hear some the information transmission is not reliable but I think it should be minus p log p, yeah like that minus p log 1 minus p so this is the entropy of the neural response and so for a binary neuron that's the maximal information it can convey because that's the maximum entropy and this quantity here so that's the entropy of the neural response if you plot it looks like this between 0 and 1 so maybe let's make a drawing should be as a function of p the entropy that you have written minus p log p minus 1 minus p log 1 minus p so we have, yeah like that so we have, what do we have here so if p is equal to 1 then the first term is 0 because of the log and when p is equal to 1 then the second term is 0 because 1 minus p is 0 and 0 times log of 0 in the limit that's a 0, x log x when p is equal to 0 then the first term goes to 0 because p log p goes to 0 when p is equal to 0 here, yes and then the other term is when p is equal to 0 we have log and then when p is equal to 1 half then if we measure in units of log 2 then it will be 1 on top yeah, right here so this statement says that a binary neuron at most can convey one bit of information so now if we discretize the spike train in response window such that you can have at most one spike for bin it seems that the maximum rate that the neuron can transmit is one bit per spike but when we do the measurement here we are getting values that are bigger than 1 so the trick is well first of all it's somewhat not fair because I divided by the rate so in our equation of the integral dt r of t divided by average r so that's one part of it and the second is this is information a joint information between responses and lack of responses so if the spikes are rare then when it does happen there is a lot of information so because it is information per spike it can be more than one so information per bin has to be less than one but information per spike has to be or can be bigger than one so that I think that's a useful thing to know when you interpret the data any questions here so in fact when I woke up this morning and checked my e-mail as I mentioned there was a question can a neuron produce more than one bit per spike but I think he was also asking per bin so per bin for a binary neuron you cannot but now you have many you say that my neural response is not limited to one bin it can be multiple bins and then 0, 1 is different from 1, 0 and then you have a time sequence so then one can get much more information any questions about this? so there is a question in the chat by Colin in which context are the two different entropies used for neuron transmitters I think refers to Shannon and rainy entropies, right Colin? I don't see this question it is in the zoom chat so in which context do you use rainy entropies? I don't see it but I trust you are just going from auditory things in which context do you use rainy entropies? so sometimes the only I would say so I guess two answers that I can offer one is that from our discussion whenever you are computing variance you are actually using the rainy divergence of order 2 second you can talk about the rainy entropy and instead of writing p log p you write p squared and you integrate over dx so this is a famous problem with coincidence counting as a way to estimate probability distribution this problem is known as the birthday problem you might know so we are in the room and we ask how many people have birthday on the same day and then the logic goes that roughly I think for our year or in the same month so my memories that around 30 people you will start getting coincidences in terms of the number of days and that's a more reliable measure to estimate the probability distribution assuming they are all uniform the range of possible values so that is often is used so for example with in the case of the neuron we may not so generalizing these two words we have some patterns the number of patterns is astronomical and I would like to know they're not all equally encountered and going back to the first lecture we would like to estimate the size of the typical set so you can say when do I start seeing repeated patterns and from that number you can estimate the size of the entropy of the distribution so the reference for this where I first read it would be in so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so so


on Joe for jaspyscasebrakes.com coming to you live from the national and beautiful Atlantic City in New Jersey. Having a good time here at the Atlantic City Convention Center. We sold out this nice little mixer here, Jaspys eight box quick hit national basketball mixer, pick your team two. Pick your team two. Let's get this into my break log as well before I forget. All card ship, that's a good thing and every team purchased has got a shot at our big national promo. So definitely take a look at the website, jaspyscasebrakes.com. All the details of the promo are there. Big thanks to this group right here for making it happen. I don't have a printer, so I'm gonna have to show you just on the screen as is. Thanks everyone for making this happen. I appreciate it. I think Martin ended up with that triple last-ball motor, but the Hawks, Cavs and Wizards all at once. Appreciate that, Martin. Now let me see if we're getting these boxes right. We've got two boxes of Port Kings International, Blasters. There's one. Is my camera a skew a little bit? Feels like it. We'll deal with it. It's close enough. The mat could change a little bit there. That's a little bit better. Port Kings Blaster right here and then three boxes of Mosaic Basketball Team All. Two and three. We've got three boxes of Illusions right here. I think these are all Team All or International Edition. There we go. So we've got a little international flavor here. There you go. Thanks for joining us, everybody. Appreciate it. Let's get to that. Where should we start? I guess we'll get these Blasters out of the way. Good luck, everybody. As we'll pop open both of these. Good luck, everybody. A lot of people today. Might be even crazier. I guess this is still a work day for some people, I guess. All right, first box. Good luck. Oh, we got a nice clear, nice clear Obi-Toppin. That's rookie Obi-Toppin.  That's nice. That is nice. And that will go to, who's got the nicks here? That'll go to Greg, Obi-Toppin rookie card. No, we have yet to have someone join a break and then watch here in person. I like that whole Anthony rookie card. He did pretty well this season. Sean with the Orlando Magic. You know, like Tower Back when we first started, breaking was not nearly as mainstream. Maybe like a national, like maybe six, seven years ago. So we actually had more people who would sit down and join a break and watch a break just to get a feel for how this all works. So there was more, there's nice Anthony Edwards rookie card for Fred in Minnesota. So we'd be getting more people to join like, to join like a free, like we'd have like a one box break or something like that. We'd have people join for free and gather together at X time in the afternoon and we'd go through what a group break is for everybody and blah, blah, blah, blah, blah. But nowadays I feel like most people, most people get it. Yeah, Todd did. It's crazy because years later there's Tyrese Maxie and Tyrese Maxie.  How long have we been doing this? We're seeing our customer's kids grow up before our very eyes. All right, both of those Tyrese Maxie's will go to Fred and the Sixers. Nice. Illusions will open up all the packs here. I think I remember Bruce McPherson, like Moss 188 in the chat. Years ago he came out to Chicago years but he did sit down, him and his girlfriend Megan sat down with us and I think it was after shop hours, after the main show ended and Megan was hanging out with us, brought me an adult beverage which was nice and they watched the breaks too, watched a couple breaks together. Now I'm seeing more and more people are buying and selling than I've ever seen. You know, like more and more people coming up to our other main booth over there where we're selling. We have like showcases of like single carts. Before it was mostly just people buying or filling out their collections. Now there's more people trying to sell to us and buying but a lot more people come in with nice cards looking if we want to buy it. And that didn't happen as much. But now almost everyone has like a Pallican case, a Pallican case, some sort of flight case, something like that. All loaded with graded hits, looking to trade, all that sort of stuff. Yeah, the hotels are a lot more spread out here but in Chicago they're all, like if this was the convention center, there'd be like a hotel here and a hotel there and a hotel here. And so it would be easy to walk from hotel to hotel and they had filled them up in the lobbies of these hotels and stuff like that. Like these designs are kind of cool. But yeah, not as much here. I think a lot of people are staying at the casinos so I don't know if they'd want like impromptu, impromptu trade nights happening on the casino floors. We'll do a left-right randomizer for all of those cards. Ah, nice Lamello ball. Charlotte, that'll be for Brian. Obi-Toppin, once again going to Greg and the Knicks and all these Paul Anthony's will go to Sean Haley and the Orlando Magic. If we can find some of the big rookie names in these exclusive parallels here, Asia or the T-Mall exclusive parallels, that'll be real nice. Patrick Williams, Bulls, Greg, James Wiseman, apparently he looked pretty good in a summer league for whatever that's worth, summer league. Oh, quickly, we're pretty solid. And that'll be for Matt Hedges, Sam Merrill back there. All right, all right, so those are your boxes of illusions, T-Mall edition. Mosaic T-Mall time. Good luck everybody. I don't know what the, oh, I guess red wave and gold wave it says on the box. Those are your parallels, your exclusive parallels to this set. I think red wave's the most common. And gold wave, a little shorter printed. I guess we're looking for the gold waves. That's what we're looking for. All right, box one of three. Good luck everybody. Yeah, you can already kind of tell that the red waves are a little more popular, but a little more common. The gold, less common. Oh, carry cash. I'm not wheeling and dealing. Bradley Beale, gold, so they're not numbered, but let's get the right rookie here. That'll be nice. Nice obi topping, topping it up with obi. That is for Greg. James Wiseman rookie card and a nice town horton tucker. I guess it's not a rookie, but purple and gold wave, little Laker Joe Mojo. Kind with the Lakers, maybe by low on our friend town horton tucker. He's got upside. It's not his rookie. I thought this was his rookie year, but it's a couple of years ago. Another Wiseman for the Warriors, Matt Edges, and Al Horford in the back right there. Box one, box two. And one more day to go. I don't know if my voice can handle it. Hey, how's it going? Good, man. Good. What you ripping today? We got some mosaic. We've got a little basketball mixer, but down to our last two boxes, mosaic Timo. Ah, good seeing you. How you doing? Good seeing you. Bye. Focundo Campazo rookie gold wave and an autograph, David and Waba. Rockets. I think he played for the Lakers for a little bit too in the early days. That will be for big boys 007 for the Houston Rockets. And who's got Denver? That will be Matt Arnold. Debra Nuggets gets the Campazo gold wave. Patrick Williams for the Bulls, that'll be for Greg. Chris Paul, gold wave. Amela Ball rookie car, that's nice. Charlotte, that'll be for Brian. Brian Wofford. Third and final box. Thanks. I think I kind of, some people open packs this way. But, but yeah, right. I think some people think I'm being too rough with the cards, but I'm actually pulling the pack out and up, avoids the corners. Everyone has their own flavor, I guess. I wouldn't, that did not surprise me. I was like, that sounds like a thumb, Brian. Good luck, everybody. Matisse Tybal, gold wave. Jason Taito, okay, right? A little red wave Jason Tait, Houston. I think he's got some, some upside. Mitchell Robinson, gold wave. Anthony Edwards, second to last car. Jason Kidd, red wave, all-card chip. And we're done. Thanks everybody. One last Anthony Edwards rookie card, going to Fred and the Timberwolves. Nice, all right. Let's do a couple randomizing, randomizers. We'll do a left-right randomizer and a top-bottom randomizer. Have we lightened that briefcase there, Adam? Little bit. Oh, did you end up taking expired redemptions over to the Panini? Did you do that? No, there was nothing. I thought there were, I didn't have any expired. Oh, okay, okay. I was just curious. You can sit down on the table if you want to. All right, so let's flip screens really quick. So we'll do a left-right rando. And then we'll do a top-bottom rando. I think those might be the only two cards, but we'll randomize it anyway. Let's roll it, randomize it five into six, 11 times for each list. One, two, three, four, five, six, seven, eight, nine, 10, 11 final time. Right side, we'll get those left-right cards. And for top-bottom, five into six, 11 times. One, two, three, four, five, six, seven, eight, nine, 10, and 11 the final time. We made it. Top card, we'll top side, we'll get that right there. So right side, for jashbyscasebreaks.com. Thanks for watching, thanks for watching with us. I think we have one more of these eight box quick hit mixers. And then, and I think that's it for that. But that is part of the promo, so check it out. All that's on jashbyscasebreaks.com. I'll see you next time for the next one here at the National.


Hey, everyone. My name is Pranay Bakre. I'm a principal solutions engineer at ARM. My primary job is to make sure that partners, our partners, open source, closed source, et cetera, can run their workloads and applications as seamless as possible and as highly efficient and performant as possible. I also help them build solutions in ARM ecosystem. This is the agenda for the session. We are going to talk about what is ARM. So just a quick show of hands. How many of you know what is ARM? Oh, that's great. All right. So then we'll go into ARM in the cloud on what kind of instances to we offer at the moment in the cloud. Then we'll talk about the support for CI CD tools and what kind of tools support ARM based, let's say, runners or deployments, delivery, et cetera. We'll also go into some languages, just a small subset of major languages that are out there, Java, .NET, et cetera, PHP. And if they are supported or not, and if they are, are they performant, et cetera. We'll also do or talk about case studies that we did a while ago on GitLab as runners and as an architecture itself. We'll also talk about autoscaling GitHub actions and what that looked like when we did that. Then we'll go into a bunch of demos, depending on how much time do we have. I have a multi-arch delivery pipeline that we can build a Java-based application, a containerized application, we can do all that. Then we'll do some key considerations of building these images that are based on ARM or rather multi-arch, to be honest. And then in the end, how do we start or where do we start? So just a high-level or one snapshot slide on what ARM is. So ARM is the technology behind your smartphones, your laptops, like I'm using a Mac, which is M1, which is again under the hood running ARM. We go from Raspberry Pi's in the IoT space, Raspberry Pi, Jetson Nanos, or the entire Jetson family. In the cloud, we have processor families called Graviton. That's an AWS processor that they built in-house. We also have in data centers, a processor family called Ampere Ultra. That's also based on ARM. And as a company, we don't manufacture chips by themselves, but we provide intellectual property or the design to manufacture chips to our partners and customers, like AWS, Ampere, et cetera. And the ARM architecture itself differs from XET6 or Intel, meaning that in XET6 is based on a complex instruction set or CISC, and ARM is based on reduced instruction set. I promise I won't go into much details on what the instruction sets are, but just to give some context, because you can't run an application which is running on an XET6, or let's say on your mobile phone directly on an ARM-based platform, but there are caveats to that, which we'll talk about later. So just to help set the context, the architecture is different from a traditional XET6 or AMD 365 architecture. These are just the cloud providers that are offering ARM-based instances. These include public clouds like AWS, Azure, GCP, Oracle, and then there are private clouds, community clouds and hybrid clouds. This is just a snapshot of what these clouds offer and what kind of instances can you expect. And we'll go in the next slide in details on at least these couple of clouds on what the current state is and how you can start with those. So this is the slide that captures the instances. And I'm using a general word, instances in the cloud, but every cloud calls it differently. So AWS calls it instance, Azure calls it VMs, virtual machines and GCP calls it compute engine. So again, all the same thing, basically they are virtual machines that you can use to deploy your workloads. The family of in AWS, it's very easy to identify. Whenever you see a G in an EC2 instance, just know that it's based on Graviton or at least Graviton two processes for that. So M6G is the general purpose instance, which is Graviton two-based, M7G is the general purpose instance, which is Graviton three-based. Now between these two instance family types, we see at least like 30 to 40% performance gain. And of course it depends on your application stack, but that's across the board. And these instances are cheaper at least, I think Graviton two instances are cheaper by like at least 20% rate of the bat compared to the X86 instances. Then we have the memory optimized and compute optimized instances as well. There are free tier eligibility and I'll talk about towards the end of the presentation on how you can gain those and how you can start working on these instances. In Azure, they are called DPS V5, PLS V5, it's a small, and I'll show in the cloud how you can select just a small selection where you can do on the cloud to select your ARM-based instance. And in GCP, that's called tau T2A, general purpose instances. And again, they also offer a free trial if you're looking to start into it. Okay, so these are the major, or rather a subset of major CI CD tools that support ARM-based pipelines, that support ARM-based runners. So for instance, Jenkins support an ARM-based architecture, Travis CI, and there are lots of blogs out there talking about the performance of ARM on these different kinds of pipelines. GitLab, they support runners, self-hosted runners, meaning that you can use those to deploy your applications natively on ARM without using any simulation. I know the people who are familiar with ARM must know that what is, we used to call what means a Schemu or QMU. That's basically an emulation where you run your ARM-based application on an X86 instance. But we can move away from that, we can talk about building it natively on an ARM instance. In GitLab, like I said, self-hosted runners, Git have actions, again a CI CD tool. It supports ARM-based runners, again in self-hosted, and we'll see that in the demo as well, and on the case studies that we did on how you can initiate the deployments on how you can go about it. Circle CI, Azure Pipelines, support ARM-based instances, so does AWS Code Palim. There are others as well, but for now I'm just talking about these. All right, so the question comes to us that, okay, so I have an application, like someone I was talking to yesterday, they said, hey, I have a .NET application, do you think it will run on ARM? And the answer is yes, because it's supported entirely on ARM64-based platforms. Now I'm using ARM and ARM64 interchangeably, because ARM64 is this type of architecture or the binaries, whenever you download something, if it says ARM64 or AR64, just know that it's compliant with ARM. For Java, Java is pretty cool, so with Python, you don't need to recompile those applications. So if you have, let's say, a Java-based, let's say, a Spring Boot application, you can just take that application as is and run it on an ARM-based instance, be it an EC2 instance, use Beanstalk in AWS, use in Azure, you can run it directly, you don't need to recompile anything because it's unicode, bytecode, for that matter. And again, OpenJDKN, all the support is available. CC++, yes, you'll need to recompile, because again, it's a processor architecture that's different. PHP, no need to modify anything. When I say PHP, I also mean Node.js, TypeScript, JavaScript, because we don't need to compile those applications. They run out of the box on ARM-based platforms. Go, Go is interesting. Golang has support for ARM since a long time ago, but yes, they will need to be recompiled. And in our demo, we'll see how you can build your Docker image based on Go and make it multiarch, so that it runs out of the box and you don't have to think about anything. Python, again, you don't have to, like I said, in the beginning. Python you can run directly on ARM-based instance without recompiling anything. And .NET, so .NET 5 and 7, they bring major performance improvements. I haven't included all those links, but if you just Google .NET 5 and ARM 64, you'll, the first block pops up, let's say Azure or from AWS. And you can actually go ahead and look what kind of performance enhancement they did on .NET 5, .NET 7, et cetera. And there are other languages which I haven't listed, but there is a really cool guide, and I think I have it in one of the slides. It's called AWS, it's on AWS, AWS getting started. So basically what that does is that if you are looking to start building on ARM or ARM-based instances, you can leverage that to repackage your applications or just run it as is, depending on what kind of application stack you have. And we also, apart from languages, there is also support for in containers. So Docker supports that, and we see that in the demo. We also have support for Kubernetes, Prometheus, Grafana. All of these open source tools, along with the CI-CD tools that we talked about, I didn't want to put too many logos, that's why I didn't include that here, but basically all of these support ARM-based instances. And ARM-based libraries. And with Java, there are, I think the OpenGDK version 17, or I think whichever is the latest. So all of them are supported right after the box, and you can just run your applications directly. So this brings us to the case study. So GitLab, we met with GitLab folks a while ago, and we wanted to understand their pain points, and of course, what does it take to run, let's say, GitLab on ARM-based hardware? So we use the Graviton family of processors, which is ARM-based, Graviton 2.0 family. And what GitLab has is a reference architecture.  You have some security concerns, you have your clients that need to keep everything in-house. You can do that. So we took an example of, so GitLab has different kinds of architecture, 10K, 15K, 25K, or I think 5K, 1,000 users. That 10K means that that architecture can support up to 10,000 users. And in our tests, we actually found that the reference architecture, we just kind of cranked it up a bit. Okay, let's see if the 10K architecture, because under the hood for 10K architecture are all those instances that are based on your EC2 family. So 6G, R6G, et cetera. And it has a lot of components like Postgres SQL, all different databases, Redes, then it's load balancers. How does it behave if we crank it up more than 10,000 users? And interestingly, we found that it actually can support more than 10,000 users without breaking a sweat. And I don't know how many of you attended Liz Fong-Joon's talk yesterday, but she also kind of hinted to that because on an ARM-based platform or an ARM-based instance, you get, if you see a 1VCPU, you get a physical one-to-one mapping. Whereas for an Intel, you see, since there is no SMT with Intel, there is, so you see one-to-two ratio. So whenever you are seeing 1VCPU, you're actually getting half of that. So it was supporting and it was outperforming what we had initially predicted. And again, at the time, it gave us around 20 to 25% cost savings when we used those ARM-based instances or the Graviton-based instances. The second part of that, okay, so you have deployed your GitLab server or components to support it, but you can't do anything if you don't have a runner to build your applications. So GitLab Runner is supported on AWS Graviton 2 or ARM-based platforms. Since 12.6, I don't know what the current version is, but it's been a while. So what we did was we used, we took a Linux kernel code or source code and we built it on those runners. So we had a pipeline and the GitLab folks helped us out with this. We had a pipeline which actually built GitLab, sorry, Linux kernel source code on an X86 and on an ARM-based runner. So as you can see in the diagram, hopefully it does. Okay, yeah, so those are the M6G instance and then there's the M5N instance. And we also had Prometheus and Grafana collecting metrics from both to see how they perform and they performed really well. We saw, I mean, right now it doesn't look like much, like five minutes, 47 seconds, how much of a difference like two minutes makes. But when you scale it up, this was just to show that even at that level, the ARM-based instances or the Graviton 2 instance in this case were outperforming, which was a pretty big win for deploying or telling our partners that you can switch to Graviton without hassle that, oh, how will it affect the performance and how will it hamper my current application? So this was one. The second that we did was auto-scaling GitHub action. So I know I have a lot of components in there and now GitHub actions support auto-scaling by its own. But again, this was done a while ago. So that's why I have Lambda and everything in there. So what it does is basically whenever you, the use case was that if you have runners in your GitHub actions, you think about if they are not being utilized all the time, if you don't have builds going right out of the gate every day or every week or so, they're sitting there idle. They are accumulating costs and cost is bad. You want to save costs by doing some different measures on either use CloudWatch or do something else. This was one of the approach where a runner was deployed on the, in the repo as soon as a commit occurred. So it was a very small runner. So it didn't take long. It would take seconds to, we had the code where it actually took like a couple of seconds to deploy it and your pipeline would execute. Once that's done, it would destroy that runner and that's it, the Lambda would take care of that. What that meant was that you could save a lot of costs by doing these auto deploying or auto scaling these GitHub actions runners. What that also helped us to do was that when you build your CI CD pipeline, you need to think about a lot of different factors, performance and cost, of course, then security also, which we'll talk about later. But when you take cost into equation and you remove the need for a static runner which is sitting idle most of the time, you can use it or the solution for deploying it on the go and kind of leveraging its use for this. Okay. So I'm going to talk about multi arch. So I'll kind of switch back and forth between the presentation on how to build that multi arch pipeline. So let me first go here. So this, yeah, it shows. So in EC2, and I'm just quickly talking about how you can launch ARM based instances in the cloud. For in EC2, whenever you go and launch, I know I'm talking about console, we, I mean, these days we use Terraform, everyone uses Terraform or some form of infrastructure as code. But still, just to see that if you go to AWS console, there is a dropdown right here, which is 64 bit X86 and ARM. Now, if you select ARM, you see different types of instances here. Now, these are all, like I said, T4G, whatever ends with G is based on Graviton 2 or Graviton 3 for that matter. So if I talk about M6G, you'll see all those family of instances. When you deploy those, they, I can't compare the cost right now, but from what I know, they are like 20% cheaper. Anyway, so the point is that it's really just clicking this one dropdown and selecting it and you can deploy your ARM based instances and deploy your applications. Same thing with Azure. If you go here in Azure, again, it's selected by default for me, but ARM 64, X64. So ARM 64 is the ARM based architecture. And if I go here and see different sizes, then these are the general purpose instances that are supported in their memory optimize, compute optimize, et cetera, or VMs, not instance. Compute Engine, because again, Google, so Google calls it Compute Engine. The family is called T2A and this is the series where you directly select the family of instances. This is a pretty, it's a bit different from the other two clouds, there is no dropdown or a radio button, but and you have to purposely select it. But when you select this, it will give you the options of different kinds of compute engines or VMs that are available to deploy your ARM based applications. Again, this is all, so this one and the Azure one is based on a platform called Ampere Ultra, which is again, like we saw in the earlier part of the presentation, is based on ARM, IP. Yeah, so multi-arch, right. So I'll just quick, wow, okay. So I'll just quickly go to runners. So this is a GitHub Actions pipeline or rather my pipeline that I've forked from a repo. It's a e-commerce application and I can show that how it works. Basically, if you see, you come here and you add a self-hosted runner. Now here in the architecture, you see x86 or x64, ARM and ARM64. So whenever you select ARM64, it will give you a very simple steps and you can run your runner. So if we come back to runner, it says offline, right? So I'll just go here and I'll do run.sh. And it should automatically be listening to jobs for now. So now if I refresh here, it should be idle. So it's idle because again, I'm not running anything right now. So this is my, yeah, you can see. So this is my YAML file for the application where it's doing continuous integration or build and delivery just on a push or a pull request. I'm using, so one critical thing that we need to understand is here with GitHub Actions, you need to use the tag self-hosted and it's shown actually here, whenever you try to run a runner in any of the architecture, it says you need to use self-hosted because if you use, we are all used to or we don't even think about it sometimes. We are used to Ubuntu dash latest or some other flavors because those are the hosted runners by GitHub. And on here, since we are using a self-hosted runner, you can directly use this one to deploy your application since it's the one that we are hosting right now. Here I'm just building that application with Maven, uploading those artifacts and downloading the jar and then deploying it again using Beanstalk, AWS Beanstalk. And all these different flavors of services are also supported and goes without saying. I now also want to show you a multi-arch pipeline. This is again, another application, but I want you to focus on this particular thing. So when you see a target arch, so basically what it's doing is based on the architecture of your runner or whatever you are running at the back end, it will pull up the architecture by doing unm dash A. So if I, oops, sorry. Yeah. So if I do here, yeah. So I'm running a M1 based Mac and if you're running it, you just do like this and you'll see an ARM64 at the end, M1, M2, all of those. Anyway. And so it will automatically use that architecture as the target architecture and you can use it to build your multi-arch build. Now, one thing that you need to understand with Docker also comes a utility called BuildX, which is, oh, by the way, I'm using this Kubernetes cluster and if you see here, that Kubernetes cluster is in AWS or an EKS cluster and it's using Amazon Linux too and it's AR64, which I mentioned in the beginning. So if you go here, sorry if I'm jumping through and through. Yeah. So these are the, it's based on M6G large and an EKS cluster that supported. Yeah. So let me come back to this and right. So here we need to know some key considerations. So if you are building a multi-arch pipeline with Docker and publishing it them to ECR and then eventually deploying it on, let's say AKS, sorry, I'm using it back and forth, but all of these clouds support that. So if you're using a Docker hub, let's say for registry and you are deploying it on Azure, you can easily do that. There's a utility called Docker BuildX. Now what it does is if you have an XC26 machine, you install Docker, the BuildX utility comes with it. You add a ARM-based remote builder. So what that means is you don't have to use Kimu anymore. You can directly use a remote builder where from one of the clouds that we talked about or in the next slide I'll talk about where you can get those resources. You can use that to build your Docker image natively on ARM without having to do anything else. And it will pull all those instructions. It will pull the relevant files and it's ready to go. So it will be multi-arch from the get go. Whenever you push those images, so Docker registry, Amazon ECR and other public registries, they all support ARM-based images. In Docker registry, if you use Go and select on tags, you'll see AMD64, ARM64, X8664. So again, those are all supported and natively. So I'm sorry if I'm rushing through it. Workson ARM is our program where we offer free development platforms and resources, basically giving you the flexibility to choose which platforms you need to build your applications on. And these are some links where you can go and sign up. We also offer from the CI CD access through Workson ARM. That's the program. And if you click on it, it will get you to a GitHub page where you can request for those access. And like I said, these cloud providers also offer some free instances. You can use and try them out and see how your applications behave. And we talked about Java, PHP, you don't need to recompile, run it directly. You can all get into that. With that said, so this is a GitHub repo, which of all the blogs that I've written to date, this is in no way includes everything, but it has at least, and I'm going to keep adding to it and apologize if it's not very clearly laid out, but it just shows blogs and the presentations that I've given so far, some links. And I'm going to keep categorizing it so that whenever there is a new one that's coming up, I can keep adding to it. Okay, with that, I think that's the end. So I'll keep this one up. Yeah, so that's the end of my presentation. We do have a few minutes. So if you have any questions, please. Sure. To be honest, it depends on what kind of applications you're trying to build. I think all the major OS distributions are supported, Ubuntu, CentOS, and everything else. Are you looking for anything in particular? Yes. I don't think so that we have found any major differences. Or if I have, then I'll reach out to you. But yeah, any other question? Sure. Yeah, Ruby is supported. Yeah, again, Java-based, so yes. Sorry, that's Groovy, my bad. Ruby is supported, yeah, yes. I didn't include that, like I said, in the languages. Yes, Ruby is supported and you can develop your applications. What are the benefits? So yeah, I didn't. So if you go to the GitHub repo, basically different workloads, let's say you're using Memcached or Nginx, or what kind of applications do you use? You'll see better price performance and better performance on those individual workloads or databases, let's say, and languages. But there are lots going on under the hood with those instructions and how we build, but you'll see, again, it depends on application to application, but the price performance is usually better when it compared to AMP-based or XIT-based. What's the migration ease between going from XIT-6 to... What's the migration ease? Yeah, so that's what I said. So it depends on your application stack. If you're running it on Java and it works out of the box, you don't have to do anything. If it's a Golang-based application, like in the Docker image we saw, you'll have to recompile it, but it's pretty straightforward. You can use these instances that we offer through our either VoxoRAM program or the free resources, and you can build those directly, natively on AMP. And it depends, again, on how many components you have in your application, like databases, and so all the major database, I should have included that. So Redis, Memcached, Oracle, all these databases are supported on AMP. So again, it depends on what kind of application you have, but yeah. Not really, because it depends on how your Docker container was built. If it was built only for AMD or X86 architecture, then you'll have to recompile that and build it again. And you can go to that, Avid Graviton Getting Started Guide, AWS. They have pretty good resources to build it. Any other questions? All right. Thank you so much, everyone. Thanks for coming to our presentation. Thanks. Thank you.


What's going on everyone Sam here with late in sports cards and we are doing? 2021 Panini prism first off the line one box break number 28 random teams here is the results to the random again All teams are in on this one. So good luck everyone See we can get out of this see some nasty shimmers come out of this green shimmer one-of-one Trailance I might pass out of that. Yes. Good luck here everyone look like a shimmer in the first pack or Hooper Got rookie Larry round tree the third and Devonta Smith there you go Eagles got blue ice is Rashaun Evans. That's 28 out of 99 there you go Titans And then Devonta Adams Also looking for our two autos out of this got nice Mac Jones rookie. There you go Pats Brats on that Got Pete Werner Larry round tree seven out of 49 purple power Congrats Chargers There you go, LA and Marcus Stevenson Silver rookie bills. I Was looking for the Chargers on those freaking out for a second. I didn't think they're there But they're there instead of Los Angeles. It's just LA something No shimmer in this one Taylor Jeremy Chin got rookie Nick Bolton the chiefs and Other rookie is Kalliman for the Vikings got purple Amir Smith Mar set on the color match 117 out of 125. There you go Vikings. That's sick and Silver all out Aaron Jones for the Packers back. Good luck here again everyone. All right. We got a shimmer in this pack Blue shimmer Marcus Stevenson Kenan Wang Wu shimmer It is a stealer. Come on rookie Not a rookie. It is Chase Claypool That is four out of 25. There you go Steelers. He's got Pittsburgh Eric R. Nice shimmer there for you, buddy Got a chase young hyper that is 72 out of one 75 Football team and the fourth Buckner Silver also had like I said this kind of in one Looking for our two autos here. Yeah PS2 rookie for the Broncos Got a Quinn Miners rookie and Jared Goff Silver No, uh, prison in that pack Well, I guess the silver pack here Davis Mills there you go Texans nice one there take that got shy smith and Red wave AJ green on the color match 60 out of 149 Cardinals. There you go, Arizona We got fireworks AJ Brown DJ more got rookies are Anthony Schwartz and Brevin Jordan got blue wave Fitz magic 168 out of 199 football team and Jamar Chase fireworks rookie bangles. There you go I Got five packs to go here. Got a red shimmer coming up guys. Come on, baby. Let's see a rookie Rex Ryan. There he is Ravens Fletcher Cox got Michael Carter and Ernest Jones rookie rookie Looks like a dolphin caller Javon Holland.  Let's go Ravens legend blue ice auto 29 out of 75 Super Bowl winning quarterback Trent Dill for Heck, yeah, like I said, Ernest Jones was our slow roll device Got another shimmer coming up Shimmer number three give it up for shimmer number three Rashawn Slater for the Chargers Pat Friar muth and We've got not a rookie Zabean Howard That is going to the dolphins again. Congrats Miami 33 out of 35 Harper B Got Bo Jackson purple ice 152 out of one or two 25 and another Jamar Chase rookie emergent Williams Got Travis ET on junior and Gary Brightwell got orange Fred Warner That's 46 out of 249 for the Niners and Sam Hubbard Silver Yeah, really nice looking card for sure on that one another shimmer coming out of this one, that's a blue Elijah Moore and Jake Funk Got blue shimmer does not look like a rookie.  Holy cow CD lamb Noah Gray Got Javante Williams got orange Fletcher Cox and Shimmer I already saw the back. So I don't want to like get anybody's hopes up It is Christian Barmore for the Patriots 25 out of 35 on the shimmer auto congrats hats That'll do for the break only got two things to recap here We've got the two autos were Shrent Dillford for the Ravens to 75 and Christian Barmore for the Patriots to 35 That'll do it for the break. Thanks again everyone for the fill next up. We've got more More first off the line


This 10-year-old boy chose the Army over Disneyland. Lad Anderson wishes to join the Army someday. But the Calumet Michigan boy battles with leukemia. So forgoing above and beyond, senior enlisted leaders presented Lad with symbols of appreciation. It seemed like a very strong, courageous young man. It seemed like he represented the Army values in the right way. And it was our honor to come here today to recognize this young man. Lad isn't sure if he'll be able to join someday. So he didn't pass up the opportunity to build a breakwater bridge with soldiers this summer. When I'm older, I want to be in the Army. Sounds kind of fun. His father says this is something Lad will never forget. Since his brother's joined the Army, he's been really interested in it. That was kind of his goal. But after having cancer and there's a chance it could come back, I don't think he'll be able to serve. So this is really big for him. The soldiers say he's been an inspiration. That kid is the strongest kid I can think of for going what he's going through. Still wanting to serve, still wanting to be a part of something. For Lad, this is an experience of a lifetime. Reporting for the Army Reserve, I'm Sergeant Osvaldo Sanchez, Marquette, Michigan.