So we've learned so much by now, we can really explain where our results fit in in a bigger picture. What we're now going to do is express uncertainty in our results and in data science and any kind of science, uncertainty abounds. It's just part of the nature of the scientific process. Caleb notebook number 10, uncertainty. So when we make measurements, we can never be precise. Think of just measuring how tall you are. There's some uncertainty in that measurement when data is captured. When we generate this random variable, remember that's a function that generates a value from a measurement. There can be some error. There can be human error just entering the data and reading the data. There's uncertainties really everywhere. And most of all, we only take a sample from a population. And by the law of averages, we will approximate the results of the population if our sample size is large. But usually our sample size is a fraction, a tiny fraction of the population. So we do not approach the true picture in the population. So we've got to somehow express that uncertainty in our results. And we're going to do that in this notebook through a method called bootstrapping. And that'll help us to determine confidence intervals. And I'm sure you've heard of the term confidence intervals. So a quick look at the packages that we're going to use in this notebook. Of course, NumPy, SciPy, and Pandas. And then from Pandas, we're just going to use the data frame function. And then we're going to import the stats module from SciPy. And then when it comes to Plotly, you see I'm just importing. Most of the modules there in Plotly, no problems there. And just for a bit of fun, we're going to set a different theme today. So pio.templates.default. We're going to set that to ggplot2. Why not? That is a plotting library in the R language. So bootstrapping is this technique of multiple resampling for our given sample. I just want to pause a little bit. That's not what we did in the previous notebooks. There we just reassigned subjects to different groups. Because under our null hypothesis, we had equal means or whatever our statistic was, we said that that was equal. And so we didn't care in which one of the two, which one of the groups there were. Bootstrapping is something different. We're going to continuously resample also only from our samples. But we're not going to, we're going to do that with replacement. So that's a bit different. So what I want to do here, I want to generate a population. So let's set the random.seed method there. Let's pass an integer of 10. I'm going to create this computer variable called population. And to that, I'm going to assign an umpy array. And that array comes from the norm.rbs function inside of the stats module. Remember of scipy. So it's stats.norm.rbs. And so it's going to take values from a normal distribution with a mean of 100. And a standard deviation of 10. And I want 20,000 subjects in my population. So that subject, that the population can be anything. So I'm just trying to be abstract and generic. Now we have our population. In other words, if we calculate a point estimate or a measure of dispersion, that is going to be a parameter of the population. So let's look at the mean. The mean parameter in the population is 99.99. And the standard deviation of this variable in our population is 9.98. So we know that. So we have knowledge of that at this time. So for our study, we randomly select 15 individuals from the population. And we're going to set the replace equals false. We don't want the subject, a certain subject to appear in our dataset twice. So we're going out to do a study. We only have the resources, the money, the permissions from the Research Ethics Committee, whatever the case might be. We can only get data on 50 individuals. So we go out and in an unbiased form, we're going to select 50 individuals or subjects from our population. And so we're going to use the numpy.random.choice function. So we choose from the population 50. And we set replacement equals false. And of course, we're going to see that pseudo-random number generator so that we all get the same values. Now let's look at our sample. Now what I want you to imagine here, we don't know the population. Of course, we know this on the back end here, but imagine that we don't know. So all we know is the data of our 50 subjects. And we see our mean is 97.8. And our standard deviation for this continuous numerical variable in our sample is 10.84. Now obviously, these statistics, remember this is a sample. So a point estimate or measure of dispersion in a sample is called a statistic, not a parameter. So the statistics are different from the parameters. And we somehow want to tell the world that if you work with this population, if you work with individuals from this population, this is what you should expect based on our results, referring our results to the rest of the population. But how certain are we about this 97.8 as far as the mean is concerned or 10.8 as far as the standard deviation is concerned? Or you can think of other point estimates or measures of dispersion. We need to understand the uncertainty in this result. So what we're going to do now is this process of bootstrapping, the bootstrap resampling. And what that means is we're going to create new units of 50 subjects, but we're going to select them at random with replacement. That means any subject in our 50 from our sample can appear two times, three times, four times, five times in this new batch of 50. And we're going to do this over and over and over again. It's important that we still have 50 in each little new resample of ours. But I think it's very important for you to understand that some subjects can appear twice or three or four times now. And necessarily they will because if they don't, we just have the original sample again. And we don't want that original sample again. We're just resampling from our 50 over and over again. So look at this. Random.choice. So the choice function there from my sample 50 replace equals true. So if a subject is chosen, that subject is back into the hat and that subject can be chosen again at random to make up this 50. And I'm going to do that a thousand times. And what I'm going to do is calculate the mean. So I'm going to have this list of 1000 means through bootstrap resampling. And I'm going to assign that to the computer variable means. So now let's look at a distribution of these possible means. And I'm using the create underscore this plot function from the figure factory module and plotly. And you can see all the possible means through bootstrap resampling. Same sample size, but I'm doing it with replacement every time. And I've done it a thousand times. And you can see our little kernel density estimate there. Beautiful nice curve there. And you can see the histogram and a rug plot at the bottom of all the values. And all we have to do now is to determine we've got many, many, many, many here. Let's see, we've got 1000 values here. And what we're going to do is we're going to place them in order. So from the smallest mean to the largest mean, and we're going to determine some of the percentiles. So imagine we considering the 95% in the middle of all the values. So we're going to cut it off somewhere here. And you're going to cut it off somewhere here so that they're 2.5% at the bottom and 2.5% at the top and the 95% in the middle. So that means I need to know the 2.5% percentile value and the 97.5% percentile value. Now, it's not as easy as it sounds. There's a little formula attached to this little equation because we're obviously going to have some values that are repeated. And we're dealing with a continuous numerical variable here. So it can be slightly different. So we have this little approach that we do. So it is one to four. Let's read that sort the collection in ascending order or my means from my bootstrap re-samples. I'm going to calculate this value K for which is 2.5% of N. So 2.5%, that's 2.5 over 100 times N, my sample size. And if K is a whole number, then we're interested in the Kth value in that order and that's going to represent the value of all of those possible means that is at the 2.5% percentile. And if K is not round number, a whole number, we're just going to round it up to the nearest whole number. And that gives me K. And then that's at the bottom bit. Of course, we've got to do that at the top bit as well. So that's 97.5. So that's what we do here. And because we've got 1,000, because we have 1,000, the calculation is very easy. So I'm going to call it K underscore 2 underscore 5 or K 2.5%. And that's the value is 2.5. So our K here is 25. And at 97.5, our K is going to be 975. So if I have all my means in order, the 25th and the 975th one, that's going to represent the 2.5% percentile value and the 97.5% value. So let's sort these means. So I'm going to create this sorted underscore means and that's np.sort. Use the sort function from NumPy and that's going to sort them for me. And by default, that's going to be ascending. And now I want the 25th value and the 975th value. But remember, Python is zero indexed. So I actually want the 24th index and the 974th index. So let's do that. So the sorted means the 24th index. That's the 25th one is 94.4. And when we look at the top one, that's going to be 100.9. So these are the two means of all the possible means that we did from the bootstrap resampling. All the possible means that lie at the 2.5% percentile and at the 97.5% percentile. So let's plot all of this with the create underscore doesplot. And this is what it looks like. There's all our possible means, a thousand means through resampling. There's the population mean. Remember, we know what the population was. So there it is. And these two yellow lines, of course, are these values that would represent 95% of all our resampled means here in the middle. Right there in the middle. And look at that. The real population mean which we do not know. Of course we know this here because this is a contrived example. But the real population mean are within those two bounds. So we had a mean for our study. We were not sure, you know, how accurate that was a reflection of the actual population mean. And so we have got to express this uncertainty in our result. And what we do is we do this bootstrap resampling and we decide on what we want the middle 95%. So we get these percentile values and all these bootstrap means and we put these bounds of uncertainty there. And we say, well, we think that the true population mean is somewhere between these two. Beautiful. Now that's a choice of 95%. Why do we choose 95%? We perhaps want the middle 80%. So that's going to narrow our bounds a little bit. So let's have a look if we do the same calculation and we do an 80%. So now these lines now represent 80%. And the actual population mean is now outside of our little estimate here. Our lower and upper bounds. And that's a choice we make. And these things are called confidence levels. We decide on a confidence level. So in our first example, we had a 95% confidence levels and here we have 80% confidence levels. Our confidence has dropped to 80% by only representing or selecting the middle 80% of all these bootstrap possible means that we calculated only from our sample. And the actual values for that confidence interval for those confidence levels, I should say, we call the confidence intervals. So the lower bound and the upper bound are our confidence intervals. So let's have a look at that again. So there was our sample mean. We only had 50 subjects to work with. We did this bootstrap resampling and we calculated our lower bound for a 95% confidence level. We calculated our upper bound for a 95% confidence interval. And this is what we report. Read the sentence. When expressing the uncertainty in our sample statistic, we would then state the variable mean in the sample was 97.8. And then 95% confidence intervals, 94.4 to 100.9. We set these bounds and we say, this was what we found. But we think that the true population parameter was somewhere between these two bounds. And you can see with 95% that's quite broad. We push our shoulders out to the side. If we become less and less confident, those bounds shrink a little bit. And so what does this all mean? Does it really mean that we are 95% confidence that the population parameter is within these bounds? Unfortunately not. It sort of makes sense to say that, but that's not quite the truth. If you think about what we did here, the actual truth was if we could do our study 100 times over. Now I'm not talking the resampling here, I'm talking the actual study. We go out, we select 50 individuals and we do our study. And next week we go out and we select 50 and we redo our study. Impossible to do, but imagine we could and we did that 100 times. Now every time, most likely every time, we're going to get a slightly different sample mean in reality. And we're going to do bootstrap resampling and we're going to get slightly different values for the low and upper bounds. And all we can say that if we do this 100 times, if we could do our study over 100 times, in 95% of those, if we choose a confidence level of 95%, in 95% of those we will capture the population parameter within our bounds. And in five cases we will not. Which one we have here we don't know. We only have this one, we only do the study once. It's likely that it is, I mean it is 95 to 5. But we're not sure whether this one that we have here is one of the 95 or one of the 5. We can only set these confidence bounds and confidence intervals based on our confidence level for this study that we have. And that is how we express uncertainty in our results by confidence intervals. And we did that here for the mean. But you can imagine any other statistic that we work with, you can do the exact same thing with. And you can express the confidence in your result. And in the next notebook that we're going to talk about correlation and linear regression and modelling, we're going to talk about the uncertainty there as well. How certain are we in these calculations in these statistics that we find. Because we only have a sample, we do not have access to the population. In this instance we did because I wanted to show you when it fell in and when it fell out. But in reality remember we never know the whole population, hardly ever know the whole population. So we have to express some uncertainty in our results. Now instead of doing all of that, doing the resampling of course there's the mathematical way. So in SciPy we can calculate the confidence intervals. So in the stats module if we use the t-distribution, which we will often use, there are some assumptions that must be met but let's just use it and we have the interval function. We can set our alpha value 0.95. So our alpha value, remember we actually mean that to be 0.5. So this is slightly different but that's the keyword argument that is used here. The degrees of freedom is very important. Here we only have one sample so it's the sample size minus 1. And our LOC there is the mean of our sample. So that means the mean of our sample is the mean of our sample and the scale at standard deviation is the standard deviation. And if we do that there's going to be this calculation and we get our confidence intervals for a 95% confidence level. So we need to do resampling every time. I just want to show you that this exists but it's much more intuitive and you have a much deeper understanding of what is going on here when we do the bootstrap resampling and that's what I do quite often. So let's just have an example of the median because this is going to work out slightly different. So what we're going to do below is we're going to have 200, the sample size of 200. And this time around though we're not going to take it from a normal distribution. We're going to take it from a chi-square distribution. So what we're imagining here is that we have a sample of 200 so we don't even know the population here. I'm just simulating some real-world example here. We have 200 subjects in our dataset. And what we don't know beforehand is that we're taking it from a chi-square distribution but we have to simulate these subjects so we're going to use that. And by the way the parameter for chi-square distribution is degrees of freedom as well and we set that to be 10. So let's have a look at the median for our variable in our sample of 200, 9.38. Let's visualize that with a boxplot and we look at that and we see, well that doesn't, obviously it doesn't look like a normal distribution. There's quite a bit of outliers there and as far as away from the median there's quite a lot of values. So the median there is 9 and the minimum is 2 but the maximum goes up way more up to 26. Definitely not a normal distribution there. So we have our population. We can see it's not normally distributed, I should say our sample. Let's be careful here. We have our sample. We can see the data is not normally distributed. So instead of doing the mean we're going to do the median and we have here median of 9.38 as we saw but we have to express our concerns here, our uncertainty in what the true population median would be. So let's go and do that.  What am I doing? I'm doing random.choice from my var and it's got to be 200 at a time. It's got to be the same sample size but replacement equals true. So once again some of my subjects are going to appear and each one of my 10,000 re-samples is going to appear more than once. And I'm going to assign that to the computer variable medians and let's have a look at the distribution of the medians. Now you're going to see it's a bit skew. We don't have that nice little distribution because our samples, it really wasn't a nice normal distribution from our samples. But we're going to do exactly the same thing. So we're going to determine these two values 4k at the 2.5% percentile and 97.5% percentile because we're going to stick to a 95% confidence level that we're interested in. Remember those will be then different if we choose 80% for instance. So I've got my two values there. Let's have a look at what they are from my little formula. So I want the 250th value of my 10,000 re-sampled medians and I want the value an index 9750, Python is zero index. So of course we want one less than all of those. So we're going to sort them all in order and then we're going to get the 249th indexed value and the 9749th valued one. So those are going to be our confidence levels. So the lower bound is 8.52 and the upper bound is 9.97 and looks like. So let's plot this. There we go together with the median that we found for our study. And this is what it looks like. And you can see it's no longer symmetric. The bounds are, you know, it's not symmetric around the median that we have. And that is what we had before. So there's a bigger gap on this side than on that side. But we're still going to express this in exactly the same way. We're going to say according to our study we found a median of, what was that? Let's scroll back up. We found a median of, we can just go to the plot there, 9.38, 95% confidence intervals. And there we go, 8.522 to 9.97. Exactly the same thing. So I think you should now have a very good understanding of expressing the uncertainty of the results that you found in your study.


