What is Sylab? Sylab is an advanced computational environment. Sylab uses state of the art numerical computational engines such as lint pack, ice pack, law pack, ODE pack, DASIL and so on. It has a large number of built-in functions in C and FORTRAN. These are some of the examples. It has a built-in high level language. Sylab is to C is equal to C is to assembly. For example, if you need 100 lines in assembly and typically you would need about 10 lines in C. If you need 10 lines in C, in Sylab you can do it in one line. So, it is a high level language. It has several functions built-in using this high level language itself. So, it has in the back end things written in FORTRAN and C for high speed. For high programming efficiency, it also has high level language and it is available free. Check out sylab.org or sylab.in. What are the features? It is made up of three distinct parts. Interpreter, libraries of functions, Sylab procedures. These are using the interpreted language and FORTRAN and C routines. It has sophisticated data structures and Sylab can be downloaded from here from within IIT and it can also be downloaded from sylab.org. It is distributed in source code format also in the binary form for almost all machines. I will now explain briefly the usage of Sylab.  The answer is given by Sylab or in blue. So, that is a convention I have followed in these slides. I will actually do some of these things. So, 4 plus 6 plus 12. So, it says answer 22. Can you see this? Sorry, the letter is slightly small. I have written. So, until you gain confidence, I will do it in parallel. Afterwards, I will just rely on the slides. So, I have said a equals 4, b equals 6, c equals 12. So, it says a equals 4, c equals 12. What is happening? b is missing. Why is b missing? After b, I have put a semicolon. So, in Sylab, the convention is after semicolon, do not display it, which is important because you may be doing a loop doing lot of calculations. You do not want it to display the values, but if you want to display, just remove the semicolon, it will display it. So, this is a very useful feature. And of course, you can also say a plus b plus c. It will say answer is 22. A plus b plus c, answer is 22. What it says is that even though b is not displayed, it has stored. These are some of the useful commands. So, this we have already seen. So, if I say instead of, if I, what I have done here is, if you see here, I just said a plus b plus c, it puts the result in a variable, dummy variable called a and s, short form for answer and displays it and it overrides that. But I can also say d equals a plus b plus c. You will say d is 22. Then now, you have created a variable and put it there. So, which means that you have not typed any variable. It has happened automatically. Of course, if I put a semicolon, it will not display. Then I can always say, tell me what is d? For example, I can always say, what is d? You will say d is 22. So, it does not matter whether I used a semicolon or not in the previous step. This is the way to create formats. Do not have to worry about that. This is the, you can create pi by saying percent pi. You can create a list in many different ways. For example, you can say a equals 1 through 5. It will say, it will create a vector by name a, create the storage and put them there. I can also say a equals 1 intervals of 2 up to 9. So, I will say 1, 3, 5, 7, 9 and so on. Of course, it is also possible to do scalar vector arithmetic. For example, I can say a equals, I can also recall the previous command by using up arrow down arrow. So, let me use the up arrow. So, let me multiply this, multiply this by, it has done 1 times pi, 3 times pi and so on all the way up to 9 times pi. So, by the way, this underlying language was created by a mathematics professor, computer science person into numerical mathematics. He was part of the Lin-Pak, Ice-Pak projects. His name is Professor Cleve-Mowler. He was at New Mexico State University. With government money, he created this environment called MATLAB. The same environment and it was released as open source because the government money was used, NSF money was used. And so, as a computer science professor or as a mathematics professor, when he was teaching, he found that there was a big difference between the way a mathematics professor taught lectures in the class and the way did the programming. For example, you write A into X as a mathematics person. I want to multiply a matrix and a vector. I just type AX. Whereas, when I write it in computer, I have to define a structure called A, structure called B. I have to type it. I have to give storage. Then I have to multiply, keep track of all that. So, he said why should I do all of that? Can I create an environment that will do all of this? That is how this came up. So, that is why you see that many of these operations are overloaded because this percent in this case says vector scalar multiplication. Same star means if I just do 4 times 3, it will give me 12. So, you can see that several operations are overloaded on this. So, the logic is that it was created by a person in computer science who was teaching mathematics. He wanted to come up with a language to help people who do mathematics. That is the reason why this has come about. You can also, of course, you can of course, explicitly say all of this. You can say B equals 3, 5, 6, 9 and so on. You can explicitly create that. You can of course, do that using a list. So, for example, you can even do sin X. So, let us do that X equals 0 to 0.1 to 1 multiplied by percent pi. I will put a semicolon so that it does not display. Otherwise, it will go on, it will complain or it will ask, do you want to display everything? X, Y equals sin X. So, I am taking the sin of a vector. Put a semicolon again. I can even say plot 2D of, of course, this is little, it has rough edges, but if I make this, so I am going from 0 to 0 and increments of 0.1. So, let me just do this in 0 to, in increments of 0, 1, all the way up to 1 and then let us repeat this. Y, let me close this. Let me plot it again. You can see now it is absolutely smooth. And of course, you can access, you have a vector and you can access it by any component by specifying that number. And unlike C, the index starts from 1. So, for example, this is Y 1, Y 2, Y 3, Y 4, Y 5. So, if I ask for Y 5, it will show this. That is one difference you have to keep in mind. This is actually a very nice thing. Maybe I should not be showing this. Let us say A equals 1 through 5, B equals 1, 2, 2, 9 and then let me come here. Now D equals B of 1 is to 3 is to 5, 1, 0, 1. If I give this command, what will happen? B of not 1, 3, 5. Let me put B of 1, 2, 5. So, what will be the number? If I say that D will have, first number is what? What is the second number? 1, 1, 1. Any other answer? 1, 3, 5. 1, 5, 9. Yeah, Y 1, 5, 9. Yeah, so let us do this. If you look at this, yeah, that answer is correct. Because if you do this, look at this B of 1 is to 2 is to 5 means, it will give you 1, 5, 9. Because 1 is to 2 is to 5 is 1, 3, 5. So, what we are saying is apply this to B. So, take out the first component of B, put it here. Take out the third component of B, put it here. Take out the fifth component of this and put it here 1, 5, 9. That is why if I say B of D equals B of 1 is to 2 is to 5, 1, 0, 1. It will give me 1, 5, 9, 1, 0, 1. So, you can see that is why I said that if you require 10 lines in C, you can do it in one line to express the same idea. You do not have taken lot more time. You would have written loops and so on. Maybe you would have taken more than 10 lines. Just to give an idea of, so that is what I have done here. Then, of course, as I mentioned here, this is a vector scalar arithmetic. I have created this vector called A. A minus 2 means subtract from every element 2. Here, I am saying multiply every element by 2 and then subtract B corresponding entries. So, one can do all of this. So, it has lot of logical operators which are useful for you to write languages, programs. It also has if then else for while and so on. So, if I run this, so here is an example of a for loop. It just adds all of that and then gives the final weight as my weight. So, if I say what is my weight, it will say because it has added it 10 times. So, example of while. So, while something then do this action and then end. So, this is an example. You can construct your own examples. Do not have to spend time on that. This is, I want to spend some more time on vector operations.  So, then I ask this question, is A equal equal means? We are comparing. Is A equal to B? What will happen? Is it equal ever? Anywhere? So, it says false. Now, of course, I can say A greater than B. So, I can see that of course, A is this. A greater than B, you can see that from fifth element onwards it is true before whether it is false. So, you can actually make comparison of vectors which is very nice. In fact, you can always, you can also say here is my matrix. Tell me all the locations where the element is 0 in one go. You do not have to, otherwise you will have to go element by element, do a comparison and it will report. Here in one go you can go. So, what is the big deal? I have one slide to explain that. You can do transpose, extract sub matrix. You can order them in many different ways. You can do comparison, create a matrix of 0s, 1s, random numbers. Of course, you can define functions. So, create a function, write that and you say end function. These are arguments and then you invoke this argument, invokes this function by calling this function called each suite initial weight and delta and this fellow actually adds this and returns it as my weight. It is 62. So, you can write it, you can write actually complicated programs using functions and so on. I think we are almost at the end of the Sylab discussion. Let us go for vector computation. I will just explain what it is by actually doing it first, so that you will believe this. So, let us create this matrix. The command is, I think it is called timer. So, timer command initializes the timer and then keeps track of the time it takes since the previous command. So, let us do that. So, what I want to do is for, so let me just say a equals 1s of 10000 by 1. So, what does this generate? If I just hit a carriage written what will happen? So, we are creating a, let me just do that. It is a 10000 by 1 vector that consists of functions. I created that matrix. Then now what I will do is for i equals 1, 10000 B of i equals A of i plus A of i. Let me just add that. Put a semicolon and actually I made a mistake. I should say A equals not 1000, 10000, 1000, 10000. I put a, sorry Sylab is case sensitive. Here it is capital A, here I put small a. So, I have to be careful. So, let us put that. Capital A, capital A, let me call it B. So, what we will do is we will do this now. Timer, let us do this calculation. Timer, actually it is not clear. So, let me do it slightly bigger. What I will do is I will make it 100,000. I will make it 100,000 here also. I wanted to take a little bit of time. Is that ok? 100,000 is slightly on the higher side. Looks like it is still computing. It is done. Let us look at the timer. Now, what I will do is C of i, C equals A plus A. That is what I am doing. What is the number? 0.12. I can also see equal, equal B, right. Oops. It says false. Size C, size B. That is why it is false. So, we can say because B transpose says true. So, dimension was different. That is why it was complaining, but the calculation was the same. If I compare it says it is the same. But you can see that when I use the vector operation, it worked immediately. Whereas, and if you do, if you put a loop or something, it has to do each calculation separately. And because it is an interpreted language, it takes a lot of time. So, you are encouraged to use vector level type of thing. It is a very useful thing. I think I am ending Sylab thing here. Here, of course, I had done 10000. It gave me 0.31 and 0.03. When we made it bigger, it is even the difference was even greater. And one way to start with Sylab is to use the demos. For example, you can introduction to Sylab. There is something called graphics. 2D, 3D plots. Let me show you one example. For example, this is the way to create a 2D plot. Only these two three lines help create a sign function. We can create 3D. Let me close this. It is a 3D plot. Just one line. And then we can do subplot. It has plotted 4 different plots, subplots on the same screen. So, actually it has a very nice capability. And it is sufficient for most applications. In fact, our computer center sometime back made a policy decision that we would not buy MATLAB officially for the institute. Individual projects or individual departments have bought it later on. But it was proving to be very expensive. So, our computer center discontinued the purchase of MATLAB. And some of us said that Sylab is actually very good. We could just use that. And it is free. So, this is about Sylab. The problem with open source software is the documentation. People do not know how to use them. So, we are addressing this through one of our mission supported projects, which I will explain. By the way, if you have any questions, you can stop me anytime and ask questions. Otherwise, it could get boring. I have a question. Yeah. Like in MATLAB, we have many toolboxes. So, Sylab supports many toolboxes or what we should do for it. Yeah. So, Sylab does not have as many toolboxes as MATLAB. MATLAB is supported by a workforce of about 2,000 people. Sylab is an open source thing. It has about 23 full time employees. The only thing is it is an open source. It is always like Linux versus Windows. Windows is supported by Microsoft with its workforce, whereas Linux, nobody is supporting it. But then there are also lots of programmers around the world. So, if we start using it, we start developing toolboxes. So, the answer to your question is Sylab does not have as many toolboxes as MATLAB. But we should start doing this. You can think of it also as a service to the community and to our industry. It has a long ways to go. It turns out that for about 95 percent of the time, Sylab is good enough. If you look at for what purpose people use MATLAB, you would see that it is basic calculation, solving differential equations, plots, basic things. Supposing some company says that my production is dependent on MATLAB, if I do not use it, there will be a problem, then it makes sense for them to buy it because one day's loss could be in lakhs. But for people who do not need that, it is better to go for Sylab and obviously for people who for whose research MATLAB is indispensable, obviously you need MATLAB. But what may happen that in open source industry, like it happened with MySQL server, many programmers they have contributed to MySQL server, but after a period of maybe eight or nine years, MySQL got sold to Sun Microsystems for five billion dollars. Like we are contributing as a service to the community, but maybe after five, seven or ten years, when the Sylab toolbox will be good enough, so may at that time the Sylab will be sold out to some company like it is a MySQL server. Yeah, it is a good question. What if at some point it becomes commercial? So it depends on the copyright clause. That is a reason why this first people demand that it be delivered as open source. So Sylab is not only free, it is also open source. The moment you make it open source, you cannot go back. So that is not going to happen with Sylab. Supposing it is not open source, you contribute at some point they say I want to make it commercial. That can happen. It depends on how it is released. Sylab version five onwards has become false before that it was not. Good question. Any other question? You can ask later also. So spoken tutorial is one solution to address the documentation issues. So we are working on that. I will explain what this is. Spoken tutorial refers to explaining a computer based activity along with a live demonstration of it in parallel along with a running commentary. That means you can capture the screen. It will also capture your voice. And the running commentary can be in any language. This technology is known as screen cast. How many people know about screen cast? Anyone knows. To create such a tutorial, one needs normal PC and a headphone with audio input which will cost only about 100 rupees. The recording can be played back on a PC as a movie. Only a 10 rupee headphone is required to listen to it. I will now explain how this can be a mass movement. This can be a mass movement creating documentation for open source software. In this, I have recorded a college student. She was working with me. She studied in a college in Gujarat. Just listen to this. How can it be downloaded from the beginning? What are the system requirements? This talk gives a brief introduction to Scilab. At the end of this session, you will be able to learn the following. What is Scilab? Who has developed Scilab? And then of course, she talks about two-select active graphic window. So, what happens in the screen gets captured. This is made by a student from an engineering college in Gujarat. That means any normal person can create that. You do not have to be extraordinary to create this. This explains in English how to create a spoken tutorial. How to create one? Let us start. So, I am not sure whether you can hear this. So, we created this, normally it comes ok, if you are interested I can show it to you. Then we also created how to do that, how to dub this into other languages. In fact, we thought that we would also use this opportunity to convert this, so that people in other languages can also create. I am not sure whether this is going to come out, may be the same problem. This tutorial will explain how to dub a spoken tutorial or a movie clip from one language into another through a step by step process. All you need is a headset with an audio input or a stand alone microphone and speakers which can be attached to your computer. Windows Movie Maker, a component of Microsoft Windows is an editing software that is. Alright, so this explains how to do the dubbing. She has used Windows Movie Maker. So, we ran a competition to dub the first one into other languages. And mainly people from IIT Bombay participated in it, students, children of support staff, housewives and so on. And we created this in many languages. I will play some languages. So, in fact, I will play, if we have people in that, Assamese, we have anybody? Bengali, anyone? Ok, I want to play this. Let's try to move this. It's not sliding. It's got a Hindi. Let's try to move this. It's not sliding. It's got a Hindi. Ok, then Gujarati, somebody is here. Let's play that. Anyone from Kannada? Ok, this one is the most outstanding one. The one on Marathi. Let me play this. It turned out that she is also a dubbing artist. Ok, I will play this. Ok, I missed out on anything. There are some more, but I think this is, what I want to do is, I want to show you some of the things that we have made in latex. That's why I had to ask whether how many people used latex. So, here is a spoken tutorial on latex that I created. This one explains how to write letters using latex. The letters may be small to see on the screen, you know, for you at a distance, but if you see it on the PC, it comes out ok. Welcome to this tutorial on how to write letters using latex. You can see three windows. These correspond to the three distinct faces in typesetting through latex. Creation of source file, compilation to produce the PDF file and viewing it through a PDF reader. I am using the free PDF reader scheme in Mac OSX because it automatically loads the latest PDF file after every compilation. There are PDF browsers in Linux and also in Windows that have this capability. Slash today. We can prevent the automatic appearance of the date with an empty list as we do now. Compile. The data is gone. Suppose that we want to put our own date. Let us enter it with date first as follows. 2007 save compile got the date. This is the date on which this tutorial was created the first time. So, it is possible to generate lots of these. I have created in fact about 10 such tutorials that explain latex. One can actually go through this and figure out. So, this is done as a service to the open source effort that latex is a very good open source software for typesetting. So, similar things can be done for Sylab, similar things can be done for GCC, whatever open source thing that you have. And what is more interesting is it can be done in any language. So, I have some slides on that. If you have any questions, you can ask me. So, these spoken tutorials are technical term is screen cost. It is about 1 MB per minute. In one CD, you can pack more than 10 hours. In fact, the letter writing that you saw for I think it was about 12 minutes. One can actually see the size of that. So, it is actually 8 minute 19 second as it tells you in the bottom. And then if I look at the size of this, it is 7 MB. So, actually less than 1 MB per minute, which means that in one CD that has 660 MB, you can put more than 60 minutes of this spoken tutorial. In fact, you can put quite a bit more than 10 hours and it is only 10 rupees. So, it is actually lot cheaper than paper itself. And it also gives us very small bandwidth for streaming. For example, you can even stream through mobile phones and so on. And it is inexpensive to create. The infrastructure required to create is very small. As I mentioned earlier, running commentary can be dubbed into any other languages. The original content can be in not say here I talked about English to other languages, but it need not be. It can be in any language and people can dub it into other languages including English. So, which means that because of this inexpensive nature of this, almost anybody can create this. The beauty of this as far as open source software is concerned is the students can try this in parallel. For example, I can open latex, try it, listen to it, pass it, go and try it. If it does not work, go back and listen to it again. So, this is as if somebody is telling you and it has a complete capture of the whole session. So, the idea is, if you do this because it covers to, it can cover to all languages and so on, the public who is left out now will can also start contributing. So, this is where I would complete this discussion on spoken tutorials. You have any questions on this? Is it ok? Any ideas how we should take this forward? So, I am thinking of doing this 10 spoken tutorials on latex, 15 languages or 20 languages. See if you can fill that matrix and then just release it as open source. So, can we even people who are from schools and so on, it turns out that English reaches only about 10 percent of the public. About 90 percent of the public is left out because they are not touched by this software revolution. So, they can also start contributing, not only using it, but they should also create original work and then we can translate it, use it in other languages. Next, I will go to experiments. Remember I told you, so I have talked about talk to a teacher mission. Then I talked about open source software. Now, I will talk about hardware experiments. The robotics project has a microcontroller at mega 16 based. How many people have heard of this? This microcontroller, it is a popular one. So, it comes with the line sensor, speed sensor, different sensors. We can teach many courses using it. I will see if we can get the people who are running this to come and show that robot with you. You can share it with you. Documentation course material, etc. And it costs rupees 15,000, but it can be made available to interested colleges free of cost, funding from the mission. The key thing is that this money is also for training support and so on. So, these things are made available free of cost through this mission to all interested colleges. And we welcome your colleges to participate in this effort. This is led by Professor Kavi Arya of the Computer Science Department at IIT Bombay. We also have a project called virtual labs. The distance education through satellite, etc. do not cover laboratory. So, can we make available labs to people? So, the idea is to establish the labs at select locations. They enable these experiments, give internet access. And IIT Bombay is in the process of establishing about 10 experiments. These are some of the areas. In this, the student satellite project is something that you may be interested in. It is being done by our students, students who are in the aerospace engineering. And they are coordinating and students from various other departments are participating. Faculty members are actually not involved. Faculty members give only guidance. The work is done by students. And they are going around to different colleges trying to identify students who may be interested in participating. For example, it is possible for your college students to establish a ground station for this satellite. This is going to be, we have signed an MOU with ISRO recently. Within one year, this satellite is going to be launched. It is in advanced stages of design. It is going to be launched. Then you will have the students who are part of this can receive the data at ground stations. It turns out that the ground station is not very expensive to create. It costs only 25,000 rupees to create. And these students say that they learnt a lot by doing this satellite design as compared to actually doing some courses.  So I would welcome all of you to go back and tell your students, in case you have a hobby club, you have robotics club or things like that, that they can participate in this. While talking about the hardware, I want to talk about this package, one of the projects that we have proposed through this virtual labs. There is a suite of device drivers in Linux called Comedy. Now it has interface for more than 100 A2D cards. So almost all popular A2D cards, it has a device driver, which means you can drive them through Linux. So we are thinking of setting up a rack full of these cards. Buy all these cards, assemble them, give power supply from behind, standard power supply and web enable these on the front end. So give the standard inputs. Now GUI support is available through RTAI lab of Sylab. So now it is web enabled. So the students from different colleges, not only students even working professionals, can actually access each of these cards. Try them out. If they are happy, download the device drivers, download the educational material and they start using. Repeat this also for popular microcontrollers. I was recently in a college called Kamban College in Thiruvannamalai, where 40 student projects using Linux, they were using Ubuntu and Arduino board were displayed. 40 student projects, each student project had about 5 people. There was a total of about 200 people, 200 students. In fact, there was a hall. I asked, how many of you know Linux? All of them raised their hand. They said, we all are doing that project. 400 into 5, 200 people are sitting, those students. And they displayed all those projects. I was very happy to see that. For example, some students had interfaced Linux with their mobile phone. You press the phone, you press one of the buttons, then it is equivalent to right click. You press another button, it starts scrolling. So in other words, they had used this mobile phone as a remote for the Linux program. Another student project was, they actually spoke using the mobile phone. And this fellow computer worked as a recording station. It would record and you can play it back. And there was a student project that used Arduino board, Arduino board and Ubuntu operating system. So in that, they had used, for example, they said, they opened and closed a door. The door is presumably for a safe, so it would open and close. There was another experiment in which they actually mixed two liquids. They got this low-cost pump that is used in fish tanks. It was only 150 rupees. They assembled it and it actually pumped. One was for ink, the other one was water. Then they had a LDR resistor that works on the light intensity. So it gave a feedback and said that, send more of this ink as opposed to water and so on. It was really interesting. So it is possible to repeat this exercise for microcontrollers also. The idea is that, can we pull in people who have the expertise in different parts of the country, come up with something very nice, set it up and let people use it. And it turns out that for this particular set of experiments, the Arduino board, for example, costs only 200 rupees. The students, in fact, found that they were buying it for 1000 rupees. Later on found that it was too expensive because they were teaching this how to do open source software for school students. Their management sends buses to all government schools, bring the students to their school, give free lunch. Initially they were asking these children to pay some money. Then they found that these children could not pay even that money. So this management said, okay, let's do it free of cost. So as a result, the expense was getting too large. They said 1000 rupees for an Arduino board is too expensive. But the people who were selling that Arduino board said that they would explain to these students how to assemble it themselves. So they gave them what to do there and now the students in this college are assembling it themselves. It comes to only 200 rupees. So what it means is that if only we tell our children how to do this, then the children can start making them costs 200 rupees. You can actually give a complete kit for 1000 rupees and let them experiment. All the instructional material playing around with that and so on can be done in a central place. So these are some of the ideas. Of course I have some people. I am interested in this. I have four people working on this right now. I think I am almost at the end of this effort. So open source efforts are not only idealistic. If you look at this mission itself, it's all open source. That's one of the requirements. Whatever is funded through this mission has to be released as open source. In fact when we gave talks, I gave a keynote address in the first SILAB user conference that was held on July 1st in France. I gave this talk and there were people from France, a lot of people, and they said they were very happy to know that the Indian government is doing this. In fact they were saying that they wished that their government would also do this. So it's a very ambitious plan, this mission.  And in the newsletter that we will give, there is information on how to submit a proposal and so on. I will give that newsletter to you if it has not already been given. So as I mentioned earlier, it is not only idealistic. They make a lot of economic and commercial sense as well. So this mission has a potential to empower all Indian children to collaborate and make us a developed nation. And IIT Bombay is working on several of these projects. I keep calling it open source projects. I am talking about this mission, but everything funded through this mission is open source project. So it provides sufficient funds for these activities. As I mentioned earlier, one of the key points for funding is it is not possible for one institute to cover corner all the money. In fact I was talking to you about Mr. Sinha. I said that great administrator. Let me tell you that it is very interesting. In one of the meetings, there was a suggestion because Mr. Sinha is talking about giving good bandwidth for every college. So there was this question from somebody. If you do this, you will be wasting a lot of money because many colleges do not have good students. They cannot use it. You will be wasting money. So why not try it out on a few colleges? Do it very well and then replicate it. So to that Mr. Sinha said that for me to perfect it, it will take many years. It could take 20 years. By that time, several generations will pass from other colleges without having this access. I want to give that access today. So the good people have them today. They also start benefiting from day one. So that is why I said that it is an incredible effort. It is being led by somebody who is outstanding bureaucrat that is very large at heart. The objective is to reach out to as many children as possible, as many colleges as possible so that the education levels come up. So with that, I conclude my talk. So thanks for your patience and I will be glad to answer any questions you have either now or even afterwards. Thank you.


