I think you will show us that today the world has changed and it has changed.
Thanks a lot.
So, my name is Enkella, I'm the city of startup that's coming from the political leaders in the Barcelona.
And we do software for power systems and consultancy.
And they adopted the program that I started 10 years ago.
And now I became the city of, you know, the route to the C-suite is that make open source.
So, if I need to think of the description of what a modern power system software is,
it's one that it tackles all the typical things that I need to be a power system engineer.
And that would be,
way phenomena, electromagnetic phenomena, electromagnetic phenomena and political phenomena.
So, I need to, you know, go full stack.
And, usually, this way phenomena is tackled through EMT literature,
management trends in simulations.
And they are being asked when something wrong is going on.
Usually, in connection studies.
Also, RMS will be the route in the square of that.
And then power flows. And then planning.
And then you get all of these.
So, if we think at least this is the stuff that influenced me personally.
If we think of a landscape.
Tools that tackled pieces of these problems.
We can go as far as 1960 with EMTP.
Then, businesses of course, that now, with somebody,
same as, has 70% of market in T-SOS.
Power factor is the tool made in Germany.
It's a great one. It's one of the few ones that tackled the whole thing.
Then, my power, I would say that,
I really want to do any more in today's because of my power.
And then, stuff that happened over the years.
Please, please, I would say it's the only one that tried to tackle everything.
By Rikomilano.
And then, I started something in 2016.
I was in Gritkel, and I was called Verabrit, and you can ask me later why.
And, yeah, I just put the Python stuff.
I know there's also other softwares in Julian's own.
So, if you need to ask, what is a good design?
It would be something that doesn't change when the conditions change.
So, this is my first lease in 2016.
And here's the current lease in 2016.
You see that many differences, but there's something that's still there.
I can tell you right away that back in this unrecognizable, from one to the other.
And from that process, when I, at least that I know,
I've refactor all the software seven times to refactor me in skill everything starts.
Because something, there was something, you know, that was smelly.
That wasn't allowed me to advance, kill and start over.
And don't be afraid of that. That would be my tip zero if you want.
So, this talk is about giving you tips of how to develop such tools such that they survive,
and they eventually tackle the whole thing.
So, the number one tip is make it really only.
I know this might be a bit cryptic, you know.
But in computation, every time you create something in memory,
and you go back and try to change it, the computer says,
hmm, expensive stuff.
So, that's a bit of thing to,
it's hard to realize of that.
I realized of this one, the writing is simple as plus engine,
and by not respecting this, I was capping 30% of the performance.
So, every time you have a database, once you use a write it,
keep it away, once you start a simulator, keep it away,
once you write the results, keep it away.
That's right.
This one is let the objects flow.
This implies that I use objects in contraposition to use in tables,
which is what most people use.
And an object is nothing but a table,
that the things inside the table can be more tables.
If you think like that, so objects can point to other objects.
So, if you run typical simulations like optimal power flow,
or something linear, you don't really need to be that flexible.
You can use tables, but there's a simulation,
where the user is going to tell you the equations.
It's not you the programmer, the user is telling you,
and for that you will need a symbolic framework,
that you will need to link to the stuff of the real life,
like a line, a load, a generator,
and the equations tell how those objects behave in real life.
And you as a programmer cannot tell those equations
because they're infinite equations.
So you need to be a bit flexible and, again, use subjects instead of tables.
This is looking complicated already.
So if I'm making a software with objects,
that an object is a foreign concept for most power systems engineers,
and I'll really tell you that everything should be objects,
objects inside objects and stuff like that,
then how do I make it simple?
Then I put a graphical use interface on top,
but it's dummy proof.
Everything that you click, shoot and crash.
And it should be more or less what power systems engineers are used to.
So let the GUI handle the workflows.
Don't worry so much about if your interfaces below
are kind of complicated to the user,
if the interface is going to be this.
Of course, this is the hardest part of the whole project.
Making something that looks like this and works and everything,
and how to represent the structures in such a way,
is what took me the most time to figure out.
Great, thanks.
Refactor now or pay later.
If something is not really, really fulfilling
what the user's expect or what you think should be,
there's a refactor going on.
Back when I was working on the Spanish DSO, we had this model.
Spain, Portugal, France, and this model was taking,
so it was a couple of years of data and so on.
So everything in the model could change,
not only the low-syngration, everything.
So status of things, switching, many, many things.
And it took 63 gigabytes of RAM in the program at that stage.
So I started getting complaints like,
man, we have a ADO, it's laptops, we can work with this,
but we have to work with this.
So 63 is a big number, what if we dropped the six, right?
We just removed the six, how is that looking?
So what I did was taking many big tables,
tables again and what before, there are many things for repeated.
If you compress those tables with sip, those tables,
compress two gigabytes.
The challenge is to replicate that sipping process
into something that you can edit.
So we came up with something called the Harry Profile,
that is dense and sparse.
Because of that, people can do the planning of Spain
with my software in a DSO.
Because of this kind of innovation.
Another thing you would be,
design by layers, what does that mean?
It means that you don't need to tackle all the interfaces
in the same interface.
That would sound stupid, you know?
But of course you don't have to do it.
A typical example of this is that a line can come
in something called per unit parameters,
or it can come with own parameters.
Electric engineering stuff, but it can come with way one or way two.
Don't need to tackle both and once,
tackle one of them and the other, you support it through a function, simple stuff.
Going deeper to the design, I have a database,
and then I have something called numerical data,
which is views of the database that are very, very,
very fast for computation.
And in fact, getting the view of the database
is a copy operation, so it's very cheap.
In contrast with going through arrays and stuff like that,
it's very expensive, if you don't know it right.
And you do the apology processing, which is usually very expensive
to do on a database, you do it on data, it is snap.
Then simulation, then results by layers, everything.
Then about files, a file is whatever it is in the memory of a problem,
save to disk, that's the simplest way of thinking about it.
But then what I say is that this file,
usually a memory dump, is a contract between past and future versions of the software.
So I say, write them parts.
So I take my memory, whatever it is in the problem,
I make an interpretation, I save it to disk.
Right now, the variable files are as simplified with JSON's inside.
This was the fastest way of getting information on the time,
and then parse it back.
And with this contract in mind, today I can't read the files I was creating ten years ago.
I was using Excel as a file format, you know, really bad,
but I can't read them today, because of this thing.
Many simulations, many formats, one book.
There is a paper from the 1960s that says how committed is invent.
It is incredibly relevant today, because it essentially says that any person or organization
when they write software, they replicate themselves and structure in the software.
So if you know how am I inside, I'm a star pattern,
and I try my company to be a star pattern.
Because what I want in the end is to have a software that is not one simulator for one method.
They want a simulator for all of the methods.
So I make it such that it is a system that allows methods to come in in this star pattern.
And with this I conclude, a question, please.
Thank you.
Don't be afraid.
What do you like really?
Cute.
Oh, what do I use for the graphical interfaces?
So I've regretted many times, but now it's more stable, so I like it better.
Is it open-source and how do you found it?
It is open-source.
I started with a GP library, a GP license, then an L GP license,
and then I switch it to a musculoskeletal license and how do I find it?
By working, you know,
the first eight years of this, I found it by just going home and doing it.
Eventually, with time, I can list my managers at companies that this is the way.
So I managed to do things that work.
And now is the same.
We found this by making it work for people.
By being a viable replacement, by the way.
So now we go to TSL, so we show them this stuff, and they don't have like a hard time getting into the program.
Question is how much adopters is there?
So I would say, well, from what I can measure, there were, there are like 1.5 million downloads, something like that.
Adopters? I don't know.
You can check by the downloads, by the, yeah.
How do you enable collaboration between multiple people using this offer?
In print, so question is, how do I enable collaboration?
That's the hard question.
What I'm going to say is a bit opposed to what you would like me to say.
So I forced them.
So when people come to, to collaborate with this, I tell them, it has to be super high quality.
It has to be object oriented, it has to be clean, it has to be efficient.
So all these tips I said, some people chicken, some people don't chicken and continue.
The people in my company, when we hire, I make sure that they know what they come for.
And for external people, I make sure that they know what they're up to.
Sorry, I was not talking about the development process.
Oh, but if you have this offer, and you will think to be focused on that stuff,
yeah.
Oh, exactly, great question.
So the, how's the collaboration in the software itself?
So right now, we do it through something called Delta's.
Essentially, the database that we have is differential differential.
So you can compute differentials, and then you can join those differentials.
And that's how we, we are working in my company right now.
People do different stuff, and then we merge.
And there's a conflict, and so does that.
So question is, if I, if we have a piece of code that handles symbolic code, yes, we do.
And in fact, we, we didn't use Sympire or anything like that because of a practicality.
That is in Sympire, if you declare A or B two times, for Sympire it is the same variable.
But for using in this, it has to be different variables.
So we went all the way to developing a symbolic framework that can handle differential equations.
How do you assess the conformity of the topology in your own software?
Question is, how do I assess the conformity of the topology?
You mean that if someone writes something that it is actually connected?
Or is it conform to reality?
How to reality?
So question is, if it conforms to reality?
My answer is, I don't care.
My answer is, I don't care, if it conforms to reality.
But answer maybe, you know, but this is a power system model.
So it should represent a power system.
If it later represents the reality, that's fantastic.
You can have coordinates and represented in a map and everything.
But up to the user.
Do you find that users also contribute to the software?
The question is, if I find that users contribute to the software less than a 10%.
And the reason is, the one I gave.
The entry value seems huge for people in power systems.
But I cannot lower the order.
It is what it is.
Thank you.