We're here at the third skin right here that I take actual and I'm watching a video With those headphones and it sounds like there's a helicopter above me and a car coming over right now Right here with my stereo headphones Microphones, maybe people can can actually put headphones on and get this experience a little bit. Maybe not. So hi Hi, my name is Simon Austin. I'm a CTO at third skin and We want to put this virtual audio experience augmented audio experience into the real world so What Nicholas was just talking about is the fact that this video the helicopter that he mentioned Isn't actually in this video anyone. It's a virtual object that can actually be added in real time to the environment Yeah, so the helicopter is actually flying around here credit where credit is due This is a demo by a company called super powered audio who do you do a very very good. There you go. There's the plug You do an excellent 3d audio processing software So the idea is is that we could use audio in an augmented fashion to put audio cues and Data and that kind of stuff into the environment of your real here The problem is with a traditional headphone is that they all designs block your natural here so we had to come up with a design that allowed all of the natural sounds come through and Be able to put digital audio on top of that and this is what we came up with so this is a combination of air and bone conduction uses a piezoelectric driver If you put the microphones up against this box, you'll actually be able to hear it working Should be out of here Okay So the so the little metal thing in that essentially it's a v-shaped object goes into the air canal presses against the Air canal walls and then vibrates that sonic frequencies. Is it not like how? Regular bone conducting it is it is The regular bone conducting headphones is first of all they use they try and do the whole sound spectrum With one driver, and it turns to be a very heavy Voice coil driver This is because it's using piezoelectric. It's much much more lightweight for the same power And the same force and also we only do the low frequencies with the piezoelectric We still use a balanced armature driver to do the mid-range and the treble And that way we can get a full spectrum audio, but also You know maintain the quality so Is the idea let's say that you walk around and you can hear something over there like a virtual thing Yeah That's what well a few potential examples So like the one you just said if we've got if you're navigating around a town that you've never been to before You could just place an audio beacon There's GPS located that you just walk towards instead of having to follow You know turn left turn right walk down the street across the road, whatever But there's loads of other applications So we could do for example conference calling where the people in the conference call are actually located in space around you and because we've put an inertial measurement unit with gyroscopes and Composers in the device is that the device this is the device this this is so the black parts are the The the actual drivers themselves, where did you put them you put them into your ears they go in there Yeah, so so as a model of the air and they literally go as a V shape just straight into the air They don't go any deeper than a cotton bud that you usually use to clean your ears All the batteries Bluetooth radios everything else sit behind your ears and So as I say we've got like an inertial measurement unit, so it knows which direction your head's pointing So we can actually move the sound source in real time around you, so it tracks your head movements Is it with a gyro? Yeah with gyros so this an accelerometer gyros accelerometer and magnetometer compass Yeah Because we've got such big batteries in there But you can wear these all day because they don't affect your hearing So you have to have big batteries and with big batteries We get the chance to put in loads of sensors loads of extra stuff because there's microphones in there. We can be talking to virtual assistants All the time so this is basically like a wearable Amazon echo I think it would be awesome if you could combine this with a Micro-display Working on it. I mean no, we're not working on it and that definitely isn't information Because it'd be so cool because okay, I'm looking over here, but you have your assistant on the left Hey, come on because actually what you're doing is we're going to a destination But you have a guy in front of you. Yeah, and maybe she's around the corner. Yeah Maybe you're looking in the wrong place I might not might not even be voiced there might be I've heard the phrase earcon like icon So an earcon being a sound that represents a certain thing so say in the facility we're in at the moment the facility itself could have curated content whereby There is a beacon where the toilet is there are beacons where the fire exits are that kind of stuff and Yeah, you could always hear those around you. It wouldn't necessarily be voice They would just be sound effects that become familiar because that represents the thing that it represents Behind three walls and up two flights of stairs because I think the smart glass are great to augment but this With the sound your technology is gonna accommodate even more. Yeah, it's gonna be an extra I'd say that actually we can do immersive augmented reality better with this now Than any of the visual guys can the technologies. I've had the chance to play with some of the industrial solutions and with HoloLens for example and the technology is very very impressive But we're still talking about very small Slightly headache-inducing Yeah, whereas when you first put that on you you were convinced that helicopter was there and if we were doing that in the real world We could make these augmentations to reality as real as you want them to be I think they differently Would benefit from your augmentation. Yeah, and let's say the the smart glass Would mostly be off because it is confusing but sometimes it appears something important Yeah, sure, but the sound might be you know for example your your hearing You've got about a 15 degree resolution on where you're hearing can actually determine the direction of a sound So maybe a visual marker is a better better way to do that the problem is But not really a problem for us is we can do it now and we're just waiting for the visual guys to catch up They need to catch up. How about Can you also have an algorithm to cancel? Noise around yeah, so obviously one of the big things that differentiates these from other headphones is Good or not That it doesn't block any sound at all and a lot of people say you know You can just flip we've got we've got an active noise cancellation solution in here that listens to the outside world And tries to cancel out using the drivers Not our solution. It's it's a well-tested Industry standard chip that a lot of people are using we think we can get down to about a 30 decibel reduction in certain frequency bands But certainly enough to turn a conversation in a loud room into a nicely focused conversation between two people with the rest of room dialed down So what is the third skin? That's like third skin is the name of the company the product I should probably have said very early on is high time high h h y The the elusive triple-on tonder It's in the company's third skin the idea being that the clothes that you wear should fit you like a second skin The technology you wear should fit you like a third it should be seamless and well integrated into your sensory experience So you imagine a world where like everybody's using your technology? Absolutely. Yeah I mean this is this is the first iteration of the first product that we've developed we've got We've got ideas in the pipeline for an ecosystem of Various wearable computing devices that should should be totally natural to wear and Eventually eliminate our reliance on holding a five-inch piece of glass in our hand to get all of our information through Yeah, and yeah, that's that's the ambition. It's like you're wet, right? Is that a pebble? It is a pebble like me. RIP. Yeah Greatest wearable ever created did everything it needed to and nothing more. I got mine on gumtree. It's still available. Okay, still available on gumtree It's not as previously major that's a that's a demo from from another company, but the the underlight the underlying algorithms What are called hrtf so head related transfer functions, which is how you take a Mono sound and a position and convert it into a stereo sound that gives your brain all the cues It needs to work out where that sound is coming from. That's that's a well-established technology That is getting progressively better and better and can be done in real time All right, and this is how soon how soon okay, so available to pre-order on indiegogo right now. Yeah Sorry, so how's it going? The indiegogo campaign went really well. I it actually completed last year and Yeah, we've been doing R&D since then we're We've had the usual delays that hardware startups have but we're planning to ship in queue for this year So how many people on indiegogo? 600 600 orders. Yeah 600 orders. So, you know, we've got you totally successful. We think totally successful Yeah, how soon you hope that it's ready about key for this year keep shipping. Yeah, so and yeah before Christmas I honestly can't remember it's been a while, but it was affordable, right? Yeah, I mean this is mid-range headphone process in the retail price. How much? Somewhere between 200 and 250 or but we haven't completely nailed that down yet. All right, okay and making headphones is also important to have a lot of like It's a high-precision industry, right? Yeah, it's high tech. Yeah, it is Absolutely We're standing on the shoulders of giants with all of the stuff that's in here with the exception of the driver that we've got and we put Together everything else is off the shelf. We're just putting it together in a new way and it's not like these things weren't possible before It's just they were wasn't really any point doing it before if you can't wear the headphones all day Then why bother putting in all the sensors and all the other cool stuff? So we managed just to enable this this what we hope is a next step All over the UK we have no fixed abode, but I'm based in the Midlands my Co-founder Joao is in Brian. We've got engineers in London Yeah, we are a virtual company at the moment


