 Welcome everybody to Udette's ad hoc session. We finally got it going, so enjoy. So, my turn? Yes, it is. It's all you now. Okay, thanks. Hello, everybody. My name is Ralf. I want to do this in three steps at first. I want to tell something about my motivation. In the second step, I would like to present a bit how stuff is thought. And in the third step, I want to show an example which might point out a few implications. So, yeah. Is my video working? I don't see myself in the live stream. Hello? Anyone still here? Okay, at least I hear myself. Okay, I seem not to be able to. So, I see my own video, but I don't see it in the live stream. So, I assume there's still a little problem, but I think that should not be the problem for me explaining my motivation. So, before a few years, I started to realize that probably with how we think functionality, we cannot really model things we see when we are looking into nature. And also, we have quite a few problems in informatics, SSC, with utilizing our today's CPUs with multiple cores. Ah, now you can see me. That's perfect. So, I started to first do classic simulations. I created a software called Simulation Studio, was kind of a proof of concept simulating, doing symmetric simulations, physical simulations on GPUs using OpenCL. But the problem with this was it couldn't really convince me that it is what I observed when I look into nature. So, I searched a bit further. I stumbled over the actor model, but also this couldn't really satisfy me. So, I started to think if the way how we think functionality might be the sweet day we want to model certain things observed in nature. So, finally, I came up with an approach to split time more or less in what we know as causality, but thinking it more as a branch instead of a string. And this is basically what I want to present you now. Where is it? Here it is. Oh, come on. Okay. My share your screen button is not working. I fear I need to rejoin the JITSY session. Share the screen. Block temporary. Okay, that's the reason. So, okay. The presentation, hopefully, is seen now. Okay. So, at first, I want to introduce you to a German word, which is called Wirkung. Sadly, I didn't found an adequate translation to English. So, first, I seem to need to describe the idea of Wirkung. The German word Wirkung describes how cause leads to effect. Now, you might think it's about a mechanism about the way how something happens, but it is not only that because it also depends on the circumstances this mechanism is processed in. So, causal dynamics is basically the idea to describe this Wirkung and its dependencies on data. So, how I said there are circumstances, a mechanism gets processed in, and these circumstances are basically data. So, when I have some mechanism, what it does strongly depends on what data it gets. There is something interesting about data, what we can strongly observe in informatics, and we probably also can observe in nature when we think a bit about quantum physics. Data seems to be exclusive. So, it seems that you cannot have two mechanisms working on data at the same time. And I assume also in physics it might turn out one day that when two things are interacting, there cannot be another interaction happening on the same thing. We know this problem practically from informatics. When we do multithreading, we need to synchronize. Yes. So, what is the difference between thinking algorithmic functional, how we are used to do or thinking it's causal? Functional algorithmic always converges towards linearity. What is basically caused by a function having one return value and multi-parameters. So, we get from many to one. While causal algorithmic is more to be seen like a function or a procedure to be more precise, so a function without return value, but taking in-out parameters, in-out references to memory. So, such procedures in causal dynamics are called ticks. We will tighten that down a bit later. And then there is something we don't know in informatics yet, what we know in real world. And this is the uncertainty of something. So, what is uncertainty? Well, in real world, we struggle often with uncertainty and something being uncertain or something being unsharp. Well, Heisenberg really meant that things are uncertain and not unsharp, but this is also kind of a philosophical struggle. In practically in informatics, it means we can have a reference which is shared between different aspects of a system, but it's not pointing anywhere. So, let's continue with a few definitions. An aspect is a piece of data describing some exclusive systems data, while a system can consist of multiple aspects. So, if I take a human, a human has eyes, has nose, has hands, a lot of aspects, and each of these aspects can do something different at the same time. So, concurrent. Such an aspect in systems we know usually is quite very certain. As we know from quantum physics, things doesn't need to be certain. Aspects can be nested. So, that means if you take a hand of a human, while the hand is an aspect of the system human, while the finger is an aspect of the system hand. So, we have a nested hierarchy of aspects. And they can be entangled in quantum physics. We call that entangled, what basically means two systems are sharing an aspect. And these systems need not to be at the same place. A tick. The tick is now this procedure I talked about previously. And it defines how data is modified. So, a simple tick at the clock would be a move a handle by 360 divided by 60 degree. So, just a tick as we would call it in context of a clock. Here is the point where this German word Wirkung kicks in. This Wirkung is basically a tick getting processed in a certain context of data. While Wirkung is not only this single act, we could say in meaning of informatics, where we intend what happens. But also includes everything consecutive. So, if I have such a nice domino track, we sometimes see in TV. And I bring the whole thing into moving. The Wirkung is not only one stone falling, but the Wirkung is the whole thing falling. At least if it is done well. And a branch is basically what we can see as the whole of a Wirkung. It is from the beginning act from the beginning cause to all consecutive causes until the last effect. So, I want to show with this slide a bit systematic of the aspects. So, we can have an aspect which is just existing but uncertain. So, that basically means we know there is something, but we have no idea what is there. And probably it is also not decided what is there. For informatics, this uncertainty doesn't play a huge role since probably once it will, but for now it doesn't play a role except we are speaking about quantum computers. Then we can have an atomic aspect, what basically means there is no nested aspect anymore, but just some atomic values which cannot be shared. An example would be for an electron, not really an electron, but the impulse of an electron. This is quite very atomic. This doesn't contain anything. While the electron itself has an impulse and a position and some from quantum physics we know we cannot know both at the same time. So, this is the detailed aspect. So, the electron would basically be a detailed aspect of a system. What means it contains another two aspects or probably more the impulse and the position. And then we can have entangled aspects. So, the electron has for example also a spin. And here we have a very nice effect that we can have two electrons which previously uncertain spin and then not the same but the exactly opposite spin. This is also very well shown by experimental attempts. So, now we are coming to the tick. The tick is a procedure taking aspects, being able to modify these aspects but not necessarily and causing consecutive ticks. Not only one but probably more. And this is also the reason why we probably don't want to think causality linear. So, in a sequence as we usually do we say okay there is this cause and there is an effect and this effect can be the cause for another effect and so on. But we probably have a cause which has multiple effects which again causes multiple effects. If we bring this all together we get a branch. Here the branch is shown quite sequential. So, it is easier to get the point. Yeah, this here we don't really need to talk a lot about. I think it's quite clear. And then we can also have entangled branches. What basically means we have two systems which in their self own causality. So, there is happening something within the systems and there is some interfacing between the systems what entangles these systems. So, and then we need to think about order of execution which is strongly influenced by this exclusivity of information. What basically means when tick one and tick n are executed and in this figure we see a tick one which is acting on an aspect one and on an aspect two. And this tick one causes a tick two and the tick n and this tick two would act on aspect two and aspect three and tick n would act on aspect three and aspect n and the thing is tick two and tick n cannot run concurrent since they are sharing an aspect. So, there is some kind of natural order given by this exclusivity principle. So, this was the presentation. I hope you are here. I will check now the etherpad for questions. There are none. So, I'm checking the channel. Okay. I don't see questions from now. Does anyone have questions so far? I assume I need to wait now a bit. I don't see my cam now. Okay. Then let's continue. If there are coming questions now I see my IRC and also can switch now to the etherpad. LibreOffice occupied my whole screen so it was a bit hard previously. I will now show an example. This example is about, let me, okay. I don't see my application in the sharing selection. Probably I try to restart it outside of my IDE. Okay. Ah, here it is. No, this is Tilex. This I don't want to have. That's quite interesting. I cannot see my GTK application in this sharing drop-down box from Firefox. That's quite interesting probably when I overlap them. No, not really. Okay. Probably I need to start it by F2. Okay. I will share the whole screen and probably it will work. Okay. It wants to share all of my screens. This is probably also not what I want. Natty, are you still there? Yes, I am. Do you have any idea how I can share a GTK application which is not started directly? I had this problem myself a few days ago. I'm going to ask the person who fixed it because it seemed like a sort of one-line command thing. I'll be right back. Okay. Thank you. Okay. I'm just the messenger, but so Ralf. Yeah. Okay. So in capitals, GTK underscore. Front end. Yeah. Oh, hold on. Hold on. Sorry. I've just been told back end. I think I might just get the relevant person here for a moment. If you look in the speak-it-ask channel, I think I'll just write it in there rather than. Okay. Thanks. Okay. Look in the it should be there on ILC. Again. No, it doesn't seem so. Oh, sorry. No problem. Probably using an export, but okay. Back end. My Tilex is here. Okay. I will try to start this using F2. Probably then I get it. This works. This works out. That's interesting. I don't get the application in sharing. I get the Tilex terminal, which is also a GTK application, but I don't get my application. Oh, meanwhile, we have a question from ILC. Okay. So the policy principle is about the probability of a vehicle. So yes, it is the same vehicle, the same word meant, and it is about a cause leading to an effect. So probably if we take the, how is it called? When you have a photon of a certain energy, you require, for causing something, you require a minimum energy. Einstein got his Nobel Prize for this, I think. He showed that you need at least blue light to cause anything on a gold atom, in a gold atom. I have a huge screen, but I will try to limit my desktop only to the full HD screen, so then I could share my whole screen. Yes. So display settings, let's turn off the huge screen. This one. Okay. Now enter a screen now. So let's see. You see my screen now? Yes, we do. If you want people to also see your face, just click on the camera icon as well. Okay. Here we go. Okay, that's perfect. Okay. So the application you will see now is doing not many things, but it is doing them in a probably interesting way. So here we have a graph, this graph, which is describing a matrix of 101 by 101 objects, nodes, which are interconnected with each other. So each node is connected to the node above, below at the left and at the right. And the border nodes in this case are fixed. What this means you will see. It's about oscillators. So probably a few of you know from physics lessons. Could you just make the font a bit bigger? I think people having difficulty seeing. Sorry. Yes. That's interesting. In GNOME editor, how to zoom. Okay. Probably it's better this way. So I would say even bigger, please, like make about 20 points. Okay. Yes, preferences. So, oh, that's very big, but that's fine. People can see now, I think. Okay. So each line presents an oscillator. From physics lessons, you'll probably notice this mechanism. You have on a pipe, there are road weights, which are connected with springs. And if you push one of these weights, then you get a wave which is traveling along the along the pipe. And at the end, it reflects and comes back. And you have this game until the momentum is gone. If you imagine this in two dimensions, then you get a matrix of oscillators. And if you push one, then it causes not only the left and the right one to change its impulse, but also the above and the below. So this graph is graph, basically describes such a matrix. You could also see this brain if it's easier and how set the borders of this brain are fixed. So let's go to the application. This application basically loads this dot file. At the left pane, you see two blue dots, which are marking the center of the fuse. On the left pane, you have, see the impulse, the negative, the positive and the negative impulse. The positive impulse is in red. And the negative impulse is complementary. And on the right side, you have a pane which shows the elongation. Again, the positive elongation is red and the negative elongation is, basically. So if I push here in the middle now, you see there is a quite nice wave going through. So as I said, this is the matrix of oscillators. There is no wave function involved. There is even no float or double involved. This is a pure integer version of Feather equation. And yeah, you see basically waves are reflected at the borders. They are interfering. You could also push, cause a bit more waves. You see the brain is moving up and then it is moving down. And you have a lot of interferences now. So this is just a small example of what you could do with causal dynamics. And what is happening in behind here, we might see now in this file here. So I need to check if there are some questions. Nothing on ILC at the moment. Okay. Perfect. So this is the program. It is a bit, so what you see actually seen was distributed across seven cores. And it's basically you have a class oscillator which has a model with impulse elongation heat. The interesting thing is the system knows something like entropy. And these oscillators are interconnected by springs, which have a Feather rate. Yeah. So this is only one tick causality. So that means there is only one effective tick, which is doing nothing but applying the elongation of one oscillator to its neighbors. So basically pronouncing its impulse passing it further. This is just the formula for Feather force. Nothing really special. It is an integer variant where we get this left over energy, which is caused by integer division here simply called using the model law as heat. So this is basically the entropy. So this system really loses energy by the effect that it cannot utilize energy packages which are too small. So probably what we are observing in quantum physics. And after it is applying this or passing the energy to the neighbors, it is calling or it is causing the itself. Here we go. It is causing itself on the neighbor's oscillators. So this is quite simple. It is symmetric. Causal runtime is more dedicated to asymmetric use cases, but this is simply some Grenzfall, some corner case of a symmetric system of a symmetric simulation. The point about this is to show that it is possible in such a system to distribute or to scale the work quite very automatically to multiple cores. This is a self-limiting system, so there might be a limit on how many cores it can run. Probably a mathematician would be able to also calculate on how many cores this can effectively run. I didn't. Yeah, you could do with this also different stuff, so you could also do something like a multithreaded version of an automatically multithreaded version of Game of Life. So this is also running on multiple cores. It is no follow-up. It is using also only one tick. Very same principle like the oscillator example. These examples are more or less to prove that the runtime is capable of covering this corner case of a symmetric system, which you might believe it or not is quite harder than an asymmetric system because such a system has a variable meaning of time. Time is basically this consecutive follow-up of ticks. An asymmetric system doesn't require the time to be that precisely synchronized like for example GOR or in this case such a wave. So if you mess up order in scheduling, then you mess up this circle. There is no pi, no constant nothing. This very nice circle is really just appearing because things are getting executed in the right order. Yes, I hope now there are any questions. Still nothing on ILC. Is there anything on the etherpad? Ah, okay. The question you mentioned before. Yeah, I think that's it, isn't it? Yeah, that's it. But I hope I could wake the interest for someone to play with such systems. I think they enable us to do things cannot think in a classically way. Yeah, probably someone is interested. Well, have you given people your contact details so that they can talk to you afterwards or? Yes, on the MykitLab instance is mentioned on the TOX page. There is a question if it is free software, it is licensed GNU-Aegypia. So yes, it is free software, even a bit more restrictive than necessary. Okay, if that's everything, shall we thank the audience for bearing with us over the technical difficulties and thank you all for coming. Thank you for hosting. I thank you all for listening and also you for moderating. Yeah, that was accidental. Well, honestly, I'm glad because I'm not that experienced with such stuff and I'm also not the empathic communicative guy. So I'm glad this time is on my side. We do what we can. So yeah, thank you all for coming. The next ad hoc session is at 1400 UTC, but at that point also the main track resumes in English. So thank you all very much and see you later. See you later. Bye.