Hi and welcome back to program analysis. This is video number two in the lecture on path profiling and what we'll do in this second video is to look at the ball-laros algorithm, which is an algorithm to address the path profiling problem, which I've introduced in the first video. The way we look at this algorithm here in this video is by looking at it for DAG, so for directed acyclic graphs, which means we do not look at arbitrary control flow graphs yet. I'll leave this for the third video, but at a slightly simpler problem, simply because it's easier to explain the algorithm like this, but we'll see in the third video how to actually generalize it to arbitrary graphs. So let me start by giving you a one-slide summary of this ball-laros algorithm. By the way, the algorithm is called like this because it has been invented by Tom Ball and Jim Larros, two computer scientists who are interested in compilers and related topics. So in a nutshell, the algorithm works as follows. So it starts by assigning a number to each path through our graph. So basically each of the path that you can take through a control flow graph has one number. Then it computes this number while going through the graph by incrementing a counter at every branching point. So essentially we start at the entry node and then at branching points increment the counter such that at the end we can tell from the sum of these increments which of the paths we have actually taken. And the way this is done has two very nice properties. One is that this path encoding is precise, meaning that there's a single unique encoding for each path through our graph. And it's also what can be computed in a way that is minimal, which means that the algorithm instruments the minimal subset of edges or more precisely a subset of edges that imposes minimal cost. So we get a precise path at the end, but have some proof that this is actually imposing the least possible overhead. So let me illustrate this idea using the running example that we've already introduced in the first video of this lecture. So here's our control flow graph again. And now what the algorithm is doing is to basically add some instrumentation to the normal execution of this program. Specifically, there are two kinds of instrumentation that are added. So one of them is that we're adding some state or more precisely a counter. That is the number that we are summing up in order to get the path encoding. And let's just call this R. And then we also have an array of all the counts that we are producing, where basically every path through the program has one entry in this array. And the value at this entry corresponds to how often we've seen this path being executed. And we call this array counts. And now given these two pieces of instrumentation, I'll just show you what the algorithm will produce on this example control flow graph here. And then later we will see how to actually get to these numbers that I'm adding here. So for this example, what the algorithm would do is to initialize our counter R to zero, if this edge is taken, the one from A to C. It would initialize the counter to two if we take the edge from B to C. Or if you take the edge from B to D, then it will initialize R to four. And then on the edge from D to E, it would take whatever R currently is and just increment this value by adding one to it. And then when we reach the end of the program, our exit node F, we access our count array at index R and then just increment whatever value is there to indicate that the path represented by the value R has been executed another time. So now given this instrumentation, let's have a look at our six paths again. So all the different ways one can go from A to F. And let's have a look what encoding they would get. So which number is basically computed by adding or initializing R. So let's start with the first path here, which is this ACDF path. So if we started A and then go to C, we will set R to zero. Next, we go from C to D and then from D to F, which is also already the end of our program or our code that is represented here. And because R is still zero, that means that the encoding of R will be number zero. Now let's look at the second path, ACDF. So for this one, we also initialize R to zero here, then go from C to D, from D to E, where we add one onto our existing value of R. So R will now be one. And then from E, we go to F. So at the end, the encoding of this path is one. In a similar way, let's have a look at the third one, ABCDF. So ABC makes us take this edge. So we initialize R to two, then go to D and then to F. So we do not change R anymore, and therefore the encoding is two. For the next one, ABCDF, we will initialize R to two and then also take this edge here, which means that we at the end will have the encoding three. And now let's also have a look at the two remaining ones, ABDF. So for ABDF, we will path through this edge and then not change R anymore. So this path is encoded with this value four. And the final one will go through this edge and also through that edge, which means that the encoding at the end is five. So what you can see is that every path gets one and only one unique encoding. And we get this by only executing these few statements that we've added to the original programs, which sometimes initialize a value or increment a value. And at the end of the code that we are profiling just takes this added up value and uses it as an encoding of the path that has been executed. So now we may ask, well, wonderful, how do we get these blue instrumentation statements because they seem to exactly do what we want. And this is what I'm going to tell you next. And before doing that, let me just state a few assumptions that I'm making here while explaining the algorithm. So first of all, the algorithm is not explained for arbitrary control flow graphs, but only for DAX, so directed acyclic graphs. And we'll see later on how to lift these restrictions. The second assumption is that we have n path through this graph and they are simply numbered from zero to n minus one, just as we've seen it in the example. Another assumption is that our graph has a unique entry and exit node, which is a simple to fulfill assumption if the graph doesn't look like this anyway, because we can always add another entry node or another exit node if needed. And finally, we assume that there is an artificial back edge from the exit node to the entry node, which actually breaks the first assumption that the graph is acyclic, but for this artificial back edge, this is basically an exception from this assumption to make the overall algorithm work. So let's just illustrate these assumptions using the example graph that we have here. So first of all, this graph is indeed acyclic. And the reason simply is that there's no cycle in here. So there's no loop or anything that brings us back to one of the notes that we have already seen earlier. Then we do have a unique entry node and also a unique exit node. So this one A is the one and only entry node, where we start the execution of the code. And this one, node F, is our unique exit node. And then the last assumption was that we have this artificial back edge from the exit node to the entry node, which I'm adding here. So this one will be this artificial back edge that we'll use in the algorithm. All right. So now having stated these assumptions, let's have a look at the algorithm, which essentially consists of two main steps. So step number one will assign integers to each of the edges that we have in our graph. And the goal of this first step is to assign these integers in such a way that the sum along the particular path yields a unique number for this path. So basically we want to get this number that represents the encoding of the path. And this first step alone is enough to reach the precision goal that the algorithm has. So by just performing this first step, we know for sure that every path will have a unique number. Now the second goal was to also impose minimal effort while computing this encoding of every path and while keeping track of how often that path is executed. And in order to do this, the second step of the algorithm is to assign increment operations to edges in a way that does not just use this integer for every edge, but basically tries to reduce the number of increment operations and initialization operations that we need. So the goal here is to minimize the additions that are actually performed along the edges. And in order to do this, the algorithm will only instrument a subset of all edges that we have in our graph. Now in order to know how to minimize the actual effort, you need to make some assumptions about how often these edges are executed, because ideally you want to add instrumentation to those edges that are not executed very often, because then these increment operations will impose the smallest possible overhead. And to do this, we somehow assume that we know how often each edge is executed. For example, this is a piece of information we could get from the edge profiling approach that we've talked about in the first video of this lecture. So now let's have a look at the first part of this algorithm in some more detail, where we want to compute this integer value for every edge such that the sum of the edge values that are along a path gives us this encoding of the path, so this unique value that identifies the path. In order to do this, what the algorithm does first is to associate value with each node in the graph and we call this value num paths, which stands for the number of paths from this node and to the exit. So in order to compute this num path, the algorithm does the following. So it visits every node in the graph in reverse topological order. Reverse topological order just means that we start at the end and then visit nodes by going backwards such that we never visit a node before having visited all of its successes. And so while going through the graph in this order, we distinguish two cases. If n is leave node, so if it's basically a node that does not have any successes, which means it's one of the, or it's the unique exit node, then we set num paths to one. And otherwise, we set num paths to the sum of the num paths of the destinations of all the outgoing edges of the node. So basically, if I'm at some node and the two outgoing edges, let's say one has num path of three, the other one has num path of four, then when I'm here, I basically have seven ways to go to the exit because I could go this way and get the three from here, or I could go that way and then get four from here. So together, this gives seven. So this is the basic idea of computing these num paths. This value num path is of course only a helper value on the way to computing the integer value for every edge that we actually want to compute. So just as a reminder, this integer value should be such that we can add up the integer values of all edges along a path to get the unique encoding of that path. And here's the algorithm that shows how to compute this integer value and at the same time compute this helper value called num paths. So what this algorithm does is the following, it visits all nodes in reverse topological order and then distinguishes two cases if the node is a leaf node. So basically, if that's our exit node, then we only initialize num path and we initialize it to one because by definition we say there's one path to the exit if we are at the exit. And in the other case, so if n is some other node, we do the following. We first initialize the num path value of this node to zero and then we visit all the edges that go out of this current node n. So all edges from n to some other node m and do two things. First, we set the value associated with this edge to the current value of num paths of n and then we increment num path with the num paths of the target node m. And then we do this for the remaining edges so that at the end every edge outgoing of n has some value associated with it. So let's illustrate this algorithm and this way of computing an edge value for each edge in our graph using our running example again. So what you see here is just the control flow graph that we've seen before and now we want to visit each node in this graph in reverse topological order. So essentially what this means is that we want to make sure that we visit every successor of a node n before visiting n itself. So for our example here that means we're starting at the exit node f and then the question is do we visit d or e at first? If we would visit d next then we would have visited d before we have visited one of its successors because we haven't seen e yet. So that means we need to first go to e and then can go to d. Now going backward from d we can look at b and c and here it's a similar argument as before. So we first need to visit c and can then visit b in order to make sure that we visited every successor of b before visiting b itself and then finally as the last node we can visit our node a. So now let's go through this algorithm step by step and while doing this I will do two things. One is I will write down the num paths for each of the nodes that we are visiting and at the same time and for this I will use blue color I will write down the values that this algorithm is associating with the different edges of the graph. So the first node we are visiting is node f and looking at the algorithm this is the first of the two branches that we have here because node f is actually a leaf node and therefore we set num paths of f2,1. Next we are visiting node e. e is not a leaf node so we will go into the else branch and that means we start by initializing num paths with zero and then we are visiting each of the edges that are going out of e so there's only one in this case which goes from e to f and for this one we will set the value of the edge to the current num paths of n so the current num paths of e which means we set the value of this edge here oops wrong color to zero like this and then we are incrementing the current num paths of e by adding the num paths of the destination node of f which is one so we will set instead of having zero here we will put a one and this is the also the final num paths of this node e. Next we are visiting node d again d is not a leaf node so we will initialize its num paths value with zero and then go through all the edges of this node. This node d has two outgoing edges let's just first visit the one that goes from d to f which means we will associate with this edge the current value of of num paths of d so we will put a zero here and then after that we look at the second statement that we need to execute for every edge which is to increment the current num paths of the source node of d by adding the current num paths of the destination node of f which means we're adding one to this value here and then num paths of d is zero. Now we've only visited the first outgoing edge of d but there's also the other one that goes from d to e. Also for this one we look at the current num paths of d and use this as the value for this edge so we put a one here and then we again increment num paths of d with the num paths value of the destination node of e which means we will add another one here and at the end have num paths of d equal to two. Next we are visiting node c and here it's again not a leaf node so again we initialize num paths to one then visit one the one and only outgoing edge that c has which is this one and label it with the current num paths and then add the num paths of the destination so the num paths of d which is two to our current value which means num paths of c will at the end also be two. The next node to visit is node b again not a leaf node so we initialize num paths to zero and then go through the outgoing edges there are two of them let's say we are visiting the one that goes from b to c first that means we will set the value of this edge from b to c to the current num paths of b which is zero and after that increment num paths with the num num paths of c so this means we set this value to two and then look at the other edge where we label the edge with the current num paths of b meaning two and then add to the num paths of b the num paths of d which means this two here becomes a four and then finally there's only one node left to be visited and this is node a which again is not a leaf node again we initialize this num paths to zero and then go through the two outgoing edges where for the first one we'll set this values this edge here to zero and then increment the current num paths of a with the num paths of c so with we add two and then put this value as the edge value on the next edge and then add the num paths of b to num paths of a so we have two plus four which at the end gives us six and this is the final result that we get from this algorithm so now we have every edge associated with some number and if you now look at these edge numbers you'll see that each of them is chosen such that if you go through some path you'll get a unique number that identifies this path which is exactly what we wanted to have in the first part of the ball errors algorithm not to check if this idea was clear enough i'll have a little quiz for you which is a slightly different graph from the graphs that we've seen so far so it looks very similar to the one that we had before but the big difference is that there's no edge here between b and c and now what i would like here to do is to basically do the same algorithm that i've just done on this graph in order to compute the values that need to be associated with these edges so basically the question is what will be here and in order to do this you'll need to decide in which order to visit these nodes and what num path values to associate to associate with each of these nodes as a little hint i will tell you that the sum of the different num path values if you go through all nodes should be 12 and then another hint to for you to check whether your solution is correct is that once you have associated values with each of the edges in the graph you can go through all the four paths that this graph has and check if each of them has a different sum so that each path is labeled with some value between 0 and 3 so there should be a value a path value a path labeled with 1 a path labeled with 2 a path labeled with 3 and that should cover all all paths so at this point please stop the video for a moment and just try it out yourself to see if you've really understood it and if anyone doesn't really know the solution or isn't sure whether the solution is correct feel free to ask a question in alias all right so now we've seen the first part of this algorithm where we have computed an integer value for each of the edges such that the sum along a path yields a unique number for every path and now the second step of the algorithm wants to minimize the effort that is needed to increment values when edges are actually taken at runtime based on some information about how frequent these individual edges are actually executed so we now look into this second step and we'll see how the algorithm addresses that second problem for the second part of this algorithm we need to introduce some new terminology and this terminology is from the graph theory field and this is the idea of a spanning tree so given some graph g a spanning tree is essentially an undirected subgraph of the given graph g that is a tree and at the same time contains all nodes that we have in the graph g and then once you have found such a spanning tree there's another term namely the so-called chord edges and those are all the edges that are in our original graph g but that are not part of the spanning tree t now as an example to illustrate this idea of spanning trees let's just have a look at our graph that we've used as a running example throughout this lecture and this one will be our original graph g in this case so here it is again and now in addition to the edges that we've used all the time I'll also use the artificial back edge that we have introduced earlier when I talked about the assumption that the algorithm makes and now I'm giving you a couple of examples of potential spanning trees and the question for you is which of these examples is actually a spanning tree of g all right so here the examples there are five of them for each example I have not repeated the names of the nodes but just put these little circles but I guess you can basically see which node I mean and then between the nodes there are some edges and now the question is given the requirements that we have for a spanning tree which of these are actual spanning trees now let's have a quick look back at these requirements so essentially what we want to have here is that the spanning tree must be an undirected subgraph of g and it must be a tree and it must contain contain all nodes of the original graph so by given these requirements we can see that this first candidate is actually not a spanning tree simply because it does not contain this one node here so number one is not a spanning tree in contrast number two is a spanning tree so this one is fine because it does contain all nodes it is a tree and yeah it's an undirected subgraph of g number three does also contain all nodes but it's problematic because we have a circle here so this means this one is actually not a tree in contrast number four is fine because even though it looks a bit weird it is a tree and it contains all nodes of our graph and the same is true for candidate number five which is another spanning tree of our original graph g so as you can see here there's possibly more than one spanning tree of a given graph and each of them must include all the nodes of the original graph so now given this idea of a spanning tree we can use this to find a way to increment just a subset of all the edges of our graph so that we still have this property that the sum of the edges along a path gives you a unique encoding of the path and now the idea here is the following so we start by choosing among the different spanning trees of the graph that spanning tree that maximizes the edge costs so basically we look at the costs of the individual edges that would be part of a spanning tree and then to sum them and if this is the maximum across all spanning trees of the given graph then that's the spanning tree that we want to have now those are the edges that we do not want to instrument because they are the most expensive ones and instead what we do is we will then increment our our counter only at the chords of the spanning tree so exactly at those edges that are not part of the spanning tree and in order to yeah and then by doing this we basically get increments at exactly those places of the program that are executed the least often but where we still at the end get this nice property that the sum of the edge values is a unique encoding for the path through our graph so let me illustrate this idea again using our running example so here you again see our graph including the artificial back edge and now we make the assumption that we know the cost of individual edges so we have some idea of for example how often each of these edges is executed so let's assume we have these values as our known edge cost and then based on these known edge costs the next thing we can do is to think about the most expensive spanning tree of this given graph and if you do this and try out a couple of spanning trees you will find the following namely that this spanning tree so I'm basically labeling those edges that are part of the tree and I'm omitting all the others that this one is the one that maximizes the overall cost of the involved edges now using this most expensive spanning tree what we now want to do is to find minimal increments so we need to basically only increment some of the edges that are not expensive in this graph but first let's have a look at the increments that we had computed earlier and that are not necessarily the minimal ones so these non-minimal increments adjust what we had computed earlier so let me just go back a few slides so these blue values that we had computed here as the values of the edges this is what I'm now using again so I'm just putting them here onto our graph again so we had two two and one here and all the others are zero but now we do not want to make these increment operations on edges that are among the expensive ones so we do not want to make them on those red edges that you see on the left but instead we want to make them on the chord edges so those edges that are not part of this most expensive spanning tree so looking at the spanning tree this means we want to ideally increment on this edge on this edge on this edge and on that edge but not on the others so now in order to do this so to only have increment operations on these green chord edges we need to move around these increment operations while still preserving the property that every path has a unique encoding and the algorithm to do this is something that I will not show here in the lecture simply because yeah there's not enough time to really cover also that algorithm but just believe me that there is an existing algorithm that does it and essentially what it computes at the end are these minimal increments that look as follows so we will have some increment here which doesn't really increment anything so this is just zero we will put an increment of two here of four here and of one here and now you may recognize these numbers because this is exactly what I've shown you at the very beginning where we have said that this is actually the path encoding that we would like to get and where we had already seen at the beginning that this is indeed a path encoding that gives every path from a to f a unique number good so now you know how to compute these minimal increments in theory let's have a quick look at how this is typically implemented so how to actually instrument a program in order to then really compute the encoding for the path and to then also count how often each path has been executed so the basic idea is that at the entry into our control flow graph we initializing this variable r that stores the sum of the edge values that are executed and we initialize this value to zero and then on all edges that have an increment we add a piece of code that actually represents this increment by adding some value to our counter r and then at the exit of the entire graph we need to increment the count for this path by basically using the value of r that we have at the end as the index into this array count which stores the counts for the different paths in the program so that's the basic idea and now every basic idea can be optimized even further so there are two optimizations that one can do here one is that instead of incrementing sorry instead of initializing this value r at the very beginning where we just set it to zero we can actually save this effort and only initialize a 2d already incremented value at the first edge that is taken on a path so we do not initialize it to zero but initialize it to the first value that it gets on the corresponding edge and we can also optimize a little further at the end so instead of doing this increment at the very end we can combine this with the last increment of r that happens by basically putting this kind of instruction at this last edge through the graph where we increment both r with some value and then also our counter for the corresponding path so now you may wonder once we have this encoding and this array count that tells us for every encoding how often it has occurred how do we actually get the path so how do we regenerate the path from a given encoding and here the idea is the following so if we say that this sum this encoding is lowercase r then what we do is the following we use the edge values that we have from the first step of the algorithm so basically these non-minimal increments and then we started the entry of the graph with some helper value capital r equal to our sum lowercase r and then we go through the graph until we reach the exit and at every branch so basically every time we need to decide which way we go we take the edge that has the largest value associated with this edge that is still smaller or equal than our capital r and then just remove this value from our capital r and we do this until we reach the end and then we've taken a path and this is exactly the path that is represented by the encoding lowercase r so let's again illustrate this idea using the running example so what you see here is the graph that you've already seen all the time plus the non-minimal increments for these edges that we have computed earlier and now let's suppose that we have one of these encodings let's say value four and we want to know which path this encoding corresponds to so what we do is we have this helper variable capital r which we initialize with the encoding that we have so with four and then we start at the entry node of our graph and then whenever we have to decide between two paths like for example here whether we go to b or to c we use the edge that has the largest value that still fits into our helper value uppercase r so in this case this would be this edge so that means we basically go to from a to b and then the decrement uppercase r with the edge value so we this means we subtract two and have two remaining now we add b and here again we have to decide do we go to c or do we go to d and again we take that edge that has the largest value that still fits into our capital r here which means we will take the one that goes down to d which means our next node on the path is d and we again remove the value of this edge from our uppercase r meaning we have only zero left here and now when we are at edge d we in principle could again decide between going to e or to f but since we have only zero left here in our uppercase r the only choice that we have is to take the edge directly to f and this gives us the path that is associated with this encoding of four now just as a another example let's assume that our encoding is one then we do the same so we take this one as kind of the gas that we can use on our way to the exit now we are here and we cannot go to b because that would cost us two but we have only one left so what we do is instead to go to c now once we are at c there's only one option we go to d and now at d we have two options we could go down to e and this is also what we do but as a result we have to remove one from our remaining number so we have then e and from e there's only one way out which is two f so this is the path that corresponds to encoding one all right and this is the end of video number two in this lecture on path profiling so you've now seen the core of the ball narrows algorithm which is a way to address this path profiling problem that is both correct so it always gives a unique encoding for every path and efficient because it guarantees that the cost for the increment operations is minimal thank you very much for listening and see you in the next video


