[00:00.000 --> 00:11.040] So, good morning everyone. I am Adrian, a PhD candidate from Lidon University in the [00:11.040 --> 00:16.800] Netherlands and I'm going to, today I'm going to talk about my project, my software, so [00:16.800 --> 00:22.840] called relativization, which is a weird thing, an interstellar social simulation framework [00:22.840 --> 00:27.440] and a turn-based strategy game as well. And I hope this can be an interesting start of [00:27.440 --> 00:35.960] today's schedule. So, before I go into the details of my thingy, I would like to do a bit of self [00:35.960 --> 00:43.400] introduction because it relates to my overall open source development experience. And I was [00:43.400 --> 00:50.200] educated in physics, I did my bachelor in physics, I did some master's research on so-called [00:50.200 --> 00:57.160] gravitational waves under the LIGO collaboration. And I must say, like before my master's research, [00:57.160 --> 01:01.280] I would say, kind of mathematical students, I didn't really like computer, I like pen and paper [01:01.280 --> 01:06.640] more. And, but like my research forced me to appreciate computer because I was forced to use [01:06.640 --> 01:12.560] doing things like supercomputers, Linux, terminals, and writing programming language, programming [01:12.560 --> 01:19.120] like C or Python. So, I started to appreciate like software or open source software in general. So, [01:19.120 --> 01:28.560] that's why I get into this world. And after my master, I decided to kind of switch my field to [01:28.560 --> 01:33.280] do something social science. So, that's why I came to the University to do something called like [01:33.280 --> 01:39.760] quantitative science study. And I'm supposed to work on, supposed to work on social modeling, [01:39.760 --> 01:45.720] simulation, or data analysis on some kind of social data, actually most specifically for [01:45.720 --> 01:50.480] academic system. And as a hobby, I kept contributing to open source software because I think it's [01:50.480 --> 01:56.160] fun to work on, I mean, just use the software and if you find something wrong, then you just submit [01:56.160 --> 02:02.200] a PR or a great issue for that. And I learned a lot from that kind of process. And then like, [02:02.200 --> 02:08.960] after, because I started my PhD right before the pandemic, as you can imagine like things go [02:08.960 --> 02:15.400] when quite long, because I partially blame the pandemic, because for example like the data that I'm [02:15.400 --> 02:22.440] supposed to use is still not ready, even now. And the whole collaboration become mass, the [02:22.440 --> 02:27.560] infrastructure is mass. So, I partially also blame the engineer in my collaboration because [02:27.560 --> 02:36.400] they are so annoying to work with. So, I have to rescue my PhD, right? I can't wait for that, [02:36.400 --> 02:42.160] the things to happen. So, I need something to work it out. I can work it out by myself. And [02:42.160 --> 02:49.000] because I, because it's pandemic, so I have to work from home. And I was also kind of traumatized [02:49.000 --> 02:54.000] by the collaboration that I experienced. And I know something about physics because of a [02:54.000 --> 02:58.160] background. I know something about social modeling. And I'm also kind of familiar with [02:58.160 --> 03:04.600] software engineering. I'm not trained in that field, but I learned a lot from my hobby. So, [03:04.600 --> 03:10.880] it is natural for me to try to combine these things together to create something for a thing, [03:10.880 --> 03:17.800] a weird thing, interstellar simulation. And then like, perhaps some of you guys are a fan of [03:17.800 --> 03:23.320] science fiction, movies, or games. And you may ask these kind of big questions like, [03:23.320 --> 03:28.160] will human civilization become interstellar one day in the future? Or like, does alien exist or [03:28.160 --> 03:35.960] not? And if they exist, or if we will become interstellar, we will be curious about like, what [03:35.960 --> 03:41.000] is the form of society of those interstellar civilization, right? And of course, it's very [03:41.000 --> 03:45.920] hard to study those kind of thing, rigorously, in academic settings. But perhaps one way, [03:45.920 --> 03:52.240] at least I claim, I argue that one way to try to explore this is to assume that some social [03:52.240 --> 03:57.600] theory we know nowadays can still be a good approximation for that kind of society, like [03:57.600 --> 04:02.880] perhaps if we expect that they to also be utility seeking, or there are some collective [04:02.880 --> 04:07.320] actions there. And of course, we can study that rigorously because we don't have the data, [04:07.320 --> 04:12.080] we don't have observations, but we can try to explore this kind of domain by simulation. [04:12.080 --> 04:19.200] And in case if you're not familiar with social modeling, or like, [04:19.200 --> 04:28.200] in case if you're not familiar with social modeling, and nowadays when we talk about social simulation, [04:28.200 --> 04:33.880] it's majority, like they're talking about agent based modeling. So, social scientists design [04:33.880 --> 04:39.240] some behavior rules based on the understanding of how human works, or based on some experiments to [04:39.240 --> 04:44.360] design computational rules for agents, and they put the agents into a world just like [04:44.360 --> 04:49.760] machine learning people do, and to see how to interact with each other and interpret the [04:49.760 --> 04:57.200] overall simulation outcome from that. And there are many existing frameworks that can help us [04:57.200 --> 05:05.600] to do this kind of simulation, but I have to create my own framework because for existing [05:05.600 --> 05:11.240] social simulation framework, they don't support the physics well, because we're going to work [05:11.240 --> 05:17.840] on like interstellar society, and it is a scale that is not on the earth, so it's not easy to [05:17.840 --> 05:21.960] deal with, it's possible, but it's not trivial. And there are also some kind of physics simulation [05:21.960 --> 05:25.480] framework out there as well, but they are not built for social scientists, so it's also a bit [05:25.480 --> 05:34.640] hard to work with. So that's why I have to create my own framework. I think it's interesting and [05:34.640 --> 05:42.880] useful if I want to create something meaningful for this thing. And when I talk about the physics [05:42.880 --> 05:49.240] for interstellar society, I'm talking about special relativity, which is simple undergraduate [05:49.240 --> 05:55.400] level physics, because it is a fiction when we consider a scale like 100 light years or 10 [05:55.400 --> 05:59.520] light years, I think it's a good starting point of like try to imagine about this kind of thing. [05:59.520 --> 06:07.200] And special relativity tells us that there's an intrinsic time delay out there, so everything [06:07.200 --> 06:13.040] cannot travel faster than the speed of light, and also special relativity tells us that like [06:13.040 --> 06:18.840] there's a time direction effect, so if you move very fast, close to the speed of light, [06:18.840 --> 06:26.040] you're close to the store, so experience the store time essentially. And in the setting of [06:26.040 --> 06:33.080] social simulation, we have to deal with problems like what can you see or what can an agent see, [06:33.080 --> 06:39.360] and how an agent interacts with other agents, because of time delay, and how we change the [06:39.360 --> 06:49.400] state of the agent. I will go into this one by one in the following slides. Because of the time [06:49.400 --> 06:54.800] delay, information travels at the speed of light, so we are not seeing each other instantaneously. [06:54.800 --> 07:02.080] We are seeing the path of each other because of the delay, so here the red agent, the red people [07:02.080 --> 07:08.360] here see the, the red person here see the, the, the path of the blue, blue agents of people, [07:08.360 --> 07:15.000] because they have, they have time delay, and it depends on the distance. And technically they [07:15.000 --> 07:24.640] see the, the path like comb of the, of the, of the universe at that point. And how the second problem [07:24.640 --> 07:28.840] is how the, how the agents interact with each other. I mean if you're a programmer, you're [07:28.840 --> 07:34.960] probably familiar with the command design pattern, and this is used for like dealing with, if you [07:34.960 --> 07:38.120] have something you might execute, but if you have, if you have a delay, then you have to create a [07:38.120 --> 07:45.120] command, wait for a delay, and send it to, send it to a target, and this is what I, I, I, I used it in, in, in, in this framework, [07:45.120 --> 07:49.840] so that like if you have some, some, some agent need to interact with each other, they can't, they can't [07:49.840 --> 07:55.800] just do that directly, they have to, have to send the command and, and the, the command travels at a speed of light in, in, in the [07:55.800 --> 08:07.760] universe. And lastly, the, the, the last problem, how, how we change the state of the agent. We define [08:07.760 --> 08:13.840] a term here called mechanism, which is essentially the dynamics of the model. It, it, it changed the state of the [08:13.840 --> 08:21.280] agents and, and send commands out, so you define the whole, how, how, how the model actually works scientifically. And [08:21.280 --> 08:30.720] recall that because clock takes over for, for, for, for moving agents, so I divide this into, into two types of [08:30.720 --> 08:38.120] mechanism, a regular mechanism executed one, a process once per turn, and dilated mechanism process once per end turn [08:38.120 --> 08:44.240] because it depends, and, and, and the end depends on the speed, because if it is moving faster, then some things, it's [08:44.240 --> 08:52.080] slower, time is slower there, so executed, the execution is slower there. So it is, for, for, for convenience, if you, if you [08:52.080 --> 08:57.000] model your thing space, and if you, if you, if you model your thing space on these two, two types of mechanism, then it's [08:57.000 --> 09:05.280] easier to, to, to, to adjust, to, to follow the physics. And as an example, regular mechanism could be something like [09:05.280 --> 09:11.000] you observe things, and update your information, and it's not something that you, it actually takes time so it can, it can [09:11.000 --> 09:16.360] be executed once, once per turn. And for dilated mechanism, it can be something like manufacturing, it actually takes [09:16.360 --> 09:24.160] time to, to, to produce some product, and to, to, to, to make, make it and send it out. So if you have a slower time, then [09:24.160 --> 09:33.720] you, you manufacture that, sorry. So to deal with this, this kind of problems, I, as I said, I created framework, and the [09:33.720 --> 09:41.040] framework is written in Kotlin, there are many reasons behind that, I'm not going to, to, to give you that, and, and [09:41.040 --> 09:48.480] basically the framework and force a specific way to, to, to, to model your, your, your, your social model, so that it, it can [09:48.480 --> 09:54.560] be automatically, automatically account for the physics. And it also provides some functionalities to, to, to help you to [09:54.560 --> 10:01.800] develop the so-called in this data social model. And it deal with some technical subtleties like parallelization of the, of [10:01.800 --> 10:10.800] the, of the simulation, and how do you serialize things into, into, into data, or like how do you make deterministic [10:10.800 --> 10:22.280] simulation using, under a parallel process. And this is the, the kind of the core of the, of the framework. And you can [10:22.280 --> 10:27.880] check my archive repeat, and actually it's going to be a proceeding for, for some other conference. And, and for the, for the [10:27.880 --> 10:37.320] algorithmic details, and for the mathematics details. You want to take a picture? I, I, you can find it like in, in the [10:37.320 --> 10:48.280] last slide, but anyway. So, I mean, I, I, I didn't begin, I, I wasn't an experienced programmer when I started this [10:48.280 --> 10:54.640] project, so I, I make some decision that perhaps I would change if I, if I do it in another way. If, if I start it, start [10:54.640 --> 11:02.280] from now. But like, I, I, I, anyway, like I make some decision, for example, here on, on how, how we should use this [11:02.280 --> 11:30.520] framework, for example, I decided that like this should be used, say, I say, I say, I say, okay, here it works. So, there [11:30.520 --> 11:35.520] I have some technical reason behind why I made this decision because I think it's always easier to provide a library for people to use. [11:35.520 --> 11:45.520] I mean, because the reason behind it is that I try to keep it in a pure Kotlin project and it's quite not possible to do things like this, [11:45.520 --> 11:52.520] serializing string into objects because the diffraction library of Kotlin is not very powerful. [11:52.520 --> 11:58.520] And anyway, this is the decision I made. I may change in the future, but it's how it's now working. [11:58.520 --> 12:08.520] And to use this, you have to create a template using the source code and build a model based on the template. [12:08.520 --> 12:14.520] And I have created a few effect samples on how to use this framework. [12:14.520 --> 12:24.520] I mean, I will do a brief illustration on the results because it's very interesting to see how things actually work out. [12:24.520 --> 12:31.520] So the first example is the flocking model, which is kind of the standard of the 101 HMAS modeling. [12:31.520 --> 12:38.520] It's a very simple model. The bird follows a very simple alignment bruise and they align with each other. [12:38.520 --> 12:43.520] And it creates some interesting microscopic pattern as shown in the figure. [12:43.520 --> 12:47.520] And here we are interested in interstellar flocks. [12:47.520 --> 12:54.520] I mean, it's a very hypothetical scenario, but you can interpret it as kind of a group of spaceships [12:54.520 --> 13:00.520] and they try to align with each other in the universe where some kind of mysterious creature like living in space. [13:00.520 --> 13:07.520] And I assume for the sake of physical realism, I assume they are propelled by a proton rocket [13:07.520 --> 13:10.520] and we can measure how well the flocks align. [13:10.520 --> 13:17.520] And this is the simulation result. I'm also not going into the details of this thing. [13:17.520 --> 13:23.520] But you can see some interesting things like if you can adjust the speed of light because this is a simulation [13:23.520 --> 13:28.520] and if the speed of light is stored and they take more time, it takes longer to communicate [13:28.520 --> 13:35.520] and they are less well-ordered and you can also tune the perturbation on the flock [13:35.520 --> 13:41.520] and so it takes more, it's harder to align with each other and it takes more energy to do so. [13:41.520 --> 13:49.520] And you can see in the figure on the left hand side or in the right hand side in your alignment [13:49.520 --> 13:57.520] then it takes half the mass of the population to align with each other for one year, for one turn. [13:57.520 --> 14:04.520] So it's not a very environmentally friendly way of traveling, I would say. [14:04.520 --> 14:14.520] And the second example is some kind of knowledge dynamics which is closer to what I'm supposed to do in my PhD. [14:14.520 --> 14:22.520] So we study how I try to model how research or knowledge is generated in the interstellar setting [14:22.520 --> 14:28.520] and there are some assumptions that are made like cooperation takes time, [14:28.520 --> 14:35.520] we need cooperation to stimulate innovation but cooperation takes time to process. [14:35.520 --> 14:39.520] You have to invite people to cooperate with you and you have to wait for the response [14:39.520 --> 14:43.520] and if it is very far away then it takes a long time to work with people. [14:43.520 --> 14:47.520] So this thing is affected by the time delay. [14:47.520 --> 14:51.520] And there are some other factors like if there is a small time delay [14:51.520 --> 14:59.520] and so you have a more rapid information exchange then it essentially creates a more competitive environment [14:59.520 --> 15:04.520] because when I do something and you want to compete with me and you update information very frequently [15:04.520 --> 15:11.520] then it creates a kind of stress to work your research out. [15:11.520 --> 15:15.520] And also like research of the next time, it is a dilated mechanism. [15:15.520 --> 15:18.520] It is affected by the time dilation if you want to move. [15:18.520 --> 15:23.520] There is a cause if you want to move closer to each other to do research [15:23.520 --> 15:30.520] like there is a cause if you want to move from your home country to this place to work with each other. [15:30.520 --> 15:34.520] So this is also some kind of simulation results. [15:34.520 --> 15:37.520] This I would say is kind of interesting. [15:37.520 --> 15:44.520] So we can also tune the speed of light and as you see in the figure on the left-hand side [15:44.520 --> 15:52.520] the blue curve was lower at the beginning and it becomes higher eventually. [15:52.520 --> 15:57.520] This is a curve when you have a very slow information travel. [15:57.520 --> 16:03.520] Because the innovation or the cooperation started very slowly at the very beginning [16:03.520 --> 16:10.520] so it rises very slowly but at the finals ultimately because of its less competitive [16:10.520 --> 16:15.520] overall research outcome becomes better eventually. [16:15.520 --> 16:18.520] I think it is an interesting result. [16:18.520 --> 16:22.520] The figure on the right-hand side shows that there are two kinds of strategies. [16:22.520 --> 16:26.520] You can stay in your home country and do all the things remotely [16:26.520 --> 16:29.520] or you can move the conference physically to work with each other. [16:29.520 --> 16:33.520] The orange curve represents the moving strategy [16:33.520 --> 16:37.520] and the blue curve represents the remote strategy. [16:37.520 --> 16:43.520] There is a cause imposed by the city because there is time dilation [16:43.520 --> 16:47.520] so it starts out lower and eventually pays off in the future. [16:47.520 --> 16:53.520] I think it is an interesting result to show up here. [16:53.520 --> 17:01.520] This is kind of interesting but you can also always criticize about this kind of model [17:01.520 --> 17:07.520] because it is too hypothetical. We are studying something that is not happening in the real world [17:07.520 --> 17:09.520] and perhaps we are getting nothing out of that. [17:09.520 --> 17:14.520] I kind of agree with this criticism but I am just trying to get something out of the framework. [17:14.520 --> 17:19.520] If people are not interested in this kind of model [17:19.520 --> 17:22.520] or I also feel like this is not interesting enough [17:22.520 --> 17:31.520] and then I made the decision that perhaps I can make a game out of this to make it more interesting. [17:31.520 --> 17:37.520] The reason why I decided to make a game is also because I like simulation games [17:37.520 --> 17:43.520] and simulation games are kind of similar to modeling [17:43.520 --> 17:46.520] or HMAS modeling in a sense. [17:46.520 --> 17:53.520] Also, I have many things that I want to test out. The model that I have presented are kind of simple models [17:53.520 --> 17:56.520] but they are more complicated mechanisms that you can implement [17:56.520 --> 17:58.520] but you can't do this rigorously because they are so complex [17:58.520 --> 18:03.520] you can't get anything adequate or interpretable from those ideas. [18:03.520 --> 18:08.520] A game provides an environment for me to test things out [18:08.520 --> 18:16.520] and to just explore what I can do in this institutional model. [18:16.520 --> 18:23.520] Also, perhaps this is one of the sensible ways to get something actually useful from the framework. [18:23.520 --> 18:28.520] If it is not very academically interesting, at least I have a game for that. [18:28.520 --> 18:39.520] For a game, it can be very complex and I try to address many different things in the game [18:39.520 --> 18:42.520] and I try to ask a very good question. [18:42.520 --> 18:47.520] For example, we can try to ask how should the economy look like in the international society? [18:47.520 --> 18:50.520] Does credit-based economy work? [18:50.520 --> 18:53.520] Nowadays, we are relying on currency, credit card [18:53.520 --> 19:00.520] but those kinds of currency relies on some fundamental building blocks of the society [19:00.520 --> 19:04.520] which might not work in an interstellar setting because the time delay, how do you exchange money [19:04.520 --> 19:07.520] and how do you define the exchange rate? [19:07.520 --> 19:14.520] Perhaps a simple part of the economy that we use historically is a better choice for those kinds of society here [19:14.520 --> 19:21.520] and perhaps we can use some kind of fuel or energy as the money instead of credit card. [19:21.520 --> 19:24.520] Also, we can ask how the political system works. [19:24.520 --> 19:26.520] Does democracy work there? [19:26.520 --> 19:32.520] If you have to wait for 100 years to receive the full-time results from the other planet. [19:32.520 --> 19:37.520] We can also ask how we can optimize scientific research in this kind of system. [19:37.520 --> 19:41.520] I have my own ideas on how these things work. [19:41.520 --> 19:46.520] I put all the things into the game including population dynamics, politics, diplomacy, economics [19:46.520 --> 19:52.520] like warfare, science and technology. Some of them are typical elements in strategy games [19:52.520 --> 20:00.520] and some of them are not that typical but I still get the inspiration from some other games. [20:00.520 --> 20:07.520] I try to get this to work on PC and Android [20:07.520 --> 20:13.520] and that's one of the reasons why I choose Collin to implement this kind of thing [20:13.520 --> 20:19.520] and I hope this is going to be a multi-player game in the future. [20:19.520 --> 20:23.520] I implemented some kind of server-kind architecture. [20:23.520 --> 20:30.520] For a game, you have to limit how a client can act [20:30.520 --> 20:34.520] because you can't allow them to do everything that they are going to cheat in the game. [20:34.520 --> 20:38.520] What they can do is essentially receive a few of the universe [20:38.520 --> 20:42.520] and they can send a command to do action. [20:42.520 --> 20:48.520] I also created a utility-based or DO utility-based AI for the game. [20:48.520 --> 20:53.520] This is the Baker architecture that is built on top of the framework. [20:53.520 --> 20:56.520] This is the screenshot of the game. [20:56.520 --> 20:59.520] I know this is not graphically very attractive but this is like, [20:59.520 --> 21:17.520] oh, I can do and... where is it? [21:17.520 --> 21:35.520] I'm losing my side. [21:35.520 --> 21:40.520] This is how the game actually looks like. [21:40.520 --> 21:48.520] You can do some things here to do something and add some commands. [21:48.520 --> 21:53.520] This is a complex interface and so I'm not going to actually show everything here [21:53.520 --> 21:56.520] but as something is working here. [21:56.520 --> 21:59.520] What's the scale? [21:59.520 --> 22:01.520] The spatial scale. [22:01.520 --> 22:10.520] For this, it's like three times three light years keep. [22:10.520 --> 22:12.520] This is a very small universe. [22:12.520 --> 22:14.520] It can be larger. [22:14.520 --> 22:20.520] At least it can handle a thousand light-year keep game without pressing my computer. [22:20.520 --> 22:23.520] Thanks for the open-source ecosystem. [22:23.520 --> 22:27.520] I can rely on all kinds of open-source library to build my game. [22:27.520 --> 22:32.520] I use DeepGDX for the working interface, I use Coroutine for the parallelization, [22:32.520 --> 22:37.520] and also thanks for the open-art community so that because I'm not an artist, [22:37.520 --> 22:39.520] I can't create all the art by myself. [22:39.520 --> 22:43.520] I can rely on creating component-licensed assets and I can use open-source software [22:43.520 --> 22:48.520] to escape if I want to draw something. [22:48.520 --> 22:56.520] It's going to be the end of my presentation but I'd like to have a bit of reflection on my project. [22:56.520 --> 23:00.520] I think I've learned a lot by contributing to open-source software [23:00.520 --> 23:05.520] and the ecosystem gave me plenty of building blocks from my own project. [23:05.520 --> 23:08.520] Of course, because of this, it's natural for me to also open-source my project [23:08.520 --> 23:11.520] and at least I've created something interesting. [23:11.520 --> 23:15.520] There are also some problems that I face during the development of this project. [23:15.520 --> 23:18.520] For example, there's a lack of open-source culture in my workplace. [23:18.520 --> 23:23.520] Some people there do use open-source software but most of them do not care that much. [23:23.520 --> 23:26.520] Most of the time, I'm by myself. [23:26.520 --> 23:31.520] As a one-man project, it's a bit too ambitious, I would say. [23:31.520 --> 23:35.520] I don't have time to publish all the things like graphic interface documentation [23:35.520 --> 23:39.520] and I can't ensure that things are fun to play and I don't have time to work on the translation. [23:39.520 --> 23:43.520] I did try but I don't have time to work on all kinds of things [23:43.520 --> 23:47.520] because I'm also doing my PhD, I have to write papers and do presentations. [23:47.520 --> 23:53.520] As I decided to go fully open-source, I chose those libraries to depend on [23:53.520 --> 23:58.520] but perhaps there are some kind of industry standard solutions like [23:58.520 --> 24:01.520] if you're creating a game, people just use Unity for that [24:01.520 --> 24:05.520] and perhaps it would be better for the project so I have more time for other things. [24:05.520 --> 24:13.520] It's just something that perhaps there's a price to pay for if you decide to go to go open-source. [24:13.520 --> 24:19.520] Actually, I did try a bit to commission my process because it's possible to sell an open-source game, right? [24:19.520 --> 24:21.520] I know it's possible but it's also very hard to do so. [24:21.520 --> 24:24.520] It takes time to advertise it so I gave up eventually. [24:24.520 --> 24:27.520] I didn't have time for an hour to push it forward. [24:27.520 --> 24:30.520] This is the summary of my presentation. [24:30.520 --> 24:35.520] I have created a framework for industrial and social models [24:35.520 --> 24:37.520] and I have created some models based on the framework. [24:37.520 --> 24:40.520] I have also created a game on top of that [24:40.520 --> 24:43.520] and perhaps it's lacking some immediate practical value [24:43.520 --> 24:48.520] and that's not what I thought was that like it didn't exist tomorrow, right? [24:48.520 --> 24:51.520] But I think it's not going to happen in a short while. [24:51.520 --> 24:56.520] So perhaps there's no immediate practical value but I still believe this kind of meaningful [24:56.520 --> 24:58.520] and educational exploration. [24:58.520 --> 25:03.520] If the game is fun to play eventually then you can ask your kids to play for that [25:03.520 --> 25:06.520] and perhaps they can learn some physics from the game, right? [25:06.520 --> 25:10.520] I don't know. And at the very least, at the most important, [25:10.520 --> 25:13.520] unless I feel like I've achieved something in my PhD, [25:13.520 --> 25:16.520] I'm not wasting my time in my pandemic. [25:16.520 --> 25:23.520] So that's all my presentation and this is the link of the project [25:23.520 --> 25:27.520] and if you'd like to make it a star, just check it out. [25:27.520 --> 25:31.520] And the thing that I show is, I think you can find those things [25:31.520 --> 25:33.520] in the readme file of this page. [25:33.520 --> 25:36.520] So thanks a lot for your attention. [25:47.520 --> 25:51.520] We'll take a few questions while the next speaker will come and... [25:51.520 --> 25:52.520] Thank you. [25:54.520 --> 25:56.520] Okay, Hafer. [25:56.520 --> 26:01.520] In your simulations when you said that the simulations then cluster, [26:01.520 --> 26:05.520] how many years was simulated in the simulation [26:05.520 --> 26:07.520] before you got to sort of the result? [26:10.520 --> 26:12.520] Yeah, I'm talking like... [26:12.520 --> 26:15.520] Can you repeat the question for the recording? [26:17.520 --> 26:24.520] So the question was like how many years did I simulate for the model that I presented here? [26:24.520 --> 26:28.520] I typically simulate it for 1,000 or 2,000 years [26:28.520 --> 26:32.520] and because of the spatial scale it's like 10 times 10 times 10 light year [26:32.520 --> 26:37.520] so it has affection time for the spaceship [26:37.520 --> 26:42.520] to move towards each other and to do the cluster. [26:42.520 --> 26:47.520] I assume that they move at a speed of light velocity. [26:47.520 --> 26:49.520] And you have a question? [26:49.520 --> 26:52.520] Yes, I guess it's more technical. [26:52.520 --> 26:55.520] So your framework is written in copper. [26:55.520 --> 27:01.520] Does it support any form of extension like in another JVM image? [27:01.520 --> 27:06.520] I mean, in principle you can use Kotlin with other JVM images. [27:06.520 --> 27:11.520] In your, for instance, or I guess customized agents, [27:11.520 --> 27:14.520] maybe even maybe the physics model that say [27:14.520 --> 27:20.520] I want to implement faster than light and travel or something like that. [27:20.520 --> 27:28.520] So the question was like can you use other JVM language to extend it? [27:28.520 --> 27:32.520] I think in principle it is possible because you can always, [27:32.520 --> 27:36.520] the way to use this is to create something from the source code [27:36.520 --> 27:40.520] and you can always work with JVM language in the source code. [27:40.520 --> 27:45.520] But I'm not entirely sure because I use some Kotlin feature like inline function [27:45.520 --> 27:48.520] to simplify the code so I'm not sure for that kind of thing [27:48.520 --> 27:51.520] can you use it nicely with other JVM language? [27:51.520 --> 27:54.520] I know you didn't go into that, but why Kotlin? [27:54.520 --> 27:56.520] Why not like Azure or Java? [27:56.520 --> 28:00.520] I mean, because I want to work on, I want to actually work on Android [28:00.520 --> 28:04.520] and you know, Android Java support is not great. [28:04.520 --> 28:07.520] Okay, sure. [28:07.520 --> 28:19.520] Thank you.