Hey, this is Brett and this video is a little bit of a simulated pitch to the general public and friends and myself for this project that I'm working on. This turn-based retro-inspired fantasy RPG. I built up the prototype and shared a devlog video of that where I have maps loading, there's some simple work in combat, and I want to transition to the next phase of the project which is actually building out the game, and I feel really ready and prepared to do that. I thought it'd be fun to kickstart this next phase of the project by putting together this slideshow. So the overarching project in the world is called Elegion, which comes from the word Elegy and this new order song called Oesia, and then just tagging on in. So that is what I want to call this project in this game. I'll start off with some basic info about the project. It's a fantasy RPG set in a world at war, which might be a little generic, but I need to not worry about being generic right now. I instead want to focus on building and making a game, which I think is hard enough in its own, and I hope that within this trope of a fantasy world that's pretty common, I can tell some interesting stories. So the world is called Elegion, and it'll be a story told in chapters. This pitch document is focused on the first chapter, and I'm not worried too much about the chapters beyond it, because I think that will become more clear in time. It's really important to me to be able to tell these small personal stories in this world, while also telling this larger, more epic tale and stories beyond it. So that's something on the forefront of my mind. And I'd like to start with a small piece of the bigger picture, which means telling one small limited story about one character who will eventually be entangled in the rest of the game. So the first chapter is going to be called Kino's Revenge, which is about the main character, Kino, who we'll learn more about soon, seeking revenge for something that happens, that I will also explain here. So Kino is a sword for hire. She returns home from a battle, only to find her home, a flame, smoldering fire, and her husband and daughter are missing. So this sort of, that's the sort of catalyst for the story of Chapter Line and Kino's life changing. So I want it to be about three hours long. I think that would be a really solid amount of gameplay. I want to really limit the scope for this first chapter, because I think if I have a solid foundation where I can tell a story and build RPG, and I can finish and release that, I can build upon that for the future chapters and keep layering it on until it gets to be this larger game. So here are ways that I want to limit the scope to prevent it from growing larger. Combat is going to be one versus one. So there won't be enemy select or there won't be party select. So I'll keep it pretty simple. There will just be attacks and magic income, attacks and items in combat, no magic yet. The story will be pretty linear, no formal side quests, so there's not like a quest tracking system or anything like that. Maybe there will be some things in the world you can do and interact with, but it won't give you a quest log, right? The quest is one, which is the story, which is getting revenge. I want to start the production, which I guess I'm technically starting it with this, but I want to write the script and have the script fully written so that it's, that's ready to go and then it's just about producing the game, coding it, making the art and the audio. Equipment will only have two slots for weapon and your armor and there'll be a limited number of those, like maybe five of those, maybe three even. I don't think there needs to be a tons and there's a short game, but I want to get that system of equipment and items built out. So I'm going to embrace constraints in a few different ways. The resolution of the game is going to be 480 by 270 pixels, that's like the native resolution that the assets will be displayed at. And then for different screen sizes, right, it'll scale up and be really pixelated, which I like that style. I think this resolution after doing some experimenting is nice enough where text can be displayed and rendered in a legible way without having to use really short abbreviations with it, but I also can use a pixel font and then it'll store, still have that like retro feel. It also is a resolution where I can use smaller sprites, which will help me be able to produce the art in a way that allows me to work pretty quickly and not have to worry about something like medium sized sprites. I think with a higher fidelity is a lot of work and it kind of starts to step until like almost like oh what if it was an illustrated style and I don't want to work with that for this project, but that could be something in the future. That resolution, it's 16 by 9, which I think is a really common aspect ratio for a lot of different platforms and will scale nicely. The resolution will be, that's about two times the Game Boy Advance resolution. Game Boy Advance resolution is three by two, so it's a bit taller than 16 by nine, but that's okay. Tiles will be 16 by 16 on maps and a lot of the like character sprites and those kinds of things will also be 16 by 16 pixels. I'm going to use the JMP 16 color palette, color palette, which it's a little blurry here, but it's got 16 colors. They're quite limited. It's missing like a bright yellow and a few other colors that would be nice, but I think by limiting the colors, I can create a visual style that is unique to the game and prevents me from being overwhelmed from like which colors to pick. So I'm going to use a limited color palette and then combat will be first person with no view of the party, a lot like Dragon Quest. So key features. I'm going to be able to save anywhere because that's really important to me. I don't like save points like crystals in Final Fantasy and the kind of priest or the kings in Dragon Quest because I just, I don't know, sometimes I want to stop playing and I think the save points are kind of arbitrary. So I want to use save anywhere a lot like the ease games. I think they handle that really well. No random encounters because I think that it's a little annoying and I'd like to at least be able to see them and maybe there's a chance of being able to run away from certain enemies. So I want to make it so you're not just like three steps fight, three steps fight. I think that flow can, is it kind of not super fun? So the enemies will initiate the combat. I want the combat to move really quickly. So especially since this is so simple with the 1v1 combat, I want it to move quickly and go from starting the battle to being out of the battle and back into the world quickly quickly. And then for cut scenes and storytelling, there are two main ways I want to do this. One is just by text boxes when you're interacting with NPCs in the world. And those are pretty simple. And then some more complex scenes that display character portraits like visual novels with some fading, maybe some screen shaking and that kind of stuff. But not really focused on animation here or yeah, any sort of animation, just maybe some limited rudimentary animation but trying to instead focus on like most value in terms of storytelling with a limited amount of development effort because of how, because one is the first product of significance for me and two because I think the timeline is pretty small. So or it's like pretty short timeline and I want to embrace that constraint too and make the most of it. So inspirations, this is the fun part and this is what I've been steeping myself in lately, which is things that I want to draw from and leverage to build this world in this game. So it'll be primarily Game Boy Advance and Super Nintendo inspired. I really like those systems and a lot of the art and the fidelity of it all I think is quite nice. Primarily Dragon Quest 4, I played that on the DS and loved that game. I think the way it tells the chapter stories of the characters and then they eventually come together mirrors what I want to do with Elysian. Final Fantasy and Chrono Trigger of course they're all kind of contemporaries but I really want to pull on those. Here's some screenshots of some games. We've got Fire Emblem and the upper left. I really like the interface and the art of Fire Emblem, especially the character portraits. I think they're done really well. Really great pixel art on the Game Boy Advance. To the right of that, so I'll go in clockwise order, is a screenshot from Bravely Default, which is a game from 3DS. So it's kind of 3D, the textures look 2D almost like concept art and I just like the colors and the style of that world and the combat of Bravely Default is quite nice. To the right of that then is this game for the, it's like a newer game, a homebrew game for the Genesis called Pier Solar and that was one of the indie game resurgence of classic RPGs. I really like the sprite work and the UI and there are different aspects of it that I like so I thought that would be fun to pull on it from a modern context. Then we've got Zelda in the Minish Camp. Zelda, the main draws from Zelda will be the world sprites, the title sprites. I think it's got really great visual style and then below that is Pokemon. I think Pokemon has this great visual style too so I think on the Game Boy Advance those two games in particular look fantastic and I want to leverage those. Then to the left of that, this has a weird filter on it, the screenshot I found. It's from the Mana game on the Game Boy Advance. I think the pixel art is really nice in it without this effect but I like, I want to draw from that world and that style. Then in the lower left it's a screenshot from Mother 3. I think Mother 3 style in the way that works is it's like as a game and as a visual style is. It's funny, it's humorous, it's telling a bigger story. I like the black outlines that that game is like pretty committed to in its style especially for the characters and the simplistic art with the strong color. I think that's a big draw for me where then if you look one above that's Final Fantasy 6 which was remade for the Game Boy Advance and all the pixel art is quite a bit busier so I want to think that visual style I'd like it to be more like Mother 3 but there's a lot about Final Fantasy that I like and from the character portraits to the text to the fonts so anyway this is kind of like a mood board of games. Other inspirations would be Berserk, Lord of the Rings, Nausicaa, Earthsea, A Summer Race and Fire, Dark Souls, Dungeons and Dragons and the Ease series so those are all more like maybe like mood inspirations, setting inspirations it's kind of just like generic fantasy in a lot of ways. I like darker fantasy particularly like Dark Souls and Berserk and the Summer Race and Fire so I'd like to take those and infuse those certain elements of it maybe with the storytelling and a little bit of the world. I'd also have a little bit of fun and cute and whimsy so I don't know if I'll be able to pull that off or if I'll just lean one way or the other but I think those are the things I love and then I think I'll draw upon for the project. In terms of style I want it to be colorful but we'll have the limited color palette. It will definitely be cute because I think a lot of the things I do end up being cute and a little whimsical but I still want to be able to tell a serious story and maybe have some darker elements of it so that's this sort of line I'll have to tell that will be a fun challenge. The primary visual inspiration is Akihiko Ishida. Absolutely love his work. He did work designs for Final Fantasy Tactics and Tactics Ochre and like the New York game.  Final Fantasy mainline games. I think his art is just amazing. His older art especially the Final Fantasy Tactics art is simple. It's cute but it's not like cute to the point where I don't know I feel like it's still able to be taken seriously and able to convey emotion. I like that the characters don't have noses. I think it's really funny and just like his style that's like signature Yoshida so maybe there won't be noses I don't know but also he was the primary character designer for Bravely Default and I just I love his his style. I think that's the main influence I want to happen for this. Other visual inspirations. In the upper left that's from Nausicaa. In the middle that's Breath of Fire. To the upper right is Berserk. Then we have some concept art or like some illustrative art for ease.  Sound I'm not sure of. In my head I've been thinking it would be cool to have really like piano driven music that is maybe like classical maybe a little jazzy but I think this is totally up in the air because I'm not capable of making music at this exact moment that I would feel good about so I'll either have to go hard and like learn or have someone make the music which is like TBD so I'm not sure about sound. Really quick about combat. It'll be menu based. Really driven by Dragon Quest and some simple aspects of Dungeons and Dragons but it'll be pretty simple. There'll be stats and leveling. Stats will be limited for chapter one. Enemies. These are the ones that I have in mind for the first chapter. Magic mushrooms just because I drew a mushroom and I like it. It'll be Slimes because I feel like it's fun to pay homage to Dragon Quest and I really like Slimes. Bats, Goblins and Bandits and there'll be a mid boss and a final boss. Maybe there'll be more monsters and I really think that will be a fun draw in this project and future projects is making the enemies and kind of yeah building out the the BC area so excited to do that but I think this is where I'll start. There'll be a few regions in the first chapter. There'll be a field, there'll be a first town dungeon. That should be dungeon one with a typo with a mid boss. Then we'll go to field three, town two and then there'll be a cave with the final boss and then maybe I'll throw in some like bonus dungeon. That will have some like cool stuff to do after you finish the game for chapter one. The approach for releasing the game is well first the primary goal is to finish it and release it. That's what success is for this project. There's no other success metrics other than finishing it and releasing it. I want to release it for free for as many platforms in stores as possible because I want as many people as possible to play it and I think for first project for something that's like short limited in scope I think it makes sense and sounds good to me. So I'm going to start with itch because it's free and easy to publish on. I'll release it for web and for windows because I think web is nice in that you can just go to the page and play it and the prototype works fine there. I understand what's going on with the web. Limitations of the web are the colors look a little off and there might be a little like weirdness at times with the sound but in general it works pretty well and then I'll release it for windows because windows is probably like the highest most popular platform for games. And people playing games then I'll release it on macOS and Linux following up with that and then I would like to try to put it on Steam, good old games, Epic, etc. I just don't know much about that process so I'll have to learn and do all that kind of stuff. So then after that I think it would be really interesting to put the game on iOS and Android. Is this possible with the technology I'm using? So that would be cool. They could spur controllers or could have a little touch screen interface but that's like a significant amount of work so I'd want to make sure it's worth it, worth that effort and if it goes well and maybe there's a bit of it on consoles I don't know but that has the whole thing where games have to be certified and rated by the ESRB and all the stuff that probably isn't worth it at this point for like free project but maybe once the game like that Elegion as a whole is finished and all the chapters are built like down the line and maybe it could be cool to put it on consoles but it could be something worth learning about at least. So with this project chapter one and specific I want to establish the world, I want to establish ourselves like myself and whoever else is working on the project. I think there's opportunities to collaborate with people so I'm talking to friends and people to see what that's going to be like and I love the public fan base of people who are interested in the world and interested in future chapters of the game and other games that I make. Timeline, right now I'm recording this it's October so maybe like the 11th I think so it's early October I don't know how 11 days of October passed already but I'm like ramping up and starting full production and then I want to have the scope of what I've outlined here to be ready to polish and QA test and make as bug free as possible in January so giving myself three months to build the project which I think seems realistic but I guess I'll find out because this is my first time doing it committing to a project this large and then I would like to aim to release it in February 2022 so I don't know we'll see how realistic that is I have no idea but just based on current progress and just like continuing to cut the scope down I hope that's possible and if not it'll be a grand learning experience. In terms of marketing the project I'm going to keep making these devlog videos and writing up articles like blog posts that are companions to this or maybe are better served visually to share the process of making the game I want to release in progress builds on itch so that people can play it and see it and get a sense of how the development's going and just like engage with the community on building out the project I want to share the art and works in progress as they're made and just be able to create yeah share the momentum and show the things that are being made because I think it's really fun and motivating to share stuff share information about the world and the world building the characters I think that's a really fun aspect of a game I'm going to be transparent about this journey because I'm sure I'll learn a lot and hopefully it could help other people who want to make games too and then here are my thoughts for after chapter one is finished so once chapter one is done I want to work on chapter two which will have expanded systems like maybe 3v3 combat and a party and maybe starting to introduce some magic and expanding the world a little bit and sort of just like follow that up from chapter one I think it will be a really natural progression I think it will still be called a lesion but it'll just be called chapter two and maybe it'll be a way to like skip chapter two or load your state data if you've played chapter one and it would still be a smaller story though it wouldn't be this like big story I have in mind but it would tie in and lay some foundation for that larger story I think it'll also be free because it'll be small and short and it's about establishing myself less about making money and then once that's finished this is like a ways out maybe chapter three chapter four chapter five I don't know the kind of like steps of the chapters but eventually what will happen is like I'll sort of have these early chapters that are limited done and maybe like some systems and styles and things will get backported to past chapters as they evolve but generally there will come a point where it's like the sort of like demo where these free chapters are out finished and then I want to tell this bigger story in the world and I think it'd be cool to either kickstart it or just make it and then release it as a paid game but that's probably like more than a year away at least so I'm not too worried about that but that's kind of just like a thought or an idea that immediate next steps for me are take the prototype which has a working combat loading maps and some other rudimentary systems I'm going to write the script I'm going to do that right after I finish this video and then I'm going to build out the game with like a bunch of placeholder art and like initial past art so it'd be really cool to be able to play the game the chapter one from start to finish with placeholder stuff right I'll just make some really simple quick art tie together the maps write like integrate the dialogue and sort of like add the ability to progress from place to place and that'll drive out a bunch of the stuff I need to code then I'm going to take an iterative past based approach for everything that means taking that placeholder art going through making another pass on it and improving the quality of it the look of it taking sound effects or music or anything I put in doing another pass on it playing the game seeing how it feels iterate on again keep making passes till things get to a really good quality reviewing for typos adding a bit of polish and keep this mindset of finished is better than perfect and I want to release this and finish it that's like the most important thing I don't want to make unnecessarily a perfect game or like not trying to be like I'm not trying to do anything other than start and finish a releases game and don't necessarily need to or want to make a statement with it I just want to make a game I'll have to figure out the music and sound effects that's TBD and then I'll polish it all up and keep making those passes until it gets ready to release it and call it done and say this is like version one of checker one of Alicia so that's the plan yeah thanks thanks a lot for watching this and following along and hope you keep following along with this project and yeah I'll keep sharing what I learn I'm really excited and I hope that you are too all right thank you bye