It was a wonderful session not just for FMCJ brands but for overall digital and also for offline as Mira said you know there are a lot of hypothesis testing that can be done on digital which can be impacting larger spans offline and I think the whole aspect of region frequency optimization with TV and TV plus is also fantastic and I guess this is something that every brand should drive massively as per our keynote speaker that you know driving more outcomes rather than outputs.


Now, what is JIRA Cloud 68845? It is a ticket on the JIRA for JIRA, and our public issue tracker. And it's a relatively active instance, but this ticket is special for two reasons. First reason, it is relatively active. There's a lot of stuff going on there. And the second reason is, because it is so active, this guy chimed in. Scott Farqua, our co-founder and co-CEO. And don't get me wrong, I know Scott for many, many years. Scott is a lovely guy. But if there's one thing that Scott is passionate about, then it is the customer. So if the customer is unhappy, so is Scott. So you can imagine that JIRA Cloud 68845 was a relatively big thing for the JIRA engineering team. If you would wake up a JIRA engineer at the middle of the night and say, they would say, JIRA 68845. So it soon became known as the ticket in my team. And as the engineering manager responsible for cloud frontend performance, it was clearly my job to kind of rally the forces and get this problem sorted. So this talk could just as well be called Closing JIRA Cloud 68845. So what I want to do today is share a little bit of this story. Share some of the lessons that we learned. And I hope there's something interesting in there for you. So the first thing that we did, and the thing that should stand at the beginning of every engineering project, is to measure and to understand. And measuring performance shouldn't be all that complicated. All you need to do is identify a couple of key interactions that could be loading a page, opening a dialogue, or moving a card from A to B in JIRA. And measure them, right? Measure from the moment where the user starts an interaction to where the interaction finished and just ready for the user. So as an engineering manager, I'm often interested in the big, big cha, right? So we have all these data points of our interactions, hundreds of thousands of millions. But I just want to ask a very simple question. I want a very simple answer. And that's how fast is JIRA? So the metric that we are using in this lesson is called AppDex. And that's a standard. It stands for Application Performance Index. And the way it works is that we categorize all our millions of data points into three categories. The first one is for all interactions that take less than a second. And we consider them as good interactions, right? They are fast developers like them, sorry, users like them. And we reward ourselves by giving ourselves a point. Great. The second category is between one second and four seconds. And we say this is kind of an OK interaction, right? It's not great, but it's also not terrible. So we reward ourselves with half a point. And the third category is everything that takes more than four seconds. And that's actually, that's pretty shit, right? So we don't deserve any point for that. So that's zero points. The next step is you average over all the points that you're getting. You multiply by 100. And ta-da, here's your AppDex value. And then AppDex value is a number between one and 100. And every application has one. Your application has one. My application has one. Great. This could be, you know, 64, 70, 78, whatever. Now, what does this mean in practice? What does AppDex 70 mean? I couldn't mean a couple of things. For example, it can mean that out of 10 users, seven have a great experience and three have a shit experience. But it could also mean that out of 10 users, four have a great experience and six have an OK experience. So AppDex value, you can see, is a high-level value. But it is not particularly good for going deep, right? Gives you a good metric across your entire application. But if you actually want to understand what's going on, if you actually want to make a change, you need to drill a bit further. You need to go down to the milliseconds, down to the percentiles, to the B50, B90, B95. Now, what's a percentile? Well, if you take all the data points for an interaction and group them by how long they take, you get this nice distribution, right? And the B50 is the value where 50% of all data are worse and 50% of all data are better. The B90 is the point where 90% of all data are better and 10% of all data are worse. Now we're talking, right? This is a good level of detail. But we can break this down further. We can break this down by a sequence step, right? How long does it take on the server? How long does it take to download the HTML? How long does it take to download and execute the JavaScript, et cetera? We can break it down. Sorry for that. Where am I? Break it down by user characteristic. How big is the JIRA instance? What browser is the user using? Where is the user based? And finally, we can distinguish between initial loads and SBA transitions. And I'll talk about that in a second. And the most important thing really is, and I can't stress this enough, we want to measure in production, right? We are all developers. And as developers, we're actually pretty privileged, right? Typically operate on high-end hardware. This is a $4,000 MacBook. We have typically a pretty good internet connection. And in many cases, we are relatively close to the data center. If I'm working out of our Atlassian office in Mountain View, I'm sitting pretty much next door to the AWS data center. Our users, well, we don't know. But typically, they are less privileged than we are when it comes to resources. So I can't stress this enough. When we measure performance, we want to do so in production. So how does this all tie to the ticket? Well, we instrumented and measured JIRA quite extensively. And we discovered a couple of things. The first thing is that the thing that is slow in JIRA are page loads, right? Opening a dialogue, that's OK. Moving a card around, that's OK. But loading pages, that's the thing that's slow. The second thing that we discovered is that this applies to all pages. It's not that one page is particularly bad. This is a systematic problem. And the last thing that's quite interesting is we discovered that roughly half of our traffic is coming from internal, if you want. So it's users navigating from one JIRA page to another JIRA page. And the other half is external traffic. So that's somebody clicking a link from an email or from Slack or entering a URL to the browser. So let's sum this up. First thing, page loads are slow across all pages of JIRA. And we have roughly 50-50 split between traffic that is coming from internal and external traffic. So what does this mean? How can we use this to improve performance? And when it comes to performance, I always think of this one tweet by kensidots. And let me zoom in a little bit. What it says is, let me tell you the secret about app performance. It is less code. That makes sense, right? Less code means less to download, means less to execute, means faster. Great. So let's look at this diagram again. And maybe focus on the first half. Let's focus on the 50% internal traffic. Now, how does this look in practice? Well, one example is a user operating on their JIRA board and then navigating to diversion management. Now, if we look at these two pages, they actually look kind of similar, right? They both have the same sidebar. They both have the same menu. So what if we could maybe only load the content of the page and not the bars that are in common? And you'll see what this is getting to do. I'm talking about single page applications. And the concept is really simple, right? Instead of breaking our application down in a couple of completely independent pages that all need to be loaded and unloaded and loaded individually, we structure it a little bit differently and we break our application down in the bar that is common to all our experiences, the SBA shell, and the actual content of these various experiences. We can then just replace the content and keep the SBA shell loaded. This does not only feel faster, it is faster. Why? Less code. And React component architecture actually makes it quite easy to build SBAs. They're great libraries, right? We can use React Router. We can reuse React loadable. There are a couple of really good bundlers like Webpack and Basel that do the code splitting for us. All nice. So it's all easy if you're doing a green field project. But we are really talking a transition project here. Talking a modernization project. That makes things a little bit more complicated. The first thing I would like to talk about is related to how the legacy code base and the modern code base coexist. At Atlassian, we often talk about moving from an inside out model to an outside in model. Now, what does that mean? Well, when you start a modernization project, you start with legacy code. That's why it's a modernization project. And then a very, very natural way to start the modernization is to take one component out of your page and replace it by a modern component, replace it by a React component. And you have this sea of legacy code with some islands of modern code.  And that's all good. React supports this better. And this is a very reasonable way to start a transition. But at some point, you get to this point where it becomes a little bit awkward. The islands can start bumping against each other. And everything becomes a little bit weird and strange. And that's a really good indication that you want to turn this equation around and switch to an outside in model, where your application is fundamentally modern. React owns the routing. React owns the page layout. But it may still have some islands of legacy code that are now getting smaller and smaller and smaller. So one way to look at it is the complexity curve. The one starts really easy. You just need to write a component. But it gets more complex over time. But the other one is pretty hard at the beginning. You need to make very important, very fundamental decisions early on, but it gets easier over time. So the big challenge here is to find that sweet spot where you can transition from one to the other. Now, how does this relate to performance? Well, in many cases, your legacy code base just is not an SBA. So in order to transform your application into an SBA, you really need to get to the outside in model, which is a lot of work. The second thing that I would like to talk about is the network effect of SBAs. That's an interesting one. So I think we have established that when transitioning between batches, an SBA is faster than a non-SBA. But for the initial batch load, SBAs are often a little bit more heavy than non-SBAs. So you pay a little bit of a price at the initial batch load. So then this is where the network effect comes in. And we know the network effect from phone.  Because you need to carry around this phone, but you can't call anyone. It only gets interesting when your friend also gets a phone, because now you can talk. And if the third person gets a phone even better and even better, so the value of the system increases exponentially with the number of nodes. That's a network effect. And with SBAs, this is actually quite similar. So imagine you have your non-SBA with all these batches, and now you transform your first batch into an SBA. At this point, you're not getting any value. You're actually making performance worse because the SBA loads a little bit slower than the non-SBA. Only if you transition all the other batches into the SBA as well, this is where it gets awesome. But think about phones. There was this person that had the very first phone on the planet. But ultimately, I think phones became relatively successful. So good indication that we want to get over that initial bump of the network effect. So let's look at our ticket again, the Chira Cloud 68845. We, with an SBA, we actually found a pretty good solution for the first half for the internal traffic. But there's also the second half of all the external traffic. And it's technically impossible to benefit from SBA transitions for external traffic, because you can't control the routing in the client side. There are reasons to do that. So how do you approach that? Well, let's maybe spend a second and sink through how an initial batch load works in a typical React application. It all starts with a browser, a backend system, and a CDN. The first thing that happens is the browser makes a request to your backend system. Backend system does a bit of syncing and returns a very, very lightweight HTML snippet. Basically, a script that points to the JavaScript and often an empty body, or almost empty body. What the browser now does goes to the CDN, downloads the JavaScript, executes the JavaScript. And what we're now getting is we're getting a page, but it is interactive. But it doesn't typically doesn't show a huge amount of data, because we still need to do our HX calls. And only now we're getting meaningful data that is also interactive. Let's plot this on a timeline. So first thing is we hit the server, we spend some time on the server. Customer doesn't see anything. We're downloading the HTML. HTML is pretty much empty. Therefore, the customer still doesn't see anything. Download the JavaScript. Customer still doesn't see anything. We run the JavaScript. Customer gets a page that is actually also interactive, but typically doesn't show data yet. And only finally, after doing our HX calls, we're getting a page that is also interactive. So how can we improve the performance of that? Let's get back to our tweet. Less code. Where can we load less code? Well, let's look at these two bars. Download JavaScript and running JavaScript. In a really large application, this can actually take seconds. How can we get rid of this? Well, it's very difficult to get entirely rid of it, but maybe we can do something different, right? Maybe here in the download HTML, instead of returning an empty body, maybe we can actually return meaningful HTML, like, you know, diffs and spans and pictures. HTML. Now, if we think about it, this is how the web used to work. This is what we did for 20 years. But, of course, we still want our new awesome stack, right? We still want our happy developers, and you see where this is going. This is going to server-side rendering. So how does this picture look with server-side rendering? Well, we still have our backend system. We still have our CDN. We still make our request to our backend, but instead of getting back to the browser, our backend is actually calling out to a new service, the SSR service. And the best way to sync the SSR service is really as a virtual browser that runs on our hardware, right? And what this virtual browser is doing is actually pretty similar to a real browser, right? It still gets the JavaScript, still executes the JavaScript, still makes the HX calls, and still generates HTML. And this HTML can now be returned to our backend system, can be returned to the browser, and shown in the browser. The important thing to understand, this is really, this is still just HTML, right? There's no JavaScript involved in the browser yet. So what the browser still needs to do is still need to go to the CDN, still need to download the JavaScript, still need to process the JavaScript, and only now we're getting an interactive page. So let's look at this on the timeline again. If we look at it naively, we're actually making the situation worse, right? Because we spend more time on the server, we download more HTML. What's the value of that? Well, let's look into what the customer is seeing. The first thing that we can do is we can actually remove the HX bar because that's something that the server has already done for us, great. But more interestingly, we're actually getting a new state on our timeline, and that is rendered as compared to interactive. And if, and that's a big if, the rendered state is something that you consider as ready for your user, you're actually getting a massive performance gain. Because keep in mind that download JavaScript and the run JavaScript bar can take seconds. The million dollar question here is, what do we consider as ready for our users? We are now introducing two states that an application can be in that's rendered and interactive. These two states also exist without server-side rendering, but they're very, very close to each other, but they're virtually the same. With server-side rendering, we're moving the rendering forward, and we're actually making the interactive a little bit worse. So we're creating this gap, and this gap is a problem. And for people sometimes called the uncanny valley, and let's maybe go through a concrete scenario, let's say you hit this beautiful dialogue here, and as a user, you want to click the submit button. You click it, and nothing happens. Click it again, nothing happens. Give it the first search right, click it again, and now something is happening, right? So as engineers, we know what's been happening here, right? It took a while for the JavaScript to be loaded, for the JavaScript to click in, and actually make our page interactive. For the customer, this simply doesn't make any sense, right? And there are different ways to solve that, but I think the most important question that we need to ask ourselves is, does the time that it takes for the customer to simply read the page, to digest what they are seeing in front of them, does that take long enough for us to bridge the uncanny valley? You know, we can reason about that, and we can debate about that, but let's maybe take a step back. The best way to figure out is to measure and to understand. So let's get back to our ticket. We talked about having 50% of internal traffic, and roughly 50% of external traffic, and we actually found pretty good solution for both of them, right? We found an SBA model that solves the first half for us, and we found an SSR model that makes a big improvement on the second half. So, and both of them really could be solved with the most important tweet on Twitter, and that's with less code. So, kensy.sas writes less code, but he also says this, and I give you a second to digest it, but what he says is, in the end, right, we can't write no code, right? We're building rich applications. Clearly, they need to have some code, and this is where I think the third big learning comes in, and this is to be opinionated. You know, in your company, you have these teams of rocket scientists, right? That all, you know, they want to move quickly, they want to move independently, they're doing fantastic work, but there's one thing that we always need to keep in mind, and this is that all our engineers, all our teams are operating in a shared limited resource, and that's the browser. And in the history of mankind, there has only ever been one way to sustainably use a shared limited resource, and that's through rules and conventions. So, what you really, really want to do is think hard about the patterns, practices, and technologies that you want to align on as a team, as a company. And another thing that's really important is, you know, you can have the best rules and the best conventions in the world, they are useless if people don't follow them. And we are all humans, and humans make mistakes. Robots don't. So, we at Atlassian are borderline obsessed with all kinds of static code analysis. Don't try to read this, but what I'm trying to convey is, we have a huge amount of customly developed ESLint rules that actually encode the patterns and practices that we consider as important for our performance. And we also developed our own tool, it's called Stricta, and I won't go into detail, but you can sync it as ESLint but for your file system. If this sounds interesting to you, if you want to contribute, check it out, it's open source. And this brings me to the end of my presentation, and what I always like doing at the end of a presentation is make a really bold statement, something that banks, something like SBA and SSR solves all your problems. Let me do this again. SBA and SSR solves all your problems. The thing is, I can't, because the world is a little bit more complex than that. What I can say is that you want to measure and understand your application, you want to understand your problem space. The second thing that I can say is you want to seek for systematic solutions. If you think about it, SBA servers are rendering, they are systematic solutions. They work for every page of your application. And even establishing better practice as technologies, that's also a systematic solution, because it also applies to your entire code base. And last but not least, do the right thing for your application and do the right thing for your user. Every application is different. What I can say is that for JIRA, introducing an SBA and introducing servers at rendering made a huge impact. Thank you very much.


