What is a purple cow?  Imagine you're driving and then all of a sudden you see a purple cow. Now a purple cow that will grab your attention and that's the whole point of Seth Godin's book, The Purple Cow. It's about something being remarkable, something being innovative, right? You see he starts off by talking about how marketers use to follow the old model, which is the TV industrial complex model, in which they'll make generic products and spend hundreds of millions of dollars on marketing for them, marketing the products to the mass media.  They'll buy the Colgate, they'll buy whatever's on TV, because if you were able to get on TV and put an ad on there, you can almost guarantee that you're going to make sales. So it's a win-win situation, right? As long as you had a good marketing campaign and the money to pay for it, you're always going to make a profit. Now fast forward a couple of years and things have changed. People are now more, they have more options. Their attention cannot be kept at one place. They want to go everywhere. There's heaps of people trying to grab their attention due to the internet and social media. If you go online right now, there'll be hundreds of people trying to grab your attention with different messages and, hey, buy this product. Hey, look at this. Hey, what's up over here? But the chances are you won't be paying attention. People have become good at ignoring the marketers, so the old model doesn't work anymore, because people ignore it. I'm sure you guys have seen the little ad on Google Chrome or Firefox ad block. You just block the ads these days. You don't have to watch them.  So ads don't work as effectively as they used to because of all the saturation in the market in these modern day and age.  They're still popping ads thinking that it's the way to go. Well, Seth Godin, Seth Godin says that this is not the way to go. That if you want to market for the new age, you have to put the marketing in the product. The product itself has to be innovative.  People are smarter than that. There's too many options. If everything's on the same playing field, people will go for the cheaper option. So unless you want to make your products cheaper and have a price war with your competitor, in which you both end up being losers as your product will no longer serve a profit, each selling the product at an incremental lower cost than the other one, it doesn't work. You need to make the product market itself. Seth talks about how a lot of companies spend hundreds of millions of dollars into the marketing campaigns when they could just spend a fraction of that cost into improving the product. The idea is you improve the product, you make a remark up, you make it innovative. A little bit different to compare it to something that's worth talking about. And when you do that, the early adopters, the first people that are interested in the product, he calls them the sneezers, they will sneeze the idea onto their friends. So it's no longer niche targeted. The niche starts spreading it out to the masses and that's how you make an idea big these days. You start it with a small group and then you spread it. You spread it out as they or the group spreads it out to their friends and then you can start milking the cash cow, the purple cow for all this guy. You can't sell for a generic product because a generic product is going to get ignored. You need to invest in the product. That's why Seth says everyone in the company or a startup should be a marketer, should be part of the marketing process because the marketing process is the product creation process. Don't worry about marketing campaigns to begin with.  No one cares about brown cows or white cows. Everyone wants a purple cow. Seth also talks about how if you want to make a purple cow, you need to try thinking about being the most of something. The most blue, the most red, the most big, the most small, the cheapest, the most expensive, the cleanest, maybe the smelliest, just anything that's going to distinguish you from the crowd that's going to accentuate your remarkableness. If you can do that, then people will be able to see you more clearly than you compare this and will generally choose you or whatever niche or sneezes are interested in whatever you're offering. Seth talks about how being generic or being normal is the most dangerous option you can take because you're almost guaranteeing that you're going to be ignored by the masses.  You got to play it extreme or play it unsafe. Think about innovation. Think about pushing boundaries and not stopping just because it's the proper thing to do. Generally, companies that push a bit further are the ones that succeed, are the ones that become remarkable or go viral in this modern age and time. That's the purple cow guys. Be remarkable. Don't play safe. Focus on innovation and not marketing. The marketing is innovation.  That's it. Peace.


What's up, everybody? Jason from Jaspiescasebrakes.com. We just sold out 2019 20, Pinini Select UA for Euro Soccer Hobby Edition, one box break number 31 random teams. So here you go the hobby edition guys Just remember you get random countries all cart ship and the country list is from Austria down to Wales And there is a combo right here, which is Finland, Skelzy and no countries other no team affiliations So there you go And here are the customer names and the dice rollers. So a run down to Robert and we got Austria down to Wales So let's roll the dice and we got ourselves a six and a five four eleven times. Good luck one two three four five six seven eight nine ten Eric down to Matthew. Let's start there eleven times here now one two three four five six seven eight nine ten eleven Poland down to Turkey So yeah, you have Poland Derek with the combo team Brandon going through the Netherlands. Yeah, you have the Belgium as well Matthew with Russia Moji of Germany everyone Portugal Robert with Austria Croatia and Czech Republic. Yeah, you have Italy actually with Ukraine Robert with the Sweden Denmark and France Moji of Spain dating with Wales Julian with England Matthew with Switzerland and Turkey So there you guys go Alright, so if anybody wants to trade give you guys a quick trade window trade minute All right guys, let's close the trade window then All righty, there you go guys, here's the soccer box and I can post up another one of these are stuff quite a few every leaf a Little less than half my little nice that so let's just use this right here to cut it open Good luck everybody got a little die-cut red a real for Switzerland So Switzerland that would be Matthew out of 65 And then Eden Hazard out of 25 little tie-dye patch Let's go to Belgium going to EA and we got a silver Harry McGuire Quincy You got a silver tin for Croatia I'm gonna Robert This is also like a little Color variation usually supposed to be all black with that when matches the colors are and Pogba for France And Robert that is a little tri-color Wow In Bapé as well Back to back and that's actually the purple with the tide Tri-color as well. That is a very nice one or the red white and blue Very very nice. You can see it kind of stand out and pop out You got a blog bar right there We got a silver Rodrigo for Spain and a mojo Moza we got Alan Sheree for England looks like a old-school player right there England that is going to Julian You got a blue Alexander To 225 and that is for Austria, which is Robert Ronaldo Robert Lewandowski Joe Don Sancho you also got a mirror Frankie got a blue Which is Mateo for Croatia and we got a Red to 165 Danny And that is for Spain You got a silver here for Turkey and we got Tom Cruise So there you go all those like inserts or I guess these are coa mezzanines Yeah, I'm gonna penny Steve those as well on top of them And of course, I think we got some pretty solid names out of this one box colors some auto Little tie-dye relic So there you go guys that was break number 31 like I said we do have more boxes So I will post up another one right now and we can get it rolling I So there you go guys appreciate it jazzy's case breaks www.SupportSupport.com