Say I have an image and I want to transfer it over a network, raw image data isn't really compact and can take a long time to traverse over a network. In today's world if increased image processing and video streaming, such low transfer rates isn't going to cut it. So how do we overcome this network bandwidth bottleneck? Well, from the source, we can first compress the image, then send this compressed version across the network, and then reconstruct the image at the destination. It sounds like a plausible solution. Consider another scenario. Self-driving cars have been the big talk for a while. How does this work though? Just think big picture. We know for them to function, they need to keep themselves on the road, they need to follow traffic rules, and not to run over pedestrians. To accomplish this, they simply need to detect and delineate objects in its immediate field of vision. And this process is called semantic segmentation. These two applications are very crucial to our world in 2019. And fundamental way that we can implement them is through an architecture called auto-encoders. In this video we're going to understand what they are, how they work, and how exactly they can be used in these cool applications. This is code emporium. So let's get started. Data around us like images and documents are very high dimensional. Auto-encoders can learn a simple representation of it. They are a class of unsupervised neural networks. Usually you wouldn't associate neural nets with being unsupervised, but today you will. The architecture consists of three parts, an encoder, a bottleneck, and a decoder. At the simplest level, we can have a layer of fully connected neurons for each part. The output represents the reconstructed input, hence it has the same dimensions. The objective is to learn a representation that will minimize the reconstruction loss. Learning these weights can be done with techniques like recirculation or back propagation. However, there is a problem. A trivial solution would be a zero loss if we just copy the images. But this would mean that the latent layer doesn't really learn anything, which is useless. One way to work around this is to constrain the properties of this hidden layer, these properties being the size and activation. Consider size. If the number of neurons in H is less than that of the input layer, the autoencoder is said to be under complete. This is useful as the network needs to learn latent representations with an only a small set of neurons, so we're sure that it's going to learn something. The second property is activation. If we don't use an activation function for the decoder phase and the loss function is the mean squared error, then the results are similar to PCA, principal component analysis. And so the latent representation of K neurons will represent the top K principal components. Adding a nonlinear activation in the encoder and decoder parts allow us to perform a nonlinear version of PCA. But then we come back to the same problem. If H is unconstrained, it will simply copy the input to the output as that leads to a zero loss. We need to make sure that H is restrained to an extent for learning. It is important to remember that we aren't too concerned about the output of the decoder, but more of the latent representation that the autoencoder learns. Already, we can see a problem with this vanilla autoencoder. We need the latent feature vector space to be small, and the encoder and decoder part should be shallow. If not, the resulting latent representation becomes useless as it simply copies the image. This means more complex data cannot be modeled accurately, and we may end up with underfitted models. Ideally, we should be able to have a latent representation that is at least the size of the input and also introduces a nonlinear activation in the encoder and decoder parts. This will allow more complex models to be fitted. We can do this using regularized autoencoders. They have the same principles of vanilla autoencoders, but have a modified loss function. When you hear regularization, you're probably thinking of L1 and L2 regularization, where the coefficients are penalized to mitigate overfitting. We have a similar intuition here for sparse autoencoders. The overall loss contains an additional sparse penalty term on the code layer H. While thinking of sparsity, think most neurons are turned off. You can relate this to the concept of dropout in neural networks where neurons are randomly turned off. This forces the network to learn more accurate representations that better generalize training data. Let's say the hidden layer has a sigmoid activation. This means that the output values will range from 0 to 1. We say a neuron is off if it is close to 0 and on if it is close to 1. We impose a sparsity constraint by making the average activation output of each hidden neuron some very low value. Say rhoj for the jth neuron. This rhoj hat is the sparsity parameter. Now this notation may look a bit confusing. Basically, if we have n samples, each neuron in the hidden layer is activated to some extent. We want the average to be some low value rhoj. I'll make the activation function a function of training examples as well. To show that the activation of the jth neuron, aj, depends on the sample xn. Note, it's just a function, not a multiplication with the input vector. We want it to be a very low value, like 0.05, but we cannot just set it to 0.05. It's an aggregate after all, not a simple value. So we set rhoj to 0.05 and penalize all neurons with a rhoj hat that deviates from this value. We can model two distributions, p and q, with the probability of success being rhoj and rhoj hat, respectively. The idea is to ensure the predicted distribution is as close to the actual one. And we can model this with the KL divergence. Now this is just one loss function that could work. Just remember we are considering a sigmoid activation. This is equivalent to the KL divergence between two Bernoulli distributions, with the probability of success being rhoj and rhoj hat. By the way, KL divergence is a measure of difference between two distributions. Ideally, we want to minimize it. This graph shows the KL divergence when rho is equal to 2 for a sigmoid activation. Clearly, it's minimum when rho is equal to rhoj hat. We write the overall cost function as a sum of cost incurred from the vanilla autoencoder plus the weighted sum of KL divergences from every neuron from threshold. So how exactly does sparsity help? We can take a look at the network that learns visually. Say we have an autoencoder whose input is a set of 10 cross 10 images. So that's 100 dimensional input, and say that we use a hidden network of size 100 as well. After training, we want to visualize the components, as shown here. Consider the top left corner, which was learned by the first neuron. This neuron learned to detect diagonal edges. All neurons, like so, learn to detect edges of different orientation. So together, they learned a very effective representation. Another type of regularized encoder are denoising autoencoders. Autoencoders learn a latent representation from the input text in an unsupervised way. Denoising autoencoders learn such a representation from a corrupt input. This allows for a better generalization. So you can take the input x and add some noise to it. The resulting corrupted input is x dash, or x prime. The hidden layer can no longer simply copy the input to the output, hence it is forced to learn some latent representation. For the most part until now, we've only been talking about autoencoders with a single hidden layer for the code layer, a single input layer for the encoder, and a single output layer for the decoder. Such a shallow network can actually be quite useful. You can attribute this to the universal approximation theorem. In neural net theory, a neural network with a single hidden layer and a finite number of neurons can approximate any function with assumptions of its activation. However, there is nothing stopping it from creating deeper architectures. This allows faster training times as we don't need as much training data for a good generalization. Hope you can now see how autoencoders can be used in data transfers across a network. The example application that we talked about in the beginning of the video. They can also be used in instant segmentation. Swapping out fully connected layers with convolution layers, the autoencoders can take image inputs preserving spatial representation, but instead of the original image, we aim to output a semantic segmented counterpart, outlining the contours of interest. For example, this tech can be used in self-driving cars to segment different objects of interest. Xander on Archive Insights does a pretty good job of explaining this on his variational autoencoder video, so check that out. Another application is neural inpainting. Instead of adding noise to autoencoders, you can remove rectangular sections from an image and try to reconstruct the original. This allows you to do things like remove watermarks from images. And I can keep going. Semantic hashing. Autoencoder takes documents as input and outputs a reduced 32-bit address. The documents mapped to closer addresses are considered similar. The distance between two documents is given by the hamming distance, that is, the number of positions in the address that are different from each other. The list of applications just goes on. Ever since the introduction of generative adversarial nets in 2014, the generative models are being investigated in a new light. There are so many interesting applications that are coming out, and it's always fun to read and play around with. That's all I've got for you now, so be sure to like, subscribe, hit that bell, share, watch my videos until the end, and I'll be dishing out new content soon, so stick around.


