A cli TagSpaces_ client, especially geared towards `The Secret Weapon`_
approach to Getting Things Done.
History
-------
A few months into 2017 I read Jon Westenberg's post about how `he uses
Evernote`_ to keep track of all the things that he needs to do. In the article
he has some pretty golden advice:
::
Before I get into it though, I want to be clear. What I do might not work
for you. There is no golden key to productivity, and this is pretty
specifically designed to match my workflow and my personality.
Which is, of course, fantastic advice.
While I'm sure Evernote is a fantastic tool with all the bells and whistles
that one could desire, it's not exactly *my* bells and whistles. I have a
slightly different approach that I prefer. I'm much more into the command line,
mainly because it's the easiest way to eliminate distractions. Yeah, you can
turn off distractions in your browser and on your phone - but you actually have
to turn *on* distractions on the command line. So I try to spend most of my
time here.
About a year ago I also came across TagSpaces_, which has a philosophy I love:
just stick the information into the filename itself. Then it doesn't matter
what system you're using, the information is going to travel with the file.
After I read Jon's article, I started trying to use the TagSpaces client. It
worked well enough, though it wasn't quite as keyboard-centric as I wanted.
Using Dropbox to sync my files worked great (though they still don't have a
client for the Raspberry Pi, grumble grumble).
I toyed around with using the command line, ``ls *1-now*`` or ``find . -name
*3-soon*`` worked pretty well, but it was still a bit clunky. Out of that need
came Shibboleth
Guide
-----
Shibboleth is pretty simple. At the moment it only supports Linux-y systems
(there's some weirdness on Mac OSX, with readline), but I'm always open to
`pull requests`_!
All you have to do is install shibboleth:
::
python3.6 -m pip install shibboleth
(Come join me in the glorious future that is Python3.6! Or, if you think it's
awesome and you live in some horrible reality that requires something ancient,
I'm totally accepting `pull requests`_)
Once it's installed, just start it up in whatever directory you want to stick
your stuff. Maybe you do something like this:
::
$ cd ~/Dropbox/
$ mkdir secret-weapon
$ cd secret-weapon
$ mkdir completed
$ shibboleth
Welcome to Shibboleth, the tool designed to be *your* secret weapon.
Your editor is currently vim. If you don't like that, you
should change or set your EDITOR environment variable.
⇀shibboleth:/home/wayne/Dropbox/secret-weapon
> new
Title: Try out shibboleth
That will launch your editor - whatever your ``EDITOR`` environment variable is
set to. Or ``vim``, if nothing is set. ``:q`` is how you get out of Vim, if
that's not your thing.
Save and quit and you should come back to shibboleth:
::
⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315].md
>show
********************************************************************************
Trying out shibboleth, how does it work for me?
********************************************************************************
⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315].md
>
It will automatically select the new file. You may notice that it changed the
spaces for ``-``. That's because readline is confusing and hard and doesn't
like autocompleteing spaces. But if you can make it do the right thing, did I
mention I'm accepting `pull requests`_?
So you can change the priority of your selected file/task with ``priority``, or
the shortcut ``p``.
::
>p 1
⇀shibboleth:/tmp/fnord/Try-out-shibboleth[20170406~011315 1-now].md
>
You can ``deselect`` to drop that, or ``select`` a different file. Or create
another ``new`` one:
::
>new something completely different
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345].md
>show
********************************************************************************
A man with three legs!
> 'e ran off!
********************************************************************************
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345].md
p 4
⇀shibboleth:/tmp/fnord/something-completely-different[20170406~013345 4-later].md
>
You can use ``ls`` to list all the files in the directory, ``cd`` to change
directory. Or if you just want to see what you're supposed to be doing now:
::
> now
trying-out-shibboleth[20170406~013326 1-now].md
⇀shibboleth:/tmp/fnord/trying-out-shibboleth[20170406~013326 1-now].md
>later
something-completely-different[20170406~013345 4-later].md
⇀shibboleth:/tmp/fnord/trying-out-shibboleth[20170406~013326 1-now].md
>
Once you're done with a thing, you can ``compelete`` it, or be ``done`` with
it:
::
>done
⇀shibboleth:/tmp/fnord
>cd completed
⇀shibboleth:/tmp/fnord/completed
>later
something-completely-different[20170406~013345 4-later].md
That's really about all there is to it. The way I use this is
- start up shibboleth
- check my ``waiting`` list to see if there's anything I need to move out of
waiting.
- Go through ``someday``, ``later``, ``soon``, and ``next`` to see if anything
needs to be bumped up.
- Decide which of ``now`` I need to work on the most, then ``s`` elect it. I
may ``edit`` it to add some notes or just ``show`` to review what I'm
supposed to be doing. Then when I finish that I mark it ``done`` and move on
to the next.
As new tasks come in via email, etc. I go ahead and add new ones. I've been
using shibboleth as the interface for my tasks for about a day now and it works
*great* for shifting the priority, creating new tasks, and editing ones that
I've got.
If you've got any suggestions about what would make shibboleth (more) awesome,
I'm happy to work with you to get your `pull request`_ in. Or if I've got some
time or I think it's a killer feature, I'm sure I'll add it to my own list.
Using shibboleth, of course :)
Philosophy
----------
I would prefer to keep this as 3rd-party-dependency-free as possible. I'm not
opposed to adding some kind of plugin architecture, but I *really* want
shibboleth to stay one single file. That way you can just stick it in a
directory and you're good to go.
TODOs
-----
- Add BSD license
- Add other tag support
- config. We want to be able to config shibboleth, right? Different colors and
what-not.
.. _TagSpaces: https://www.tagspaces.org/
.. _The Secret Weapon: http://www.thesecretweapon.org/the-secret-weapon-manifesto/manifesto-part-1-the-issue
.. _he uses Evernote: https://medium.com/hi-my-name-is-jon/how-i-use-evernote-to-pitch-at-the-top-of-my-game-2c5966ef720b
.. _pull requests: https://github.com/waynew/shibboleth#fork-destination-box
.. _pull request: https://github.com/waynew/shibboleth#fork-destination-box