[00:00.000 --> 00:11.360] And our next presentation is a hackathon, so it's the hackathon Haskell Carter's style [00:11.360 --> 00:14.800] and we have Methodis and Renaldo running this hackathon. [00:14.800 --> 00:15.800] So thank you very much. [00:15.800 --> 00:16.800] Over to you. [00:16.800 --> 00:19.800] Thank you very much. [00:19.800 --> 00:31.200] Okay, so we are, as he's already told us, Methodis Cordero and Renaldo Cordero and we [00:31.200 --> 00:35.960] are going to present to you our project called Haskell Catas. [00:35.960 --> 00:39.560] To make a brief introduction of the content we're going to talk about. [00:39.560 --> 00:47.040] First of all we're going to talk about, we're going to set our goals of our learning improvements [00:47.040 --> 00:50.360] that we want to implement into our project. [00:50.360 --> 00:56.080] Then some characteristics, it will just be like a summary of the things we're going to [00:56.080 --> 01:00.880] do in our project, then we're going to talk about projects and finally we have like five [01:00.880 --> 01:04.280] minutes for questions and answers. [01:04.280 --> 01:13.240] So in learning improvements, we want to set some goals, we found three goals. [01:13.240 --> 01:20.880] First goal is that we want to learn on the way so that we could fasten our speed curve [01:20.880 --> 01:25.880] of learning Haskell and also make it comprehensive with a comprehensive method. [01:25.880 --> 01:31.400] Okay, the characteristics we want in our project are this. [01:31.400 --> 01:35.360] First of all, we want Catas as a way of learning. [01:35.360 --> 01:40.480] Catas is something that we're going to explain forward in the presentation and the thing [01:40.480 --> 01:49.920] we want to implement is make some exercises in which we could upload our solutions and [01:49.920 --> 01:59.720] also make them like so that people can interact with other solutions and see what other people [01:59.720 --> 02:10.080] respond to those cases and also make like many different exercises so that we can learn. [02:10.080 --> 02:13.240] So let's talk about projects. [02:13.240 --> 02:17.400] We have made here a summary of the steps of this project. [02:17.400 --> 02:24.960] First of all, it's an installation step in which we want to, first of all, have a validation [02:24.960 --> 02:31.040] step so that we check that everything is all right and when we have finished this selection, [02:31.040 --> 02:33.000] we have to log out. [02:33.120 --> 02:42.200] In step two, we recommend that people in the terminal write a new key help so that it gives [02:42.200 --> 02:47.000] a brief summary of what the project is about. [02:47.000 --> 02:52.800] Step three are the examples that we want to show you, but also here it will be like the [02:52.800 --> 02:58.480] step in which you do the exercises. [02:58.480 --> 03:04.160] We're going to do a very, very simple exercise that is a multiplication one, very simple, [03:04.160 --> 03:11.200] so that you can really get the step-by-step of doing it. [03:11.200 --> 03:13.200] So what is a cata about? [03:13.200 --> 03:17.440] Well, it's a type of exercise that has disappearance. [03:17.440 --> 03:24.200] On the right, you can see the editor and the instruction on other windows in the editor [03:24.240 --> 03:32.160] is the window where you are going to do the exercise and it has two files, the validation [03:32.160 --> 03:37.320] step test and the file solutions. [03:37.320 --> 03:43.760] In the left, you can see the editor changes where you can see the changes made in the [03:43.760 --> 03:49.520] editor and the compiler that is right below that shows the solutions, that everything [03:49.520 --> 03:52.520] is all right. [03:52.520 --> 03:59.520] So as we have already told you, in the editor is where we're going to do the exercise. [03:59.520 --> 04:01.960] The two files, yeah. [04:01.960 --> 04:09.640] So step one, all the steps are written in the comment window where it tells you what [04:09.640 --> 04:10.640] to do. [04:10.640 --> 04:16.520] First of all, it tells you to go to code words and update the local files, so we have left [04:16.520 --> 04:26.520] you here like a link so that you can enter and when clicking here, you will see this. [04:26.520 --> 04:33.640] Here you have the solution and the source test, the sample test. [04:33.640 --> 04:42.680] Here you copy the solution and take it to your Haskell cata and paste it, the type and [04:42.680 --> 04:43.680] the parameters. [04:43.680 --> 04:48.480] In this case, we want to multiply, so we're going to get another integer and we're going [04:48.480 --> 04:54.600] to get the type integer and also the parameters, we're going to have A and B, simple. [04:54.600 --> 05:02.120] And on the other hand, we're going to take the code that is in the link below, the link [05:02.120 --> 05:09.360] we already talked, and we're going to paste it in the comment window of the sample test, [05:09.360 --> 05:11.400] the file test, yeah. [05:11.400 --> 05:23.120] So this is what we had before and now we incorporate that code from the code words. [05:23.120 --> 05:26.280] Step two, step two tells you to get a red. [05:26.280 --> 05:31.200] This means that it compiles but it doesn't pass the test. [05:31.200 --> 05:41.360] So you will receive a red message in the terminal of the stack build. [05:41.360 --> 05:53.360] So next step, it gives you like a final step that shows you these things. [05:53.360 --> 06:00.520] First of all, resolve the exercise and doing that, you will receive a green message. [06:00.520 --> 06:05.360] Then you can certificate where here you will modify your own solution, trying to be the [06:05.360 --> 06:10.120] most expressive as possible and also you will validate with the code words. [06:10.120 --> 06:13.600] You will take the code and then you will paste it in the code words. [06:13.600 --> 06:21.600] And this is where the interesting part is, is that first of all, it allows you to see [06:21.600 --> 06:24.440] other people's solutions to the same exercise. [06:24.440 --> 06:27.200] So you can learn like different ways to do that. [06:27.200 --> 06:33.640] Also, it allows you to see the whole test cases and also upload your solutions to the [06:33.640 --> 06:34.640] test cases. [06:34.640 --> 06:41.640] And to commit, you only have to write in the terminal new key two and that's it. [06:41.640 --> 06:46.720] Some hot cases that you want to use while doing this. [06:46.720 --> 06:50.680] In the editor, you can use addp to save all the changes. [06:50.680 --> 06:56.600] Some other shortcuts could be shift addp to show turbulence, shift addq to lockout completely [06:56.600 --> 07:01.760] and shift add 125 to go from one terminal to another. [07:01.760 --> 07:02.760] And that's it. [07:03.560 --> 07:09.760] Thank you for listening and if you have any questions, my dad will come. [07:09.760 --> 07:12.760] Pa pa menti. [07:12.760 --> 07:22.760] Yes, we have until 20 past. [07:22.760 --> 07:24.760] Perfect. [07:24.760 --> 07:29.760] He's going to do a demonstration of it. [07:29.760 --> 07:31.760] Great dad. [07:31.760 --> 07:33.760] Well... [07:39.760 --> 07:40.760] Do you want to do it? [07:40.760 --> 07:41.760] Yes, of course. [07:41.760 --> 07:42.760] Yes? [07:43.760 --> 07:45.760] For the work to be done. [07:45.760 --> 07:47.760] Thank you. [07:59.760 --> 08:19.760] First of all, I want... [08:19.760 --> 08:23.760] First of all, I quit this. [08:23.760 --> 08:24.760] Okay? [08:24.760 --> 08:25.760] Simple. [08:26.760 --> 08:28.760] Shift addq. [08:28.760 --> 08:37.760] And let's start a terminal. [08:37.760 --> 08:39.760] Open a terminal. [08:39.760 --> 08:41.760] Now we can... [08:41.760 --> 08:43.760] Okay. [08:43.760 --> 08:45.760] Multiplie. [08:47.760 --> 08:49.760] Multiplie. [08:49.760 --> 08:51.760] Okay. [08:52.760 --> 09:01.760] This is the time to set up a Cata to continue a Cata. [09:01.760 --> 09:02.760] Okay? [09:02.760 --> 09:18.760] This is a Cata when I was working with this Cata and then I interested in continuing the Cata. [09:18.760 --> 09:19.760] Okay. [09:19.760 --> 09:26.760] This is the normal state for a Cata. [09:26.760 --> 09:41.760] You are in a red state, so it compiles, but it can test our work. [09:41.760 --> 09:45.760] Let's get a solution. [09:45.760 --> 09:47.760] A plus B. [09:47.760 --> 09:50.760] I think it's a correct solution for this. [09:50.760 --> 09:53.760] So, but in this... [09:53.760 --> 09:59.760] Well, if you read the instructions, the first step is to Cataficate code. [09:59.760 --> 10:02.760] It's very important this idea. [10:02.760 --> 10:11.760] To Cataficate code is giving this code that is correct out P to trial. [10:11.760 --> 10:12.760] It's an experiment. [10:12.760 --> 10:19.760] All tests are okay, so perfect. [10:19.760 --> 10:23.760] But in this time, the idea is to Cataficate this. [10:23.760 --> 10:31.760] To make this very simple code with more meaning. [10:31.760 --> 10:41.760] Please, somebody do something with this code to give more meaning to this. [10:42.760 --> 10:52.760] It's very interesting because good programmers don't know how to do with this. [10:52.760 --> 11:03.760] But the idea is you must try to give and Haskell is perfect because it's perfect for this. [11:03.760 --> 11:05.760] I gave one solution. [11:05.760 --> 11:08.760] Look, this is an equal. [11:08.760 --> 11:16.760] So, I think after the equal, after the equal is distinct from before the... [11:16.760 --> 11:20.760] So, I think I can do this. [11:20.760 --> 11:29.760] And maybe this is my personal and my personal try to Cataficate this code. [11:29.760 --> 11:35.760] So, first line, one meaning, second line, another meaning. [11:35.760 --> 11:37.760] Okay? [11:37.760 --> 11:39.760] Yes? [11:39.760 --> 11:42.760] You could rename the input variables. [11:42.760 --> 11:44.760] Yes, yes, perfect. [11:44.760 --> 11:46.760] You can rename the input names. [11:46.760 --> 11:51.760] That's not your personal approximation for the solution. [11:51.760 --> 11:56.760] And it's easy because give me a name, please. [11:56.760 --> 11:58.760] Operate one. [11:58.760 --> 12:03.760] Operate one, okay. [12:04.760 --> 12:07.760] The other one is Operate two, ever. [12:07.760 --> 12:09.760] Okay, no, no, no, no. [12:09.760 --> 12:10.760] Okay. [12:10.760 --> 12:11.760] Sorry. [12:11.760 --> 12:12.760] Perfect. [12:12.760 --> 12:15.760] Because that is correct and... [12:15.760 --> 12:21.760] Well, almost everything you made and that... [12:21.760 --> 12:24.760] Wait a minute. [12:24.760 --> 12:27.760] That compile is okay. [12:27.760 --> 12:29.760] Okay? [12:29.760 --> 12:31.760] And you are experimenting. [12:31.760 --> 12:32.760] That's the idea. [12:32.760 --> 12:33.760] Okay? [12:33.760 --> 12:34.760] Okay. [12:34.760 --> 12:36.760] And P and very fast. [12:36.760 --> 12:37.760] Okay? [12:37.760 --> 12:40.760] Your experiment is very fast. [12:40.760 --> 12:43.760] You don't mind about tooling, about anything. [12:43.760 --> 12:45.760] You are only... [12:45.760 --> 12:48.760] And this is an idea. [12:48.760 --> 12:50.760] Okay? [12:50.760 --> 12:54.760] When you get this, you can continue with this. [12:54.760 --> 12:58.760] But there are a lot of other approximations. [12:58.760 --> 13:02.760] You can do a lot of things with that. [13:02.760 --> 13:03.760] With this. [13:03.760 --> 13:04.760] Look at this. [13:04.760 --> 13:11.760] You can simply make this. [13:11.760 --> 13:12.760] Okay? [13:12.760 --> 13:14.760] A, B. [13:14.760 --> 13:15.760] Okay? [13:15.760 --> 13:17.760] And... [13:17.760 --> 13:18.760] Okay? [13:18.760 --> 13:20.760] So in columns. [13:20.760 --> 13:22.760] Okay? [13:22.760 --> 13:23.760] So... [13:23.760 --> 13:24.760] Oh! [13:24.760 --> 13:26.760] Two, three. [13:26.760 --> 13:30.760] One with another line. [13:30.760 --> 13:34.760] Two with another... [13:34.760 --> 13:37.760] Another names. [13:37.760 --> 13:38.760] And three. [13:38.760 --> 13:40.760] But there are a lot of... [13:40.760 --> 13:44.760] There are a lot more because the spacing is important. [13:44.760 --> 13:47.760] Because it's your space, your... [13:47.760 --> 13:48.760] Okay? [13:48.760 --> 13:50.760] Imagine this one. [13:50.760 --> 13:52.760] Okay? [13:52.760 --> 13:54.760] Pass the test. [13:54.760 --> 13:55.760] Okay? [13:55.760 --> 13:56.760] Yes. [13:56.760 --> 13:58.760] The service experiment. [13:58.760 --> 14:00.760] So you... [14:00.760 --> 14:03.760] Maybe from time to time you fail. [14:03.760 --> 14:04.760] Okay? [14:04.760 --> 14:08.760] So it's very good for... [14:08.760 --> 14:09.760] Experimenting. [14:09.760 --> 14:13.760] And then we are here. [14:13.760 --> 14:15.760] And then new K3. [14:15.760 --> 14:18.760] So you simply... [14:18.760 --> 14:21.760] New K3. [14:21.760 --> 14:23.760] And then... [14:23.760 --> 14:24.760] Ah! [14:24.760 --> 14:25.760] Okay. [14:25.760 --> 14:28.760] Commit your certificate code. [14:28.760 --> 14:31.760] Please enter a commit message. [14:31.760 --> 14:33.760] In this case what... [14:33.760 --> 14:39.760] To a commit message for this. [14:39.760 --> 14:41.760] Like saying these symptoms. [14:41.760 --> 14:44.760] Maybe a rename. [14:44.760 --> 14:45.760] Rename? [14:45.760 --> 14:46.760] Okay. [14:46.760 --> 14:47.760] That's it. [14:47.760 --> 14:51.760] And then here is your code. [14:51.760 --> 14:56.760] The idea is to make fast experiments and... [14:56.760 --> 15:01.760] And forgot about environment, tooling, everything. [15:01.760 --> 15:03.760] You just... [15:03.760 --> 15:04.760] Okay? [15:04.760 --> 15:06.760] This is a very, very simple code. [15:06.760 --> 15:10.760] But when you reach other codes, [15:10.760 --> 15:15.760] you experiment a lot of interesting interactions with... [15:15.760 --> 15:17.760] With what you... [15:18.760 --> 15:22.760] With other catification you have made on your style, [15:22.760 --> 15:27.760] improve greatly and make a lot of interesting experiments. [15:27.760 --> 15:29.760] That's the idea behind this. [15:29.760 --> 15:35.760] And then another in the first position. [15:35.760 --> 15:40.760] The idea is you. [15:40.760 --> 15:42.760] No. [15:42.760 --> 15:43.760] My... [15:43.760 --> 15:44.760] Okay. [15:44.760 --> 15:45.760] Yes. [15:45.760 --> 15:48.760] This is Haskell Catastrophe of Comset in Google. [15:48.760 --> 15:50.760] So you get this. [15:50.760 --> 15:53.760] This is the webpage of the project. [15:53.760 --> 15:56.760] If you... [15:56.760 --> 15:59.760] If you... [15:59.760 --> 16:01.760] Go down here. [16:01.760 --> 16:05.760] There is a way to install. [16:05.760 --> 16:06.760] Install. [16:06.760 --> 16:07.760] Install... [16:07.760 --> 16:08.760] Here. [16:08.760 --> 16:09.760] Recommended. [16:09.760 --> 16:10.760] Install via script. [16:10.760 --> 16:15.760] You only... [16:15.760 --> 16:16.760] Unload... [16:16.760 --> 16:20.760] Download this code. [16:20.760 --> 16:24.760] And execute and you install the whole... [16:24.760 --> 16:27.760] The whole system in very fast, very easy. [16:27.760 --> 16:29.760] It's all free software. [16:29.760 --> 16:32.760] It's... [16:32.760 --> 16:34.760] It's very simple. [16:34.760 --> 16:35.760] It's a... [16:35.760 --> 16:38.760] It's a bash script. [16:40.760 --> 16:41.760] And... [16:41.760 --> 16:42.760] Okay. [16:42.760 --> 16:46.760] This is the code of the installer. [16:46.760 --> 16:49.760] It's a regular... [16:49.760 --> 16:52.760] It's very, very, very simple. [16:52.760 --> 16:53.760] But... [16:53.760 --> 16:54.760] Ah. [16:54.760 --> 17:01.760] One curiosity, it uses a cinema to... [17:01.760 --> 17:02.760] To validate the... [17:02.760 --> 17:03.760] Well, to... [17:03.760 --> 17:08.760] So you can revise the code, the installation. [17:08.760 --> 17:16.760] If you install using a cinema and you can revise what was... [17:16.760 --> 17:19.760] What were your... [17:19.760 --> 17:21.760] What have you done? [17:21.760 --> 17:23.760] Well, this is the... [17:23.760 --> 17:27.760] This is the code wars web. [17:27.760 --> 17:29.760] This code wars... [17:29.760 --> 17:32.760] When you... [17:32.760 --> 17:33.760] Download... [17:33.760 --> 17:34.760] Take the... [17:34.760 --> 17:35.760] This one. [17:35.760 --> 17:37.760] The... [17:37.760 --> 17:38.760] Okay. [17:38.760 --> 17:39.760] This one. [17:39.760 --> 17:41.760] And this one. [17:41.760 --> 17:42.760] This one. [17:42.760 --> 17:45.760] Okay. [17:45.760 --> 17:46.760] And you get this. [17:46.760 --> 17:49.760] The solutions of the... [17:49.760 --> 17:51.760] Of the... [17:51.760 --> 17:52.760] Of the... [17:52.760 --> 17:53.760] Of the... [17:53.760 --> 17:54.760] You get these solutions. [17:54.760 --> 17:55.760] Okay. [17:55.760 --> 17:57.760] It's very important because if you... [17:57.760 --> 18:00.760] You can get the test cases. [18:00.760 --> 18:05.760] Not only the simple ones, but the... [18:05.760 --> 18:08.760] You see in proper... [18:08.760 --> 18:11.760] The advanced test. [18:11.760 --> 18:12.760] Okay. [18:12.760 --> 18:13.760] You see property. [18:13.760 --> 18:21.760] So it's more robust to validate. [18:21.760 --> 18:24.760] Okay. [18:24.760 --> 18:27.760] Shift alt P. [18:27.760 --> 18:30.760] And you can... [18:30.760 --> 18:31.760] Wait a moment. [18:31.760 --> 18:32.760] Okay. [18:32.760 --> 18:33.760] Yes. [18:33.760 --> 18:35.760] This is the... [18:35.760 --> 18:38.760] Okay. [18:38.760 --> 18:39.760] Of course. [18:39.760 --> 18:45.760] And when you use this on your computer, [18:45.760 --> 18:50.760] You have total control and you can use your own strategy. [18:50.760 --> 18:54.760] Your own... [18:54.760 --> 18:56.760] Your libraries, everything. [18:56.760 --> 18:57.760] You decide everything. [18:57.760 --> 18:59.760] Not only... [18:59.760 --> 19:02.760] It's like code wars. [19:02.760 --> 19:06.760] But in a more... [19:06.760 --> 19:07.760] You have more control. [19:07.760 --> 19:09.760] And then the cat-a-ficate... [19:09.760 --> 19:12.760] The idea is you take the next one. [19:12.760 --> 19:13.760] Next solution. [19:13.760 --> 19:14.760] This one. [19:14.760 --> 19:15.760] Okay. [19:15.760 --> 19:17.760] And you copy. [19:17.760 --> 19:22.760] And past here. [19:22.760 --> 19:23.760] Okay. [19:23.760 --> 19:25.760] Look at the idea. [19:25.760 --> 19:26.760] Okay. [19:26.760 --> 19:28.760] That's the idea. [19:28.760 --> 19:32.760] So obviously, because it's a solution, [19:32.760 --> 19:33.760] It works. [19:33.760 --> 19:34.760] Okay. [19:34.760 --> 19:35.760] And then you... [19:35.760 --> 19:36.760] Okay. [19:36.760 --> 19:37.760] Alt P. [19:37.760 --> 19:38.760] Okay. [19:38.760 --> 19:40.760] Obviously, it compiles. [19:40.760 --> 19:44.760] And then you do another cat-ification. [19:44.760 --> 19:46.760] What's your... [19:46.760 --> 19:50.760] What's your approach to this cat-ification? [19:50.760 --> 19:54.760] And one idea. [19:54.760 --> 19:56.760] Maybe if you... [19:56.760 --> 20:00.760] Maybe you hit after the equal. [20:00.760 --> 20:04.760] And in column, multiply. [20:04.760 --> 20:10.760] So visually, you establish this idea. [20:10.760 --> 20:12.760] The first is the second. [20:12.760 --> 20:17.760] So it's very curious because... [20:17.760 --> 20:21.760] It's not normal to do this in a professional... [20:21.760 --> 20:22.760] According. [20:22.760 --> 20:31.760] To do this, it's easier to get this idea. [20:31.760 --> 20:34.760] So maybe it's a cat-ification. [20:34.760 --> 20:38.760] But the idea is you can establish your cat-ification. [20:38.760 --> 20:39.760] Okay. [20:39.760 --> 20:40.760] Alt P. [20:40.760 --> 20:42.760] And another one. [20:42.760 --> 20:45.760] You, following the instructions, [20:45.760 --> 20:47.760] New K minus three. [20:47.760 --> 20:49.760] New K minus three. [20:49.760 --> 20:50.760] And another. [20:50.760 --> 20:52.760] Maybe this is a section. [20:52.760 --> 20:56.760] Well, if you don't know what... [20:56.760 --> 20:58.760] You can invent whatever you want. [20:58.760 --> 21:00.760] I know this section. [21:00.760 --> 21:02.760] So maybe a section. [21:02.760 --> 21:03.760] Let's see. [21:03.760 --> 21:05.760] And another one. [21:05.760 --> 21:07.760] And you take another solution. [21:07.760 --> 21:08.760] Okay. [21:08.760 --> 21:10.760] Look at the solution. [21:10.760 --> 21:12.760] It's very interesting. [21:12.760 --> 21:14.760] It's a very interesting solution. [21:14.760 --> 21:15.760] Okay. [21:15.760 --> 21:16.760] Here. [21:16.760 --> 21:18.760] The idea is very fast. [21:18.760 --> 21:23.760] You can do this very, very fast. [21:23.760 --> 21:26.760] Okay. [21:26.760 --> 21:27.760] Yes. [21:27.760 --> 21:29.760] This compiles. [21:29.760 --> 21:31.760] Okay. [21:31.760 --> 21:34.760] And then you cat-ificate this. [21:34.760 --> 21:38.760] Maybe it's a... [21:38.760 --> 21:41.760] Well, I imagine you can do this. [21:41.760 --> 21:46.760] And maybe you can do this. [21:46.760 --> 21:48.760] Or whatever. [21:48.760 --> 21:50.760] Because I know this is... [21:50.760 --> 21:52.760] No, you can do whatever you do. [21:52.760 --> 21:53.760] It's okay. [21:53.760 --> 21:54.760] Okay. [21:54.760 --> 21:56.760] This is another... [21:56.760 --> 21:57.760] Here. [21:57.760 --> 22:03.760] So maybe try again. [22:03.760 --> 22:04.760] Should be. [22:04.760 --> 22:05.760] Should be. [22:05.760 --> 22:06.760] Should be. [22:06.760 --> 22:07.760] Okay. [22:07.760 --> 22:13.760] Small problem because... [22:14.760 --> 22:17.760] No, no, no. [22:17.760 --> 22:21.760] Ah, maybe it's not exactly okay. [22:21.760 --> 22:23.760] Ah, okay, okay, okay. [22:23.760 --> 22:24.760] Ah, okay. [22:24.760 --> 22:25.760] Yes, exactly. [22:25.760 --> 22:29.760] Because I... [22:29.760 --> 22:30.760] Andu. [22:30.760 --> 22:32.760] Andu, andu, andu, andu. [22:32.760 --> 22:33.760] Okay. [22:33.760 --> 22:34.760] Exactly. [22:34.760 --> 22:35.760] That's the idea. [22:35.760 --> 22:37.760] Because I lost the... [22:37.760 --> 22:38.760] Okay. [22:38.760 --> 22:39.760] Alpine. [22:39.760 --> 22:40.760] Experiment. [22:40.760 --> 22:41.760] I'm very fast. [22:41.760 --> 22:44.760] If you don't know where you are. [22:44.760 --> 22:45.760] Andu, andu. [22:45.760 --> 22:47.760] And you... [22:47.760 --> 22:51.760] The idea is you don't get stuck using Haskell. [22:51.760 --> 22:55.760] You continuously... [22:55.760 --> 22:57.760] In contact with Haskell. [22:57.760 --> 22:59.760] With no pain. [22:59.760 --> 23:00.760] And experiment. [23:00.760 --> 23:02.760] And very easy. [23:02.760 --> 23:04.760] And that's the idea. [23:04.760 --> 23:05.760] Okay. [23:05.760 --> 23:06.760] Okay. [23:06.760 --> 23:08.760] And this is... [23:08.760 --> 23:13.760] This is for a workshop. [23:13.760 --> 23:15.760] For a workshop. [23:15.760 --> 23:16.760] In a workshop. [23:16.760 --> 23:20.760] It's very easy because I can... [23:20.760 --> 23:21.760] All of... [23:21.760 --> 23:24.760] The fun is in doing this. [23:24.760 --> 23:26.760] And when you cataficate other code, [23:26.760 --> 23:31.760] you realize that this is very easy, [23:31.760 --> 23:32.760] very fast, etc. [23:32.760 --> 23:33.760] That's the idea. [23:33.760 --> 23:34.760] Okay. [23:34.760 --> 23:36.760] Do we have any questions? [23:36.760 --> 23:37.760] Any questions? [23:37.760 --> 23:38.760] Okay. [23:38.760 --> 23:39.760] That's it. [23:39.760 --> 23:41.760] Thank you very much. [23:41.760 --> 23:42.760] Thank you. [23:42.760 --> 23:43.760] Thank you very much. [23:43.760 --> 23:44.760] Thank you. [23:44.760 --> 23:45.760] Thank you. [23:45.760 --> 23:46.760] Thank you. [23:46.760 --> 23:47.760] Thank you. [23:47.760 --> 23:48.760] Thank you very much. [23:48.760 --> 23:49.760] Thank you. [23:49.760 --> 23:50.760] Thank you. [23:50.760 --> 23:51.760] Thank you. [23:51.760 --> 23:52.760] Thank you. [23:52.760 --> 23:53.760] That is... [23:53.760 --> 23:54.760] So there is... [23:54.760 --> 23:56.760] Thank you very much for that, [23:56.760 --> 23:58.760] Ronaldo. [23:58.760 --> 24:01.760] And there is 20 more minutes in this session. [24:01.760 --> 24:05.760] So I would encourage you to... [24:05.760 --> 24:07.760] for your Haskell Carter's environment. [24:07.760 --> 24:10.760] And if you are able to assist people, [24:10.760 --> 24:11.760] answer questions, [24:11.760 --> 24:14.760] then we can do that for the next 20 minutes. [24:14.760 --> 24:15.760] Okay. [24:15.760 --> 24:16.760] Thank you. [24:16.760 --> 24:17.760] I have 20 more minutes. [24:17.760 --> 24:19.760] 20 more minutes. [24:19.760 --> 24:20.760] Yes. [24:20.760 --> 24:21.760] Oh, I... [24:21.760 --> 24:22.760] You want to keep going? [24:22.760 --> 24:23.760] Oh! [24:23.760 --> 24:25.760] I have 24... [24:25.760 --> 24:26.760] Perfect. [24:26.760 --> 24:27.760] Please. [24:27.760 --> 24:31.760] Come here and please... [24:31.760 --> 24:32.760] So 20 more minutes here. [24:32.760 --> 24:33.760] Feel free to come up... [24:33.760 --> 24:34.760] Perfect. [24:34.760 --> 24:36.760] And maybe just fly all your limbs [24:36.760 --> 24:38.760] if you have a question. [24:38.760 --> 24:39.760] And... [24:39.760 --> 24:40.760] Okay. [24:40.760 --> 24:41.760] Thank you. [24:41.760 --> 24:42.760] Oh! [24:42.760 --> 24:43.760] Of course. [24:43.760 --> 24:44.760] Please. [24:44.760 --> 24:45.760] Sofia. [24:45.760 --> 24:46.760] Okay. [24:46.760 --> 24:47.760] Okay. [24:47.760 --> 24:48.760] Ooh. [24:48.760 --> 24:49.760] Okay. [24:49.760 --> 24:52.760] Maybe we can make another one. [24:52.760 --> 24:53.760] We can... [24:53.760 --> 24:55.760] Cataficate another one. [24:55.760 --> 24:57.760] Maybe this one. [24:57.760 --> 24:58.760] Isn't it? [24:58.760 --> 24:59.760] No. [24:59.760 --> 25:00.760] No. [25:00.760 --> 25:01.760] No. [25:01.760 --> 25:02.760] No. [25:02.760 --> 25:03.760] No. [25:03.760 --> 25:04.760] Okay. [25:04.760 --> 25:05.760] This one. [25:05.760 --> 25:06.760] Is the next? [25:06.760 --> 25:07.760] Okay. [25:07.760 --> 25:09.760] Copy this. [25:09.760 --> 25:12.760] Copy this. [25:12.760 --> 25:13.760] Paste. [25:13.760 --> 25:19.760] And replace the code. [25:19.760 --> 25:20.760] Okay. [25:20.760 --> 25:21.760] Look. [25:21.760 --> 25:25.760] This is based on observation. [25:25.760 --> 25:26.760] Look. [25:26.760 --> 25:27.760] This is new. [25:27.760 --> 25:28.760] I... [25:28.760 --> 25:31.760] A new line import, [25:31.760 --> 25:34.760] but I can... [25:34.760 --> 25:36.760] I can see this. [25:36.760 --> 25:40.760] So my mind is taking note of this. [25:40.760 --> 25:41.760] Okay. [25:41.760 --> 25:44.760] And of course it compiles. [25:44.760 --> 25:46.760] Of course because it's a solution [25:46.760 --> 25:49.760] and then the idea is to cataficate this. [25:49.760 --> 25:50.760] Okay. [25:50.760 --> 25:51.760] If you cataficate, [25:51.760 --> 25:55.760] you use your previous catification style [25:55.760 --> 25:58.760] and try to do the same. [25:58.760 --> 26:03.760] My style was after equal, [26:03.760 --> 26:04.760] a return, [26:04.760 --> 26:05.760] make a return, [26:05.760 --> 26:07.760] after another sign, [26:07.760 --> 26:08.760] make a return. [26:08.760 --> 26:09.760] Okay. [26:09.760 --> 26:13.760] And if you do this... [26:13.760 --> 26:14.760] Okay. [26:14.760 --> 26:15.760] Oh, it's a compile. [26:15.760 --> 26:16.760] So it's perfect. [26:16.760 --> 26:17.760] But well, [26:17.760 --> 26:21.760] I know do is a block. [26:21.760 --> 26:24.760] So normally blocks are... [26:24.760 --> 26:26.760] So this is... [26:26.760 --> 26:30.760] If you don't know this at this moment, [26:30.760 --> 26:33.760] maybe later you can realize that. [26:33.760 --> 26:34.760] Okay. [26:34.760 --> 26:35.760] And look, [26:35.760 --> 26:39.760] all these symbols, [26:39.760 --> 26:42.760] if you put these symbols on the left, [26:42.760 --> 26:46.760] the idea is you can't forget about it. [26:46.760 --> 26:48.760] It's... [26:48.760 --> 26:52.760] Because your mind is focused on the rest. [26:52.760 --> 26:53.760] So... [26:53.760 --> 26:54.760] Okay. [26:54.760 --> 26:55.760] Okay. [26:55.760 --> 26:56.760] This compiles. [26:56.760 --> 26:57.760] Perfect. [26:57.760 --> 26:58.760] Okay. [26:58.760 --> 26:59.760] So another... [26:59.760 --> 27:01.760] This is cataficated. [27:01.760 --> 27:03.760] So... [27:03.760 --> 27:04.760] Yes. [27:04.760 --> 27:05.760] Wait a minute. [27:05.760 --> 27:06.760] Okay. [27:06.760 --> 27:13.760] So this is the... [27:13.760 --> 27:15.760] Comments for... [27:15.760 --> 27:20.760] And maybe this from... [27:20.760 --> 27:22.760] From just. [27:22.760 --> 27:23.760] Because these are from just. [27:23.760 --> 27:25.760] I think it's interesting. [27:25.760 --> 27:26.760] Okay. [27:26.760 --> 27:29.760] But you can do whatever you want. [27:29.760 --> 27:35.760] Because if you don't do... [27:35.760 --> 27:42.760] Well, you learn revising the code later. [27:42.760 --> 27:47.760] And because you made... [27:47.760 --> 27:48.760] If you do this, [27:48.760 --> 27:50.760] you remember a lot of things, [27:50.760 --> 27:52.760] a lot of details. [27:52.760 --> 27:54.760] At the same time, [27:54.760 --> 27:57.760] when you saw a movie, [27:57.760 --> 27:59.760] you remember... [27:59.760 --> 28:04.760] You can remember a lot of details very fast, [28:04.760 --> 28:09.760] because your mind is prepared to do this. [28:09.760 --> 28:11.760] It's not... [28:11.760 --> 28:21.760] If you look someone who is watching a movie, [28:21.760 --> 28:25.760] I can't look in that person. [28:25.760 --> 28:27.760] I don't understand that. [28:27.760 --> 28:29.760] You are at the wheel. [28:29.760 --> 28:31.760] It's very different. [28:31.760 --> 28:34.760] So it's important to cataficate by yourself. [28:34.760 --> 28:35.760] Okay. [28:35.760 --> 28:36.760] And this... [28:36.760 --> 28:38.760] You take another one, [28:38.760 --> 28:40.760] another one, another one. [28:40.760 --> 28:41.760] Okay. [28:41.760 --> 28:45.760] I... [28:45.760 --> 28:46.760] Okay. [28:46.760 --> 28:48.760] The installation. [28:48.760 --> 28:50.760] Because it's the... [28:50.760 --> 28:53.760] It's the most important thing. [28:53.760 --> 28:55.760] You are interested, I think. [28:55.760 --> 28:56.760] Okay. [28:56.760 --> 29:00.760] The installation is very simple. [29:00.760 --> 29:03.760] Well, here. [29:03.760 --> 29:08.760] You need to... [29:08.760 --> 29:12.760] Close, close. [29:12.760 --> 29:14.760] Okay. [29:14.760 --> 29:16.760] Here. [29:16.760 --> 29:18.760] The installation is here, [29:18.760 --> 29:22.760] in the project... [29:22.760 --> 29:24.760] Download from installation. [29:24.760 --> 29:26.760] Install, we are recommending. [29:26.760 --> 29:29.760] You get a file. [29:29.760 --> 29:31.760] Let's do it. [29:31.760 --> 29:33.760] Okay. [29:33.760 --> 29:34.760] Here is the... [29:34.760 --> 29:35.760] Install. [29:35.760 --> 29:36.760] Okay. [29:36.760 --> 29:38.760] Open the installation. [29:38.760 --> 29:39.760] You see? [29:39.760 --> 29:41.760] Because it's there. [29:41.760 --> 29:43.760] Moment, moment. [29:43.760 --> 29:47.760] Okay. [29:47.760 --> 29:54.760] Okay. [29:54.760 --> 29:55.760] Okay. [29:55.760 --> 29:57.760] So you... [29:57.760 --> 29:59.760] Install. [29:59.760 --> 30:04.760] Make sure it's... [30:04.760 --> 30:05.760] Okay. [30:05.760 --> 30:07.760] It's already bad. [30:07.760 --> 30:11.760] It is. [30:11.760 --> 30:16.760] Okay. [30:17.760 --> 30:18.760] Okay. [30:18.760 --> 30:22.760] And, of course... [30:22.760 --> 30:23.760] Okay. [30:23.760 --> 30:27.760] Installation script. [30:27.760 --> 30:28.760] Okay. [30:28.760 --> 30:30.760] A cinema is currently installed. [30:30.760 --> 30:46.760] So it recommends to... [30:46.760 --> 31:00.760] Excuse me. [31:00.760 --> 31:01.760] Okay. [31:01.760 --> 31:02.760] Here. [31:02.760 --> 31:05.760] Okay. [31:05.760 --> 31:08.760] The password? [31:08.760 --> 31:13.760] Your password. [31:13.760 --> 31:16.760] Okay. [31:16.760 --> 31:21.760] Here it is. [31:21.760 --> 31:22.760] Okay. [31:22.760 --> 31:23.760] And that's it. [31:23.760 --> 31:24.760] You... [31:24.760 --> 31:25.760] You will... [31:25.760 --> 31:26.760] You wait. [31:26.760 --> 31:27.760] You wait. [31:27.760 --> 31:31.760] And, of course... [31:31.760 --> 31:36.760] You get a file you can revise later, [31:36.760 --> 31:38.760] if you are interested. [31:38.760 --> 31:42.760] If they... [31:42.760 --> 31:46.760] You can get some warnings and even some errors, [31:46.760 --> 31:47.760] but it's okay. [31:47.760 --> 31:51.760] The program compiles correctly [31:51.760 --> 31:55.760] and is ready to use. [31:55.760 --> 32:00.760] And the idea is using this environment [32:00.760 --> 32:02.760] is very fast. [32:02.760 --> 32:09.760] You get a test environment... [32:09.760 --> 32:14.760] Well, you are encouraged to use this test, [32:14.760 --> 32:24.760] this scientific way of learning programming [32:24.760 --> 32:28.760] because you use continuously tests in two ways. [32:29.760 --> 32:33.760] Knife test and then you get the extra test. [32:33.760 --> 32:42.760] So it's a good two-phase way of learning [32:42.760 --> 32:46.760] because you get some errors in the... [32:46.760 --> 32:48.760] You pass the code, [32:48.760 --> 32:53.760] but when you pass the extra test, [32:53.760 --> 32:55.760] you realize your code is not okay. [32:55.760 --> 33:00.760] And the idea behind this is modeling your mind, [33:00.760 --> 33:02.760] realize... [33:02.760 --> 33:05.760] You realize... [33:05.760 --> 33:06.760] Okay. [33:06.760 --> 33:07.760] It's... [33:07.760 --> 33:08.760] No, no, no. [33:08.760 --> 33:09.760] No, no. [33:09.760 --> 33:10.760] It's... [33:10.760 --> 33:11.760] No, no, no. [33:11.760 --> 33:12.760] It takes... [33:12.760 --> 33:13.760] It takes... [33:13.760 --> 33:14.760] It takes quite... [33:14.760 --> 33:15.760] If the... [33:15.760 --> 33:16.760] In the installation, [33:16.760 --> 33:21.760] the screen is apparently doing nothing. [33:21.760 --> 33:23.760] It's doing... [33:23.760 --> 33:24.760] You need to wait. [33:24.760 --> 33:25.760] It's okay. [33:25.760 --> 33:26.760] Okay? [33:26.760 --> 33:31.760] But in some time, the installation... [33:31.760 --> 33:34.760] It's only one installation and it's okay. [33:34.760 --> 33:39.760] And you get a system. [33:39.760 --> 33:42.760] You can do this... [33:42.760 --> 33:45.760] And you can use this for whatever you want. [33:45.760 --> 33:50.760] Well, if you want to see a little... [33:50.760 --> 33:54.760] A little of the code. [33:54.760 --> 33:56.760] This is the install, [33:56.760 --> 34:01.760] but the... [34:01.760 --> 34:07.760] The code is here. [34:07.760 --> 34:09.760] This one is the program. [34:09.760 --> 34:12.760] It's a very simple program. [34:12.760 --> 34:15.760] Very, very simple. [34:15.760 --> 34:17.760] And very hackable. [34:17.760 --> 34:27.760] You can change a lot of things very easily. [34:27.760 --> 34:30.760] Even you can... [34:30.760 --> 34:34.760] You open at least five... [34:34.760 --> 34:36.760] Five... [34:36.760 --> 34:38.760] Five terminals. [34:38.760 --> 34:39.760] Okay? [34:39.760 --> 34:40.760] The editor. [34:40.760 --> 34:41.760] The REPL. [34:41.760 --> 34:42.760] A REPL. [34:42.760 --> 34:43.760] Okay? [34:43.760 --> 34:44.760] Okay? [34:44.760 --> 34:45.760] So you can... [34:45.760 --> 34:46.760] You... [34:46.760 --> 34:50.760] For your experiments... [34:50.760 --> 34:52.760] Your diff. [34:52.760 --> 34:57.760] Because you... [34:57.760 --> 35:00.760] Make some... [35:00.760 --> 35:01.760] Okay? [35:01.760 --> 35:02.760] Oh. [35:02.760 --> 35:03.760] Oh. [35:03.760 --> 35:04.760] Sorry. [35:04.760 --> 35:08.760] Some... [35:08.760 --> 35:10.760] Okay? [35:10.760 --> 35:12.760] Alt P. [35:12.760 --> 35:19.760] Alt O. [35:19.760 --> 35:20.760] Okay? [35:20.760 --> 35:23.760] You can revise the code you are... [35:23.760 --> 35:24.760] Change. [35:24.760 --> 35:26.760] Three... [35:26.760 --> 35:27.760] Okay? [35:27.760 --> 35:29.760] Obviously... [35:29.760 --> 35:32.760] It doesn't compile. [35:32.760 --> 35:39.760] And... [35:39.760 --> 35:41.760] U.K. [35:41.760 --> 35:43.760] Obviously, this is a... [35:43.760 --> 35:44.760] Normal terminal. [35:44.760 --> 35:45.760] So you can move. [35:45.760 --> 35:47.760] You can rearrange. [35:47.760 --> 35:52.760] And you can even create another one for other... [35:52.760 --> 35:55.760] With other... [35:55.760 --> 35:56.760] Intentions. [35:56.760 --> 35:57.760] Okay? [35:57.760 --> 35:59.760] This is the... [35:59.760 --> 36:00.760] Help. [36:00.760 --> 36:03.760] For this... [36:03.760 --> 36:04.760] Oh. [36:04.760 --> 36:05.760] Okay? [36:05.760 --> 36:06.760] Minus... [36:06.760 --> 36:07.760] H. [36:07.760 --> 36:08.760] Two catas. [36:08.760 --> 36:11.760] Recommended catas to start with. [36:11.760 --> 36:18.760] But you can use a lot of... [36:18.760 --> 36:20.760] In code words. [36:20.760 --> 36:21.760] Okay? [36:21.760 --> 36:23.760] You get... [36:23.760 --> 36:27.760] Exactly one thousand seven eight... [36:27.760 --> 36:28.760] Seven... [36:28.760 --> 36:33.760] A lot of catas you can use in the same way. [36:33.760 --> 36:36.760] So it's very easy to... [36:36.760 --> 36:41.760] And it's very fast to set up in your... [36:41.760 --> 36:43.760] In your laptop or in your computer. [36:43.760 --> 36:46.760] Because it's copied to small things. [36:46.760 --> 36:49.760] And start working with. [36:49.760 --> 36:52.760] Okay? [36:52.760 --> 36:55.760] That's it. [36:55.760 --> 36:56.760] Okay? [36:56.760 --> 37:00.760] Ah, yes. [37:00.760 --> 37:02.760] This is the help. [37:02.760 --> 37:05.760] And you can help. [37:05.760 --> 37:08.760] Okay? [37:08.760 --> 37:11.760] It's only three phases. [37:11.760 --> 37:13.760] First rate is number one. [37:13.760 --> 37:19.760] Extended test when you... [37:19.760 --> 37:21.760] With your first solution. [37:21.760 --> 37:22.760] Okay? [37:22.760 --> 37:23.760] And you get extended test. [37:23.760 --> 37:26.760] And the other one is next. [37:26.760 --> 37:28.760] It's another... [37:28.760 --> 37:29.760] Grab another solution. [37:29.760 --> 37:33.760] And it's very ready to a hackathon. [37:33.760 --> 37:38.760] Because you are with a lot of people doing the same catas. [37:38.760 --> 37:44.760] Other people can give you your solutions. [37:44.760 --> 37:56.760] And it's very fun because your audience solutions fit your catification phase. [37:56.760 --> 37:57.760] Okay? [37:57.760 --> 38:00.760] So it's quite fun. [38:00.760 --> 38:04.760] You can get fun. [38:04.760 --> 38:11.760] And a lot of people who are interested in this. [38:11.760 --> 38:19.760] Since very small child to seasoned programmers. [38:19.760 --> 38:20.760] Okay? [38:20.760 --> 38:22.760] Well, this is a help. [38:22.760 --> 38:25.760] Phase one, phase two, phase three, three, three, three. [38:25.760 --> 38:27.760] This is lock. [38:27.760 --> 38:28.760] Okay? [38:29.760 --> 38:31.760] New K. [38:31.760 --> 38:33.760] This is the first lock. [38:33.760 --> 38:34.760] Okay? [38:34.760 --> 38:35.760] With instructions. [38:35.760 --> 38:39.760] This is another help with instructions. [38:39.760 --> 38:41.760] But with less... [38:41.760 --> 38:44.760] It's more simple than this one. [38:44.760 --> 38:47.760] Okay? [38:47.760 --> 38:55.760] Another interesting is show. [38:55.760 --> 39:00.760] So you can revise your solutions. [39:00.760 --> 39:03.760] New K minus. [39:03.760 --> 39:04.760] Okay? [39:04.760 --> 39:05.760] This is... [39:05.760 --> 39:14.760] And you can establish visually some similarities. [39:14.760 --> 39:21.760] So you can revise what you are doing. [39:21.760 --> 39:22.760] Okay? [39:22.760 --> 39:23.760] This is one. [39:23.760 --> 39:24.760] Okay? [39:24.760 --> 39:31.760] Another is faster because it's only one color. [39:31.760 --> 39:36.760] Another one, maybe this is... [39:36.760 --> 39:38.760] Ah, you can compare. [39:38.760 --> 39:39.760] Okay? [39:39.760 --> 39:40.760] Compare. [39:40.760 --> 39:41.760] Compare. [39:41.760 --> 39:53.760] Because when you get this, you can use these codes. [39:54.760 --> 39:57.760] This is from Git. [39:57.760 --> 40:01.760] So you can do this. [40:01.760 --> 40:07.760] New K minus compare. [40:07.760 --> 40:13.760] Oh, close. [40:13.760 --> 40:16.760] Minus compare. [40:16.760 --> 40:18.760] Okay? [40:18.760 --> 40:19.760] Copy. [40:19.760 --> 40:24.760] And maybe this one with this one. [40:24.760 --> 40:27.760] Okay? [40:27.760 --> 40:31.760] This is... [40:31.760 --> 40:39.760] The idea is the most important thing about this is it's fast to use. [40:39.760 --> 40:41.760] You forget about tooling. [40:41.760 --> 40:43.760] You can... [40:43.760 --> 40:45.760] It's hackable. [40:45.760 --> 40:50.760] So I don't want to use Emacs. [40:50.760 --> 40:53.760] So you go to the... [40:53.760 --> 41:02.760] In the script, you go and change this and change for your favorite editor. [41:02.760 --> 41:03.760] I don't like... [41:03.760 --> 41:04.760] It's very easy to... [41:04.760 --> 41:06.760] Because it's a bash script. [41:06.760 --> 41:08.760] So it's very hackable. [41:08.760 --> 41:11.760] It's very expandable. [41:11.760 --> 41:12.760] It's a script. [41:12.760 --> 41:15.760] So you put another terminal. [41:15.760 --> 41:20.760] Say whenever you want to open. [41:20.760 --> 41:23.760] And it's very easy to... [41:23.760 --> 41:26.760] It's very easy to... [41:26.760 --> 41:28.760] Okay. [41:28.760 --> 41:31.760] To use. [41:31.760 --> 41:32.760] Okay? [41:32.760 --> 41:33.760] Okay. [41:33.760 --> 41:34.760] Okay? [41:34.760 --> 41:35.760] Thank you very much. [41:35.760 --> 41:37.760] And thank you very much. [41:37.760 --> 41:42.760] This is our proposal and please use it. [41:42.760 --> 41:43.760] Please.