Hello everyone and welcome back to a brand new video here on the Broogly Channel. I am your host, Broogly, and in this video I'm going to be explaining Backroom's Level Pie, which is a crazy level, to say the least. This level is such a weird and trippy one, and it literally has this dream scape, dream core vibe to it that I think you're really going to enjoy. So without any more blabbering on from me, let's get into the explanation, shall we? Backroom's Level Pie is classified as a Class 2E difficulty and is pretty unsafe with non-entity hazards. So you're not going to have to worry about a wretch chasing you, you're going to have to worry about the level hurting you. That's all you need to know. Level Pie is actually a sub-level that is thought to exist between levels 3 and level 4. The level's physical appearance is pretty unique to all the other levels that I've gone over. It looks like this bright, bold expanse of hills. The grass, the sky, the clouds, all of it is set to the highest saturation possible, which just means that all of the colors are literally as bold as they can physically be. The hills here are so round in some spots that it's impossible to climb up them so they're kind of just like spheres sticking out of the ground. And also some of the hills are coming out of the ground at such unnatural ways or they're slanted in really strange angles that it doesn't even like make any comprehensible sense to your brain. You literally cannot even fathom it. It all just adds to how trippy the level is. The hills and slopes almost act like ocean waves, but instead of water, it's grass. There are also freshly paved asphalt roads that wind around the hills as well, and these roads curve and follow them. All the slopes and turns and everything, even the ones that don't make any sense, there's still roads going up them. Some of the roads seem to randomly end or curve and then just stop, which is pretty strange. So pretty much the hills and the roads are so curvy and windy and wavy that it would be hard for your brain to even understand what you're looking at. Not to mention how bright and saturated everything is. The most common thing on this level besides those hills and roads are the multicolored gas stations. Now these are placed on really strange locations. In fact, it doesn't even seem possible to have buildings where these are. But hey, that's the back rooms for you. They're put on direct hillsides, on top of hills, on the sides of hills, in the valleys, literally anywhere. Even if it doesn't even seem possible for a building to exist, they're gonna be there. The one constant with these gas stations is that they'll always be near a road to some degree. Now inside of the gas stations, there is legitimately no sign of any human life. But each of them is perfectly bright and clean and spotless. There are things on the shelves too, but they never move and you can't move them. It's almost like they're stuck in time. The actual brands of the gas stations that are here on the level do not exist in real life, like it's a completely new, random brand that no one has ever seen before, which almost makes it creepier in my opinion. The names and logos are just out of the world, like they've never been seen before. However, even after all that, I think that the weirdest thing on this level is that sometimes a random fog will appear and start to roll over the hills. This fog kind of hovers and slithers its way around the hills, and when it gets near you, you can see that the saturation of the level gets lower, kind of like it lessens the color's vibrancy. And the area near this fog gets really pixely when it passes by. Almost like the level has a low resolution when the fog is there or something like that, pretty spooky. This misty fog is the biggest environmental danger of the level because it's toxic to breathe in, like bad toxic. You can avoid the mist by trying to get inside a gas station, but if you don't, well, you know what happens. There are no outposts here, but there was rumored to be a few, however no one knows if there actually was, or if the outpost is vanished somehow, or who knows what happened to them. There are also no entities, and to enter this level, you can find a door in level 51 that opens to show you this place. Now this door is random, so you're going to have to open a ton of different ones to find it, but hey, be my guest. And to exit, there isn't one set in stone yet. Most people just randomly get sent away, kind of like the level chooses who stays and goes, so if you do get here, you're stuck. Have fun. So yeah, that was the explanation of the backroom level pie. I hope you enjoyed it. Thank you for watching until the end of the video.  Now if you are still watching, comment down below, Pie Broogly, so I can leave you a heart as a thank you for watching to the end. Thank you all for your insane support on all my channels, Broogly, Toogly, and Spooogly. I really appreciate it. Broogly is nearing 500,000 subscribers. And if you want to help me get there, drop a sub. It's free. And at 500,000, I am buying the full backroom themed outfit. The shirt, the pants, the hat, the socks, all of it has the level zero wallpaper design on it. And I'm going to be wearing that outfit in public, doing videos in it, a photo shoot, that kind of stuff. If you want to see that, it's happening at 500,000. Also, my second channel, Toogly, just hit 30,000, so thank you for that. I'm uploading on Toogly literally three to four times a week on top of Broogly uploads, and its reactions, gaming, tierless videos, all that kind of jazz. If you want to see more of me and more of a relaxed tone, go check it out over there. I think you're going to enjoy it for real. Lastly, go check out my third channel, Spooogly. I upload one to two times a week on there where I do SCPs, Trevor Henderson creatures, and real life UFO or alien encounters or conspiracy theories, that kind of stuff. It's a lot of fun, really cryptic kind of stuff over there. If you're into the back rooms, then you're really going to like that stuff too. So yeah, enough self-promoting. Thank you for everything seriously. I love you all. Thank you so much, and I will see you in the next video. Peace.


