diff options
Diffstat (limited to '2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt')
-rw-r--r-- | 2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt | 871 |
1 files changed, 871 insertions, 0 deletions
diff --git a/2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt b/2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt new file mode 100644 index 00000000..4b7765ef --- /dev/null +++ b/2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt @@ -0,0 +1,871 @@ +WEBVTT + +00:02.879 --> 00:05.424 +Hello everyone! My name is Philip Beadling. + +00:05.424 --> 00:06.944 +Just to give you a bit of background, + +00:06.944 --> 00:08.400 +I'm the enterprise architect + +00:08.400 --> 00:10.384 +in a company called Quantile Technologies. + +00:10.384 --> 00:12.799 +I've been using Emacs + +00:12.799 --> 00:14.560 +certainly for the last four or five years + +00:14.560 --> 00:16.800 +as part of my day-to-day workflow, + +00:16.800 --> 00:18.080 +but I've used it on and off + +00:18.080 --> 00:19.000 +for the last 20 years + +00:19.000 --> 00:21.320 +depending on the jobs + +00:21.320 --> 00:22.423 +or the task at hand. + +00:22.423 --> 00:24.800 +Now, today I'm here in a personal capacity + +00:24.800 --> 00:27.360 +to talk about a use I had + +00:27.360 --> 00:28.440 +for Emacs last year + +00:28.440 --> 00:31.000 +where I had to record + +00:31.000 --> 00:32.800 +my continuous professional development, + +00:32.800 --> 00:35.320 +and I was required to be audited + +00:35.320 --> 00:37.280 +by my professional body on it. + +00:37.280 --> 00:40.240 +My CPD record is a bit of a mess, + +00:40.240 --> 00:42.640 +or certainly was. It was over + +00:42.640 --> 00:44.640 +various different services and systems + +00:44.640 --> 00:46.160 +that have been provided to me + +00:46.160 --> 00:47.920 +by previous employers. + +00:47.920 --> 00:51.824 +And, I had bits of it in Excel spreadsheets, + +00:51.824 --> 00:52.640 +and I was looking for like + +00:52.640 --> 00:54.200 +a one single golden source + +00:54.200 --> 00:55.320 +where I could store it all + +00:55.320 --> 00:56.719 +and use in the future. + +00:56.719 --> 00:59.024 +So, I had a look online. + +00:59.024 --> 00:59.824 +I didn't find anything I'd like, + +00:59.824 --> 01:01.885 +so I decided I would use Emacs, + +01:01.885 --> 01:03.840 +and I quickly came to the conclusion + +01:03.840 --> 01:05.480 +that using Org mode + +01:05.480 --> 01:07.040 +was a nice fit for this, + +01:07.040 --> 01:08.160 +you know, both the TODO lists + +01:08.160 --> 01:09.080 +and the properties + +01:09.080 --> 01:10.920 +seem to fit nicely + +01:10.920 --> 01:12.890 +with building a very basic database, + +01:12.890 --> 01:14.159 +which is what in effect this is, + +01:14.159 --> 01:16.159 +what this is. + +01:16.159 --> 01:18.000 +Without further ado, + +01:18.000 --> 01:22.640 +I will start by just downloading. + +01:22.640 --> 01:24.640 +This is available on my public Git, + +01:24.640 --> 01:26.160 +handle is falloutfill, + +01:26.160 --> 01:28.146 +and it's under a project called Misc. + +01:28.146 --> 01:33.200 +It's just a single file called cpd.org, + +01:33.200 --> 01:35.080 +I can stick that in the chat + +01:35.080 --> 01:36.280 +when we actually do this live, + +01:36.280 --> 01:38.532 +so that people will have a link to it. + +01:38.532 --> 01:41.119 +So, I'll start this up. + +01:41.119 --> 01:44.560 +Okay. To start with, I am just going to + +01:44.560 --> 01:46.826 +close down various Lisp stuff, + +01:46.826 --> 01:48.566 +and just give you a demo of + +01:48.566 --> 01:50.560 +how it actually works. + +01:50.560 --> 01:55.040 +Let's go up here. + +01:55.040 --> 01:57.205 +Okay, so, basically to make this work, + +01:57.205 --> 01:58.640 +the way I subdivide it + +01:58.640 --> 01:59.200 +is that I would have + +01:59.200 --> 02:00.200 +professional goals, + +02:00.200 --> 02:01.040 +and professional goals + +02:01.040 --> 02:02.703 +would be made up of activities, + +02:02.703 --> 02:03.741 +and each of those activities + +02:03.741 --> 02:05.917 +would contribute to the goal. + +02:05.917 --> 02:07.713 +So, in order to represent this, + +02:07.713 --> 02:10.000 +this is just a nested TODO list + +02:10.000 --> 02:12.800 +in Emacs Org mode. + +02:12.800 --> 02:16.068 +I sort of change things like the naming, + +02:16.068 --> 02:18.247 +Pending, In-Progress and Complete + +02:18.247 --> 02:19.440 +rather than TODO, DONE because + +02:19.440 --> 02:21.360 +that's more like what my professional + +02:21.360 --> 02:23.244 +body likes to categorize things, + +02:23.244 --> 02:25.315 +but essentially it's the same thing. + +02:25.315 --> 02:28.212 +So, I've got an Org capture template + +02:28.212 --> 02:29.499 +or two Org capture templates + +02:29.499 --> 02:31.843 +in order to grab this information, + +02:31.843 --> 02:33.645 +and then stick it in the TODO list, + +02:33.645 --> 02:36.540 +and also tabulate it using column view. + +02:36.540 --> 02:39.304 +I'll start off just by showing you + +02:39.304 --> 02:40.090 +an example here. + +02:40.090 --> 02:40.879 +So, what I'm going to do is + +02:40.879 --> 02:41.965 +create a new goal, + +02:41.965 --> 02:42.849 +and then under it, + +02:42.849 --> 02:44.959 +I will create a couple of activities + +02:44.959 --> 02:46.511 +relevant to that goal. + +02:46.511 --> 02:49.360 +For the goal I'm going to have, let's say, + +02:49.360 --> 02:50.342 +something relevant, + +02:50.342 --> 02:54.000 +so, 'Improve Public Speaking', + +02:54.000 --> 02:55.680 +and then I'm going to say, the type + +02:55.680 --> 02:58.000 +of that goal is, well, it's a 'Presentation' + +02:58.000 --> 03:01.200 +I suppose. The outcome of that goal is, + +03:01.200 --> 03:02.560 +well, I don't want to go into too much + +03:02.560 --> 03:06.069 +detail here, but it would be, you know, + +03:06.069 --> 03:09.140 +'Get feedback from colleagues', and so forth. + +03:09.140 --> 03:11.200 +I won't fully and completely [inaudible] + +03:11.200 --> 03:12.538 +about what the goal was. + +03:12.538 --> 03:14.067 +Now, the retrospective value, + +03:14.067 --> 03:15.318 +my understanding is that + +03:15.318 --> 03:17.028 +you fill that in afterwards, + +03:17.028 --> 03:18.800 +so you want to talk after completing the + +03:18.800 --> 03:21.213 +action, so this is not relevant for the day. + +03:21.213 --> 03:23.120 +I'm just going to leave it blank, + +03:23.120 --> 03:24.541 +although I'm sure you can imagine + +03:24.541 --> 03:26.428 +I could say: having completed this action + +03:26.428 --> 03:28.959 +I felt that, blah blah blah, and so forth. + +03:28.959 --> 03:31.360 +Okay, so I will add that, and then you + +03:31.360 --> 03:33.760 +will see that I now have a new goal, + +03:33.760 --> 03:36.048 +both in my column view and in my TODO list, + +03:36.048 --> 03:38.159 +and just to make it a little bit + +03:38.159 --> 03:39.920 +realistic, I'm going to then add two + +03:39.920 --> 03:41.332 +activities to that. + +03:41.332 --> 03:43.433 +When I come in to add an activity, + +03:43.433 --> 03:44.560 +I have to select a goal. + +03:44.560 --> 03:49.120 +I'm going to select 'Improve Public Speaking'. + +03:49.120 --> 03:52.963 +Yeah, so, the activity I'm going to say is, + +03:52.963 --> 03:57.427 +well, let's say, 'Speak at EmacsConf 2021', + +03:57.427 --> 04:01.200 +that we can use a type of 'Presentation', + +04:01.200 --> 04:04.352 +outcome of that is, stating the obvious, + +04:04.352 --> 04:08.080 +'Present on an Emacs idea'. + +04:08.080 --> 04:09.680 +Right, something along the lines of that. + +04:09.680 --> 04:11.519 +And, then retrospective, again I'm not + +04:11.519 --> 04:14.135 +going to fill that in at the moment. + +04:14.135 --> 04:19.060 +Then, last but not least, + +04:19.060 --> 04:20.799 +I will come up with a slightly different + +04:20.799 --> 04:23.215 +activity. So, again selecting + +04:23.215 --> 04:24.889 +'Improve Public Speaking', + +04:24.889 --> 04:27.440 +the activity would be + +04:27.440 --> 04:31.257 +'Watch lecture series on public speaking', + +04:31.257 --> 04:33.426 +you know, blah blah blah, so forth. + +04:33.426 --> 04:34.720 +Type value would be + +04:34.720 --> 04:37.600 +Lecture, for this outcome would maybe be + +04:37.600 --> 04:43.252 +'Use new knowledge in EmacsConf presentation'. + +04:43.252 --> 04:45.350 +Right, might be a good one there. + +04:45.350 --> 04:46.720 +Again, retrospective value, + +04:46.720 --> 04:48.518 +I'm just going to leave that blank, + +04:48.518 --> 04:51.440 +and I'm going to save that. + +04:51.440 --> 04:52.960 +Now, we're in a position where we've got + +04:52.960 --> 04:54.960 +a goal and two activities, which are + +04:54.960 --> 04:57.520 +represented here, you can see here that I + +04:57.520 --> 05:00.160 +can move an activity, cycle it forward to + +05:00.160 --> 05:02.322 +In-Progress. When I do that, + +05:02.322 --> 05:05.104 +I get a STARTED timestamp here. + +05:05.104 --> 05:06.737 +If I then cycle it again, + +05:06.737 --> 05:09.869 +I get the more familiar CLOSED timestamp here. + +05:09.869 --> 05:11.635 +The STARTED timestamp is a bit of + +05:11.635 --> 05:13.918 +custom code, I'll show you that in a moment. + +05:13.918 --> 05:17.120 +And then likewise, let's say that…, + +05:17.120 --> 05:20.166 +we'll move this one from PENDING to STARTED. + +05:20.166 --> 05:22.960 +Okay. Now, if I save the document, + +05:22.960 --> 05:24.560 +that will trigger the updating + +05:24.560 --> 05:27.520 +of the column view, you can see now + +05:27.520 --> 05:29.360 +that we have the various started and + +05:29.360 --> 05:31.600 +completed statuses, this is up to date. + +05:31.600 --> 05:32.937 +So, that's pretty much. + +05:32.937 --> 05:34.211 +You can imagine that we could add + +05:34.211 --> 05:35.469 +lots of goals and lots of activities, + +05:35.469 --> 05:37.474 +and this would grow into, you know, + +05:37.474 --> 05:41.704 +several sheets worth of a work, + +05:41.704 --> 05:43.748 +and then last but not least, + +05:43.748 --> 00:05:45.440 +is obviously the most important thing. + +00:05:45.440 --> 00:05:46.720 +How do you submit it? + +05:46.720 --> 05:48.479 +We could just use the standard + +05:48.479 --> 05:50.856 +export facility in Org mode for doing that. + +05:50.856 --> 05:55.039 +That's just Control c Control e l o (C-c C-e l o). + +05:55.039 --> 00:06:03.440 +And there you can see, + +00:06:03.440 --> 00:06:06.586 +there you've got the goals and activities. + +06:06.586 --> 06:08.319 +I spent a bit of time, I won't go too much + +06:08.319 --> 06:10.000 +in the LaTeX formatting, but coming up + +06:10.000 --> 06:12.319 +with something that I felt and got as + +06:12.319 --> 06:14.720 +much information compactly on a page + +06:14.720 --> 06:17.840 +without making it difficult to read, + +06:17.840 --> 00:06:19.039 +should we say, and it's always + +00:06:19.039 --> 00:06:20.080 +a find-the-balance thing. + +00:06:20.080 --> 00:06:22.560 +I'm not saying I'm an expert on it, + +00:06:22.560 --> 00:06:24.400 +but I thought what I came up with here + +00:06:24.400 --> 00:06:25.905 +was reasonably clear + +06:25.905 --> 06:28.960 +but allowed you to write enough information. + +06:28.960 --> 06:31.039 +The goals and activities were reasonably + +06:31.039 --> 06:32.419 +well explained. + +06:32.419 --> 06:35.039 +Okay, we can just kill that. + +06:35.039 --> 06:37.402 +So, how does all of that work? + +06:37.402 --> 06:40.180 +Well, underneath is config tab here, + +06:40.180 --> 06:41.210 +we have a bunch of Lisp + +06:41.210 --> 06:43.276 +that I'm going to sort of fly through here. + +06:43.276 --> 06:45.898 +You can ask me any questions afterwards. + +06:45.898 --> 06:46.639 +First thing is, + +06:46.639 --> 06:48.371 +we have the org-capture templates, + +06:48.371 --> 06:50.101 +which are here. + +06:50.101 --> 06:53.178 +The goal one is not doing anything special. + +06:53.178 --> 06:55.605 +It's just writing it back to this file, + +06:55.605 --> 06:57.125 +so there is a limitation there + +06:57.125 --> 06:58.718 +that you must have this file open + +06:58.718 --> 06:59.840 +when you add them, which is + +06:59.840 --> 07:02.000 +something I'd like to improve in future. + +07:02.000 --> 07:04.952 +For the activities, it specifies the file, + +07:04.952 --> 07:06.560 +but it also specifies this function + +07:06.560 --> 07:09.926 +set-activity-pos-from-goal, which (is) above here. + +07:09.926 --> 07:12.720 +What this does is, it iterates through the + +07:12.720 --> 07:17.360 +various Org entries looking for goals, + +07:17.360 --> 00:07:20.720 +and once it has a list of goals, + +00:07:20.720 --> 00:07:21.919 +it presents them to you + +00:07:21.919 --> 00:07:23.599 +using ido-completing-read, + +07:23.599 --> 00:07:25.120 +so that you can select the goal + +00:07:25.120 --> 00:07:27.610 +that you want the activity to live underneath, + +07:27.610 --> 07:29.520 +and it then searches forward, and it finds + +07:29.520 --> 00:07:31.599 +the appropriate spot in that goal + +00:07:31.599 --> 00:07:33.919 +that the Emacs can then dump + +00:07:33.919 --> 00:07:36.000 +the captured activity. + +07:36.000 --> 07:39.210 +Okay, the next one is pretty straightforward. + +07:39.210 --> 00:07:40.479 +Because I changed the names + +00:07:40.479 --> 00:07:42.240 +of the TODO, DONE, + +00:07:42.240 --> 00:07:44.720 +I now need a new way of aggregating + +00:07:44.720 --> 00:07:46.691 +the summary completion statuses. + +07:46.691 --> 00:07:48.400 +So, for this I'm just looking + +00:07:48.400 --> 00:07:51.440 +at the number of completed activities + +07:51.440 --> 07:53.627 +over the total number of activities, + +07:53.627 --> 07:57.665 +and I make that available on the C+ here, + +07:57.665 --> 08:00.859 +which we will see when I go and show you + +08:00.859 --> 08:03.960 +the top configuration in the Org document + +08:03.960 --> 08:05.199 +in two minutes. + +08:05.199 --> 08:08.080 +I mentioned that we needed to have our + +08:08.080 --> 00:08:10.400 +own start date. The way this works is + +00:08:10.400 --> 00:08:11.870 +we add a hook to + +00:08:11.870 --> 00:08:14.996 +org-after-todo-state-change-hook, + +08:14.996 --> 00:08:17.199 +which means that we test + +00:08:17.199 --> 00:08:19.680 +the state change results in + +00:08:19.680 --> 00:08:21.599 +one of the items being In-Progress, + +00:08:21.599 --> 00:08:23.199 +and if that's true + +00:08:23.199 --> 00:08:25.360 +and it already doesn't have a time stamp, + +08:25.360 --> 00:08:26.639 +then it creates a timestamp + +00:08:26.639 --> 00:08:29.049 +with the current time and date. + +08:29.049 --> 00:08:31.199 +The second hook here is just ensuring that + +00:08:31.199 --> 00:08:32.663 +when we save the document, + +08:32.663 --> 08:34.898 +that the column view is dynamically updated, + +08:34.898 --> 08:36.578 +so that everything is up to date. + +08:36.578 --> 08:39.444 +And then last but not least here, + +08:39.444 --> 08:43.590 +the tmp-f-timestamp, what this does is, + +08:43.590 --> 08:46.690 +on the export, it modifies the timestamps, + +08:46.690 --> 08:48.336 +so that it removes the angle brackets, + +08:48.336 --> 08:50.367 +and it removes the hours and minutes. + +08:50.367 --> 00:08:51.839 +That is a space-saving thing + +00:08:51.839 --> 00:08:54.080 +and a tidiness thing in the PDF. + +00:08:54.080 --> 00:08:56.187 +I'll show you in a second how that's used. + +08:56.187 --> 08:58.121 +We then allow bind-keywords. + +08:58.121 --> 08:59.839 +We use them above. + +08:59.839 --> 00:09:01.200 +Then we just have a simple key + +00:09:01.200 --> 00:09:05.258 +that allows us to hotkey for org-capture. + +09:05.258 --> 00:09:06.800 +And then at the start, + +00:09:06.800 --> 00:09:07.327 +when we evaluate the startup block + +00:09:07.327 --> 00:09:10.160 +that I have of Lisp, + +00:09:10.160 --> 00:09:11.360 +just so it's already there, + +00:09:11.360 --> 00:09:13.519 +and set the number of sublevels to one + +00:09:13.519 --> 00:09:16.080 +so only the top levels exist. + +09:16.080 --> 00:09:19.360 +Coming back over the top + +00:09:19.360 --> 00:09:21.576 +to put that all back together again. + +09:21.576 --> 00:09:22.720 +The startup just tells you + +00:09:22.720 --> 00:09:24.926 +that you want log times. + +09:24.926 --> 09:27.023 +The title, author, description, and…, + +09:27.023 --> 09:28.536 +they should be obvious, right, + +09:28.536 --> 09:29.920 +that's just text for the PDF. + +09:29.920 --> 09:33.049 +Options, we disable the table of contents, + +09:33.049 --> 09:34.320 +we do not want that. + +09:34.320 --> 00:09:35.680 +Now, the output config here, + +00:09:35.680 --> 00:09:37.519 +the first two are resulting + +00:09:37.519 --> 00:09:40.160 +in the timestamp formats, so, that was + +00:09:40.160 --> 00:09:41.920 +the tmp-f-timestamp function + +00:09:41.920 --> 00:09:43.468 +I showed you below. + +09:43.468 --> 09:45.310 +And, we got a better LaTeX stuff here, + +09:45.310 --> 09:47.134 +just saying that we want a landscape, + +09:47.134 --> 09:49.150 +and we want to use A4 paper size, + +09:49.150 --> 09:50.560 +and then the columns here. + +09:50.560 --> 00:09:51.839 +What we want is just to + +00:09:51.839 --> 00:09:52.880 +rename the properties + +00:09:52.880 --> 00:09:54.160 +to something which just looks + +09:54.160 --> 09:55.572 +a little bit nicer in the table. + +09:55.572 --> 09:58.320 +So you can see that: goals, activities, + +09:58.320 --> 10:00.979 +status, completed, and so forth. + +10:00.979 --> 00:10:03.760 +Then last but not least, + +00:10:03.760 --> 00:10:04.640 +on the actual thing, + +00:10:04.640 --> 00:10:06.487 +we use a longtable in LaTeX. + +10:06.487 --> 00:10:09.360 +We align, so we specify very exactly + +00:10:09.360 --> 00:10:11.040 +that we want five centimeters + +10:11.040 --> 10:13.364 +for the first and last two columns, + +10:13.364 --> 00:10:15.680 +and that we want all the other columns + +00:10:15.680 --> 00:10:17.196 +to use the remaining space. + +10:17.196 --> 10:19.040 +And that's it. + +10:19.040 --> 00:10:21.440 +Appreciate, I've absolutely whirlwinded + +00:10:21.440 --> 00:10:24.160 +through that, but please do feel free + +00:10:24.160 --> 00:10:26.144 +to ask me any questions, + +10:26.144 --> 10:28.786 +or speak to me offline. + +10:28.786 --> 10:32.839 +Thank you very much. |