Hello, and welcome
to my Org GTD talk.
I wrote this package because myself
overwhelmed with all the stuff I had to
manage at working at home
and I'd heard about gtd saw someone
using it with
just a small notebook
and I wanted to do it in Emacs because
well
max can do everything right so
I'm going to jump in quickly so 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
and you will see orgrome briefly as a
reference because that is what I have
chosen for
my knowledge archival tool you can
choose
whatever you prefer
um this is a quick quick reminder on
what
gtd is and how it works uh this is not a
lesson on
presentation on gtd because that would
be
well other people have done it better
than me
so in short um everything goes into the
inbox
and 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 soon or schedule or just do
do it if it's not actionable you could
just throw it away
incubate it for later or move it into
your files
reference
over here
you can see the global bindings
or or gtd those are the the actions that
the functions I have made available this
is
in progress there's more to come some
stuff is probably missing but
it's grown mostly from my own personal
use so far so it doesn't have things
and the bottom right you can see the
agenda
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
custom customized or configure it for
you some of the opinions that or gtd has
up here for instance you can see a
delegated action
so a delegated action is
as 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 tag as the state
of wait because I'm waiting
and 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
and 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 you know
later decide later what I want to do
it might be actionable it might not be I
just I don't know right now or I didn't
know when I
processed it so I incubated it
underneath we have all the things that
are
direct actions for me to take
all right you see a little bit of the
preparation seeps through the actual
talk
so I have here two I have a single
action of a steal the android uh andreas
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 having it be your your source
for the information you need to know so
that you can
do the right thing so let's take a look
at
what's underneath all of this really
quickly
we have there's three primary files um
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 to
so it would show up in the agenda
right at a given time and on the right
you have the actionable file and this is
the one that has the most information
because
where most things should go so
I have the single actions they all go
underneath here and so
this is marked as next because it's an
action for me to take
uh delegated is marked as weight 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
uh
things that are scheduled like give a
talk do not have a to-do 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
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 gte package there's a
project here for me to create this back
it's made a bunch of actions and
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
so there's automations I could I can add
but I thought it might be
better to leave more things into the
hands of the user
so here in this case this test project
we can just archive
right that's just
control c control x control a is the org
archive
action save this
so now if I if we go to the you know
this will create an archive file
which will have this this information
for later perusal
brutal if you're interested that's
that's one thing if we go back to the
agenda for a second
um you can see
these things here uh org so by the way
uh this this parents here with 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
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 net 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
so I didn't want to bother with it
um oh actually you know what let me show
you something else
this uh 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 is binding
the next really convenient thing is the
way this gets processed
let me show you this um
when you process the 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 where you can
work with them without being distracted
you can see at the bottom the 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
and then enter and it's done so
important knowledge
I'm going to hit a for archive it
and then um I'm gonna start looking at
orgrom
so this is uh important knowledge
I have to get to this that's it I've
captured it
uh it is done I uh
go back to buffer
and I can market control c then
there's no archiving because this is
just knowledge there's no
tagging it's just knowledge but then the
simple project I want to show you this
because
there's some automation that's pretty
helpful so
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
so um here I can add a
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 and 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 to do third action as to
do
uh so what I've you know
as you can see I hope what I've tried to
do is take all of the kind of
all 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 so
the last thing I wanted to take a quick
look at was some of the the tests
there's
the code is available here but you can
see the code
you on see the code on github if you
want um
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 order mode aren't
very testable and so
what I ended up doing was just having an
actual directory in which I
actually um with files
right so like 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
gets bounded properly
I have to set the capture templates um
other capture templates are how you know
things get added I have a wrapper
control uh or gtd capture essentially is
a wrapper around the capture that
makes sure the inbox is there and then
captures to the inbox
right and
making sure the items show in the agenda
when I'm done with the with processing
was a little bit
tricky I had a bug and I had to to fix
it so I just wrote this
this test but it's uh 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 ojtd but or 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
um basically calls this and then enters
these uh these user actions right so
like the letter s
control c c and then return and that is
uh you know choosing a single action
then finishing the edit
and then adding zero and not adding tags
you
as you can tell there's a strong layer
of disconnect between the tests
and what they represent that's a work in
progress
um so I have like four tests
it's not a lot but I want to I intend to
add more as I keep on adding more
behavior
and I would like this to be eventually
a sane starting point for gt
there's there's a lot of people like
like andre I like reiner 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
orgmod makes available
and hopefully this package is a way to
get started without having to write too
much
of your own code um
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 you know 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 uh yeah see you
I'll see you online