Matt, I think this is your first time on, is that right? Yes, it is my first time. All right, welcome. Thank you. I've been a passive ARI supporter for several years, but I'm finally ready to make the effort to become more involved. And a lot of some of that was motivated by I'm about to become a father. So it just occurred to me that I want to clarify my own ideas and instincts. So I have this new person joining me with a fresh start. So I'd like to get him or her just with the right mental footing start going into their life. Joe, that's great. That's great. Yeah, so I wanted to start off with something I thought of and I think is true and see your thoughts on it. It was so many things in the world as it is today, that I find to be immoral and from an objective point of view, but it occurred to me that it seems to my observation that most people want to be moral. Most people try to be moral. They just have the wrong moral code, something like altruism or some religion. I thought that was a positive sign for the future that most people seems like they do have the intention to be moral. Yeah, so I think absolutely. I think human beings need morality. They need guidance. They need to know what's right and wrong. They want that. The challenge with altruism is, and so they want to be moral and then they are confronted by altruism which doesn't really give them guidance and doesn't really advance their life. And then so many of them become cynical or skeptical or abandon, not completely abandon morality, but kind of wing it and become more pragmatic. And again, most people are split or divided. They have some self-interest in them and they couldn't live otherwise. They pursue certain values rationally. Again, they couldn't survive if they didn't. They have this nagging altruistic thing in the back of their head that says, but you should be doing this which results unfortunately in guilt and voting in very bad ways and other things like that. And then they have a part of them that kind of tries to get away with stuff because they know that morality is not practical. And I've always thought this is how in, right? I think the in objectivism has is, hey, wouldn't you like to have a morality that's actually practical? Wouldn't you want a morality that actually leads to success and happiness where you don't have to feel guilty for being, for doing things that actually promote your own life? I think at the end of the day, that is our strength and it's what we should be advocating, but it's still very hard to yank people away from the altruism, particularly, altruism is not a phenomenal job. Not only presenting people with the idea that theirs is the only morality, but also with the, with straw manning selfishness.  And John Macky is a smart guy, very successful entrepreneur, a nominally pro-capitalist, right? Consider yourself a libertarian pro-capitalist has been exposed to objectivism, it's Red Ein Rand. And the whole time he was straw manning selfishness and straw manning objective, the objectivist ethics. And he is a guy who by every measure should know better. And obviously a smart guy, I think, right? He couldn't be as successful as he is without that, exposed to it directly from Ein Rand and through people like John Allison. And yet he's still straw manning it.  So, but that's the challenge that we are, that we're indeed facing. So it's hard. It's hard to get the altruism out of them. Thanks, Matt. What we need today, what I call the new intellectual would be any man or woman who is willing to think. Meaning any man or woman who knows that man's life must be guided by reason, by the intellect, not by feelings, wishes, wins or mystic revelations. Any man or woman who values his life and who does not want to give in to today's cult of the stare, cynicism and impotence and does not intend to give up the world to the dark ages and to the role of the collectivist broads. All right, before we go on, reminder, please like the show. We've got 163 live listeners right now, 30 likes. That should be at least 100. I figure at least 100 of you actually like the show. Maybe they're like 60 of the Matthews out there who hate it, but at least the people who are liking it, I wanna see a thumbs up, there you go. Start liking it, I wanna see that go to 100. All it takes is a click of a thing, whether you're looking at this. And you know the likes matter. It's not an issue of my ego. It's an issue of the algorithm. The more you like something, the more the algorithm likes it. So if you don't like the show, give it a thumbs down. Let's see your actual views being reflected in the likes. But if you like it, don't just sit there, help get the show promoted. Of course, you should also share. And you can support the show at yourunbrookshow.com slash support on Patreon or subscribe star or locals and show your support for the work, for the value, hopefully you're receiving from this.  You'll know what shows are on, when they're on. You'll get notified, right? So yes, like, share, subscribe, support. Like, share, subscribe, support. There you go. Easy. Do one or all of those, please.