Hello and welcome to the Grand Line Review, your source for everything one piece. Today we have a review of episode 877, The Parting Time, Pudding's Last Wish. And right out of the gate I have to say that this episode was simply beautiful and very, very well handled. The attention to subtlety and feeling is very unlike the anime and very much welcomed. I mean I knew we were in for something special when after the superpowers opening we were launched straight into the title screen, no recap, no music, just a very quiet and somber canvas to build upon. And I like that a lot because the chaos of Whole Cake Island is over and this is very much a point of reflection. To take note of the cost of getting to where we are as well as providing a firm resolve for the future. And a big part of everything to do with that for me was the Soul Pocus song. Now I've been a pretty big fan of how the anime has handled musical interludes in Whole Cake Island, it might be because I work in musical theatre and opera, but music has such incredible power to tell stories and Soul Pocus is quite possibly my favourite song of the entire arc. It has a really grand operatic nature about it which is absolutely perfect because for the most part the themes of this episode are tragedy and hope. Which just so happened to be the two most focused on themes in opera. And bits of Soul Pocus play throughout all of that really heightening the emotion, particularly in scenes like the end battle where all of the factions left in Totland are still taking on the Big Mom Pirates whilst bracing for Big Mom herself to attack. And while it's really tragic to see all of these protagonists just left behind in Whole Cake Island to deal with whatever, there is also a fierce sense of triumph in Soul Pocus, which is especially potent at this point. It plays while Big Mom is riding in to the rescue and it really does hit hard that Whole Cake Island was an overwhelming defeat for our protagonists. In the end, Big Mom was the hero of the day and this song is here to celebrate that in a wonderfully twisted way, which is why my favourite lyric is the very end one being It's the Queen's Song. It's just such a strong ending that at the point where I was watching it I was expecting to see the two big continued credits pop up, having completely forgotten about the one final ray of hope delivered to us in the entire episode. And speaking of, the simultaneous scene of Sanji and Zeph preparing the same dish was also done really well and it was so very important to nail because Sanji's pride as a chef was really what was on test for this entire lengthy climax. You'll have a lot of people who complain because Sanji didn't get a quote unquote decent fight during the Sark, but it is this moment that should really hammer home that it was never about that. Fighting is entirely secondary to Sanji and his number one priority is being a chef. So the climax of the arc was him feeding a hungry person and it was glorious. Sanji was also involved in some other well-crafted moments as well during the episode, the first of which was his little heart to heart with carrot lamenting Pedro's death. The atmosphere was just perfectly somber as it took place during the initial opening with just the sound of the calm waves and a tiny bit of musical assistance from soul focus for the key emotional moment. And there was some other great work done with the scene of pudding looking through the memory she took from Sanji. In fact, that was actually probably my favorite part of the episode and I say that as a very anti-putting person. I really tend to despise whenever she appears because of her whole split personality. I don't know, I just don't find it funny or endearing in any way. But when this happened in the manga, I genuinely felt for her and the anime is no different. Not only that, but this is one of those very rare situations of the anime showing flashbacks that aren't just filler. This whole sequence in the manga featured a whopping amount of short flashbacky portions, which the anime pretty much followed frame by frame and it was wonderfully effective. Although the best part was definitely when the silent film began playing. I was very curious about how this was going to be handled after seeing it in the manga and it just works so damn well, set to the minimalist chimes of soul focus. But not only that, but the animation within the film has a very magical quality about it. Everything has a nice soft glow and the colors are slightly elevated to a more heavenly palette, all of which only increases the tragedy of pudding as we see her bursting into tears afterwards.  Beautifully handled, 10 out of 10, honestly not much more to say about it, except that young Paris Barrow is a bit creepy. And there was an interesting moment though where Kartakuri showed a flash of conqueror's haki as a child, which was pretty cool. The noticeable emission was not present in the manga, although given how absolutely demonic he looked, it certainly was a nice opportunity to insert it. So yeah, overall this episode was just fantastic. I would go so far as to say that it was constructed far better than even the Snake Man episode, which was the entire thing that made me start reviewing the anime, although they're very different beasts. While the Snake Man episode succeeded in action, this episode delivered on an emotional front that I honestly didn't think the modern day anime was capable of. So once again, huge props to Toei for pulling that off. I mean, I do wish that this quality had been consistent throughout all of Holkake Island, or Zoo, or Dressrosa, or Pankazza, or Fishman Island, or Marineford, or almost any episode from the last decade or so. There is just so much potential with the series as an animated medium, which was once again put on full display here. One part glorious and one part kind of taunting us. Oh and speaking of taunting, if you're an anime only watcher, I really hope you didn't watch the preview for the next episode because it contains a massive spoiler. But then again, the episode title is going to contain that massive spoiler as well, so there's really no escaping it. You'll know what's going to happen before it happens, and sadly that's how it was in the manga as well. But big, big stuff coming next week, which I cannot wait for. But that pretty much does it for episode 800 and 77. If you enjoyed this video and the content this channel produced in general, then please do consider donating to the Grand Line Review Patreon because the support of all of your amazing people is what continues to make this channel possible. Also do check out my Teespring store if you're interested in shirts, hoodies, and other miscellaneous items, with the proceeds going directly to support the channel as well. And if you'd like to join the fun at any time, then please do head over to my Discord server, where a wide array of shenanigan retakes place on a daily basis. And finally, please do comment with your thoughts on the episode. This has been the Grand Line Review, and I'll see you next time.