We have a downtown master plan that I botched and saying it was the master downtown. No, that's no, that's okay Either either way is probably fine I just want to make sure that there's a distinction between the downtown master plan and what is sometimes referred to as the master plan But it's technically the city plan The entire city that's the entire city plan. That's a separate document There's a lot of work that's happening on that right now. Oh, is there? Oh, yeah So there's what kind of work is happening on the master plan. Yeah, so the master plan is a document that we have to have for the state and There are different chapters that we have to have and so many of those chapters are being farmed out to different committees so for example, we have to have a chapter on energy and so the energy committee is Working on writing that right now and there's a transportation chapter See when people think about the master plan and think of the master plan in terms of zoning Is is that portion being hashed out again? No that So there are tweaks that we That we are continuing to work on With the zoning zoning on savings pastor. Is that pretty much settled? None of the tweaks that I am aware of I guess we did we did change something on savings pastor, but it was it was to Bring One housing density line up to match another housing density line Exactly, there are there's lots of these little things that we're still working on I mean that was a year long Yeah, that was significant. That was significant. It was great Glad we're through it actually But it needed it needed doing anyway, that's but I just want to make sure that that's a So we're talking about the recent plan. Yes for for just the downtown Yes, and it's how do we define the downtown that's in that plan? What are the boundaries of that plan? That's a great question There's so there's a map and so it includes the Includes Main Street down to Memorial Park and includes Confluence Park and includes all that space up to I think Taylor Street And and that would be Confluence Park. Yeah, right exactly and then goes to the library Yeah, I'm sure to think of what the I can't I don't recall what the northernmost boundary was it included Langdon Street and So anyway, we actually got to see some of the first outcomes from some initial outcomes I can explain what those what those initial outcome what the highlights of the initial Yeah, well, so they looked at two different plans and with you know with the goal of improving the pedestrian and bicycle experience for for Pedestrian as a bicyclist downtown and and also just to you know and increase the you know vibrancy and whatnot, but So there it was pretty clear that one of the plans was was going to be Better in a lot of ways It included a lot more trees in the downtown one of the things I thought was street lighting I think it was uniform street lighting. Yeah, that was one of the things there was one of things I thought was particularly interesting was the possibility of curbless Streets on Langdon Street to make it more of like a festival streets. I Guess that was a new term for me, but it's I think it's obvious sort of what it means But you know with this idea that It could with without curbs Could just could more easily turn into sort of an open sort of free Space for for pedestrians if we ever wanted to go towards a pedestrian mall on Langdon Street That would allow for that they weren't recommend weren't making a recommendation as to whether or not we should go to 100% pedestrian on Langdon Street, but it leaves that as an option What was the final recommendation on Elm Street? Well, so let's I just want to be clear there None of this was final recommendation. Oh, let me rephrase it. It's okay. What was the recommendation for Elm Street for Elm Street? Wasn't it one one way? No so There was consideration of one way on Elm Street in the scoping study that we were talking about previously, but we ultimately ended up Not pursuing that and I don't think that was a part of this the downtown master plans recommendations either But another one of the interesting aspects was in front of City Hall Having more of a plaza feel it seems like the space in front of City Hall is not necessarily well used at the moment and so it was a revisioning of that that space and They recommended some permeable pavers, which I was very interested in I okay. I have to ask what is a permeable paver? well, okay, so You could think of them as kind of like cobblestones, but they're But they're not stone necessarily. They're like a like a brick clay Kind of thing I should I'm still learning about it myself in all honesty. I was very I've been very skeptical about permeable pavement. I I'm also very hopeful about permeable pavement because it's It's something that I think we we really need to be exploring For a storm Water drainage, but permeable pavement has just not had a great durability in our climate But permeable pavers are much More common in Europe places that have freeze-thaw cycles like we do and These seem to last and there's a gap. So you can think of it as like a bathroom tile. I suppose Where or it's got a freeze cap I suppose so I mean I don't know but I but apparently they doesn't buckle right so they're not they're not gonna be breaking up They're not absorbing water themselves, but there's a gap between those pavers and the next paver so that water can actually infiltrate and That that seems like it's working elsewhere. So it's worth exploring. I don't I mean I still You know, it seems like there's still some research to be done there, but I'm very interested now What's timeframe on this implementation? It's this one. This is long-term from what I gather. It's similar to the Scoping study the traffic study that we were just talking about again. There's a lot of elements to that, but it's going to Be incremental Some depending on the rebuild of the realtor street. Yes So that is actually one of the driving factors. We actually started the downtown master plan knowing that The realtor bridge was going to need to be Fixed replaced because it's it's old and needs the work and that's a main artery obviously in our Downtown and it's gonna when that happens when that's a state project. It's yep. Yep. It's a state highway. Yeah, technically and it is going to be a major disruption in the in our downtown and so we wanted to be thinking about like, okay if we have to if we have to close The realtor bridge for its repair then Let's have a plan for things that we can be doing alongside of that project to increase the vitality and pedestrian experience On the other end of that That construction any idea when that's gonna happen. I would put it in the ballpark of the next five years This really is long-term thinking. Yeah. Yeah, I mean it could be three years, but it's Because we're not that that project is not gonna happen without some significant grants and so We're sort of just waiting to see, you know, what the how that works out Now this is so painful to even talk about. Yeah a premise of this downtown plan was the parking garage. Yes Yeah, no fair enough. So there is One of the the hopes of this plan was that it would not in increasing the experience of bicyclists and pedestrians downtown the goal was to not Lose a significant number of parking spaces and That was so part part of the planning is predicated on The existence of a parking garage to support parking for the city. Where are we? Yep, so We are currently in in litigation which is to say that It's before the environmental court and Is there any chance of arbitration before it goes to the environmental court? No, I would say well, I mean I for for my part mediation I am always open to that Looking to find a Way to resolve this outside of the court. I think that's always best But you know what we did we did try that weren't able to work it out and so so Yeah, so we're currently a court may sorry may a May date for the for the court Sorry, do you mean like when it would be exactly I I don't know I couldn't tell you But it's on it it's ongoing So the recreation Center, let's stay around in this neighborhood. Sure. What is what is the status of the recreation Center? great question, so You mean the one on Berry Street. Absolutely. Yeah, yeah, so that That building needs some significant work upgrades. Are you talking about the shooting range? Well, the shooting range has since been closed, but it is not ADA accessible AB AB oh Accessible for people with disabilities and It has asbestos and There's and what there's there's no sprinkler system in that building so there are why are we talking about? Repairing it and just not raising it if it's in such bad shape. So that's a great question so we did look at the possibility of Actually selling that building and then building a new facility, but a new facility would be Very expensive and we even without a swimming pool even without a swimming pool and we asked you know folks what what they you know would be willing to spend tax money on and and They there was not a lot of support for raising taxes for a pool And even without the pool you're saying it would have been a very sizable. Yes Yes, and it exactly and and even so it's also a sizable investment With this facility it is It was going to be expensive Basically either way And so it came down to a policy question of like would we rather find a new location or is this location? Advantages enough that we would rather keep those people those few that don't know where this is It's a cross from the senior center on berry street down from the church. Yes And it is a historic building. I mean it is It was an armory. It was an armory It I think it is an asset to have a recreational Accessible facility downtown But it needs to be accessible. And so we are looking at improvements that would Would do all those things I just mentioned hearings where you'll show the The graphs are the drawings. Yeah, so we already had one of them Earlier gosh, this was in January Really to get a sense of like where the community was at with this And that was very well attended. It was And it's on our website. Yes. Yep. It was it was great meeting really thoughtful questions and then And laid out sort of what the plan would be It's also been at council a couple times for some feedback And that was that was also really useful. Now there was a discussion as to whether it was going to be on town meeting balance Yes, what was that discussion like? Well, so we They're yeah, right. So there was some discussion about you know, should we try to Educate the public with what information we have now In time for a march vote But then in a certain sense the decision was sort of made for us in that actually one of the point people on the With the architecture firm that we were working with actually passed away. And so we decided, okay I mean, there's that organization still working with us on this project and But we figured it would probably be wise to Not try to push for march, but it's thinking we have two elections coming up We have the primary election in august and we have the general election in november Which one do you think? If you had the hazard of gas, we will see a bond issue Well, that's a good question. And I think it actually depends on another factor as well, which is a potential bond for the what's The the property that is next to the drawing board The moat property the moat property tks. Yeah, so now the moats just to bring people up to speed with it The moat trust owned eminem beverage The city swapped land for the path that goes through there In exchange for the building rights next to the drawing board and there was a discussion I don't know why i'm saying this. Yeah, you're doing a great job In exchange for the right for them to build a building Which would be the same height as the other buildings if you'll take the story from there Sure. So that project Ended up not going through we still were able to do the the land swap But it's a it's a little bit of a complicated story, but the bottom line is that We ended up Basically saying that we didn't Like yeah, gosh, it's like how much how deeply into the story do we go the point is We currently owe we currently own That property But we also owe the state money for that property. So we either need to Sell it which was the original plan And pay the state back Or we need to bond for it and buy out basically the state's interest in it And so if say we wanted it to be open space a park or Or do we want to build a building or do we want to build a building and so We Basically this question has to be resolved this year 2020 and that doesn't give us a lot of time Crocs, I'm not going to nail you to a specific. Yeah, hundreds of thousands. No. No, it's it's like 130 It really is but when we're talking about the rec center, we're talking 3.5 to 5 million. Yes. Yes, right Right. So I I suspect that's very likely that We may have a bond vote On the on that property in In august and so then the question I think becomes You know, do we ask for a bond at the same time? Or you know for the rec building or do we Wait until there's a larger voter turnout exactly larger voter turnout in november and You know, I I don't it's not clear to me yet Which the the rec building bond will go on so we'll see but we think it will happen this year I think I think it's um, It's unnecessary to delay it past this year if we were to authorize that bond issuance Approximately when do you think we would actually see The rec center that would be open? It's a great question. Um, so the Architects told us that the the makeover of the rec building would take approximately 12 months And that's a lot of disturbance For activities that happen in that building and so Just to to follow the timeline I'm You know projecting out here a little bit, but So let's say we had a bond in either august or november That would probably mean that we wouldn't start to see work actually being done For at least probably six to eight months after that But then we're talking 2022. Yes, uh, right exactly 2022 is I think the soonest we would see The facility totally done and open now, let me ask you another question Okay, will there be houses on savings past year when that thing opens? um, well Would I like to see housing on savings? Yes. Well, you would have answered that in 2013. Yeah Well, and I you know, I think there's certainly the the possibility But you know, we'll we'll see I think the You know plans plans like that take time to develop But that's a long time in that particular case Well, so even with you know the possibility of of a developer If if say there was a developer who's interested now It it would still take Time to to Figure that all out. Do you think we'd see challenges as we see challenges on the parking garage? I think it would depend on whether whatever was designed For that space was in The same spirit as the the plans that were developed some years ago with the together with the friends of savings pasture and And what I think is is now actually reflected in the zoning And so I think as long as It's kind of you really can't plan something against the zoning and I think that really does capture What part of what that agreement really was so I I think it It has a has a better shot now than it perhaps it would have in the past Now let's come back into town. Are we going to see anything next to the distillery? Do you think we'll see development on that side? Well, I know there's been talk about that But I I'm not aware of anything The Montpellier development corporation. Yes Could you discuss we've lost our third we lost our third director through no fault of our own Yes, I I continue to believe that it has value and You know to be fair. I think this most recent switch of theirs To a different type of model is actually going to be more flexible So the new model that they're moving towards is a way from having a single executive director But instead hiring project managers for specific projects So, you know thinking about the places in Montpellier that could use some development Is there You know someone who could step in to help You know to help all the the stakeholders move through the process and that would allow People with different types of expertise to step in at the right moment and You know as as project managers and so I'm eager to see if that Works I think it has potential Is console ready to Target them help them to target The area the strip commercial area on two over In district three that they could use some sort of economic development help Uh, well, I mean so I think what we it's the sister. It's it's it's the very little sister to our downtown Yeah, right. It's sort of a different Different it's almost yeah, it's a different character. It's a different character. It's an economic Uh, you know area, but it's but it's not really part of the downtown and you know, it doesn't catch the attention that Yeah, no, I agree. Um, and it's and the thing is too. I mean the way that the council would Communicate that is potentially through like the growth district or through the tiff district um, and it's not Uh, it's I don't think it's in either of those but Mount failure alive really can't tend to them because that's not their charter Right, but I think it's interesting. I mean, um bar hill being a hub out there That end of town anyway, uh, I I think and especially together with the bike The shared use path uh extending out to the edge of town now I think there's going to be some new opportunities for that end of town And I'm really interested to see what happens there and in fact one of the places that I'm very interested in is um What we call five home farm way, um, which is I have no idea. No, that's okay. Um, there's uh, It's it's actually the first It's supposedly uh the first Uh building a home. It's the first home built in montpelier. Uh, and so it's you know next to ague and cascades out there Well, so it was two rivers. It was two rivers. Yeah Anyway, there's a lot of land associated with that and it's it's interesting because the bike path the shared use path Excuse me, um goes Uh, basically Right to you know that That part of the world and uh, I think that could has the potential to be a great destination um For walkers bikers, um, you know, people out with dogs that sort of thing so Anyway, a lot of potential there on that same street and can I can I go east all the way past main street? Can I head towards dog river? And towards the treatment plant? Yeah Now when we spoke last Yes, you were Selling bonds for for that. Yes. Well, so the bond passed That was 17 million dollars Which is a lot of money. Um, but actually, uh, what has happened since then is the That project has actually gotten multiple grants and low interest loans Which you were hoping for when you were on with me selling. Yeah Yes, and those came through Which was very exciting And so that means that the the project is going to be Able to be basically cash positive much sooner. Um Which is just really exciting plus that that building is that it means that the Facility will be able to be thermally net zero Basically from the methane that Is emitted from the the waste that it collects and there's going to be a substantial Excess amount and we actually just the council heard About the plans for what we would do with the excess. We knew that there would be excess But we didn't know what it would go towards in excess of what methane an excess of methane and energy And so the question is what should we use that? No, we're lighting that area Around and powering this plant from what it's generating. Yes, exactly. So now the plan is to Generate electricity with the excess and sell that back to the grid Which is going to make that plan Cash positive at least for the you know, we have we have perspective customers for this. Yes, it's not speculative Right. No, it's being constructed right now Yeah, and we have all the permits for wastewater that's going to come out of that potentially Yes, and we've recently I realize this is a little tangential to what you're talking about but we We're just notified that, you know, we have some concerning levels of PFA's PSA's being PFA's Oh, I'm not sure that I can recall the It's a nasty chemical. Yeah, it's probably like I would guess it's something like perfluoro I don't know whatever but But so we actually are going to be learning more about that at the next council meeting we're going to have a report From the folks at the water resource recovery facility And it's something that I think we're going to be taking a harder look at in the near future Now we've got a capital investment coming not in this budget, but in the next budget. We're picking up a fire truck Oh, I I've had didn't look at it at that. Yeah, that's a good bill show. I didn't see that. Um, I've had quite quite costly, but it over a long horizon. Well, and so that would be a part of the equipment plan Exactly. And um, which is a part of the overall capital plan So and there's so there's a schedule. Uh, just so people are aware there's a schedule of replacement for all of the City vehicles so that we're not ever, you know, buying you know, new police cruisers all at the same time, right? So it's it's sort of staggered. Um, which, you know makes sense fiscally as well so If that if the equipment plan is relatively stable, then, you know, that it often doesn't get much more look than that But one of the other things that's notable this year in the equipment plan is that we are buying a hybrid police vehicle which i'm very excited about for the carbon emission reductions, uh, and particularly because Police vehicles idle all the time. Um, they they it's just a part of the policy We leave them on and so to have a hybrid vehicle that would not be emitting carbon while it was stationary, even if it was technically on is It's a wonderful relief Boy, it seems like you and I have gone around and around this town. Is there any other project of note? Oh gosh. Well, I I mean, I think it's it would be remiss Of us to not just to not note that within the last year since we last spoke Doing this, uh, we completed the the transit center That we did that was a major project Took, you know 20 years and now we hopefully greyhound will incorporate it in their schedule in the next 20 years Yes, yes But it also, you know increased the amount of housing in the downtown people are living there now It's it's just it's such a wonderful Plot of land now. It's it's just a delight So I'm I'm psyched that that is complete It's not complete until the old golf sign at the corner of taylor and and main street comes down Yes, well, that's uh, you know, we'll we'll have to see what ends up happening in that property I'm excited to see that be developed or a new zoning ordinance that that would take care of those old decrepit signs potentially Yeah And I really thank you for sitting through this long slog tonight Happy to Congratulations on becoming mayor again Thank you. And I thank you for being here. Thanks so much for doing all of these interviews richard It's it's really wonderful on your part that you do this for the city So thank you and I thank you for watching this and I urge you as I said at the beginning of the show That before I ended this show I would ask ann about her office hours. Oh, yes So my office hours are uh, tuesday from 3 30 to 4 30. You have to make an appointment at city hall I I've not gotten to the point where people need to make an appointment. They can just show up, but I Do try to limit My conversations with any one person to about 10 minutes so that if there are more people waiting that they they get their time but We can also potentially shift to have like more of a community group conversation This is I'm still new to it. So, you know, we'll let it evolve And I do thank you for watching the show and I would urge you as I urge Always watch all the shows. They're really good. All of the candidates are interesting in their own ways Bill's show is good. Libby's show is good And the more you know, I think the better off you are But make sure that you get out and vote and I realize you could say to yourself Oh, nobody's running against each other except we're in district three But it's still worth voting because voting is the bedrock of our democracy, which is your participation as well as ours Thank you for watching