I speak to you today from the frontier of NATO's border as the senior representative from the United States Army and as the commanding general of all U.S. forces assigned to NATO. NATO was born in 1949 amidst the ashes of a war-torn Europe. It was an alliance of nations weary of war who resolved to prevent war, not by ignoring regional bullies, but by becoming stronger together as one. And ten years ago Estonia joined NATO. Since then, the leaders of this great country have taken their obligation to NATO seriously, modernizing their military even in hard economic times, dedicating Estonia expertise to the NATO Response Force. Estonia is a small country, but as they say in boxing, Estonia fights above its weakness. Through years of partnership and military-to-military exercises, we have built a relationship between our two countries of mutual trust and respect. We have a common bond in our militaries. We know intimately the consequences of war, and because of that we seek to prevent conflicts from occurring, and we do that by training together. The arrival of the elite 173rd Airborne Brigade Combat Team is a manifestation of the United States of America's commitment to Estonia and to the NATO Alliance and our commitment to peace. The 173rd is the most prestigious brigade in the United States Army. And I will tell you it's the most relevant, the best trained, the best led, the best disciplined. We chose this legendary organization because we wanted to demonstrate our ironclad commitment to the people of Estonia. We will focus on bilateral training and interoperability. It will make us both stronger, and it will make the NATO Alliance stronger. We are honored to be invited to this great country to serve and train with these great soldiers, and we're proud to demonstrate our resolve and our commitment to Estonia and to the NATO Alliance. Know that today, Estonia, you are not alone on the frontier of NATO's borders. The entire Alliance stands with you. Thank you. God bless you.


Hello everyone, welcome back to another Adobe Premiere Pro 2021 tutorial. In this one, I'm going to show you how to add text and I'm going to show you how to do it very, very quickly. So let's make it nice and simple for you guys. So if you're new to Premiere Pro, stick along. Let's do it. All right. The first step as you can see here is I've dragged and dropped some footage into my timeline. I've dropped in the project panel, then you drag and drop it into the timeline.  Oh, yes, cute little fella. All right. Cool. The next step and this is the big one is you want to I'm in the editing workspace, but you could probably do it from any workspace, but I'll click on the editing workspace and you're going to see here. You're going to see the toolbar at the bottom of the toolbar. There's something called the type tool. Now I'm going to move the play head to the beginning because that's where I want my type. I'm going to left click on the type tool, then I'm going to left click on the program panel here right in the middle where I want to drop my text and it's going to say I just left click. Hello puppy. All right. Let's see if I could spell exclamation mark. There we go. Now you're going to. There's a few things here that I got to show you if you're new to the text game. So first off, I'm going to center this text. So I'm going to switch from my type tool back to my selection tool and I'm going to click on it so I can move it around as you can see here. All right. Cool. Also up in the top left here, you're going to see effect controls and you're going to see a Chevron and it's going to say text and then whatever your text is, you can drop this down and this is where the magic happens. Also, if you do not have your effect controls panel open for whatever reason, go to window and make sure there is a check mark besides effects here and effect control. So that way you can always follow along with me quickly. I'll show you the basics. I have used poppins as the last text that I use. You will probably see Minion pro as the text. That's the default one at least currently so you can basically just click on this triangle and change your text as you see fit. I've got poppins black selected, but I could switch it to poppins regular and you can see that it changed right on the screen there right there. So let's go with that. All right. Cool.  So right now I've selected fill to be white, but if I wanted this to be red for whatever friggin reason, I can't even think of a good reason. But let's do it anyway. I would just double click on the rectangle there. That's not a square and boom, our text is red. Same thing with stroke. Right now I've got black stroke, but it comes with no stroke by default. So if you don't want to stroke on it, fine. If you want to stroke and let's say you want to make the stroke white, double click on it, just drag and drop it to white and boom, we've got a red and white candy cane looking stroke there. And the same thing goes with background and shadow. As you can see fit as you see, you can decrease and increase the size of the stroke. So if you want to go with some weird looking effects, go nuts totally up to you. But this is how you add text and it's very, very simple. A couple other things I will show you here. Let's see. You can change the duration of the text. So right now I've got it set. It goes from zero to 0029. So it's basically one seconds worth of text. But if I want it to be longer, let's say maybe I want it to be from here to here. I can make the text longer.  So let's say at this part where he's staring at himself in the mirror. I wanted to create another text. I would just left click on that and then I would be like, what are you looking looking at? All right, cool. Right. We've got some more here. So I would do that and then maybe I would put that for two seconds as well. So there really are a lot of options here. I'm going to left click on it and then maybe I'll maybe I'll put it right over top. Let's put them right over top of him. Let's say that would go here. And then if we go back to the beginning, here we go. It would start and it's in yellow here. So it's kind of coming through the ram. So it's not quite perfect. And then you see here that we've got text popping in and out at the exact place that we want at the time that we want. And that's it. And if I wanted to create more text, if I want to change the position like I showed you, you can just go in and change it. It's really, really simple. It's really, really easy to use guys. That's how you create text in Premiere Pro 2021 in seconds. Thanks for watching. A ton more stuff coming up. Stay tuned.