So my name is Adrián Moreno and I work for Red Hat for the networking team and I'm here today to present a new tool that I have written with my two colleagues, Antoine Tenard and Paolo Valerio and we're gonna talk about networking and debugging and tracing. So this is a short agenda. I will try to go fast through these slides and run a live demo, although given situation, I don't know if I should just Anyway let's just jump directly to the problem. The problem that we're trying to solve is network visibility and network tracing and for at least for me this is a three-dimensional problem meaning we have on the one hand we have many components in the Linux kernel. So we have we can have a packet in the TCP stack, UDP stack, TC, Netfilter, we can have it in OVS. OVS is especially complicated because the packet temporarily goes to user space and then it gets re-injected into the kernel. So it's there are many places where a packet can be but on each of those places we not only have the packets that we want to look to we want, we have all sorts of packets. So our packets, our traffic is hidden among lots of other packets. So we need good filtering but apart from that the packets mutate over time. So filters get stale. You can filter on the source IP address and then the source IP address might change because you do something like nothing. So it's really complicated. You have these three dimensions to try to find your packets and know where they are and what happened to them in the kernel. So looking at the existing tools we have of course venerable TCP dump. We all love the PCAP filtering You can express any filter and it just works. It's like it is of course the seed of EBPF, so our respects. We have all the tools like DropWatch which is just focused on drops. It gives you the stack trace of each drop. It's really nice. We have PWRU. If there's someone that hasn't tried this tool, I recommend you to use it. It's awesome. It probes many different places and we also have tools like BPF Trace, Perf, SystemTap, which are slightly complicated to say the least but very very powerful. So with all this what is Rhettis and what is the tool that we've written?  It's a tracing tool that gives contextual information of different places in the stack. But you can also think of it as TCP dump plus PWRU plus Perf times Rust. Of course we haven't put all the features of these tools into hours, but we do have we have gotten a lot of inspiration. Lots of nice things that we like from these tools. We have kind of integrated them. So if you do know these tools, you might feel that something sounds familiar. So let's just jump into how to use Rhettis and try to understand this tool. And for us to understand this tool we just can jump into an example. This is an example of Rhettis and the output that it just brings. Okay, so if we understand this we understand Rhettis and what it does. So first of all Rhettis is based, it has something that we call collectors. Collectors tell Rhettis what data to extract. So for instance, we have the SKB collector there and the SKB collector collected information from the SKBuff from the packet. So that line which resembles TCP dump output is what the SKB collector generated. Apart, we also have the NFT collector there. The NFT collector generated that little line down there which is NF tables chain, verdict and table. So collectors collect data and extract information from the kernel. And on the other hand, we have something called probes. Probes tell Rhettis where to look for packets. Some of the probes can be explicit. So in this case, we have over there an explicit probe. So we told Rhettis, please get into the K probe IP RCV, which is a well-known function in the IP stack. And therefore that probe was well, that K probe was probe. Basically, we attached an EPPF program there and collectors collected the available information. So some of them are explicit, but some of them are automatic. Like for instance, the NFT collector, the NFT collector, you cannot just collect net filter like NF table information from anywhere in the kernel. So it automatically added that probe in a special place in the kernel where this information is available. So we have probes and collectors and if we start combining them, we think we're able to achieve a fairly good low-level tool for network tracing. We have many existing collectors. I'm going to just quickly go through these slides because we don't have much time because of the delay at the beginning. We have the SKB collector, collects packet information. We have the NFT collector, which also we shown in the in the first example. You can filter, it can do something really cool, which is filter on the verdict of the net filter rule. We have SKB drop extracts drop reasons from a special function in the kernel. We have SKB tracking because we do extensive tracking of packets. So that is a very important feature in InsideVetis. We have an OVS collector. So just a small reminder of how OVS works for those of you that might not be familiar. In OVS, we have a kernel data path, but it acts like a cache. So it's empty at the beginning. The first time we see a packet, we send it to a user space demon where we process it and we determine what to do with it. And then we put the packet back into the kernel alongside a flow that tells the kernel data path what to do with similar packets. So then the next packet, which looks similar, will be just processing the kernel data path. So we have an OVS collector, which does exactly that. Traces add some automatic probes in the kernel data path and the user space demon in order to extract all this information. This is a short summary table of these collectors. And we found a problem which is as we start adding probes and probes, since they are explicit, many of them are explicit, we end up having very long command lines and we need kernel knowledge to actually know what to probe. So these might be obvious for a kernel networking engineer, but might not be obvious for for the rest. So we developed something called profiles. So it's just a YAML file where we list the probes. We enable the collectors and it's very simple, easy to share, easy to ship in your distro packets or whatever, easy to write one for specific use cases and and have it ready for your debugging sessions. So you just enable the profile and that's it. And one of my favorite features, we have pickup filtering. So same syntax as TCP dump, exactly the same. If it works in TCP dump, it will most likely work in retis. And it's like 19% I think like in for most common use cases, it will work. And yeah, retis gets that, translates it to BPF, translates BPF to eBPF and inserts it into a kernel for filtering. And similar to perf a little bit, events can be stored in files and for easy post processing and events in this case are just JSON. So you can do any kind of post processing, you can write your own post processing in Python or whatever and get some more insights from your events. We have one of the built in post processors is the sort event, the short command which I will show you in a live demo actually. So fingers crossed bear with me, so this is a very challenging. Okay, so sorry, I had to reboot the machine just seconds before starting. So I hope my script works. Okay, so I have a very simple setup here. So we have two network devices attached to two network name spaces, a private one and a public one and we're just nothing like masquerading between them. Okay, so for instance, if I am going to enter the private, the private network name space and I'm going to ping, so I have connectivity with the public one. So I'm going to just also verify this. So this is the, I'm pinging this IP address, right? And okay, I have a cache. Okay, so I'm going to capture the packet as it's received and as you can see the source IP address is not the source IP address that I have here. So there's nothing going on, okay? So let's see how Rhettis can, let me keep that ping flowing. And so I have some profiles installed. So I have a UDP profile. I have also a generic profile, NFT profile. The generic profile is shipped with Rhettis and it's with v1 at least and it's a generic, pretty useful for starting debugging session. So I'm going to use the generic profile and the NFT one, right?  And okay, so that's interesting. So a live demo, of course, is not working. Why is not, okay, okay, sorry, so sorry for that. The, I have a plan B which is, I have a, oh gosh, but this is not visible, is it? Do we see something there? Oh my God, sorry, sorry guys. So can we do like zoom in? I just rebooted this machine before and do you guys see something? Well, these are events, okay? So I just run the NFT, the NFT collector.  What I wanted to show you is this is just putting some events into a file called events.json, okay? So events are stored in a file. And after that, I can run the short command. When I type short events.json, ready short events.json, this is the output. So as you can see here, at least visually, I hope you can see that most of the events are indented. This is because we detected the first packet and we identify that the rest of the events belong to the same packet. And we identify that even through nothing. So at some point, the source IP address of the events change from here, which is 192.168.102. And it becomes another one, right? So basically, with this demo, I wanted to demonstrate that we can get events all around the network stack. So IP receive, we get the IP forwarding, we get nothing, we get much like not manipulate functions. We see the nothing going on and we see the packet being received. And later on, in this demo, I increased the rate of the ping, and I see that some packets are being dropped. So doing the same experiment, like doing collecting the events and shorting them, I can look at the drop. And I can see how, maybe you don't see it, but at some point, you see a drop in the NF table, an NFT event, dropping the packet, which has a different source IP address than the one I put in the filter. So even though I was filtering on the source IP address and the source IP address changed, I was able to detect that and detect that packet, specifically that one, got dropped, because I had a net filter rule in egress, which dropped it. And at the end, I see this SKB drop event with the SKB drop event reason, which is in this case is net filter drop. Also, there's another way to see it. There's an event. We can enable just the NFT, sorry, just the SKB drop and the NFT probes, sorry, collectors, and put the option minus, minus stack. The minus, minus stack will print the stack trace of each event. So we will capture the packets as they get dropped and print the stack trace. This is similar to Drop Watch, if you know the tool. Okay. And here, again, pretty small, I think. Sorry about that. So in this other demo, I have Open V-switch setup. And in the Open V-switch setup, just two namespaces communicating each other through OBS. And in this particular example, I use UDP DNS resolution. So I run a DNS server on one side and a DNS client, basically a dig on the other side. This is what I was telling you about. So this is the cache, the content of the flow cache. Okay. The first time we see a packet flowing, two entries appear, two flows appear in the kernel cache. Any other UDP packet will hit that flow and directly be output to the right port. And after a while, the cache entry gets invalidated, expires, and gets flushed. So in this particular example, what we see is, of course, we have a profile that helps in this use case. The profile defines some traces in the UDP stack and some traces in the OBS stack. Profiles can be combined with each other. So in this case, we have two completely independent self-contained profiles that, when combined, will help us debug this particular case, in which maybe we have some latency in UDP resolutions. So we start collecting, we execute the example, we stop collecting, and we run, again, the short command. And here, the short command gives us a very big path of events that belong to the same packet. Okay. And of course, it's not very visible here, but at some point, so we see packets in the vEath port of the short network namespace. We see the event, sorry, we see the SKB going from one network namespace to another, because we list also the network namespace in which we see the packet. We see it being received by OBS. We see it being processed by OBS. We see it being upcalled by OBS to user space. We see it being received by OBS in user space. So we know that it wasn't dropped in the middle, like we didn't overflow the Netlink socket that we use. We then saw a flow being put, like a flow being configured because of this packet, and we saw a flow being executed, meaning the packet being re-injected into the kernel. And then we see events where the kernel receives the packet and executes an action, which in this case is an output action to port whatever. And then the next event here is vEath transmit. Again, it goes back to the vEath and up the IP stack and the UDP stack of the DNS server. So we see the entire flow even in user space. And of course, if we scroll down to the next event, okay, so if we scroll down to the next event, what we see is the next packet didn't go through user space. And we see OBS DP execute action right after it being received by OBS, meaning we are able to see which packets go to user space, which packets stay in the kernel, and we can see drops or any unexpected behavior with packets even in user space. Okay, yeah, I'm really sorry I couldn't do this live, but you know. So I can show it here a little bit bigger. So this is the output of the short command. You see the first line is the first time we see the packet. Anyway, the first line is the first time we see the packet we see here in the IP RCV. And then we see NF contract, NF contract ICMP, nothing going on, right? So we see all the events shorted. It's like TCP dumping everywhere in the kernel and being able to see it in a nice shorted manner. And what's next? So we have just released the first version. We have many, many collectors in planned. We want to add contract, EC, container integration. We want an embedded Python integration, terminal user interface, and whatever people suggest, right? So contributions are welcome. That's the GitHub repo. And you can just create an issue and suggest profiles and any other feature that you would like us to work on. And that's it. Sorry, the demo didn't work. Last minute issues, as always. And that's it. If there are any questions. Yes. So there are different techniques. So inside the kernel we trace the SKB. The first time we use the SKB head and we track whenever the data pointer changes so we know when it mutates. But essentially we use pointers inside the SKB to track when the event belongs to that same SKB. In OVS we don't have a very good infrastructure for tracing packets from the kernel to user space. So then what we do is we get hash from different parts of the packet because we don't have an SKB struct in OVS. We just have bytes. So we hash it. We use other techniques to track the packet through OVS because there are several places where OVS installs flows and things like that. And then we also hash the packet when OVS re-injects the packet into the kernel. So that's how we... And then we kind of combine both tracking information into a single one for us to be able to short all those events. I don't think we can trace any user space application that can change the packet in any way. We cannot do it in a generic way, that's what I mean. We can do it in OVS because we know how OVS works. I happen to work in the OVS team. So we use OVS internal knowledge to know what OVS does to the packet. In addition to that, we expose user-defined trace points in user-statically defined trace points, USDT. So we allow in OVS in user space. So OVS has hooks for EBPF programs to be run. So this allows us to extract that information in very specific key places. Of course not all applications might do that. Each data path or control path that we want to monitor, we would need a specific collector that knows how to do that. So I'm hoping that we can add other user space applications like other control planes, other programs that alter and modify the behavior of packets. But yeah, not in a generic way. We don't have a user interface at the moment. We just have the CLI. We would like to add a terminal user interface similar to what PERF has where you can have all the events, inspect them, expand these little tables and collapse them, filter and things like that. So we want a terminal user interface, but it's just in the backlog. The question was how do we convert the pickup filter into EBPF? Yes, we do use pick-up to convert it to legacy BPF. And then we basically manually convert instructions from BPF to EBPF. They are mostly a one-to-one relationship, but not exactly. And so we create an EBPF program that has that functionality, that filter, and we attach it to the rest of our EBPF programs. That's pretty cool, actually. Okay, thank you.


