 Welcome to the talk about Polygen, the title of the talk is Ending Flameworks with Polygen and we will see how we can use a software tool to end Flameworks. I don't see Amaya, she's wanted to come. She's just slipping off it. Okay, pull it in. Can we wait? No, no, because I need her for something. In the meantime, I'll show you something about Polygen. Things you can do with Polygen is, well, generate text. You wait to get installed Polygen and then you have it. You do Man Polygen data and you see some of the text that you can generate. For example, you can have Genius which generates Q&A. So if you want to add some Q&A to your pages for your favorite software tool, that's automatic. And you can have it do it for you. Very useful. Or in case you use Photoshop, you can get hints for it. Anything like if you want to make a video game, it will get some names for you. It's got like, if you want to make a playlist of hardcore metal songs, again. It can do great stuff. But that's out of the box, that's upstream, right? Okay, what I did, well, once is this. I went to a science and technology study conference and I've been reading through the titles of the proceedings. And so, well, they've been into my brain for a while and I put them down. All right, let's have a look at how Polygen works. Polygen works just like Bison. Okay, that's the side vertical here as well. You know Bison? It generates a grammar parser. So you can tell it, oops. You can tell it our grammar is made, so we have an expression, this for algebraic stuff. We have an expression which is either a number or an expression plus another expression and so on. And then Bison will generate a parser for it. So who's not familiar with Bison? That's how it works. You have, let's see if I can do it. Oh, so nice. With the arrow. You have a non-terminal symbol which expands to a set of possible instances of the grammar. And then, well, you have other non-terminal symbols, so a line is either an empty line or an expression and an empty line and so on. And then in Bison you attach, well, code to it. Polygen works exactly the same. You define a similar grammar, very, very similar. And what it will do is generate an instance of the language. Just as easy. If you want, you can use it to test your software. That's another use of Polygen, but it's too serious. So we won't do Polygen for testing. We want to end flameless with Polygen. So let's have a look on how to build a grammar for Polygen. Polygen has a really nice manual in user shared doc. So this is a very simple sample grammar. It generates answers from FTP master people. You can define, well, you have to define in Polygen two non-terminal. One is the metadata non-terminal and the other is the main non-terminal for the grammar. So that's metadata, title, author, language, whatever. It's useful when you submit it upstream. They will put it in the Polygen website. And that's the main non-terminal. It generates either nothing or no. It's nothing. So then we do Polygen... How do you generate underscores? Within quotes. Okay, very nice. Nothing should be more probable. So we have to control the probability of things. So we do the second... Well, we evolve a bit. Polygen is a really advanced tool actually. So we see M01. And we can actually control the probability of things. And we can say that most of the time they don't answer. On top of one part of the grammar you increase the probability. Actually what it does is it expands it in something kind of like this. That's two plus. I will kind of repeat that. It changes the probability like in that way. So you can look at Polygen and M01. Nothing. Doesn't sound too bad. Okay. So that's the idea. Well, general idea of Polygen. Let's see some more features. This generates taglines for my presentations. Let's have a look. So let's see some new features. So we have... If one word, unquoted word has a capital letter, then it's a non-terminal. If it has a small letter... If it's not capital, it's a normal word. Words are joined with one space in the middle. Okay. So you have the main grammar is this one. Actually, another feature is that you can add non-terminals to the metadata. So when you ask Polygens about the metadata, it's going to... By the way, Polygen... Man, Polygen data changes forever at least. Because most grammars reuse the non-terminals in the metadata. Okay. So we can have the main thing that calls other non-terminals. We can define as much as we want. And then every non-terminal has, well, different implementations. And then you can control the probability of things. It's pretty... All right. Simple enough. So how to get the metadata? Polygen, one only dash. And that's metadata. Okay. This is more like it. All right. Oh, I got my email address wrong. Whatever. Let's see some more things. And let's start into the topic of solving flames. Okay. This one. There was a problem with Damian women, with the people that approached you on IRC and tried to pick you up. So I generate a grammar that would solve the problem totally by making some subtitle. Actually, it helps running it through FMT. And since it's IRC, it helps to run it through BIF. All right. Once you put that in the wild, no one is going to harass you like that anymore. They will have to have a bit more fun. Okay. Let's see what came in. Okay. So we have a salutation, introduction, compliment, self-introduction, some compliment, and a proposal. The curly brackets that you see here. I saw much like that. And I discovered about it yesterday. How are you doing that? It's gromit. Gromit. A package called gromit. It's such a great package. And all right. These arrows means that all the items between the curly brackets can be swapped. So sometimes I have salutation, compliment, introduction, proposal, and sometimes I have salutation, introduction, compliment, and proposal. And then I have salutation, which is like A or high. And then person or... Curie. Could be also baby. Well, which again expands with some of the usual targets, sort of things, and some introduction and so on. Now, here's a new feature. This one looks a bit strange. If I don't put this one, what I have is that I have 50% of possibility of having cutie and 50% of having one of the names. But what I want instead is to have an uneven probability of all of them. So this greater than signs means expand person in line. So it basically gets replaced by all this. That way I can have... Yeah, I can group things and have a bit more control on things. All right, then we have other... Okay, minus, minus, minus is the opposite of that plus. And well, this will be like a real compliment, which doesn't usually happen on IFC, so I reduce the probability of it. And this will be like a real proposal, which means that people are serious and doesn't really happen on IFC. So again, we lower the probability of it. And that was one. So let's see. We have another pickup line. A bit more... There's a bit more advanced. It's kind of the same version as before, but it does a bit more. Well, there was another... Okay, here. It tries to make a nice, more articulated compliment. It can say, you are something. We can see it on... You are a hacker or... Well, that doesn't happen that often to show, but... All right, well, whatever. We can make it generate some more complicated phrases, like you are a pro. You are so pretty. You are the coolest. And, well, language is a bit crappy. You have, like, all sorts of concordance. Like, you can put A in front of something. You can have to put N in front of something else. So poison allows you to define a non-terminal here with some kind of modifiers in the front. So we can define that these ones are names. Have... Are objective. These are superlatives. And then I can use them. You are a name, or you are so objective, or you are the superlative. Or I can just use quality somewhere else. So I can actually choose to use them all, or to use some of them, choosing which one. And this is useful to start matching articles with names. All right, the rest is pretty much the same. We have another one, which is this hat sign. There. Good. This sign over here, it means to join without spaces. Poison by default concatenates with spaces. In this case we want to add a comma after the phrase, we don't want a space before the comma. And this sign does exactly that. It avoids having a space in front of it. Okay, so that was another future. What the hell? Okay. Right, and we've seen a bit more. So that was to exercise the carpet pickup lines. Now we have the problem with flamers. So a major one is the hot-bape one. And we can generate pieces of the hot-bape flame, and so on. And here we can see a bit more of the polygent features. For example, grammars can be recursive. So I can say that the main non-terminal calls itself. And I will have a repetition of things. So you can either say nothing, but that's unlikely. Or you have a phrase, sorry, which is followed by nothing, or a conjunction of some kind. And again, another instance of the language. And then, okay, you are, and here we see again the modifiers. You can be an idiot, or you can be a fanatic. And you can actually get them all. You have optional words. So you can say, where is freedom of speech? Or you can say, where the fuck is freedom of speech? So the squares gives you a half, a 50% percentage of having it. If you want to control it more finely, and you don't just like 50%, you will have to do it with expanded form. And then you can say that people swear more often than not. But then, for the purpose of demonstrating things, I leave it like this. All right, and then, okay. And also, and then, but they are optional, so I can also have just end. This is already like something basic we have. All right? So with this one, with the feet, the hot babe flames. And then, what's the biggest problems in them in the world? Of course... Well, I swear, I went through five or six of his emails and just picked up braces and put them in. And so on, okay? So this is a bit more complicated, which shows a bit more features of it. Slash, this slash here, means a capital letter. I mean, like a piece of text has to begin with a capital letter, but then you want to recycle words. So you can just say, put a capital letter at the beginning. Actually, it's maybe clear if I just separate it. Obviously, it's confused with C. So I said, well, this course, it's all, you see, not capitalized. But then, I make it capital with this. Discourse, dot. And then a conclusion may be repeated. And then the discourse, it's, well, okay, usual things. And conclusion, well, objective and phrases. I pick up from the email. It's been really quick to put on this grammar. And you can see ways of expanding it to a more consistent way. So this is a bit of how policy works. We have another one here. The one for the algorithms. You see, I had to put pluses in front of the number because x book can expand in things that call it twice. So it tends to become exponentially long and blow up politics back. So I had to suggest that it should mainly choose numbers. And I remove a space before the minus sign in case of the negation operator. And I remove space between parentheses and the expression. All right. And number is a number followed by other number, again, removing the space. Option number, removing the space. Now you have an idea of what polygyne is. And if there is some flame that's picked up and gets really annoyed, just have to make a new grammar, post it to the list and ask people to do something different than what's generated by the grammar. Or submit it to me. I can put it together with the polygyne package, polygyne data package. Polygyne Manta is generated by a polygyne grammar as well. But then the only thing, I made it quick, so the only thing that's really generated is this. So it should be improved. That's a call for co-maintainership. Then other ways of invoking polygyne. Okay. Another one that I created just... for your entertainment. More ways of invoking polygyne. You've already seen that you can invoke polygyne like a moment. Okay. You can invoke it like this. You can pipe it through FMT to make it nicer. Well, you can pipe it through Biff, but then Andrew Safely doesn't deserve Biff, right? So it's more like of a chef. But then, well, he's serious. I mean, in what he does, doesn't deserve. And you can do, well, other things like, well, let's do the flamework. Odd, babe. Well, you know that, Kausen has many skins. So you can actually add, use different like spaces for it. I'm not going to use one at random because some of them are a bit gross. And so, well. And well, that's the idea. Or if you are lazy, you can just have polygyne do it for you. Of the polygyne, of the author of polygyne. Alvisa Spano is upstream. And there's a grammar with his biography. The polygyne website is completely auto-generated by polygyne. It's in Italian. Did I connect the cable? Did I do something? This has all the grammars. Well, it doesn't read that well. This is like from, well, there's an English version. But they used to have an English website. But then they thought they only had Italian users. And then they packaged it for Fabian. And they're hopeless. They have to bring the website again. They had all sort of cool stuff to use for cool components for the website. And so on. It's really funny. And so that's nice introduction to polygyne. How much time do we have left? Twenty. Twenty? So what's your current issue that needs to be solved in Fabian? It's the website. I mean social issue. Last night's drinking. Last night's drinking? Too loud. Too loud singing. Okay. At least on the mailing list. If you don't know it, you were in it. I was sleeping seven kilometres away. And you didn't even hear it. All right. It's amazing you couldn't hear it. So, well, I had put down some ideas actually for the polygyne both. Okay. We have our CP pipeline done. Update thread arguments done. ASA field answer done. Oops. Come back to me. Okay. This is other ideas I had. You know, writing change logs is a pain. Can we get a change log? Change log? I want randoms like a bug. Let's pick some sample data. And so we have... All right. It will be a problem to make the version monotonic. Well, I hope you will bear that with me. So package. You bear. Just think for future expansion. Semicolon. Finish that. And then we have package. Fantasys. Version. This is to avoid the space. You see there's no space here. Unstable. We always release to unstable. No. All probability is stable. All right. So... They still... Stable. Unstable. Testing. Experimental. Maybe I should... Proposal base. Yeah. Proposal. Stable is more probable. Yeah. Right. Can you think of another one? Stable. Proposed updates. Oh, do you have stable... Security update. Security update. Security dash updates. Yeah. Proposed updates. Proposed updates. Proposed updates. I was thinking more of a... Stable. Proposed updates. We still have money left? Yeah. Okay. That can not legal. Not legal. Not legal. All right. Taste trial. And then again, no space. Urgency equals... Urgency. Medium. Low. Critical. Critical. Critical. It might sometimes be completely unappercase. What? Sometimes they're all unappercase. All caps. People write them in all caps? Yeah. Archverge. High. Right? Can we capitalize it? No, but we can actually solve it very easily. Vim helps. I was wondering how come it's colorized, because you don't remember Vim having colors for a poison gun, no? But then it's for that, because of the changelog. All right. That's our fault. Okay. Beautiful. And then we have a couple of new lines. That's a bit sexy session, if I can now do the logo. Or do that. Okay. Good. And then we have many lines, items. And then we have the sick. Two black legs. What? Two black legs. Right. Okay. Two empty lines. Space dash dash. Maintainer. Would there be a problem with the capital for non-terminal high, medium, low, critical? No, that's quite okay. I think everything is capitalized. These are non-terminals. I have to expand still. High, medium, low, critical. Oh, right. You're definitely right. In this case, now that I think about it, it's polygen, right? So why don't do... We can. We do it, right? Actually, it's always good life because the test in strip is a women, isn't it? It's a great name. Right. Well, okay. Then we have the maintainer. Oh my God. Then we have one extra space and the date. Okay. Well, I would put that in the maintainer. So we have to fix items. You can see high, medium, low, critical. The other line also needs to be coded. No, that's fine. There are small caps. Oh. So it's a line and then nothing or items again. We have many items. Sorry? Look, plus sign inside one of the items. Okay, to make it longer, we can add a plus sign here. And... Okay. Then we have the maintainer. Right? Who can unmute this? Are there possible NMUers? Oh my God. It will do what then? If it chooses to say this is an NMU, then it would also pick from one pool or sub pool of the maintainer and it would also make the tag and NMU one half. Keep it simple. No, I think you can. You can do it with modifiers. You can choose to generate like a non-terminal NMU or a non-terminal non-NMU. Okay, my question was when it does it random, instead of randomly picking the maintainer, it could randomly pick if it was an NMU or not. And if it was an NMU, it should pick randomly if it was an NMU or not. Yeah, okay. And then a new one or a normal one and then propagates down. So I say that well, normal and then an NMU. Put something. You took all the things. Okay. So what else changes with an NMU? It's only version terminals. Yeah, yeah. With version and date at least. Right. So version. It's always zero dot. Yeah. Zero. Without space. Zero, none. Another number. Okay, let's do it like this or NMU, or sorry, or possibly NMU. Let's concatenate it. Dash. Just a number. It should work. How powerful. It's an unbelievably complex piece of software. It's really like I'm amazed by my upstream. And then we need to make the line. It always closes the bug. Or insults people, maybe? No. Closes the bug. Introduce the new one. Right. Introduce it. Introduce it. Support that. I need to recycle the digit. Yeah, but it wouldn't. Oh, there are usually six. Yeah. Closes, number, things, and so on. That's how they do it. There's also dot space. And then... Actually, I think the bug would be a separate kernel, so you can repeat it. Right. Yeah. There's a couple of spaces. In the web. Oh, no, they're okay. I think. You haven't specified them yet. All right. You're very right. Cool. Actually, I only need one. The other is added by Polygon. Oh, I can do both. And the Polygon, not to bother. All right. Then we have an object. And then... Context. Well, let's make it simple. The fix. Use. Work. Work. Work. Okay. Marco is never very vulgar, except making it so. The object. Support. Temp.FS. Detection. Report. Whatever. Context. Context. USB printers. And that's easy. You can add mount to the verge. And U-mount. U-dab what? You could add mount or U-mount to the verge, because it's U-dab buckets. All right. Then one can add other things like... We have the line. Let's ask Polygon what do we miss. Line 15. There's an extra dash here. All right. This is quoting. You're missing the answer. 44. All right. The copy. You're missing the answer to the beginning of the lines. Right. As there is there. And then we need the date as well. Okay. Let's comment. The comment syntax is strange, isn't it? Because Polygon is written in Ocanel. Which is the only language you could use to write this stuff. Because if you try to do that in C, you spend like eight years implementing the same thing. It has the complexity of GCC. Now Ocanel is a really high level language. Really good for writing all sorts of... It's kind of like prologos. No. It's more like Haskell. The sort of functional, but... And then, okay, date. Always work on a Sunday, always Saturday. And then... And then, all right. We do... What? Yes. If it's possible to run shell commands inside the grammar, but it's not implemented yet. Because I wanted to involve Polygon. To recycle other grammars. But then upstream answer me that it plans to do it in a more proper way by actually compiling the stuff or inside the other in a smart way. It's okay. I respect your wish. Do you want to use Polygon to generate the grammar? Okay, let's cut it short. Was it? Digit, digit. I mean, it's a... And then it's plus one. Because we are in... Actually, if it's suffiled, it should be plus zero. So we should actually do it with a context as well and pick it up. Next version. Yeah, next version. Hey, this doesn't need spaces in the beginning. Worked. There's one line too much. There's one line too much? There's lines too high. There was one place on Sunday. That was the line too much. Okay, because it's up and then right. And so it's up, up, up, up, up, up, up, up. That doesn't say. There it is. Hey, you learned how to do this. To a stable. What was it? I'm stable. Back to the closest. It's all just for missing. Goes back down, though. All right. I didn't add it in the end of line. Actually, we need to have a... Capitalize the first letter. And the version number. Oh, right. What's the cards? You didn't encapsulate them all. Digital K. Version. Concert, concert, and num. Okay, here. Yeah. You have really to hurry because we have to leave that building on time and everything you make longer, you cut from the last one. All right. Sorry. So I think we're done. We've seen how to post one.