What's going on everybody Joe for jazby's case breaks comm happy Friday doing a quick little a quick little pack break right here number 28 from jazby's case breaks comm with a chance to Get some of these team these teams right here, which is pretty nice Big but we're always gonna do the pack break itself first so big thanks to these folks right here And there are the teams right there. Let's roll it. Let's randomize it four and a one five times one two three four And oh one five times Joe that that hoops is back mixer will probably happen tonight We did two seven box hoops mixers yesterday So I don't see why we can't do one at least one tonight and probably more all right So after five times we've got Patrick down to Dallas and then five times for the teams one two three And oh one fifth and final time after five times we got the trail blazers down to the pistons There'll be a new dice roll for the for the giveaway spots And if you win a team you have a chance at the pelicans in that Chronicles pick your team break to jazby's case breaks calm. All right. There's the first half of this right there Grizzlies right here Memphis up 120 down 120 to 121 Interesting less than a minute left 52.7 seconds left Portland up 121 want 120. It's an exciting game right there Patrick has the trail blazers Right down here. We've got Jeremy 33 with the pelicans just a little pack break. Let's see what happens All right, so let's sort by team and now for these little filler breaks were no No treat and then at the end we'll re-randomize your names and we'll see who gets Who gets those teams right there So we're just randomizing your names and popping them right in that column top 11. We'll get something Wow mellow with a corner three Skinny mellow Red wave rookie. No, not a rookie. Dreymond though. That'll ship. Yeah mellow shooting Jeremy 33 shooter shoot All right, let's go back to the list In sheet one tab one right here So let's grab everyone from Patrick and the Hawks and Adam in the wizards Put them into this blank list right here and you dice roll. Let's roll it Let's randomize it six into two eight times top 11 after eight one two three four five six Seven and eighth and final time after eight Big thanks all of these folks right here for getting in we'll get them next time and congrats to the top 11 You have teams including Robert with the bulls. I believe Yeah, there we go So there you go Robert with the bulls Adam with the Knicks Patrick with the Celtics Phillip with the Nuggets Adam with the T-Bulls Phillip with the Cavs Asa with the Pistons Jeremy 33 with the Warriors Ryan H with the Suns Rick with the Hornets and Patrick with the Trail Blazers. We'll put a we'll put retail 28 next to your name so you know you won that in this particular pack break right here Thanks for watching Chronicles coming up soon jazby's case breaks calm


Governor Doya Diri of Biosau State has loaded the partnership between the state government and the Nigerian Air Force, saying it contributed to the prevailing peace in the state. Diri would give this commendation in his office in Yanagawa when he played host to the chief of air staff, Air Vice-Machal Oladayo Amau, on Friday, said, the cordial relationship between the Air Force and Biosau, which predated his administration, had been beneficial to both parties. Dori expressed concern over the security situation in parts of the country and called for concerted efforts on the parts of the leaders to ensure justice, peace and unity. The Brigade commander said his visit was to identify with the state government and offer the command assurance that they would partner with other sister security agencies to ensure that Biosau remained peaceful.