 Dobro vse, vse. V srečnih razne, tudi vsem zelo da boš... Je bilo soj. V srečnih razne, tudi vsem zelo da boš taj počot s Refers, neko vse odrečilo, da bomo početno občal, ampak priječnjo propozar za europejno vse. Čekaj, to je bilo dobro. The first of all, I'm going to give a brief overview about the typical project structure, since I guess that not everyone here wrote project proposals. Then in this way I will be able to describe the itch, the problem that I wanted to solve. In početimo se o kodu, o plaginju stracu, da je tudi nekaj program. In početimo v progru, o če imam. Tako, jih je proget, jih je počet, in v progeti se spliti v početih. zato vših nekaj nezavršenih, svih nezavršenih, zelo, smutno, nekaj nezavršenih, zelo, nekaj nezavršenih, zato vse večj vizk, neseljšenih. Zato, za vzelo, nezavršenih, nezavršenih, prototyp, nezavršenih, industrializacija. In tega če pa je izgleda, ki je vsem, da je vso se prišelati, da je to izgleda in je, da se prišelje občas. Prejjel je prototip, dokoncent, web site, video in tako prijev, da je povrčen, to posredijo pomejosti, ki je moment v taj, kjer n-o se dobro, nači je dobro, nači je dobro. Sledaj, da jih loži prišljati vzelim, pieršal se, da je ta všeč, da je tudi prototaj. Je to tečke, da bomo sreči prototaj in da jih se tudi prototaj, se da si je, da jim se tudi prototaj, ta všeč, da jim se tudi prototaj. Kaj smo tudi prototaj? To je tudi, da je ta všeč, da jim se tudi prototaj. The idea of your project. You want to follow to be found. You need to describe it to the European Commission. In order to get your funding. And how do you that? Well, there is a format that's more or less standard if you wrote the research proposal. You know that. You have work package cards. We did the work package that for news. partner when you start, when you end, what you're going to do, and the tasks we've started, and date, and so on. And deliverables. Beside the work package cards, you are also asked to produce some summaries, such as, for example, the list of deliverables, the list of milestones, and, in the case of European project, a summary of the effort by work package, with partners, and so on. And last but not least, a graphical description of your project. What is the problem here? This makes sense. We can agree. What is the problem? The problem is that this description, as reasonable, as maybe, it's redundant. There is lots of cross linking, cross references. And if you change something, you have a tsunami of change to do. For example, suppose you add three months to task 1.3. Then work package 1 needs to start later. And the task inside them needs to start later. And the deliverable will get later. And the milestone will change. And the effort will change. And you will need to change everything here, here. Maybe the milestone will also change order. Because if one milestone gets later, maybe a new one gets first. So it's a mess. OK. Honestly, I don't like this kind of... And, well, you know. OK, but you just need to pay a little bit of attention. I don't want to pay attention. I have the deadline that's creeping day after day closer and closer and closer. I have a page limit of 15 pages. That's way too short. I don't want to pay attention. I want a software that pays attention for me. That's why I love coding in Ada, the compiler pays attention for me. So I wrote this piece of software. You can imagine how much I hate this stuff, since I wrote a software for just doing one project. And this is the internal structure of the code. It's very simple. You have a parser that takes the project in a simple format, not redundant, brings it into an internal format. This is handled by this block, more about this later. And the result is given to processors that do something. In my case, generates some files that include in the project. The next part here is that parser and processor are not fixed, but implemented as plugins. What that means? It means that I have, as I said the code, an abstract parser that's in the interface. For those of you that are not familiar with this part of Ada, it's more or less an abstract class roughly. If you want a new parser, you derive from this interface, provide a constructor, a function rate, and a function parse. That's it. Then you register your new parser with this function. The user, when calls the program, specify the parser to be used inside the command line. At the moment there is only one parser. That parse, this is a format here. I'm not going to the case, very simple. I want just to point out two stuff. First, the date here, for example, is not a number, it's an expression. This allows you to specify, for example, that one task needs to start when another task end in a very simple way. And the nice part is that replacing this with an actual number is not done by the parser, but by the housekeeping block here. So this means that if you write a new parser, you have this feature for free. And the other part I wanted to show you, that's more or less an anecdote, but it's worth saying. You see here the deliverable, and the date, it has three dates. Twelve months, one year, two years, three years. That's reasonable, because sometimes in this case, for example, is a report. During the project you have few reports during the project, so it makes sense to have some kind of periodic deliverable. At the beginning, I didn't take care about this, and the deliverable just had one date. And this was a design decision that was quite deeply inserted into the code, because it was part and sense of the model of the project that they had in mind. Then while writing the project, it came out that there are also periodic deliverable, I had to change this. And this required quite a deep change in the code, because, as I told you, it was part of the model that I used to do the code. Time to do the change, half a day. I was impressed. I don't want to do that, I don't know, it's tomorrow, it's half a day. At the end, it compiles, it runs, and it works. That's what I love about other. And here process of plug-in, this is the output, I'm not going to detail, it's the same stuff as before. And there are at the moment two plug-ins for the output. One is damp, as you can imagine, is for the bug in purposes. The other produces a lot of logic files, and the high-level aesthetic is coded inside the other code. Most of the aesthetics are coded as logic macros, but the high-level structure is inside the other, and that's not good. I mean, as long as I was the only user, that's fine, no problem. If I want to make it available to other people, so. So I want to introduce this template-based approach, but this is still a work in progress. Just that you know that the latter plug-in is what produces this, this, this, this, and this. This is actually a logic feature. It was automatically produced from this. No, from this. And let me tell you, it saved me lots of work. Lots. Also, including the work is done to write this. So the new template out of the processor will be template-based. This is just a taste of the syntax, very PHP-like as a philosophy, but the language of the template, I guess, you feel at home. OK. So, work in progress. More documentation. Actually, it's not so bad. Yes, I want to add markdown inside the content. Let's go back here. Here you see the work package. This is kind of a tribute of the work package. And this is the content. As you can see, this is a logic. I want to move to markdown in order to allow for different output format, of course. OK. And the template-based processor. OK. So, this is the almost the last slide, some pointer to the project, to myself, and no, no, no. What I'm doing? OK. OK. And that's all. No, not really, honestly. This is something that mostly I wrote first for myself. You know, the open source stuff started from when you started, started to scratch your itch. I published on GitHub, I guess, that maybe someone else would be useful for that. That's it. I guess, it's a very, it's an application and also a very niche application. OK. It's not just, I don't know, an editor. That's why. If you ever wrote a European project, you know that this can save you, at least save me a lot, lots of work. Maybe not much of the question, more of an observation. A new proposal in the work must be really painful, if you actually decide to write the whole stuff. On the other hand, where's Emma's project that kind of does something similar, so I think there might actually be more, it might be less of a niche market than you think, if you're talking outside the new proposal. You know, projects are delivered, you know, project plans are delivered to all kind of managers all the time. Yeah. And, you know, they all have the same dependencies on issues. So, the situation was that maybe if it's outside of European proposal, it's maybe less than niche. Maybe. Yeah. Because you said niche market. So, yeah, it looks at the first glance, but on the other hand, where's Emma's project, if I make big money. You know, I come from the university, so I'm used to write project for research proposals. And this is for European Union, but also for Italian proposals. It's more or less the same. And, I mean, you can do it, okay? And let's be honest, it was also fun to write the code. So, that was a part of the body page. And it was much more fun writing the code that you can try to... Exactly. And, besides the fact that the code, it doesn't work for you. And you have fun doing it. But, you know, I guess that maybe the same could be useful for someone else, at least in the university. You see, also there is another fact that it produces a lot of code. And usually European proposal is writing everything in Word. Anyway, maybe you could write someone else, could write a processor for open document, so you can get open document format that you include inside the different proposal. I mean, this, of course, is... By the way, this also is quite young. I submitted the project on September of last year. So, this is very, very, very young. And, of course, it's suited to myself, because I wrote trying to scratch a problem of mine. But, if there is input from someone else and can be useful to someone else, I will be happy. Yes. Yes. There is... Yes. Yes. If you... Yes. So, the question is if it's possible to integrate the dependence for task. Yes. It's almost automatic in this case with the data expression. So, you say, this task begins when this one ends. There is not yet a replanted to do, then I discovered that the data was enough, a formal dependencies. So, this task depends on that one. There is not, but if you look into the code, you see that there is some kind of placeholder to put this kind of stuff. And, in my opinion, that set was the most useful part, because, otherwise, my experience in European project is that you are at a point and you say, OK, freeze it. Don't change anything. Don't never try to think about changing, because, in this case, I call the change anything at the very last day. OK.