diff options
3 files changed, 869 insertions, 2 deletions
diff --git a/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt b/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt new file mode 100644 index 00000000..c2a49049 --- /dev/null +++ b/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt @@ -0,0 +1,649 @@ +WEBVTT captioned by daniel molina, checked by sachac + +NOTE Introduction + +00:00:01.360 --> 00:00:03.079 +Welcome everybody. My name is Daniel Molina + +00:00:03.080 --> 00:00:05.060 +and I'm going to give this talk + +00:00:05.061 --> 00:00:08.063 +"Who needs Excel? Managing your students' qualifications + +00:00:08.064 --> 00:00:08.959 +with Org-table". + +00:00:08.960 --> 00:00:10.559 +I'm a professor. I work every day. + +00:00:10.560 --> 00:00:12.519 +I have to qualify my students. + +00:00:12.520 --> 00:00:15.079 +While most would consider normal in this situation, + +00:00:15.080 --> 00:00:17.719 +would be to use Excel or LibreOffice + +00:00:17.720 --> 00:00:18.599 +for doing that. + +00:00:18.600 --> 00:00:21.179 +However, I think that approaching it from Emacs + +00:00:21.180 --> 00:00:24.479 +has several interesting advantages. + +00:00:24.480 --> 00:00:27.659 +First, I would like to write the qualification + +00:00:27.660 --> 00:00:33.599 +next to the justification, next to the student error, + +00:00:33.600 --> 00:00:36.639 +and in the Excel format, it's not comfortable to do that. + +00:00:36.640 --> 00:00:38.839 +Actually, I always prefer to write in Emacs + +00:00:38.840 --> 00:00:42.719 +for many reasons, as many of you. + +00:00:42.720 --> 00:00:46.679 +Also, I love text format because I can compare versions + +00:00:46.680 --> 00:00:50.279 +using a control version system like Git and easily change. + +00:00:50.280 --> 00:00:52.759 +This is very useful for the revision period + +00:00:52.760 --> 00:00:55.479 +in which a student visits me + +00:00:55.480 --> 00:01:01.039 +and maybe I can change the qualification for any reason. + +00:01:01.040 --> 00:01:03.439 +I also can export the results directly to PDF + +00:01:03.440 --> 00:01:08.679 +to publish them in my online campus for the student. + +00:01:08.680 --> 00:01:11.359 +I have many tools for doing that. + +00:01:11.360 --> 00:01:13.199 +I already knew about Org-table formula. + +00:01:13.200 --> 00:01:15.199 +I thought it was very cool and useful + +00:01:15.200 --> 00:01:16.159 +to use Emacs for that, + +00:01:16.160 --> 00:01:19.239 +and I have actually found a package `orgtbl-aggregate` + +00:01:19.240 --> 00:01:22.859 +that seemed adequate for doing that. + +00:01:22.860 --> 00:01:26.319 +Unfortunately, I didn't see a lot of information + +00:01:26.320 --> 00:01:29.159 +about how to do that in a painless way. + +00:01:29.160 --> 00:01:31.759 +So, I have to learn, training and testing, + +00:01:31.760 --> 00:01:34.999 +and then prepare these tools to solve that problem + +00:01:35.000 --> 00:01:36.639 +and to help other teachers. + +00:01:36.640 --> 00:01:39.959 +Anyway, it could be used not only for teaching + +00:01:39.960 --> 00:01:41.959 +but for more contexts. + +NOTE Demonstration + +00:01:41.960 --> 00:01:44.799 +Well, let's start. + +00:01:44.800 --> 00:01:46.459 +First, I have two sections, + +00:01:46.460 --> 00:01:53.399 +the comments and the section of the table, or results. + +00:01:53.400 --> 00:01:56.479 +I have... The comment for each student + +00:01:56.480 --> 00:01:57.559 +is in a different headline. + +00:01:57.560 --> 00:02:05.439 +It's very useful to check with a note. + +00:02:05.440 --> 00:02:10.159 +I can go directly using your helm or ivy + +00:02:10.160 --> 00:02:12.999 +or consult to go directly to the section. + +00:02:13.000 --> 00:02:14.559 +So it's very nice. + +00:02:14.560 --> 00:02:22.879 +Then I put the comment, right, completely wrong, + +00:02:22.880 --> 00:02:30.599 +it answers other questions. + +00:02:30.600 --> 00:02:35.839 +I put other comments here that I could send to the student, + +00:02:35.840 --> 00:02:37.480 +you can imagine, and then + +00:02:37.481 --> 00:02:40.159 +I can put the qualification, the score for each student. + +00:02:40.160 --> 00:02:43.159 +The thing with that is, initially, + +00:02:43.160 --> 00:02:46.219 +when I started doing that, I put, I don't know, + +00:02:46.220 --> 00:02:50.719 +the exception and a qualification with that. + +00:02:50.720 --> 00:02:55.679 +Okay, that's one point, this a three, + +00:02:55.680 --> 00:03:06.679 +and use a column total with something like that. + +00:03:06.680 --> 00:03:08.319 +Okay, that's nice. + +NOTE Range + +00:03:08.320 --> 00:03:11.639 +But then, when I started getting more and more parts, + +00:03:11.640 --> 00:03:17.081 +I considered it more useful to use, + +00:03:17.082 --> 00:03:20.699 +to put for each part, + +00:03:20.700 --> 00:03:20.700 +which is the maximum qualification, + +00:03:20.300 --> 00:03:22.919 +on the range of the qualification. + +00:03:22.920 --> 00:03:25.559 +In that case, I'm going to put, + +00:03:25.560 --> 00:03:28.679 +the first one is two scores, the second three points, + +00:03:28.680 --> 00:03:34.999 +the third one is one point, and the last one, four points. + +00:03:35.000 --> 00:03:37.799 +And instead of putting that in that way, + +00:03:37.800 --> 00:03:41.027 +I like to put one is completely right, + +00:03:41.028 --> 00:03:47.319 +zero is completely wrong, or maybe some intermediate values for that. + +00:03:47.320 --> 00:03:50.999 +Of course, I have to change the qualification, + +00:03:51.000 --> 00:03:54.439 +the formula, so it's very simple. + +00:03:54.440 --> 00:03:56.479 +I only have to put, + +00:03:56.480 --> 00:04:08.299 +multiply the values of the second line with that. + +00:04:08.300 --> 00:04:11.899 +So, it's very useful for doing that. + +NOTE More qualifications + +00:04:11.900 --> 00:04:16.639 +Okay, that's the first part, so I can put the comment, + +00:04:16.640 --> 00:04:19.959 +I can go to the section, I can create... + +00:04:19.960 --> 00:04:24.919 +I'm going to put more qualifications. + +00:04:24.920 --> 00:04:27.639 +Now I'm going to put the table. + +00:04:27.640 --> 00:04:30.459 +First I'm going to change, rename the column name, + +00:04:30.460 --> 00:04:39.039 +because it's easier when there is only one word. + +00:04:39.040 --> 00:04:47.159 +And it's very simple to use. You only have to put + +00:04:47.160 --> 00:04:51.439 +the name, aggregate, the name of the table, + +00:04:51.440 --> 00:04:54.659 +in that case group A, + +00:04:54.660 --> 00:04:57.199 +and in another string, the columns. + +00:04:57.200 --> 00:05:03.799 +For instance, name, surname, total. + +00:05:03.800 --> 00:05:07.439 +And you can see that you can get a lesson list + +00:05:07.440 --> 00:05:09.119 +with all the students, + +00:05:09.120 --> 00:05:16.759 +but only with the final score to publish them. + +00:05:16.760 --> 00:05:17.679 +Okay? + +00:05:17.680 --> 00:05:20.679 +Even you can update the name of the column, + +00:05:20.680 --> 00:05:21.800 +not in the original table, + +00:05:21.801 --> 00:05:29.559 +but in the lesson table using that format. + +00:05:29.560 --> 00:05:32.099 +Okay? + +00:05:32.100 --> 00:05:34.239 +That is a good option. + +NOTE Subsets + +00:05:34.240 --> 00:05:38.499 +Now we are going to see how can we use that + +00:05:38.500 --> 00:05:44.359 +to make a subset of the students. + +00:05:44.360 --> 00:05:47.839 +For instance, imagine, this is me, + +00:05:47.840 --> 00:05:54.799 +I'm going to put the bad, I change, now I can update, + +00:05:54.800 --> 00:06:02.759 +you can see this, but also I'm going to put a list + +00:06:02.760 --> 00:06:10.960 +with the students that have failed the exam. + +00:06:10.961 --> 00:06:21.259 +It's simple, because this package has the option `:cond`. + +00:06:21.260 --> 00:06:26.199 +I'm going to put first to see it better, + +00:06:26.200 --> 00:06:28.599 +I'm going to put a condition + +00:06:28.600 --> 00:06:37.519 +in which we aggregate less than a half, 5, + +00:06:37.520 --> 00:06:44.179 +and I have to use a `string-to-number` total. + +00:06:44.180 --> 00:06:47.259 +In that way, I can see that this is the student + +00:06:47.260 --> 00:06:48.839 +that has failed the exam, + +00:06:48.840 --> 00:06:54.079 +I could use that to make another table, + +00:06:54.080 --> 00:07:08.299 +this is the people that passed the exam. + +NOTE Sorting + +00:07:08.300 --> 00:07:10.980 +Another interesting feature is that + +00:07:10.981 --> 00:07:15.620 +I can... the lesson table can be sorted automatically. + +00:07:15.621 --> 00:07:20.100 +It's simple. You only have to put this symbol (`^`), + +00:07:20.101 --> 00:07:23.360 +and you can put next to the column you want + +00:07:23.361 --> 00:07:26.999 +to use for the sort, and then you can put + +00:07:27.000 --> 00:07:30.679 +`a` if you want to sort alphabetically, + +00:07:30.680 --> 00:07:33.879 +in uppercase if you want to reverse the sort, + +00:07:33.880 --> 00:07:38.919 +and `n` if you want to sort numerically. + +00:07:38.920 --> 00:07:40.759 +For instance, I can put that + +00:07:40.760 --> 00:07:43.959 +from the lesser score to the best score, + +00:07:43.960 --> 00:07:46.639 +or here from the best score to the lesser score. + +00:07:46.640 --> 00:07:48.960 +And this sort is completely independent + +00:07:48.961 --> 00:07:51.640 +to the sort of the original table. + +NOTE New table + +00:07:51.641 --> 00:07:54.520 +Now I'm going to do another different thing, + +00:07:54.521 --> 00:08:02.799 +we are going to put a new table, + +00:08:02.800 --> 00:08:07.559 +I'm going to put a new table + +00:08:07.560 --> 00:08:09.639 +in which I'm going to put + +00:08:09.640 --> 00:08:14.319 +the number of passed students, failed students + +00:08:14.320 --> 00:08:16.519 +and the ratio of students. It's simple. + +00:08:16.520 --> 00:08:26.559 +I'm going to put the pass, in that case, as column, + +00:08:26.560 --> 00:08:32.919 +I can put the count, of course, I can put the count, + +00:08:32.920 --> 00:08:35.799 +the number of students + +00:08:35.800 --> 00:08:42.079 +that have passed, so I'm going to put in that way, ok? + +00:08:42.080 --> 00:08:58.479 +I'm going to put pass, count, failed, ratio. + +00:08:58.480 --> 00:08:59.739 +You can see, ok? + +00:08:59.740 --> 00:09:01.859 +But this only the count, + +00:09:01.860 --> 00:09:04.519 +you are going to put the number wrong. + +00:09:04.520 --> 00:09:08.359 +So, it's true, but you can actually put formula here. + +00:09:08.360 --> 00:09:10.079 +For instance, you can say, + +00:09:10.080 --> 00:09:12.399 +I know that I have 3 students, + +00:09:12.400 --> 00:09:18.799 +so the number of failed is 3 minus the passed student. + +00:09:18.800 --> 00:09:24.959 +And also, I can put the formula, is the people, + +00:09:24.960 --> 00:09:27.719 +the students that passed, + +00:09:27.720 --> 00:09:36.079 +divide into the number total of students, ok? + +00:09:36.080 --> 00:09:41.379 +Let's go to put that in that way, + +00:09:41.380 --> 00:09:44.399 +is the people that passed, it is better in that way, + +00:09:44.400 --> 00:09:48.359 +and also I can put directly the number of, + +00:09:48.360 --> 00:09:50.919 +the ratio of students. + +00:09:50.920 --> 00:09:55.739 +So, in that way, I can have a table + +00:09:55.740 --> 00:09:57.519 +with the students that passed, + +00:09:57.520 --> 00:09:58.559 +the students that failed + +00:09:58.560 --> 00:10:01.279 +and the ratio of people that passed. + +NOTE Statistics + +00:10:01.280 --> 00:10:04.819 +Sometimes this type of qualification will be useful for me, + +00:10:04.820 --> 00:10:08.079 +to see how much has been the sound, + +00:10:08.080 --> 00:10:12.239 +how much good has been the exercise. + +00:10:12.240 --> 00:10:14.879 +Now, I'm going to put a new table. + +00:10:14.880 --> 00:10:22.421 +This new table is going to go some statistics, + +00:10:22.422 --> 00:10:32.379 +`statistics_score`, `begin: aggregate :table "final"`. + +00:10:32.380 --> 00:10:43.919 +In this case, I'm going to use not the original table, + +00:10:43.920 --> 00:10:54.019 +but a final, I'm going to put `final_group`, + +00:10:54.020 --> 00:11:01.399 +`final_p1`, `final_p2`, ok? + +00:11:01.400 --> 00:11:06.119 +And as `:cols`, I'm going to put directly + +00:11:06.120 --> 00:11:13.579 +how many results I have, I put number, + +00:11:13.580 --> 00:11:19.199 +I'm going to put also the mean. + +00:11:19.200 --> 00:11:21.400 +You can see that mean total is not working + +00:11:21.401 --> 00:11:24.519 +because I'm using this table and I renamed, + +00:11:24.520 --> 00:11:26.079 +the column name was renamed, + +00:11:26.080 --> 00:11:36.679 +so it's `mean(Score)`, mean, + +00:11:36.680 --> 00:12:05.919 +and then the score. You can obtain `stdiv` -- `sdev`, + +00:12:05.920 --> 00:12:08.959 +sorry, there was an error about that, + +00:12:08.960 --> 00:12:12.639 +and two decimal, + +00:12:12.640 --> 00:12:17.799 +and that is another interesting score. + +NOTE Combining + +00:12:17.800 --> 00:12:23.239 +Now, I'm going to finish showing how we can use. + +00:12:23.240 --> 00:12:25.839 +To finish it, we are going to see + +00:12:25.840 --> 00:12:28.299 +how we can combine several tables + +00:12:28.300 --> 00:12:32.479 +or even an aggregated table in a new table. + +00:12:32.480 --> 00:12:36.259 +For instance, you can have a table for the practice 1, + +00:12:36.260 --> 00:12:38.199 +you can have a table for the practice 2, + +00:12:38.200 --> 00:12:40.359 +so I'm going to do that. + +00:12:40.360 --> 00:12:48.180 +I'm going to move this table. You can copy or remove, + +00:12:48.181 --> 00:12:49.759 +doesn't matter the order, + +00:12:49.760 --> 00:12:59.519 +I'm going to put this to identify the result of practice 2, + +00:12:59.520 --> 00:13:03.321 +Org create an ID (`org-id-get-create`), + +00:13:03.322 --> 00:13:07.479 +then we have a previous result, + +00:13:07.480 --> 00:13:10.199 +and I have a final table. + +00:13:10.200 --> 00:13:11.839 +The final table could be complicated, + +00:13:11.840 --> 00:13:17.439 +but it's not so much complicated, it's only that, + +00:13:17.440 --> 00:13:21.959 +I'm going to put something that the formula wants. + +00:13:21.960 --> 00:13:26.588 +The formula is to make + +00:13:26.589 --> 00:13:34.400 +an `org-lookup-first` of the second name, + +00:13:34.401 --> 00:13:41.540 +considering that it's unique, + +00:13:41.541 --> 00:13:53.439 +`remote` of the surname, + +00:13:53.440 --> 00:14:05.559 +and let's say another `remote` of the `$3` element, + +00:14:05.560 --> 00:14:15.119 +ok, that's an error because I don't put yet the ID, + +00:14:15.120 --> 00:14:19.759 +so I'm going to copy -- mark and copy -- + +00:14:19.760 --> 00:14:28.519 +and paste the unique ID generated, + +00:14:28.520 --> 00:14:38.519 +I'm going to put that... I think there is missing one. + +00:14:38.520 --> 00:14:43.399 +Finally. Okay, that's right. + +00:14:43.400 --> 00:14:49.579 +So imagine that I change something here, for instance, + +00:14:49.580 --> 00:14:56.700 +I put... I change that, + +00:14:56.701 --> 00:15:02.199 +actually, this is changed also, and this is changed. + +00:15:02.200 --> 00:15:08.599 +This is a good way to divide the classification + +00:15:08.600 --> 00:15:10.200 +in several files, one for the practice 1, + +00:15:10.201 --> 00:15:15.039 +one for the practice 2, and one final practice + +00:15:15.040 --> 00:15:27.639 +that I can finally export in a final table. + +00:15:27.640 --> 00:15:31.119 +Of course you can make it a lot more pretty, + +00:15:31.120 --> 00:15:33.359 +but this is all I want to show you. + +00:15:33.360 --> 00:15:34.799 +I hope with this talk + +00:15:34.800 --> 00:15:37.679 +you have learned a lot more about Org formula, + +00:15:37.680 --> 00:15:39.688 +[orgtbl-aggregate] package, + +00:15:39.689 --> 00:15:42.279 +and how you can use all this techniques + +00:15:42.280 --> 00:15:45.599 +to improve your qualification of a student, + +00:15:45.600 --> 00:15:50.480 +or for whatever you want. diff --git a/2023/info/table-after.md b/2023/info/table-after.md index a6649256..050b05c6 100644 --- a/2023/info/table-after.md +++ b/2023/info/table-after.md @@ -1,6 +1,224 @@ <!-- Automatically generated by emacsconf-publish-after-page --> +<a name="table-mainVideo-transcript"></a> +# Transcript + +[[!template text="""Welcome everybody. My name is Daniel Molina""" start="00:00:01.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""and I'm going to give this talk""" start="00:00:03.080" video="mainVideo-table" id="subtitle"]] +[[!template text=""""Who needs Excel? Managing your students' qualifications""" start="00:00:05.061" video="mainVideo-table" id="subtitle"]] +[[!template text="""with Org-table".""" start="00:00:08.064" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm a professor. I work every day.""" start="00:00:08.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""I have to qualify my students.""" start="00:00:10.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""While most would consider normal in this situation,""" start="00:00:12.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""would be to use Excel or LibreOffice""" start="00:00:15.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""for doing that.""" start="00:00:17.720" video="mainVideo-table" id="subtitle"]] +[[!template text="""However, I think that approaching it from Emacs""" start="00:00:18.600" video="mainVideo-table" id="subtitle"]] +[[!template text="""has several interesting advantages.""" start="00:00:21.180" video="mainVideo-table" id="subtitle"]] +[[!template text="""First, I would like to write the qualification""" start="00:00:24.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""next to the justification, next to the student error,""" start="00:00:27.660" video="mainVideo-table" id="subtitle"]] +[[!template text="""and in the Excel format, it's not comfortable to do that.""" start="00:00:33.600" video="mainVideo-table" id="subtitle"]] +[[!template text="""Actually, I always prefer to write in Emacs""" start="00:00:36.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""for many reasons, as many of you.""" start="00:00:38.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""Also, I love text format because I can compare versions""" start="00:00:42.720" video="mainVideo-table" id="subtitle"]] +[[!template text="""using a control version system like Git and easily change.""" start="00:00:46.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""This is very useful for the revision period""" start="00:00:50.280" video="mainVideo-table" id="subtitle"]] +[[!template text="""in which a student visits me""" start="00:00:52.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""and maybe I can change the qualification for any reason.""" start="00:00:55.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""I also can export the results directly to PDF""" start="00:01:01.040" video="mainVideo-table" id="subtitle"]] +[[!template text="""to publish them in my online campus for the student.""" start="00:01:03.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""I have many tools for doing that.""" start="00:01:08.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""I already knew about Org-table formula.""" start="00:01:11.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""I thought it was very cool and useful""" start="00:01:13.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""to use Emacs for that,""" start="00:01:15.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""and I have actually found a package `orgtbl-aggregate`""" start="00:01:16.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""that seemed adequate for doing that.""" start="00:01:19.240" video="mainVideo-table" id="subtitle"]] +[[!template text="""Unfortunately, I didn't see a lot of information""" start="00:01:22.860" video="mainVideo-table" id="subtitle"]] +[[!template text="""about how to do that in a painless way.""" start="00:01:26.320" video="mainVideo-table" id="subtitle"]] +[[!template text="""So, I have to learn, training and testing,""" start="00:01:29.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""and then prepare these tools to solve that problem""" start="00:01:31.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""and to help other teachers.""" start="00:01:35.000" video="mainVideo-table" id="subtitle"]] +[[!template text="""Anyway, it could be used not only for teaching""" start="00:01:36.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""but for more contexts.""" start="00:01:39.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""Well, let's start.""" start="00:01:41.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""First, I have two sections,""" start="00:01:44.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""the comments and the section of the table, or results.""" start="00:01:46.460" video="mainVideo-table" id="subtitle"]] +[[!template text="""I have... The comment for each student""" start="00:01:53.400" video="mainVideo-table" id="subtitle"]] +[[!template text="""is in a different headline.""" start="00:01:56.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""It's very useful to check with a note.""" start="00:01:57.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""I can go directly using your helm or ivy""" start="00:02:05.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""or consult to go directly to the section.""" start="00:02:10.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""So it's very nice.""" start="00:02:13.000" video="mainVideo-table" id="subtitle"]] +[[!template text="""Then I put the comment, right, completely wrong,""" start="00:02:14.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""it answers other questions.""" start="00:02:22.880" video="mainVideo-table" id="subtitle"]] +[[!template text="""I put other comments here that I could send to the student,""" start="00:02:30.600" video="mainVideo-table" id="subtitle"]] +[[!template text="""you can imagine, and then""" start="00:02:35.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""I can put the qualification, the score for each student.""" start="00:02:37.481" video="mainVideo-table" id="subtitle"]] +[[!template text="""The thing with that is, initially,""" start="00:02:40.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""when I started doing that, I put, I don't know,""" start="00:02:43.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""the exception and a qualification with that.""" start="00:02:46.220" video="mainVideo-table" id="subtitle"]] +[[!template text="""Okay, that's one point, this a three,""" start="00:02:50.720" video="mainVideo-table" id="subtitle"]] +[[!template text="""and use a column total with something like that.""" start="00:02:55.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""Okay, that's nice.""" start="00:03:06.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""But then, when I started getting more and more parts,""" start="00:03:08.320" video="mainVideo-table" id="subtitle"]] +[[!template text="""I considered it more useful to use,""" start="00:03:11.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""to put for each part,""" start="00:03:17.082" video="mainVideo-table" id="subtitle"]] +[[!template text="""which is the maximum qualification,""" start="00:03:20.700" video="mainVideo-table" id="subtitle"]] +[[!template text="""on the range of the qualification.""" start="00:03:20.300" video="mainVideo-table" id="subtitle"]] +[[!template text="""In that case, I'm going to put,""" start="00:03:22.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""the first one is two scores, the second three points,""" start="00:03:25.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""the third one is one point, and the last one, four points.""" start="00:03:28.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""And instead of putting that in that way,""" start="00:03:35.000" video="mainVideo-table" id="subtitle"]] +[[!template text="""I like to put one is completely right,""" start="00:03:37.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""zero is completely wrong, or maybe some intermediate values for that.""" start="00:03:41.028" video="mainVideo-table" id="subtitle"]] +[[!template text="""Of course, I have to change the qualification,""" start="00:03:47.320" video="mainVideo-table" id="subtitle"]] +[[!template text="""the formula, so it's very simple.""" start="00:03:51.000" video="mainVideo-table" id="subtitle"]] +[[!template text="""I only have to put,""" start="00:03:54.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""multiply the values of the second line with that.""" start="00:03:56.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""So, it's very useful for doing that.""" start="00:04:08.300" video="mainVideo-table" id="subtitle"]] +[[!template text="""Okay, that's the first part, so I can put the comment,""" start="00:04:11.900" video="mainVideo-table" id="subtitle"]] +[[!template text="""I can go to the section, I can create...""" start="00:04:16.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put more qualifications.""" start="00:04:19.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""Now I'm going to put the table.""" start="00:04:24.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""First I'm going to change, rename the column name,""" start="00:04:27.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""because it's easier when there is only one word.""" start="00:04:30.460" video="mainVideo-table" id="subtitle"]] +[[!template text="""And it's very simple to use. You only have to put""" start="00:04:39.040" video="mainVideo-table" id="subtitle"]] +[[!template text="""the name, aggregate, the name of the table,""" start="00:04:47.160" video="mainVideo-table" id="subtitle"]] +[[!template text="""in that case group A,""" start="00:04:51.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""and in another string, the columns.""" start="00:04:54.660" video="mainVideo-table" id="subtitle"]] +[[!template text="""For instance, name, surname, total.""" start="00:04:57.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""And you can see that you can get a lesson list""" start="00:05:03.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""with all the students,""" start="00:05:07.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""but only with the final score to publish them.""" start="00:05:09.120" video="mainVideo-table" id="subtitle"]] +[[!template text="""Okay?""" start="00:05:16.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""Even you can update the name of the column,""" start="00:05:17.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""not in the original table,""" start="00:05:20.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""but in the lesson table using that format.""" start="00:05:21.801" video="mainVideo-table" id="subtitle"]] +[[!template text="""Okay?""" start="00:05:29.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""That is a good option.""" start="00:05:32.100" video="mainVideo-table" id="subtitle"]] +[[!template text="""Now we are going to see how can we use that""" start="00:05:34.240" video="mainVideo-table" id="subtitle"]] +[[!template text="""to make a subset of the students.""" start="00:05:38.500" video="mainVideo-table" id="subtitle"]] +[[!template text="""For instance, imagine, this is me,""" start="00:05:44.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put the bad, I change, now I can update,""" start="00:05:47.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""you can see this, but also I'm going to put a list""" start="00:05:54.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""with the students that have failed the exam.""" start="00:06:02.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""It's simple, because this package has the option `:cond`.""" start="00:06:10.961" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put first to see it better,""" start="00:06:21.260" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put a condition""" start="00:06:26.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""in which we aggregate less than a half, 5,""" start="00:06:28.600" video="mainVideo-table" id="subtitle"]] +[[!template text="""and I have to use a `string-to-number` total.""" start="00:06:37.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""In that way, I can see that this is the student""" start="00:06:44.180" video="mainVideo-table" id="subtitle"]] +[[!template text="""that has failed the exam,""" start="00:06:47.260" video="mainVideo-table" id="subtitle"]] +[[!template text="""I could use that to make another table,""" start="00:06:48.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""this is the people that passed the exam.""" start="00:06:54.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""Another interesting feature is that""" start="00:07:08.300" video="mainVideo-table" id="subtitle"]] +[[!template text="""I can... the lesson table can be sorted automatically.""" start="00:07:10.981" video="mainVideo-table" id="subtitle"]] +[[!template text="""It's simple. You only have to put this symbol (`^`),""" start="00:07:15.621" video="mainVideo-table" id="subtitle"]] +[[!template text="""and you can put next to the column you want""" start="00:07:20.101" video="mainVideo-table" id="subtitle"]] +[[!template text="""to use for the sort, and then you can put""" start="00:07:23.361" video="mainVideo-table" id="subtitle"]] +[[!template text="""`a` if you want to sort alphabetically,""" start="00:07:27.000" video="mainVideo-table" id="subtitle"]] +[[!template text="""in uppercase if you want to reverse the sort,""" start="00:07:30.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""and `n` if you want to sort numerically.""" start="00:07:33.880" video="mainVideo-table" id="subtitle"]] +[[!template text="""For instance, I can put that""" start="00:07:38.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""from the lesser score to the best score,""" start="00:07:40.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""or here from the best score to the lesser score.""" start="00:07:43.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""And this sort is completely independent""" start="00:07:46.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""to the sort of the original table.""" start="00:07:48.961" video="mainVideo-table" id="subtitle"]] +[[!template text="""Now I'm going to do another different thing,""" start="00:07:51.641" video="mainVideo-table" id="subtitle"]] +[[!template text="""we are going to put a new table,""" start="00:07:54.521" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put a new table""" start="00:08:02.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""in which I'm going to put""" start="00:08:07.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""the number of passed students, failed students""" start="00:08:09.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""and the ratio of students. It's simple.""" start="00:08:14.320" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put the pass, in that case, as column,""" start="00:08:16.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""I can put the count, of course, I can put the count,""" start="00:08:26.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""the number of students""" start="00:08:32.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""that have passed, so I'm going to put in that way, ok?""" start="00:08:35.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put pass, count, failed, ratio.""" start="00:08:42.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""You can see, ok?""" start="00:08:58.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""But this only the count,""" start="00:08:59.740" video="mainVideo-table" id="subtitle"]] +[[!template text="""you are going to put the number wrong.""" start="00:09:01.860" video="mainVideo-table" id="subtitle"]] +[[!template text="""So, it's true, but you can actually put formula here.""" start="00:09:04.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""For instance, you can say,""" start="00:09:08.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""I know that I have 3 students,""" start="00:09:10.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""so the number of failed is 3 minus the passed student.""" start="00:09:12.400" video="mainVideo-table" id="subtitle"]] +[[!template text="""And also, I can put the formula, is the people,""" start="00:09:18.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""the students that passed,""" start="00:09:24.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""divide into the number total of students, ok?""" start="00:09:27.720" video="mainVideo-table" id="subtitle"]] +[[!template text="""Let's go to put that in that way,""" start="00:09:36.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""is the people that passed, it is better in that way,""" start="00:09:41.380" video="mainVideo-table" id="subtitle"]] +[[!template text="""and also I can put directly the number of,""" start="00:09:44.400" video="mainVideo-table" id="subtitle"]] +[[!template text="""the ratio of students.""" start="00:09:48.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""So, in that way, I can have a table""" start="00:09:50.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""with the students that passed,""" start="00:09:55.740" video="mainVideo-table" id="subtitle"]] +[[!template text="""the students that failed""" start="00:09:57.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""and the ratio of people that passed.""" start="00:09:58.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""Sometimes this type of qualification will be useful for me,""" start="00:10:01.280" video="mainVideo-table" id="subtitle"]] +[[!template text="""to see how much has been the sound,""" start="00:10:04.820" video="mainVideo-table" id="subtitle"]] +[[!template text="""how much good has been the exercise.""" start="00:10:08.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""Now, I'm going to put a new table.""" start="00:10:12.240" video="mainVideo-table" id="subtitle"]] +[[!template text="""This new table is going to go some statistics,""" start="00:10:14.880" video="mainVideo-table" id="subtitle"]] +[[!template text="""`statistics_score`, `begin: aggregate :table "final"`.""" start="00:10:22.422" video="mainVideo-table" id="subtitle"]] +[[!template text="""In this case, I'm going to use not the original table,""" start="00:10:32.380" video="mainVideo-table" id="subtitle"]] +[[!template text="""but a final, I'm going to put `final_group`,""" start="00:10:43.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""`final_p1`, `final_p2`, ok?""" start="00:10:54.020" video="mainVideo-table" id="subtitle"]] +[[!template text="""And as `:cols`, I'm going to put directly""" start="00:11:01.400" video="mainVideo-table" id="subtitle"]] +[[!template text="""how many results I have, I put number,""" start="00:11:06.120" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put also the mean.""" start="00:11:13.580" video="mainVideo-table" id="subtitle"]] +[[!template text="""You can see that mean total is not working""" start="00:11:19.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""because I'm using this table and I renamed,""" start="00:11:21.401" video="mainVideo-table" id="subtitle"]] +[[!template text="""the column name was renamed,""" start="00:11:24.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""so it's `mean(Score)`, mean,""" start="00:11:26.080" video="mainVideo-table" id="subtitle"]] +[[!template text="""and then the score. You can obtain `stdiv` -- `sdev`,""" start="00:11:36.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""sorry, there was an error about that,""" start="00:12:05.920" video="mainVideo-table" id="subtitle"]] +[[!template text="""and two decimal,""" start="00:12:08.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""and that is another interesting score.""" start="00:12:12.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""Now, I'm going to finish showing how we can use.""" start="00:12:17.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""To finish it, we are going to see""" start="00:12:23.240" video="mainVideo-table" id="subtitle"]] +[[!template text="""how we can combine several tables""" start="00:12:25.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""or even an aggregated table in a new table.""" start="00:12:28.300" video="mainVideo-table" id="subtitle"]] +[[!template text="""For instance, you can have a table for the practice 1,""" start="00:12:32.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""you can have a table for the practice 2,""" start="00:12:36.260" video="mainVideo-table" id="subtitle"]] +[[!template text="""so I'm going to do that.""" start="00:12:38.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to move this table. You can copy or remove,""" start="00:12:40.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""doesn't matter the order,""" start="00:12:48.181" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put this to identify the result of practice 2,""" start="00:12:49.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""Org create an ID (`org-id-get-create`),""" start="00:12:59.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""then we have a previous result,""" start="00:13:03.322" video="mainVideo-table" id="subtitle"]] +[[!template text="""and I have a final table.""" start="00:13:07.480" video="mainVideo-table" id="subtitle"]] +[[!template text="""The final table could be complicated,""" start="00:13:10.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""but it's not so much complicated, it's only that,""" start="00:13:11.840" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put something that the formula wants.""" start="00:13:17.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""The formula is to make""" start="00:13:21.960" video="mainVideo-table" id="subtitle"]] +[[!template text="""an `org-lookup-first` of the second name,""" start="00:13:26.589" video="mainVideo-table" id="subtitle"]] +[[!template text="""considering that it's unique,""" start="00:13:34.401" video="mainVideo-table" id="subtitle"]] +[[!template text="""`remote` of the surname,""" start="00:13:41.541" video="mainVideo-table" id="subtitle"]] +[[!template text="""and let's say another `remote` of the `$3` element,""" start="00:13:53.440" video="mainVideo-table" id="subtitle"]] +[[!template text="""ok, that's an error because I don't put yet the ID,""" start="00:14:05.560" video="mainVideo-table" id="subtitle"]] +[[!template text="""so I'm going to copy -- mark and copy --""" start="00:14:15.120" video="mainVideo-table" id="subtitle"]] +[[!template text="""and paste the unique ID generated,""" start="00:14:19.760" video="mainVideo-table" id="subtitle"]] +[[!template text="""I'm going to put that... I think there is missing one.""" start="00:14:28.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""Finally. Okay, that's right.""" start="00:14:38.520" video="mainVideo-table" id="subtitle"]] +[[!template text="""So imagine that I change something here, for instance,""" start="00:14:43.400" video="mainVideo-table" id="subtitle"]] +[[!template text="""I put... I change that,""" start="00:14:49.580" video="mainVideo-table" id="subtitle"]] +[[!template text="""actually, this is changed also, and this is changed.""" start="00:14:56.701" video="mainVideo-table" id="subtitle"]] +[[!template text="""This is a good way to divide the classification""" start="00:15:02.200" video="mainVideo-table" id="subtitle"]] +[[!template text="""in several files, one for the practice 1,""" start="00:15:08.600" video="mainVideo-table" id="subtitle"]] +[[!template text="""one for the practice 2, and one final practice""" start="00:15:10.201" video="mainVideo-table" id="subtitle"]] +[[!template text="""that I can finally export in a final table.""" start="00:15:15.040" video="mainVideo-table" id="subtitle"]] +[[!template text="""Of course you can make it a lot more pretty,""" start="00:15:27.640" video="mainVideo-table" id="subtitle"]] +[[!template text="""but this is all I want to show you.""" start="00:15:31.120" video="mainVideo-table" id="subtitle"]] +[[!template text="""I hope with this talk""" start="00:15:33.360" video="mainVideo-table" id="subtitle"]] +[[!template text="""you have learned a lot more about Org formula,""" start="00:15:34.800" video="mainVideo-table" id="subtitle"]] +[[!template text="""[orgtbl-aggregate] package,""" start="00:15:37.680" video="mainVideo-table" id="subtitle"]] +[[!template text="""and how you can use all this techniques""" start="00:15:39.689" video="mainVideo-table" id="subtitle"]] +[[!template text="""to improve your qualification of a student,""" start="00:15:42.280" video="mainVideo-table" id="subtitle"]] +[[!template text="""or for whatever you want.""" start="00:15:45.600" video="mainVideo-table" id="subtitle"]] + + + +Captioner: danielmolina + Questions or comments? Please e-mail [dmolina@mailbox.org](mailto:dmolina@mailbox.org?subject=Comment%20for%20EmacsConf%202022%20table%3A%20Who%20needs%20Excel%3F%20Managing%20your%20students%20qualifications%20with%20org-table) diff --git a/2023/info/table-before.md b/2023/info/table-before.md index 8549ba20..7f557b51 100644 --- a/2023/info/table-before.md +++ b/2023/info/table-before.md @@ -8,12 +8,12 @@ The following image shows where the talk is in the schedule for Sat 2023-12-02. Format: 16-min talk; Q&A: ask questions via Etherpad/IRC; we'll e-mail the speaker and post answers on this wiki page after the conference Etherpad: <https://pad.emacsconf.org/2023-table> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Ready to stream +Status: Now playing on the conference livestream <div>Times in different timezones:</div><div class="times" start="2023-12-02T15:40:00Z" end="2023-12-02T15:50:00Z"><div class="conf-time">Saturday, Dec 2 2023, ~10:40 AM - 10:50 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 2 2023, ~9:40 AM - 9:50 AM CST (US/Central)<br />Saturday, Dec 2 2023, ~8:40 AM - 8:50 AM MST (US/Mountain)<br />Saturday, Dec 2 2023, ~7:40 AM - 7:50 AM PST (US/Pacific)<br />Saturday, Dec 2 2023, ~3:40 PM - 3:50 PM UTC <br />Saturday, Dec 2 2023, ~4:40 PM - 4:50 PM CET (Europe/Paris)<br />Saturday, Dec 2 2023, ~5:40 PM - 5:50 PM EET (Europe/Athens)<br />Saturday, Dec 2 2023, ~9:10 PM - 9:20 PM IST (Asia/Kolkata)<br />Saturday, Dec 2 2023, ~11:40 PM - 11:50 PM +08 (Asia/Singapore)<br />Sunday, Dec 3 2023, ~12:40 AM - 12:50 AM JST (Asia/Tokyo)</div></div><div><a href="/2023/watch/gen/">Find out how to watch and participate</a></div> - +<div class="vid"><video controls preload="none" id="table-mainVideo"><source src="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.webm" />captions="""<track label="English" kind="captions" srclang="en" src="/2023/captions/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt" default />"""<p><em>Your browser does not support the video tag. Please download the video instead.</em></p></video><div></div>Duration: 15:51 minutes<div class="files resources"><ul><li><a href="https://pad.emacsconf.org/2023-table">Open Etherpad</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--alternative.mp4">Download --alternative.mp4 (126MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--final.webm">Download --final.webm (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--intro.vtt">Download --intro.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--intro.webm">Download --intro.webm</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.opus">Download --main.opus (11MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.txt">Download --main.txt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.vtt">Download --main.vtt</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--main.webm">Download --main.webm (23MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--normalized.opus">Download --normalized.opus (14MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--original.mp4">Download --original.mp4 (56MB)</a></li><li><a href="https://media.emacsconf.org/2023/emacsconf-2023-table--who-needs-excel-managing-your-students-qualifications-with-orgtable--daniel-molina--reencoded.webm">Download --reencoded.webm (21MB)</a></li><li><a href="https://toobnix.org/w/p8K8mtayv2HYtw1gK3zUwR">View on Toobnix</a></li></ul></div></div> # Description <!-- End of emacsconf-publish-before-page -->
\ No newline at end of file |