All right, welcome to Lightning Talks.
Let's see how much time I can squeeze this into.
I remember the work group for digitalization in the city of Zagreb.
We have this task of digitalizing the city.
My personal interest in the past year was to try and make the open data a little bit better,
because Croatia is one of the worst, or sometimes the worst country with open data usage.
And we don't have a lot of time because there's elections, maybe somebody is going to change power or something,
and also we don't have a lot of budget.
So we have to really be super innovative and take one year to figure out how to solve being the worst.
And this is how we did it.
So the thing is we tried to actually change the philosophy of the people.
So the thing is there is a lot of open data, but nobody is using it.
And the main reason is because, of course, people are not funded to do it.
You know, and they don't have this culture to use open data and create some projects.
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.
We'll have this jury of like the best open data people we can find in Zagreb in Croatia.
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.
And that was the idea.
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.
So that we actually have like a rolling thing that that creates some kind of expectation on the whole community that, okay,
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.
And that's it. I mean, in December 12, 13 months ago we got the amendment for the budget two years, one million euros.
So half a million every year.
Then we made this multi-year program.
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.
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.
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.
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.
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.
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.
And the second thing is we don't really want just to make 14 projects.
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.
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.
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.
Hello, everybody. Okay, so for this talk, a card game for you, check his.
Okay, I want you to participate, so we'll play a little game of yes or no, is that possible?
Yeah, cool, cool. Okay, so do you like open source?
That one was easy. Okay, a little bit harder, I expect less. Do you like card games?
Cool, cool. Okay, do you like tech?
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.
It's written and you can check out the repository, it's open source.
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.
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.
Yeah, baby is a game engine written in rest by the way.
And yeah, that's it. You need community members, peers.
You need techniques, like socializing is a kind of technique, compiling is like a technique.
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.
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.
That's it.
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.
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.
So it's supposed to be it's intended to be quite short, like I said 10 minutes, it's supposed to be short.
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.
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.
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.
Thank you. Take out the QR code.
Hello, my name is Daniel Tiltener. I'm talking about the crunch compiler and first question who in here knows chicken scheme.
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.
It's inspired by pre scheme for those people who know pre scheme.
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.
Why chicken already compounds to see so the advantage of crunches that it has barely any runtime at all.
It doesn't have a garbage collector except for a very simple breath counting if needed.
And it's due to all these things. It's much more.
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.
And crunch is also bare metal ready so you can write programs that run directly on hardware without needing an OS in between.
This of course needs some sacrifices to be made but also optimizations.
Well, first of all, it doesn't support certain things of scheme. For example, there are no continuations. There are no true closures.
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.
There's a multi-pass type inference algorithm.
There's some lambda lifting done and as much as possible, the code is being evaluated before compilation.
And all the more difficult optimizations are left to the C compiler.
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.
The URL is a bit long. That's why I've placed the QR code.
And you can also find the community on the chicken channel on Libra Chat. Thank you very much.
I'm sorry.
Okay, okay. Sorry. Thank you. Hi, everyone.
This is maybe it's to be. The writing is knitting our internet.
So I am Tommy. Usually, this is my favorite part in the talks because I'm egocentric.
But since we don't have the time, Tommy dot space is my website. Everything you need to know about me is there.
Now, anything that we're internet is a workshop, an interactive in person workshop of 60 to 90 minutes.
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.
And my grandma, for example, has no idea, but she has an Instagram account.
So how do we make people who don't care about technical stuff, see that the technical stuff are not so technical anymore?
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.
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.
And it's international because it's translated in many languages. So far, we have a Turkish, Italian, French, German, and Greek.
And it's accessible because it's accessibility is made by the other participants' presence in the workshop itself.
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.
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.
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.
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.
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.
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.
Like 300 students between 14 and 18 years old using a yarn to connect people, it was a mess but beautiful mess.
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.
You can host it yourself, all of the material is open source and accessible and modifiable and you can fork it if you want.
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.
The improvement challenge, the information also, the information has a lot of opinions, you can challenge it and please write me an email.
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.
You can translate the material, everything is translating with the web late, there are a lot of them too, they have a boot.
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.
All of that you need, you can have it by scanning this QR code.
It's our net.throcks, please enjoy, have fun building our internet.
There we go.
Well, hello everybody, my name is El and today I like to introduce you to quick JS, the mighty JavaScript engine.
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.
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.
It has a great test to six to two coverage, this is the compliance suite that tests the JavaScript standards.
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.
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.
Now, there was a fork in the road.
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.
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.
With the goal to reignite its development as a community driven effort, and we call it like a friendly fork.
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.
You can find it in that URL, I'll have it every later as well.
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.
So, the project can be done scale beyond just a handful of people.
We focused a lot on testing and continuous integration.
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.
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.
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.
Well, so I did new eggmascript features. It's a living standard that moves super fast.
New APIs for embedded people that are using the engine and need more APIs in C. We added a bunch of them.
And then there were also some performance improvement.
Pull the morphic inline caching, upcode fusing, low-hanging pro that we found, and there's probably more that we'll collect, I hope.
And we had some nice rough features like the V8 stack tracing APIs are useful for people.
We added those standard executables that are cross platform are work out at box.
And also an automated release process with binaries for many architectures.
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.
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.
54 contributors, which, you know, I think the project feels alive.
I think we succeeded in the goal of making it community driven.
And who is this using it? Of course, there were many people already using the original quick.js.
And there were many small forks adding one feature here, one feature there.
And what we wanted is to talk to all of these people and kind of bring them together.
So we've got, for example, what I call small JavaScript run times.
Chicken.js is one a die route that is basically quick.js.
We leave you be on a bunch of APIs around it. Amazon has worked on LLRT using the Rust bindings.
And this is because of the lower startup time, it's an experimental run time for landup.
Radar 2 is a reverse engineering framework that switch to cook.js.
We've got some gaming stuff.
And XJS is a home brew SDK for Nintendo Switch that uses quick.js and G.
And there is the go.js can also use quick.js as it's engine.
There's several Rust bindings and some other projects they have not mentioned.
The full list is here and with that, I just encourage you to check it out.
If you want to know what is the URL, we modified it as little as possible.
So that we could, yep, make it easy for you to use.
Thank you.
Hello, everyone. I'm Sophia and today I'm going to quickly introduce you to my project identity.
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.
So what's identity?
Identity is a platform that helps you restore your most meaningful memories.
This allows you to, and in only you and in certain cases, your trustees can access these memories.
This allows you to reflect on those memories and cherish the moments of your life.
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.
So what can you store? You can store lots of things.
You can store events, single memories, songs, music, it started mostly with music, but now it's a lot of things.
And these entries also have feelings, assets, descriptions, lots of things, etc.
So that it can be a whole picture about what this memory really means to you.
So right now, you can think, okay, this is simple, why is this useful?
So you can use all of these for lots of things right now.
I'm mostly focused on dementia care and things like that.
But there's also the fact that reflecting on your own memories can help you improve yourself.
Aquerners and things like that.
And also storing key assets can be really useful not only in dementia care, but also depression care and things like that.
So a bit about how I plan it to work aside from these basics.
The idea is that you have an identity instance with lots of default things you can do.
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.
And also plugins that allow you to give new uses to this information.
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.
And one example about how this can be deployed.
The idea is that you as a patient can log in through your institutions systems.
And then you have access to your identity instance and can do wherever you want with your account at your own plugins.
And all of these instances will be federated so that you can share information with your doctor,
even if they are not in your same institution, you can have your own self-hosted instance things like that.
So right now there are lots of open questions that I have no idea how to answer right now.
So right now I'm seeking help from people from the community, from people who know what they are doing.
So they can help me solve mostly these issues.
So if you have any ideas, any thoughts, I'll be at the FSFE booth, but you can also contact me here.
Thank you very much.
Hello everyone, my name is Agnish Kajaba.
Thank you for these five minutes on the first day.
I want to talk to you about open ad was Jupyter utility package.
It's a utility package for Jupyter nodebooks that we develop across projects in open ad models.
And here I want to thank you all for the contributors to that.
In short the story starts when we have some unsatisfactionary answers to not that uncommon questions.
For example how we can embed SVG, SVG plots in Jupyter nodebooks or how to embed animation in Jupyter nodebooks.
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.
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.
And here by default we don't use, we set our graphics as SVG not a raster graphic.
We can see that there are two buttons below each plot that you can save your SVG plot as SVG or as a PDF.
And also it triggers Google Drive downloading when you run it on call up.
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.
Next function is for animations.
Here it uses multiple clip and image IO.
And we will from defile it and call this it in using base 64 and stores in Jupyter nodebooks file.
And then it is rendered also on GitHub.
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.
And it executes notebooks that we have in repositories and it allows us for testing and to run it once with multiple assert.
And yeah because of returns all local as a dictionary.
Thank you for attention.
And here is GitHub page if you want to look for more examples and more features and feedback and contributions are warmly welcome.
I just hello everyone my name is Nikolai.
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
Transaction Outbox button.
Yeah, a little bit about me.
I work for the land based in Finland.
Mostly go developer this days maybe I go back to Kotlin sometimes soon and I would like to explore rest of it.
Yeah, do write a problem.
So transaction Outbox button basically solve one of solutions for this do write problem.
And the problem itself like you have a service A and you need to write something to database.
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.
And that's a bit problematic because you cannot control two sisters at the same time.
That's why this transaction Outbox button is introduced and how it works.
So the service A instead of sending message to the message broker directly it would write to the SQL database.
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.
So it would publish the messages later and then it would acknowledge them in the database.
So yeah, so this is a PGX Outbox library and log of course generated by AI.
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.
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.
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.
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.
PGX driver and posgers to do it more efficiently.
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.
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.
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.
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.
This would be much more efficient and this is working for us right now.
Yes, and this is the end. Thank you very much for attention.
Hey, open source isopods. So what's an isopod?
I suppose are those little bugs that people keep in view volumes and what is a view volume.
Basically any class box you put plants and animals in isopivarium. So one of those everyone knows is an aquarium with all water.
You have terrariums, all land and polluteriums, which is like part that part that which is what I have.
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.
Well, firstly catch some geckos catch some shrimp catch some isopods catch some plants.
Put them only in a box. And then you realize you actually need a bunch of tech to run this.
So people usually buy aquarium lights, but the power of aquarium lights can cause you like 100 to 100 euro.
So people really resort something else, but there's the easiest option. And you basically need a misting system.
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.
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.
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.
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.
And probably won't burn your house down.
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.
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.
You get some sensors, put them in a cool and closer, you can get for them.
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.
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.
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.
So I think that's quite a win for free software.
And does this actually work? Or is this a paint run? I actually think it works great. Hasn't broken yet.
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.
Oh, yes, there we go. You can look at my mushroom, which grew just before I came here.
I think it's very nice that appeared the day before for us them.
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.
So hi, great to see you all joining the session.
My name is Bob, and I will share with you what is like to accidentally maintain open source.
So this all started two years ago, I figured I want to experiment more with design patterns in C++.
And I would probably have a hard time convincing my boss that I could reflect to the code base essentially every two weeks.
So I started off this project, which aims to be a general purpose graph library, and I don't recommend anyone to use it.
I didn't expect to, but I figured why not open source it.
So I created a logo, which you saw in the previous slide, put a license on there, and I created my first issue.
And actually the next morning, I had the first PR addressing this issue, which was pretty cool.
And over the next six months, I went back and forth, creating more issues, reviewing more PRs.
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.
So as an example, most of these issues retain the implementation of a specific graph algorithm.
So things connected components, or short as path algorithms essentially.
And I also provided the interfaces of these algorithms with the issues, which help providing a starting point.
There were also examples that didn't work well, so it extended to be things with a broader or more complex scope.
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.
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.
I also saw there was a need to provide a lot of support for developers, mainly in terms of the developer experience.
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.
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.
Definitely did not expect that when I started the project.
I also received some feature requests, so currently working on tree support, but there was also this request for geometric graphs.
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.
And finally there were various moments during which life simply gets in the way.
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.
So if you just reach out, everyone was very, very understanding, and it was actually pretty nice to see.
So it took good clues.
Do not underestimate enthusiasm of strangers on the internet. I did not expect to see a PR within one day of creating an issue.
Also putting the effort to write good issues and provide a channel for support, because this really helped grow the project.
Don't be afraid to say no, and most importantly I think recognizes, okay, if life simply gets in the way.
And with that, I would like to thank you. If I have picture interest, you're more than welcome to check out the project.
It's very much a hobby project, and I still don't recommend anyone to use this.
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.
Thanks a lot.
Hey, I'm Cluert, or Michael, and we're building infrastructure for Rust, the compilation.
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?
These goals can sometimes be mutually exclusive.
Decompilers that now exist, or more generally, generally purpose decompilers, usually produce some sort of pseudo-seq code.
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.
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.
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.
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.
We have different controlful primitives, for example, if it were to send Rust, we have lambdas, we have.
Yeah, jump tables in the code that are generated for large switch statements or dynamic dispatch.
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.
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.
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.
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.
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.
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.
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.
And by extension also allow support for the programming languages.
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.
However, the decompiler itself is a C++ binary that is pretty much just monolithic and the Java application communicates with it.
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.
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.
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.
This isn't very ABI stable, especially if we want to reuse the plugins across architectures.
So in the next milestones we're also looking for writing plugins in languages other than C++.
For example, maybe looking into using WebAssembly to write cross-platform plugins, then we can also actually write Rust code for Rust reverse engineering.
Yeah, if that sounds interesting to you, let's chat.
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.
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.
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.
Because it's a bit of an old project actually, it's turning 18 this year.
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.
As you can see, the red circle would be your own node, your own computer and we don't have one balloon.
Why does Tahoe LFS exist? We basically want the upside of the cloud without a few of the downsides of the cloud.
We want confidentiality, integrity, availability and privacy.
Confidentiality, of course, is we don't want to share our data involuntarily with anyone on the internet.
Integrity is we want to be sure to get back whatever we had uploaded.
Availability is, if a storage provider fails or fails us, we still want to have our data.
And Tahoe also has a couple of very nice privacy features.
How does it work? Basically, the green boxes here are trusted computer usually or node.
You have a cat picture on the very left. You first encrypt it to ciphertext.
Then use a forward error encoding scheme here.
In the example it's two or three, like basically you would have with a red hard drive array.
Upload that to a couple of different storage servers.
And that is the important part here. With Tahoe LFS, you do not need to trust the storage server.
The whole thing is basically an experiment in how little trust can you or do you still have to give a storage server.
And later, when you want to have your data back, you download as many shares as you need.
In this example two, decode and then decrypt your data and have your cat back.
Tahoe LFS is Python twisted. The code base has been going since 2007.
So it's actually of legal age to drink and smoke by this first end.
It's typically licensed and why I'm here to talk about it.
There's been some flurry of new activity around it.
We actually have a rust and has kept implementation going on.
That's actually currently developed.
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.
We want to soon make an in browser library. So just, you know, have something for the vast JavaScript and browser ecosystems out there.
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.
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.
We are on libera. Please do join us in Tahoe LFS channel.
Thank you.
Thank you everyone for coming to lightning lightening talks.
If you have any feedback on this exciting new format of lightning talk, please send it to the usual spot.
And also thank the lovely speakers. That's all for now.