Welcome to the Tick Mail Update. My name is Kana Danielle, the founder of the Investee of a Movement. On Wednesday, we found out that the mortgage applications to purchase a home in the U.S. increased 7% for the week, and they were also 7% higher than a year earlier. British Prime Minister Boris Johnson raised the prospects of a multi-billion pound cut to a payroll tax. And we also found out that the euro area financial stability environment remains challenging. On Thursday, we had the Eurozone, the OECD Economic Outlook, the ECB account of October policy meeting, and the National Consumer Price Index for October. Bank of Canada's pollas is also scheduled to give a fireside chat in Toronto. Today, I'm looking at the euro-dollar pair, which has recently broken above the daily Ichimako Cloud, with a tank online also crossing above the key June line. While the future Cloud remains bullish, we still don't have the final Ichimako Kinko-Hio confirmation, which is the Chico's ban breaking above the Cloud. The bullish momentum has slowed down a bit as the pair found resistance at the 61% of the Banachi Tracement level of 1.108. The event risks from the remaining of the week could make or break this new bullish trend. So, we will be on a close watch out. Of course, trading in the financial markets involves a risk of loss, and you should only trade the money that you can afford to lose. If you like this video, give it a thumbs up and subscribe to the Tick Mill YouTube channel. I will get back to you with more updates tomorrow.