Other people are going to vote, so what is there if I don't go? We are still in a monarchy mindset. We think elected person is a king or an emperor. How do we get the population interested in politics and governance in view of the fact that, I mean, in most elections there are less than fifty percent turnouts? See, this is not about politics. There is not enough concern about the nation and the people. That concern has not come to a whole lot of people. Still we are in that mode. Our attachments to our family, our identities with our family and community is so strong.   Who will go and stand in the queue? We will go on a picnic or we'll go to the cinema. We'll do something else. Because the identification with the family is way bigger than the national identity and because of that, they think, ah, other people will vote. This is their idea. Other people are going to vote, so what is there if I don't go? There's a beautiful story that Mark Twain used to love to say, there was a time when people believed there are people on the moon before Apollo. I'm saying in America, people believe there are people living on the moon. So they got a bright idea. They thought on one particular given moment, all of us go stand on our rooftops and shout one word together in one voice. The word that we shout is who are them? Let's see what they say. Shall we try this here? Can all of you, I will say one, two, three. Can you just say who as loudly as you can so the whole Hyderabad hears? One, two, three. See, you have become wonderful like this. But that day came everybody stood on the rooftop. That time I got a very, what to say, a very artistic idea. I thought this is such a rare moment. All these people are going to say one word and me, you know, I have a small voice. What is, what is there if I don't say it? And I just wanted to hear this extraordinary moment. Everybody's saying who? And that moment came and it passed in total silence. A day may come, on election day nobody turns up except those who are heard it by political parties with money and whatever goading they're doing. This is an irresponsible way to exist. See, the word for democracy in Tamil language is jananayakam. What this means is people are the leaders. Still our people have not understood that we are the leaders of this nation. We are still in a monarchy mindset. We think elected person is a king or an emperor. So this is lack of education, lack of information, lack of identity with the nation. A strong sense of we build this nation is not there. Somebody is going to run this nation. This is still a British hangover. We think somebody else is running the nation. We don't understand this is our nation. We have to make it what we want. Right now we have a nation where if Donald Trump opens up visas for all Indians, sixty percent of the population will swim across the oceans and get to America. This is not right. When everybody wants to go away, we've not created a nation that people wants to live in, isn't it? When everybody wants to come here, that means we've built a great nation. For this, participating in the fundamental... participating in the fundamental democratic process is a must for everybody. But if you make it mandatory, it becomes ugly.  Even when nation is in a crisis, when fifty percent of the people not eating properly is a crisis for me. It is not a normal situation for me. It's a crisis. When such a crisis is there, whether I should vote or not, okay, we will say nobody is acceptable to me. Well, it all sounds very intellectual, but believe me, you don't build a nation like this. You have to make choices about whatever lousy choice you have. In that you must make a little better lousy choice. If you want to improve this nation long term, you cannot abstain and say, oh, nobody is fit enough. Well, you stand up if you see, see that this is a debate going on everywhere in every tea shop, every college is going on, oh, all politicians rubbish, they are thieves, they are this. If we have handed over this nation to the hands of the thieves and we are sitting back here and we don't even have the responsibility of voting, we are the more bigger thieves than them, isn't it? Hello? This responsibility has to come. We have not understood our basic democratic responsibility. When we do not understand that we will become unfit for democracy, then something else will take us over. It is very, very important, not just voting, there are many other instruments through which you can participate in the democratic process. It is very important the student community participates, not on the street, not protest, not burning a bus, but participating in the instruments of democracy. All of you are law students, you must take a certain part of your life to educate the country and the youth what are the ways in which they can participate in the democratic process. This is very, very important to make this nation.


The annual Overseas Housing Allowance Utility Expense Survey for Germany starts on March 1st. Service members living off post in privately leased or rental housing are asked to take part. The information that you provide will help the Defense Travel Management Office to better determine future utility allowances. The deadline for service members to submit their expense information is March 31st, so don't wait. Submit your survey by going to eur.army.mil and clicking on the link. More news.


AI X-Prize puts a spotlight on the good that people are really trying to do with artificial intelligence. By working together, investing in science and daring to dream big, we can truly change the game in depression. We can empower this fight against these criminals exploiting millions of women and children worldwide. Join us and let's end malaria. Join us as we journey towards the future. To bring hope for future generations to come. Our mission here is solving problems. When a prize gets won, that's the beginning. It's all about changing the world.


