And first of all, thank you very much for the organizers, to the organizers for inviting me here. And today I'm going to talk about applied deep learning. So who am I? I'm working as a data scientist in Berlin. I love machine learning. I'm a Kaggle junkie. And my research interests are automatic machine learning. And I like handling text data a lot. And of course, I like big data. So before we start with applied deep learning, we all want to know what is deep learning, right? So deep learning for me, and I think for most of you, is now a buzzword. So if you want a job as a data scientist, you must put deep learning in your resume. You're going to get selected for an interview. To me, deep learning is neural networks, all kinds of neural networks. Not shallow, but larger neural networks. And deep learning helps us to remove manual feature extraction steps. So when you're dealing with images, just imagine 10 years back when you were dealing with images, you were using features like sift features or surf features. So you don't need them anymore, because deep learning takes care of that. And many people might think it's a black box. Oh, we are not going to use neural networks. It's a black box. It's not. We'll see. So history is always good, right? We must learn how deep learning machines have evolved, how continents have evolved. So in 1989, we used to have something like this with the convolutional layers and sub-sampling, then again convolution, something like this. And then we had something in 2012, we had max pooling, which improved image and accuracy a lot. But we are humans. We always want something more. So we need to go deeper in neural networks. And then Google came up with this Google net, which doesn't even fit on my screen, with a lot of inception layers, a lot of convolutional softmax pooling layers. And since 2012 to 2016, there have been hundreds of papers discussing neural network techniques. So we'll go one by one, OK? And then you'll be like this, a bored cat. If I start talking about all the deep learning techniques for the last four years. So let's start with something interesting. What can deep learning do? We all know, like images, of course, it can classify images like in different categories, butterfly, dog, volleyball. People love classification between dogs and cats. And something RCNNs can classify different parts of an image. And it's very fast. And also, like, is it a muffin or is it a dog? It's difficult for humans, right? Don't eat the dog. Or maybe something like this, maybe a pug or bread, loaf of bread. So deep learning can also be used in natural language processing with text data, sentiment analysis. There's been a lot of research in that field. And also for speech processing.  It's everywhere. Deep learning these days, it's everywhere. So the question is, how can I implement my own deep nets? So at the end of the talk, I think most of, if you haven't implemented your own deep nets yet, then you will be able to do so. Yeah, so you can implement them on your own. So to implement them on your own, if you know what kind of deep network you're planning to implement, you have to decompose it into smaller parts. And then you implement the layers one by one, use Tiano or something. And then you start the training. But there is something more. It's called fine-tuning. So you can save yourself some time, and you can fine-tune a pre-tuned network. So for fine-tuning, for most of the times, maybe you need to convert the data. So that's one of the steps. The next step is you need a network definition. So how does your network look like? Do you want to fine-tune AlexNet, GoogleNet, VGG? And you need to define a solver that solves a net. So I'm telling you all this because I'm going to talk about Cafe developed by Barclay Vision and Keras, which is a Python library. So first, I'll start with Cafe. How many of you have used Cafe? How many of you know about Cafe? Great. So why should we use Cafe? It's very fast. It's open source. It's modular. And if you don't know coding, it's expression-based. So even if you don't know coding, you can implement your networks in Cafe very, very easily. And it's developed by a community, which is the best part. So you always have something new implemented in Cafe. So for Cafe, you need to convert your data. So Cafe uses LMDB. It's kind of database for images. If you have a lot of images, if you want to train faster, then you need to convert your data first. You need to define a network, which is a proto-text file. I'll come to that. And a solver, as I said earlier, which is also a proto-text. And then you train the network with or without the pre-trained weights. So proto-text, it's actually very, very simple. So this is one of the solvers here. And you define where you store the net, which is network.proto-text or train.proto-text. So here, train.val.proto-text, it accesses that. And then you have the number of test iterations. After how many intervals, you want to test your network on the validation set. That's the test interval. And then display is one. So after every epoch, you get the results. You can define average loss, learning rate, what kind of learning rate policy you're using, then other parameters like gamma and momentum. And snapshot prefix is where you want to store your model. So after every 100 iterations or 1,000 iterations, you want to store it somewhere.  And the best part of Cafe is it can run on a GPU or a CPU. So you just need to change it to CPU if you don't have a GPU. It's going to be slow. And then we come to the train.proto-text. So in train.proto-text, you have to define a network name. So here it's lenit. So that's why. Lenit. Then you have to define the layer name, what kind of input you're using. So here's data input, and then the shape of the input. And then you can just carry on with writing the layers. So convolutional layer and the bottom layer is data. So data comes to convolutional layer. And then you have the number of outputs associated with it. Kernel size, stride, what kind of weight and bias initialization you want. And then in a similar way, you have pooling layers. So here it's using max pooling and kernel sizes to two strides. And after that, you can actually keep on adding as many layers and pooling layers or whatever layers you want. And in the end, you have something like inner product layer, which is a dense layer, and with a number of 10 output layers. So in this case, I think it was training on MNIST data. So 10 output layers. 10 outputs. And then softmax, because you want probabilities. So training on net using cafe is very, very complicated. It requires a lot of coding. So that's it, actually. So you install cafe, you ask it to train, and then you define where your solver is. And it will start training. And then you wait and see awesome results. Yeah, but somebody might say fine tuning. OK, I don't want to write my network from scratch. So what's fine tuning? So in fine tuning. So Google has developed Google net, and there's been a lot of research going on. And they publish there what kind of neural nets or convolutional neural nets they are using. And you can just get the weights, and you can fine tune those weights for your data. So here, I'm going to talk about how to fine tune using Google net. Or this is one of the use cases that you will see. So why Google net? Because it has Google in its name, and Google is always awesome. It won the ILS VRC challenge, which is a made challenge. And it's very complicated. So always go for complicated stuff. You will learn a lot. And cafe has something called a model zoo. So there you can download all these pre-trained networks and their weights, and then you can play with it, including Google net. And you can get it on the GitHub of cafe. So next thing is one of the use cases. So this was actually a challenge. So I said, I like taking part in machine learning challenges. So distinguishing between honey bee and a bumble bee. So the training data set had somewhere around 4,000 images and 1,000 images for test set. So it's a very small data set. And 79% positive and 21% negative samples. And the evaluation metric was area under the rock curve. So can anybody distinguish between honey bee and bumble bee? It's very difficult for me. I just hate bees.  But yeah, it's tougher than distinguishing between a dog and a cat. Why? Let's see. So I started with a very simple model, not so simple at all. So with three convolutional layers, three pooling layers, dropouts, two hidden layers with 2,000 nodes each and two outputs because it's only honey bee or bumble bee. And it was something like this. The last year is binary cross entropy, log loss. And the number of epochs, OK, here it's showing all little 50. I trained it for 100 epochs, but the error was not going down. And error of more than 0.4 is very high if you have a binary classification. So what should I do? I thought, OK, let's try fine-training Google. So for fine-training, you have to create training and test files. So since the data set is very small, the training and test files are going to be text files. I'll show you. Get the prototypes from model zoo, of course, where all the network definitions and solvers are there. Modify them according to your need. First, run it as it is. If you don't see any improvement in your previous networks, competitive previous networks, then fine-tune. Then modify it, modify the parameters, and then run the cafe solver, which is, again, very complicated. So the training file looks something like this. So you have all the images and the labels separated by a space. And it's very easy to do that. So if you have a folder with a lot of images, you can just write a simple Python script to do that. So here I'm taking 10% validation samples. You should always separate. And that's it, actually. The next thing is, after downloading Google and Prototex files, you, of course, want to change it. So I modified it to use image data. It's very small. I'm using text files for images. And I changed the batch size. So here it was using LMDB. I'm not using LMDB anymore, so I need to define the batch size, height, and width. And then I changed, if you want to test, you have test file similar to the train file. And so here I'm not showing all the things that I changed. You can find that on my GitHub. And then I changed the dropout ratio. So if you're changing a layer, you need to change the layer name. So from loss 3 slash classifier, it becomes loss x or whatever you want it to be. And of course, the number of outputs. So from 1,000 output to two outputs, because we have only two classes. And similarly, you need some changes in the solver. So one of the changes is you need to define where your training Prototex does now. If you want to change the number of test iterations or test interval, you can do that too. I made display equal to 1, because I always want to monitor what's happening and increase the average loss and decrease the learning rate a bit. I kept the rest of the parameters as it is. Some more changes were like gamma. I changed gamma. I changed the weight decay. And yeah, where do you want to store it? So it's very simple. It's very easy. And that's it. So now you have modified the Prototex, and now you want to see how it performs on your data set. And yeah, very difficult task. So you train it, and you have to. So only the extra parameter here is the weights. So this model you downloaded from Cafe GitHub, and you just need to supply the weights, because you want to modify the weights. So OK, we fine-tuned. Now we want to know, OK, did it really help? OK, and somebody might say Google said, yeah, it has all the classes you want. It doesn't have these. So these are the TSNE projections of the data initialized with random weights. So we can see we cannot separate out green and blue, maybe or bumblebee. And when I used Google Net as it is, I got something like this. So you can see here is a small cluster forming. There are some clusters here, but still it's not separable. And this is the fine-tuned result. So you can see what kind of accuracy you will get here. I got an AUC of 0.997. And to see how Google Net performs, so you have nine layers, and you can extract output from each one of them. You can do it using Cafe and Python. It's very easy, and the code is available. And you see something like this. So the red line is random, blue is pre-tuned, and fine-tuned. So you can see, even with the small layers, the accuracy is pretty high. It's more than 80, but it keeps on increasing. So it's achieving somewhere around 95% accuracy. The pre-trained weights and random weights doesn't matter. And yeah, so I've already discussed this, so why fine-tune? Because it is faster. If you want to train your neural network for several days and invest all your time, like weeks or days or months, it's better if you use a pre-trained network if that can solve your task. It is better, most of the times, because there are researchers from all over the world who have invested so much time in that. And why reinvent the wheel? If somebody is offering you something, just take it and use it. And now the question comes, how do we train a deep net in Python? So for Python, also, it's very simple. For Python, I'm using Keras. So I'll talk about Keras. And actually, you can use Cafe, too. It has a Python interface. You can use TensorFlow, Tiano, Lasagna, Keras, which is my favorite. You can use Neon by Nirvana systems, and lots more. If you really want to look into the deep learning landscape, it looks something like this. This is from this month. No, from June. So you can see, like, top libraries, Wicked of Forks, TensorFlow Cafe, and Keras. So after this, the second use case that I'm going to talk about is classification of search queries. So the place where I work, I'm doing classification of a lot of search queries. And for that, I'm using neural networks, deep neural networks. So for search queries, I won't go into a lot of details. Queries can be classified into three different categories, navigational. So if you know where you want to go, like if you search for Walmart, then, of course, you want to go to the Walmart website or Amazon, then you want to go to Amazon website. And then you have transactional queries. So if you want to buy something, like, let's say, if you want to buy iPhone 6s, so it becomes a transactional query, or if you want to book a hotel in Bangalore. And then you have informational queries. So who is the president of the United States? Or something like this? Or if you just search for Bangalore or Kolkata. And the transactional queries can be further divided into four different classes. Awareness, evaluation, decision, and retention. So in awareness phase, customers making himself aware of the product, then evaluation, he's evaluating, he's checking out the reviews or something, and then he's trying to make a decision when he's planning to buy. That's the decision phase. And retention is like, I have a broken iPhone screen. So yeah, that's retention. So I came up with this idea of representing queries as images. So all the search queries can be represented as images. So this is the image of David Vier, the query. How is this image formed if you know about virtual vector embeddings? So when you search for David Vier on Google, you can extract all the title words and then create these word vectors for each one of them. You can stack them together, and it will give you an abstract image. Similarly for apple juice or search query, I wish you have these images. But what happens now? I don't see much difference between gilt bars or search query, which is a game or apple juice. So it becomes something like this. You can be anything. So that image can be anything, but we can tackle it. So there are two different kinds of machine learning models that you can use. One is convolutional neural networks. You can use the images directly or use the random crops from images. So you take the whole image and put it into convolutional neural net, and then see how it performs. Or you can do something really cool like this. You can extract random crops. I won't tell you how you can combine it, because I'm also still researching on it. But one very simple way would be averaging, and then you can train a convolutional neural network on it. And implementing neural networks with Keras, it's very simple. So here I'm implementing a multi-layer perceptron. So it's a sequential network. You define the model as a sequential model. Then you keep on adding layers. If you want dense layer and then add dropouts, then the number of classes you have. And then it uses categorical cross-entropy. So here you have a number of classes. Categorical cross-entropy is multi-class log loss and an optimizer. And then you just fit the model. So access your data, YC is your labels, number of epochs. And that's it. So simple. And similarly, you can design a convolutional neural net. So you just add convolutional layers instead of dense layers, and then proceed the same way. You just keep on adding layers, as many layers as you want. And in the end, here, you have to flatten. And then if you want softmax or sigmoid, depending on your task. So as a result, a very fast framework for classifying search queries was implemented. So it's very simple. The only thing you need to take care of is a lot of data. So how will you classify 800 million search queries? But with neural networks, you can just do online training. You can update the weights. So the model improves every day, these kind of models. And they outperform traditional methods. And yeah, of course, papers and programs. And if you want to know more about it, then you can go to PyData Berlin website, and where I gave this talk. And you can see the full talk, because it's like 40 minutes. So we have approached problems like, OK, classifying images or classifying search queries. Search queries are converted to images, so it's basically images. But what happens when any kind of data comes to you? When I say any ML problem, it's mostly tabular data, the data that you see every day in most of the tasks. So I came up with this framework last year, which is pretty simple, not very complicated. So here, the pink lines represent the most common path that is followed. And blue lines are if you have different types of data, like categorical or text data. So of course, you split the data first, and then you have an evaluator function where you send the validation set. And then if you have numerical data, then you just don't do anything and go to the model selection and hyperparameter selection. But if you have categorical variables, then you either convert it to labels or binarize them. And similarly, if you have text data, then you can use some kind of text transformers. I like TFIDF and some kind of decomposition, like SVD is required. And yeah, then this framework in the end, it gives you the best model with best hyperparameters. So this is one of the papers, and you can read more about this in detail if you want to. And similarly, this year, now since everybody is talking about neural networks, we want to know how to optimize neural networks. So this year, I came up with a similar framework, which is simpler than the previous one. It looks something like this, very similar to that. So here you can see, now I no longer need different kinds of decomposition methods. So if I have a data set, I split it into validation and training. And then I identify the type of features and stack the features. One of the very important steps of training neural networks is normalization of the features. So you can either do Z scoring or you can do log scaling. It depends on how different kinds of feature normalization techniques you have used and implemented. So you can put all of them in the feature normalizer. And then you have a network architecture selector, so which is very simple, very basic. Like 20 years back when neural networks came into existence, we talked about how to design neural networks. So it uses the same kinds of method. And then in the end, of course, you have the neural networks at best. I won't say best validation score. It might not be the best model, but nobody cares about 1 to 2 percent increase if you're working in the industry. So yeah. And selecting a neural network architecture. So all these frameworks, unfortunately, they are not open source yet. But I'm working on that. And maybe in a couple of months, they'll be open source. And everybody will be able to use them. So selecting a neural network architecture, it's pretty simple. Well, these are my tips. So this is how I go. So you can always use SGD or Adam Optimizer. Adam Optimizer converges fast. So you can train a number of different models and see the performance. Always start low with a single layer, 100, 500 neurons. Use batch normalization, which is very effective. And RELU, rectify linear units. Then, of course, a dropout, because you don't want your network to overfit. And then you observe the validation score. And if it doesn't work, you are not happy about it. Or if your boss is not happy about it, then you add new layers and increase from 1,200 to 1,500 neurons, a very high dropout for 50% to 50%. And even then, if everything fails, your evaluation metric is saying very bad score, then go for a very, very big network. Of course, first buy good hardware, and then go for a very big network. So 8,000, 10,000 neurons, very high dropout, 60% to 80%. And if it doesn't work, then go for random forest. So since I'm talking about automatic machine learning, how kind of frameworks select the best models, I'll also talk a little bit about the auto ML challenge. So there was this auto ML challenge lasted for one and a half years. So with a tweak-a-thon phase, final phase, auto ML phase, where your models are run on new data sets and a number of phases. So the framework that I showed you how to select neural network architecture or how to approach any kind of machine learning problem, I used these frameworks for this challenge. And it performed really well. So these are the results of the final one. So final one was a CPU phase. And final four was also a CPU phase. So I participated on only two phases of the competition. After the first one, I kind of forgot about it. So in final four, the framework performs very well and got like third position. And this is the GPU phase. If you look at the architectures of neural network that I have built, it's very, very simple. And other people built really complicated networks. And they could not win the competition. But it's similar to the industries. So don't invest a lot of time. If you're not working in research, don't invest a lot of time in optimizing neural networks. One to 2% increase won't make your boss happy if you invest one month for it. So this was the GPU result. And what do we have now? So we have partially automated framework. I mean, I say it's partially automated because it's right now works on only tabular data. You can have a lot of different types of data sets. So this system gives very comparable results. And sometimes it's beating automated systems like hyperopt. And yeah, how this framework for neural networks or the other framework, how they were designed, was like, when you deal with hundreds of data sets, you know what kind of machine learning models will work, what kind of neural network can you design. So knowledge from some kind of knowledge from past data. And of course, we have a future in this because right now I'm working on autotuning of convolutional neural networks, which I think should be big. And this was also discussed in very much detail in PyRata Paris, like 20, 30 minutes of talk. So you can see that. And then you can separate out different parts of the framework and see how the whole framework is designed. And it's all in Python. So final words for this talk. I don't think deep learning is magic or a black box. It gives you feature importance. You have to explore a lot of things when designing deep nets for specific data sets. And yeah, as I said, 1% to 2% improvement, I don't think that matters on industries. And thank you very much. Visti. Hi. Hi. In your experience, is there an architecture that's best fit for temporal models? Temporal models? Yeah. No, it doesn't work. OK, thanks. What do you mean by temporal nature of text? OK, sequence-to-sequence learning, right? So no, I'm not using sequence-to-sequence learning. So you can convert. You can convert to like here. Let me get back to that. So here you can. So how I'm combining these, so you have a search query. And then you have the top results for that search query. And all the results have a title. So these titles are converted to word-to-word representations and stacked together. That's it. And if you just want to train on the search queries, then you can use word-to-word embeddings for each of the word in the query. And then you can train an LSTM. So I was wondering if there is some way of like grid search based pipeline method, which we have in scikit-learn. Do you have something like in CAFE, or is there a way to do something similar, brute force, parameter optimization here? Well, I don't use grid search. And I'm not sure if CAFE has one. Maybe it does. I'm not sure about it. Most of the hyperparameter tuning that I'm doing comes from experience. So you know which parameters to tune and which parameters to leave. And grid search is very slow. I would prefer using something like Bayesian optimization. Can you please suggest us some ways for evaluating train models? Like one is TSNE, you already told. Something, can you please suggest us some ways for evaluating the train models? One is TSNE, when you have more number of classes, like more than thousands. So TSNE is not for evaluation. It's just a representation. So you can see, this is on the validation set. So you can see, yeah, it separates. It's nice. If you want to evaluate your model, of course, you split your data in training and validation, train your network on training set, and then see what's the error on validation. I prefer that way. So I wanted to see the types of problems that you've attacked are fairly well cropped image problems or the text-based problems that do not include sequencing or the temporal sort of nature of the data. I was wondering if there were any pre-processing steps that you would suggest, and you were very good results. What I'm trying to see is, are there any pre-processing steps that you would suggest so that you can convert the type of data, more complex images, different kinds of text data into a type of data where you can get good results using the techniques that you add? So like pre-processing steps for images or text? Both. Both, OK. Yeah, it depends what your subject is. When you're talking about images and you're classifying different objects. So if you're classifying a bottle, and if it's in front of a laptop and a lot of other things, then you need to center it. Or sometimes you can do some kind of rotations. But most of the time, I'm not doing these steps. You really can't apply it in batch, right?  They will all have different sorts of rotational issues. So if it is not images, in terms of text, whether it's temporal text or national languages, or you did mention search queries, but if it is a different type of document that you are analyzing, are there, or if you've handled text other than the ones that you've mentioned here, did you end up using certain preprocessing steps that can be applied on a batch way over the data that you analyzed? In batch. So preprocessing text is fast enough, right? Why do you need batches for it? So what you can do if you want to clean text, so you can remove stop words from it, yeah, like these kind of things. And when you're dealing with search, then you have to take care of HTML tags. Yeah, so these kind of things. And then TFIDF, most of the time, it captures everything. Hello. So you just said that it's not worth fighting for one to two percent accuracy. And probably time is more important. I'm sorry I didn't get you. You just said that it's not worth fighting for one to two percent accuracy. It's basically a trade-off between time and accuracy, right? In some industries, it does matter, like a lending industry, or when you're trading a huge portfolio of money, a one to two percent saves you millions, which matter. So what is your strategy there? Because the only way now is you get into a research mode, or you get into a mode where you have to come up with your own algorithms, or maybe like a fine-tuning algorithm, which is not applied. So what is your strategy there? Yeah, so first I'll ask what kind of industry. So if we have to deal with a lot of data every second, it's like millions of samples every second, then I won't even use deep neural networks. They are too slow. And I'll go for something like logistic regression, which is simple and easy. And if you don't need any kind of online evaluation, or you don't want to test your model online, if it can run offline and it takes several days or several hours, if it's OK, then if one to two percent accuracy is equal to a million dollars, then yeah, of course, do it. Now my question was, do you have a framework for that? Like, do you have a framework in mind? Because I mean, research is what academics do is kind of not documented very well. Like, you've documented the ML framework very well, right? So do you have like a research framework when you're fighting for like one to two percent accuracy? So the framework that I described, right, it gives you a direction. So it gives you very basic simple models that you can use. And the thing is the space, the parameter search space is very limited. And it comes from knowledge of different other data sets. So if it has seen some similar data sets previously and it has used parameters in a certain range, then it will use them. And it will give you a model. And then you can do it manually. So it won't give you the best model in the world, but it will give you just a direction. It will give you a good model. That's it. And then one to two percent accuracy, it's not dealt with by the framework. We have two more questions on that. Hi, thanks for the lovely talk, big fan. Anyways, like you said, with the network, if there is a batch normalization, is it necessary to have dropouts as well? Batch normalization is a normalization technique. And dropouts, you use it for regularization. So yes, you should. Actually, I was referring to the original paper. They say that dropouts is a regularization technique, which can also be implemented in implicit way by batch normalization. That's why I am. Thanks. Is it? OK. Might be. I don't know about it. Thanks. Last question. Hi.  So what you're suggesting is go with the AlexNet or something which is very well-trained and just replace the last softmax layer and just train your network on that. Is that the technique that you followed roughly? Is that? Is that the technique you followed roughly that just remove the last layer and put in a layer with random weights and just train it again? Is that what your mumbleby and those two type of base training? No, I changed a lot of things in that. Ideally, that could just be a starting point, right? Just change. Yeah. Yeah, if you don't want to fine-tune, if you just want to see how this network performs, then just remove the last layer and modify it from 1,000 classes to two or three or whatever number of classes you have. And you might need to change to softmax or sigmoid, depending on your problem. OK. And how slow is this as compared to your original model that you had? Because original models, there wasn't a lot of layer. Can we take this question offline? Abhishek will be available for the birds of feather session at 3.15. So if you have more questions, you can talk to him then. Thanks, Abhishek. Thank you very much.


