Yet another cool little Planner hack: really smart tab expansion

| emacs, planner

One of the greatest things Planner has done for me has been to make it
easy to keep track of little tasks. Having lots of things on the shelf
makes it far easier for me to take advantage of moments of inspiration
and turn them into real code. I do my best thinking on the train,
walking home, in the bath: wherever I can squeeze some reflection into
a couple of minutes of waiting. Then I mentally run through whatever
little tasks I have lying around, and if inspiration hits, I run with it.

Today was pll’s lucky day. He asked for ways to easily hyperlink to
people’s records and to days like “tomorrow”, “yesterday”, and
“today”. I remember thinking, “Hey, that would be cute.” The feature
was really close to something I hacked together over a year ago, so I
pulled up my old configuration, tweaked it a bit, and ended up
creating this nifty tab expansion module that used hippie-expand to
expand planner names in an intelligent way.

I _love_ hacks like that. I love making small and nearly insignificant
tweaks to help people fit Planner to the way they want to work. People
may or may not use that little tab completion thing. Browsing
through my ../emacs/planner-config.el and
../emacs/emacs-wiki-config.el reveals a lot of cruft I wrote long
ago but have since then forgotten. The point is, at least we
experiment with these things. Planner makes it easy to experiment.
Planner makes it easy to try things out.

A major part of my role as the maintainer of Planner is really just to
keep track of people’s wishes and see if we can kludge together some
kind of attempt. While other software projects have awe-inspiring
grand plans, we stumble along in the directions people want to go
in—sometimes contradictory—and somehow or another, we manage to make
an environment that fits us. Planner is not a one-size-fits-all
personal information manager. Planner is crafted, tailored for each
person. Planner grows just as much as you want it to.

Of course, this constant experimentation leads to rough spots if you
track the development branch and try all the new features. There are
bugs we still haven’t tracked down, particularly the new code that’s
out there so that people can bang on it and experiment with it and
hammer it into something that makes sense.

I think this development model works. That’s why the mailing list is
essential. That’s why #emacs on is essential. That’s
why a constant stream of suggestions really really helps.

Perhaps one day Planner will get buried under features. It already
seems to be overly complex at first glance; newbies who take one look
at it run away screaming. ;) I think that is something that cannot
quite be addressed by documentation or simplification or even
reasonable defaults. I will not hide the complexity of Planner. I will
not hide Lisp programming from Planner users. In fact, you are very
much encouraged to try it out, and if this is your first introduction
to Emacs Lisp programming, I think that it is quite good that your
first hack is something you will use and benefit from daily.

How, then, are we to manage the complexity as Planner grows more and
more features? How are hapless newbies supposed to get into this
extremely wonderful thing? ;)

I think the answer lies with people. I learn most by asking people how
they use their Planner. I learn by asking people what they want to be
able to do with their Planner. I think it’s silly to ask people to use
all of Planner right away—_I_ don’t use all of Planner. Even if you
go through the manual, there’s just so much information. There are
just so many ways of doing things.

The trick, really, is to evolve from something small and comfortable
to something slightly larger and perhaps just a little uncomfortable,
but something that is still easy to get used to. Show people the bare
minimum that they need in order to do their job (or to at least feel
they’re keeping track of the things they need to do their job), give
them a glimpse of what’s possible, and encourage them to think of
other things they’d like to do.

That’s where little hacks like pll’s tab completion fit in. Planner
encourages people to think about that next little hack as a “nice to
have”: not something to waste a lot of time thinking about, perhaps,
but something to keep on a todo list somewhere just in case
inspiration strikes.

You can comment with Disqus or you can e-mail me at