Welcome to Toffy TV, this is the Matri action Millwall 3, Everton 2, Everton are out of the FA Cup. This video is sponsored by One Football, One Football's app. It makes it possible to keep up to date with all of the scores, stats and chance finish in the one place to download the app. Simply click the link in the description below. Everton dumped out of the FA Cup in injury time against Millwall just as BBC would have dreamt it. Even involved Michael Oliver with some horrendous referee and decisions he really outdone himself tonight. Normally I think Oliver's a decent referee, but tonight he outdone himself too. Stonewall penalties are handball for Millwall's equaliser. It's hard not to be upset with the officials because they're corrupt and they proved it again tonight. As for the game, Everton would garbage, absolutely garbage. Just keep expecting things to get better and it gets worse if anything, that performance is pathetic. Those players aren't good enough and I'm amazed that I'm saying this because in November they looked like a vibrant attacking team. They looked like they could cut teams open. There was a hunger, there was an energy about them. They just had three shots on target against the team. Three or four places off the bottom in the championship who were poor. Not taking anything away from Millwall, they're a limited side. Big lads and he just hoofed the ball into the box and hoped for the best. That's fair enough, it's knocked us out of the cup. Fair play to them, good luck to them if they go on. For us, embarrassing, absolutely embarrassing. Guilvie Sigurd and strolling round the pitch, not wanting a hair out of place, rubbish tonight. I'm going to call that loom, showing why he isn't Everton's best centre forward. Despite a few on Twitter trying to claim that he is. Jeng Towson was on, but in a couple of minutes I have a chance goal. I'm not saying Towson should start all the time but that just proved to me there's the difference in class. Everton were rubbish, defensively they are embarrassing. The goalkeeper, I don't know, the lad doesn't know what clean sheets are basically. The defence, all over the place. Keane and Zuma, Keane and Mina, Colman, Dean, all over the place.  Lashing out, shoves him, lad is running up his own backside in the corner flag. Going nowhere shoves him in the back, they punched up all him to equalise. And then in injury time, giving away, once you've got three kicks, goes and gives another one away. Which results in them winning it. It's embarrassing, it's embarrassing. You've got players walking around on that pitch like it doesn't matter. Keane runs around, can't pass, couldn't pass water. Honestly, just enough is enough at the moment. I don't know what the answer is, people jump on Marco Silva's back. And you know what, you've got a bit of a point.  Colman don't alright tonight, but it's still not good enough. Michael Keane does three great things, two bad things. Zuma's the shame, the same for Mina. It's all the shame, they all do one good, two bad. And there's nothing in that team, Gomez. Where's he gone? Where's Gomez gone? He was strolling around on the pitch dominating games, where is he? Sad, to sad, to sad, to put an area on a grand idea.  Lookman was nothing in that game, just a terrible, terrible performance. And you can accept that if it's once in a while. But this is just building and building. Sadly, these players could end up getting the man of the sack. I know some people might be sad cos some people love to blame the manager. In the hope that this new manager, this mythical new manager, will come in. But no one will want it by the way. Cos why would you come to Evan? For what reason would you come and take charge of Evan? The fans turn on you after early on.  There's literally no point coming in as a manager. Eddie Owl didn't want to come in last year cos he knew. Really, I think a person of fans would have just been made up to keep validation. Despite winning, that's the football I want. They just want negative, boring bollocks that doesn't concede off free kicks. And that's fine, just say it though. Just say we should have kept validation. But I don't know where everything can go from here because the sack's ill that you get. You know, but give it to one's worth again till the end of this. It's just all bollocks. It doesn't matter to you. You go pub gwaith, the Owl didn't charge it this lot. They haven't got it, sadly they haven't got it. They're not interested in keeping the ball off their own net. They're not interested in second balls. They're not interested in throwing the bodies on the line to get a block in. They're just interested in walking around a pitch. They're all nice footballers, all very, very talented, but they haven't got an ounce of football knowledge in the bodies after them cos they don't know how you win games. They don't realise I'm not going to shove... These are big dopes you throw the ball in the box. So I'm not going to shove someone over and give them the opportunity to do it. They just do it. Yes, Luca Dean, I'm talking at you. I'm the one in the face. I'll never give the face. Three three kicks have cost us tonight three. It's embarrassing. Absolutely embarrassing. The fans have gone down there dealing with all sorts. You've seen all bits on Twitter. It's mad, busy everywhere. Saty night, they're having to go lashing it down and then players have destroyed. They've gone and done that two goals in what 15 minutes. It's just embarrassing. It's embarrassing to watch it. I just don't know where we go from there. I am lived as you can tell. That's it. I don't know what else to say. It's just nonsense. Enjoy the rest of the weekend to that.