Hi, I'm Casey and we are part of engineers.sg and Sharon is actually not here today, so we're just going to tag team it, okay? So a little bit about engineers.sg, so they're the first only organization that actually had a platform. What they do is they go to all the different meetups from developers and other engineers and they record the meetups because sometimes other developers just have to go home and they can't always go out to all the meetups and there's quite a lot in Singapore so they do an amazing job of going out and recording so that people can view all the meetups online. And our team was really awesome because we had the Baldy Buddies, so our two coaches or mentors are Michael and Ted, so Michael's right there and he's doing there. He's got that cool video going on already. Unfortunately Ted could not be here as well. He's in Sweden. Yeah, so he's in Sweden. He sends great pictures into the Slack channel and makes us all feel jealous. Like I said, I'm Casey and Sharon is not here and Xin Chen is this lovely lady right here. So they did have a couple of actually a handful of problems with the existing platform. So users were unable to get notified when any new videos came up and they tended to upload them quite often. They had no idea to know what was coming up. There are a lot of different events that go on throughout the country every week and there was no way for them to keep track of all the events that engineers.sg was going to be at. Users were also unable to search videos by category. There was no social interaction on each video and the loading of the site was pretty slow and if you're an engineer, you want things to move really quickly. So here are some of the tools that we used. So Ruby and then Ruby on Rails, Postgres, Trello was to keep track of the tasks. Slack was used for our communications and we still use that. And then GitHub was also used. It was our version control system. So we'll talk about the first thing that we tried to fix which was that the users were unable to get notified of the videos. So one of the solutions was to actually integrate a newsletter sign up using a MailChimp API. And if you don't know what an API is, it's kind of like if you are trying to talk to a different system. So that doesn't happen automatically. You actually have to physically code it in there and make sure that two different technologies are talking to each other. And that's what we did. Actually Shintian was part of the, what you see right here is actually what she worked on. So in Rails, there are three different parts to the architecture for the technology. So you have the model. I guess the best way for me to explain what the model is is if your mom tells you to do something. That's how I explain the model. Then there's also the controller. So the controller part that you have to code is actually you telling a different technology or a different database what to do.  And the controller, you actually go out and do it.  So that's how I explain the view, which is what Shintian did here in creating the newsletter sign up. So walking through it, you would actually type in your name and your email and hit that submit button. So once the submit button goes in, oh, thank you, thank you. So once the submit button goes in, it actually goes to MailChimp and tells them, hey, we have this new person into our system. But it also tells our database that that person is in the system. Whereas if you just did an embed, which many people do on websites, it's really just going into MailChimp's database. It's not really talking to your system or your database. The other problem that we needed to solve was that users didn't have any idea of the events coming up.  Is that right? Correct. But it really wasn't visible and people didn't really click on it. So we built an events calendar using an API from webuild.sg. And so what we did was pulled all the information that was already readily available on one of the sites and just kind of like, it's kind of like cheating. I'm pulling it in into our site. We also put in a Google Maps and that was a lot of fun. I actually went down to Hacker Space with Michael and that was really fun. And we also made it so that people could actually see how many people were already going because people always want to go. They don't want to be the first person there. They want to know that other people are going. So we built this events calendar. Do you want to do this? Yeah. Okay. So I will move. I will pass this off to Shen Tian. Okay. So the third problems that are faced by engine.sg is users unable to search videos by category. So what we did is actually we add in videos tagging system for admin. So this is basically the admin page of engine.sg. So you can see at the bottom of the page, we add in a place for us to key in the tags. So this is basically the tag list. So after key in, after we save, it will appear just below the videos. So this is the videos page. You will see there's a few tags appearing on beside of the page. So when you click on the tags, we link it over to all the videos with the same tags. So this is basically what we did with the video tagging. So the fourth one is there is no social interaction of each video. So which I actually add in Facebook comments column. So this one is if let's say you are not logged in in Facebook during the time being when you want to comment, it will prompt you to actually log in. So the last issue is actually with the loading of the website is slightly slow. So what we did is actually we did a fragment caching. So for those who don't know why it's cached, it's actually for example, today you need to go for mathematics exam. So you know that you have to study for example algorithms. So imagine you have a very thick textbook. So every time you want to go to that particular chapter, you have to flip through all the things and go to that particular chapter which is very slow and time consuming. So what you will do alternatively is you will put a bookmark. So when you need the page, you can just flip over to that page. So this is what basically a cache is. For information that we need to load oftenly, we will put in a primary storage cache. So every time we retrieve it, we don't have to go back to the main database and retrieve it, which will improve the loading of the web page. So this is basically what we have did for the past eight weeks. So Michael and the volunteers really put in a lot of effort in engineer.sg. So if let's say you feel like contributing to this project, you can just follow the repository from this link. Yeah, that's all. Thank you.


The DOD announced its plan August 14th to extend benefits to same-sex spouses of service members and DOD civilian employees. Same-sex couples with a valid marriage certificate will receive spousal and family benefits no later than September 3rd. Entitlements such as tri-care enrollment, basic allowance for housing and family separation allowance are retroactive to June 26th, the date of the Supreme Court's decision to declare Section 3 of the Defensive Marriage Act unconstitutional. For couples who are not stationed in a jurisdiction that permits same-sex marriage, the department will implement policies to allow military personnel to take non-chargeable leave so they can get married where it's legal. To see the memo from the Secretary of Defense, go to defense.gov. You can find additional service-specific guidance for sailors and families as soon as it becomes available on Navy.mil. From the Defense Media Activity, I'm Petty Officer Amara Timberlake.


The former Bemidji Middle School Assistant Principal facing federal sex crime charges has now pled guilty. 35-year-old Brandon Bjorkness appeared in federal court today in St. Paul, where he admitted to the allegations of coercion and enticement of a minor and child pornography. In a release from Assistant U.S. Attorney Angela Munoz-Capping, she said, quote, Brandon Bjorkness repeatedly victimized vulnerable young girls and boys, many of whom he personally knew because of his former role as Assistant Principal of Bemidji Middle School. Court documents show that in the first count, Bjorkness used the internet to knowingly persuade, induce and entice a known 13-year-old girl to engage in sexual activity through the production of child pornography. In the second count, Bjorkness allegedly engaged in sexual explicit conduct with a known 12-year-old girl for the purpose of producing a visual depiction. Prosecutors say that Bjorkness had sexual conversations with at least 55 minor victims. The minimum sentence for coercion and enticement of a minor is 10 years in prison and the minimum sentence for the child pornography charge is 15 years. However, federal sentencing guidelines suggest life in prison. Bjorkness will also have to register as a federal sex offender. It will be up to the judge to decide on Bjorkness's sentence, but the sentences will run concurrently with the state charges. Bjorkness will appear in state court on October 4th at the Beltrami County Courthouse. Prosecutors are asking for the public to show support for the victims and their families by attending the upcoming hearing.