Rory, you just, the commercial world is a world of material failures. Not exclusively. You'd be a very bad manager, if you attempted to run people entirely using numerical metric incentives. The more astute business people are not quite as portrayed, I think that is fair. What I am heading at is, or what I wonder about is also related to the yw y rhan o Rodiwn. Yn ystod y mynd i'w ymweld? Yn ystod y bydwys i'r wych o'r ffordd o'n mynd i'r ffordd o'n mynd i ymweld ymweld y bod, mae'n ymweld ymweld yma. Rwy'n gweithio ychydig yn llwyddiadau o'r ffordd, mae'n ddigwedd i'w gweithio ychydig o'r humana. A'r ddigweddau, o'ch ddigweddau o'r ddigweddau o'r ddigweddau o'r ddigweddau o'r ddigweddau o'r ddigweddau Yn ddweud o'r rhan o'r rhan o'r cymdeithas, mae'r cyfnodau ym mhion. Mae'n cael ei wneud i'r peth yn ddweud o'r hŷr o'r cyfnodau sy'n ddoch chi'n gwybod. Rwy'n cael ei wneud'r rhan o'r gweithio. Ond yw'r hyn o'r cyrchaf sy'n ymwneud hynny, ond mae'r cyflwyno o'r cyflwyno a'r ysgolwch yn rhan o'r piwyd. I think first of all we're always looking at external agency as the reason for people being unhappy. First of all people are innately a little bit unhappy and indeed dissatisfied might be a better word. And it's rather good that they are, to be frank. That's the first point. The lot of man is not actually one of unending bliss and the eradication of all possible annoyance or irritation. The second point is we always blame things on external agency. Ond, mae'r cydnod yn gweithio fod yn bryd o'r iawn wedi'i gwerthio gyda'r cyd-brydau o'r cyd-brydau a'r cyd-brydau sy'n gyfweld sydd yn tryb i'r ysgol. Atheism yn cael ei mewn gwahanol wedi'i gwneud y chyfnod i'r hollol.   Mae'r byw yn gweld yn gweithio'r hemfyrdd yn ymgyrch o'r status, A gweithio'r sgwpio'r lleoli'r lleoli yn holodau ni'r lleoli'r lleoli yn bur Shaktai'n dweud am ymolau'r lleoli i gwasanaethau gweithio'r lleoli'n gweithio'r lleoli yn bur Mae lechio'r ei glas o'r cyffredin ni'n gyrddig yn campur, rwy'n gweithio'r lleol sefydlu sefydlu i'r oedd. Rwy'n gweithio'r gweithio'r gweithio. Y ddiwrdd y maes gyda household yw sylfenau ym mhwyntrach, rydyn nod ymlaen i chi gweithi Peiton i ymlaen i chi'n Cymru. Ac mae'r gwaith i'r ffônwyr ynghylch yn mynd i gwahanol yn ddiffrwng. Mae'n gwirio'n gwybod ysgol. Mae'n gwirio'n gwybod ysgol o'r byw o'r byw o'r byw. A wnaeth o'r gwaith yma yw'r gwaith o'r byw o'r byw o'r byw o'r byw. Mae'n cael ei wneud o'r byw o'r byw. Mae'n gweithio o'r byw o'r byw. Ie, a moddiadau sydd wedi bod yn ymddangos, yna ymddangos yng ngyfgrifennu, yn y ddweud yma, yn ei wneud y ffordd o'r ffordd. Mae'r cyrraffi ar moddiadau. Yn ymddangos, mae'n ffordd yn ymddangos ar y margau. Mae'n ffordd yn ymddangos ar y stryd, ac mae'n dda'r ffordd o'r ffordd a'r ffordd o'r ffordd, yn ymddangos ar y stryd, mae'n dda'r ffordd. Second, it's a dissatisfied society because the first slogan of modernity was every person, every man, woman are born free. Never before have the utter dissentence. It was an absurd sentence. One was born a master, the other was born a slave. The moment we said all men are born free, we created dissatisfied societies because we are not free enough because some are more free than us. We are not equally free. So everyone is dissatisfied. There is nothing wrong with dissatisfaction. This is what I want to say. Because dissatisfaction keeps our society alive and kicking. In previous societies, in traditional societies, if you are dissatisfied, there came the crisis. Of course, crisis, I agree with you. It's a metaphor, okay? But according to this metaphor, the sick person either dies or recovers.  Modern society, for the time being, recovers always from this crisis. Crisis belong to the life of modern society. Without crisis, you cannot survive. Without newspapers, you cannot exist. Without propaganda, you cannot exist. Because we need to remain dissatisfied. You need to be able to say what exists is wrong. Something else would be good. What exists is ugly. Something else would be beautiful. What exists is the most important. It's unjust. Something else would be just. Believe from this. Sometimes we are right, something we are wrong when we make the propositions about this something else. When we make the wrong proposition, disaster can follow as we know it from the 20th century. But it's our responsibility. Well, Anish, Heller has just given a wonderful demonstration of what it is to be alive and kicking. I felt the table vibrating under the effect of it. I actually wanted to say something else in response to what Rory said, which I think is very important. He referred to the transfer of populations from small villages to great megalopolis. How this causes enormous disruption and produces in itself a search for status of a new kind. I would just like to reflect on the fact that the great cities that have grown in the modern world have also brought along with themselves an art and a literature of loneliness. A loneliness of a new kind, which you find already in Balzac, but also in Flaubert, and of course paradigmatically in people like Kafka and so on in the Central European tradition. It's as though our need for each other, which is the thing that is most beautiful in human beings, is suddenly cut off from its fulfillment at the very moment when it can be so easily fulfilled in so many ways. I think this is the most interesting thing to reflect upon. This is the major transition that modernity has imposed upon us. This mass society where we're surrounded at every point by opportunities, by people, by opportunities of friendship and also opposition and so on. At the same time, there has grown within that this unassuageable core of loneliness. Very interesting thing, a beautiful point. When I moved to London, I grew up in the Welsh borders, I gained enormously in terms of financial capital, but in social capital I became rapidly impoverished. I have friends in London who I've known since the age of seven, probably about ten of them. There's nobody I can really call on now to pick me up from the airport this evening with the possible exception of my wife. So in terms of the favour economy, all those economies die out and are replaced by the commercialization of everything. Another very interesting correlation is if you look at American voting patterns, far bigger than race, sexual orientation or anything else is simply where you live. If you live in a town or city over 600,000, you're overwhelmingly Democrat if you don't, you're overwhelmingly Republican. Now, what you derive from that, you could say, that arguably rural communities actually find that what you might call free market capitalism actually works fairly well and is a fairly amiable part of their lives and their content with it, that everybody in larger cities feels that something desperately needs to change, but to what they're attributing their dissatisfaction may be entirely the wrong thing. Daniel, to start for all of you, but why is it that we embraced in the 80s, 90s this model of neoliberalism? Why is it that it could become such a powerful ideology that for at least two decades we wanted to believe that the financial world and everything related to that would be our future and why? I guess it comes out of a sense of collapse of a previous seemingly viable models, the sense of the collapse of post-war social democracy, or at least the crisis of post-war, if I'm allowed to use the word crisis, social democracy, obviously the Berlin Wall, the collapse of the division of the world into two systems, and a kind of triumphant discourse of neoliberalism that was sold to us and that appealed to something perhaps in many people linked with this idea of endless progress and growth linked in the way Rory was describing with perhaps certain illusions about infinite possibility, of course only for a minority of people in the world, but nonetheless a powerful, had a powerful grip on us. Of course there was that feeling of a model triumphant, but if we're thinking about modernity, which Agnes is inviting us to do, I think one should hold on to another side of modernity in this discussion, which is I'm thinking of Zygmunt Baumann's book Modernity and the Holocaust, that in a way the question then of what it was in modernity that doesn't produce this kind of more creative flux and change and emancipation, but certain kinds of risk and the pull towards the drive towards the world of camps and extermination or the world of a police state and so on, which has to be also the sort of other side of any conversation about modernity presumably of the emancipatory possibilities and that much darker side and how one understands those relationships because they're clearly very modern forms of barbarism. They're not simply some archaic remnant. There's something that modernity produced that is extremely ominous and that's, as a historian, I guess I'm interested in the history of the endeavor to understand those processes and what they owe to social factors, politics, but also perhaps to certain things about people, to the nature of mind, the unconscious and so on, that the Frankfurt School thought about, many people thought about in the 20th century. The book that came to my mind was Eric From's great book, which I still think people, it repays rereading, Fear of Freedom, which was also translated as Escape from Freedom in 1941, which was an attempt to think about in a way, you know, the fear people have of freedom and in a way the lure towards authoritarianism and that's also part of the story of modernity. I think it's very important to think what you said and what you said. It's basically impossible to compare gains and losses. That's our problem. You spoke about loneliness. That's very true, but loneliness is a loss, but solitude is a gain. So you cannot, this is what you cannot compare basically. I would not say it's wonderful, it's a progressive epoch, not at all. I said it's different from all the previous epochs, different characteristics and there are gains and there are losses. Basically communities are lost in modernity. That's a loss, but solitude is one which is important for us single individuals. We can be alone.


