 Welcome to the next talk, Schleuder Packung 2.0, Technical Aspects and Implementation in the Data Schleuder Editorial Office. So people love retro things, such as writing postcards on camp or actions on paper and magazines that Schleuder Hackers love. And our next speaker, Marie, will tell us about how the magazine of the KS Computer Club has developed in the last few years and what recent events were. She's a physicist and member of the editorial team. And also, as your freelancer, she is a hack, which, and please welcome her with a very warm applause. Thanks. Enjoy the talk. Thank you for the introduction. Right. I don't think I'll have to add anything about what Data Schleuder is. It's been around since 1984. And we've noticed today that actually it's quite interesting because in the future it won't have to exist because if this 1984 future again thing will work, it calls itself an organ of the CCC and there have been 100 issues so far. I have been involved since the issue number 99. So I've done exactly two, which of course is not a lot at all in comparison. But in that time, we've put quite a lot of work in to modernize things and also to consider what else could be improved. What options there are concerning accessibility and things like that. And a few aspects of that I'd like to introduce in this talk. There were a few years ago, there was no Schleuder at all. Schleuder means either think, start, or centrifuge, by the way, in English. And some people, therefore, don't really know that it existed. It was revived for the 98 issue. And since then we have a versioning system that is on GitLab and the software is based on a latex package. This is called Schleuder Packung, slingshot package, centrifuge package, 0.1. I've called this one point Oi, which might seem strange, but I think it can be called a 1.0 version because there are some really nice mechanisms and foundations that have been laid. What I've done is to update the whole thing. This was first done in 2013. I work with tech a lot. So the first thing you would expect me to do is to update everything and then see what we can done with newer mechanisms, technologies. Now, the layout of a data Schleuder. Classically, there is a title page. This is the one of the 100 issue. And then we have articles. You can see the editorial here. And you can find, I have to get the most point of working for me. So you have elements such as the table of contents up there. This code block, that is a kind of image or whatever. And then there are some very specific elements, such as the chaos not, and the QR code, and the hexadecimal page numbers. That's been taken over. Right. And next to standard articles that you've just seen, there are interviews. We have a structure for that now. And that covers single-person interviews, as well as multi-person interviews. In the 100 issue, there is a nice example. That's why I'm showing it here. And the third category, we have letters to the editor. So whenever you want to tell the data Schleuder something or want to suggest topics or whatever, send us an email to dsatcc.de. So if we then decide this might be interesting for others, this is where that will end up. The next item I was looking at are images. One thing is a structure where you can have it in a two-column layout as part of the flow. And there are whole picture images such as the big image riddle, which, by the way, we're still looking for solutions of. So if you have an idea what this is, send us a message and we'll publish the solution in the next issue. That didn't quite work as I wanted it. Right. Then we have a few other requirements for the Schleuder. We have to generate lists. This, as an example, is the list of the alpha circles, the regional groups. We have a system that models literature per article and an item that came up shortly before the first issue I was involved in came up. We would like to have register capability. I don't know if you know what that is. That ultimately means that we take the whole text and put a grid under it. And well, you can do it this way. But it's not that good in Leitech. I don't know if you've worked with Leitech before. It fills things up so that the first line will line up. And the bottom most line will line up to the other column too. But the problem was I have two weeks left. And how do I get this done for the whole text? The result was that I thought, well, let's start with text. That works, as you can see in the right column here. That will match a line to the grid just by itself. And then you have elements such as this image. And what the Schleuder-Pagnossoftware does, ultimately, is every kind of box, in this case, the box goes from the top margin of the image all the way down to the bottom of the caption. This box is aligned to the grid. So the software-look-switch part could best be matched with the grid. In this case, that is the lower corner. And the headlines are treated in the same way. And that way we have the text flow be within the grid again, immediately. So at the moment, the Schleuder is just a number of building blocks. It's not really centrifuged. It's simply put together from different blocks. So that was the slide I was going to show beforehand. Nice. The next item I looked at are the hexadecimal page numbers. How could these be implemented? Up here, we have an example. How tech somehow converts numbers into something else. And that is quite funny, because it does nothing but have a case condition. If one takes A, if it's two, take B, and so on. So all letters are treated one after the other. Then it sees if it's a Z, and if it isn't even Z, then an error is generated that says the counter is too high. I could now try and do this in some other way, such as divide my page number by 16 and do something with that, and then see which grid this field fits into, and then iterate somehow to get a digit out of it. And that was the first thing I changed, because I thought, hey, there are some more modern ways of doing this. And then I moved to different kind of syntax, and that looks like this. I'll soon tell you in more detail what this does. But effectively, this does the same thing. We're taking a macro, such as a L4. This one is simply called hex. We then write an OX. We prepend an OX to it and convert the rest of the argument into a hex number. The middle line here is there for the case where there's just one hex and a decimal digit, because we want at least two of these digits. But that means that the page numbering at the moment will only work until we stay outside three digit hexadecimal figures, so that's 256 pages. So at the moment, this works quite well. I think we had about 50 pages, let me see. We went up to page number 34, so that's 52 pages, so there's still some space there to be filled. The second aspect was to see, with all these changes to the layout, how we could keep that independent from the base structure. And for that, just to show you an example, this is how the page number is inserted. We have a block for the page number. That includes the QR code and the page number and hexadecimal, all the other way around. Here, in this case, we have the odd pages where you have the page number on the inside and then the QR code. This is here. And on even pages, we have the page number following the QR code. So that matches the scheme. If you print a booklet, you always want the page number to be on the outside. So that way, we chewed our way through all these different elements and everything came together. And then the idea was, well, if people have to update their tech first, it will be hard to use. And then one version will look different from the other. So we thought we need a Schleuder-capable continuous integration system, which was kind of cool. It was kind of cool that we had implemented it or based it on GitLab, because GitLab has runners. So with every commit, we could start to kick off a pipeline. And we then took it to another level and said, OK, let's just build a few more output options into this, which was mainly based upon the thought that we'll have to print it anyway. And then online would be great as well. So someone came along and wanted this terrible EPUB. And everyone who knows me knows that I'm not a friend of EPUB because I think it's completely terrible, ugly, and terrible for the engines. So my first thought was, why EPUB? And I expected that the reason was just to annoy me. Then I thought a bit and thought, well, it's not that terrible because latex is not that good in terms of accessibility. So let's do EPUB to get it accessible, make it accessible, accessible. So therefore, we are looking for testers for the EPUB version. Either you can do it the ugly way and use an EPUB reader, or use it for the purpose it was made for. If you are sight impaired, have problems seeing things, you're blind, you can't see colors that well, then we would like to have testers for screen readers and other things. So please send an email to ds at cccde and we'll send it to you. And issue number 100 will be finished as an EPUB soon. 99 is there already. And then the first thought is, why? We're not doing EPUB. Can't be that difficult. EPUB is XML only, right? It's just XML. Yeah, I thought. There is this tech for EPUB system that is usable, has been for a while. It's not really a problem to use that. The problem that you get is if you try and validate it and have it accessible because there are about 100 different test criteria or systems for that and you need a heap of extra configuration as well. Third item, of course, images. For images, we need extra text because what we hadn't done so far was to have a text for each image saying what it contained. And, well, we're not that great there yet, but we'll work on that. The mechanism is there. And we will force us to have a caption or a description with each image so that it stays this way. Then the thing was that the title page has to be inserted as an image. EPUB has this one cover page feature, which is one block. And we didn't have a block. We had this title page which consisted of an image and certain metadata text elements. So if I try to rebuild that, it is kind of cumbersome. So what happens now is that first we built the online PDF. And from the first page of that online PDF, we built an SVG. And once that is ready, we can start building an EPUB from that. And that overall was kind of nice. And then we wanted to have the EPUB look kind of nice as well. And immediately, the whole data slider was just thrown to the dustbin as it was then because, of course, in EPUB you have to work differently than in TECH. And suddenly I had to write HTML as a whole. It works like this. TECH4Ebook takes anything that is there in TECH. So let's take this abstract, for example. It reads that. And then at the beginning and end of the abstract environment, it just will insert some kind of text. In this case, it will be a div with the abstract class in it. It will get a title as well, have some further elements that I need for some reason. And that way you go from one macro to the next. The good thing here is that the Schleuderpackung software has a whole macro setup. So we have articles. We restrict authors to certain areas because we don't want someone to have lists up to the, down to the 10th outline level or something. So we want the structure to be more or less the same each time we supply certain elements. And from those, the EPUB can be generated quite easily. Quite easily means that the config to EPUB is double the size of the code that runs the latech. It produces the latech. But it does write a valid EPUB page or file, rather. And then a few more things you have to look out for this configure mark. That only exists because EPUB won't deal or at least our EPUB system won't deal with numbered headlines. I don't know if you noticed, but the Dart and Schleuder has no numbers in their headlines. We just have articles and other articles. Get another article. And they then come in some kind of order. And I would like to have them in the table of contents in that way. And then the EPUB tells me, sorry, no, bad luck. So these were the largest obstacles that we had to chew ourselves through and I can gladly open the EPUB later on and show it. But all in all, it builds. And we are trying to continue it in this way. Then in January, at some point, an email came via the CCC. And it said, well, I've seen that you are now building the Dart and Schleuder analytics, and I'd like to take care of that. So my first thought was, oh my god, I'm not even done with the documentation, and I'm still not. But the basic idea was, OK, so let's build it from the start this way that it's adaptable. So what has to be changed to create a different kind of newspaper out of that? So thought process was. So it probably won't be called Dart and Schleuder. We still want it to look like Dart and Schleuder. So in comparison, I don't know if you've seen the typical layout. It actually looks like a Dart and Schleuder. So we have the title block here, which that says Dart and Schleuder. And down there, there's some other thing. And then something about the current issue. And then a title image. Then on the other side, 95% of other newspapers look the same. So that's not a big issue. And also for other newspapers, it turned out that it's very easily adaptable. So the special school in Überlingen has Dart and Schleuder-based students' newspaper and is kind of happy with that. So I initially said I would talk about how we did this whole thing technically. But after the slide that actually was supposed to show a lot about the continuous integration system is not showing up, which I will have to search later. I will now tell you a few things about the late things. We are still planning. So the Schleuder-Packung was made for Lua-Latic before I took it over to do some of the programming in Lua. For example, the creation of the alpha list was done in Lua. But then a lot of people asked me, why should I use Lua-Latic? Lua-Latic is so slow and it's annoying. And I have to wait three times as long for my document to compile. But it has two easy reasons. You have a lot more choice on fonts. And also it's easier to program. Because when you remember the things I showed you before with the underlines, actually Lua is a kind of usable language unless you really like tech. When I have the choice between Lua and tech, I will choose tech. But maybe there are people here that would rather use scripting languages. And then Lua isn't that bad. Lua is also what goes to programming. It goes way faster than tech. So if I start calculating things, I can do that in tech. But I will realize that it really takes a long time. And then I realize that at some point I had the QR code generation programmed in tech and it compiled and it compiled and compiled and continued and continued. And you can watch every QR code compile. So now it's Lua and it goes in one batch and it's done. So for other things, I decided to use X-Fill 3. X-Fill 3 is, what is it? It's the experimental latex 3 programming layer. So it may be a little crazy because Leslie Lampert said, I presume this is one of several dozen bugs that would arise over the years if anyone will foolish enough to try allowing underscores in command names. So what did latex 3? They used underscores in command names. So considering this for the normal latex user, it looks kind of weird. And that's exactly what it feels like for the first 100 pages. Then you realize it's actually kind of thought through. The latex 3 team really thought about how they would do this. So it's a very simple naming convention. Simple in the way latex people would think. So for every macro there's a module. Okay, I will sign all of the things I want to use with a DS and then an underscore. What I want to do with it. So for example, DS underscore, title page or DS underscore picture or DS image with credit. Yes, something. The same thing exists for variables. A counter I can call DS. No, it doesn't work. I have the definition realm and then the module. That means for every variable I have to define whether it's global or local or constant. That means that afterwards I can see whether this thing is changeable. So then the module and then the name and then the data type. So for the argument specification and the data type I have to give an example. For example, we have to skip ahead for a bit. Another slide went missing. A panic attack. I deleted everything and started from zero today. Okay, I will have to restructure a little. Okay, we have in the naming structure we have the module, then the name and then the argument specification. For the argument specification I have one letter per argument I can assign. I'll show you in the example later because that's easier. But if I use a colon and then two ends, then I have two arguments. If it's three letters, it's three arguments. So with variables it's similar, but I don't have arguments, but I have a data type. The data type is very text specific, so it's a token list. So token lists are just arrays of characters behind one another that will then do something. I have, for example, whole numbers or floating point numbers or all the data types that exist in other languages. Then I have a separation between sequences and comma lists. That's because comma lists and tech have a different meaning than other sequences. That's why they need to have a separate function. All in all, the entire latex three layer is usable in latex two. Since the system is as old as I am, it's been worked on quite a bit, but it's very usable. I can change the syntax by using exploit syntax on and exploit syntax off. I only need to load the exploit three package. That's pretty easy to use the syntax. This is where I want to go. Okay, because we looked at how we built the page numbering earlier. Here you can see how we are traversing this naming structure. CS and then new. So it's a new control sequence. So it's a new command. Okay, so we know this. Then comes a weird colon and then NPN. The structure does something like I have a token here. That's the sad sign with a hex. That's my macro name. Then the P is for parameter. So I'm passing a parameter just like in standard tech. And then comes the definition. And that simplifies so much because I can see what the macro does by its definition. So in future, if I see, we'll decide that I won't do datanslide anymore, then I expect everybody else to be able to look at my macros and know what they do. Which would mean that I don't need to write documentation, but it will still take a while before everybody is able to speak latex 3. But if somebody is interested, they can contact me and I will show them happily. The other point was, because the other reason I changed a lot of things to latex 3 is because a lot of mechanisms are easier to use. For example, we often start data blocks with key value structures. So we have the issuer that most of you will probably know. And we have the editors and all of my colleagues. Thank you to them for being willing to partake in my experience. And this way I can give all of the data a different structure. I don't need to do backslash issuer or backslash editors. So now I can just iterate over this list and tech will just look and look for the last thing and then it can just enter the editors one after another and maybe do something else for the last editor. Since I've shown you a couple of things now and I still want to give you the option to ask questions, I still want to do a call for participants. So we are still looking for people to write articles first. So if you had a great impression now and think you really want to do something about that or you have maybe an idea that you always wanted to know more about and there's somebody that I could ask or maybe you don't know anybody who knows it and we should do the research. But then we'd be happy if you would send any feedback or ideas at this email address and then over a time we hope that maybe twice a year a data slot will come from that. But that will only work if you participate. Okay, I am done with this now and want to give you the option to ask questions and otherwise I will just tell you more about our publication process. Okay, great. I actually intended to release the whole thing tonight which due to panic and I'm just going through everything out of the window didn't quite work out. But I would like to... The basic idea that led to data pack one or rather one O for me, something I would like to spread and that is for the data to be a magazine that is as open as possible so that the mechanisms that are developed can be used by others and the basic idea of course is that you can see... take a look and see how this can be done most easily. So together with the release we'll release a package for potential authors to build an article. That is actually there. It exists already. Those who want it can come to me because this is simply one article with all those elements. You can fill everything with content and on that basis we would build a schleuter from that. All those continuous systems that are coupled with this, how does an EPUB and an HTML version come about it takes some more time until it is properly documented but you can still use it as it is now already. So if you're interested in trying things out and say I would like to do some tech stuff at Datenschleuter or I have a kind of publication myself that might use this then we would be glad to help as long as the very tight schedule at Datenschleuter allows which this starts about four weeks after publication. So in principle we want this to be used. I'm not quite sure what else I should say. So if you're finished just get your applause. Yes, thank you. Thanks also for listening to the translation. Someone's moving. I'm very happy. Thank you. The first question is on its way to the microphone. The microphone needs to be opened. So now we have a microphone. Right. Now you can hear me. Good. I heard about the register capability. I know how difficult this is in tech. It sounds nice but does it work? Yeah. Does it work well? Does it work very well and how to take so much time until some crazy CEC branch found a solution that obviously works? Do I have to repeat the question? No. Okay. Thanks for the question because it really sucks. I agree. I don't believe that with the mechanisms I utilized this can be done for any document. Because the approach I used is that I take all these elements and I then play a puzzle game with them until it works out. So if I go back to this, the thing is this image at its height was increased artificially that it fits into the grid. And that's what's done for every box element. So every box element has some kind of environment and surrounding. And I simply assume that in the text someone is not going to use three times the letter size because that will break things. But for the data this works very well. So much so that we didn't need any manual corrections for the 100 issue which we used to need earlier. But it's quite neat and you can always put this grid under the issue to check it out if you see it in print. So you can check if it really works. And if it doesn't raise an alarm, we'll see what we can do. And is that then the case with the headlines? I can see this one example here with the larger font. Yes. It takes the box that contains a headline, ensures that the distance to the bottom is as it's supposed to be and adds distance at the top so that it fits. My first thought was to have this on the grid. But if we do this then the distance, if we have it one grid positioned further up, that's a huge distance. So I thought that I would use this kind of distance and have an extra space on top. But yes, that works. Does that answer your question? Great. Any further questions? Another question? Has anyone thought to just skip the register ability? Where does this become and come from? I have no idea. Actually this came about two weeks before publication and people were just convinced that I would manage. And yes, it is of course more beautiful. It looks better and overall it has a different kind of look. And before the Schleuder I used to take care of these things and I did notice that this was not the case in the first Schleuder and I just hoped that no one else would notice. But as a result now you have a lot of white content above the headline. Yes. And isn't the idea that this should not happen? Yes and no. Well, we have this combination of image and headline here. Now of course generally you could adapt the size of the headlines to reduce that space but the criterion was the grid and that works. Of course it's a balancing issue. You have to consider how do you want the grid and how you want the whole thing to fit and be balanced or is the grid the main issue and that's what I heard and that's therefore how I did it. And if people come and have an idea well okay I can do this. It will of course eat up a lot of time but yeah. Is there a further question? Well, a different question. When the E-Pub is generated, what happens to all those tech macros if you write back such later? Yes, that is ported. It looks... I don't know if I can... I'll be able to find it quickly. Well, it depends on the viewer of course but it is built in the way that it's built in HTML. Let's see if we have it all there. I think there is no latest logo in that one. I had a demo that contained one. I can find it for you later. It's not a problem. And soon the 99 will be online as soon as someone will find the time to upload it because there is one in there. It depends on the viewer but using CSS you can just push it around and make it work. And with the replacement text so that you can see that it's late. Great, thanks. Any further questions? Do you have any further details you want to know about this talk? Do you want to complain about E-Pub? Do you want to volunteer as a tester? I can see all the questions have been dealt with and therefore I'm going to ask you for another very warm applause.