Dankjewel, het is altijd te vinden waar mensen opgeblasd zijn voordat we beginnen. Dan kunnen we dat niet meer lopen. Het is heel hond hier voor jou ook. Oké, ik hoop dat we het een beetje honger kunnen maken. Ik weet dat we bijna in de break zijn. Ik hoop dat je er wat energie van hebt om te luisteren. Ik heb er ook een kwartje van te zeggen. Toen is mijn naam, Spanverschor. Ik ben van de Greenland en ik ben hier samen met Jorgen van de Berg. We doen de presentatie en we zijn hier ook samen met Paul Zakenberg. Ik ben hier ook van de Greenland. En Rick Weynel, we zijn een hele team. Lulou van de Lamezijn. Jan ook hier. Jan is er ook. Jan Berenke. En Mark Vries. Heel geliefbaar. We missen Paul Zelsgrasso. Wie is niet van de Greenland? Oké, welkom. Ik weet welke ze zijn, maar we weten niet wie jij bent. Eerst, wie is van de Vlaanderen? Oké, wie is van... Ik heb van Wallonia. Ik switche op de Translate. Oké, wie is van België? Oké, goed. En wie is van de Nederlands? Oké, welkom ook. En wie is van de non-government? Non-government. Oké, oké, oké. En wie is van de Overdata re-user? Wie is van de Overdata-owner? Wel, het eerste is vandaag om te verbinden met jouw environment. Want dat is, in our opinion, de belangrijkste ding voor open data. Dus please rise and give a hand to the nearest person next to you who you don't know. Oké, en nou, ik heb zo'n... Jij, dus je kunt opstaan, als je wilt. Dus we gaan, ja, do some statements, where you can raise your hand. Alley de Greenlands stands. Everyone stands up, please stand up. So it's standard comedian. It's warm. And so now you know how warm it is and my height always. Oké, let's have a couple of statements. They don't come on the screen, but I will, then you're going to think too much about it. So I'm going, the first statement is... Open data is a good strategy for meeting transparency objectives. If it's just, raise your hands. One more, one more time. Open data is a good strategy for transparency objectives. Raise your hands.  Is that really bad? No, no, no. Oké, stand up, please. I can't read open data, so I don't know what it is. And, oké, it was going to be a long half hour this. Pernising open data will encourage innovation. Everybody sit down. Who says yes, sit down. Oké, next one, to speed things up. We'll stay seated. Oh, please rise. Oké, next time we do it the other way around. To speed things up, it's good to start publishing low hanging fruit data. That's very easy to publish data. Well, let's publish something and let's go low hanging fruit data. Who thinks it will speed things up? Oké, who says yes, please sit down. Oké, we gaan op. Oké, publish data and it will be used. Oh, very good. So, scientific challenges can be solved with open data. Please sit down. I don't know what's good or wrong. It's not a game about good or wrong. We need an open data's ecosystem. Please stand up. Oké, and last but not least, the truth is out there. Oké, give yourself a hand, very good. You are all open data heroes. Thank you. It goes faster than I thought. Well, today we are together. Welcome to the clicker. Oh, yeah, this is my own presentation. Normally I present that only for myself. And today we are together to talk about Flavoland Smarter. Working together on open data. Flavoland is going to tell us about Flavoland Ace. Flavoland is working together on open data. Who is working together on open data? Well, there are no three, no four misketeers. The local water authority of Sardus Aeland. The municipality of Leestam, this is in the Netherlands. This is Flavoland, it's in the Netherlands, there. The province of Flavoland and the municipality of Almere. We, as a Greenland, we help them working together on open data. We have one goal, and we, as I told for the governments, we have only one goal, is to support external stakeholders, environment with open data. A very important in a way, it serves their operations and our as a GoF assignment at the same time. Only then open data will succeed. That's my opinion. Every other opinions, but what I say is not what I say. Truth from my perspective. Only one goal. Ok, where did we start? We start in the organization. Because when we want to go to external stakeholders and assignment as a GoF and their operations, data ask, whatever I am, do something with data, I don't know the network. I don't know the stakeholders. I don't know their operation, and I don't know your assignment as a GoF. So I have to go there. So what we did, we went there. This is the robot you have seen probably. Here on the balcony. We organized sessions for governmental policy makers, implementations, colleagues, et cetera. We asked and looked for enthusiastic people who want to work with open data in their assignment. So we did. A lot of people came, it was a lot of fun. Standing, sitting, standing, all that kind of stuff. Writing things down, it was really cool. We ended in five cases. Vijf cases, how can open data support communication about maintenance of bridges and logs. I never heard of it, but now I know everything about it. The local reuse of local waste wood in Amir. They have a lot of trees, a tree, illness, and all the wood has to go anywhere else. But they want to have a reused local. Farmers in soil, so how can open data support farmers in soil subsidence areas Jochem wil tell us something about that. How can open data support telling the story of Flavelland to the world. And how can open data support communication about maintenance in residential areas. This is from Lelystad. This is for province Flavelland. This is for the water authority. This is for municipality of Amir. And this is also for the province of Flavelland. Is there something? Oh, it's the echo. It's the echo, yeah. It dropped down, I think. Okay. What is our approach? I've also looked at the time, thank you. Our approach is this. We have to start outside, because our goal is help external stakeholders. So we start, this is the playing field we are in, in our open data project. We start in the external stakeholders. Who are you? Who are they? And who are they? And what's their business? What are their activities? And then listen to them. Find trigger points for data. How can data help their activities, their business in a way it means my assignment. And it means also their primary business. There are all kinds of solutions which they use for their business where this data can be used. We're going to illustrate this with a problem of exorbitant. Jo, thank you very much. Well, the first case I'll tell you about is the case about the story of Flavelland. And I want to ask the non-Dutch people here if they can tell me what is special about Flavelland. What's the name? Already with the name Naderland is also a weird name. Someone else? It used to be water. Exactly. Very good. It used to be water. In the 20th century, for almost half a century, was the biggest land reclamation project of the world. And it still is actually. And they reclaimed land from the sea. Right now it's a lake, because they closed it down. And they built cities on it. They selected the perfect citizens, for example my grandparents were selected as the best farmers of the Netherlands to go there and farm there. Because they wanted to create a new society on this whole new province. And this is a unique story. And only one person here who is not from the Netherlands knows it. And even in the Netherlands we look at Flavelland. It's a bit of a boring province. Nothing really happens there. We look down on it a little bit. And that's why the province of Flavelland they really want to tell this story to the world. En they have formulated a new policy and mission to have in 2030 that the whole world knows the story of Flavelland. So together with us, this is an image from really in the beginning it says neighborhood. They didn't have a name for it yet. So it just said neighborhood. And that's how the whole cities were created. En what did we want to do what they came to us with was the channels to tell the story. And can we use open data to tell the story. So together we went looking for how can we use open data to tell the story. Who are the players in this field of this historical story of Flavelland. We have the Flavelland archive who has all the materials of Flavelland of the past 50 years. We have projects in Flavelland who are already telling historical stories about for example water heritage. For example the green elements the forestry commission is creating a book right now about the history of Flavelland. So they need materials of data or data to tell the story of Flavelland. But we also thought we want to reach as many people as possible. What channels are we going to use? Are we going to build a website again purely focused on Flavelland and is this website going to reach enough people so that the whole world knows the story of Flavelland by 2030. We didn't think so. We said we want to look for channels that have a big reach and that reach the whole world. We cannot ask you for example if you search on your phone what do you use to search? Exactly. And what is most of the time the first hit on Google? Exactly. So we thought we want to use Wikipedia to publish open data to publish open data to publish open data from these stories that we have found the stories are about the water heritage and about the forestry commission and together with the Flavelland archive we want to publish these collections on Wikimedia Commons. And by doing so we learn how to do this for these collections but we also learn the Flavelland archive we learn the Flavelland province to publish this and so if they can do this for this dataset they can do this for every dataset and for every team and for every project. And that is what we are trying to achieve here that they can scale this up to watch also the example from the National Archive in the Netherlands who publish almost all of their photo material on Wikipedia and right now have 70 million page views per month. And Frank will tell you now about the bridges and lots. And one thing of this project is that we are in the last phase the last phase of the project so we are now ready to have the most time we spend on understanding the business, connecting with people etc. We still haven't and that's almost I'm proud of it that we still haven't published substantial datasets because we are only busy with understanding the business what's going on there what will help people and then we go into to publish data. So this will be live in about one or two months. So I will tell something about the communication about maintenance of bridges and logs. The province the communication with their environment is very important. In the next five years there will be large maintenance of bridges and logs in the whole province of Leuveland. En it causes also logs so that you can pass the slides or you can pass blocks and you can pass the bridge or you can't pass the slides or the logs. So that's very important for them to communicate. They heard about the data in the session can you help us? Ok, yes we can. So we start in the environment. Who we have talked to residents we have talked to farmers near to bridges near to logs we have talked to boat constructors who are behind the log doing their business we have talked to tourist organizations hotels all that kind of stuff watch your relation with the bridge and how important is that it functions and when it doesn't function what does it mean for you and how can we help with with data so we did, for example we talked to this transportation organization for sand and shins stones for example what they said the only thing I want to know is when the bridge is locked so I can pass it and how long it will take because if it's locked the whole day I go over it and if I can't over it I have to choose am I going to make a detour of 40 kilometers or am I going to wait so there's time and money for them it's very important to know that information on the other hand it's very important to know the planning of maintenance because they plan their work also on that planning because if they make a detour on the other side of the water where the bridge is over and they have to drive 40 kilometers more they will come to that to their customer so that's for them very important so that's for example we have a lot of this kind of chances we harvested from the conversations and we are going to execute that so you don't have to read this what people want there are all kind of channels and what we are going to do about that for example the province of Flevoland they had a strategy to use twitter for communication about the maintenance of bridges and logs no one who is cool who is spoke use twitter no one and they also said well this is from whole Flevoland the farmer next to the Albert Brug want to know information about Albert Brug all this is too much and only at the moment that it's relevant for him in the time that he needs it he is on the land and he has only a simple telephone and he only uses whatsapp so what we said don't use twitter for direct communication but these messages are very interesting so can't we get the messages can't we make a database of the messages and then feed other channels but that's one example what the result is from the conversation on the other hand this is for router traffic the organization fills the local traffic control system from there data is going to the national data warehouse traffic and they publish open data so but they don't know that this data is going to this pipeline and at the end comes to all navigation systems and all other services for people they don't know that that's what we are going to do we are going to tune this we are going to look at this pipeline so how can we tune the communication about maintenance of bridges and locks they only register for themselves and not knowing that this is used for the environment on the other hand we are going to look can we probably use this open data it is there already so we don't have to publish it it is already there for us to communicate to the farmer via whatsapp or to publish that on our website this is an example of more chances with open data which we are going in the next month also to operate the next case is also related to farms but as I told you playblons built from the sea so they put land in the sea and right now it looks like the land is also realizing that playblons a little bit boring so it is going to subside again into the water so there is a lot of problems in the province with the ground we spoke to one farmer 70 centimeters down in 10 years we have a lot of problems with this, not only farms but a lot of different players in the area and this is a project together with the water authority and the water authority also of course is a lot of problems because of this subsidence in the area and the water authority also is a relatively unknown anonymous government in the Netherlands so they also want to go more outside and be more visible and to share more their data and in that sense help other players in the field so these import two ambitions or challenges we wrote a challenge together with the water authority and it goes like how can open data support farmers in subsidence areas in their primary activities and as you can see we really went to the farmers the farmers and the context of the farmers in the water authority it collides on soil and water so that's where they meet each other and we went to the farmers and we went to have a conversation at the kitchen table we brought pie for them they gave us milk as you can see and we asked them how can we help what are your challenges in relation to soil and water what problems are you right now experiencing when doing your primary activities and they told us water on my land my crops gotta grow bad or they say the water quality I don't know the water quality the water quality of the water I use to water my crops because the measurement points of the water authority are too far spread out through the province or they told us I do not know the water level so I have to know the water level of the groundwater in order to know what machines I have to use to water my land in these conversations we were continuously looking for trigger points with data so what data do they use to solve their problems do they use data of governments do they collect data themselves so we were continuously harvesting information and data points and the next slide is everything we harvested you don't have to read it but these are the streams that we collected the important one was about the soil subsidence they have so many problems because of the soil subsidence one parcel of land in one parcel of land there can be ten different points of height so it's very difficult to work your land if that's the case the groundwater can be only ten centimeters from your soil so when you work it with a heavy machine you completely destroy your soil and what we found actually are three important things one farmer was a biological farmer providing to supermarkets in the UK and they need to provide exact water information about the water they used to water the products but as I said the water measurement is not precise enough so he has to measure it himself it costs him a lot of money another example is that for the height levels they use data that is six years old while the farmers themselves they measure it every time they work the land so the water authority uses all data it's also an outcome of this project and another one as I told you already used popular channels the farmers that told us they used a solution that's already processing open data on parcel level so they have all layers of information it's all open data and the water authority can just connect to this solution provide them with their open data and the water information would also be here so again they are much better in reaching your clients than you as a government are so connect to them very good thank you Johan we have a couple of minutes so I will give you some extras some insights what we've heard no assumptions too many assumptions are being done about open data and reuse of open data always connect to your environment understanding is key and for data officers always connect to the business prevention I call it with your data itself go always connect to the business what they need and help them also connect to their environment en just data structure to what is needed out there there's always a gap between the data and what's needed and you can never directly use the data for the need in a way we get from the conversations do not pre-event the wheel use popular solutions like wikimedia, like Bure-Mendem the changes in the data are most valuable for acting that's what we notice when people want to know the changes because then they can act on that change open data are only valuable when they need so never publish without reuse that's our insights so that's there are more this is very important what we've learned for the time we have you have seen this plain field this is the core you have to cover all the circles all the rows within the ring circle I ask you are you in the circle or are you out who's in who's out very honest also thank you very much 2 minutes because Jokom en Rik they will give you cards and what I want to ask you is to connect with this card to someone you know in your environment in your network who you want to connect with and want to talk about open data about the business solution data whatever just send them a card cause of the time we want to ask you to write them now cause you can also write them now and if you write them today you give them to us in our stand we will post them for you and you won't buy a post then we'll do that for you so that's it, I think a very good offer so please send someone in your network and say well today I'm in a session with those dudes guys we post cards about open data so blame us don't care send the card you can also send it to us well nice story please come here preferable to someone else thank you very much I'm sorry you were not allowed to ask questions next time Frank, thank you for the feedback thank you