I started as a filmmaker in the ski industry. Originally, I just wanted to make movies of my friends and I, and then I broke way too many bones. And I've had some very severe injuries, including breaking my back and both arms at the same time. Your back and both arms. Yeah. Is this from skiing? Skiing. Yeah. Oh my God. Yeah. I was in the hospital for like two or three weeks. I shattered my left wrist and had to have reconstructive surgery and I was doing physical therapy for about six months and yeah, great times. But that's just crazy because when I think of skiing accidents, I always think the knee or the hip or the foot. Yeah. Yeah. I've done those too. Yeah. Yeah. My list of injuries is like I've broken my back and both arms, broke my right wrist again and had to have surgery on that. I dislocated my kneecap. I broke my leg. I tore three or four muscles in my upper leg. I broke my eye socket. So I have a plate in my eye now instead of a bone. And you know, the more that you keep talking about this, the more that I get where you come from about not doing that stuff anymore. Yeah. So I ended up, my parents are like, we can't afford the medical bills anymore and you're really going to regret these injuries as you get older. So instead of being filmed, I ended up becoming the one behind the camera and I started filming my friends at the time and they, I mean, they are some of the top pro skiers in the world right now. They compete in the Olympics, the X Games. Wow. They're in big ski movies and I developed a name for myself in the ski industry and I kind of got tired of the ski industry and because there's not much of a career in that, it's just more fun, but I ended up finding myself doing documentary work and that's when I made my first film, Autism One Man's Journey and that connected with a lot of people. It made it into like 10 film festivals or something as well as one winning a few awards and then. Congrats. Thank you. And then I did the disability film challenge in 2020 and the theme was documentary and I won best editor out of like 87 films. Nice. And then. You need to, you need to come out of my videos. Yeah. Can you do it for free please, Scott? I can't do it for free, but I can definitely be for hire and help out. I did a few films for disability film challenge and then I made a newer documentary this past year and it was called Thriving on the Spectrum. And it was about what it was like to be autistic and the autism community in Colorado during the pandemic and how there were so many struggles with like, I lost all my supports almost in the beginning and just lost so much structure and I had to find new supports and it ended up working out in the end, but just there were so many changes that just made everything so rough and that film has won, I think, three or four awards and been in 20 film festivals now. I mean, here's some of my awards right here. Wow. Is that an Oscar at the top? It looks like an Oscar, but so that was for this other film festival in LA and it's actually the same company that makes the Oscar trophy, but it's 24 karat gold, so that's pretty cool. Oh my god. As you can see, I'm in my office right now. I obviously like film. I've got the film poster behind me. I even have it tattooed on my arm, like a film reel there. Nice.


