WEBVTT 00:00.000 --> 00:20.000 All right, welcome to Lightning Talks. 00:20.000 --> 00:44.000 Let's see how much time I can squeeze this into. 00:44.000 --> 00:50.000 I remember the work group for digitalization in the city of Zagreb. 00:50.000 --> 00:56.000 We have this task of digitalizing the city. 00:56.000 --> 01:03.000 My personal interest in the past year was to try and make the open data a little bit better, 01:03.000 --> 01:09.000 because Croatia is one of the worst, or sometimes the worst country with open data usage. 01:09.000 --> 01:14.000 And we don't have a lot of time because there's elections, maybe somebody is going to change power or something, 01:14.000 --> 01:16.000 and also we don't have a lot of budget. 01:16.000 --> 01:23.000 So we have to really be super innovative and take one year to figure out how to solve being the worst. 01:23.000 --> 01:25.000 And this is how we did it. 01:25.000 --> 01:31.000 So the thing is we tried to actually change the philosophy of the people. 01:31.000 --> 01:36.000 So the thing is there is a lot of open data, but nobody is using it. 01:36.000 --> 01:41.000 And the main reason is because, of course, people are not funded to do it. 01:41.000 --> 01:47.000 You know, and they don't have this culture to use open data and create some projects. 01:47.000 --> 01:56.000 So we made this open call that we said, okay, anybody in the NGO sector or even private individuals can just apply with a cool project. 01:56.000 --> 02:03.000 We'll have this jury of like the best open data people we can find in Zagreb in Croatia. 02:03.000 --> 02:10.000 And we're going to sit down pick up the best projects, you know, and give them the full funding they need to do whatever they want. 02:10.000 --> 02:12.000 And that was the idea. 02:12.000 --> 02:20.000 And the second idea was to do it very in a very short time so that we can actually repeat it actually like again in six months. 02:20.000 --> 02:29.000 So that we actually have like a rolling thing that that creates some kind of expectation on the whole community that, okay, 02:29.000 --> 02:37.000 there is actually every six months some kind of call that we can apply to and get some money to do something with the public data, you know. 02:37.000 --> 02:47.000 And that's it. I mean, in December 12, 13 months ago we got the amendment for the budget two years, one million euros. 02:47.000 --> 02:49.000 So half a million every year. 02:49.000 --> 02:51.000 Then we made this multi-year program. 02:52.000 --> 03:02.000 Then a few months ago we opened the call. We gave out 14 different projects from like opening data for transportation for medicine for kindergarten and so on. 03:02.000 --> 03:12.000 And everybody is now currently working on it and they haven't till May to finish it when the next call will be for new projects or updating the current ones and so on. 03:12.000 --> 03:24.000 And the thing is all these projects are very actually cheap because these are NGOs who are already doing it, you know, like people from local Wikipedia branches and so on. 03:24.000 --> 03:31.000 So they're not going to vendor lock us. It's all going to be probably either open source or at least like a very public. 03:31.000 --> 03:41.000 So the thing is with the budget of I think in this first call 300,000 euros we were able to squeeze 14 different big IT projects. 03:41.000 --> 03:50.000 Which of course would be maybe, you know, maybe one project if we went into this as a normal, you know, like a call that we want something done. 03:50.000 --> 03:54.000 And the second thing is we don't really want just to make 14 projects. 03:54.000 --> 04:07.000 We want to foster this culture that, okay, whenever you have an idea you can just apply and do something because then the community will actually grow and at some point probably we're going to rise up in the ranks of open data usage and that's it. 04:07.000 --> 04:20.000 And that's about it. I don't have anything else to say, but you have my email, you have my mobile phone, anybody's interested in this and wants to see our public programs and when the funding is and so on. 04:20.000 --> 04:32.000 And if you have some idea, which is publicly useful, either for the city of Zagreb or in general, of course you can contact me. Thank you. 04:32.000 --> 04:44.000 Hello, everybody. Okay, so for this talk, a card game for you, check his. 04:44.000 --> 04:50.000 Okay, I want you to participate, so we'll play a little game of yes or no, is that possible? 04:50.000 --> 04:56.000 Yeah, cool, cool. Okay, so do you like open source? 04:56.000 --> 05:04.000 That one was easy. Okay, a little bit harder, I expect less. Do you like card games? 05:04.000 --> 05:08.000 Cool, cool. Okay, do you like tech? 05:08.000 --> 05:17.000 Okay, okay, a few know if you know I expected that, but for the others who say yes to everything, I have the profit card game for you because I made a card game about tech. 05:17.000 --> 05:22.000 It's written and you can check out the repository, it's open source. 05:22.000 --> 05:31.000 And what is this card game? It's about making the best project, so to make a best project, everyone knows that you need community members. 05:31.000 --> 05:43.000 You need great people to have it. And this game contains a lot of real people about the first editions are about the rest language and especially baby community. 05:44.000 --> 05:48.000 Yeah, baby is a game engine written in rest by the way. 05:48.000 --> 05:53.000 And yeah, that's it. You need community members, peers. 05:53.000 --> 05:59.000 You need techniques, like socializing is a kind of technique, compiling is like a technique. 05:59.000 --> 06:09.000 And a lot of references in the tech world where you can discuss it also and like open source is a technique and close source is a technique. 06:10.000 --> 06:24.000 And you also need tools to make your best project. And so you combine technique tools and community member to have the most points and then you discuss the card. 06:24.000 --> 06:26.000 That's it. 06:26.000 --> 06:38.000 So the rules of the game are quite simple. You start with two cards, you draw one card and then you play one card on your read the card on the description on the card on your followed instruction and that's it. 06:38.000 --> 06:49.000 That's the whole rule. Well, there are a few of course special keywords and stuff, but yeah, that's the basic understanding of the rules. 06:49.000 --> 06:58.000 So it's supposed to be it's intended to be quite short, like I said 10 minutes, it's supposed to be short. 06:58.000 --> 07:08.000 And it's useful because you can learn something about the rustic system or it could be an addition about JavaScript about postgres about whatever you like. 07:08.000 --> 07:20.000 If you come and help building the game because there is three addition one is about bevy, one is about rust and one is about you will discover it if you check out the QR code. 07:20.000 --> 07:30.000 And yeah, according to me it's very fun and we did a few if you try at first them and people enjoyed it. So yep, that's it for me. 07:30.000 --> 07:33.000 Thank you. Take out the QR code. 07:33.000 --> 07:52.000 Hello, my name is Daniel Tiltener. I'm talking about the crunch compiler and first question who in here knows chicken scheme. 07:52.000 --> 08:11.000 Okay. Well, chicken scheme is a implementation of the scheme standard. The upcoming chicken scheme is going to implement the R7 RS subset standard and crunch is a static subset of this. 08:11.000 --> 08:15.000 It's inspired by pre scheme for those people who know pre scheme. 08:15.000 --> 08:36.000 It's written in chicken scheme so you can leverage the entire ecosystem of chicken and it can be used to create standalone programs or to just create subsets that you use inside of already existing chicken scheme program. 08:37.000 --> 08:47.000 Why chicken already compounds to see so the advantage of crunches that it has barely any runtime at all. 08:47.000 --> 08:54.000 It doesn't have a garbage collector except for a very simple breath counting if needed. 08:55.000 --> 09:01.000 And it's due to all these things. It's much more. 09:01.000 --> 09:12.000 It uses much less resources and it's much faster. It's in fact usually equally as fast as see while chicken usually is half as fast. 09:12.000 --> 09:23.000 And crunch is also bare metal ready so you can write programs that run directly on hardware without needing an OS in between. 09:23.000 --> 09:29.000 This of course needs some sacrifices to be made but also optimizations. 09:29.000 --> 09:40.000 Well, first of all, it doesn't support certain things of scheme. For example, there are no continuations. There are no true closures. 09:40.000 --> 09:49.000 But usually the compiler can optimize those that stuff away away. So it's not even even if you use it, it will be optimized away. 09:49.000 --> 09:53.000 There's a multi-pass type inference algorithm. 09:53.000 --> 10:00.000 There's some lambda lifting done and as much as possible, the code is being evaluated before compilation. 10:00.000 --> 10:08.000 And all the more difficult optimizations are left to the C compiler. 10:09.000 --> 10:22.000 So last thing, where can you read more about it? And this would be, since it's an extension of chicken, it's available on the chicken wiki. 10:22.000 --> 10:26.000 The URL is a bit long. That's why I've placed the QR code. 10:26.000 --> 10:33.000 And you can also find the community on the chicken channel on Libra Chat. Thank you very much. 10:33.000 --> 10:38.000 I'm sorry. 10:47.000 --> 10:52.000 Okay, okay. Sorry. Thank you. Hi, everyone. 10:52.000 --> 10:57.000 This is maybe it's to be. The writing is knitting our internet. 10:57.000 --> 11:02.000 So I am Tommy. Usually, this is my favorite part in the talks because I'm egocentric. 11:02.000 --> 11:09.000 But since we don't have the time, Tommy dot space is my website. Everything you need to know about me is there. 11:09.000 --> 11:20.000 Now, anything that we're internet is a workshop, an interactive in person workshop of 60 to 90 minutes. 11:20.000 --> 11:33.000 About decentralization, but for normies, like we are here and most of us know the issues of centralization versus these centralizations and all of the comes with it ish. 11:33.000 --> 11:40.000 And my grandma, for example, has no idea, but she has an Instagram account. 11:40.000 --> 11:48.000 So how do we make people who don't care about technical stuff, see that the technical stuff are not so technical anymore? 11:48.000 --> 11:57.000 It's a face-to-face journey and it's interactive journey through the history of the internet. It's interdisciplinary because it's about social sciences, it's about politics. 11:57.000 --> 12:08.000 There's a bit of economics to, but my grandma did it literally, literally, my little cousins of eight years old, so it's totally intergenerational too. 12:08.000 --> 12:18.000 And it's international because it's translated in many languages. So far, we have a Turkish, Italian, French, German, and Greek. 12:18.000 --> 12:28.000 And it's accessible because it's accessibility is made by the other participants' presence in the workshop itself. 12:28.000 --> 12:46.000 Yeah, all of this, thanks to my grandma's yarn. The workshop is simulated with a simple yarn and centralization, this is a tangible, practically present, between among the people doing the workshop. 12:46.000 --> 13:02.000 So it's also adaptable in modular, so why is it so accessible to so many people? Because there are many modules, the core module is a simulation of centralized versus decentralized network with a yarn. 13:02.000 --> 13:19.000 The main module, there are these more discussions and in that notions, then there is the history module starting from Paul Barans, first the realization of decentralization, coming up to surveillance capitalism, the realization by Shana Zubov, then there is an environment module. 13:19.000 --> 13:43.000 How does centralization versus decentralization impact the environmental repercussions of networks? And then there is also a diverse module that is being built and independent researchers, so actually I'm looking for funding is somebody wants to fund a practical representation of how the diverse words, I mean good luck with that I know. 13:43.000 --> 13:51.000 But also the three question marks are like, whatever you want to contribute with, it's modular and it's open for everyone to take part. 13:51.000 --> 14:06.000 So I took it, I hosted in many places as I was gone in Bolzano, Farno in Southern Italy, in Athens, in Berlin, in Ante University, London, in my high school in the bottom left, it was a huge mess. 14:06.000 --> 14:17.000 Like 300 students between 14 and 18 years old using a yarn to connect people, it was a mess but beautiful mess. 14:17.000 --> 14:30.000 So why am I doing that? I'm doing this because I feel it's important and if you want to chip in, it's needing our internet, so it's our workshop, it's our challenge. 14:30.000 --> 14:38.000 You can host it yourself, all of the material is open source and accessible and modifiable and you can fork it if you want. 14:38.000 --> 14:45.000 There is the weaver kit, you will have the link in the next slide, you can make a donation to help me continue to do that and research it. 14:45.000 --> 14:52.000 The improvement challenge, the information also, the information has a lot of opinions, you can challenge it and please write me an email. 14:52.000 --> 15:00.000 Improved the website code because it's all built with 11, I'm not a JavaScript fan and it's for sure not the best expert. 15:00.000 --> 15:06.000 You can translate the material, everything is translating with the web late, there are a lot of them too, they have a boot. 15:06.000 --> 15:16.000 You can make a cart about it like this little cat that my friend, Cartic made, I have 20 more seconds, I know it's probably the word of course. 15:16.000 --> 15:20.000 All of that you need, you can have it by scanning this QR code. 15:20.000 --> 15:26.000 It's our net.throcks, please enjoy, have fun building our internet. 15:27.000 --> 15:33.000 There we go. 15:33.000 --> 15:45.000 Well, hello everybody, my name is El and today I like to introduce you to quick JS, the mighty JavaScript engine. 15:46.000 --> 15:55.000 It is a small and embeddable engine that it's just a handful of files, I left out probably the most important part is written in good old sea. 15:55.000 --> 16:07.000 It was released in 2019 by Fabriz Valar, which may know in Charlie Gordon and it implements modern JavaScript like ES 2023 plus with all the modules, promises, bells and whistles. 16:07.000 --> 16:15.000 It has a great test to six to two coverage, this is the compliance suite that tests the JavaScript standards. 16:15.000 --> 16:26.000 It's a very fast interpreter with low starter time, it is a stilling interpreter, which means no time compilation, no jit compilation, and I'll mention why this is relevant. 16:26.000 --> 16:36.000 It comes with some batteries included in the form of a reference command line that you can use as an interpreter itself and a standard library. 16:37.000 --> 16:40.000 Now, there was a fork in the road. 16:40.000 --> 16:46.000 If you saw the first slide, I talked about NG, of course, you got to have a ground use name, if you want to continue. 16:46.000 --> 16:59.000 Quick JS went a bit dormant in 2021, and in November 2023, a bit before frozen last year, my buddy Ben and myself, we forked it and decided to create quick JS the next generation. 16:59.000 --> 17:06.000 With the goal to reignite its development as a community driven effort, and we call it like a friendly fork. 17:06.000 --> 17:18.000 Charlie's actually here came to hug me, and what we hope is to keep true to the spirit, drive it forward, and eventually people shouldn't have to choose, we'll have one project for everybody. 17:18.000 --> 17:23.000 You can find it in that URL, I'll have it every later as well. 17:23.000 --> 17:37.000 Now, what did we do? So, what we wanted to focus on was to be active on GitHub land users pull requests, listen to feedback, take help others help us basically. 17:37.000 --> 17:42.000 So, the project can be done scale beyond just a handful of people. 17:42.000 --> 17:45.000 We focused a lot on testing and continuous integration. 17:45.000 --> 17:57.000 We run over 60 jobs and all sorts of platforms. We run 262 suite many times, many sanitizers as well to, you know, catch all these naffles that we do, it's see after all. 17:57.000 --> 18:06.000 Well, it's focused on cross platform compatibility. So, whether you like it or not, people use windows, and we want them to have the best experience possible. 18:06.000 --> 18:13.000 So, we had a native window support and migrated to CMake, so that it was easier to build in all of the platforms we want to support. 18:13.000 --> 18:19.000 Well, so I did new eggmascript features. It's a living standard that moves super fast. 18:19.000 --> 18:26.000 New APIs for embedded people that are using the engine and need more APIs in C. We added a bunch of them. 18:26.000 --> 18:29.000 And then there were also some performance improvement. 18:29.000 --> 18:37.000 Pull the morphic inline caching, upcode fusing, low-hanging pro that we found, and there's probably more that we'll collect, I hope. 18:37.000 --> 18:43.000 And we had some nice rough features like the V8 stack tracing APIs are useful for people. 18:43.000 --> 18:48.000 We added those standard executables that are cross platform are work out at box. 18:48.000 --> 18:55.000 And also an automated release process with binaries for many architectures. 18:55.000 --> 19:01.000 Now, how are we doing? After all of this, it looked like a lot of things to focus on. I think we're doing great. 19:01.000 --> 19:11.000 So, we've had 10 releases in this dance band, which averages to about 1 release every couple of months or so with new features and improvements. 19:11.000 --> 19:16.000 54 contributors, which, you know, I think the project feels alive. 19:16.000 --> 19:21.000 I think we succeeded in the goal of making it community driven. 19:22.000 --> 19:28.000 And who is this using it? Of course, there were many people already using the original quick.js. 19:28.000 --> 19:32.000 And there were many small forks adding one feature here, one feature there. 19:32.000 --> 19:37.000 And what we wanted is to talk to all of these people and kind of bring them together. 19:37.000 --> 19:41.000 So we've got, for example, what I call small JavaScript run times. 19:41.000 --> 19:45.000 Chicken.js is one a die route that is basically quick.js. 19:45.000 --> 19:52.000 We leave you be on a bunch of APIs around it. Amazon has worked on LLRT using the Rust bindings. 19:52.000 --> 19:58.000 And this is because of the lower startup time, it's an experimental run time for landup. 19:58.000 --> 20:02.000 Radar 2 is a reverse engineering framework that switch to cook.js. 20:03.000 --> 20:05.000 We've got some gaming stuff. 20:05.000 --> 20:11.000 And XJS is a home brew SDK for Nintendo Switch that uses quick.js and G. 20:11.000 --> 20:16.000 And there is the go.js can also use quick.js as it's engine. 20:16.000 --> 20:21.000 There's several Rust bindings and some other projects they have not mentioned. 20:21.000 --> 20:29.000 The full list is here and with that, I just encourage you to check it out. 20:29.000 --> 20:33.000 If you want to know what is the URL, we modified it as little as possible. 20:33.000 --> 20:38.000 So that we could, yep, make it easy for you to use. 20:38.000 --> 20:40.000 Thank you. 20:46.000 --> 20:53.000 Hello, everyone. I'm Sophia and today I'm going to quickly introduce you to my project identity. 20:53.000 --> 21:01.000 So first of all, who am I? I'm Sophia Ritz and I do lots of things and I'm an intern at the Free Software Foundation Europe. 21:01.000 --> 21:03.000 So what's identity? 21:03.000 --> 21:08.000 Identity is a platform that helps you restore your most meaningful memories. 21:08.000 --> 21:17.000 This allows you to, and in only you and in certain cases, your trustees can access these memories. 21:17.000 --> 21:22.000 This allows you to reflect on those memories and cherish the moments of your life. 21:22.000 --> 21:32.000 But this also allows your trustees to access these memories in some cases so that it can be integrated into dementia care, palliative care, and things like that. 21:32.000 --> 21:36.000 So what can you store? You can store lots of things. 21:36.000 --> 21:47.000 You can store events, single memories, songs, music, it started mostly with music, but now it's a lot of things. 21:47.000 --> 21:55.000 And these entries also have feelings, assets, descriptions, lots of things, etc. 21:55.000 --> 22:02.000 So that it can be a whole picture about what this memory really means to you. 22:02.000 --> 22:09.000 So right now, you can think, okay, this is simple, why is this useful? 22:09.000 --> 22:13.000 So you can use all of these for lots of things right now. 22:13.000 --> 22:17.000 I'm mostly focused on dementia care and things like that. 22:17.000 --> 22:25.000 But there's also the fact that reflecting on your own memories can help you improve yourself. 22:25.000 --> 22:27.000 Aquerners and things like that. 22:27.000 --> 22:35.000 And also storing key assets can be really useful not only in dementia care, but also depression care and things like that. 22:35.000 --> 22:41.000 So a bit about how I plan it to work aside from these basics. 22:41.000 --> 22:47.000 The idea is that you have an identity instance with lots of default things you can do. 22:47.000 --> 22:58.000 But there's also a plugin system that allows identity to receive data from lots of places like social media, video platforms, stuff like that. 22:58.000 --> 23:04.000 And also plugins that allow you to give new uses to this information. 23:04.000 --> 23:16.000 Because if we want to make identity as useful as possible for everyone, we need to have a modular and extensible system that allows us to do this. 23:16.000 --> 23:21.000 And one example about how this can be deployed. 23:21.000 --> 23:29.000 The idea is that you as a patient can log in through your institutions systems. 23:29.000 --> 23:37.000 And then you have access to your identity instance and can do wherever you want with your account at your own plugins. 23:37.000 --> 23:45.000 And all of these instances will be federated so that you can share information with your doctor, 23:45.000 --> 23:53.000 even if they are not in your same institution, you can have your own self-hosted instance things like that. 23:53.000 --> 24:01.000 So right now there are lots of open questions that I have no idea how to answer right now. 24:01.000 --> 24:10.000 So right now I'm seeking help from people from the community, from people who know what they are doing. 24:10.000 --> 24:14.000 So they can help me solve mostly these issues. 24:14.000 --> 24:23.000 So if you have any ideas, any thoughts, I'll be at the FSFE booth, but you can also contact me here. 24:23.000 --> 24:25.000 Thank you very much. 24:25.000 --> 24:40.000 Hello everyone, my name is Agnish Kajaba. 24:40.000 --> 24:43.000 Thank you for these five minutes on the first day. 24:43.000 --> 24:49.000 I want to talk to you about open ad was Jupyter utility package. 24:49.000 --> 24:58.000 It's a utility package for Jupyter nodebooks that we develop across projects in open ad models. 24:58.000 --> 25:04.000 And here I want to thank you all for the contributors to that. 25:04.000 --> 25:12.000 In short the story starts when we have some unsatisfactionary answers to not that uncommon questions. 25:12.000 --> 25:30.000 For example how we can embed SVG, SVG plots in Jupyter nodebooks or how to embed animation in Jupyter nodebooks. 25:30.000 --> 25:48.000 There are a lot of answers for that questions, but for our projects we created a package that is useful for us and might be useful for some of them. 25:49.000 --> 26:03.000 If you import this package, one of the functions you can use is a show plot that is dropping a replacement for a multiple clip, multiple clip show function. 26:03.000 --> 26:12.000 And here by default we don't use, we set our graphics as SVG not a raster graphic. 26:12.000 --> 26:28.000 We can see that there are two buttons below each plot that you can save your SVG plot as SVG or as a PDF. 26:28.000 --> 26:37.000 And also it triggers Google Drive downloading when you run it on call up. 26:37.000 --> 26:53.000 We took care also to render this on GitHub when you want to review changes, for example, this vector graphic is embedded with within notebooks. 26:54.000 --> 26:57.000 Next function is for animations. 26:57.000 --> 27:01.000 Here it uses multiple clip and image IO. 27:01.000 --> 27:13.000 And we will from defile it and call this it in using base 64 and stores in Jupyter nodebooks file. 27:13.000 --> 27:26.000 And then it is rendered also on GitHub. 27:26.000 --> 27:39.000 Last function is, last that I show here is a notebook version, it is very similar to another one but it also is aware of the previous two. 27:39.000 --> 27:52.000 And it executes notebooks that we have in repositories and it allows us for testing and to run it once with multiple assert. 27:52.000 --> 28:04.000 And yeah because of returns all local as a dictionary. 28:04.000 --> 28:08.000 Thank you for attention. 28:08.000 --> 28:23.000 And here is GitHub page if you want to look for more examples and more features and feedback and contributions are warmly welcome. 28:34.000 --> 28:46.000 I just hello everyone my name is Nikolai. 28:46.000 --> 29:03.000 I would like to introduce you to PGX outbox and this is my hobby free time library and PGX stands for it's the most most popular driver to work with posgers from GoLank and outbox stands for 29:03.000 --> 29:10.000 Transaction Outbox button. 29:10.000 --> 29:13.000 Yeah, a little bit about me. 29:13.000 --> 29:17.000 I work for the land based in Finland. 29:17.000 --> 29:27.000 Mostly go developer this days maybe I go back to Kotlin sometimes soon and I would like to explore rest of it. 29:27.000 --> 29:32.000 Yeah, do write a problem. 29:32.000 --> 29:38.000 So transaction Outbox button basically solve one of solutions for this do write problem. 29:38.000 --> 29:46.000 And the problem itself like you have a service A and you need to write something to database. 29:46.000 --> 29:55.000 And then you want to add this kind of at the same time you want to send the message to message broker that something has changed in your database. 29:55.000 --> 30:02.000 And that's a bit problematic because you cannot control two sisters at the same time. 30:02.000 --> 30:10.000 That's why this transaction Outbox button is introduced and how it works. 30:10.000 --> 30:19.000 So the service A instead of sending message to the message broker directly it would write to the SQL database. 30:19.000 --> 30:36.000 In my case it's posgers it would write the main entities but in a separate table it would prepare Outbox messages which later have to be sent to the message broker by separate service which is called Outbox relay or sometimes it's called forwarder. 30:36.000 --> 30:46.000 So it would publish the messages later and then it would acknowledge them in the database. 30:46.000 --> 30:53.000 So yeah, so this is a PGX Outbox library and log of course generated by AI. 30:53.000 --> 31:09.000 And the library out of the box it provides you like a message it provides you writer which for posgers which you can join and you join you can join in your transaction and write also not only. 31:09.000 --> 31:28.000 Yeah, the main entity but also Outbox messages to the special Outbox table and it gives you the reader and forwarder to actually read and forward and acknowledge the messages and publisher for SNS right now, but I plan to add more. 31:28.000 --> 31:40.000 So yeah, this is how it looks. This is a go-code. This is message basically the last few this payload JSON which later would be sent to the message broker. 31:40.000 --> 31:57.000 And this is the writer which is interface and there is implementation you can send our single Outbox message and start that database and you can do that in batch and it would use some internal features of. 31:57.000 --> 32:02.000 PGX driver and posgers to do it more efficiently. 32:02.000 --> 32:19.000 And this is how it looks like. Kind of them are the first at the top you have special Outbox table where you have prepared messages to be sent to be sent to SNS topic. 32:19.000 --> 32:34.000 They're not yet published and the second image it illustrates that then you commit your transaction you actually insert your domain entities in this case it's users, but also. 32:34.000 --> 32:50.000 And so it's an Outbox message which later gets published. So yeah, the plan is to use right to use logical replication protocol and implement reader based on that. 32:50.000 --> 33:05.000 So it's more efficient comparing to the classical and naive solution where you just select and update Outbox messages like you marked them as published. 33:05.000 --> 33:10.000 This would be much more efficient and this is working for us right now. 33:10.000 --> 33:17.000 Yes, and this is the end. Thank you very much for attention. 33:20.000 --> 33:33.000 Hey, open source isopods. So what's an isopod? 33:33.000 --> 33:39.000 I suppose are those little bugs that people keep in view volumes and what is a view volume. 33:39.000 --> 33:49.000 Basically any class box you put plants and animals in isopivarium. So one of those everyone knows is an aquarium with all water. 33:49.000 --> 33:57.000 You have terrariums, all land and polluteriums, which is like part that part that which is what I have. 33:57.000 --> 34:07.000 There is somewhat there is some land plants and animals inside of it. So let's say you want to start one of those yourself. 34:07.000 --> 34:18.000 Well, firstly catch some geckos catch some shrimp catch some isopods catch some plants. 34:18.000 --> 34:26.000 Put them only in a box. And then you realize you actually need a bunch of tech to run this. 34:26.000 --> 34:34.000 So people usually buy aquarium lights, but the power of aquarium lights can cause you like 100 to 100 euro. 34:34.000 --> 34:40.000 So people really resort something else, but there's the easiest option. And you basically need a misting system. 34:40.000 --> 34:45.000 And as you're going to do this like three or four times a day, which you're not and you're plants are going to die. 34:45.000 --> 34:53.000 So that could be anywhere from 100 euro to 400 euro actually, which is quite loud for me. And I don't really understand why it's so expensive. 34:53.000 --> 35:03.000 And also basically if you go for the cheap stuff, it's not going to perform very well. So I thought to myself, well, I can do better. 35:03.000 --> 35:17.000 So I basically had everything laying around in my room somewhere, but you know, get some LED strips, microcontrollers, some realized sensors and an early express misting system, which costs like 40 euro. 35:17.000 --> 35:23.000 And probably won't burn your house down. 35:24.000 --> 35:39.000 You basically have to make the lead for your aquarium yourself. So that's not something you can avoid, but you put some LEDs on a piece of PVC, connect everything together. 35:39.000 --> 35:47.000 We water tank with a pump and the Raspberry Pi on the right in a black box that connects to some noses at the top. 35:47.000 --> 35:53.000 You get some sensors, put them in a cool and closer, you can get for them. 35:53.000 --> 36:01.000 Connect everything together. That's what it looks like on the inside. I did not make a custom PCB for it, and I think you should. 36:01.000 --> 36:10.000 And what's great, you can just get a graphana running and you get basically reading for all of this, temperature, humidity, how much water you have left to spray your aquarium with. 36:10.000 --> 36:17.000 So you can remember to refill it, which is something you're not going to get if you buy one of those ready to go systems. 36:17.000 --> 36:21.000 So I think that's quite a win for free software. 36:21.000 --> 36:28.000 And does this actually work? Or is this a paint run? I actually think it works great. Hasn't broken yet. 36:28.000 --> 36:41.000 And I can monitor it remotely, so I think that's a benefit of just DIYing it, and then you'll save a bunch of money, and if it breaks, you can fix it yourself, which is a big upside. 36:41.000 --> 36:45.000 Oh, yes, there we go. You can look at my mushroom, which grew just before I came here. 36:45.000 --> 36:54.000 I think it's very nice that appeared the day before for us them. 36:54.000 --> 37:05.000 There is a QR code with the repo in case someone was looking at this, but it's going to be probably something custom that you want to make anyway. 37:05.000 --> 37:16.000 So hi, great to see you all joining the session. 37:16.000 --> 37:23.000 My name is Bob, and I will share with you what is like to accidentally maintain open source. 37:23.000 --> 37:30.000 So this all started two years ago, I figured I want to experiment more with design patterns in C++. 37:30.000 --> 37:36.000 And I would probably have a hard time convincing my boss that I could reflect to the code base essentially every two weeks. 37:36.000 --> 37:44.000 So I started off this project, which aims to be a general purpose graph library, and I don't recommend anyone to use it. 37:44.000 --> 37:48.000 I didn't expect to, but I figured why not open source it. 37:48.000 --> 37:54.000 So I created a logo, which you saw in the previous slide, put a license on there, and I created my first issue. 37:54.000 --> 38:00.000 And actually the next morning, I had the first PR addressing this issue, which was pretty cool. 38:00.000 --> 38:06.000 And over the next six months, I went back and forth, creating more issues, reviewing more PRs. 38:06.000 --> 38:15.000 And in my experience, what made really good issues were things that had a clear scope, a clear starting point, and also a clear definition of done. 38:15.000 --> 38:21.000 So as an example, most of these issues retain the implementation of a specific graph algorithm. 38:21.000 --> 38:27.000 So things connected components, or short as path algorithms essentially. 38:27.000 --> 38:33.000 And I also provided the interfaces of these algorithms with the issues, which help providing a starting point. 38:33.000 --> 38:40.000 There were also examples that didn't work well, so it extended to be things with a broader or more complex scope. 38:40.000 --> 38:48.000 So one example here is graph isomorphism, which is pretty hard to implement, and when I wrote a ticket, I had actually no idea how to do this myself. 38:48.000 --> 38:56.000 And we went back and forth a lot in this PR. And in the end, decided to just not do it. So it didn't feel too good. 38:56.000 --> 39:04.000 I also saw there was a need to provide a lot of support for developers, mainly in terms of the developer experience. 39:04.000 --> 39:11.000 So I created the wiki and a discord, and this was also really cool, because I got to use cases people have for this library. 39:11.000 --> 39:26.000 So for example here on the right, there's this image of a project that maps the night sky, uses graph to compute spanning trees on all of the stars, and he's spanning trees then represents constellations that they visualize using a laser. 39:26.000 --> 39:29.000 Definitely did not expect that when I started the project. 39:29.000 --> 39:37.000 I also received some feature requests, so currently working on tree support, but there was also this request for geometric graphs. 39:38.000 --> 39:52.000 And I accepted this at first and thought I would commit to it, but in the end I came back because I figured geometric graphs isn't really in line with the purpose of being general purpose for this library. 39:52.000 --> 39:57.000 And finally there were various moments during which life simply gets in the way. 39:57.000 --> 40:05.000 Maybe I have a busy at work. I also moved house during this period, but I found that in the end people are pretty chill with this. 40:05.000 --> 40:13.000 So if you just reach out, everyone was very, very understanding, and it was actually pretty nice to see. 40:13.000 --> 40:15.000 So it took good clues. 40:15.000 --> 40:24.000 Do not underestimate enthusiasm of strangers on the internet. I did not expect to see a PR within one day of creating an issue. 40:24.000 --> 40:32.000 Also putting the effort to write good issues and provide a channel for support, because this really helped grow the project. 40:32.000 --> 40:40.000 Don't be afraid to say no, and most importantly I think recognizes, okay, if life simply gets in the way. 40:40.000 --> 40:46.000 And with that, I would like to thank you. If I have picture interest, you're more than welcome to check out the project. 40:46.000 --> 40:50.000 It's very much a hobby project, and I still don't recommend anyone to use this. 40:50.000 --> 40:56.000 But if you have any questions, there's also a link to it discord in there somewhere, and I'll be more than happy to support you. 40:56.000 --> 41:00.000 Thanks a lot. 41:00.000 --> 41:12.000 Hey, I'm Cluert, or Michael, and we're building infrastructure for Rust, the compilation. 41:12.000 --> 41:20.000 So what is the compilation usually when we decompile something, we want to get back either the original source code, or something that we can more easily understand? 41:20.000 --> 41:25.000 These goals can sometimes be mutually exclusive. 41:25.000 --> 41:34.000 Decompilers that now exist, or more generally, generally purpose decompilers, usually produce some sort of pseudo-seq code. 41:34.000 --> 41:51.000 And this results in the implicit assumption that the code was also written by a C compiler, because the decompilers have been optimized to produce code that looks like very good C as if it was written and run through a C compiler. 41:52.000 --> 42:02.000 This works very well for understanding assembly, but especially when the program is not longer written in C, this can also be really hard for the understanding of the whole program. 42:02.000 --> 42:15.000 When we look at Rust and friends like Go or C++, we have a lot of issues, because they don't nicely match up with C anymore, like we have a lot of high level concepts that no longer really match up with C. 42:15.000 --> 42:28.000 We have, for example, template, arguments, generics, macros, all of these blow up the code size, and the copy code all over the code base, and then it's going to be optimized again, and it's going to be copied but slightly different. 42:28.000 --> 42:36.000 We have different controlful primitives, for example, if it were to send Rust, we have lambdas, we have. 42:36.000 --> 42:42.000 Yeah, jump tables in the code that are generated for large switch statements or dynamic dispatch. 42:42.000 --> 42:51.000 And we also sometimes we have bad optimizations, then we get in C when we use Rust code, for example, I have an example on the next slide. 42:51.000 --> 43:05.000 Something that Rust does, which I noticed relatively fast, and I hadn't seen before in C code, is when you look at this example here, we have two local variables, local 40 and local 30, and they both correspond to the same stack offset. 43:06.000 --> 43:20.000 And when we look at the two calls here, first we have something assigned that is a function pointer, the format function pointer, and in the second piece we assign four and three, which are the number of the arguments or something like that. 43:20.000 --> 43:29.000 And normally this doesn't happen in C, because C would just reuse the same stack offsets for the variables and would retain the types. 43:29.000 --> 43:39.000 And Rust, this is not the case Rust notices that in the same function, we now don't use the old stack, the memory anymore, and we can reuse it for something different. 43:39.000 --> 43:48.000 And for example, Gidra, the compiler that produced this code doesn't, or doesn't have a way to split these up right now nicely. 43:49.000 --> 44:00.000 So what is real excited with real excited, we basically just want to go ahead and try to improve an existing decompiler to the point where we can make sure to reverse these Rust transformations. 44:00.000 --> 44:05.000 And by extension also allow support for the programming languages. 44:05.000 --> 44:13.000 We went ahead and took Gidra, Gidra is already very extensible on the front end, it's a Java application, you can just write Java plugins. 44:13.000 --> 44:21.000 However, the decompiler itself is a C++ binary that is pretty much just monolithic and the Java application communicates with it. 44:21.000 --> 44:29.000 And right now you don't have a good way to just dynamically throw plugins in there and change the transformations that the decompiler is doing. 44:29.000 --> 44:40.000 And with free excited, we're trying to provide exactly that, we're trying to provide the plugin system that allows us to dynamically change the transformations in the decompiler. 44:40.000 --> 44:52.000 We have been funded through NGIC and first currently we have a very rough prototype of the plugin system that works with C++ so you can write C++ plugins compile them and then load the shared library. 44:52.000 --> 44:57.000 This isn't very ABI stable, especially if we want to reuse the plugins across architectures. 44:57.000 --> 45:04.000 So in the next milestones we're also looking for writing plugins in languages other than C++. 45:04.000 --> 45:17.000 For example, maybe looking into using WebAssembly to write cross-platform plugins, then we can also actually write Rust code for Rust reverse engineering. 45:17.000 --> 45:21.000 Yeah, if that sounds interesting to you, let's chat. 45:21.000 --> 45:28.000 The website I'm not sure if it works because I'm realized I have a firewall configuration on the website host that is fucked up. 45:28.000 --> 45:38.000 But yeah, you can find us on codeberg, on the re-excite or you can contact me or you can find me on chaos social as close. Thank you. 45:43.000 --> 45:54.000 Hello, my name is Florian and you are a beautiful crowd. I'm talking about Tahoe LFS, a quick show of hands who has ever heard of this. 45:54.000 --> 46:00.000 Because it's a bit of an old project actually, it's turning 18 this year. 46:00.000 --> 46:12.000 The logo is like a little hot air balloon, right? Because it's a file system to keep your stuff safe in the cloud and our balloon is especially safe because it is redundant. 46:12.000 --> 46:20.000 As you can see, the red circle would be your own node, your own computer and we don't have one balloon. 46:20.000 --> 46:30.000 Why does Tahoe LFS exist? We basically want the upside of the cloud without a few of the downsides of the cloud. 46:30.000 --> 46:35.000 We want confidentiality, integrity, availability and privacy. 46:35.000 --> 46:41.000 Confidentiality, of course, is we don't want to share our data involuntarily with anyone on the internet. 46:41.000 --> 46:46.000 Integrity is we want to be sure to get back whatever we had uploaded. 46:46.000 --> 46:52.000 Availability is, if a storage provider fails or fails us, we still want to have our data. 46:52.000 --> 46:59.000 And Tahoe also has a couple of very nice privacy features. 46:59.000 --> 47:04.000 How does it work? Basically, the green boxes here are trusted computer usually or node. 47:04.000 --> 47:09.000 You have a cat picture on the very left. You first encrypt it to ciphertext. 47:09.000 --> 47:14.000 Then use a forward error encoding scheme here. 47:14.000 --> 47:20.000 In the example it's two or three, like basically you would have with a red hard drive array. 47:20.000 --> 47:24.000 Upload that to a couple of different storage servers. 47:24.000 --> 47:29.000 And that is the important part here. With Tahoe LFS, you do not need to trust the storage server. 47:29.000 --> 47:36.000 The whole thing is basically an experiment in how little trust can you or do you still have to give a storage server. 47:36.000 --> 47:40.000 And later, when you want to have your data back, you download as many shares as you need. 47:40.000 --> 47:48.000 In this example two, decode and then decrypt your data and have your cat back. 47:48.000 --> 47:53.000 Tahoe LFS is Python twisted. The code base has been going since 2007. 47:53.000 --> 47:58.000 So it's actually of legal age to drink and smoke by this first end. 47:58.000 --> 48:03.000 It's typically licensed and why I'm here to talk about it. 48:03.000 --> 48:07.000 There's been some flurry of new activity around it. 48:07.000 --> 48:11.000 We actually have a rust and has kept implementation going on. 48:11.000 --> 48:13.000 That's actually currently developed. 48:13.000 --> 48:23.000 We developed a mobile application with that because we tried hard to get Python on the phone and with all of our extensions we couldn't. 48:23.000 --> 48:32.000 We want to soon make an in browser library. So just, you know, have something for the vast JavaScript and browser ecosystems out there. 48:32.000 --> 48:46.000 Also talk to storage pickings like S3. The idea is then to have something that you can add to maybe an offline first or local first application to then add what is secure storage to that. 48:46.000 --> 48:53.000 And yeah, we also currently are working on a fresh website and you should check out just to make it look a little bit more live. 48:53.000 --> 48:58.000 We are on libera. Please do join us in Tahoe LFS channel. 48:58.000 --> 48:59.000 Thank you. 49:05.000 --> 49:08.000 Thank you everyone for coming to lightning lightening talks. 49:08.000 --> 49:14.000 If you have any feedback on this exciting new format of lightning talk, please send it to the usual spot. 49:14.000 --> 49:19.000 And also thank the lovely speakers. That's all for now.