This is stock number 11436. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used sports car headquarters. Today we are checking out this super clean 2012 Chevy Corvette LT2 Grand Sport. This vehicle has the 6.2 liter V8 LS3 motor which pumps out 430 horsepower. This car has been fully safety and inspected by our service shop. It has a fresh oil and filter change. All the fluids have been checked and topped off and this car is 100% ready to go. Arctic white is the color. We shoot all of our videos in 1080p 60 frames per second so if you have HD capabilities on your computer tablet or smartphone device turn them on right now because it is definitely your best way to check out the quality and condition of the car before seeing it in person. And if you'd like to check out all the photos on this car in the upper right hand part of your screen is a link to our website. Click that and check us out there. This one comes with the chromed 18 inch alloy rims in the front and it has Michelin Pilot Super Sport tires on here. These are 275 35 ZRA 18s and these tires have a good amount of tread left. I would say probably about 60 70 percent has the drilled rotors. Front fender is in excellent shape. I didn't see any scuffs or scrapes on that. It does come with the HIV headlamps. The headlight lenses are crystal clear. It comes with the factory fog lights as well and that front bumper is in nice shape. I didn't see any dense things or cracks on it. The lower valance is in pretty nice shape. The hood is in excellent condition as well as is the passenger side front fender. No scuffs or scrapes on that. The passenger side rim is in pretty nice shape. And as you go down on this side of the car take note of how clean the body is, how reflective and mirror like that paint is. We take these HD videos so if you are far away or even if you're close by and you just cannot make the trip down but you're so interested in purchasing the vehicle you can see the car hear the car and have confidence in the vehicle that you're looking at before you even get here so that when you do get here there's absolutely no surprises and that's why we offer the Summit Auto Fast Pass option in the upper right hand part of your screen and link right to our website where you can apply for financing, get pre-approved, see a payment quote, even appraise a trade all from the comfort of your own home. Back tires have just as much tread as the front tires and you get those drilled rotors back here as well. Back rims in pretty nice shape as we come around to the back of the vehicle. Rear bumper is in nice condition too. Didn't see any scuffs or scrapes in that you do get the dual rear exhaust with the quad tips and the trunk lid is in nice shape as well. For full disclosure this back rim is in excellent condition and down the driver's side door looks really good no scuffs or scrapes. Inside the LT2 package gives you the two tone black and tan leather interior. You get the grand sport stitched into the headrest and that seats in really nice shape the bolster looks good power driver seat we have factory grand sport floor mats as long as i'm up here we'll check out the back storage area nice and clean back here you can see the shocks are doing a nice job holding the trunk up and very nice and clean. You do get power windows power mirrors and power locks the Bose sound system and just tell some Corvette's work we're going to have to start it up so you can see the miles and the ignition and everything. You can see it starts up nice and there are no check engine lights or warning lights and this car has 36,546 miles instrument cluster is very nice and clean comes with the leather wrapped steering wheel audio controls on the right bluetooth and information or bluetooth controls on the left and then you have your paddle shifters on the top of the steering wheel there you have your information center controls this one also has heads up display where you can get the digital speedometer in the windshield has the factory navigation system dual climate control automatic transmission and your stability control right there passenger side floor mat and seat are in excellent condition and you do get compass display in the mirror and on start i'm going to turn the car off just for a second so we can put that soft top up but then we'll start it back up and check out under the hood for you bear with me with the soft top sometimes it's hard to do this with just one hand but there's a little button underneath here that you press to open that up and then this will come up like so you kind of need two hands so i'm going to use my hand with the gimbal on it to bring that up so while i'm holding that i'm going to put this down and that goes down like so and that top folds like that and then that goes like so but you can see that the soft top is in nice shape there's no rips or tears on it looks really good get the rear defrost on there and then to latch it into place just take this handle turn it and now it's locked in so really as simple as that we'll start the car back up take a look under the hood then we'll do a final walk around with all the lights on and everything i would personally like to thank you for checking out the video today and hopefully from this hd video you will have been able to tell just how clean this car is all the way around inside note under the hood we have the 6.2 liter ls3 motor engine bay is very clean runs very smooth get those hid headlamps the factory fog lights really a good looking car this car has been fully safety fresh oil change all that good stuff 100% ready to go and i would highly recommend this car from a quality and condition standpoint very nice condition on here like the arctic white i do like the convertibles and to see more pictures of this car one of our other 450 new and used cars trucks scvs minivans wranglers sports cars challengers chargers camaros corvettes mustangs gt 500s you name it we got it go to our website right there www.summitauto.com full pictures and descriptions of every single vehicle from two locations all at summit auto.com and if you like to check out more hd videos you can go to youtube.com slash summit auto remember to like subscribe and share on this video and all the videos that you see there in fact in a second you will see a link to subscribe to our youtube channel on your left a link to more Chevy Corvette videos like this one on your right if you have not been to our website on the bottom link to this vehicle on our website click those check us out and we really look forward to helping with this super clean 2012 Chevy Corvette convertible Grand Sport LT2 in arctic white thanks again for checking out the video


So here we have the wrapy robe. This is Arduino and Linux Raspberry Pi robot kit. So there is a Raspberry Pi in there. Different sensor, mechanics, ring goes wrong. How much price? People can buy this or no? There is a price. Something like $400. So the programmer will do it yourself kit and that's possible with these. Rammable. Here.