It's time. It's time. It's time. For what? For the curious singing giraffe show Where we gather some peering wildcat Find out what you think of that Come and join us and sing rock Come and join us and sing rock Happy to have a whole new curious crew On the curious giraffe show Oh, Dorothy, can I? You can after I introduce you Okay, this is Jeanette She's one of the curious giraffes And she likes to ask questions and sing And she likes to watch and listen too But she also loves to talk and sing And that's George Hi, George George is a little quieter He loves watching and learning too And he loves being up high And watching what's happening But he's a little quieter But we are welcoming everybody on our show So let's find out who's here today What's your name? Mino Everybody say hi, Milo Hi, Milo And what's your name? Joelle Hi, Joelle And what's your name? Emily Hi, Emily And what's your name? Julia Hi, Julia And what's your name? Claire Hi, Claire And what's your name? Dona Hi, Dona Great, so now we know who everybody is And Dona, would you like to hold Jeanette? Sure And you want to help her pay attention And sing the songs too So our first song always tells us What our show is about It's called the curious giraffe song And it always asks new questions So we're going to use sign language on the chorus And let's practice it Share is you share with others Some for others, some for yourself Share one big sky Share one big sky Give the world a big high five Yeah, we're different and we know it But we still get along We can all share and we can all care We're different, but we all belong And Dona, if your hand gets warm in that puppet You can take it off and let her rest But if you like wearing it You can keep it on, okay? Here we go Giraffe looked over an eagle and said Why was I born to walk? Why were you born to fly? Eagle just shrugged and gave a high five Hey, we all share one big sky Oh, yeah Share one big sky Give the world a big high five Yeah, we're different and we know it But we all get along Cause we can all share and we can all care We're different, but we all belong Very nice Now here's the verse that we're gonna work on today Giraffe looked over at the singers and said How do you learn the music and the words to all those songs? The singers just shrugged We just sing along underneath this one big sky Oh, yeah Share one big sky Share one big sky Give the world a big high five Yeah, we're different and we know it But we all get along Cause we can all share and we can all care We're different, but we all belong Awesome I am so happy to have our new crew singing along And the kind of songs that I wanted to focus on today One of the ways that I remember songs and words I'm telling a story And if it makes sense, what follows the other? So I have some songs today that tell true stories Sometimes stories are true What's another word for true? They are a... It's a fact It's a fact Or make-believe can be fiction Some people call it fiction Okay, but this is true So every time we get to the last line of a verse We sing that same line again Listen carefully and you'll be able to sing it For those who are readers When you see this underline part That's what we sing twice And otherwise just you can relax And listen and enjoy the true story And here we go I heard there was an astronaut Way out there in space Living on the space station A very special place And in this great wide universe Was one thing that she craved Vermont maple syrup on her food Would sure taste great Vermont maple syrup on her food Would sure taste great Meanwhile back on Earth Papa said to mama Could you make a new design Instead of jugs and bottles Work a little at a time Like ketchup and like mustard So none will go to waste So they made the special bottle That would find its way to space They made the special bottle That would find its way to space Cause pouring is impossible When there's no gravity There is no force to pull it down It will not flow out free But with their special bottle When they give a little squeeze Syrup comes right out And sticks right to their food with ease Syrup comes right out And sticks right to the food with ease Yes, maple syrup's precious On the air and on the ground Mama liked the new design And spread the news around Just squirt the right amount And if you want a little more And none of it is wasted Like it is when you just pour And none of it is wasted Like it is when you just pour And here's the end of the story So now when there are astronauts Way out there in space Living on the space station They have a special place That holds their special bottle With a special kind of tape And they squeeze a little syrup When it's syrup that they crave They squeeze a little syrup When it's syrup that they crave That song had so many words But you hung in there Now where did that story happen? Let's clear where do you think? In space? In space because it says On the space station Somebody's living on the space station Floating out in space Very good And so what happened in that story? Anybody remember what happened? Donate? There's no gravity There's no gravity What is gravity? I'm gonna... It's something that keeps us down on the ground Sort of this force You can't see it but it holds us down So there wasn't gravity in space So... But what happened on Earth? Anybody remember what happened on Earth? Go ahead, Julia They made the maple syrup They make the maple syrup on Earth And the astronaut is way up there in space Saying I just want to taste some maple syrup How many people here have tasted maple syrup? Some of you have Some of you have not How many people here would like to taste some maple syrup? Would you like to try it? Because I have a surprise for you I always will have a surprise Sometimes it will come at the beginning of the show Sometimes it will come in the middle And sometimes it will come in the end But I have that special bottle that they made When I was growing up They only had syrup in jugs and bottles And you tried to pour And always too much came out So...  I'll see if I can be a little more careful I thought it would come out easier That's okay, good Okay What's special about this story Is the mama and the papa in this story The papa is my son And the mama is his wife Who works for the maple syrup company in Vermont That's okay, go ahead Get it into your mouth Oh, that's a great question But no, we're gonna save the rest, okay But you liked it so much That you would like some more Where did you get that maple syrup? I got it at the store But I also get it from my son's family And that's a true story There are astronauts out in space now Who can have maple syrup Because they have it in the special bottle So I wrote a song because that was fun Okay We have some other That is a true story song But I have a different one to surprise you There's a different thing in there So let's see what else is behind here Sit back to a name so that Claire can see Can you sit back flat So everyone can see Oh, okay I'm gonna let you see But we're going to act out a true story And then sing a song about it Once upon a time My brother Live far away And he said to the family Would you please come and visit me We have some really fun things to do in Colorado Will you come and visit This is going to be a pretend boat And George said We want to take you boating On a really fast river Okay, everybody climb into the boat And he took us to a really fast river And The people at the river said We want you to have a good time But for safety I'm gonna just show this I don't have six of these Okay, but I will let Doné wear this one But in real life Every single person got a life jacket Right? And they also said You also need a safety helmet No, you've already got the life jacket Who else would like to model the Okay, yeah Julie, you've had a lot of turns Can I let Milo Milo, can you put that on Okay, no, I'm gonna give somebody else a paddle Okay, how about the ones in the back We'll have a paddle on this side You two can share it How about two of you can hold And then Joelle, you and Julia Can hold that one Okay What did you think might happen What did you say, Milo? I'm gonna flip this around I think it might be more comfortable the other way Maybe you're right You had it right Go ahead And I can sing the whole song Oh, good Me too Okay, so let's sing the song And we'll talk about what happens Okay, Doné What? I want you to be careful To stay in the boat And we'll hear the whole story And then we'll act it out Okay, so just here we go In 1993 We Colorado went to sea You're riding with the family We went whitewater rafting Paddle bump and bink It's easier than you might think You can't wash down into the drink When you're whitewater rafting The guides were fun The guides prepared They took us out with smiles and cheers Knowing more than we did there About whitewater rafting Everybody can say paddle paddle bump and bink Paddle paddle bump and bink It's easier than you might think You can't wash down into the drink When you're whitewater rafting Then we felt quite confident From boat to boat Our splashes went Pretend to splash each other To soak each other was our intent Went out whitewater rafting Okay, pretend to paddle now If you don't have one, you can pretend Paddle paddle bump and bink It's easier than you might think You can't wash down into the drink When you're whitewater rafting Then before our very eyes Diane washed out right up in the side She had a suddenly wetter ride Diane was whitewater surfing Paddle paddle bump and bink It's easier than you might think You can't wash down into the drink When you're whitewater rafting Diane was wet, Diane was cold She turned her feet as she was cold Daddy and Mary bus were laughing So sing in kind of a worried voice now It's easier than you might think You can't wash down into the drink When you're whitewater rafting Then the guides pulled her back in We all began to breathe again And cried someone really sudden Have you ever cried when you're happy? That's how we felt, we were so happy You're okay This one's whitewater rafting Last time we're happy again, here we go Paddle bump and bink It's easier than you might think To get washed out into the drink When you're whitewater rafting Alright, so rest your paddles Diane, I want to explain to you I've seen that picture I've seen that picture You've seen that in the songbook We have a songbook that has this in it And it says, Diane was wet, Diane was cold She turned her feet as she'd been told Now, I think that needs explaining So, okay, you're gonna pretend to be Diane No, but I know what Okay, would anybody like to?  Can you call to her?  You're okay! Great! All right, will you come back to your seats? Over here Let's take off the life jacket, take off the helmet Okay? Yeah, set the pad Oh, here, I'll take them, yeah Okay? Okay, but you're gonna pretend You're back here in the studio That was good pretending, everybody Okay, scoot back to where you were Scoot, scoot, scoot, scoot, scoot, scoot All right, but here's the question Oh, did you have a comment? What did you want to say? My parents Great, and did everything go okay? My dad fell in Oh, he did? Yeah Like in my family And how did he get rescued? Do you know? No Did somebody pull him back out? I think so Okay, all right, so that's very interesting I'm wondering what kind of things Do you like to do in the summertime? Let's take turns, don't they? What do you like to do?   Okay What other fun things do you like to do when you have free time? Yes, Julie Do you like to go out and play? And how about you? What do you do when you go out to play? Well, I have a park that I can walk to So I can play there Being in the park, yes Milo What do you like to do for fun?  That's it, great Thank you And I also can walk to my park Okay, well I'm going to say Most of us walk with someone And Jeanette is letting me know That she can hear in her inner ear That George wants us to see something Yes, Emily, would you open that pouch? It says George is back He wants to tell us something And this is his way of sharing with us Now, she can keep it for a minute Do you know how to read? Would you like to read in a strong, clear voice? Milo, turn again So remember, your audience is over this way That's it Okay, now, what does that say at the top? Here are some other good water safety tips Oh, so he's back to thinking about the water Like our boating adventure Okay, some water safety tips You're going to listen carefully Because you're each going to have a job to do Listen carefully and say it after her Go ahead Always put on plenty of sunscreen Before you go outside Okay, always put on plenty of sunscreen Who would like to remember that fact?  Swim with a buddy and always have an adult to watch you Who would like to remember that fact?  To swim Swim with a buddy and make sure grownups watch you And make sure grownups are with you Okay, that's another one Don't push or jump on others You could accidentally hurt someone or yourself Okay, who wants to hold on to that one? Dona, can you hold up three fingers Because yours is number three And say, don't jump or push on others Don't jump or push on others You could accidentally hurt them You can accidentally hurt them Okay, that's a good safety rule What else?  Okay, so you hold up four fingers Because yours is the fourth one Okay, one more Drink plenty of water and fluids When you're outside swimming and playing So you don't become date That's a hard word Dehydrated Dehydrated Awesome, dehydrated What does dehydrated mean? Oh my goodness, such smart kids All right, Claire, what do you think it means? It means if you haven't had enough water Uh-huh And what happens with your body If it doesn't have enough water? Can't really do it It's not really exercised Or you can't really do it You get tired, don't you? You feel your energy go Okay, who wants to remember Drink enough water? There you go Okay, so you hold up five Okay, number one Hold up number one Let's all do it together Do you remember what your idea was? Always put on Sunscreen Awesome, everybody say that Always put on sunscreen Okay, number two We'll have the second one Okay, what was it? Always swim with the body And make sure grown up is watching you Everybody say that Always swim with the body And make sure grown up is watching you Okay, number three I forget Okay, don't I? Who can help don't I? Do you remember Julia? What number? Oh, you're looking over That's fine What was it?  Yeah, I was fine Oh good I can touch, so Okay I was okay You were okay that time Number four Yes Stop swimming When a storm comes If you hear or see a storm coming Get out of the water I really pay attention to And number five Joelle, what was that? Drink enough water Drink enough water Everybody say, drink enough water Drink enough water Okay, we're going to do one more song And it's about how we can help us Each other to have a good and safe summer So let's see Okay, can I help, can I help You put some sunscreen on All right, here it goes This kind of song has lots of words That are the same over and over So it's not so hard to sing Okay, can I help, can I help You put some sunscreen on Okay, can I help, can I help You put some sunscreen on Okay, can I help, can I help You put some sunscreen on I'll do what I can Just like a friend I'll help you out Just like a friend or your family person can say Yes, you can help, you can help You put some sunscreen on Yes, you can help, you can help You put some sunscreen on Yes, you can help, you can help You put some sunscreen on I sure like your help When you offer yourself Can I help you out How about can I help you Get some water now, okay Okay, can I help You get some water You get some water now Can I help, can I help You get some water now I'll do what I can Just like a friend Can I help you out Oh yes, yes, you can help You can help me get some water now You can help me get some water Help me get some water now I sure like your help When you offer yourself Thanks for helping out I can say thank you Curious Crew for helping out today It's time for us to sing our closing song So we're going to stand up and join hands Stand up tall like a giraffe We're taller than a giraffe It's okay, I'll put it here Are you taller than that giraffe? Yeah Yes, but if we said a real giraffe here Who do you think would be taller? The giraffe Let's stretch out, join hands We have opened our eyes and opened our hearts and stretched our minds and had a really good time So we're going to sing to our audience Keep singing, keep looking up Keep asking questions and never give up Here we go Keep singing, keep looking up Keep asking questions and never give up Keep singing, keep looking up Keep asking questions and never give up Bye, wave goodbye to our friends Bye


