September 2007

Weekly review

September 3, 2007 - Categories: weekly

This week was mainly taken up by driving lessons at Young Drivers.
Their program was much more expensive than others, but it was highly
recommended by my friends. I was happy with how much I learned in the
program, and it was well-run.

I also spent some time running errands. I’m reasonably happy with High
Park Tailoring. The proprietors had been in business for more than
forty years, and they gave me friendly advice on how long my slacks
should be in order to accommodate the two heights of heels that I
brought. Altering the blazer turned out to be almost as expensive as
buying it, but the result was okay. For routine alteration, the
drycleaner in the Bathurst subway station is much cheaper. I was
disappointed in Yiorgos the Cobbler. The shoes were not ready when I
came to pick them up. The shopkeeper hadn’t even started on them. I’ll
look for a shoe repair shop closer to High Park. Now that I’ve sorted
out my wardrobe and figured out a few places to go for maintenance, I
should be fine.

James Iveniuk’s birthday/send-off was a blast. I met a number of
interesting people I’d like to get to know further, including a few
geek girls. I baked meringue kisses, which were a hit. I think I’ll
make some for the department.

I’m a little nervous about my paperwork processing time. I’ll talk to
Lorna tomorrow about all the requirements. I’m planning to rush two
bound copies of my thesis and complete the rest at a little more
leisurely pace, if that’s possible. It’ll cost me $50 extra, but I
think the peace of mind is worth it.

As for September: I’ve been meaning to writing a book on Emacs. I find
myself skipping over my help.gnu.emacs messages, though, which tells
me that I’m not quite that interested in Emacs at the moment. Thinking
deeply about and writing about social computing might be something
that’ll help me transition into work more smoothly.

Next week, I plan to:

  • Complete my degree requirements
  • Complete my paperwork for post-graduate work permit
  • Have lunch with IBMers
  • Plan blogging talk
  • Take two in-car driving lessons
  • Outline social computing booklet

Random Emacs symbol: coding-system-list – Function: Return a list of all existing non-subsidiary coding systems. – Variable: List of coding systems.

Paperwork progress

September 4, 2007 - Categories: canada

Clearance was surprisingly easy to do. My quest for signatures took me
to labs I’d never once set foot in, like the machining lab in the
basement. Cool stuff!

I’m still a little nervous about the timing of my post-graduate work
permit. I’ll breathe easier once I get that sorted out.

I’m a little less disappointed in Yiorgos the Cobbler, who (once
again) didn’t have my shoes ready when I dropped by to pick them up.
He finished them in ten minutes, though, and I was happy to see that
the rubber heels were secured by nails instead of just glue. That
should be sturdier than the heels I had repaired in Chinatown. We’ll see.

Library run: dropped off a whole bunch of books. Picked up 6,
including one on photography.

We’re celebrating J-‘s first day of school by making chicken fried
steak with mashed potatoes and fried corn for dinner tonight. We
enjoyed a lot of good conversation while preparing dinner, and I look
forward to even more while eating. I wish my family could have had
this. I guess there are some downsides to growing up with cooks,
although food at home *was* always excellent…

Tomorrow: Go to IBM and work on social computing booklet. Maybe
schedule driving lessons?

Thursday: Driving lessons, pick up letter (if I’m lucky; if not,
Friday), work on social computing booklet.

Random Emacs symbol: life – Command: Run Conway’s Life simulation.

Paperwork hassles

September 5, 2007 - Categories: canada

This is more complicated than I thought.

The post-graduate work permit I am getting is most definitely not an
entry document, which means that if I step out of Canada, I’m going to
need to apply at an embassy for a temporary resident visa to get back
in. If I had applied for a work permit outside Canada, then the visa
would be automatic, but I don’t have the time.

I can apply for a temporary resident visa outside Canada. However,
this involves mailing my passport off. Which I’m going to have to do
anyway, so I might as well do it as soon as I’ve cleared the
requirements for my post-graduate work permit. Buffalo, NY is
reasonably fast – 43% of cases in 2 days or less.

I can apply for permanent residency through the consulate in Buffalo.
However, the process takes a while. Buffalo will only respond to
status checks after 18 months. Manila is even worse: “Applications can
be expected to be reviewed only 48 months (four years) from the date
we acknowledge receipt of a complete file.”