Hello, everyone, and welcome. This is Melissa R. with Stocks, Wishing, and Reviewing, BYND. I think this is lower now. I mean, after the total capitulation from a couple of days ago, gap down this morning, and again, I'm looking at the overall market as well, I mean, I think that this stock is going to have some drift off in here that could continue past the last couple of days and past today. So it'll be interesting to see. But the stock can really, really move pretty big. It has not moved that big today. It's trying to hold this 150 area. But honestly, I think that this could pull all the way back down into 140, 130-ish or beyond. And that would be underneath this original point. Yeah, the open here. So 130 would be the target for this drop-off. Again, I'm not saying that happens today, but I'm saying this definitely, definitely, definitely could happen in the next couple of days because there was some negative news that came out from the stock gap down. So I mean, this has been very volatile to trade, whether you day traded it, whether you did options in it, it has been wild, it has been whippy, but long story short, you know, it's had a lot of good bullish moves in it. It really, really has. It's had a lot of good play through. And particularly if you did this as an options, it's just had some monster moves in a very short period of time. And I'm kind of seeing that something like that could happen again here. So be aware of that, watch it. We will see where this goes. Definitely, definitely we'll be watching this. Again, 230 in the afternoon of Friday, two weeks ago, I think it was, yeah, it was two weeks ago. Yeah, it was the seven. Was when this had this wild bullish move in the afternoon here. So this could have a wild bearish move this afternoon or it could follow through into next week. But I'm definitely watching this BYND for the very first time here as what would be a short, not a long. Let's see where she goes. Anyways, good luck everyone. And if you're interested in the next Golden Gat class, email me at melissathestoxwush.com.