So every talk needs a structure, and this is how this talk is going to go. I'm going to complain for about 10 or 15 minutes, I'm going to have a good moment, I'm going to complain about everything I can think about, and then for the rest of the talk, Jules is going to solve all of our problems. Okay. So I'm not going to complain about build packs because I love build packs. Does everyone love build packs? Yes. I love being able to do CF push and just worry about my app code and not have to care about shell shock and Heartbleed and pseudo and all that kind of stuff. Build packs are fantastic. They're one of the best things. I am going to complain about writing build packs. Who here has written a build pack? You're heroes. That's fantastic. Did you enjoy the experience? I tried to write a build pack once. Sure. Your question answers itself. I tried to write a build pack once because I'm an enormous beardy hipster. I tried to write a build pack for Haskell. Everyone loves Haskell, right? Yeah, you do. Yeah. One of the many beautiful things about Haskell, it's a lesser-known thing, but it's fantastic. One of the many beautiful things about Haskell is that it's impossible to get an integer overflow using your basic integer type in Haskell. The Haskell language, there's no such thing on the default integer type as max int. So the language is completely happy. If you want to write a program that calculates a single number that fills the whole memory of your computer, the language is fine. You do that. That's great. Okay? This is brilliant. This means you never have to worry about it when you're reasoning about your programs, and that's fantastic. In order to do this, the Haskell compiler needs to rely on a library, a C library, called libgmp, which is an arbitrary-precision math library, right? So when I want to run my Haskell compiler, I'm going to need libgmp to be there. And then the Haskell compiler is going to produce a binary, and that binary is going to be dynamically linked to libgmp because the integer's in it. They're a data structure provided by libgmp. Okay, so I'm going to need libgmp to be in wherever it is that my build pack runs and does the compilation, and I'm also going to need it to be wherever my app runs, all of the many millions of instances of my app. So I'm going to need it to be in both places. Now, fortunately, there is a thing that exists in both places. There's the root FS, we call it at the bottom there. The CF Linux FS. So what do you think? Is libgmp in the CF Linux root FS? No, of course it's not.   But okay, it's probably not as bad as all of that. I can just, I can work around it somehow while I'm writing my build pack. So what am I going to have to do? Well, remember that I'm an enormous hipster, so I'm not going to write an offline build pack because I'm just always online.  I'm just going to get it from the internet somewhere. This thing only has to work once. Once I've got my library, what am I going to do next? I'm going to have to copy it into the droplet there. Does everyone know what a droplet is?  It's very clever. So I'm going to copy my library into my droplet there because I need that to be there when my app is running.  So now I'm going to go get my compiler and that's great. Once I've gotten my compiler, now I can compile a binary and that's fantastic. Now I've done my job. All I have to do is stick the binary into the droplet there and I'm done, right? Except that I forgot that the binary needs to be called with the LD library path magic that I just did, right? So I can't just put the binary in the droplet there and make it work. I'm going to have to wrap it in some kind of shell script. So okay, let's start doing that. And the shell script is going to have to have this kind of this magic, but it's going to have to be subtly different magic for the LD library path in the previous thing because the droplet there appears in two different relative locations, depending on whether I'm actually in the build pack or whether I'm in the droplet and running the thing. Okay, so I need to do that. And then I can call the binary and I have to remember to pass all the arguments along otherwise bad things will happen. And now I'm done. All right, so that wasn't so bad at all, right? That was fine. All right, but at least, oh yeah, remember what I wanted to do, what I really wanted to do instead of all of that stuff is I wanted to get a compiler, compile a program, put the program in the place where I'm going to run it, done, right? That's what I wanted. What I actually did was all of, yeah. Okay, so that's, that kind of sucks, but at least what I've done now, that's the end of the problem, right? I did the work as the build pack author. I was a hero just like you folks who've written build packs, right? I did it and now no one else ever has to worry about it ever again, except for the performance implications of what I just did. So it's slow, how is it slow? This library that I got, right, that's now in the droplet and that droplet, I need to download it into every Diego cell that's ever going to run my app, right? So I'm gonna download it over and over again and I can't cache it anywhere, right? And maybe for one little C library like this, that's not such a problem, but if I were writing a Java build pack, then what we're talking about is the JVM, right? We're talking about whole language runtimes that you download over and over again every time you scale your app up, right? And what's worse is after you've downloaded it, well, what the droplet is, is it's a tarball. So now you've got to extract that tarball and you've got to do it for every container that you spin up, every instance. And what's even worse than that is that you're extracting it onto a layered file system, which has its own performance implications, that's slow. That's, we're making every app instance pay. All right, well, I'm almost done complaining now. That's basically it. Jules is just about to solve all of our problems, but because this is CF Summit and we're all moral, upstanding people, we're gonna give him an opportunity to get some bonus points. And the bonus points are if he solves our problems using open standards, because we care about open standards here. Okay, so here's what we want. Here's the goal. So here's what we want. Here's the goal. I wanna be able to do this. I don't wanna have to do that crazy business that I did before with the LD library path and all that stuff. I just wanna get my compiler, compile my thing, and copy it into a place. And on top of that, I want it to be a whole lot faster than it is right now. And I wanna make use of this OCI standard that we keep talking about in Garden and Diego and all this kind of business. All right, fix it. Okay, so everyone now hates BuildPacks, so we've succeeded. But we remember that we love the BuildPack model, but we wanna just make it faster, use open standards, maybe knock some of the edges off. So let's talk about how staging works today. How does Cloud Foundry work today? This is going to get technical, but I have pictures. So here's my app.code, so bit of code. How does that work today? We've staged that. Let's look inside the staging process. How do we do that staging? Well, if we zoom in, you have this droplet. You have this BuildPack, right? The BuildPack runs on your code, right? And then it puts the outputs of staging into a directory. I call that dropletizing, right? And then we take that tar file, the results in that directory, and we put it off somewhere into a blob store, right? We call that a droplet, right? And then to run that, what do we do? We create a new container, right? From a root file system, and we tar that back in, right? So we re-untar that whole droplet right into the thing, right? So that's a copy of that thing, which may have a big JVM in it, and then we run it. We run app, run or whatever it script is, right? Animation is a super slide. They need to use OCI images. So then we just keep doing that again and again and again, right? So if you have multiple instances, we have to re-extract that droplet with the whole JVM in it again and again and again. So tar files, it's no metadata, they're just a tar file. We keep extracting them again and again and again, and you're limited to this one directory and you can't run those routes, right? Because we have to have everything end up in this one directory because we're doing everything with tar files, right? So, layered images, right? This is this technology. Docker has hugely popularized this technology. It's extremely powerful technology. And we actually have open standards around this technology now. We've got the OCI image spec. So instead of using tar files, we have this way of describing a set of layers, which can be added on top of each other. So you can have a layer which represents maybe a base root FS, like a bun two, a layer maybe with the difference to add go to that base root FS, maybe a layer for like code or something, right? I mean, you can just describe that in an image. Might look something like this, my app image, right? Got a base layer, a bun two, some go code, and then maybe your app on top, right? And all of the things in yellow, most of the things can share, right? Lots of things will be reusing those things. And your bit is just the purple bit on the top, right? So when I create a second image, right? A second go app somewhere else on the platform, we've got all those layers which are in common. You've got your one, which is different. We can just copy across those layers, right? They're in a cache and put yours on top. How does that work? Well, we have these layered file systems which do copy on writes, right? So I can create a directory that's a copy of an existing directory and I can just do that instantly. And I can use that to put these layers on top of each other very quickly, right? So put your app on top, we, okay. So what would this look like if we use this for staging, right? Well, we could instead of having a build pack step and then the dropletize step, we could just run the build pack and then we throw the result out as an image, right? So an image that describes exactly what I want to do with that runtime. So as the whole flexibility of OCI images and we get rid of the tar files. And so we run it, we just run that image, right? Which, and that could be a Docker format image, could be an OCI format image, it doesn't really matter, right? So the interesting thing is we already support running Docker images on Cloud Foundry, right? We already support the run step of this, but we also have this other run step which happens if you staged with a droplet, right? So depending on whether you staged from an image or from a droplet, we either replace the whole root of that and get the whole state of your container from the image and run it, or we get this standard root file system and untie your stuff. Well, actually, all we need to do to make this work is we kill that step. We get rid of that step, right? And now everything we run in the platform, we run from OCI images. How does that work? Well, actually, we then just have two ways of producing those OCI images, right? You've got the way people use today, right? Docker files to create those images, right? It can run that Docker file, create an image, ship it up, or I can use build packs, right? Because the whole library of maintain things that know how to convert my code into an image that someone else is going to patch and do all that stuff with, and it also creates an image. So you end up with a completely standard way to run things and just multiple ways to create these shippable images. So no tar ink, right? Standards all the way and we can actually start to think about relaxing some of those restrictions. We might not initially, we might want to keep the user experience the same, but we'd no longer be forced to have restrictions like not running as routes or being limited to a specific directory. So that'd be pretty cool, right? Now, some of you are probably thinking there are some problems with this. And I think I can name the three top problems. There, what about patching? Probably with exclamation marks. What about existing build packs? And then probably what about patching again? Because you just thought about that again, but like louder. So what happens when we need to patch one of these things? Because one of the great things that Cloud Foundry Platform gives you with build packs is we can take care of all of that. We just roll the new root file system out, put your droplet back on top and everything works. That's how it works today, because these are separate, because we've got the droplet and the root file system, we can put a new version of root file system, re-extract and we're all patched and up to date. Well, okay, what happens when Ubuntu 14.04 goes bad? Okay, I have to patch it. So what do I do? Well, actually an image is a thing with a grid, right? And it's a set of layers. If I want to create a new image with the patched version of Ubuntu, right? So okay, I've got a new image with the patched version of Ubuntu and I want the image that has your code on top, I can actually quite easily create that image, right? I've just created a new image. It's got your code on the top level, on the top layer and it describes what I want that patched application container to look like. You might be thinking this doesn't work, but what I'd like to suggest is this is exactly what we're doing today, because actually untarring the droplet on the new root FS is exactly the same as what this OCI image instructs the container engine to do, right? Let's take this new set of layers and place this tar file back on top, right? And as long as you maintain the build pack contract, so the build pack's guaranteeing that it's gonna set up the files that it's made so that it can still patch, we can still make the same guarantees about patching, but now we can do them in the platform so you can control when you do and don't want to patch those things. So maybe you have a production environment where we shouldn't do that patching automatically, we can now do that because it's no longer a side effect of the Bosch deploy, it's something that we choose to do at the high level and roll out, right? So I just run that, I've got my new container and it's all patched. So what would this mean, right? Well, we get all the power of build packs, right? You still have all this nice maintained functionality, you don't have to worry about writing your own docker files, doing all that stuff. You still get all the patching that we had before, right? But we no longer pay the price of copying these tar files all around, re-extracting them, and we can start to think about relaxing or changing some of the build pack contracts because we're now choosing to have this contract even though the technology allows us to do more things. OCI images throughout, there are still edges that there's still things we have to figure out so we still want to make sure that we can put out a new root FS in a way that we're confident we can keep everyone secure and up to date, right? That's important. But at least you're not gonna have to use docker files when you wanna do a Haskell build pack, right? Today we have a lot of times where people get frustrated with doing it and go, well, let's just run as a docker file, right? This should avoid that. We can actually start to make build packs a supercharged way of writing images and then you can use whatever you like and the platform works consistently. So where are we with this? Well, it's still not definitely happening but we are putting our feet in the water already. So we have a couple of stories in Garden's backlog to try out the first couple of steps. We're running some experiments to see if we can actually prove the performance gains that we think we're gonna have. We put a proposal to CF Dev for the work so you can see much more details with words and details on how all this actually works in practice and how we think we can get that. Feedback is very, very useful for us because this is, although I think it's a very good idea, it's a lot of work and so we need feedback on whether this is something that you think will help with your use cases and is important or not to be able to justify the work that we wanna do on this. And with that, we have intentionally less time for you to ask us any questions. So we would happily answer any questions. Apart from from Doug. Doug. So we're just kind of assuming that the environment which you pile is the same environment you wanna run. And that may not necessarily true in the sense that you don't need to pile anymore when you run. You need to talk about how you may sort of remove the extra board, right? I think you're under just that problem. Is that what happened yet? All right, so we're thinking of this in two steps. So the first step is let's keep the exact same bill pack model but just do it based on those CI images. So in the first step, nothing changes, right? You still have droplets exactly where they are and that's why we know we can still patch them in the exact same way. It's just instead of it being a droplet with a JVM inside, we can start having file system layers and caching stuff. That then I think opens us up to start thinking about ways we can change that UX a little bit. So for example, one thing we've been discussing is you could have in your bin release file, in your bill pack, you could name a set of dependencies which you'd like us to make sure in the final image, right? And that doesn't, that means we don't have to have them all already in the one Uber Franken-Root FS that everything has to have but you can opt into having it and then we can potentially even keep that patched. So you can say I want Haskell, right? Or I want the JVM and we keep that layer there for you and patch it for you and keep putting your code on top. So that might be a way that we can let people do some things that are hard today like getting Haskell because they can just say I want the deb file, right? I want Haskell from the maintained repository without needing to put it in a root FS and without needing to complicate the existing bill pack contracts. So that's just one idea but I think a lot of the value is we can first make it faster and then we can set ourselves up to start experimenting with ways to relax some of the existing contracts and maybe make some of these things easier. That jumped out to me with this notion of swapping out lower layers and I was the item that scared the jeepers out of me because in a general sense a lot of times when we install a higher layer the steps you take to install a higher layer are based very much on the lower layer. Right, so this, so I should say this only works with the bill pack contract because we keep the bill contract the same, we know it's safe. Right, right. It only works as long as it's equivalent to doing the untar, right? As you relax it, the bill pack, this only works if the bill pack designs itself in a way that they can make that guarantee. But actually as long as the bill pack designs itself in a way that it can make that guarantee you can actually do this and you still get all the power and all the patching as long as it does this. So in the plan that we have at the moment what we want to do to start with is we don't actually change anything. So we have the droplets where they are essentially and the root FS and where it is although we might pull the root FS into a blob store. And then we generate the OCI images. So we generate an image that names the root FS and names the droplet. So the droplet is already a tar file. So the droplet is already in the format but you want a layer to look like. So we can actually just keep that where it is and just basically refer to that and just do a little proxying translation to actually create those images. Once you have that in place then maybe you start to think about more complex things if you want to have multiple layers and other things. But because we want to keep the patching in there we don't necessarily want to use like one of the registries that's out there because then we'd have to like go and update each of the images if you want to do the patching. So we think it's actually better for us to generate the image and use that as a communication format but it's sort of CGI if you like, right? We're not, there's not actually an image. There's a thing that we generate as the here's the latest version of your app, right? There's a URL which gives you here's the current patch version of this app that we can then schedule around. Do you see what I mean? We have four minutes. They are now yours. Thank you very much. Thank you.


