Thanks for setting up the stage, I'm Alia, I'm working on sickle rooms which is an open source framework for building data analytics applications.
So I'm a software engineer mostly content, I've spent a lot of years already working on data visualization applications and data analytics.
So now I'm trying to kind of automate myself, even although we now have LLM agents which can do this anyways.
But yeah, the thing is that I've learned something over the years, some recurring patterns and I'm trying to build a framework which makes it easier.
So sickle rooms is a React framework which helps you build applications and it's very modular.
So you pick the functionality you need and yeah, and it's backed by DougDB, which is a very nice database which is invaluable.
So it started with this project flow of a city which I built some years ago, where I used DougDB running in the browser to represent mobility data for cities and transportation.
And this is done to better understand the troubles demands to improve the planning.
And here you see like when I move the viewport zoom in and zoom out there are lots of DougDB queries running directly in the browser which prepare the data for this particular viewport and it's pretty working pretty well with DougDB.
And now I work at fore square and we are building tools for geographic data analytics.
So this is called the fore square special desktop, this is a desktop app, Electron, but it uses SQL rooms as it's like the framework to run everything and uses DougDB running in, it's not running in browser.
In a Python backend which is like part of the Electron app.
And yeah, so DougDB can be used also as a Python library because it's so embeddable.
And that's what we do here and it gives like a bit more capabilities and if we were using the web as some diversion in browser.
So there are some other companies using SQL rooms here for example Cosmo Graph, it's an application for application for graph and embedding visualization here you see scientific publications and it also runs that DB in browser.
And also very directive different filtering capabilities and so forth.
And this is a company doing transport modeling so you're basically looking at how.
Basically can close the street or add a new street and see run modeling and see how the flow flows, mobility flows will change.
We have to do with data data analytics and this is what SQL rooms kind of helps with.
So one of the reasons I built it like data is powerful, but data alone there's this kind of dead keeping right it's too technical you need to have the capabilities to be able to access the data or you need to have software engineers could build a software for you to access the data.
So SQL rooms is kind of the goal is to make it easier to make it more democratic and also I think with the advent of LLMs it's also easier now because LLMs are pretty good at generating SQL.
So you don't even need to know SQL to be able to understand to analyze and data you can just express your intent as a sentence in natural language and then LLMs will generate SQL.
And you can run this query and see the results and for that like the database and the results can they can stay local you don't need to send.
The data to the LLMs you just express your intent it will generate SQL you execute SQL locally right so you don't it's from privacy standpoint it's pretty good what you can do because you don't need to share the data and the results with LLMs you just explain the intent maybe you share the schema so that it's easier.
The schema of the database so it is easier to run of the prepare SQL and it can help you.
So here's an example of which someone from the community built with SQL rooms and so it's from Amar Harolekar and he put a video on YouTube.
So it's like an app running full in browser he added data with like 20 million records which is remains in browser to duck db and then he asked something.
LLMs to generate a query generate a SQL query it run in browser and then SQL rooms can generate a chart based on that it's actually also LLMs generate a specification of the chart which we can run in browser.
Yeah so I'll SQL rooms have room in it's title so what is a room it's like somewhat like a chat room but intended for data analytics so you have the data in this room you have visualizations it's like a self-contained workspace and you can work alongside.
And AI systems or multiple users at least I'm working on that enable collaboration that's why why why that db is a good fit it's because it's made for analytics it's columnar.
It's embeddable as I mentioned before it's a run in browser and low inference if you can run it in browser you don't need to set it set up the cloud of to run it it's single note it's not distributed so.
But it's it's a limitation but at the same time it's it's a good thing because you own your data if you run it locally you don't need to share it with cloud providers also you don't have the round trip to run the queries right so.
You don't send the data over the network and like if you run it in browser and user browser it's kind of you get horizontal scaling for free every new browser adds compute to your to your overall system.
And privacy standpoint from the privacy standpoint it's a good thing so in SQL rooms if you go to the website there is an example of offline use you can run.
They up and install it as a PWA right look which you can done locally on your computer you can use opfs which that'd be supports to store the data locally and you can even connect local a system by allama.
So what what's the problem provides.
So it's like it's right now it's dependent on a bug DB we assume that we are using that to be although we want to support more.
Databases in future like we have a data connector.
Abstraction already so when you start with an application it will like give you functionality for loading data schema management and query management.
There are UI components which are like.
Useful for data center caps like table schema tree query editor.
I'm other integrations with various visualization libraries Vega which we saw for the charts.
Most of the creature cost most for graphs and capital for just special data.
And there is an UI system.
So it's a very modular toolkit this is an example of.
Well built with the sequeroos you have the schema editor query schema schema of your query editor you can add data you can run queries and you see the results.
And so the thing is that it's very modular and the most tricky part to to modular is the state right what if you want it to be able to pick the functionality you need for your particular app.
And then combine it in a state storage in a store which you can access from anywhere in your application.
So this is what the sequeroos allows you to do by using two-stunt slices.
So basically for every module you want to add to your application you just added two-stunt slice and then this will be part of your store and accessible from anywhere.
So the room store you need to initialize it and you add this slices which you want to pick.
You can also decide to add some data to the database, create it or you can add it later.
Then you can basically wrap your your entire application into room shell component and pass it to the store which you initialize and then in every component within that hierarchy you can access anything on the store run SQL queries and do something with results.
All running browser.
So yeah and to compose different slices in your store you just like added to your store.
So here I'm adding SQL editor then this functionality will be available in my app.
And I have access to it where this kind of hook from components and you can extend it with your custom functionality as well of course.
So collaboration more interesting so coming soon I'm working on notebook implementation and canvas module and canvas is actually a really great fees for collaboration.
So kind of this is like a 2D and 2D notebook you have also cells which can be queries or visualizations and you can like arrange them on a 2D surface.
And I'm working on a CLI tool so which you can run.
Just like it will be like a Python module you can just run with UVX without having to install it.
And then you can pass it the name of the database file and it will be a WB file on your computer which you can like both the data will be safe there and the state of your application.
So then you rerun it it will like be your kind of project file and you'll have a reproducible artifact which you can send to someone or you can if you run this same server.
And on server you can basically other people can collaborate with you on same project.
So to enable this collaboration I'm working on CRDT module for which will be also like a slice you add to your store and so it's close to working.
I have a PR hope to lend soon so here we specify like the local storage we use so that we can so it can still work offline right so we can stay have a copy of the state in index to be in a browser.
Here we pass the connector to the sync server and the URL.
And this this is the important part we pass mirrors which is like specification what part of the state we want to sync right we don't want to sync everything on a state.
We need to specify which parts and to which data structures.
So I have I've had some experience using yjs so I built this tool for collaborative map drawing in the past so I'll consider yjs first but then I learned about.
And I chose this because what they have we they have this sort of a lot of CRDT mirrors module which is basically.
This way of expressing the mapping between your original data structures.
And this is what I need because because.
Secular room is kind of a framework and I don't know in advance all the state which will be in your application.
You decide right you you can add your custom state so we need a mechanism to express like what parts of the state.
We map to what kind of certain structures and this might be generic must be generic enough this is what this.
A lot of mirror module enables.
So this was one reason and another reason was that I followed the work of Marimo who knows about Marimo notebooks.
A few people so it's like a somewhat similar project and they they recently migrated away from wages to.
To Laurel because they had some issues with wages.
So yes there's a Python server you can run.
Which will run both.tb database right it will rapid in an HTTP server and you can access it via web sockets and it will do the thinking.
So yeah here I have a short demo of the canvas so I start the server here and then I open to to web clients right so.
This is the canvas I can create a query and there are the client sees it immediately around the query there but I don't see the results here because the results are not synced.
Right we don't need to sync them we want to be explicit like when.
The user actually execute the queries so we picked what part of the state we sync and it's not everything.
Yeah but you basically see you can change the data and the other clients will see it.
So yeah so this is the basic like architecture which I'm working on now so there is a server right right now which will have the copy of the CRDT will.
So there will be instance maybe some AI agent orchestration which will have access to the same.db and the CRDT state and can modify it.
So we can have agents training both on the clients and on the server and multiple clients right.
Sorry.
One minute oh okay but I'm a thing almost here sorry so yeah the data is not part of it so this can be a femoral for instance.
I'm considering to use the cloud fair containers for this which can be like we can spin it out on demand and this will be like one session shared by multiple users.
And we'll shut we can shut it down after all users disconnect but the data can stay separate and we can just load it on demand.
So here's also for interest but we'll be the next step.
So this is the last slide.
Just the goals of the project.
Make it easier to build data and asics apps reduce data.
Get keeping stay open and independent.
This is my LinkedIn.
This is Sigorums.org.
Is there time for questions?
Yes.
Okay thank you first.
Thank you very exciting to see what's possible in the browser nowadays that definitely wasn't possible like five or ten years ago.
So really cool.
Any questions from the room?
All the way back there you know.
If you do your question I'll repeat it for the recording.
Would you go into a little bit more detail why why genius would not work for your use.
So it would work for my use.
Sure.
Why wouldn't why jazz work for my use.
I think it would work but I just chose a lower certainty at the moment for convenience because they have this mirror functionality which allows you to express.
How you map your application state into serity data structures in a very convenient way.
So for me that was the main reason.