Other people have done it. I have to find them. Sometimes I’m tempted
to just throw my hands up in the air and take the easy way out. I can
build a life in the Philippines. It will be a pretty good one. It
might even be easier. I can’t fully explain my reasons for wanting to
explore to build this life bridging Canada and the US, but I *want* to
have that kind of life, so let’s make that happen.

So here’s what I need to sort out:

  • Post-graduate work permit: that’s the first thing I need
  • Temporary resident visa: good to have
  • Permanent residency application: as soon as the ink dries on my IBM onboarding papers
  • Renewal of work permit (two years)
  • US visa: good to have

Okay. I can do this.

Random Emacs symbol: strokes-describe-stroke – Command: Displays the command which STROKE maps to, reading STROKE interactively.

Okay, I can solve that

September 5, 2007 - Categories: canada

I think I can deal with the temporary resident visa through mail.

Now the only thing I need to figure out is whether it’s
damn-the-cost-we’re-flying-home, or whether we can find something that
works out better…

Random Emacs symbol: bbdb-legal-zip-codes – Variable: List of regexps that match legal zip codes.

As me as I could be

September 7, 2007 - Categories: plans

Someone asked me last night: If I got a check for $15,000,000, what
would I do? I think he expected a change of lifestyle, splurging on
luxuries, full-time volunteer work for a favorite cause, or even any
of the things that people fantasize about when they buy lottery
tickets or speculate on stocks or gamble in casinos. What would I do
if lots of money showed up on my doorstep?

I wouldn’t do anything with the money. Not yet. I’d lock it up in some
(insured?) somewhat liquid form and let it wait while I learned more
about myself and about life.

The things I want can’t be bought or rushed. I want to learn how to be
me. I want to deepen relationships, and I want the laughs and tears
and fights and reconciliations that go with that. I want to be part of
a community, both at work and at home. I want to discover the joy of
work and the satisfaction of a job well done. I want to step out of my
comfort zone occasionally, but have a good foundation to build on and
draw strength from. I want to grow into myself.

And someday, when character has been built up brick by brick from the
everyday decisions, then I’ll naturally share more and more of my
gifts with the world. I don’t know exactly how that will go, but I’m
confident that life will be wonderful.

Some people may think that my dreams are smaller than they were
before. I think my dreams are just different. People like hearing
grand visions of the future. I want to learn how to discern the right
step in the current moment.

Will it really matter if I won’t be as famous as I could be, or as
rich as I could be, or as accomplished as I could be? Maybe what
will matter is that I’ll be as me as I could be.

Random Emacs symbol: isearch – Group: Incremental search minor mode. – Face: Face for highlighting Isearch matches.

Emacs: sorting contacts by timestamp

September 7, 2007 - Categories: emacs

Last September, I started automatically tracking my e-mails. Every
time I sent a message to someone already in my addressbook, his or her
contact record would be updated with the date and subject of the
message. I also made it easy to note that I met someone in person or
that I talked to them on the phone, although this wasn’t automatic.

So now I have almost a year of contact information in my address book.
I was curious—whom haven’t I talked to in a year?

Here are some numbers:

I’ve contacted 396 people in my addressbook since January 1, 2007.

In the past 365 days (2006.09.07 – 2007.09.07), I’ve contacted 670
people in my address book.

93 people have a contact timestamp (maybe the day I met them), but I
haven’t contacted them in the past 365 days. This breaks down to 37
people I haven’t contacted since 2006, 32 people I haven’t contacted
since 2005, and 24 from 2004 or earlier.

1230 records do not have any contact timestamp. Some of these are
bots, some of these are duplicate records I still haven’t gotten
around to merging, others are contacts from before I started tracking
and I haven’t e-mailed or talked to them since.

I figured this out by writing a bit of Emacs Lisp to print a
hyperlinked list of contacts with the date of last contact. This was
then very easy to sort using M-x sort-lines and M-x reverse-region.

For example, here are the people I’ve e-mailed in the last seven days:

2007.09.07 Wayne Young
2007.09.07 Tania Samsonova
2007.09.07 Papa
2007.09.07 Mike Bailey
2007.09.07 Mama
2007.09.07 Leigh Honeywell
2007.09.07 Lawrence J. Rooney
2007.09.07 Kathy Chua
2007.09.07 Don Marti
2007.09.07 Dean Michael Berris
2007.09.07 Ching Valdezco
2007.09.07 Bill Pollock
2007.09.06 Peppy Salita
2007.09.06 Mallory Chua
2007.09.06 John Sullivan
2007.09.06 Clair Ching
2007.09.06 Allan Tan
2007.09.05 Mark Chignell
2007.09.04 Gabriel Mansour
2007.09.03 Thomas Knoll
2007.09.03 Simon Ditner
2007.09.03 Richard Plana
2007.09.03 Neil Ernst
2007.09.03 Mike C. Fletcher
2007.09.03 Michal Jacovi
2007.09.03 Michael J. Muller
2007.09.03 Eugene Jarder
2007.08.31 Simon Rowland
2007.08.31 Jay Goldman

The code below probably won’t work out of the box with you unless
you’re using Planner+BBDB+my mail tracking hacks, but maybe it’ll give
you ideas.

(defun sacha/bbdb-print-with-timestamp (records)
  (while records
    (insert (sacha/bbdb-last-timestamp (car records))
            " |\t"
            (or (sacha/planner-bbdb-annotation-from-bbdb records) "")
    (setq records (cdr records))))

;; (assert (equal (sacha/extract-regexp "a." "ab ac bb") '("ab" "ac")))
(defun sacha/extract-regexp (regexp string &optional group)
  (let (result
        (start 0))
    (while (string-match regexp string start)
      (setq result (cons (match-string (or group 0) string) result))
      (setq start (match-end 0)))
    (nreverse result)))

(defun sacha/bbdb-timestamps (rec)
  "Return a list of timestamps found in the notes or contact field of REC."
   (sacha/extract-regexp planner-date-regexp
                         (concat (or (bbdb-record-notes rec) "")
                                 " "
                                 (bbdb-record-getprop rec 'contact)))
   (lambda (a b) (string< b a))))

(defun sacha/bbdb-last-timestamp (rec)
  "Return the most recent timestamp for REC or nil if none."
  (or (car (sacha/bbdb-timestamps rec)) "0000.00.00"))

Yes, I do weird things. Next step for this one: Review the list, see
who I haven't talked to in one year, and decide who I want to get back
in touch with. Also, analyze my e-mail and come up with pretty graphs.

Random Emacs symbol: gnus-server-kill-server - Command: Kill the server on the current line.

Sk8r boiz

September 8, 2007 - Categories: health

We took the skateboard for a spin around the block. Or three spins, as
we each had our turn. J- went first, coasting on the skateboard as we
held her hand and steadied her by her hips. She loved it, even when
the skateboard gaps caused her to suddenly stop. “It was scary, but it
was worth it!” she said. When we circled the block and returned to the
house, it was my turn. I tried launching myself, but I felt too
wobbly, so I let myself be pushed along as I concentrated on finding
my balance. Then it was W-‘s turn… W- made it look like so much fun.
He was off to a rolling start and hardly needed any pushing. We
laughed so hard watching him jump whenever he veered too close to the
edges. So much fun!

Random Emacs symbol: tramp-remote-sh – Variable: This internal variable holds a parameter for `tramp-methods’.

Driving lessons

September 8, 2007 - Categories: life

I had my first in-car driving lesson yesterday. Looks like I still
remember how to drive a manual car. Yay! =) Right turn, check. Left
turn, check. Happy!

Random Emacs symbol: tramp-smb-file-name-p – Function: Check if it’s a filename for SMB servers.

Made it across the monkey bars!

September 9, 2007 - Categories: health

Last Friday, I successfully made it across the monkey bars!

Yes, go ahead and laugh. It seems like such a simple goal. Kids can do
it. Heck, J- very handily does so without thinking too much about it.
But last Thursday, it was a big deal to me. I made it across the monkey
bars for the very first time.

I don’t remember really playing on the monkey bars before. Sure, I’d
clamber up them, but I never swung from bar to bar like, well, a
monkey. And at 24 years old, faced with the jungle gym at Lithuania
Park, I simply couldn’t make it across no matter how much I wanted.

I was afraid that if I let go with one hand, the elbow of my other arm
would lock. I was worried that my weak grip meant that my fingers
would slip off the bar. I couldn’t think of how to reach the next bar,
especially if it was above the current one. Heck, I couldn’t even hang
there for a few moments without my hands hurting. I couldn’t make it across.
I couldn’t even reach for the next bar.

Then I decided to stop making excuses. I watched J- do it and tried my
best to do the same. Here’s what I learned: Don’t pull, just hang.
Don’t stop. Just keep going, and use your momentum to swing you over.

I did it! =) My hands hurt like anything and my palms were still sore
that evening, but I finished it!

Next: figure out how to climb up the pole…

Random Emacs symbol: timeclock-day-base – Function: Given a time within a day, return 0:0:0 within that day.

Highrise HQ

September 11, 2007 - Categories: emacs, pimpmyemacs

I took a look at Highrise HQ following a recommendation by Winston Damarillo. It’s a web-based contact relationship manager (CRM) by 37signals, so it’s all pretty and Web 2.0-y.

Looking further, I’m surprised at how much my hand-hacked Emacs-based CRM can do:

Review a colleague’s notes before calling her contact at the printer
I do this with BBDB. Not only that, but my system automatically inserts notes into any e-mail I compose to that person.
See all the follow-ups scheduled for this week
Got that with Planner
Set a reminder to write your client a thank-you note next Friday
Ditto with Planner
Keep all important emails from a customer together on one page
I suppose I could do that with mail search. There must be a better way, though…
Schedule a follow-up sales call with a lead in 30 days
Review all communications with your investors
I haven’t figured out how to do this one yet. Mail folders help. Maybe I can hook up BBDB with my mail search engine…
Build a list of all the designers your company has hired in the past
Can do this with tags. In fact, I can build a list of people who are tagged with A but not B and whom I’ve talked to in the last year… =)
Enter notes from a call with a potential client
Enter contact info for people you met at the conference this week
Generate a list of contractors you worked with last year
See all the people your company knows at The New York Times
Regexp search, easy enough.

Highrise: you can share your notes with other people. I don’t need that yet, and I don’t think I’ll need it any time soon.

Emacs: I can use it offline. That totally rocks. Also, I can do lots
of complicated batch operations, such as composing form letters that
include conditional text, randomized text, and personalized
signatures. I can add arbitrary data fields and write code to do all
sorts of things. I don’t need Firefox or a mouse.

You know, if I just figured out how to translate my setup to the Web,
I’d make a killing. ;)

I’m going to steal the idea of a pretty view, and I’m going to make it
easier to see all the tasks associated with a person instead of
relying on my daily view. I also need to make it easier to mark
something as for-followup. Hmmm… But yeah, not too bad, not too

On Technorati:

Random Emacs symbol: gnus-server-opened – Function: Check whether a connection to GNUS-COMMAND-METHOD has been opened. – Face: Face used for displaying OPENED servers


September 11, 2007 - Categories: pimpmyemacs

Terrific comic from UserFriendly about my favorite text editor.

I might take sick leave too! ;)

Random Emacs symbol: general-holidays – Variable: General holidays. Default value is for the United States.

Sent by Stephen Perelgut

On Technorati:

Out of my control

September 11, 2007 - Categories: school

The person responsible for preparing letters of confirmation of degree
at University of Toronto’s School of Graduate Studies isn’t around.
I’ve called SGS every day to follow up on the letter, but no one else
can prepare it. My transcript currently shows that my thesis is still
in progress, so I can’t request a paper copy and use that as proof of

An international student advisor at U of T said that there’s
absolutely no way I can rush either SGS or Citizenship and Immigration
Canada. She advised postponing my start date to three to four weeks
after I send the application, which is dependent on when I receive the

I’m very uncomfortable with the idea of moving my start date forward,
but I don’t think I can do anything about it. I’ve asked SGS if anyone
else can prepare the letter. I’ve asked about my transcript. GWAAH!

Looking back, I really can’t see how I would’ve done things better.
This galls me even more than being late does. The tentative start date
for my offer was based on a fairly reasonable time estimate after my
thesis defense. I don’t think I delayed a lot myself. Maybe I should
have been more pessimistic, adding at least a 50% buffer to account
for delays in communication, unexpected absences, things like that. I
guess that’s it: be much more conservative when estimating around
other people’s times…

I can’t do anything about it now. I just have to wait.

Random Emacs symbol: change-log-mode – Command: Major mode for editing change logs; like Indented Text Mode.


September 12, 2007 - Categories: school

My department followed up on my delayed letter of confirmation, and
they found someone at SGS who’s willing to do it. So I can pick it up
at 3:00 and get my application finally on its way!

Random Emacs symbol: pcomplete-here* – Macro: An alternate form which does not participate in argument paring.

Attack of the killer tomatoes

September 16, 2007 - Categories: cooking

Vine-ripened tomatoes were on sale at No Frills, so we bought some 15
pounds of plump, red, juicy, fragrant tomatoes. Mmm! We wanted to try
canning our own sauce, so we picked up mason jars as well. As it
turned out, canning your own vegetarian spaghetti sauce looks like a
difficult process if you want to minimize the risk of food poisoning.
We opted for the easy way out instead, freezing the spaghetti sauce
flat in freezer bags. It came to about 4 liters of sauce. Where did
all the rest of the tomatoes go? Probably splattered around the
kitchen… it was a mess!

I had a lot of fun pulping what seemed like a hundred tomatoes. I
simply couldn’t stay awake long enough to see the process through, but
W- kept the simmering sauce company late into the night. We look
forward to trying some of it soon. I hope we actually managed to save
time and money in the process, or it’ll be one of those
once-in-a-lifetime adventures. ;) (As long as it’s not an
end-of-a-lifetime adventure, right?)

On Technorati:

Random Emacs symbol: rfc2231-get-value – Function: Return the value of ATTRIBUTE from CT.

Weekly review

September 16, 2007 - Categories: weekly

Here are the highlights of the last week:

  • Finally got my paperwork together for the post-graduate work permit! After following up with the School of Graduate Studies a number of times, I finally got the letter thanks to a follow-up by my department. Now I have to wait for my work permit…
  • Notified IBM about possible delays. I’m glad that they’re flexible.
  • Applied for IELTS, an English proficiency test that will be useful for my permanent residency application.
  • Started working on proposal for Emacs book. Read A-C of the EmacsWiki.
  • Attended a Toronto Linux Users Group meeting that promised to be a vi vs. emacs debate. Greatly amused to hear it turn into an ed vs everything else debate due to old-timers.
  • Watched “Philippine Science” with W- at the Toronto International Film Festival. Imagine that—a movie about my high school!
  • Baked a cake for Mark Chignell, my research supervisor. Well-received. Also, got back in touch with Calum Tsang.
  • Had another driving lesson. Reviewed 3-point turns. Also, practiced driving with W- in an empty parking lot.
  • Gave a presentation on blogging to around 15 people at IBM. Convinced a few people to start blogging.
  • Booked tickets for a flight home this March. W- and J- are coming. Yay!
  • Picked up tons of books from library. Current reading focus: personal finance, work-life balance.
  • Had a good conversation with W- about medium- and long-term goals.
  • Still working on improving relationship with family.

My goals for the next week include:

  • Clarify my vision for the next few years and develop a plan.
  • Develop clear financial plan.
  • Summarize advice on transitioning into real world.
  • Send professional update to people.
  • Spend more quality time with people.
  • Post book notes.

Random Emacs symbol: gnus-parameter-large-newsgroup-initial – Function: Return GROUP’s initial input of the number of articles.

Early morning walk

September 17, 2007 - Categories: health

I went for an walk in the cool morning air. I got halfway through a
book while walking through High Park. Not a bad way to wake up and
“warm up my engine.” I’ll try that again tomorrow. If I go to sleep
at 10, maybe I’ll get to wake up at 6 or so… =)

I’m starting to like exercising a little bit. I’m still not too fond
of running (feet and lungs not happy), but walking appears to be an
accepted form of exercise. I may need to find something else once
winter sets in with a vengeance, though.

Random Emacs symbol: tty-color-off-gray-diag – Function: Compute the angle between the color given by R,G,B and the gray diagonal.

I’m going to write a book!

September 18, 2007 - Categories: writing

My book proposal has been approved. I’m going to write an Emacs book!
I plan to work on it during evenings and weekends over the next year.
I’ve tried not to make my schedule too optimistic considering I don’t
have a good feel of my workload. If I finish it earlier than
planned—before my birthday, if possible—then that would be awesome.

=D Wheeeeeeeeeeeeeee! I’m going to be a properly published author!

Random Emacs symbol: eshell-wait-for-process – Function: Wait until PROC has successfully completed.

Revised my website design

September 20, 2007 - Categories: wordpress

I finally sat down and revised my blog design. It should be much
cleaner now. If I’m lucky, it will actually work under IE. (Gabriel?)
It validates (hooray!), too.

I’ve also added a new landing page, This should be a good starting point for people who find me on the Net or get my business card.

What else would make this website easier for you and other people? Tell me what you think!

Random Emacs symbol: ido-merge-ftp-work-directories – Variable: *If nil means merging ignores ftp file names in the work directory list.

Weekly review: 2007.09.17 – 2007.09.23

September 23, 2007 - Categories: weekly

Hmm… So what happened this week?

Getting my book proposal approved was definitely the highlight. That
happened on Wednesday, and I’ve been keeping myself busy writing a
page every weekday. I’m at 993 words now. Whee!

Another cool highlight was the Toronto Girl Geek Dinner last
Wednesday. Leila was a hilarious speaker who told us how having the
guts to go for something made such a difference in her life. Good

W-‘s friend Dan flew in from New York on her way back to the
Netherlands, so we’ve been pretty busy entertaining and listening to
stories. Last night, we hosted a small reunion here at 176. There was
a _lot_ of food. =)

I met one of the people who gave me advice on LinkedIn. I ended up
giving him advice on personal branding and stuff like that. =) Maybe I
should write about that too.

Called my mom. She was happy to hear from me and had started planning
her trip here for convocation. Things are still stressful, though.

Packed the week full of social stuff, now need a little rest.

Lots of writing, too. Aside from chipping away at my book, I also
worked on summarizing the advice that my LinkedIn network gave me on
transitioning into the real world. You can download “Advice for a
Twenty-something” from . We’ll give Lulu
a try, although what I’m looking for is something that will let me ask
people for their e-mail addresses if they want to be notified the next
time I try this writing thing.

I picked up bound copies of my thesis, too. Shiny!

Revised my website. Finally.

Did another driving lesson. Went up to 60kph! Managed to not panic.
This is good. Also getting better at shifting gears.

So that’s been my week so far. Good progress towards my goals.
Next week, my top priorities are:

  • More work on book. Let’s see… I want to write 5 more pages this week. Maybe even 10. Let’s pick the pace up a bit. Write in the morning, write in the afternoon…
  • Finally get my yearly update out.
  • Read and post book notes. Definitely feeling the need to get my system organized. I’ve been publishing some notes on LibraryThing, but I’m still lacking something.
  • Figure out how to highlight useful articles so that search engines can find them. Maybe compile a list of my favorite blog posts as a 23-year-old?

Random Emacs symbol: rmail-search-mime-header-function – Variable: Function to check if a regexp matches a header of MIME message.

ARGH, Second Life scripting is driving me nuts

September 25, 2007 - Categories: geek

There *must* be a clear way to use XML-RPC to interact with a Rails app… *sigh!*

Random Emacs symbol: easy-menu-add-item – Function: To the submenu of MAP with path PATH, add ITEM.

Library run

September 25, 2007 - Categories: library

We exercised by running to the library. Running with a full backpack
of books turned out to be interesting—and tiring! It was good to
exercise, though. I look forward to doing that again tomorrow,
although maybe to somewhere else.

Random Emacs symbol: insert-monthly-bahai-diary-entry – Command: Insert a monthly diary entry for the day of the Baha’i month corresponding

Advertise to yourself!

September 26, 2007 - Categories: geek

Fellow Emacs geek Paul Lussier pointed me to Take Back Your Brain!, a blog about influencing _your own brain_ through advertising. Here’s what the about page says:

How to Take Back your Brain

  1. Learn the techniques professionals use to persuade us and borrow any that seem useful.
  2. Use our personal technology tools to make effective ads aimed at influencing ourselves.
  3. Use personal technology again to automate delivery of those messages.

Good stuff, especially if you’re an advertising geek. Check it out!

E-Mail from Paul Lussier

Random Emacs symbol: gnus-cache-remove-articles – Variable: Classes of articles to remove from the cache.

Net worth report

September 26, 2007 - Categories: finance

I spent some time figuring out how to generate Gnuplot graphs from the financial records I’ve been keeping with Ledger. Here’s what I came up with:

Net worth graph

To generate this graph, I pieced together the following reports:

ledger -M -C -R -n -J reg ^assets ^liab > net-worth
ledger -t -a -M -C -R -n -j reg ^Income > income
ledger -M -C -R -n -j reg ^Expenses > expenses

… and plotted it with Gnuplot:

  • set xdata time
  • plot “expenses” using 1:2 title “Expenses” with lines, “income” using 1:2 title “Income” with lines, “net-worth” using 1:2 title “Net Worth” with lines, 0 with lines

… and fiddled around with the plot, and that was that!

Random Emacs symbol: gnus-gethash-safe – Macro: Get hash value of STRING in HASHTABLE.

Rediscovered words

September 27, 2007 - Categories: emacs

I haven’t read my own ShortStories in a while. I hardly recognize
myself. I don’t remember writing some things or what I was planning to
do with the bits and pieces of my drafts.

Is it normal to look back two years later and wonder how I managed to
forget to write? I can still somewhat remember the fun of creative
writing, of trying on different phrases and voices and roles. Maybe
I’ll pick that up again. From where am I going to take the time to do
that? I wonder…

Random Emacs symbol: planner-multi-tasks-equal-p – Function: Return t if TASK-A and TASK-B are equivalent.

My SecondLife interviewbot is coming along nicely

September 28, 2007 - Categories: geek

I’d have given up on the Linden Scripting Language long ago if Stephen
Perelgut hadn’t wanted this bot so much. It’s a good thing I didn’t,
though, as the interviewbot is coming along nicely. It can read
questions from a notecard, ask a series of questions, report the
answers to the owner of the interviewbot, e-mail the answers
off-world, and allow the owner to delete or reset answers. It can
receive answers through channel messages or general chat with a
prefix. Not bad.

Next, I should give it the ability to limit interviewees (if
prequalification is used), do owner-type interactions using a
password, and include dialogs. I’ll also have to stress-test it

Programming is fun, even when you need to deal with a lot of limits.

Random Emacs symbol: custom-define-hook – Variable: Hook called after defining each customize option.

Work permit on its way

September 28, 2007 - Categories: canada

A CIC official called me two days ago to clarify something on my
application for a post-graduate work permit. When we cleared that up,
she told me that my work permit should be done that day. Yay! I’m
looking forward to getting it in the mail. Of course, that probably
means less time to work on my book, but it’ll be good to work. =)

Random Emacs symbol: ccl-encode-euc-tw – Variable: CCL program to encode EUC-TW encoding.

When there’s more than one way to do things

September 28, 2007 - Categories: emacs

Writing about Emacs turns out to be difficult. There are so many ways
to do something. My goal for this book is to show people some of the
things that are possible and to help people choose. I’m starting to
feel a little overwhelmed myself, too. The key thing that’s making
this manageable for me is giving myself permission to write snippets
here and there, leaving the editing and organization to later.

I’m currently working on a chapter about planning your day within
Emacs. It gives me an excuse to poke around Planner and other modules,
figuring out how to do things. While writing about Planner and
appointments, I took my first close look at planner-appt. Now I have
to think: is this better than the way I’m currently keeping track of
my appointments? Should I switch to it? How do I describe it for
others? Should I show how to use it together with planner-cyclic?

Maybe I just need to stay focused on the reader, instead of on the
features of the software. What do people want to be able to do? That’s
the key…

Gah. This writing thing is hard. But it’ll be worth it…

Random Emacs symbol: tty-display-color-cells – Function: Return the number of colors supported by TTY on DISPLAY.

The Kitten-ful Life

September 28, 2007 - Categories: cat

One of my friends has the absolutely best setup for kittendom. She
fosters kittens for the Toronto Human Society, taking in kittens and
raising them to be well-socialized, adoptable, absolutely adorable
kitties. This is not an easy job. I remember raising the
KittenWhoMustNotBeNamed (now called Neko or Catastrophix, depending on
whether you ask me or my sister). Waking up every four hours to feed
the kitten, getting used to the ever-present smell of soy milk or
kitty chow, trying to teach the kitty not to bite (no luck)… But
kittens are so adorable, and I’m sure jz will get _plenty_ of nice
pictures… Too bad W- is allergic to cats and dogs. Envy!

Kitten Foster

Random Emacs symbol: eshell-number-of-handles – Variable: *The number of file handles that eshell supports.

Weekly review

September 30, 2007 - Categories: emacs, weekly

Slow and steady progress on my Emacs book – 2351 words so far. I
should find a way to accelerate. Maybe putting together a detailed
outline for _three_ chapters, so I can work on one script each. It’s a
little difficult organizing so many different ways to do things,
though… Waah! Next week: Finish a detailed outline and get to 5000

My transcript arrived, so the only thing I’m waiting for now is my
work permit. I hope to get it by the end of the week. I’ll also need
to renew my SIN. Speaking of paperwork, it turns out that I have to
get a medical exam and register at some overseas employment thing in
the Philippines before they’ll let me leave again, so I’ve added a
reminder about POEA to my March planner.

I made significant progress on the interviewbot I’m making in Second
Life for Stephen Perelgut. It can read questions from a notecard,
interview people who click on it using either a special channel or a
general chat prefix, save the answers in-world, report the answers
in-world, and e-mail one person’s answers offword to a specified
address. Next week, we need to check if it works, and to load-test it.

As part of my plan to give back to and be part of the community, I
attended the Toronto Public Library public consultation meeting for
their budget cut. Watching the meeting facilitator tactfully draw out
neutral points from attendees’ political rants was instructive. A
recurring comment was that the provincial government should give more
to Toronto. I felt some participants were a little resentful of new
immigrants, or at least they felt that the library shouldn’t have
programs to help people learn English as a second language (or third
or fourth). Some people also questioned the public computer access
that the library offers. It was a learning experience, and I learned
some interesting things from the library’s presentation. I’m not sure
if I’m going to go to one of those public consultation meetings again,
though: lots of people just like complaining about politicians. I’ll
observe the next board meeting on Oct 15 to see if that’s worth it for

W- and I practiced photography this week. We tried taking a picture of
the cityscape from the bridge at Front and Bathurst. The CN Tower and
the moon weren’t very remarkable, but we did have fun taking long
exposures of incoming trains. We have also decided never to shoot in
ISO 1600 if we can help it, and are learning how to use the flash more
effectively. We practiced using the fill-flash in bright sunsight
technique described on Strobist (link at the end of this message).
We’d have good results if I weren’t so self-conscious about the
current state of my skin. I’ll go to a dermatologist as soon as my
health plan kicks in. Next week, I’m going to start carrying powder.

Took another driving lesson. Next one’s still in November. I’ll be
taking up emergency maneouvers in winter—oh joy. *terrified!*

Went for another library run. Most of the productivity books are
alike, but I found some nuggets worth keeping. I’m still trying to
figure out a good booknotes workflow. Any tips? Next week, my goal is
to take notes from at least three books.

Tea today was good. Ian and Joe shared a lot of insights about
large-business sales. I’m glad to hear that our get-togethers are
helpful for them, too. Intellectual conversation is apparently a rare
thing in this world. <wry grin> Let’s have more of it, then!
Next week, my goal is to organize my tea workflow.

Little revisions to my website here and there. I browsed through my
past entries and realized that I write a lot about my life in the
process of thinking through things, but probably little that’s more
relevant to other people’s lives. My goal for this week is to pick a
few topics, outline a few areas I want to explore and write about, and
plan my reading. That will let me develop more depth and be more
useful. Recurring topics include networking, contact relationship
management, personal productivity, personal finance, and Web 2.0. Next
week, I want to have a personal editorial calendar. ;)

Life is good.

Random Emacs symbol: w3m-scroll-right – Command: Scroll to the right.