Let's get started. Welcome to Observability Day. And that's to my wonderful and esteemed French colleagues, that is the last time I will butcher your language. So let's get started by thanking a few of our sponsors, whose support is critical to put on events like this, which is now the fourth observability day, I believe. New Relic, honeycomb.io, OpenSearch, and Grafana Labs, also sponsoring. You can, yeah, yeah, no, give yourself a hand. You can check them out outside. Couple quick words. Observability Day is really meant to kind of bring together all of these observability projects under the CNCF banner and let us share our successes and talk to each other about where we've been able to push forward in getting better observability, right? It's not a destination. It's a journey, as we like to say. The projects that you'll see represented here is everything from Prometheus, the gold standard for metrics that's been around for so long, Jaeger, Fluent-D. Also, there's a lot about newer projects, such as open telemetry, Thanos, and Cortex. This is the fourth iteration, as I said, of Observability Day. This started as Open Observability Day in 2022 in Detroit. Last year in Amsterdam, this was one of the best attended Colo events. We had another one in Chicago that was literally so full, they were turning people away at the door. So this year in Paris, we're actually extremely fortunate to have not only some very large rooms, as you can see, but also two of them. And they're unfortunately on different floors. So I hope everyone brought their FitBit because you'll be getting your steps in going between sessions. This is really a collaborative experience for all of us, not just speakers and presenters, not just chairs and program committee, but also all of you, people that are attending, people that work in this space. So when there's breaks, say hi, introduce yourself to other people. If you have a question for a speaker, feel free. I can say, as a speaker, the thing that I want to do the most is I want to talk to people. We wouldn't be up here otherwise, so please, if you have a question, go up to a speaker, ask them, we're all very friendly, we don't bite, I promise. And remember, we are all learning. There is never a point where your learning journey stops, so you're gonna keep on going. Quick note for speakers, there are the mics up here. Also, if you'd like a lapel mic, you can find the AV people at the back of the room here or upstairs, and they will get you sorted. We have a ton of talks. I don't have time to go through them all in depth because we have quite a few project updates to get to, but please keep in mind when you're looking at the schedule, make sure you're in the right room because you're either here or you're up on 7.3. So you go to the left as you get off the escalators and it's right to your left, actually, when you go back into the room there. Finally, there's a code of conduct. You can scan this QR code to access and review the CNCF code of conduct. Generally, just remember the golden rule, treat people as you would like to be treated and treat everyone with kindness and respect regardless of their background or anything else. Captioning and translation services are available via Wordly on your personal device. You can scan this QR code, choose your language. Session ID will populate and it's like a tend. Captioning begins when the session does. We will have refreshments, snacks, lunch available throughout the day in front of the B and C rooms and then in front of the ENS rooms on level 7.3. There will also be a reception tonight from 1730 to 1900 hours. Love to see you there. During lunch, we'll have some table topic signs so you can write, hey, you wanna talk about EBPF or you wanna talk about profiling, then you can write a card, put it on your table, and have people come and chat together. It's a fun way to make connections. Couple final notes here. There's a social media hashtag of Oli Day, virtual discussions in tag of observability on the CNCF Slack. If you're a speaker, please try to be at AV five minutes before this are your presentation. And at the back of each room, there's some stickers and other fun stuff. All right, talked about that. Thank you to our program committee. Give them a round of applause. They are, they put a lot of work in. This is, this has some of the most talks submitted for any Callow Day, for any day zero event. It's a really challenging job every year to go through and pick out the best talks for everyone. So with that, let's move into our project updates. So first off, we have Brian from Prometheus. Hello, hello, thank you all for coming. So yeah, this is me, I work for Grafana Labs and a quick update about Prometheus. Well, let me see, who uses Prometheus? Who's never heard of Prometheus? Nobody, okay, so I'll skip the next four slides. Prometheus is 10 years old. There's a documentary about it. And we're still going strong though. We did eight releases in the last 12 months. So pretty steady cadence every six weeks we do a release. There's also the long-term support version of Prometheus, if you're not aware of that. So if you don't wanna take the absolute latest, we're updating that. Prometheus is not just the monitoring program in the center, it's the whole ecosystem of alert manager and exporters and clients and so forth. So we did a 1.0 release of the Java client. That's pretty much a rearchitecture of that. Check it out if you are interested. What else? I wanna mention native histograms. We've been talking about this for a while, but they're nearly done. So the point being traditional Prometheus histogram is very low resolution. It's kind of the blocky thing on the left. And what we're calling native histograms are nearly infinite resolution, much more fine grained and more efficient. So those are still declared experimental, but pretty much ready to go. So definitely take a look at that. Prometheus got smaller. I did a whole talk about this at the last observability day, so I just wanna, again, if you've not been following, it is pretty much half the size it was two years ago. And one more slide. We are preparing a Prometheus 3.0, which is scheduled for PromCon, the Prometheus conference, September time. These are, Open Telemetry is a big theme of Prometheus 3.0, and I won't go into all the detail. We are holding a maintainer session in the main conference on Thursday, Thursday afternoon. We have a booth in the main conference starting tomorrow. So if you wanna talk about any of this detail, come along or check us out online. That's my update, thank you. And next we have Eduardo Silva from the Chronosphere these days. Yeah, it's Chronosphere now. Talk about fluid bed. Thank you. Hello. Good morning, everyone. Happy to see you here, and I'm glad to see how this conference is growing. As Austin was saying, we used to have just one room, now we have two. Maybe next year we have three or four. We're full pack. So let's talk about the news of the project. I know that we have some users from FluentD, from Fluent Bed, so and there's always some a little confusion about, hey, what is the project and how this works? Actually Fluent Bed is a CNCF graduated project under the FluentD umbrella. And as part of the problems that Fluent solved is everybody, what you face in observability or where you are trying to deploy applications. Deploy is like one of the steps and the next one is to monitor what's going on in your environment. So how do you solve moving data from sources to destinations? And that is with FluentD and Fluent Bed does. It sits in the middle as a way to connect different systems, different telemetry data and also solve this problem, which is not just connectivity. Also buffering, retries, scheduling, moving data at scale, it's a bit of challenge.  This is fully, fully agnostic. But also when things start to run at scale, you need to have a way to deploy this in a very smart way where you might prioritize different things like, for example, do not lose data. I'm okay to lose data, but I need to move the data faster or I need to process the data before sending the data to the final destination, right? And the agent, Fluent Bed and FluentD, allows you to send this data to one or multiple places. Also, this is a common pattern architecture when you deploy Fluent or any type of tool that allows you to concentrate data. This is what you're seeing in the graphic right now in our world used to be called an aggregator. It aggregates data from multiple endpoints before sending the data to the final destination. And one of the reasons for that to exist is because sometimes you want to control the data flow. Maybe if you have a thousand machines, you don't want the thousand machines sending data directly to your backend because it can blow up and maybe you need something in the middle that control, validate the data schemas and so on. And one of the values of Fluent is that also it has been extended not just to work with Fluent. It works with Prometheus by doing scraping with open telemetry, locks, metrics and traces. So it becomes a real neutral way to connect different systems, right? Where you go in production to any type of company today, you will find that you have data from SysLock, from ProLock, from Prometheus, from MySQL and everything is a different format, different transport mechanism and Fluent allows you to integrate those and solve your problem. As of today, Fluent bit has been downloaded 13 billion times, deployed on Kubernetes Cluster. This is insane. If we do a checkpoint from one year ago, we are two X now. So that means more users, more bugs, more futures, more improvements. So it's good to have this pressure to get this adoption at a production grade where now we need to go for the next big steps. And one of the next steps is that this week we are releasing Fluent Bit version three. And I'm happy to hear that also Prometheus is hitting version three. We should do a joint party from the same ecosystem. And one of the biggest thing of B3 and maybe it's not a thing that the user will face, oh, now I'm using HTTP2. It doesn't matter, right? So you just want to deploy your application, making sure that you can connect the stuff. But HTTP2 is a big deal to integrate system where if you are instrumenting your applications, for example, with open telemetry and you want to rely on HTTP2, now Fluent Bit will be able to collect data by using that type of transport. Also we are doing a lot of internal improvements for performance mostly and how to facilitate the way that people can extend this agent when you are modifying the data, right? I don't know, we're not going to talk about internals but basically when you receive data you need to encode it, decode it, serialize it and convert from different formats. The most you will improve on that area, the best performance you get and performance is not just a speed, it's also consume less CPU and less memory. We have achieved a new processor. We have filters and processors. Processor, we achieved those interfaces like a year ago which allows you to modify in a more easy way the content of log and traces. Before you have different plugins as filters in Fluent Bit to modify the content, but now we're achieving a very easy way to just modify, insert, rename keys of logs and traces. And with different type of operations, even if you want to extract the content from a specific value with a regular expression, you can extract that and convert it to a key value pair, basically. If you are playing with metrics, sometimes we get users that say, hey, I don't want to hold the metrics that is being collected. I would like to just exclude or include certain ones based on criterias or prefix by names or regular expressions. So now we have a new processor for that specific thing. And now we have chipping a new SQL processor. You will say, hey, SQL, are you running a database? Ready? No, no, sorry, SQL Lite or something in Fluent Bit? No. Basically, our SQL processor allows you to select specific content from a log by using an expression with SQL query language. So you can select keys, rename them. You can put expression. You can create conditionals, for example, for values, for strings. And in the next couple of iterations, we are going to ship aggregation functions. Aggregation means if you want to create a window of time, and in that window of time, you want to count what is the maximum value, the minimum value, and just start collecting the data that you really care about. The first problem that we solved at the beginning was connecting A to B. Then we added an X problem, which was processing. And now we are doing a high level where we are putting more logic for the user so you can have a smooth experience. And also, when talking to our open telemetry users, one of the biggest challenges that we found is for somebody who's generating data from an NCK in open telemetry and sending data in open telemetry format, it works fine. But most of our users, mostly coming from logs, they said, hey, I'm not instrumenting my applications, but I'm shipping data in different formats. How do I connect to open telemetry? And for them, we need to ship some solutions. So now our new open telemetry output connector has been improved in order to support more processing capabilities to adapt your own logs to the expected format by open telemetry. And as a final message, we always do a big release of flu embed, which is just also a new T-shirt. So on this T-shirt, we try to give it for free at KubeCon. So please, we will be around observability day. We have like 50 today, so make sure that you find us outside, and you grab your T-shirt, or also in KubeCon. So thank you so much. And I'm going to. That's the lesson. Thank you. Thank you. All right, so let's get through some open telemetry updates real quick. We're going to be pretty brief. We have a maintainers' track talk on Wednesday that will go into more depth on a lot of this stuff, but really the three big new things in open telemetry we want to talk about right now are continuous profiling events, real user management, and then a lot of stability around core signals. So we recently merged Oteb 239, which brings in continuous profiles as a new signal to open telemetry. We expect an implementation this year. There's some work happening with Elastic contributing some code there, which will dramatically accelerate it. We are also working really hard on stabilizing an event spec to accelerate several different things, including real user monitoring, so a lot of improvements to the JavaScript libraries. This is going pretty well. We're expecting that around Q3. Finally, last year we announced Logs, Metrics, Traces were stable. Great. So what does that actually mean for you? Well, now it means that there's four languages where that's actually true. So that's been a long journey to get there. But we're also expecting Golang to follow this year, which I know means a lot to the cloud native world. We're also working really hard to stabilize semantic conventions. I know a lot of people have dangling dependencies on those. Again, if you'd like to talk more about any of this, we will have a maintainer's track talk. And one more thing, we're applying for graduation. So if you're not familiar with the CNCF maturity levels, you have sandbox and committing graduation. We believe that the project has matured enough from a governance perspective, and it's in production worldwide. So it's time for us to kind of take that next step and move towards graduation. There will be some additional things about this, which again you can learn more about at our maintainer's track session on Wednesday. And we expect to conclude this by KubeCon North America this fall. So I don't know what the booth number for the observatory is, but it's the big thing that says open telemetry observatory on it on the show floor. And please join our event channel on the CNCF Slack Hotel KubeCon EU24 to get more info. Next up, we have Jonah and Pavel talk about Yeager. Yeah. Hi, everyone. My name is Pavel. I work for Red Hat. Jonah at Ivan. Nice to see everyone. Jump into a couple updates on Yeager. Yeah, so the main update is work around Yeager V2. So we are planning to rebase Yeager components on top of an open telemetry collector, which means that we want to essentially build another distribution of an open telemetry collector with Yeager components. So all the storage layer will be implemented as open telemetry exporter. We will produce a single binary compared to all-in-one query and collector that we have right now. And we would like to, as well, align the configuration for that with the collector so there won't be flags. It will be only the configuration file as we have it in the hotel collector. And we still want to be compatible with the existing storage layer, so we will be able to migrate to V1 without doing any migration on your database. Yeah. Awesome. Thanks for those updates. And so a few other kind of new features that we've announced since the last KubeCon. We fully support Elastic 8. That's something a lot of folks were asking for. We've also built a whole bunch of new capabilities in the UI. So if you haven't updated your Yeager, definitely do so. It's a pretty easy update, and you start to get some of these new capabilities. And then finally, on the roadmap side, just kind of further taking what Pavel gave you an update on, we're going to have a beta soon of V2. We're not on V3 like some of the other projects, but we've been very stable on our V1 for quite some time at Yeager. The other thing that we're going to be releasing is native support for Clickhouse. Today it's a partially supported implementation, but a lot of folks using it. So come to either the booth. We're there in the afternoons. You'll see a Yeager booth. Or you can come to our maintainer session on Wednesday. I believe it's 12.10. So please stop by, and we'll get into much more detail than this quick update. And thanks very much. And there is, as well, Yeager Country first on Friday. If you would like to help out with the project. So hi. Hello, everyone. I'm Sasweta Mukherjee. I work at Red Hat. I work on monitoring platforms, largely based around Thanos. I'm a Thanos maintainer as well. And you can find me at the Sasweta M code pretty much anywhere. So the Thanos community this past year was super active. We had a bunch of new people, new contributors, new LFX mentees, even new maintainers. And we are very excited to share some of these major updates with you. So starting with query. So this past year, there was a lot of focus on Thanos query. So we released a version with distributed execution that you can enable with a query.mode flag. And essentially what this distributed execution does is that it has functionality to split your queries and delegate them to either your leaf queries or even child queries. And as PromQL has mostly aggregation operators, you can see how it would be largely beneficial because each query has to only process very little series as it goes up to the root. We also, for a new engine, we had a lot of progress. It now supports up to 95% of all PromQL expressions. So the Volcan engine has become a really nice and viable alternative to the Prometheus engine in the context of Thanos. And we also introduced a native query tenancy model. So with HTTP headers, you can request data for a particular tenant. And this can be paired with any OSS authentication authorization mechanism to give you a very complete authentication plus tenancy model on the Thanos query, on the read path, basically. We also introduced a few changes in receive. A major one is availability zone-aware replication. So what this does is that it assigns every single Thanos node in a hash ring to a particular AZ and then data can get spread evenly across your region. And this just boosts your ingestion path as low as your disaster recovery scenarios and so on and so forth. And there's a lot more. There's selective index caching for storage. There's TTL. There's lazy downloaded index header for storage. There's extended functions on the query and the query front and even reloading using signals from the sidecar. And the Thanos community has been just super active. We've also had a lot of mentees that we've built projects with like dynamic switching of engines on the query and explanation and analysis and so on. And finally, for the first time ever, we actually are hosting ThanosCon at the CNSCubeCon Paris. It's on 11.7.3, Room E02, where we get into depth with a lot of these details. The Thanos community shares what they love about Thanos and how they're using it to build cool stuff. So definitely feel free to visit. We also have a kiosk, BP18A, I think, on the CNCF project pavilion. So if you have ideas about Thanos, if you're excited about its future or if you just want to get involved, feel free to reach out. Thank you. Thank you. Is Friedrich? Yeah. OK. So I'm Friedrich Gonzalez. I'm a software engineer at Adobe. I'm going to give some Cortex updates. I could go around down the Prometheus updates again because pretty much everything that has happened for Prometheus has happened for us since Cortex is a project that uses Prometheus in its code base. But anyway, so we have not been lazy. We have not just been using the good features from Prometheus and Thanos, but we also been adding some great new features in the last year. And here we have some of them. I'm not going to go through all of them because of the time. Interesting is query priority, right? So we have a way to specify specific queries which give higher priority. And well, that's a lot of stuff there. We also have in the roadmap for this year a lot of new features, OTLP ingestion. We have been working on that for a while. I myself have been working on that. And also the native histogram support as well. We have a demo for those two features on our talk, which is the next slide. We have three things that are important. You can come to the talk that we have tomorrow. And learn more about Cortex and all the users, what the users enjoy with Cortex. And also we're going to do an introduction there. If not, you can come to the booth. We have a booth. You can come talk to us in the booth. These are the times that you can go there. And if you're not in the conference right now, you can go to the CNCF channel and you can ask questions there. That's where the users are. All right, thank you so much. And that is that. So thank you all for attending. Please check your schedule for which session you want to be in and enjoy Observability Day. We'll see you back here at the closing.