The first chapter I’m working on is about planning your schedule in
Emacs. Here’s my draft outline. I’m targetting 20 pages. The chapter
before this is about managing tasks (35 pages). The Org and Planner
sections in this chapter will build on the previous chapter, which I
haven’t written yet.
Audience: - do not keep track of schedule at all - track schedule using Outlook, Notes, or some other program - track schedule using PDA - track schedule using Filofax or other paper planner - already use Emacs and want to learn more tips Why run your life in Emacs Overview of methods The basics Setting up Diary Getting reminders for appointments Importing an event Importing a calendar Exporting your calendar Publishing your calendar Synchronizing Using Org Using Planner Including Diary events Using tasks as appointments Sorting tasks by time Automatically updating a Diary section Keeping private Notes Publishing your schedule Tracking Time
Can you think of anything else that should go into it?
Random Emacs symbol: eshell-script-load-hook – Variable: *A list of functions to call when loading `eshell-script’.
Luis Suarez has another good post on Making the Business Case for Social Computing. He realized that the arguments for informal learning are the same for social computing: the intangible can make a big difference, and these initiatives should be measured the way you measure other changes in the organizations—by the overall outcomes.
The most common objection I hear after my presentations on Enterprise
2.0 is, “I don’t have the time to blog.” The underlying questions are,
“What’s in it for me? What can I expect to get out of blogging? What’s
the return on investment on my time?” It’s hard to give a dollar
amount (“You will earn XXX more”) or a firm idea of time savings
(“You’ll save YYY minutes every week”). I’m still trying to figure out
how to explain the intangible benefits of better connection and
collaboration to people who already think they’re maxed out. Maybe
learning more about how to establish the business case for informal
learning and related concepts will allow me to be more effective at
evangelizing Enterprise 2.0.
On Technorati: enterprise2.0
Random Emacs symbol: nlistp – Function: Return t if OBJECT is not a list. Lists include nil.
Here are some great presentations on what people who use Enterprise 2.0 look like. =)
Someday I’m going to make slides like that.
Thanks to The Shed 2.0 for pointing me to this group of Slideshare presentations.
On Technorati: enterprise2.0
Random Emacs symbol: set-file-times – Function: Set times of file FILENAME to TIME.
I really enjoy looking back on a day and saying, “That was a day well
spent.” You can do a surprising amount of stuff in a day, home-cooked
meals and all.
Today’s big rock was the interviewbot I’m building for Stephen
Perelgut. I not only put together a decent proof of concept (“It’s
more than enough”, according to Stephen), but I also implemented a
number of features that I thought would take me much longer to do. I
gave him a full-perms copy of the scripted object so that he can show
it around. I have a couple of other feature requests I can work on
while waiting for feedback. It’s coming along nicely, and I wonder if
it’s something that we can even release as IBM in order to get more
brownie points. ;) (Either that or I figure out how to sell it, etc.)
Building that interviewbot in Second Life showed me that I’m still
good at picking up new languages quickly and exploring what they can
do. The limits were a little frustrating, but knowing what features
were important to my target user made it easier for me to figure out
the simplest thing that would work instead of getting caught up in
shiny, new, complicated procedures.
Building the command language for my interviewbot reminded me of the
shells I’d worked on for embedded programming projects. I added tab
completion and a simplified help structure to the Compaq iPaq Linux
bootloader, the first open source project I ever had commit access to.
I chose that project because working so closely with hardware
terrified me. What better way to learn than to work with code that
could turn my shiny new PDA into a brick if I made a mistake? (And I
did. Compaq sent me a better model because I’d been so helpful.) I
learned a lot while improving the user interface for something with
limited memory and input capabilities (just a serial terminal for the
bootloader). Several years later, when a friend asked me if I could
recommend anyone with experience in both embedded programming and
Flex/Bison (high-level tools for designing and interpreting new
grammar), I took a look at the requirements and realized that many of
the same techniques I used in my first project also applied. I fixed
the problem in their code, wrote a cleaner solution in C, and sent it
to my friend for free. And now I’ve done it again—had lots of fun
writing a little command-line interface. I seem to like working with
these interface constraints.
I am geek. Hear me roar!
So yes, I’m very happy about that. =)
I’m also happy about the book that I’ve just finished reading: “Make
Your Contacts Count”, by Anne Baber and Lynne Waymon. Most networking
books read alike, but this one made me stop and take pages of notes.
It’s worth adding to my collection of favorite networking books, along
with “How to Talk to Anyone”, “Love is the Killer App”, “Work the
Pond”, “Never Eat Alone”, and the classic “How to Win Friends and
Influence People.” I’ll write more about this book over the next few
days. Great find. Written in 2002 and not the least bit dated. I
wouldn’t have found it if I hadn’t requested practically every
networking book in the Toronto Public Library as part of my goal to
deepen my knowledge of professional networking. I’ve read extensively
about professional networking, but that doesn’t mean I’ve learned
everything there is to know.
One of the things I love about reading all these books is recognizing
things I’m doing or want to do. For example, “Make Your Contacts
Count” suggests organizing your own lunches or dinners with
interesting people at conventions. Hey, I’ve done that! It also
suggests volunteering, and I know how much that pays off. There are a
lot of articles I can write based on the notes that I’ve taken and the
experiences I’ve had, and I’m looking forward to sharing my thoughts
and learning from others.
I’m learning a lot on the home front, too. W-, J- and I had a lot of
fun learning about Siamese fighting fish (bettas) for J-‘s science
homework. We enjoyed another perfect melon while watching Discovery
Channel’s How It’s Made (fishing reels, doll houses, kitchen mixers…
cool)! We’ve decided that this week is Halloween crafts week, and I’m
looking forward to decorating. =) Life is good.
PCFinancial raised its savings rate to 4.25%, which further supports
my decision to move the bulk of my savings to PCFinancial from TD.
I’ll still keep my accounts at TD for flexibility, but I’d rather park
my money in PCFinancial for now. I know it’s relatively easy to move
things around, anyway.
And to think that it’s only 10:30. I wonder what tomorrow will be like!
Tomorrow I have a few errands, including depositing some checks and
renewing my social insurance number. I’d like to focus on
WickedCoolEmacs in the morning, and maybe tinker around with my bot a
little bit before taking off for errands.
I’ll be taking trapeze classes in the evening, too. $15 for a drop-in
class on Queen and Bathurst at 7:30 PM. Want to join me? E-mail or
call for more details.
Life is good.
Random Emacs symbol: ido-complete-space – Command: Try completion unless inserting the space makes sense.
Nearly forgot to mention that Google Reader is my new favorite RSS reader and that I had a lot of fun dipping my toes back into the Enterprise 2.0 blogosphere. It isn’t hard. Start with a few favorite blogs like Luis Suarez: elsua, follow a couple of links, subscribe, follow a couple of links, subscribe… I look forward to getting back into that space, and might look into finding a way to categorize my posts. =)
By the way, does anyone know how to get Feedburner to forget your
default feed reader when reading a SmartFeed feed? Right now, it
automatically tries to add stuff to Bloglines. Old habits…
Random Emacs symbol: nntp-wait-for-string – Function: Wait until string arrives in the buffer.
Now that I’ve taken a closer look at it, I can see that planner-appt’s
much cooler than the little hacks I’d been using to keep track of my
schedule. I’m still not sure if I need a separate schedule section,
because I’ve gotten used to managing my appointments in my task list.
It’s nice to know that the option is there, though, and I like how
color-coding makes it easy to see which appointments are past and
which ones are coming up.
Here’s my config for planner-appt.el:
;;;_+ Appointments (require 'planner-appt) (planner-appt-use-tasks-and-schedule) (planner-appt-insinuate) (setq planner-appt-update-appts-on-save-flag t) (setq planner-appt-sort-schedule-on-update-flag t) (setq planner-appt-schedule-cyclic-behavior 'future) (setq planner-appt-task-use-appointments-section-flag t)
I wonder how I can go about exporting my appointments… <muse>
Random Emacs symbol: x-uses-old-gtk-dialog – Function: Return t if the old Gtk+ file selection dialog is used.
While searching for Emacs calendar sync, I came across Bill Clementson’s post on Emacs and Google Calendars. He showed how to use the Emacs Client for Google Services to add items to the Google calendar and to the local diary file at the same time. I might look into that.
The WickedCoolEmacs book may take a little more work than expected. I
want to include not only what’s already out there, but what logically
makes sense to include—and that might take some hacking on my part as
well. With a little over a year to go before my deadline, I’m sure
that Emacs will also move quite a bit. I think the best thing to do is
to divide my outline into:
If I can get all the low-hanging fruit during my first pass, then I
can go back and re-edit the chapters to include more.
Random Emacs symbol: ebnf-print-directory – Command: Generate and print a PostScript syntactic chart image of DIRECTORY.
I sent a void check to PCFinancial to set up a link between
PCFinancial and TD. I followed up on the phone today, and the link was
created. Now I can transfer funds between my PCFinancial accounts and
my TD checking account.
This means I can move all the money I formerly had in my TD savings
account into my PCFinancial savings account without dealing with
checks. I don’t mind a hold on funds if they’re going straight into my
savings account. I can also transfer funds from PCFinancial to TD in
order to pay off my credit card without having to go to the bank and
deposit a check myself.
I need to follow up with PC in six months to get shorter holds on my
deposits, which I could have set up last year if I thought about it.
Slowly figuring this out. It doesn’t hurt that PC upped its savings
rate to 4.25%. =)
Random Emacs symbol: gnus-summary-low-ticked – Face: Face used for low interest ticked articles.
my palms are wide awake and revolting. just came back from trapeze
lessons. lots of fun. have a long way to go. good teacher—very
supportive. odd that i like this more than krav. good practice in
facing terror and working through it. looking forward to developing
calluses. skin shiny.
kudos to w- for coming with me to help me feel safe, and to j- for
giving it a shot.
next week, work on calluses.
Random Emacs symbol: compilation-setup – Function: Prepare the buffer for the compilation parsing commands to work.
i like watching the other students. i would like to be able to do the
kinds of stuff they do, someday. or at least simple things that look
elegant. and i want to develop upper-body and core strength,
coordination, and a terrific story. ;)
so, what do i need?
gah. all of the above.
maybe i’ll go to trapeze once a week and spend two to three times a
week working on core and strength. the jungle gym near the house will
help me develop calluses, at least until it freezes over. i need to do
more crunches and pushups, too, until i can eventually graduate to
we have a plan.
Random Emacs symbol: custom-initialize-safe-set – Function: Like `custom-initialize-set’, but catches errors.
Categorizing your contacts may make it easier for you to purposefully
deepen or expand your network. Here are some categories recommended in
“Make Your Contacts Count”, a good networking book written by Anne
Baber and Lynne Waymon.
Three months of data should give me an idea of who I’ve talked to
recently. I searched my address book for all the people I had
contacted on or later than 2007.07.01 – 245 people. I quickly tagged
them with the categories. Using a quick Emacs Lisp snippet (see end of
this message), I summarized the results:
The categories are a bit fuzzy in this age of blogs and Facebook, and
I expect to adjust as I get to know people more (or less). Now that
I’ve categorized my contacts, I can plan to meet people more often or
to send out particular stories/blog entries.
Here are the book’s recommendations for deepening connections:
What does your network look like?
(kill-new (mapconcat (lambda (s) (concat s " | " (number-to-string (apply '+ (mapcar (lambda (r) (if (member s (split-string (bbdb-record-getprop (car r) 'mail-alias) ", ")) 1 0)) bbdb-records))))) '("accident" "acquaintance" "associate" "actor" "advocate" "ally") "\n")) ;; The world belongs to people who can hack it. ;)
Random Emacs symbol: mouse-secondary-overlay – Variable: An overlay which records the current secondary selection.
I compiled Emacs from CVS yesterday, badly breaking it in X11. It would die horribly in a segmentation fault whenever I started it in graphical mode, even if I specified -q —no-site-file to make it skip all the configuration files. It worked just fine in console mode (-nw), but I happen to like being able to see images and different fonts in my Emacs, so that was a no go.
For a moment, I was worried that Emacs had finally outgrown my computer’s memory capacity. A little searching and some help on #emacs suggested that the problem might lie with fontconfig. I had removed a number of font packages in order to free up enough space for a system upgrade. Maybe that was the reason why Emacs was crashing on me! I tested it with this command:
emacs -q --no-site-file -fn '-misc-fixed-*-*-*-*-*-*-*-*-*-*-*-*'
and Emacs loaded. Whee! I added the following to my ~/.Xdefaults to
make this happen automatically whenever I start Emacs.
Life is back to normal.
Random Emacs symbol: planner-low-priority-task-face – Face: Face for low-priority tasks.
I’ve just added Postreach to my blog. That’s the row of little icons that shows up on my website. If you’re reading this through RSS, you can see this post for an example. It seems like a good way for people to leave feedback. Think some posts are cool? Click. Confused? Click. As a bonus, you’ll also get recommendations of other posts with similar ratings. Let’s see how this works out…
Random Emacs symbol: custom-browse-only-groups – Variable: If non-nil, show group members only within each customization group.
Day 2. So far, so good. I did another fifteen minutes of core
exercises today: five minutes of crunches, five minutes of leg raises,
and five minutes of push-ups. Granted, there’s a fair bit of resting
in those five minutes, but I feel better about this than about making
it to X crunches (that just makes me feel guilty when I rest!).
Tomorrow, I’m going to try reps until failure.
Random Emacs symbol: w3m-process-start – Function: Run COMMAND with ARGUMENTS, and eval HANDLER asynchronously.
While reviewing the volunteer application form for a charity that I’m
thinking of supporting, I grew uncomfortable with the confidentiality
agreement. In particular, I resisted the idea of treating it as “work
for hire” and assigning all my rights to whatever ideas, material, or
processes I might develop while I’m volunteering.
I’ve come to value the ability to come up with ideas, write about my
experiences, and learn from other people. I want to avoid constraining
that freedom. Just as software developers may take special precautions
not to taint their minds with code that they can’t reuse so that they
can avoid questions about the code they produce, I may need to avoid
experiences that add complications to my ability to share and learn.
Private, confidential, or copyrighted material is relatively easy to
delineate, but what about insights and advice? If someone’s question
prompts me to collect advice and to write an article that I’ve been
meaning to do for a while, would I be unable to republish that article
even after removing sensitive information? Maybe that’s the price
other people pay to gain experiences they wouldn’t otherwise have, but
if I can get similar experiences elsewhere…
Random Emacs symbol: pcomplete-command-completion-function – Variable: *Function called for completing the initial command argument.
The multiple-terminal support in Emacs 23 (CVS) means that I can leave
my main Emacs session running on my laptop, connect to it from the
desktop using SSH, get a graphical display on a big screen, and still
be able to use my laptop if I decide to go off wireless. It also
allows me to fake having a dual-screen Emacs setup. =) Very happy.
This will be good for when I’m writing WickedCoolEmacs, too.
I used the great scripts from Enigma Curry: Multi-tty Emacs on Gentoo and Ubuntu to make it painless.
Random Emacs symbol: pcomplete/eshell-mode/eshell-debug – Function: Completion for the `debug’ command.
Most of my notes are in Emacs Planner. Handy commands like M-x
remember help me quickly take notes and write down ideas, saving the
text to my blog.
While reading the manual for Org, another PIM for Emacs (yes, another
one!), I decided to give it a try. Org uses Remember, the same quick
note-taking module that Planner does. I wanted to set up Emacs so that
I could remember a note and have it go either to my Planner-based blog
or to my notes file.
M-x remember is a two-step procedure. First, Remember sets up the
buffer and inserts the annotation. After you write the note and press
C-c C-c, Remember passes the note’s contents to a handler function.
Because Planner and Org have incompatible annotation functions and
destinations, I needed to override both.
Here’s how I did that:
(defun sacha/remember-to-org () (interactive) (let ((org-directory "~/path/to/my/orgfiles/") (org-default-notes-file "~/.notes") (remember-annotation-functions '(org-remember-annotation)) (remember-mode-hook (cons 'org-remember-apply-template remember-mode-hook))) (remember) (set (make-variable-buffer-local 'remember-handler-functions) '(org-remember-handler)))) (global-unset-key [f9 ?o]) (global-set-key [f9 ?o ?r] 'sacha/remember-to-org) (global-set-key [f9 ?r ?o] 'sacha/remember-to-org)
I’ve set up Remember to work with Planner by default:
(setq remember-handler-functions '(remember-planner-append)) (setq remember-annotation-functions planner-annotation-functions) (global-set-key [f9 ?r ?p] 'remember) (global-set-key [f9 ?p ?r] 'remember) (global-set-key (kbd "
r SPC") 'remember)
I’ve added plenty of keyboard shortcuts to see which ones feel the most natural.
I’m looking forward to playing around with this and seeing what works!
Random Emacs symbol: tty-color-define – Function: Specify a tty color by its NAME, terminal INDEX and RGB values.
Canada’s skilled worker point system includes points for language
proficiency, which can be proved either through a letter or through a
standardized test. I decided to go for the standardized test so that
it wouldn’t be a potential hiccup in my application. The most
convenient option seemed to be the IELTS. I did that test today.
The IELTS wasn’t difficult, although the writing section was somewhat
tiring. I had just enough time to do a little composition and
revision. I’m reasonably happy with the quality of the essay that I
wrote. The speaking test was a lot of fun, too. The questions asked
happened to be related to a topic that I’d read a lot about lately, so
I not only had a strong opinion, but the facts to back it up. ;)
W- and I enjoyed joking about the test preparation. A website I
checked out last night advised strategies such as using “high-quality”
words in the essay portion in order to impress examiners. “Apropos”
was one such “high-quality” word proposed by the website. Although
I’ve been teased about my vocabulary before, I don’t do it to sound
educated, and I refuse to use the word “utilize” when “use” is fine.
We had much fun making up sentences with lots of buzzwords and jargon,
though! (Should be good preparation for IBM! ;) )
Random Emacs symbol: c-nonlabel-token-key – Variable: Regexp matching
things that can’t occur in generic colon labels,
The highlights of my week were the conversations I had. From hot
chocolate at Farcoast with Driss (whom I’d last met at the Wikinomics
event in February) to hot chocolate at Linux Caffe with Michael (whom
I’d just gotten to know over blogs and e-mail) to tea with Ian and
Gabriel, my week was just packed with interesting conversations. Add
to that the e-mail conversations I’ve been having and the connections
I’ve made… wow. Great week learning more about this connecting
thing. =) More thoughts on that later.
My work permit arrived! I’ll be starting on Oct 15. I also took an
English language test to prove my proficiency for the skilled worker
permanent residency application, and I renewed my social insurance
number as well.
Reading and writing – I’ve been catching up with a number of
Enterprise 2.0 blogs. Because Google Reader allows you to view past
blog entries by scrolling down, it was easy for me to read, say, all
of Luis Suarez’s posts on Elsua.net. I’ve
also been working on my book. Less writing this week, more playing
around with Emacs. I took another look at Org-mode and realized that
it has a number of cool features that I’d wanted to do in Planner, so
I might move more of my config over—maybe even make it more of the
focus of my book, as it’s built into recent versions of Emacs.
Speaking of code: I added many features to my interviewbot in Second
Life. I sent the latest version to Stephen Perelgut. It includes a
factory that creates an interviewbot based on a stored notecard and
personalized for a particular avatar.
I tried out the static trapeze last Tuesday. Although the static
trapeze was closer to the ground than the flying trapeze I tried a few
months ago, I found it scarier because I didn’t have a safety harness
on and had to rely on the instructor spotting me. I didn’t complete
the two-hour lesson because my hands hurt so much that I couldn’t hang
on to the bars, but that’s just because I haven’t developed calluses.
It’s great exercise and upper-body conditioning, though, and I’m
looking forward to going back next week. Thinking of the trapeze has
also helped me build more exercise into my daily schedule. Today I did
100 crunches, which will come in handy when I need to get my knees up
and over the bar!
As for cooking: we made lemon chicken last Friday, and we made
sinigang today. Yummy!
Random Emacs symbol: combine-after-change-execute – Function: This function is for use internally in `combine-after-change-calls’.
Writing a book about an open source editor and its extensions is
difficult. I want to describe many of the things people can do in
order to customize and make the most of Emacs, but I don’t want to
just rewrite the manual. I find myself summarizing a few bits and
expounding on others.
The key thing I want to add to this is excitement. I want people to be
able to *see* what these changes result in and how those changes will
improve their productivity or make them happier. ;) (Tall order for a
text editor!) I want this book to be less about a laundry list of
things people can do and more about looking over geeks’ shoulders and
being inspired to hack and learn more. That’s the kind of book I want
to write: a book that makes people go, “You can do that with Emacs?!”
I want to write a book that convinces people to spend some time
exploring the limits of their software (even vi!), because hidden
features can totally rock. I also want to write a book that shows how
all these little things combined can be absolutely cool, the way my
Planner+BBDB+Gnus+everything-else combination works out really well
for me. The whole is more than the sum of its parts.
I sometimes find it hard to hang on to that thought when I’m reading
the user’s manual and trying to make sure I’m covering the essentials.
I find myself writing from the point of view of the software instead
of from the point of view of the user. What I need to do is to focus
on the user’s story, on the problem or idea or opportunity. *Then* I
can write about solutions for that. I think I need to change the
outline I’m working with—it’s too software-centric.
It doesn’t have to be a perfect book, but I want it to be exciting and
Random Emacs symbol: tramp-uudecode – Variable: Shell function to implement `uudecode’ to standard output.
People often wonder where I find the time to read books. I wonder if
I’ll ever have enough time _not_ to read books. I get so much out of
them, including incredibly rich conversations with new friends. Here
are two examples from just last week.
I met Driss Benzakour for coffee at
Farcoast last Wednesday. I had first met him at the Third Tuesday
event in February that featured Wikinomics co-author Anthony Williams,
but hadn’t heard from him since then. He got in touch with me because
he was looking for a job, came across my contact information in his
notebook, learned I was joining IBM, and thought I might have some
tips to share.
When I learned that he was interested in consulting, I mentioned a
great book I’d read recently:
Flawless Consulting. “By Peter Block,” Driss said, nodding. Having thus performed the secret handshake of booklovers, we proceeded to talk about a great number of books. I’d mention one of my favorite books, and he’d show the audiobook he’d downloaded from
Audible.com. I scrolled through the list of books he’d listened to, and suggested a couple more. Knowing common books allowed us to take shortcuts in our conversations. We could refer to concepts without explaining them all over again, and we could talk about combinations of book ideas. It was a fun and energizing chat, and we talked about far more than we could’ve if we didn’t have common books.
A similar thing happened when I met Michael Nielsen of the Perimeter Institute in Waterloo. Michael showed me a website full of awesome book reviews by one guy with very diverse reading tastes. I said, “He’s building a syntopicon!” Michael guessed that I’d read the classic How to Read a Book. Secret handshake!
Books are terrific. They offer some of the best excuses to connect and
keep in touch with people. If I didn’t read extensively, I’d have to
work much harder at finding common ground and following up with
interesting thoughts! <laugh>
Random Emacs symbol: Info-follow-nearest-node – Command: Follow a node reference near point.
That’s what we had for Thanksgiving dinner. I borrowed W-‘s camera to
take the shot, as his was already all set up. This picture used the
room light and an external flash unit placed diagonally in front of
the pan. I like how the background is nice and soft, the roast is
detailed, and the mashed potatoes are cheery but not overwhelming.
If I could shoot this picture again, I’d add another flash behind the
roast in order to add more definition. I’d also find a way to minimize
the shadow cast by the front edge of the pan, perhaps by raising the
front-diagonal flash or increasing the toplight. I’d get rid of that
sprig of whatever that is in front of the lamb, too. I’d also increase
the depth of field by changing apertures so that more of the roast is
W- and I enjoy cooking and taking pictures of food. We usually have
time to get a few shots in before hunger sets in. <laugh>
Random Emacs symbol: mail-parse-charset – Variable: Default charset used by low-level libraries.
The raw skin under my ripped blister glistens next to the red and
tingling mounds on my palm, where calluses are beginning to form.
Despite the lingering sensitivity, I’m glad I went to trapeze class
this evening, and I can’t wait to go back as soon as the blister
I’m not there for the pain—who, me? I’m there for the thrill I get
when I set myself a challenge and make progress towards it. I’m there
because I love seeing the other two students try, fail, try again,
learn, and perform, and I want to be able to that too. I’m there
because the things I imagine myself doing once I have more experience
(and thicker calluses!) make it easier for me to get through my daily
exercise routines. I’m there because trapeze scares me, but in a way
that I can overcome that fear.
Today I managed to get my knees over the bar entirely on my own. It
took me one and a half sessions to learn how to do that with plenty of
help from Mark, the ever-so-patient instructor. I learned to swing my
knees up, contract my abdomen, and extend my knees. I learned to
engage my shoulders by tensing them, but not too much. I learned how
to trust myself to hang on while I allowed my legs to swing back,
pendulum-like, around my center. I learned how to bend into the swing
on the way forward, pulling my legs as high as they could go. I
learned to flex my toes in order to clear the bar. And I learned to
stop thinking so much and just do it… <laugh>
I know I’m probably going to forget many of these things and re-learn
them during the next lesson and the next lessons after that, but
that’s okay—learning is part of the fun of it all.
Random Emacs symbol: mm-default-file-encoding – Function: Return a default encoding for FILE.
Looking at http://crazedmonkey.com/toronto-transit-map/ , it seems that I have a couple of ways to get up to 3600 Steeles Ave E, Markham:
The general impression I get is that taking public transit up there
sucks horribly. It’s close to 8200, so I might be able to hitch a ride
with W-, but I’ll need a way of getting up there on my own as well.
Makes me wish I’d started my driver’s license process sooner.
First, I need to find a carpool. Second, I need to test ways of
getting up there by TTC. Third, if it means spending three to four
hours commuting each day (sniff!), then I need to find productive ways
to spend that time. That’s a _lot_ of time.
Hmm. Some hauling may be required. I should ask Gabriel what his
Random Emacs symbol: nntp-nov-is-evil – Variable: *If non-nil, nntp will never attempt to use XOVER when talking to the server.
As part of my research for WickedCoolEmacs, I’m exploring Org, the PIM
that’s now built into Emacs 22. I like the way it handles outlines,
and the remember templates are handy too. I also like the dynamic
I miss some things about Planner, though. I miss the way I can just
move tasks around in Planner, grouping them together as I organize my
day. I miss the way it was easy to publish a day view that included my
tasks and my notes. I miss little conveniences like +2tue . Maybe I
can hack some of those in. I want to avoid turning org into something
it isn’t, though.
I need to find people who live org and how they do it. John Wiegley’s excellent blog post on using org-mode as a day planner is a good start. Who else is a power user of org? Must read the mailing list to find the tips and tricks people have shared…
Random Emacs symbol: ido-report-no-match – Variable: Report [No Match] when no completions matches `ido-text’.
Tested the trip up to 3600 Steeles today. It was okay, although I’ll
need to wake up earlier.
Backed up my files, cleared my password, and turned in my badge.
Chatted with Stephen Perelgut and Kelly Lyons while I was at CAS, too.
Dropped by university. Keeping in touch. Will be an extraordinary
alumna, helpful and everything. <grin> This will be fun.
Did some shopping. Still have many items on my list not checked off.
Oh well. Will look for them again in two or so months.
Did some writing.
Need to streamline my sched.
Random Emacs symbol: message-setup-hook – Variable: Normal hook, run each time a new outgoing message is initialized.
The static trapeze lessons I’ve been taking are tons of fun and great motivation to exercise more. (11 straight days of exercise!)
Here are a couple of other classes that might be useful:
On Technorati: health
Random Emacs symbol: mule-version-date – Variable: Distribution date of this version of MULE (multilingual environment).
One of the interesting side-effects of writing this book on Emacs is
that I get to stretch my brain by trying out different ways to plan my
My Planner configuration had accreted to just the right kind of
support over the past five years, and I’ve been using it without
needing to think about it much That’s part of the reason why it works
so well for me. It’s just part of my workflow. It has molded my brain,
and vice versa. ;)
I’d like to write a really good chapter that also shows the best of
org, so I’m going to either have to _think_ org, or find someone
(talkative! ;) ) who does.
Right now, I’m working on how to use Emacs to manage schedules. I’m
running into interesting differences between Planner and Org, and
these differences give me a better appreciation for both.
In Planner, I’m used to scheduling a slew of tasks at a time and
moving things around a bit, ordering and grouping my tasks visually.
In Org, I don’t have the ability to manually edit the agenda view, but
I do have the ability to pull tasks in from lots of different
locations. This doesn’t quite support my old way of planning, but
opens up new ones.
Here’s what I’m learning in order to do things the Org way:
Random Emacs symbol: cos – Function: Return the cosine of ARG.
Riffing off P.F. Hawkins’ post on how he came to love Emacs, let me tell you my story. =)
I wasn’t always an Emacs geek. I remember giving it a shot and finding
out that I much preferred vim or even pico -w. I don’t remember much
else of my pre-Emacs days, though. I do remember the turning point.
While browsing in the library stacks at my university, I found a copy
of Unix Power Tools. It described Emacs, so I decided to give it
another try. I got hooked.
The key thing for me was the exposure to Emacs Lisp. Unix Power Tools
gave all sorts of tips, often accompanied with Emacs Lisp code to put
in your ~/.emacs. So I thought, hey, this might be fun to learn.
I read the Emacs Lisp intro manual. I read the Emacs Lisp manual. Then
I started reading all the source code I could find, frequently
referring to the help files in order to understand something. I
learned about C-h f (describe function) and the ability to jump to,
trace, and modify practically any bit of code in my text editor. My
universe blew wide open.
Several years and several thousand lines of config later, I’ve got a
text editor that fits me like a glove. The people I’ve met, the things
I’ve learned, the crazy ideas I’ve tried… What would my life be
without Emacs? It’s really kinda odd to say that about a piece of
software, but yes: Emacs has changed my life.
What’s next for me? Well, I’m working on that book. I hope it’ll be as
mind-blowing as Unix Power Tools was for me. I hope it’ll help people
discover more and get excited. I’m learning more about the things
people can do with it and I’m playing around with other crazy ideas,
particularly for contact management and personal information
management. I also want to bring this kind of customizability to other
applications. Maybe I’ll try it with Lotus Notes, which I’ll need to
use for work anyway. But Emacs, ah, Emacs… How do I love thee? Let
me M-x count-the-ways!
Random Emacs symbol: eshell-login-script – Variable: *If non-nil, a file to invoke when starting up Eshell interactively.
After a little bit of
about Org and Planner]], I’m starting to feel more comfortable with
the chapter that I’m writing. I pasted my draft into OpenOffice and
found to my surprise that I have about 13 pages of content, with 7
more to go.
I’m comfortable working with the book as an org outline, and I really
love how it lets me navigate the outline and mark segments as TODO or
DRAFT. I think I’d rather draft it in Emacs than in OpenOffice.org,
where I’ll be tempted to fiddle with formatting and editing. I’ll use
longlines-mode to draft my book so that I can paste it into OpenOffice
for a rough idea of the page count, but that’ll be my only concession. =)
I’ll put the chapter together before sending it to beta readers, which
would basically be the people who’ve e-mailed me or commented on my
book-related blog entries. If you want to be a beta reader, now’s a
good time to volunteer! It involves reading rough drafts and going,
“Ooh, that _is_ cool,” or even better, “Hey, you missed this totally
awesome Emacs trick…” =) Encouragement will help keep me going, too!
Random Emacs symbol: w3m-encoding-type-alist – Variable: *Alist of
file suffixes and content encoding types.
Ian Irving was kind enough to not only introduce me to a wonderful little cafe (Lou’s Coffee Bar at Runnymede and Annette) and share his insights on consulting and tech evangelism, but to also sit for a portrait by this amateur.
Good side-lighting. Yay dimples. =) I also like the background – the
exchange bookshelf at the cafe. I cropped this one really tight, which
improved the composition a bit.
Next time I take a picture, I’ll spend a little more time trying to
make sure it’s in focus.
Not bad for a quick shot, though. =)
Random Emacs symbol: w3m-arrived-put – Function: Store VALUE in the arrived URLs database as the PROPERTY of URL.
I’m not afraid of heights, just falling. I _enjoy_ the challenge of
speaking in front of people or turning up in a room full of strangers.
But falling? Losing my balance or grip? Scares the heck out of me.
Precisely why I’m taking trapeze lessons, of course. Perched
precariously some six and a half feet above the ground, dangling
upside down and wondering if my grip’s about to give, resolutely
ignoring the pain shooting up from my blistered left hand, I can
_still_ focus and learn, and I _love_ that. It’s ever so satisfying to
feel that frisson of fear and _work through it anyway._
I love setting little goals for myself. Last Tuesday, it was being
able to hook my knees on the bar all by myself. We made slow progress
as I learned things piecemeal, but I did it. And I’m coming to love
failing, too, to love knowing that I have a lot to learn. Learning
means putting together all these things that you can’t quite describe,
you just have to _do_. When my toes don’t quite clear the bar or my
legs feel kinda wobbly, I love being able to take a step back in my
head and try to figure out what’s happening and what I want to happen.
Today I managed to hold the upside-down-legs-over-head position using
the lines. I also made it up to a sitting position! Next session, I
want to make it up there with very little assistance. I want to
smoothen my motions, too.
Plenty to learn, plenty to learn…
For once, my random Emacs symbol is strangely apropos. There will
never be enough time in the day, and it’s easier for me to say no to
low-value tasks if I have other things to do. Here are my best-value
tasks over the next few days:
These are my essentials for this weekend. It’s like the way you manage money: plan for the important stuff first before you spend on luxuries. =)
Random Emacs symbol: schedule-day-remainder – Variable: The number of seconds remaining today.
Michael Nielsen pointed me to
The Happiness Project, a terrific blog/project by Gretchen Rubin. Last August, Gretchen realized that she wasn’t just doing the Happiness Project; she was a happiness evangelist. Isn’t that the best title ever? =)
Random Emacs symbol: url-gateway-method – Variable: *The type of gateway support to use.
Michael Nielsen is also responsible for telling me about How to Make a Complete Map of Every Thought you Think, a book about the clarity that comes when you record everything you think. That’s way more than I’m doing right now. Fascinating, though! More about this after I read the book. Random Emacs symbol: apropos-sort-by-scores – Variable: *Non-nil means sort matches by scores; best match is shown first.
Here are notes from a conversation I had with Ian Irving on technology evangelism.
Ian Irving had plenty of stories to tell about the time that he was
helping companies adopt Lotus Notes. As a technology evangelist, his
job was to not only show people how to set up their e-mail
infrastructure, but also to help them adjust to the cultural changes
facilitated by these technologies. He told me how he would switch to a
new, unfamiliar office every week with the mandate to find the key
influencers and help them adopt e-mail. He also told me how different
companies had different cultures that either helped or hindered this
adoption, and had similar problems that motivated the exploration of
possible solutions. Although companies believe their business problems
to be unique, a consultant with a wide variety of experiences can
create much value by seeing patterns.
One of the key things he did as a consultant was to translate the
technology into human terms. “I was a talker to suits,” Ian explained.
Technologists have a tendency to focus on the software or tool, and to
try to give as much information as possible. Ian consciously developed
the ability to talk to business people who had other priorities and
perhaps less technical backgrounds. It was important to realize that
they didn’t need to know all the technical details, and that
overwhelming them with data would be counterproductive. Recognizing
his tendency to over-communicate, he adopted the habit of asking
people what level of information they needed, and frequently checking
if he’d said enough.
His experiences helped me remember that with all the fuss about Web
2.0 and the next generation workplace, it’s easy to forget that
similar widespread changes have happened before. While e-mail and
intranet instant messaging are now entrenched in company culture, they
weren’t always that way. Stephen Perelgut
told me how he once conducted a workshop for people learning how to
use Lotus Sametime, IBM’s enterprise instant messaging system. Like
other technologies such as the telephone, these things were once new
The conversation with Ian Irving helped me
learn more about one of my favorite professions. I’m glad he shared
those insights with me. And to think that that conversation came about
just because I wished him a happy birthday the other day… People are
amazingly helpful! =)
Try sitting down for coffee with one of your role models. You’ll learn
a lot, too!
I had *awesome* conversations again this week. I greatly enjoyed meeting Jennifer Dodd, Jamie McQuay, and Hartwell Fong at Farcoast last Wednesday. We talked about so much: science outreach, Second Life, quantum computing… Then there’s yesterday’s conversation with Ian Irving about tech evangelism and consulting. This is amazing stuff. I want more people to enjoy these great conversations! =)
I’ve been getting ready for my job at IBM, which starts on Monday. I
checked the public transit route to 3600 Steeles, and
Stephen Perelgut is right: it’s not
complicated. I’m getting used to wearing grownup clothes, too! ;) Yesterday, W- complimented my pairing of a gray cashmere turtleneck with a gray dress. I’m finding myself drawn to neutral bases (white and gray for the most part, with a bit of black), and I’m now looking for a few accessories to add color and whats-it.
I made more progress on my book. I spent some time learning how to use
Org, and feel comfortable enough with it to write the section on
planning my day. I think I understand it now. I’m also comfortable
with planner-appt, and I’m going to recommend that over the little
hack I put together before.
This has also been a great week for exercise. I went to trapeze
classes twice thanks to W-‘s encouragement, and have successfully been
able to hook my knees over the bar or hold my legs extended over my
head without assistance. Whee!
My goals for next week are:
On Technorati: weekly
Random Emacs symbol: backward-delete-char – Command: Delete the previous N characters (following if N is negative).
I had a lot of fun at the rtlToronto LEGO contest today. All these
grown-ups (and one kid) had built robots that could swing from two
ropes suspended from a beam. The banter and the stories were
hilarious. Most robots were built around the same concept: motors and
gears swung a weight back and forth, similar to the way children swing
their legs in order to amplify their motion.
What made it even more fun was that I had suggested the swing
challenge to Wayne when he was brainstorming an idea for the LEGO
Challenge, so it was great seeing all these people make a crazy idea
of mine happen. <grin>
One of the club members told me that when the idea was raised over an
rtlToronto dinner, people laughed and said that it was going to be so
easy. Then a week before the contest, people started panicking. Trips
to the playground, physics tutorials on the Net, and sheer trial and
error helped these LEGO fans learn more about pendulums than they did
in high school. Just goes to show you that some things that kids can
do aren’t that easy!
Random Emacs symbol: term-input-ring-file-name – Variable: *If non-nil, name of the file to read/write input history.
I’m excited about the first day of work tomorrow. A little terrified,
yes, but I’m looking forward to the challenge. I am going to be the
best person I can be, because I’m going to spend that time anyway, so
I might as well do the best I can. Here’s a quote from Joe Calloway’s
book, “Work Like You’re Showing Off”:
Why would I conceivably not want to be the best I can be at whatever
I’m doing? I like the idea that whether I’m sweeping a street, weeding
my yard, playing drums in a band, teaching a class, taking photos at a
wedding, working as a customer service representative, selling
insurance, washing cars, running a company, being a personal fitness
trainer, bagging groceries, or writing a book that I take the
attitudee that I will knock your socks off with how I do what I do. Or
maybe it’s my own socks that I want to knock off. (p.72)
I’m looking forward to knocking my socks off. =) I’m going to learn a lot and
things won’t always be smooth, but I’m going to find and engage that passion.
On Technorati: career
Random Emacs symbol: emacs-iconified – Variable: Non-nil if all of emacs is iconified and frame updates are not needed.
This note from Mark A. Hershberger: http://hexmode.com/487848.html ,
and all the rest of the e-mail I’ve been getting from Emacs geeks… *glow!*
Now even just *thinking* about the book makes me feel all warm and
fuzzy and eager to write. Who knows what cool hacks I’ll come across
in the process? How wonderful can it be? =)
I promise to finish the raw text for the first chapter (planning your
day in Emacs) by this week, and I’ll get plain-text or formatted
drafts out to beta reviewers by next week. I can’t wait to see how
much better it will be once other people get their hands on it.
Questions, clarifications, cool hacks, cheers… It’ll be so much fun!
I’ve always liked working on things that real people used. That was
one of the biggest reasons I *loved* maintaining Planner: hearing from
people how it helped them do something cool or made their day or helped them make someone else’s day… I love making people
happy, and I’m looking forward to doing that with this book. =) To all
the people who’ve written or who’ll write to me in the future—thank you for
stepping forward and letting me see *you* instead of just a nameless, faceless audience. Thank you for letting me write for you!
Like most (sane) graduates, I’m a little anxious about this real life
thing, but I’m confident that it will work out well.
I woke up five minutes before my alarm clock went off, which was good
because I still haven’t figured out how to make my alarm clock less
obnoxious. A trip to Ikea may be in order here. Still, waking up at
5:55 is a pretty cool thing for me. =) Looks like the week I put into
developing the habit of waking up early is starting to pay off.
I met with my manager and a team member today. My manager answered all
my questions, even the tougher ones. Now that I have an idea of how
I’m going to be measured (and equally important: how _he’s_ going to
be measured), I can keep an eye out for useful ideas and opportunities.
I’ll stay up a little late today to do some work on my book, even just
10 minutes of sketching. It’s important to me to be able to spend a
little time on that every day, or I’m going to forget. <laugh>
Everyone finds his or her own balance…
Random Emacs symbol: mark-calendar-month – Function: Mark dates in the MONTH/YEAR that conform to pattern P-MONTH/P_DAY/P-YEAR.
It would probably be a good idea for me to move my trapeze lessons to
Fridays, or to keep practicing until it becomes more relaxing. I need
to create more space in my day for reflections and interesting
Random Emacs symbol: gnus-id-to-thread – Function: Return the (sub-)thread where ID appears.
I really do need seven or eight hours of sleep. Otherwise I get a
little twitchy. I still managed to be pretty productive today, but I
felt a little sporadic tic in my forehead, and working on my book in
the evening was a struggle. No energy to respond to mail right now.
But work is lots of fun, though. =)
I’m going to block off tomorrow evening for resetting. I need to make
sure that I’m in the right space both at work and outside work,
otherwise it’s not going to be sustainable.
Also, those sunrise clocks are expensive! I wonder if I should save up
for one. Are they worth it?
Random Emacs symbol: c-backward-token-2 – Function: Move backward by tokens.
It’s Friday already? It can’t be Friday yet. There’s still so much I
want to do. =) I enjoy my work and I like the people I’m working with,
and I can’t wait to start again on Monday.
I need to get more efficient at getting out of the house (a quick
breakfast and an already-made lunch) so that I can get home earlier. I
also need to adjust my plans for what I can do in the evenings. I
don’t have four hours of uninterrupted creative time and I’m still
thinking about work stuff, so I need to plan carefully.
The best thing to do is probably to blog during weekday evenings, and
hope to gather content for the book. I’ll save Saturday and Sunday
mornings for the creative heavy lifting, and Saturday afternoons as
well. That’s not nearly enough time. Maybe I should postpone all of my
There’s lots to improve on. I think I’m figuring out a good way to
stay energized throughout the day. I just need to be able to close the
loop on that one. =)
I’ll spend some time thinking about how to manage things and improve
the process this weekend. Things are good.
Random Emacs symbol: kmacro-call-mouse-event – Variable: The mouse event used by kmacro to call a macro.
Okay, my estimate of this week for the raw text of my first chapter
(planning your schedule in Emacs) may have been optimistic. =) I
haven’t been able to do any real writing at all this week. I’ve been
adjusting to work, and I’d rather spend this weekend sorting things
out and making next week easier. I’m not going to stress out about it.
It’s a good thing I scheduled two months for the first chapter. =)
So, new goal. First, I need to smoothen this going-to-the-office
business. Here are few things I can do to make next week easier:
I want to be able to write at least one Emacs-related blog entry
sometime during the week, so this will require some time-squeezing…
Random Emacs symbol: nnir-current-group-marked – Variable: Internal: stores current list of process-marked groups.
This week, I focused on getting on board at IBM. I’m happy to say that
the process was very smooth, and I’m now deep in work doing things I
love to do for a project that I believe in. How lucky is that?
<grin> I love my work!
I’m also happy with my work-life balance. I’ve been able to do good
work *and* enjoy a good home life as well. I don’t feel that I’m
losing out at all. This feels sustainable, and that’s important. As I
tweak parts of my day, I’ll be able to free up more time and
brainspace for personal projects.
I went to trapeze lessons last Tuesday. The class was fun. I think
I’ll move my trapeze lessons to Friday so that I can make my week a
little more relaxed.
Richard Eriksson was in town, so I
invited him over for tea and loaded him with little gifts for Quinn.
It was nice to chat with him again. =) I also had tea with
Driss Benzakour, braindumping a whole
bunch of job search tips from my recent experience.
Goals for next week:
Random Emacs symbol: cdr – Function: Return the cdr of LIST. If arg is nil, return nil.
Mike Mattie has this awesome Emacs tip for
Eshell: redirecting to buffers and Lisp symbols!
To overwrite buffer “foo”:
ls > #<buffer foo>
To append to buffer “foo”:
ls >> #<buffer foo>
To insert at point in buffer “foo”:
ls >>> #<buffer foo>
To redirect to a Lisp symbol:
I had no idea Emacs could do that. Cool!
E-Mail from Mike Mattie
Random Emacs symbol: ps-extend-face-list – Function: Extend face in ALIST-SYM.
Thanks to David Ongaro for catching that!
I joined Aaron Kim and Bernie Michalik’s team in IBM last week, and I
*love* what I’m doing. It’s such a terrific fit with what I’m
interested in and what I want to get really good at. I’m helping
people discover the benefits they could get out of emerging
technologies, and I’m looking for good practices we can share with
other people. And it’s amazing just smoothly sliding into the role,
with my network already in place… =) Happy happy happy.
It’s a little bit scary sometimes, too, this being a little bit
famous. I dropped into a Lotus Connections workshop earlier because I
was curious about who might be there. I liked the story Kathryn
Everest told about how she came to appreciate Dogear, and I wished I
could explain things as clearly as she did. <laugh> Then she
went on to say that in organizations, there are usually people who are
avid whatever-ers, people who bookmark thousands of sites and whose
bookmarks are useful. And then she cited me! That makes me feel warm
and fuzzy. And it challenges me a lot, too. There are many
opportunities just waiting for us to step up to them. That’s the scary
part, but it’s also the fun part.
So here’s what I want to get *really* good at:
I want to find or make good practices, and I want to spread them to
the people who can make the most of them.
I love sharing cool tips that solve people’s problems or help them
imagine other things they can do. I can find cool tips by coming up
with them on my own, but the best and most fun way for me to do this
is to catch other people doing good stuff. I can bring out their
experiences with my questions, write about and spread their advice,
and bring them other ideas as well.
I can spread good practices through articles, tutorials, podcasts, and
presentations. I want to know my audiences well, and to be able to
customize this content to address their particular concerns.
I want to do this for both internal and external people. For external
clients, I can bring the good practices we’ve found within our company
and at other companies, and I can help them adopt the ones that make
sense for their organization.
Hey, that’s interesting… Maybe I’m not a technology evangelist. I’m
a practice evangelist! (Gotta find a better way to describe that.)
Random Emacs symbol: display-time-mode – Command: Toggle display of time, load level, and mail flag in mode lines. – Variable: Non-nil if Display-Time mode is enabled.
Now that I’ve joined the wonderful world of the office workplace, I
find myself missing my Emacs-based life.
I miss using Emacs to manage my day. There’s something about being
able to open a text file and type in a line to create an appointment.
It’s clean and it’s simple.
Hmm. Maybe I’ll bcc myself on event invitations and I’ll just parse
that into my calendar. Maybe I’ll install Emacs on my work computer
and figure out how other people are doing their synchronization.
(Maybe I’ll write an Emacs interface for Activities! Well, that
would be the day… ;) )
Why do I like managing my schedule in a *text editor*, when there are
perfectly good groupware clients out there?
First, I really love the keyboard-friendly interface of Emacs. Don’t
get me wrong: C-x C-c is hard to type even on my keyboard, and
keyboard combinations involving Ctrl *and* Meta at the same time are
Not Fun. But it’s easy to define new keyboard shortcuts, and the
commands themselves don’t require any mouse movements. There are no
complicated fields I need to TAB through. Everything can be done
practically without looking. This is good for me.
Second, I like the customizability of it. If I invested some time
figuring out how to extend Lotus Notes 8 and I put up with the
edit/compile/run cycle, I might be able to get the kind of custom task
sorting and schedule highlighting that I have in my Emacs. Here’s what
tweaking looks like under Emacs:
Random Emacs symbol: muse-colors – Group: Options controlling the
behavior of Emacs Muse highlighting.
For the longest time, I was using my task list to manage my
appointments. It was really easy to do that with a custom Planner
task-sorting function. This is the function I used on day pages:
(defun sacha/planner-sort-tasks-basic () "Sort tasks by time (@1030, etc), priority, and status (oP_>XC)." (let* ((info (planner-current-task-info)) (status (aref (planner-task-status info) 0))) (concat (if (or (eq status ?X) (eq status ?C)) "Z" ; Completed and cancelled tasks go last " ") ;; Sort by time (or (and (string-match "@[0-9][0-9]:[0-9][0-9]" (planner-task-description info)) (match-string 0 (planner-task-description info))) "@9999") ;; Sort by status: in progress, postponed, ;; open, delegated, completed, cancelled (cond ((eq status ?o) "1") ((eq status ?P) "2") ((eq status ?>) "4") ((eq status ?X) "5") ((eq status ?C) "6") (t "3")) ;; A, B, C (planner-task-priority info)))) ;; Here's how to make that your task-sorting function, although ;; mine actually changes function on plan pages (setq planner-sort-tasks-key-function 'sacha/planner-sort-tasks-basic)
This worked because I generally had few appointments and I didn’t use
M-x plan to carry unfinished tasks forward. If I did, then I’d
probably get hopelessly confused. =)
That’s because I was keeping track of several different things using
the same syntax. Appointments are typically scheduled for a specific
day and a specific time. It doesn’t make sense to carry them over to
the next day if you don’t mark them done. In fact, it makes very
little sense to mark them as “done” or not, as you just show up to
them. Granted, I used my task list to also keep track of (and
publish!) events that I’d meant to go to but decided not to, so
“cancelling” still made sense. But carrying stuff over to the next
day? Not really.
I used my task list to keep track of people’s birthdays, too. That
didn’t really work out too well either, because I had to remember to
copy the task and date it for the next year. It was good for keeping
track of whose birthdays I’d remembered to recognize, though. Still,
setting up planner-cyclic would probably have been a good idea.
And I also used my task list to keep track of tasks, of course. I very
much preferred thinking in terms of tasks rather than appointments.
The action orientation’s better for me, I guess. So my task list for
each day would have plenty of tasks, some of which I *needed* to do
that day, and others which I thought it would be nice to do that day.
I like reviewing my tasks during the night before, or over breakfast.
I go through my tasks and appointments and figure out what makes sense
to do when. Sometimes I estimate how long tasks will take. Then I
shuffle the tasks around with keyboard shortcuts until I’ve got
similar tasks grouped together. Yes, I know, I *could* just visually
scan the list to see what I can do next, but I like sorting all of
that beforehand and then methodically going through this list. This is
something I still haven’t quite figured out how to do in Org or Lotus
Notes. Maybe it’s a Planner quirk of mine.
During this day-sorting, appointments are usually the only things with
timestamps on them. Sometimes I’ll add timestamps to my tasks as well,
to give myself a clearer feeling about the time boundaries.
So what my schedule looks like throughout the day is a mish-mash of
tasks and appointments and events (completed, in progress, blank,
cancelled), but it works for me because everything’s in one place and
I don’t even need to look to the side.
I haven’t been able to keep that up to date recently because I now
have a separate work computer, but once I set Emacs up on my work
computer, I might get back to that kind of comfortable arrangement.
It’s either that or learn how to tweak Lotus Notes, which seems kinda
Random Emacs symbol: c-mode – Command: Major mode for editing K&R and ANSI C code.
That’s what Stephen Perelgut and I came up with: business practice
maven-wannabe. I want to get really good at observing people and
bringing out the best things about the way they work, or taking new
technologies and figuring out good ways to use them. I also want to
get really good at spreading these practices to other people,
tailoring my message for specific groups. Like a business practice
evangelist, except it isn’t just one business practice and there’s a
lot more listening. “Business practice maven-wannabe” is the best way
I have so far to describe this. Can you think of a better one?
Terminology is very important. If I can find the right words, then
I’ll find other people and resources, and we’ll all have “aha!”
moments. If I choose the wrong words, then _I’ll_ get muddled about my
own vision. All sorts of benefits will come when I can get that
concept nailed down and I can focus on becoming an expert at it. Also,
if I have a big-picture view, then I can work through all sorts of
challenges because I can see how they help me move towards my goal.
What do I see myself doing? In the beginning, I’d like to start out
with working with individuals or small groups, helping them make the
most of technologies I’m familiar with. Blogs, social bookmarks,
wikis… there’s plenty of material. Even e-mail has plenty of
cultural practices that could make people’s lives easier.
Then I want to adapt to new technologies. As I get to know my target
audiences (there’s never just one!), it’ll be easier for me to think
about new technologies and how those technologies could fit into
Then I want to scale up in terms of subject: not just technology, but
the business practices that surround the use of tools. I want to scale
up from people and small groups to organizations. I want to help
organizations explore new ideas and manage change.
If I learn how to influence companies, I might learn how to influence
industries. Success at that level could be about the changes creating
enough competitive advantage for the company that its competitors
What do I enjoy about all of this? First, I *love* helping people work
more effectively or do a better job or simply have more fun with what
they do. I can start off by minimizing the irritants and then move on
to expanding people’s capabilities and inspiring their imagination.
Second, keeping an eye out for best practices means I’m constantly
learning from other people about interesting ways of doing things, and
I *love* that feeling of being surrounded by brilliant people. Third,
I enjoy infecting other people with my enthusiasm. Tons of fun, that.
So I want to get really good at this, because the better I am at it,
the more fun I’ll have.
What kinds of companies and projects would help me move towards that
goal? If I can get the hang of doing internal evangelism, and then
turn around and do that for our clients as well, that would be a good
place to start.
How can I measure my effect, the value I provide? Time saved?
Adoption? Sustained adoption? Testimonials? Customer satisfaction?
More about metrics as I think about these things.
So that’s my big-picture view going ahead. Exciting stuff!
Random Emacs symbol: muse-publish-contents-depth – Variable: The number of heading levels to include with tags.
If you spend a lot of time in Emacs—writing code, reading mail,
saving the world—then it makes sense to manage your schedule in Emacs
Here are some productivity tips for getting the most out of Emacs scheduling:
On Technorati: emacs
Random Emacs symbol: custom-variable-p – Function: Return non-nil if VARIABLE is a custom variable.
If you set planner-day-page-template to a function. Planner invokes
the function when creating a new day page. This means that you can do
all sorts of stuff. For example, to include the day name in your day
template, add the following code to your ~/.emacs:
(setq planner-day-page-template (lambda () "Day page template for Sacha." (let ((date (planner-filename-to-calendar-date (planner-page-name)))) (insert (calendar-day-name date) "\n* Tasks\n\n\n* Schedule\n\n\n* Notes\n"))))
Let’s say that you wanted to have day-specific messages:
(setq planner-day-page-template (lambda () "Day page template for Sacha." (let* ((date (planner-filename-to-calendar-date (planner-page-name))) (day (calendar-day-of-week date))) (insert (cond ;; Day of week starts from 0 ((= day 0) "Woohoo! Sunday!") ((= day 1) "Oh no, it's Monday") ((= day 5) "T.G.I.F.!") ((= day 6) "I love Saturdays.") ;; The rest of the days (t "Is it Friday yet?")) "\n\n* Tasks\n\n\n* Schedule\n\n\n* Notes\n\n"))))
… although you might want to have a more upbeat way to think of weekdays. ;)
You could do lots of things to your day page template. You could
include one line describing your career goals into your planner every
weekday and one about your personal goals every weekend. You could use
fortune to include a random work-related joke or quotation during the
weekday and a fun-related one during the weekend. You can even include
text based on the current month or day or year, if you wanted.
It pays to learn Emacs Lisp. Crazy Emacs geeks like me
build all sorts of entry points for customization, so you’re really
just limited by your imagination. =)
Random Emacs symbol: w3m-toggle-inline-images-internal – Command:
Toggle displaying of inline images on current buffer.
On Technorati: emacs
There’s more than one way to plan your day in Emacs, just like there’s
more than one way to do everything in Emacs. The basic end of the
spectrum includes Diary, Calendar, and Appt. More sophisticated
modules include Org (part of Emacs 22) and Planner (available
separately). Then there are Emacs modules to export and import
calendar data to and from external programs, such as Remind.
If all you need to do is keep track of recurring events such as
birthdays and anniversaries, then Diary can be a good fit for you. All
it takes is one text file specifying the dates and descriptions of
one-time or recurring events, and one line in your ~/.emacs file to
display the diary entries for today whenever you start up. If you
switch to either Org or Planner later on, you can configure your Emacs
to include information from your old diary file.
If you find yourself wanting more integration with your task list and
your notes so that you can see everything related to the day, then
you’ll want to go for either Org or Planner. The choice between the
two depends on how you want to plan your day. …
If you’ve worked with a paper-based planner or a typical calendar application
for a while, then Planner might be a good fit for the way you think.
Planner has a strong day orientation. With Planner, you plan your
schedule in terms of day pages, and optionally cross-reference the
tasks with project pages. You can keep your schedule as plain text on
your day page, or you can follow the format suggested by Planner so
that your scheduled tasks and appointments will be added to Emacs’
appointment reminder system. Planner is similar to the scheduling
method of Franklin-Covey day planners and other paper organizers. I
like Planner because it’s easy to scribble notes onto my daily
schedule, just like I would pencil comments into my paper planner.
Org focuses on projects instead of days. With Org, you plan your
projects first, and then schedule specific tasks or appointments onto
your calendar. Your daily view is then dynamically generated from the
headlines of the outline nodes that are scheduled for the day. You
need to use a special format, but built-in commands make it easy to
create and edit timestamps. Org has great support for David Allen’s
Getting Things Done (GTD) productivity technique. If you think in
terms of next actions or outlines, Org is a good fit for you.
You can still think in terms of projects with Planner, but you’ll need
to remember to use the built-in commands for editing functions so that
your changes are also reflected in the day pages. You don’t need to
organize your Org file by project. You can throw everything into one
outline if you want. However, you’ll still need to use the
dynamically-generated summary view (org-agenda-list) to see your daily
or weekly schedule, and reading all the text associated with the day
could mean some jumping around.
If you haven’t figured out how your brain works yet, I recommend
starting with Org. I think that the project-based approach will
probably help more people out in the long run. I have to admit that I
love Planner and I’ve been using it very happily for more than four
years. I love being able to add all sorts of free-form notes while
going through the day, and Planner makes it easy to publish that as my
blog. (Automatically removing all my private notes, of course!) I’ve
gotten used to the way Planner works, and because of my extensive
modifications, Planner’s gotten used to the way I work as well. If
you’re starting from scratch, you might like Org’s better support for
projects, outlines, and overviews. Give Org a try first. If you find
yourself wanting more flexibility in your day view, try Planner next.
If you’ve tried both, I’d love to hear your thoughts on the
differences between them. I’m trying to figure out when one fits
better than the other because I’m working on a book called “Wicked
Cool Emacs”. I love Planner, I’m getting the hang of Org, and I’d love
to hear from other people who have given both a shot. =)
Random Emacs symbol: message-forward-decoded-p – Variable: Non-nil means the original message is decoded.
On Technorati: emacs
Whether you submit detailed timesheets to clients or not, it’s a good
idea to estimate and keep track of the time you spend working on
tasks. I find that this helps me focus on the task at hand, and the
schedule feedback allows me to get a better idea of how much time it
will take to do something in the future. It’s also a good way to find
out where your time goes, of course.
It’s easy to clock work time under Org. When on a TODO item, type C-c
C-x C-i (org-clock-in). Work on the task. When you’re done, mark the task
as done with C-c C-t (org-todo), which automatically calls clock-out.
You can also clock out of a task manually by calling C-c C-x Co
(org-clock-out). The elapsed time will be added to the task headline. To
review the time summaries for your project, type C-c C-x C-d
(org-clock-display). If you want to add notes when you mark a task as
done, add “#+STARTUP: lognoteclock-out” to the beginning of your file.
How would you use this to keep track of your day? One way is to
keep track of the difference between your planned schedule and your
actual schedule. Add time estimates to your tasks. For example,
** TODO 20min Respond to mail
could represent twenty minutes of handling mail. Clock in and out of
tasks as you do them. To review the day’s accomplishments, type ‘l’
(org-agenda-log-mode) from the agenda view. This shows the completed
tasks and the time it took to accomplish them.
(Now I’m tempted to write an easy way to filter the Org task view by
estimated number of minutes. ;) Another nice little hack before that
would be to have a modeline countdown based on the estimate of the
currently-clocked-in task. Hmm. And then there’s displaying the list
of tasks for today and choosing which one to clock in on… That would
be fun to do, too. And then there’s calculating velocity and doing
evidence-based scheduling… The list goes on!)
On Technorati: emacs
Random Emacs symbol: minibuffer-local-map – Variable: Default keymap to use when reading from the minibuffer.
Planner uses timeclock.el, which is part of GNU Emacs. To make sure that all
of the relevant libraries are loaded when you start Emacs, add the following
to your ~/.emacs:
(require 'planner-autoloads) (require 'planner-timeclock)
To start the clock on a task, type C-c C-i (planner-task-in-progress).
The task will be marked as “in progress” and the timer will start. To
clock out, mark the task as done (C-c C-x, planner-task-done) or clock
out manually with C-c C-o (timeclock-out).
To see a summary of your time use for any day, call M-x
planner-timeclock-summary. To see a summary of your time use for a
range of days, call M-x planner-timeclock-summary-show-range. The
range function is particularly useful for weekly time reports, which I
find myself now doing.
For even more fun, call M-x
planner-timeclock-summary-show-range-filter, which filters plan pages
and descriptions using the specified regular expression. For example,
to show only the time entries from the last seven days that included
the keyword “@work”, call M-x
planner-timeclock-summary-show-range-filter and specify “@work” as the
filter, “-7″ as the start date, and “.” for the end date. You’ll get a
quick view of all your work-related time-clock entries.
If you use this often, you might want to create a shortcut to show the
timeclock summary for the current file. The following code defines a
function that displays the timeclock summary for the current page (day
or plan), and binds this function to C-c C-s in Planner mode files.
(require 'planner-timeclock-summary) (require 'planner-timeclock-summary-proj) (defun sacha/planner-timeclock-summary-show (page) "Show the timeclock summary for PAGE (defaults to the current page)." (interactive (list (planner-page-name))) (if (string-match planner-date-regexp page) ;; Day page (planner-timeclock-summary-show page) ;; Plan page (let ((data (planner-timeclock-proj-make-alist page))) (switch-to-buffer (get-buffer-create planner-timeclock-summary-buffer)) (erase-buffer) (insert (planner-timeclock-proj-build-report data))))) (define-key planner-mode-map (kbd "C-c C-s" 'sacha/planner-timeclock-summary-show))
This allows you to see how much time you’ve spent for the current day
If you like seeing this, you might want the timeclock information
automatically inserted into your Planner pages. To do so, add the following to your ~/.emacs:
(planner-timeclock-summary-proj-insinuate) ; For plan pages (planner-timeclock-summary-insinuate) ; For day pages ;; It's easier when both of them overwrite the same report (setq planner-timeclock-summary-section "Timeclock" planner-timeclock-summary-proj-section "Timeclock" ;; Modify this to include your other template sections planner-day-page-template "* Tasks\n\n\n* Schedule\n\n\n* Timeclock\n\n\n* Notes\n\n\n" planner-plan-page-template planner-day-page-template)
The sections are updated only if they exist, so you can remove the
sections or add them to your Planner files any time you want.
CAUTION: Because the time information is stored in a separate file,
Planner gets confused if you edit the task details. Make sure you use
the built-in functions for editing the task description
(planner-edit-task-description) or changing the project associated
with a task (planner-replan-task).
On Technorati: emacs
Random Emacs symbol: planner-expand-name – Function: Expand the given NAME to its fullest form.
I find it useful to keep track of which tasks I’ve started. Adding the
following line to the start of my Org file adds STARTED to my to-do
#+SEQ_TODO: TODO(t) STARTED(s) WAITING(w) | DONE(d)
Here’s some code to make it easier to clock in and out of tasks:
(defun sacha/org-clock-in-if-starting () "Clock in when the task is marked STARTED." (when (and (string= state "STARTED") (not (string= last-state state))) (org-clock-in))) (add-hook 'org-after-todo-state-change-hook 'sacha/org-clock-in-if-starting) (defadvice org-clock-in (after sacha activate) "Set this task's status to 'STARTED'." (org-todo "STARTED"))
Random Emacs symbol: isearch-update-ring – Function: Add STRING to the beginning of the search ring.
Summary – In terms of my goals from last week:
|Organize information||Haven’t rearranged our group Activity yet.|
|Plan external blog||Brainstormed names. Now to brainstorm topics…|
|Plan podcast||Done. Several ideas, even.|
|Library run||Done. Picked up more books.|
|Meeting with Gordon Lee||Done. Scheduled another meeting this week.|
|Emacs blog entries, pages||Blog entries done, not yet laid out into pages or merged into text|
|Dogear podcast script, audio||Drafted, but not satisfied with quality|
|Dogear podcast video||Waiting for script|
Next week’s goals:
UP: My second week of work was dominated by CASCON, the conference
organized by the IBM Toronto Center for Advanced Studies. I presented
a short paper about my thesis, summarizing 72 pages and 1.5 years of
my life into five minutes and what really amounts to this sentence:
“Blogs, bookmarks, and people-tags may be able to help people find
expertise within their company, so let’s make a search engine that
combines all three.” I also enjoyed helping out with Stephen
Perelgut’s Second Life workshop, even though only half of the people
could get on the metaverse. Aaron, Bernie and I met a couple of times
during the conference, and I did manage to squeeze in some “real work”
as well. I also had my two-week check-in with my manager. We’re
thinking of making those weekly, just to keep everyone in the loop. A
couple of market scans here and there, some podcast plans… work is
good, and getting even better.
UP: I got back in touch with Gino Ledesma, a friend of mine from
university. We had a lot of fun catching up. I was thrilled to hear
about what he and my other batchmates have been up to, and
particularly by the way he’s been giving back to the Philippines. His
company is very impressed by him and is looking for more Filipinos to
hire. That’s gotta be something. =) That reminds me: I need to
introduce him to Winston Damarillo, who might be interested in having
Gino give some presentations to his Java folks.
DOWN: Trapeze lessons have been postponed. It was an informal class in
somebody’s loft, and that somebody needs to now focus on med school.
Ah well. Time to look for another form of exercise. I don’t really
feel like spending money on this, and I’m sure I can find plenty of
free, fun ways to exercise around the house. Winter is coming, so
running might not be my cup of tea. I’ll look around for ideas.
DOWN: The paperwork requirements for the permanent residency
application are a little bit intimidating, aren’t they? I felt
overwhelmed earlier. W- gave me a wonderful hug and helped me remember
to divide and conquer.
UP: I’ve found a good way to get more material for my book. =) It’s
easy for me to write if I think of things as blog posts. Even basic
information is fun to share. But I need to protect that time. I
managed to write a little bit during the evenings, and more during the
weekends. Let’s see if that works out next week too.
DOWN: The downside to this is that I’m not sure how to make the time
to meet my friends face-to-face. I’m growing a lot more protective of
the rare four-hour chunks I can carve out of my day, so I tend to keep
the weekends for myself. A wonderful home life makes me want to spend
more time at home instead of going to cafes and meeting friends. Blogs
are easy to fit into the spaces in my day, but what about the friends
who don’t blog? I’ll try tweaking my schedule a bit this week.
Tomorrow I’m going to go to DemoCamp, but only the pub night part, and
I’m planning to go after dinner. It doesn’t make that much sense to go
back and forth considering I’m working from downtown, but I can do
productive things on the subway (hmm, rush hour, so that means
listening to a podcast or doing blue-sky thinking), and I do like
being there when J- comes home from school. =)
DOWN: E-mail is also lower on my priority list. It’s becoming easier
to tell myself, “I’m going to do one hour of e-mail, and that’s that.”
Or 30 minutes, or whatever time I can set aside. I’m a little mixed
about this because a number of books I’ve read recommended quick
responses as a way of showing you care, but as long as expectations
are also adjusted, I think things will be fine. If I take a long time
to reply, it’s just that I have other priorities.
UP: And somehow I still found the time to read library books and
encode more notes, too! =) I probably won’t be updating my Booksnake
blog for a while (again, other priorities!), but my workflow is
UP: I’m happy with the overall balance of this week. My 50,000-feet
view is becoming clearer: I want to become a practice evangelist,
business practice maven, or whatever the proper term is. On the
ground-view, I manage to complete most of my planned tasks without
feeling as if I’m wasting time. In terms of personal stuff, I’m doing
well, too. =) Happy with this week, can’t wait for the next.
On Technorati: weekly
Random Emacs symbol: make-hippie-expand-function – Macro: Construct a function similar to `hippie-expand’.
I enjoyed this year’s Halloween more than the first two I’d spent in
Canada. I had spent both previous Halloweens in Graduate House, and
while graduate students can be quite creative in their costumes and
adept in their impersonations, it doesn’t quite have the same feel as
handing lollipops and chocolate bars to kids. (Even the teenagers who
really should just buy their own candy! ;) )
And what a perfect evening, too. Just the right temperature, even for
me. (Granted, I had a shawl.) Everyone was chatting. Halloween’s a
surprisingly good time to practice talking to other people. I managed
to say “Happy Halloween” with warmth dozens of times in a row!
(Although I get the feeling it’s not really a happy-greeting kind of
holiday… bah, who cares!)
Dressing up was fun, too. W- helped J- make a halo, wings, and robe
for her angel costume. J- sewed the robe herself, though! =)
Industrious girl. As for me, I felt like Reyna Elena, resplendent in
my white terno with a flowing skirt and petticoat. J- lent me a tiara,
and W- draped a (color-coordinated) throw around my shoulders to keep
Our outfits drew plenty of comments, and the Tux penguin pumpkin I
made also got a few knowing smiles and short conversations from
passers-by. =) Little unique touches… <grin>
Next year, we’re going to make it even more wonderful. We might make a
charred skeleton, following instructions on the Net. I’ll probably
pick up doggie treats, too. A number of people were walking their
dogs. One had a particularly cute pug with a spider costume. That one
definitely deserved a treat! I’m also looking forward to getting to
know more of the neighbors. That felt nice. =)
Happy Halloween. Kids think of it as Free Candy Day, and I think of
it as Free Chatting day. =) Hope your Halloween was fun, too!
Random Emacs symbol: gnus-ham-process-destinations – Variable: *Groups in which to explicitly send ham articles to