diff options
Diffstat (limited to '2020/info')
-rw-r--r-- | 2020/info/11.md | 374 |
1 files changed, 373 insertions, 1 deletions
diff --git a/2020/info/11.md b/2020/info/11.md index b04683b4..709efcf7 100644 --- a/2020/info/11.md +++ b/2020/info/11.md @@ -2,7 +2,8 @@ Aldric [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric.webm" subtitles="/2020/subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric.vtt"]] -[Download compressed .webm video (19MB)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric--vp9-q56-video-original-audio.webm) +[Download compressed .webm video (19MB)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric--vp9-q56-video-original-audio.webm) +[View transcript](#transcript) Come see how org-gtd leverages org-mode to automate the GTD inbox management. Stick around to see how the various org-mode tools get @@ -83,3 +84,374 @@ etc. - I'm using org-edna as well and I want to point others to <https://github.com/toshism/org-linker-edna> which is an enormous help when working with edna. + +<a name="transcript"></a> +# Transcript + +00:00:01.680 --> 00:00:29.199 +Hello, and welcome to my Org GTD talk. I +wrote this package because I was +overwhelmed with all the stuff I had to +manage working at home. I'd heard about +GTD. I saw someone using it with just a +small notebook. I wanted to do it in +Emacs because, well, Emacs can do +everything, right? + +00:00:29.199 --> 00:01:12.640 +I'm going to jump in quickly. Just so +you know, here's kind of a list of the +resources. Obviously, org-gtd, which you +can find there. You can open an issue, +ask me questions there about it. I use +org-edna, a package for state triggers. +I'm going to show this briefly when I +finish item in a project. +org-agenda-property, you will see in the +agenda. It's going to show to whom an +action has been delegated to. You will +see org-roam briefly as a reference +because that is what I have chosen for +my knowledge archival tool. You can +choose whatever you prefer. + +00:01:12.640 --> 00:01:57.520 +This is a quick, quick reminder on what +GTD is and how it works. This is not a +lesson on--a presentation on gtd because +that would be... Well, other people have +done it better than me. In short, +everything goes into the inbox. Then you +process the inbox, and you decide what +to do, if it could be actionable or not. +If it's actionable, it could be a +project or it could be a single action, +which you could delegate or schedule or +just do it. If it's not actionable, you +could just throw it away, incubate it +for later, or move it into your files, +reference. + +00:01:57.520 --> 00:02:27.200 +Over here, you can see the global +bindings for org-gtd. Those are the +actions, the functions I have made +available. This is in progress. There's +more to come. Some stuff is probably +missing. It's grown mostly from my own +personal use so far, so it doesn't have +things. In the bottom right, you can see +the agenda. + +00:02:27.200 --> 00:02:54.319 +One thing I wanted to do with this +package was leverage Org Mode as much as +possible. So I tried to not reinvent the +wheel as much as I could. That meant +reusing the agenda. You can see here a +couple of the things that are made +available or kind of customized or +configured for you, some of the opinions +that org-gtd has. + +00:02:54.319 --> 00:03:49.280 +Up here, for instance, you can see a +delegated action. So a delegated action +has someone to whom it's delegated. It's +my parents in this case. It has the name +of the action: ask parents what gift +they want. It's marked as the state of +WAIT because I'm waiting. It is +scheduled because you should ping people +or check on the status status of a task +when you're waiting for it, so you don't +forget about it or it gets lost forever. +I have a scheduled action to give a +talk. That's what I'm doing right now. I +have an incubated action which is also +scheduled: to make money through the +lottery. This is a thing to take a look +at for later, decide later what I want +to do. It might be actionable, it might +not be. I don't know right now, or I +didn't know when I processed it, so I +incubated it. + +00:03:49.280 --> 00:03:59.360 +Underneath, we have all the things that +are direct actions for me to take. + +00:03:59.360 --> 00:04:33.384 +All right. You see a little bit of the +preparation seeps through the actual +talk. I have here two... I have a single +action of "Steal Andrea's GTD +configuration" and an action to read the +GTD book. It's part of a project. So +most of the day-to-day operation with +with this package should come through +just having the agenda open and having +it be your source for the information +you need to know, so that you can do the +right thing. + +00:04:33.384 --> 00:05:18.960 +So let's take a look at what's +underneath all of this really quickly. +We have--There's three primary files. We +have the inbox. I'm gonna process it in +a second because there's two things +here. One thing to cancel, like an +action to not take. It's nothing. And +then something I will just put into +org-roam, just so you can see that there +is the incubate file. You can see here: +make money through the lottery, +captured, refiled here, and scheduled so +it would show up in the agenda right at +a given time. On the right, you have the +actionable file. This is the one that +has the most information, where most +things should go. + +00:05:18.960 --> 00:05:37.919 +So I have the single actions. They all +go underneath here. This is marked as +next because it's an action for me to +take. Delegated is marked as WAIT. It is +not an action for me to take. It's an +action for somebody else to take, but it +is scheduled because I may wanna... I +can check in at some point. + +00:05:38.400 --> 00:05:53.840 +Things that are scheduled, like "give a +talk," do not have a TODO or NEXT or +WAIT state because they are not bound +that way. They are time-bound, so they +will show up in the agenda when the time +comes. I shouldn't act on them or I +can't act on them beforehand. + +00:05:53.840 --> 00:06:07.520 +You can see here, I have two projects: a +test project (and I will do something +with this in a second) and then there's +this package "Make a GTD package." +There's a project here for me to create +this. It's made of a bunch of actions. + +00:06:07.520 --> 00:07:03.840 +I'm going to show you two things here. +One is: since I was trying to leverage +Org Mode as much as possible, I didn't +try to create very clever operations, +because Org Mode has a lot of very +powerful tools already. There's +automations I can add, but I thought it +might be better to leave more things in +the hands of the user. So here, in this +case, this test project we can just +archive. Right. That's just C-c C-x C-a +is the org-archive action. Save this. So +now if we go to... This will create an +archive file which will have this +information for later perusal if you're +interested. + +00:07:03.840 --> 00:07:27.680 +That's one thing. If we go back to the +agenda for a second, you can see these +things here. Org. So by the way, this +"parents" here was the org agenda +property. This is what shows here, +right? And here, if I finish "Read the +GTD book," I mark it as done. Now +refresh. + +00:07:27.680 --> 00:07:57.280 +You'll see that another item shows up, +and that is where org-edna comes in. +When an action is marked as done in a +project, the next to do action is +automatically marked as next, so your +agenda is automatically updated. This +was one of the nice things for me +because I didn't want to have to open my +file, go find the action, mark it as +done, find the next one, mark it as +next, and so forth. I didn't want to +bother with it. + +00:07:57.280 --> 00:08:20.720 +Oh, actually, you know what, let me show +you something else. This simple +project... I don't need this timestamp +to be here but I like having a capture +timestamp here, so I'm gonna make one +up. So this is the most convenient thing +that I think... This is one of the most +convenient things that I get out of this +binding. + +00:08:20.720 --> 00:09:00.080 +The next really convenient thing is the +way this gets processed. Let me show you +this. When you process the entire inbox, +what you see is the items one at a time, +so you can work with them. You can see +at the bottom... You can work with them +without being distracted. You can see at +the bottom the list of things you can +do, which are all the decisions you can +take from GTD, right? In this case, this +is one to throw out, so press t. You +have the option to make modifications to +this if you want to. If you have any +reason to store it, then you finish +editing. You can add a tag if you want +to, because this might still be +interesting, + +00:09:00.080 --> 00:09:37.457 +and then enter and it's done. Important +knowledge, I'm going to hit a for +archive it. I'm gonna start looking at +org-roam. So this is important +knowledge. I have to capture this. +That's it. I've captured it. It is done. +I go back to buffer, and I can mark it +with C-c. There's no archiving because +this is just knowledge. There's no +tagging. It's just knowledge. + +00:09:37.457 --> 00:10:15.440 +But then the simple project... I want to +show you this because there's some +automation that's pretty helpful. In the +simple project, I have my first action, +second action, third action. and you +see, this is all I'm writing. I'm not +adding any of the states, any of the +tags. They're going to be added by... +Here, I can add a tag if I want to this +project. I don't care right now, but you +know... I leave the tags to the user, so +they're not super relevant to me as a +package provider. + +00:10:15.440 --> 00:11:04.880 +This is where we are. This is the whole +thing. So now if we go back to the +agenda, I have a first action, right. +And if I go to the actionable file, and +now see, I have a simple project that +has my first action as NEXT, second +option TODO, third action as TODO. So +what I've... You know, as you can see... +I hope what I've tried to do is take all +of the tedium out of working with with +Emacs and Org Mode when working with +your actions so you could focus on what +you want to do, what you need to do, +what you care about, and the package +would take care of the rest. + +00:11:04.880 --> 00:12:32.000 +So the last thing I wanted to take a +quick look at was some of the the tests. +The code is available here. You can see +the code on... the code on Github if you +want. I've had some trouble writing good +tests for this because Org Mode was +written at a time before testing was +quite as important, I think, or valued +quite the same way, let's put it this +way. And as a result, a number of things +actually... It might also be a feature +of Emacs at the time, I don't know. But +a lot of things in Org Mode aren't very +testable, and so what I ended up doing +was just having an actual directory in +which I actually... with files, right? +So I don't have much mocking I can do. I +can't just do a bunch of fake files, +fake directories. So I actually go +through the process, actually create +files, and then actually have Emacs +pointing at this directory to process +and get the information. So I have to +define the key to test that it gets +bound properly. I have to set the +capture templates. The capture templates +are how things get added. I have a +wrapper control... org-gtd-capture +essentially is a wrapper around the +capture that makes sure the inbox is +there and then captures to the inbox. + +00:12:36.240 --> 00:13:45.360 +Making sure the items show in the agenda +when I'm done with the processing was a +little bit tricky. I had a bug and I had +to to fix it, so I just wrote this test, +but it's it's pretty convenient now to +have that, because it gives me a bunch +of sanity. So again, I have a capture, +and this is... I wanted to be able to do +this automatically but org-capture +itself is not super testable right now, +so the way it's... the way you test it +is just by programmatically calling it, +which is not exactly what I wanted, +because I wanted something more like the +user action, but I'll... You know, what +I can get. And then I can... I'll just +insert these words into the buffer and +then I'll finalize the capture. Then I +have another... I have a test package +here called with simulated input which +basically calls this and then enters +these user actions. Right, so like the +letter s, C-c c and then RET. And that +is, you know, choosing a single action, +then finishing the edit, and then adding +zero and not adding tags. + +00:13:46.480 --> 00:14:05.040 +As you can tell, there's a strong layer +of disconnect between the tests and what +they represent. That's a work in +progress. I have four tests. It's not a +lot, but I want to... I intend to add +more as I keep on adding more behavior. + +00:14:05.040 --> 00:14:34.880 +I would like this to be eventually a +sane starting point for GTD. There's a +lot of people like like Andrea, like +Rainer, like... I mean, if you search +for Org Mode and GTD, you'll find a lot +of blog entries, a lot of entries, a lot +of articles that explain how to connect +it together, how to think that way, how +to use all the tools that Org Mode makes +available. + +00:14:34.880 --> 00:15:20.560 +Hopefully, this package is a way to get +started without having to write too much +of your own code. Then eventually, you +can move away from the package if you +want, if you realize that you are +developing different opinions and you +don't want to... If GTD doesn't work +this way for you, if you have a +different way, it is a better fit for +the way you want to organize your life, +then move away from the package. In the +meanwhile, I welcome all thoughts. I +welcome contributions. I welcome +questions, bug reports, everything So, +you know, come say hi. Try the package. +And yeah, see you. I'll see you online! |