summaryrefslogtreecommitdiffstats
path: root/2021/captions/emacsconf-2021-professional--using-org-mode-for-recording-continuous-professional-development--philip-beadling--main.vtt
diff options
context:
space:
mode:
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.vtt871
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.