Hello. Okay, I think time is up. So, when we start, welcome everybody. My name is Rastis Kassava. I'm from the Panther and Tech company and today I'll be presenting something about network for monitoring in Kubernetes using the ContiVP PC and the Elastic Stack. Before I begin, something about me. I'm a staff engineer at Panther and Tech. We are doing some software solutions mostly for the networking industry. Previously, I was personally focused mostly on network imageability protocols using NetCon blank, currently working on cognitive-related projects. And I have contributions to several open source projects such as Cisripo and three that I'll be mentioning throughout this talk, FDRO, mostly the Go VPP SAP project, Ligato and ContiVPP. Okay, let me start with some motivation. Why do we actually need network monitoring in our Kubernetes clusters? Well, at the very minimum, you would at least need to be alerted and notified whenever there is some issue in your cluster. I mean, networking is a related issue. There might be some factor issue which would cause that one of your notes does not work or just congestion, packet drop, et cetera. Also, you want to monitor your cluster in order to identify networking bottlenecks. You need a large-scale deployment with many ports throughout many nodes. You want to deploy them in a way that the traffic is distributed according to the cluster. Of course, another motivation could be detection of malicious activities or attacks and their investigation if possible. And the fourth motivation that is interesting for me is the deployments of CNFs, cloud native network functions, which is network functions deployed as a set of microservices, let's say, router or some net or firewall running as a port or as a chain of ports. Okay, now what are the current options for some network monitoring in Kubernetes? It's pretty much metrics. I'm using the CNFs, expose some parameters metrics. Some of them make sure you do not export the most interesting data, which would be packet counters or bad counters on individual port interfaces. Some of them export just some internal state and error rate, et cetera. But for instance, the one, the CNF that I'll be talking about, the CNTVPP exports quite nice metrics. I'll show how it looks. Then you can rely on some service mesh in case that you have service mesh solution running in your cluster. But that would give you pretty much the view on the application layer. Sometimes you need to see what's happening on lower networking layers as well. Then you can do your own metrics. You can monitor network interfaces in individual ports, new spaces, and process them. But the most important thing that I wanted to mention is that metrics are usually not enough. For metrics, as you can see on this slide, which is a CNTVPP CNI deployment, which exports the parameters metrics for each port interface. For metrics, you can spot some issue. You can, for instance, see that on the top graph, we have some spying in error drop. You can get an alert that something is happening in your network, but you don't really know what is happening. When you get the alert, you can go to the alert, explore what's happening.  Maybe it was an attack. You don't know. Okay. I'm actually showing the parameters, exported metrics of CNTVPP CNI shown in Grafano. As I said, for each port, you can see, for instance, what was the outgoing incoming traffic rate. You can filter those on the pod names, et cetera. So these are metrics. But if I said that metrics may not be enough, then what we can do in order to get some better visibility into our network? Well, in traditional network, the networks you would use the protocols such as NetFlow or IPfix, which are, I think, well known in the networking industry. The NetFlow or IPfix protocol work based on three components in your network. You'd have FlowExporter, which exports some information about each network flow that it sees. And the network flow is invariant and double identifying the individual network connection, which consists of source and destination IPs, protocol type of service and ports, of course, data and packet counters and timestamp. So in a traditional network, the FlowExporter would be either outer or switch or a specialized hardware probe. The FlowCollector would be some software which is responsible for collecting all the flow records that it gets from all the FlowExporters. And then you would have some analysis tool, which pretty much analyzes all the data received and stored by the collector. Okay, in Kubernetes, we can actually use the same principles. We'll just use different components as our FlowCollectors, Exporters and analysis tools. So in Kubernetes, our FlowExporter may be a CNI plugin, because the CNI plugin is actually our router switch, which forwards all the traffic between the ports on the same node and between the nodes. You cannot actually explore the flows on the routers or switches that would interconnect your nodes, because the traffic between the nodes is actually usually encrypted or it's encapsulated in some tunnel. So that's another reason why the CNI would be the right component for acting as a FlowExporter. So the CNI for exporting the flows. Now what we can use as FlowCollector and the storage and analysis tool, since we are in the cloud-nity world, we could use, for instance, the ElecStack, which stands for three open-source components that go together and create a world infrastructure together. One is the WorkStash, the other one is Elasticsearch and the third is Kibana. So the WorkStash can act as a FlowCollector. It already supports the processing of IPfix and NetFlow information. The Elasticsearch we can use for two things pretty much. That's the storage and it can act as a search engine for all the stored flows. Elasticsearch is very good at horizontal scaling, so we don't have to be worried about the scaling issues, because if one Elasticsearch instance is not enough, we can scale it horizontally into cluster. And for the analysis, we can use Kibana, which would pretty much be our UI that allows us to search in our FlowStorage. For the pull-off concept that I'll show in a second, I used one of the CNIs that are available. The CNI is called ContiVPP. The CNI is really focused on two things. One is speed and redundancy, because it runs an FDI or VPP instance on each node. VPP is a very fast data plane in the user space, which its name or shortcut comes from vector packet processing, which means that instead of processing the packets one by one, it tries to process multiple packets in one vector at once. That's why it's very fast. Also, it relies on DPDK for accessing the NIC on the node. And it also supports an interface called MIMIF, a memory interface which is able to forward the packet between the VPP instance and the port through shared memory. To use the MIMIFs, you need to have a special application running in the port, either another VPP instance or some application that would use the MIMIF client library. So by default, you get the tab interfaces between the VPP and the port, but in case that you would need high performance, for instance, for CNFs, deployments, you can use MIMIFs. Well, that's actually the second aim of the ContiVPP CNI. It's really aimed for the cloud-mating network function deployments because it supports the memory interfaces. It is able to connect multiple network interfaces towards the ports, and it already supports some simple service chaining between those secondary interfaces. And for this demonstration, the best thing is that VPP already supports IPvx, so it pretty much just needs to be enabled on all the interfaces that go towards the ports. Okay, this shows how this can be all integrated together in case that we wanted to upstream this IPvx support to the CNI. So pretty much, you need to write a ContiVPP IPvx plugin, which would hook to the port and delete irons and enable IPvx on the port interface on VPP. The way how ContiVPP does it, it is, of course, written in Go as, I think, all the CNIs, but ContiVPP internally uses the Regato VPP agent to program VPP. Regato IO and its VPP agent is an very interesting project, especially if you are interested in CNFs. It pretty much provides production-ready CNF that can be just deployed and configured. It contains the core container which, or it provides the core container which contains MVP in it plus its management agent, which provides several cognitive, more bound API ways of programming it, such as GRPC, REST, ATCD, etc. And ContiVPP uses it as an internal dependency to program VPP. And, of course, the Regato agent then calls binary APIs, which program the VPP instance. Okay, so once we have VPP acting as a research between the ports, thanks to the ContiVPP CNI, we will enable the IPvx on each of the pod interfaces. We need to deploy the lockstash Elastic Surgeon Kibana. For this, we can actually use an existing project called ElastiFlow, which is really ready to use out-based IPvx collector and analyzer solution that we just need to run. For this demonstration, I just packaged that into Docker containers where I've wrote the deployment dianofiles for Kubernetes, and all these three components run as spots in my Kubernetes cluster. The VPP instance is then configured with an IP address of the lockstash pot where it sends all the full information. Yeah, this shows pretty much the result, but I'll try to show it to life if I manage that with one hand. So, this is how you can see the flows in your cluster in Kibana. As I said, the flows were exported by VPP, sent to the lockstash, which saved them in Elastic Search, and Kibana just accesses those stored data in Elastic Search. These dashboards come with the ElastiFlow solution, but of course, you can write your own dashboards if this is not enough, or you want it to see something more specific for your deployment. So, let me see if I can show you this in my browser, or let me start in a console. So, this is my cluster running on my laptop. I have already deployed Elastic Search lockstash in Kibana. They are running as spots in here. And apart from them, I have the content of VPP CNI running, which you can know by seeing this content VPP, this content V-switch port, which is actually the V-switch which processes all the packets between the ports. I can access the VPP console, which allows you to type some debugging commands. I can show you the individual interfaces that are going towards the ports. You can see there is a lot of packets coming to them. Another interesting fact may be our full ports. Yeah, it seems that I have somehow managed to disable it in the meantime. But never mind. All the flows were actually exported into Elastic Search before I disabled it. I can show you one more thing that I have not mentioned. The content VPP CNI also provides the Kube Proxy functionality on VPP. So in case that you have content VPP deployed in your cluster, the net that usually happens between the ports does not happen using Kube Proxy, but using the VPP, which we can see here showing not for static mappings. So these are the materials programmed on the VPP, which do all the netting for the Kubernetes services deployed in my cluster. On the bottom, you can see the entries that handle the Kube DNS service. So the Kube DNS cluster IP is load balanced to two local IPs, which are the IPs of the Kube DNS ports. Okay, so let me go back to Kibana, which accesses the flows stored in the Elastic Search. Just briefly show you how does it look like and what you can see. So this is the top end rule. In my cluster, I didn't have any specific application running. Pretty much it's just those ports that you have seen. So the Elk ports and the Core DNS ports. But, yeah, you have the ability to see on the graph, which are the most active services you can filter out by service ports, for instance. So if I was interested in HTTPS, I would see just Kube DNS communication. Another rule could be this nice rule on the flows in the cluster, where I can see which port communicates with which ones. So for instance, this one, this red one was Kibana accessing the Elastic Search port. And this yellow was Elastic Flow or Elxtash, sending the traffic into the Elastic Search. There is also a GUIP rule in case that I had a cluster that would be accessible from outside, outside from where my clients are coming. And we can also dig into some traffic details for instance, if I was interested in clients ordered by packets per second or bits per second. Again, you could filter out by services, server IPs or server names, and the same for the client. And the last one, which I would show is an actual flow records, which are stored in the Elastic Search. So this is basically the raw data that is in the Elastic Search and from which all the dashboards are generated. So let me open one. Okay, so this is the raw flow data as Elastic Search received from Elxtash. So all the information about what was the client IP address also translated to its username, thanks to DNS working in our cluster. The same for the destination, which was the server IP. And some more information about the TCP that was going on to that flow and the port numbers, flags, etc. Of course, timestamps and byte rate. Okay, now let me go back to my presentation. Yeah, so what we did see was just a single node cluster with one Elastic and Elastic instances. For real world deployment, as I said, you usually want clustered deployment of Elastic. And ideally, you would want to have one Elasticized instance running on each node to limit the traffic between the VPP and the Elastic because in case that you have too many connections in your cluster, all the flow information coming from VPP to Elastic that can be quite heavy load. Of course, we don't have to scale Kibana because that's just an UI accessing the Elastic search. I was also talking about the MIMI interface that VPP supports. To recap, it is a special type of interface which allows you to forward the packet between the VPP, which runs in the user space, to a port, bypassing the kernel through the shared memory. But for that, you need to have an application that is MIMI-F-aware, which means that the application needs to use the MIMI-F library. We can actually use that to build more lightweight flow collector than the lockstages. We could, for instance, use the Cloudflare's GoFlow project and just integrate it with the MIMI-F library in Go. And in that case, all the flows that are coming from VPP to our flow collector may go through shared memory. Yeah, and that would be it from my side. I think I have a few minutes left, so I would maybe mention one more thing that is important from the point of view of CNFs, called native network functions. And that is that ContiVPP supports ports with multiple interfaces, which can be deployed as follows. So pretty much in the port definition, you would just tell ContiVPP that you are requesting an additional interface, and you give it the name of the interface, the type of the interface, which is stop in this case, and the network, which is stop in this case, which means not connected to the default port network. This is how we request additional interface. And what's important is that the IPfix can be enabled on those interfaces as well. Also, in case you wanted to deploy MIMI-F over CNF, it would look like this. Again, you would define that you want the custom interface, give it the name. In this case, you would give it the type MIMI-F, and that's it. ContiVPP would connect additional interface and enable IPfix on that interface as well. That's very important from the point of view of cloud native network functions, that this can work on all the interfaces inside of the port. And if I'm talking about CNFs, I would just show you maybe one more thing. So, as I have told you, those secondary interfaces in this particular case would be in stop network, which means they wouldn't be connected anywhere. You can define a service function chain, which would actually interconnect the port with an additional interface, with another port, with an additional interface, in this case on L2 level, which may be useful for various networking deployments. Okay, I think that's it. We have five minutes, so if you have any questions, feel free to ask. I'll give you, Mike. I have two questions. One is, I see the ContiVPP hasn't updated for about one year. Do you have planes that or lose maps for the ContiVPP? ContiVPP was not updated? Yeah, yeah, yeah. You can see from the GitHub. The projector seems stopped update. Yeah, I need to mention one thing. When we are talking about ContiVPP, we need to be sure to look at this repository, which is really ContiVPP, because there are many Conti repositories, which pretty much contain the old ContiNet plug-in CNI. That one is not supported anymore, but ContiVPP is still being developed. So there are pretty much two different CNIs. There was old Conti. The development on that one has stopped, but there is ContiVPP, which now uses the same name, but is completely different, and it is based on the VPP instances running on each node, and that's what I was talking about. And as you can see, that one is like two updated four days ago. Yeah, yeah. Another question is, I see you have a record in low-stash for each packet. So? You have a record in low-stash for each packet? No, no, no, not in each packet. And what's the positive for recording in low-stash? Yeah, so the way how IPv6 or NetFlow protocols work is that you are not saving each one packet. You are saving only information about each network flow. So you have a TCP connection which transmits two gigabytes to it. You would have just one record of a few bytes telling what was the client IP, server IP, timestamp, sports, data bytes that flew through the connection, but that's it. No, each packet, only flow information. And so what's the period for your update to the low-stash? The intervals, yeah. Yeah, so. Yes, it's configurable. Yeah, yeah. So what I've shown is very just a proof of concept. It is not yet upstreamed into Conte VPP. It is all configurable on VPP site. So you can configure how fast you want to send the flows from VPP into the flow collector. Okay, thank you. What's the difference or relationship between Conte VPP and Conte VPP? Only the name. And maybe some of the team members of all Conte, where are also the members of the Conte VPP team, but from the CNI point of view, only the name is the same. Conte VPP is completely new CNI, which just uses the name. Hi. I have actually two questions. First, have you any numbers on performance drawbacks you receive with your stuff? And the second, how do you compare yourself to with something like Weave Scope? In this case, you mean the Conte VPP CNI performance number or the IP fix? If I just implement, okay, forget, let's keep blockstash and elastic search aside, just installing your IP fix stuff. How big would be the performance impact just roughly? Yeah, so we are comparing just the CNIs compared to Cardico or whatever else. If you use tap interfaces between the VPP and the pot, which are there by default, because the application just uses sockets to communicate, the performance is outside similar, if you just go pot to pot, not through service. There is a difference. There is a better scalability with many Kubernetes services. You may know if you deploy thousands of Kubernetes services, which would program as IP table rules, that would be a lot of overhead on the kernel. And it would take a lot of CPU cycles just to handle all the not entries. This is where VPP shine, because there is almost no performance drawback on VPP. And then if you used the MMI interfaces, which as I said, meet a special type of application, then we are talking about eight mega packets per second between the pot and the V and the V switch. I don't think we have anything upstream in ComTVPP that will be available, but there is a FDIO VPP CCID test results, which actually tests what is in our field as we are doing. And there is one V switch running on the node, several containers interconnected through MIMEF. And they have numbers for several different chains between the containers. We switch one CNF and back to V switch, and then we switch CNF, CNF, CNF, back to V switch, et cetera. That's available on FDIO website. Sorry, I think we need to finish, but we can talk afterwards. I can show you something. Thank you.


