diff options
Diffstat (limited to '2020/subtitles')
-rw-r--r-- | 2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio.vtt | 664 |
1 files changed, 664 insertions, 0 deletions
diff --git a/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio.vtt b/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio.vtt new file mode 100644 index 00000000..f2db5398 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio.vtt @@ -0,0 +1,664 @@ +WEBVTT + +00:00:01.120 --> 00:00:03.120 +Hi, my name is Brett Gillio, + +00:00:03.120 --> 00:00:04.560 +and today I'll be sharing a project that + +00:00:04.560 --> 00:00:05.920 +several people and I have been working on + +00:00:05.920 --> 00:00:08.480 +for the past few months, called +org-webring. + +00:00:08.480 --> 00:00:10.559 +The essential idea behind org-webring + +00:00:10.559 --> 00:00:12.240 +is to take the power of creating a + +00:00:12.240 --> 00:00:13.679 +website with Org Mode + +00:00:13.679 --> 00:00:15.360 +and its built-in features to control + +00:00:15.360 --> 00:00:17.520 +HTML and XML output + +00:00:17.520 --> 00:00:19.119 +and utilize it to share blogs, git + +00:00:19.119 --> 00:00:22.640 +commits, or other rss or atom static +feed content + +00:00:22.640 --> 00:00:25.920 +to share directly with your audiences. + +00:00:25.920 --> 00:00:28.362 +My website is created entirely using + +00:00:28.362 --> 00:00:30.000 +Org Mode. I love the amount of + +00:00:30.000 --> 00:00:31.679 +flexibility it offers me while keeping + +00:00:31.679 --> 00:00:34.079 +everything quite simple. + +00:00:34.079 --> 00:00:35.920 +I am able to put information about + +00:00:35.920 --> 00:00:37.600 +myself, a blog, + +00:00:37.600 --> 00:00:40.079 +and my org-webring tool directly on on + +00:00:40.079 --> 00:00:42.879 +the home page using simple Org syntax. + +00:00:42.879 --> 00:00:44.640 +As you can see, I am currently displaying + +00:00:44.640 --> 00:00:46.239 +three posts on my website. + +00:00:46.239 --> 00:00:48.239 +The first is the Guix Day announcement, + +00:00:48.239 --> 00:00:49.840 +the second is a quarterly financial + +00:00:49.840 --> 00:00:51.039 +update from SourceHut, + +00:00:51.039 --> 00:00:52.320 +and the third is a post from + +00:00:52.320 --> 00:00:55.120 +Drew DeVault's blog. Drew DeVault, +by the way-- + +00:00:55.120 --> 00:00:57.680 +his open ring is what helped inspire + +00:00:57.680 --> 00:01:01.359 +what is today org-webring. +All this information is + +00:01:01.359 --> 00:01:03.440 +gathered using a sort of manifest file + +00:01:03.440 --> 00:01:05.360 +that org-webring will use to acquire + +00:01:05.360 --> 00:01:06.746 +and place the information in the + +00:01:06.746 --> 00:01:07.760 +correct format + +00:01:07.760 --> 00:01:10.000 +according to your specification. + +00:01:10.000 --> 00:01:11.729 +additionally, you can see that the + +00:01:11.729 --> 00:01:14.159 +Guix Day announcement's post is pinned. + +00:01:14.159 --> 00:01:17.200 +Stylization is likewise controlled by +using CSS. + +00:01:17.200 --> 00:01:18.960 +You can add nice subtle color changes on + +00:01:18.960 --> 00:01:20.720 +mouse hover or control the size of the + +00:01:20.720 --> 00:01:23.759 +flexboxes, all using standard CSS. + +00:01:23.759 --> 00:01:28.320 +Let's examine a simple scenario of using +org-webring. + +00:01:28.320 --> 00:01:30.400 +After you have org-webring installed, + +00:01:30.400 --> 00:01:32.000 +you'll be able to create a manifest file + +00:01:32.000 --> 00:01:33.759 +that looks something like this. + +00:01:33.759 --> 00:01:35.680 +This particular manifest file is an + +00:01:35.680 --> 00:01:37.840 +example offered in the repository under + +00:01:37.840 --> 00:01:39.520 +the assets directory. + +00:01:39.520 --> 00:01:41.200 +Please feel free to utilize them as a + +00:01:41.200 --> 00:01:42.640 +starting point if you are interested in + +00:01:42.640 --> 00:01:44.399 +using org-webring. + +00:01:44.399 --> 00:01:46.320 +As you can see here, we are able to place + +00:01:46.320 --> 00:01:48.640 +an RSS or ATOM feed in this file and + +00:01:48.640 --> 00:01:50.479 +specify information about the feed we + +00:01:50.479 --> 00:01:51.920 +wish to produce. + +00:01:51.920 --> 00:01:54.640 +For example: the total number of items + +00:01:54.640 --> 00:01:56.159 +and the total number of entries per + +00:01:56.159 --> 00:01:57.439 +source item. + +00:01:57.439 --> 00:01:59.439 +Additionally, you're able to filter posts + +00:01:59.439 --> 00:02:02.079 +you feel would not be relevant to your +web ring. + +00:02:02.079 --> 00:02:03.843 +We can take this example file, + +00:02:03.843 --> 00:02:13.120 +run the dispatch and see the result. + +00:02:13.120 --> 00:02:15.280 +The web ring displays a proper summary + +00:02:15.280 --> 00:02:17.760 +set to a character limit you can specify. + +00:02:17.760 --> 00:02:19.453 +Additionally, all the links in the + +00:02:19.453 --> 00:02:20.814 +web ring are navigatable and + +00:02:20.814 --> 00:02:22.560 +will open in a new tab. + +00:02:22.560 --> 00:02:24.719 +That way, if someone wishes to +view the content, + +00:02:24.719 --> 00:02:25.920 +they simply need to + +00:02:25.920 --> 00:02:30.319 +click on the title or their source name. + +00:02:30.319 --> 00:02:32.879 +Now this particular example is not + +00:02:32.879 --> 00:02:34.800 +stylized because we have not given the + +00:02:34.800 --> 00:02:37.120 +website a CSS file to reference. + +00:02:37.120 --> 00:02:38.720 +Let's examine what is happening from + +00:02:38.720 --> 00:02:40.319 +behind the scenes a little bit. + +00:02:40.319 --> 00:02:42.621 +From inside of the Org Mode file, + +00:02:42.621 --> 00:02:48.800 +let's run the org-webring function. + +00:02:48.800 --> 00:02:51.280 +As you can see, it takes that XML file + +00:02:51.280 --> 00:02:54.239 +and processes it into the correct HTML. + +00:02:54.239 --> 00:02:55.938 +You will then be able to embed this + +00:02:55.938 --> 00:02:57.758 +Org function into another Org file + +00:02:57.758 --> 00:03:00.080 +to be able to display it on your website. + +00:03:00.080 --> 00:03:05.440 +Pretty neat. Let's look at +another example. + +00:03:05.440 --> 00:03:07.360 +On my website, we have an example of + +00:03:07.360 --> 00:03:09.519 +using org-webring to reply to another + +00:03:09.519 --> 00:03:10.800 +blog post. + +00:03:10.800 --> 00:03:12.178 +What I have here is a post from + +00:03:12.178 --> 00:03:14.640 +Drew DeVault's blog. It is showcased clearly at + +00:03:14.640 --> 00:03:16.239 +the top as a single entry, + +00:03:16.239 --> 00:03:18.220 +and you can see it is pinned. + +00:03:18.220 --> 00:03:19.889 +The pinning functionality ensures + +00:03:19.889 --> 00:03:20.800 +that this post is + +00:03:20.800 --> 00:03:21.852 +moved to the front of the + +00:03:21.852 --> 00:03:23.120 +hypothetical web ring + +00:03:23.120 --> 00:03:25.232 +and guaranteeing its visibility. + +00:03:25.232 --> 00:03:27.599 +This is then coupled with a +few changes, such as + +00:03:27.599 --> 00:03:29.840 +disabling the generation time + +00:03:29.840 --> 00:03:31.552 +(which would not be relevant to the +readers) + +00:03:31.552 --> 00:03:34.000 +and a change of the text +in the header + +00:03:34.000 --> 00:03:37.040 +to demonstrate it is indeed +used as a reply. + +00:03:37.040 --> 00:03:39.599 +An example of this is also provided in + +00:03:39.599 --> 00:03:42.319 +the assets directory. + +00:03:42.319 --> 00:03:44.146 +Last, we can use org-webring + +00:03:44.146 --> 00:03:45.519 +as a blog planet, + +00:03:45.519 --> 00:03:47.599 +which is one of my favorites. This takes + +00:03:47.599 --> 00:03:49.360 +after the Emacs Life planet, which I + +00:03:49.360 --> 00:03:51.722 +believe is moderated +by Sacha and others, + +00:03:51.722 --> 00:03:53.200 +as well as the Haskell and + +00:03:53.200 --> 00:03:54.720 +OCaml planets. + +00:03:54.720 --> 00:03:56.959 +A planet, for the uninitiated, is a + +00:03:56.959 --> 00:03:58.485 +curated form of content sharing + +00:03:58.485 --> 00:04:00.159 +about a set of topics. + +00:04:00.159 --> 00:04:02.400 +The Emacs Life, Haskell, and OCaml planets, + +00:04:02.400 --> 00:04:03.439 +as their names imply, + +00:04:03.439 --> 00:04:07.200 +cover Emacs, Haskell, and OCaml blogs +respectively. + +00:04:07.200 --> 00:04:08.962 +Likewise, my planet covers + +00:04:08.962 --> 00:04:10.310 +programming language theory + +00:04:10.310 --> 00:04:12.239 +and category theory, primarily. + +00:04:12.239 --> 00:04:13.920 +It works in essentially the same way as + +00:04:13.920 --> 00:04:15.840 +the org-webring. You provide it with a + +00:04:15.840 --> 00:04:17.519 +list of feeds that get parsed. + +00:04:17.519 --> 00:04:19.317 +However, unlike the web ring, + +00:04:19.317 --> 00:04:21.086 +the planet function has no limits + +00:04:21.086 --> 00:04:23.040 +on the number of entries per source, + +00:04:23.040 --> 00:04:24.639 +and the display number of posts is + +00:04:24.639 --> 00:04:27.600 +increased significantly. + +00:04:27.600 --> 00:04:29.759 +The syndicates or sources have their + +00:04:29.759 --> 00:04:31.429 +feeds shown visibly to users + +00:04:31.429 --> 00:04:33.759 +who may wish to fetch them. + +00:04:33.759 --> 00:04:35.440 +A planet is typically meant to be a + +00:04:35.440 --> 00:04:37.040 +standalone page and not something you + +00:04:37.040 --> 00:04:39.440 +would embed in another page like a +web ring. + +00:04:39.440 --> 00:04:41.680 +All this is provided under a single file + +00:04:41.680 --> 00:04:43.009 +in the org-webring package, + +00:04:43.009 --> 00:04:45.280 +as the code reuse is quite high. + +00:04:45.280 --> 00:04:48.240 +Aside from my own website, we can view + +00:04:48.240 --> 00:04:49.840 +the org-webring being used in neat + +00:04:49.840 --> 00:04:52.400 +context with varying stylizations. + +00:04:52.400 --> 00:04:53.642 +Here's a nice example + +00:04:53.642 --> 00:04:57.680 +from Mikhail Kirillov at w96k.ru, + +00:04:57.680 --> 00:05:00.960 +featuring a four symmetrical +flexbox layout, + +00:05:00.960 --> 00:05:02.324 +an appropriate Russian language + +00:05:02.324 --> 00:05:04.225 +time encoding, which can be also set + +00:05:04.225 --> 00:05:07.360 +in the org-webring manifest. + +00:05:07.360 --> 00:05:08.892 +Another is an example from + +00:05:08.892 --> 00:05:10.400 +Camilo Mesa Gaete (https://cmezagaete.cl/), + +00:05:10.400 --> 00:05:13.280 +using ox-hugo with org-webring and + +00:05:13.280 --> 00:05:14.320 +likewise correctly + +00:05:14.320 --> 00:05:17.680 +features the correct Spanish +time encoding. + +00:05:17.680 --> 00:05:22.240 +Last, my other website workircd.org + +00:05:22.240 --> 00:05:24.265 +shows the web ring being used + +00:05:24.265 --> 00:05:27.440 +in combination with Ocaml's tool +link Soupault, + +00:05:27.440 --> 00:05:32.800 +to fetch git logs for that project. + +00:05:32.800 --> 00:05:34.639 +You may obtain org-webring directly + +00:05:34.639 --> 00:05:37.039 +from SourceHut and add it to your +load-path. + +00:05:37.039 --> 00:05:39.639 +Additionally, you will need to obtain + +00:05:39.639 --> 00:05:43.280 +xmlgen.el, which is unfortunately +not yet on ELPA, + +00:05:43.280 --> 00:05:44.960 +although I have been trying to get this + +00:05:44.960 --> 00:05:46.800 +rectified so I do not have to rewrite + +00:05:46.800 --> 00:05:49.840 +org-webring's XML to HTML parser. + +00:05:49.840 --> 00:05:51.759 +Or if you're one of the cool kids using + +00:05:51.759 --> 00:05:54.000 +my favorite package manager, GNU Guix, + +00:05:54.000 --> 00:06:06.319 +you can obtain it like so. + +00:06:06.319 --> 00:06:08.248 +All of the documentation for + +00:06:08.248 --> 00:06:09.840 +org-webring is available + +00:06:09.840 --> 00:06:12.000 +on the SourceHut website or in the README + +00:06:12.000 --> 00:06:15.039 +file after you check it out +from the git tree. + +00:06:15.039 --> 00:06:16.586 +There are so many ways to + +00:06:16.586 --> 00:06:18.240 +customize org-webring, + +00:06:18.240 --> 00:06:20.671 +as there are just as many variables + +00:06:20.671 --> 00:06:23.056 +as there are parts and components + +00:06:23.056 --> 00:06:25.759 +to org-webring for you to change. + +00:06:25.759 --> 00:06:27.759 +All of this is able to be done simply + +00:06:27.759 --> 00:06:31.600 +from that same manifest file. + +00:06:31.600 --> 00:06:33.919 +Now, taking a moment to examine some of + +00:06:33.919 --> 00:06:35.759 +the org-webring code, + +00:06:35.759 --> 00:06:37.840 +you can see it is all done in the same + +00:06:37.840 --> 00:06:40.160 +Elisp that everybody else is used to. + +00:06:40.160 --> 00:06:43.120 +Now, admittedly, my Elisp is not as + +00:06:43.120 --> 00:06:45.977 +strong as probably somebody else's, + +00:06:45.977 --> 00:06:48.678 +so if you are an Elisp ninja, + +00:06:48.678 --> 00:06:50.479 +please feel free to + +00:06:50.479 --> 00:06:52.633 +send a contribution or a patch + +00:06:52.633 --> 00:06:54.880 +and tell me what I'm doing wrong. + +00:06:54.880 --> 00:06:56.836 +I am not going to be offended + +00:06:56.836 --> 00:06:58.233 +by that at all. I would love to + +00:06:58.233 --> 00:06:59.982 +see this code to improve. + +00:06:59.982 --> 00:07:04.160 +Otherwise, I don't think it's half bad, + +00:07:04.160 --> 00:07:06.800 +considering that my experience with + +00:07:06.800 --> 00:07:08.880 +Lisps is usually in Scheme. + +00:07:08.880 --> 00:07:10.774 +Me moving from Scheme to Elisp + +00:07:10.774 --> 00:07:13.680 +was not all that hard. + +00:07:13.680 --> 00:07:17.120 +Taking the syntax apart, + +00:07:17.120 --> 00:07:20.880 +we're able to see that we can + +00:07:20.880 --> 00:07:23.331 +fetch URLs, which are then + +00:07:23.331 --> 00:07:26.505 +parsed and filtered, sorted, and then + +00:07:26.505 --> 00:07:29.151 +kind of reverse-sorted, rather, + +00:07:29.151 --> 00:07:32.960 +to get you to the web ring result. + +00:07:32.960 --> 00:07:34.639 +All of this is then passed through + +00:07:34.639 --> 00:07:37.840 +different parts of the xmlgen.el + +00:07:37.840 --> 00:07:40.280 +functions which gets you that HTML + +00:07:40.280 --> 00:07:43.520 +that you saw earlier. + +00:07:43.520 --> 00:07:45.599 +org-webring is fully free software + +00:07:45.599 --> 00:07:47.440 +distributed under the GNU General Public + +00:07:47.440 --> 00:07:49.280 +License versions 3 or later. + +00:07:49.280 --> 00:07:52.000 +At your option, I love accepting patches + +00:07:52.000 --> 00:07:53.120 +and collaborating. + +00:07:53.120 --> 00:07:55.166 +I hope you will consider +using org-webring. + +00:07:55.166 --> 00:07:56.720 +You can contact me on + +00:07:56.720 --> 00:07:59.390 +Freenode, OFTC, or many other + +00:07:59.390 --> 00:08:01.520 +IRC networks at brettgillio, + +00:08:01.520 --> 00:08:05.120 +or email me at brettg@gnu.org. + +00:08:05.120 --> 00:08:09.327 +Thanks so much to Amin Bandali and the +EmacsConf organizers, + +00:08:09.327 --> 00:08:13.840 +and to you, the audience, thanks. |