How do I become an amazing student on my clinical rotations? In this video guys, I'm not going to only share with you how to become an honor student or how to get your attending to like you. I've done that in the past, but instead I'm going to give you a simple system on how to go from start to finish on any rotation and simply 10x your results and become a freakishly awesome clinical student and you're going to be hard to ignore. Now that sounds attractive, I'm going to give you that system after this intro. Alright guys, what is going on? Luxury of an MD journey helping you succeed on your medical journey with less stress. If you're new to this channel and you want to learn how to not only survive on your medical journey but thrive then consider giving this video a like first of all and then subscribe to this channel and join the community. You'll also be helping me get to my impossible goal for the year with just 25,000 subscribers so go ahead and subscribe if you haven't already. But again in this video we are going to talk about how to 10x your results as a clinical student, not just how to get honors, not how to do well on your shelf exam. If you follow the steps in this video you're going to be able to do all of those but also take yourself to a completely different level and by the end of your clinical rotations and your third year you're going to be leaving most of your peers in the dust and if that sounds attractive let's get into the system. So the first part guys is on a daily level you need to be creating a list of need to know. Sounds weird but as we're creating a to-do list as we're taking care of our patients there are going to be things that were taught things that come up that just doesn't make sense right. My attending for example maybe teaching me about an EKG and I may be nodding along but half the stuff doesn't even seem like English it doesn't make sense so what you can do is just have a way I usually have a sticky note on the bottom of my patients charts and I just write everything that I need to look up that night. Anything that didn't make sense an acronym that I don't know what it stands for a medication that I don't really understand what it's used for anything a disease when you first start a rotation you're going to have a huge list of need to know it makes sense you still are mastering the basics but every single day your only goal is aside from whatever studying you're giving yourself is before I go to bed I'm going to be looking up every single thing on here some things are gonna be very quick you're gonna be able to google a term really quickly and then realize oh that's what that stood for I understand that anyways or you may just have to watch a quick video and then understand the concept but make sure it's a goal for you at the start of a rotation for you to create a list of need to know and every night get through that list what you'll find guys is as you progress day in and day out towards your end of your rotation you're going to master the basics pretty quickly your classmates are still going to be working on the basics because they're not keeping a list of what they want to look at instead they're relying on other resources they're relying on like you world and they hope it shows up on their practice questions that's a fine technique for doing decent on the shelf exam but if you're proactive on answering the questions that you're weak at you're going to get to the advanced topics much quicker and a couple benefits come out of it one you're just going to look comfortable on the rotation your attending says something your resident says something it feels natural because you looked it up and you don't have that gap in your knowledge anymore your classmates may honestly still made they do that nod that we always do but really not understand what the topic is but you're going to be able to use that topic and apply it to your patient people are going to be able to see without you even bragging that you know what you're doing you know what you're talking about so that comfort level is going to come out if you keep a list of need to know and cross it off on a daily basis the second thing that comes off is you do better on your shelf exam and here's why normally we study we do practice questions and then we try to review it the last couple of weeks before the exam doing this technique guys you tend to remember things much better you know those questions that show up in your self exam the ones where you've had a patient with that disease or you've treated somebody with that medication those are like you know low hanging fruits easy money question that you love to see the more you start doing a list of need to know you're basically going to be giving yourself more opportunities to have low hanging fruits and easy money questions so i found that you know whenever i would do it even if my patient didn't have a specific disease if an attending mention disease i would just write it down quickly look it up and it usually sometimes that would show up on the exam and i don't think i would have learned it otherwise i wouldn't have learned it through you world or another practice question or review book but i learned it just because i had to look it up and i felt comfortable it's probably a hard question for most of my peers but i had seen it you know in one sense or another and so it helped me do well on those shelf exams so just keeping a list of done keeps you more comfortable for those questions that most people are put on their toes for so make sure you do the list of done if you want to do well on your shelf exam now the final bit that comes with keeping a list of done and basically working on your gaps of knowledge from the very start is every rotation that you go through guys you're going to have less and less um gaps you know even if you're on obi-gan rotation then you go into internal medicine and then you go to family and neuro all those are different but medicine still overlaps throughout many fields and so if you know how certain medications work in one patient population you're going to be able to apply similar principles in another there's going to be less for you to learn but if you're still trying to learn how to treat blood pressure when you're in internal medicine then re-learn it when you're on neurology you know that's just extra effort that you could have been using to master topics within those specific fields so as you go through your list of need to know and you start mastering things you're going to have less basic concepts to master on new rotations and you can move quicker to advanced topics you're going to be that student where everyone's like oh man he's so smart or he or she is so smart and they just know what they're doing you want to get to that point so i promise you guys if you create a list of needs to know cross it off on a daily basis by the end of your rotation you're going to be just on a different level and keep doing that over rotation over rotation that promise you you're going to just be able to 10x your results and that's what really you want because you want to become the best version of a clinician that you can possibly be so that's my simple system guys on how to become a 10x clinical student at the start create a list of things that you don't know look them up fill in those gaps and keep at it and you are going to become just much more comfortable with the material the variant you're just going to see how far you are compared to your classmates that's where you want to be right so hope you guys enjoyed this video if you did just comment down below let me know one thing you're going to plan to take away from this video or any questions you guys have about your clinical rotations honestly you could say hi i'm more than happy to just kind of communicate interact with you guys in the comment section so go ahead and comment down below with your comments if you did like this video make sure you give it a like subscribe to this channel and join the community help me get to that 25 000 this is where we are right now hopefully the slider shows up but with that being said guys thank you guys so much for watching and before i close off i quickly want to say if you want more help on your clinical rotations join the clinical guide which is one of my newest projects that i'm currently working on and you can get a link in the description where you can learn more about it as well as help me in the creation and get first dips when it comes out so go ahead and add your name to that link in the description but with that being said guys i'm going to stop babbling and i'll see you guys in the next video thank you so much for watching