July 2011

Four-day weekend ahead

July 1, 2011 - Categories: planning

Today is Canada Day. Monday is a floater day for IBMers in Ontario. (IBM uses floater days to balance out the number of holidays across the provinces. Nice, isn’t it?) This adds up to a four-day weekend. You can get a lot done in a four-day weekend.

I make lists of things to do so that I don’t give in to the temptation to spend the time working. Time to review my initial list of unstructured time activities (update focusing on evenings and weekends), maybe think about plans for the summer and long-term plans.

Things to work on:

Chore-day: – just get everything ready for more good weeks:

  • Turn compost
  • Wash clothes
  • Tidy the house
  • Prepare large batches of food
  • Weed the garden, maybe plant another batch
  • Return library books and check out new ones
  • Reset the litter boxes

Other things I can work on:

  • Write a detailed blog post about our experiences with community-supported agriculture
  • Organize files on our server
  • Review old blog posts and write updates; organize thematically?
  • Prototype photo database W- was thinking about
  • Learn how to play Portal 2’s “Still Alive” so that I can help J- learn it
  • Work on Latin digitization and homework

I was thinking about sewing, but I’m fine in terms of clothes, so I don’t particularly need it. Last year, we used these long weekends for woodworking. Shelves and cabinets would be nice, but again, we’re doing pretty well right now.

Organizing and writing, I think. That’s the key. And maybe some more Latin.

2011-07-01 Fri 12:06

How I organize my personal finances

July 1, 2011 - Categories: finance

Update: I found the image!

Mia is learning more about personal finance. She came across my post on my financial network map and virtual envelope system and wanted to know if I had a copy of the image. Unfortunately, I don’t seem to, but it’s as good a time as any to post an update.

What’s changed in the last two years? What have I learned about personal finances?

One of the key things I think people should learn when they’re mapping out how they organize their money and how they want to organize their money is this:

The logical organization of your money doesn’t have to be limited by the physical organization of your money – which bank accounts, which jars full of coins, whatever.

I make my logical decisions first: how much to save, what to save for, what levels of risk to accept. Then I use those decisions to guide how to organize my money: chequing, savings, GICs, investments; registered, non-registered, tax-free, etc.

I use a virtual envelope system to keep track of what I’m saving up for and how much I’ve budgeted for regular expenses. I like this more than a straightforward budget because of the flexibility. If I have a surplus in one category (say, I don’t sew as much), or if I need to spend more in a more important category, I can move money around.

Current envelopes (no particular order):

  • Retirement: maximize RRSP room every year
  • Medium- and long-term investments: non-registered
  • Charity
  • Sabbatical: replace one year of income every 7 years
  • Household
  • Internet: web hosting and domain names
  • Phone: cellphone service
  • Pet care: cat food, vet visits, long-term savings (self-insuring our pets)
  • Travel: visiting family
  • Personal care: clothing, supplies, health, massages, etc.
  • Hobbies
  • Dream: Larger expenses worth saving up for; experiences
  • Play: Miscellaneous expenses

I track almost all my expenses, with miscellaneous cash expenses grouped together if I can’t categorize them properly.

I keep my financial data in plain text files using John Wiegley’s awesome ledger tool. It’s very geeky. I use it because I can quickly answer questions like:

  • How much do I spend on groceries each month?
  • What are the balances in my virtual envelopes?
  • At what prices did I buy my index funds?
  • How much did I make last year after tax?

I use more financial institutions now. It does take me a little bit of time to check on my accounts at all of them, but I think the benefits outweigh the costs. Here’s how and why I use each of them:

  • ING Direct: I’ve been using ING for savings for a while, and I’ve also shifted my payroll direct deposit to the chequing account I created. I use ING because of decent rates on GICs, the ease of creating sub-accounts, and instantaneous transfers between chequing and savings accounts. I don’t want to make it my only chequing account, though, because the bank machine network isn’t as wide as the other banks.
  • PCFinancial: I used to use this as my main chequing and savings bank before I moved to ING. I also used to use this as my primary credit card before I moved to MBNA. I keep these accounts around mainly so that I can withdraw cash easily.
  • TD Canada Trust: I have a chequing account and a USD account here. The chequing account has the minimum balance needed to avoid fees. This account is mainly to make it easier for me to invest at TD (see TD Waterhouse).
  • TD Waterhouse: I switched from TD Mutual Funds to TD Waterhouse so that I could hold investments in my tax-free savings account (TFSA). I have three types of investment accounts here: my non-registered investments, my tax-free savings account, and my registered retirement savings plan. All of them currently hold TD e-funds, but I may shift to ETFs later on.
  • MBNA: The MBNA Smart Cash credit card gets me 3% cashback on groceries and 1% cashback on everything else, beating PCFinancial’s effective 1%.
  • Sun Life: Sun Life holds my defined-contribution pension plan from work. I maximize the IBM match, but I keep the rest of my long-term investments at TD because I get lower management expense ratios for similar index funds there.

Overall, I’m at about 6% cash, 20% GICs, 49% Canadian index funds, 9% US, 9% international, and 7% bonds. 31% of that is in my RRSP. It skews a bit more conservative because of the GICs.

Update: Here’s the old map:

Here’s what that map looks like now:

It takes me 15-30 minutes a week to update my accounts, reflect on my expenses, and review my goals. I like the steady progress.

Good personal finance is boring. ;) It’s mainly a matter of time: saving up, adapting to changes, letting interest compound, learning more… The next thing might be to move money from index funds to ETFs in order to take advantage of the teensy difference in management expense ratios, but it’s no big deal. I’m on track to make my savings target this year. I can’t do anything about the markets, but I can do something about how much I save. We’re getting better at what we spend on, too, as we learn more about what we value and enjoy.

What have you learned about personal finance?

Getting a grip on a large database migration

July 2, 2011 - Categories: drupal, geek

Michael is working on migrating a custom website with hundreds of database tables to Drupal, and he wanted to know if I had any advice for keeping track of table mappings and other migration tasks.

I’ve worked on small migration projects before (including migrating my own blog from lots of Planner-mode text files to WordPress!), but no large projects like the ones Michael described. But if I needed to do something like that, here’s what I’d probably do. I’d love to hear your tips!

I’d list all the tables and start mapping them to entities. What content types would I need to create? What fields would I need to define? How are the content types related to each other? An entity relationship diagram can help you get an overview of what’s going on in the database.

Then I’d start untangling the entities to see which ones I can migrate first. If you have entities with node references, it makes sense to migrate the data referred to before migrating the data that refers to them. If I can get a slice of the database – not all the records, just enough to flesh out the different relationships – that would make testing the migrations faster and easier. I would probably write a custom Drupal module to do the migrations, because it’s much easier to programmatically create nodes than it is to insert all the right entries into all the right tables.

I’d commit the custom module to source code control frequently. I’d write some code to migrate an entity type or two, test the migration, and commit the source code. As I migrated more and more of the relationships, I’d probably check them off or colour them differently in the diagram, making note of anything I’d need to revisit (circular references, etc.).

I might break the custom module up into steps to make it easier to rerun or test. That way, I’m not reconstructing the entire database in one request, too.

I’d take notes on design decisions. When you migrate data, you’ll probably come across data that challenges your initial assumptions. This might require redesigning your entities and revising your earlier migration code. When I make design decisions, I often write about the options I’m considering and the reasons for or against them. This makes those decisions easier to revisit when new data might invalidate my assumptions, because I can see what may need to be changed.

How would you handle a migration project that’s too large to hold in your head?

Fifty kilometers on my bicycle

July 3, 2011 - Categories: Uncategorized

Maira and Scott suggested biking along the Humber river trail, which stretches north-southish all the way up to Steeles. I’d never been along the north part of the trail, and it sounded like a great way to spend the Sunday afternoon. They originally wanted to meet up at 12. It was 11:30 by the time I left. It would’ve taken me too much time to get there through public transit, so I arranged to bike up and meet them at some point along the trail.

The Humber trail is an easy ride with the occasional hill. The only tough parts are that you sometimes need to find the trail again. I got a little lost along the way, but GPS and other people helped me get back on track.

My friends were running quite late, so I ended up leisurely pedaling all the way to the beginning of the Humber trail near Kipling and Steeles. I had my Kindle with me, so I passed the time reading. After we met up, we took the trail south. We overshot Bloor and circled back, emerging at Royal York and Bloor. We headed our separate ways at Bloor, and I made it back home by 4:30pm.

I covered 50km, finished two bottles of water (and wished I’d brought a third), and snacked on one granola bar. When I got home, I had a refreshing shower, then read two books and took a short nap.

So. Biking a long way. I think it’s the longest and farthest I’ve biked semi-continuously. I wasn’t winded afterwards, just a tad wobbly, and W- and I still got plenty of things done the rest of the day. I think it’s more like plugging away at this exercise thing, like perhaps you might on a stationary bike, except that the scenery changes, there’s the occasional breeze, and you really should put on sunblock (which I did). It’s not hard. It’s just being present and keeping your legs moving, and maybe not getting run over by cars on the stretches between the proper trails.

I think it’s amazing being able to bike on a small paved trail clearly in much use – we saw lots of pedestrians and other cyclists – far away from the sights and sounds of the city, yet in the heart of it, and never too far away from help or the rest of the world. There are many other things I can do in five hours, sure, but this is pretty good too.

2011-07-03 Sun 20:25

Embracing Pollyanna

July 4, 2011 - Categories: happy

Happy people are sometimes derided as unrealistic Pollyannas, other people’s way of bringing them down to earth. I’ve heard it from people who don’t yet understand how I can be so optimistic. The dictionary defines “pollyanna” as an excessively or blindly optimistic person. Curious about this, I requested Eleanor Porter’s book Pollyanna from the library. In the pages of this easy-to-read book, I discovered a philosophy similar to the one I live.

You see, Pollyanna’s life centers on the Glad Game that she plays – the game of finding at least one thing to be glad about in any situation. An orphan taken in by her stern aunt, she inspires the town and eventually her aunt into playing this game. Invalids are comforted, quarrels are patched up, life gets better all around. When she runs into her own challenges, the whole town pitches in to help her play the toughest Glad Game she’s ever faced.

I play something like the Glad Game too. Grew into it unknowingly, took it as my own. It becomes easier – almost instinctive – as you do it. In the book, Pollyanna says:

“Why, Nancy, that’s so! I WAS playing the game—but that’s one of the times I just did it without thinking, I reckon. You see, you DO, lots of times; you get so used to it—looking for something to be glad about, you know. And most generally there is something about everything that you can be glad about, if you keep hunting long enough to find it.”

The game I play isn’t quite the Glad Game, though. I don’t stop at being glad. I guess I play the Learn-Share-Do Game. What can I learn from this situation? How can I share what I’m learning? How will I respond – what will I do about this situation? This turns every joy and success into something greater, and every heartache into part of the story.

It’s a blend of the infectious optimism of the 11-year-old Pollyanna and the resolute freedom of the Holocaust survivor Victor Frankl, who wrote this:

Between stimulus and response there is a space. In that space is our power to choose our response. In our response lies our growth and our freedom.

There is no shame in being a Pollyanna, on facing life with conscious optimism and deliberate gratitude. Optimism can be firmly rooted in reality, finding nutrients in its depths, using the rocks of life as anchors.

I play the Learn-Share-Do game. What game do you play with life?

Organizing my digital life

July 5, 2011 - Categories: geek

W- upgraded our file server to a RAID-1 configuration (mirroring without parity or striping) using two 1.8-terabyte disks. Now we can back up and reorganize our files, and set up regular backup routines too. It’s a good time to think about what I want from archives and how I can organize them to improve retrieval and serendipity.

What would a good archive be like?

  • [X] HTML and images of my blog, so that I can browse it and recover even if I mess up my database or my images
  • [X] Database backup of my blog, so that I can restore it more easily – test by setting up virtual host
  • [X] Backup of my whole website
  • [X] Backup of my personal files (organizer.org, outline.org, ledger, etc.)
  • [X] Presentations
  • [X] Photos, sketches, and book notes, organized so that I can browse/search by keywords and other criteria, maybe get statistics
    • Inbox
    • Processed
    • Favourites?
  • [ ] Backup of Twitter/Facebook activity, perhaps using ThinkUp
  • [ ] Database of books I’ve checked out from the library: title, author, ID, start date, end date, and maybe any notes I have (possible link to Goodreads if I can get that working?)

What would good workflows look like?


  1. Copy files off the camera and put them in my folders.
  2. Use Bibble5 to rate the photos and process them.
  3. Export the pictures and upload them to Picasa and Facebook.
  4. Order prints.

Blog posts:

  1. Draft posts using organizer.org in my Emacs, or use ScribeFire to draft graphical posts.
  2. Illustrate them with sketches or photos (optional).
  3. Publish to blog.
  4. Save daily backups of database and monthly backups of HTML.
  5. Print blog dump monthly.
  6. Do a monthly or weekly review of unpublished drafts to see if I can build on them.
  7. Review past years’ blog posts to see if I can build on any.

What do I want to access from my laptop while I’m at home?

  • Personal files / documents
  • 1024×768 versions of sketches and favourite photos
  • Presentations organized by topic?

What do I want to be able to access offline or away from home?

  • Personal files / documents

Hmm, might be worth saving up for a larger hard disk drive for my laptop, too…

How do you get more value out of your archives?

Hacking Drupal views and taxonomy: looking for 100% matching of terms

July 6, 2011 - Categories: drupal, geek

I’m working on a Drupal 6 site that helps match volunteers to speaking opportunities, or sessions. I use Taxonomy to keep track of the qualifications so that I can maintain the qualification hierarchy. Given a list of subject areas that a person is interested in, I need to find all sessions that match any of those subject areas. The quirk: the session must have at least one of the person’s terms, and the person must also have all the session’s terms.

Let’s say that our volunteer is interested in speaking about biology and physics. I couldn’t use a straightforward AND search. If I searched for biology AND physics, I wouldn’t get sessions for just biology. It also means I can’t use a straightforward OR search, because I shouldn’t list sessions that require both biology AND another subject the person hadn’t listed, such as chemistry.

Views didn’t seem to have a built-in way to do it. I couldn’t think of a standard-ish way to describe my challenge in order to find relevant posts on drupal.org. Content recommendation modules seemed similar, but I wasn’t familiar with any of them enough to know which one would be the closest to hack for my cross-type comparisons and 100% match requirements. So it was time to hack my Views query.

After several attempts, I settled on the approach of precalculating how many terms were associated with each session node. I created a table with the information and used the following query to populate it in my install file.

db_query("INSERT INTO {node_term_count} 
  SELECT nid, vid, count(tid) AS term_count 
  FROM {term_node} GROUP BY nid, vid");

I also used hook_nodeapi to update the table on insert, update, and delete operations.

Then I started experimenting through the SQL console. I used COUNT and GROUP BY to find out how many terms the session had in common with the person. Selecting from that MySQL subquery let me filter the list to the nodes where the total number of terms equaled the number of terms the session had. I ended up with a query that looked like this:

SELECT nid, vid FROM (SELECT tns.nid, tns.vid, 
  COUNT(tns.tid) AS match_count, 
  c.term_count FROM term_node tns 
  INNER JOIN node_term_count c ON tns.vid=c.vid 
  WHERE tns.tid in (55, 56, 42, 39, 41) 
  GROUP BY tns.vid) AS result 
WHERE term_count = match_count;

When I was happy with the query, I used hook_views_pre_execute to change my $view->build_info['query'] and $view->build_info['count_query']. With all the other filters I needed, it eventually looked like this:

    $view->build_info['query'] = "SELECT * FROM (
SELECT tns.nid, tns.vid, count(tns.tid) AS match_count, c.term_count, workflow_node.sid FROM node n 
INNER JOIN term_node tns ON (n.vid=tns.vid AND n.nid=tns.nid)
LEFT JOIN workflow_node workflow_node ON n.nid = workflow_node.nid 
INNER JOIN node_term_count c ON tns.vid=c.vid
INNER JOIN content_type_session session ON (n.nid=session.nid AND n.vid=session.vid)
INNER JOIN node school_node ON (session.field_session_school_nid=school_node.nid)
INNER JOIN content_type_school school ON (school_node.nid=school.nid AND school_node.vid=school.vid)
INNER JOIN content_field_session_dates date ON (n.nid=date.nid AND n.vid=date.vid AND date.delta=0)
WHERE (n.type in ('%s')
AND workflow_node.sid=%d
AND session.field_session_request_mode_value = '%s'
AND (n.status <> %d) 
AND (DATE_FORMAT(ADDTIME(date.field_session_dates_value, SEC_TO_TIME(-14400)), '%Y-%m-%%d') >= '" . date('Y-m-d') . "')
AND school.field_school_district_nid IN ($district_where)
AND tns.tid in ($tid_where))
GROUP BY tns.vid
) as result WHERE term_count = match_count AND match_count > 0";

I used variables like $tid_where and $district_where to simplify the query. They use array_fill to create placeholders for the arguments.

Result: I think it works the way it’s supposed to. It passes my unit tests and manual testing, anyway. If performance becomes an issue, I might precalculate the results and store them in a table. I hope I don’t have to do that, though.

Views 3 is supposed to have arbitrary data stores that let you write views on top of any sort of query or function, but I’m going to stay with Views 2 for now.

Whenever I write about stuff we’re doing with Drupal, I often hear about even awesomer ways to do things. =) Is this one of those times? Is there a little-known module that Does the Right Thing?

Planning for summer

July 7, 2011 - Categories: education, life, planning

J-‘s now on her summer break. We’ve been thinking of ways to help her use her summer well. There’ll be time for unstructured play and for hanging out with friends, of course, but it’s also good to help her develop initiative and life skills, fighting the temptations of video games along the way.

Both W- and I are working through summer because we’re saving our vacation days for Kathy’s upcoming wedding, so J- will need to be self-driven. She’s pretty good at dealing with the inevitable what-do-I-do-now moments (and we all get those, if we’re lucky). She often practises piano or ukulele, reads a book, or hangs out with friends. We can help by setting some challenges, nudging her to work on mastery or life skills, and giving her feedback on how she’s doing (such as for writing or math exercises).

Overall plans for the summer:

  • Read
  • Practise music
  • Hang out with friends
  • Prepare for next school year
  • Work on life skills

It’s often easier to pick from a list than to think of something to do in the moment, so here are some ideas for things to do:


  • Swimming
  • Biking
  • Exercising
  • Running, playing in the park


  • Reading a book (critical reading – maybe discussion at dinner?)
  • Working on reading exercises
  • Working on math exercises
  • Going to the library


  • Drawing (comics, sketches, etc.) – maybe put together a sketchbook or comic book
  • Writing notes, stories, and so on
  • Playing the piano or the ukulele
  • Visiting the AGO, the ROM, the science centre, etc.
  • Taking pictures
  • Exploring arts and crafts (ex: collage, sculpting)

Life skills

  • Learning how to cook
  • Making life better: cleaning, tidying, looking for ways to improve, etc.
  • Volunteering (Free Geek?)
  • Learning life skills: taking public transit, biking, etc.
  • Negotiating/persuading


  • Hang out with friends
  • Play video games (time-limited?)
  • Play board games

We’ll encourage her to add to this list, too.

We like the way her school uses rubrics to make it clear what excellence looks like. We’re not planning to use one to grade J- for her summer work – grading summer! what a thought – but it might be useful to work out one with her so that she can self-evaluate how she’s spending her time and so that she can motivate herself to push her limits. W- and I thought about the process first so that we can guide her through planning her own. Here’s the draft W- and I came up with:

Category 1 2 3 4
Physical Sat on couch all day / stayed indoors Basic calisthenics Extended physical activity Stretching your limits
Mental Played video games all day / watched TV all day 1 unit of work 2 units of work 3 units of work
Creative No creative output Drew / wrote / practised piano/ukulele / etc. Memorized part of a song / New story/comic/drawing to share Discussion of work
Life skills Mess Cleaned up after self Cleaned up after cats Made life better / cleaned up after others
Technology Played video games or surfed the Internet all day Practised IT skills (typing, presentations, etc.) Created something using technology and shared it with us or others Learned something on your own / experimented with tools

Thinking of ways to build scaffolds for J-‘s learning through these lists of ideas and rubrics for self-evaluation inspires me to make some of these for myself, too.

What would my discretionary-time activities look like?


  • Biking
  • Exercising
  • Gardening


  • Reading a book, maybe blogging notse
  • Improving development skills


  • Drawing – sketches, presentations, etc.
  • Writing notes, stories, blog posts
  • Playing the piano
  • Visiting the AGO, the ROM, the science centre, etc.
  • Taking pictures

Life skills

  • Preparing a new recipe or experimenting with a familiar one
  • Making life better: cleaning, tidying, looking for ways to improve, etc.
  • Learning how to drive

What would a rubric for myself look like?

Category 1 – minimal 2 – acceptable 3 – good 4 – awesome
Physical Sat and worked all day / stayed indoors Worked at standing desk / did some gardening Turned the compost / exercised Exercised for hours
Mental Did OK at work Solved new problems or built new functionality at work Read one or more books Worked on learning a new skill / Shared what I was learning
Creative No creative output Blogged / practised piano Created and shared pictures or sketches Learned a new technique / memorized part of a song
Life skills Mess Cleaned up after self Cleaned up after others Made life better

In an imperfect world

July 8, 2011 - Categories: life, reflection

Quinn wanted to know how I respond to systemic injustice, wicked problems, and other things that are so far beyond individual scale that they tend to reduce people to helplessness.

I used to be paralyzed by these thoughts. I fumbled with class divides, marked as privileged by language and accent and access. I avoided relationships because I worried about the statistics showing discrimination against married women and mothers. I felt torn apart by guilt over being part of the brain drain, tempted to think of what-ifs.

I’m learning to pick my fights and focus on doing the best I can.

So, yes to… Even though it will probably be much harder to…
Pursuing my passion for code and writing, despite knowing that there are scary people out there Deal with such people if they make me a target
Blogging about what I’m learning, sharing whatever I can Contribute to open source code while at IBM (it’s doable, but there’s quite a bit paperwork ;) )
Both my husband and I keeping our names, and to always phrasing it as decisions we both make for ourselves Go with non-patrilineal naming for children
Promoting equality through avoiding deemphasizing motherhood and emphasizing parenting, valuing homemakers and caregivers, and appreciating people who choose not to have children Deal with gender-role assumptions, subtle professional discrimination against mothers, and ageism in technology careers
Managing my finances myself and resisting the pull towards consumerism get everyone to live below their means and manage their accounts reasonably
Microlending and encouraging entrepreneurship Get people to self-start, or solve systemic biases against the poor
Living as full a life as I can with W- Deal with the occasional biases against and the certain challenges of a relationship with a large age gap
Making the most of where I am and helping other people get started Move back to the Philippines and make a bigger difference there
Working reasonable hours at full capacity and investing in building a full life as well Change the work-life expectations for executives or startups

It isn’t about solving the world’s problems. It’s about facing the world lovingly, finding unknown depths of energy in yourself so that you can keep on going even if life challenges you.

Here’s something from people wiser than I am:

The bodhisattva vows to save all sentient beings, but that is not a
goal in the relative sense. The bodhisattva realizes that what she is
saying in that vow is completely impractical. You can’t really do it.
We see this from the mythical story of the great bodhisattva
Avalokiteshvara. He had a literal mind in the beginning. He took that
vow, “Until I save all six realms of existence, I will not attain
enlightenment.” He worked and he worked and he worked to fulfill his
vow. He helped beings, and he thought he’d saved hundreds of millions
of them. Then he turned around and saw that an even greater number
than he had saved were still suffering, and he had flickers of doubt
at that point.

At the beginning, when he took that vow, he had said, “If I have any
doubts about my path, may my head split into a thousand pieces.” This
vow came true at this time. His head began to fall apart. He was in
tremendous pain of confusion, not knowing what he was doing. Then,
according to the myth, Amitabha – a great buddha of compassion – came
to him and said, “Now you’re being foolish. That vow you took
shouldn’t be taken literally. What you took was a vow of limitless
compassion.” Avalokiteshvara realized that and understood it. Through
that recognition, he became a thousand times more powerful. That’s why
the iconographical image of Avalokiteshvara often has twelve heads and
a thousand arms. You see, once you take the meaning of saving all the
others literally, you lose the sacredness of it. If you’re able to see
that compassion applies to every situation, then compassion becomes

… The path is what there is to work with, and that work is there
eternally, because sentient beings are numberless, and we have to work
with them eternally.

Trungpa, Gimian, and Kohn’s Work, Sex, Money: Real Life on the Path of Mindfulness (p73-74)

Sometimes it feels like the world rolls backwards faster than we Sisyphi can push it up. That’s okay. We get better and better at making little differences. We get better at making bigger and bigger differences. There’s no game over. There’s no happily ever after. There’s just the constant work and growth of being human.

Sometimes I roll backwards faster than I can push myself up. I forget something. I ignore someone’s needs. I make mistakes. But if I can keep focusing on small things I can do to move forward instead of trying to keep score over the entirety of things, then it’s easy to find the energy to start again.

The world also rolls forward, unexpectedly, through no effort of our own. Keep an eye out for those moments. The world is full of things that aren’t right, but it’s also full of things that are.

Thinking about activities to share with others

July 9, 2011 - Categories: analysis, kaizen, life, reflection

Over the past two weeks, I had been planning to go see Hugh Jackman’s concert with some friends. Apparently, he can sing quite well.

I found myself hesitating even as I juggled coupon codes and RSVPs. With a week to go and seats selling out, I ended up deciding not to go. I realized that I’d rather spend a quiet evening with W- or by myself than watch a concert.

One of my friends really wanted to go. He asked me if there was anything stopping W- from watching with us. I replied that it wasn’t really W-‘s kind of thing. Come to think of it, concerts aren’t particularly my kind of thing either.

That made me think about what activities I might share with friends, and about introversion and friendship.

It’s easy to reflect on this because J- provides good contrast. She’s on her summer break. At 13 years old, she’s independent enough to choose her own activities, such as sketching at home or walking over to friends’ houses. She’s comfortable spending time on her own, but she lights up when she hangs out with friends. Not a day goes by without a get-together.

I remember being a bit like that: enjoying lunch with friends at school, inviting people to our house for snacks, suggesting things to do and movies to watch. But I’m also really comfortable by myself or with W- and J-, so it takes effort to organize or go to get-togethers.

Time to break out a tool that I sometimes use to help J- think of ideas: the list. If I think about activities I can share with other people, then it might be easier to get out there and do it, and it might make it easier for other people to share activities with me.

Some ideas:

  • Concerts and symphony performances: Probably not. They tend to be more expensive, too.
  • Musicals: Very rarely. I enjoyed “Evil Dead” and “Wicked” greatly, and sprung for the awesomest tickets I could get. Other musicals tend to be .
  • Opera: I like opera. Watching opera makes the music come alive for me. I prefer community opera by the Toronto Opera Repertory over the Canadian Opera Company. Maybe it’s the memories (the particularly awesome date with W- that kicked all of this off). Maybe it’s knowing that the singers are doing this on top of their other lives.
  • Movies: Hmm. I watch some movies in theatres because I want to vote for them with my dollars or because I think the theatre experience will be worth it (usually great effects or decent 3D). Watching a movie is a fairly passive sort of experience, though.
  • Movies at home: I much prefer watching movies at home, actually – a cat or two on my lap, subtitles, the ability to pause it whenever, a comfortable couch, maybe laundry to fold… The library is awesome.
  • Exercise: Biking. Walking around. I’d be up for that, even if biking involves relatively little conversation unless there’s some sort of picnic.
  • Cooking: Definitely. I wish more of my friends organized potlucks, or were up to coming over for one. In the meantime, I host tea parties as an excuse to prepare interesting recipes. I enjoy the process of cooking, particularly when I’m sharing it with other people, and I like sharing the results.
  • Writing/reading/drawing/sewing: I think it would be really cool to share more of my learning activities with friends. I might be up for a book club, for example. Or a writing group with exercises. Or drawing lessons. Or sewing lessons, although I’m more keen on writing, reading, and drawing. =) I’d much rather develop skills than consume experiences.

It’s a little weird working on understanding this. J- plans the other way around: she calls people and invites them to hang out, and then they figure out what to do. I feel the influence of my introversion here. I often prefer to spend time writing (look! here I am) than hanging out.

I suspect it’s good to put myself in the way of learning from other people’s lives, though, especially since many people share their lives in conversation and not online. Maybe it’ll come in time. (I’m starting to have parent-y conversations about summer enrichment!)

What activities do you share with other people?

Weekly review: Two weeks ending July 9, 2011

July 10, 2011 - Categories: review, weekly

Ah, holiday weekends. Forgot to do my review last week. =)

From the other week’s plans

  • Work
    • [X] Visit client U to help with Drupal
    • [X] Work on user registration and profile editing for project M
    • [X] Help team members on board for project M
    • Also worked on project C – more small improvements
    • Got lots of stuff done for project M
    • Applied Drupal theme from design company
  • Relationships
    • [/] Organize get-together? Tentatively planned for July 15
    • Biked along Humber trail with Maira and Scott
    • Helped J- with homework and summer planning
    • Started drawing exercises with W- and J-
    • Got back into Latin
    • Answered blog questions
    • Hung out with in-laws and J-‘s friends’ parents
    • Checked out Free Geek as a possible volunteer opportunity; looks interesting
  • Life
    • [-] Sleep earlier: Ah, Portal
    • Organized my files
    • Backed up my photos

Plans for next week

  • Work
    • [ ] Project M: Tidy up user registration, get clients to start testing
    • [ ] Project M: Implement more reports
  • Relationships
    • [ ] Host get-together
    • [ ] Help mount new cabinets
    • [ ] Work on inventory app for mom
  • Life
    • [ ] Do some more gardening

Monthly review: June 2011

July 11, 2011 - Categories: review

June was a good month for health-related experiments. The community-supported agriculture box meant that we had lots of vegetables in the house. I joined several long bike rides, getting plenty of exercise. Sun + warm weather = garden growing at full speed, although my lettuce has bolted. At work, I dived back into Drupal development. I’ve been working from home almost all the time because I really like the standing-desk set up I’ve got at home – our kitchen counter, which is conveniently close to water and snacks. Good things all around.

July is shaping up to be a great month too. Summer’s heat means more ice cream and less baking. I’m fascinated by the way my social interactions are shifting: I’m growing more and more comfortable talking about grown-up things (what J-‘s learning this summer; what W- and I are working on), and I get together less frequently with my old circles. Work is chugging along nicely. It’s a good month to practise managing the pipeline of opportunities, too, so that I can move from one engagement to another without many hiccups. Onward and upward!

Blog posts in June:






On cherry tomatoes, frugality, and wanting

July 12, 2011 - Categories: life

[Tomatoes]We spent Saturday afternoon hanging out with W-‘s brother and his family, as W- was helping them move the fridge. Over the post-fridge-moving barbecue, his brother Morgan and I were chatting about gardens. I confessed that I grew cherry tomatoes because I can’t stand paying the premium for them at the supermarket.

Morgan pointed out that we make enough for me to buy cherry tomatoes if I want them. He said that when he craves steak, he goes out and buys it.

I can always want different things, I said. If cherry tomatoes aren’t ripening in our garden or on sale at the supermarket, I can get regular tomatoes, or other fruits and vegetables. I generally don’t crave things. It’s great to dig into a freshly-baked pan of lasagna or munch a sweet strawberry, but I can eat whatever fits the season or circumstance.

Moving to Canada from the Philippines helped me learn that, actually. I missed mangoes and cantaloupes like I missed colours in the desaturation of winter. No market here stocks anything like my remembered summer treats: green mango shakes, ripe mangoes at breakfast, melons scraped into strips and made into juice. Now they are rare treats, something to look forward to on our infrequent trips back to the Philippines.

Instead, I’m learning to like what I can get. Strawberries, then cherries and blueberries, then firmer fruits like peaches and apples. Sugar peas and cherry tomatoes when they’re fresh from the garden, basil and dill likewise. Now the blueberries at the front are starting to darken, and I can’t wait to see what they’ll be like. (Taking the risk that I might be convinced to never buy blueberries again…)

With practice, it becomes easier to follow the seasons and sales. We find more recipes for making use of the kale and zucchini that show up in our agriculture box, get better at using up the bits and pieces, develop routines for filling up the freezer with ready-to-go meals. In fact, the community-supported agriculture box is an interesting experiment: it removes choice and forces us to be even more creative.

So here it is, and I wait for the first proper cherry tomato of the season. I can buy them any time I want, but I find that I want other things instead while waiting. =)

Love, web development, and imaginary friends

July 13, 2011 - Categories: geek

There’s an interesting thing here I’d like to explore: love and web development. (If only because you’ll probably never see Joel Spolsky write about it from this perspective…)

Not passion. Love.

Passion gets all the press. Web development has plenty of opportunities for clever hacks and technical brilliance.

This is a quieter thing. It has to do with why I develop and where I find the energy.

On all the projects I’ve had the pleasure of building with IBM, I’ve been able to build sites for friends. Well, not quite. Most of the time they don’t know they’re friends. There’s nothing stopping me from imagining they are. Sure, I’ll put my business hat on when negotiating requirements, but when I’m in the groove of development, I build for specific people.

Sometimes it’s frustrating. This week I worked my way through a twisty, tangled bug in an app I’m building for a local nonprofit. It was one of those embarrassing “I can’t believe I didn’t come across this when I was testing it myself” bugs, too, of which I still have far too many. You know that feeling when you disappoint someone? It sucks, even if they don’t know it. I’m getting better at pushing aside the self-recrimination and ignoring that feeling of being so limited, focusing instead on moving forward, holding on to this idea of friendly encouragement. One step at a time. I’m learning, too.

It’s hard to be patient. I want to get things to people quickly. Sometimes I miss things. I’m working on getting better at placing myself on the other side of the screen, seeing any rough edges, then coming back out and sanding those off.

When it rocks, though, it rocks. Then the work is also a gift, a little change in someone’s life. Maybe even many people’s lives. I’m looking forward to learning how to make it rock more.

Another thing I’m learning: taking that energy and applying it to a team. I want them to do awesome. I want them to feel awesome doing it. I’m still learning a lot about planning and coordinating, but hey, it’ll probably only get better from here.

Maybe someday code will just be code, but I hope not yet. The time is going to pass anyway, and the work will need to be done one way or another. It’s better for me to care than to not care.

I’m moving past the imposter syndrome – hooray for experience – but there’s still “wish I was even better than this; oh well, learning opportunity” to get through. Maybe sharing this will resonate with people, help you feel you’re not alone. When you look at code, do you see people too?

The first blueberries from our garden

July 14, 2011 - Categories: gardening

The blueberries are so shockingly flavourful that I wonder what the local supermarket has been selling us all this time.

Another garden milestone: We’re growing and enjoying our own blueberries. The nets were a great idea. I can see why the birds and squirrels didn’t leave us any berries last year. Now I want to edge the backyard in blueberry bushes.

Blueberry blueberry blueberry.

The cherry tomato plants are hitting their growth spurt. I’ve got two that I bought, four that I started, and three that just volunteered in the garden. No flowers yet, but we’ll get there eventually.

Blueberries, strawberries, tomatoes, basil, peas. I wonder what other garden joys I’ll discover.

A zucchini a day keeps the vegetable drawer okay

July 15, 2011 - Categories: cooking

This community-supported agriculture experiment has surprising benefits. I’ve eaten more zucchini in the past week than I have in the preceding year. It’s the combination of:

  • loss aversion: powerful force in behavioural psychology
  • lack of choice: commitment device; also makes surprising contributions to happiness – people feel unhappy when overloaded by choice; I know I sometimes blank at the supermarket, and my lists are sub-optimal because they focus only on a small set of produce
  • thousands of Internet pages dealing with zucchini recipes: because lots of other people have been in the same boat

The other day, I made zucchini fritters. Today I decided to make zucchini pancakes. I mostly followed the recipe, except for the following moments:

  • “Soy milk? I’m fine with dairy, so I’ll just use regular milk.”
  • “Ground flax seeds. Hmm, I can do that… <grind grind grind> ARGH, this is taking forever! I’ll just add some egg replacement powder.”
  • “Honey… Hey, that’s not vegan. Fortunately, we don’t have any dietary restrictions. I wonder if it works with crystallized honey…”

Result: W- woke up to a yummy and filling breakfast. He said, “Is it the weekend already? Did I sleep all Friday?”

I like zucchini pancakes more than I like zucchini fritters. This zucchini brownie recipe I’m trying needs some work, though. It’s a bit dry and crumbly. I hate to admit it, but I think it needs more zucchini. Then again, I didn’t quite follow the recipe for that one. The other two zucchini turned out to be cucumbers, so this batch has just one zucchini. I’ll try it again with the next CSA batch. (Because there’s always more zucchini…)

Zucchini zucchini zucchini. Slowly getting the hang of this!

Cake was not a lie

July 16, 2011 - Categories: cooking



Cucumber sandwiches. Chocolate cake. Burgers. Poutine. Free-flowing conversations that bring out all sorts of awesome things I didn’t know about my friends. Mmm.

Cucumber sandwiches, roughly based on this cooks.com recipe:

  • Peel 2 medium-sized cucumbers (or 1 large cucumber) and remove the seeds. Grate it.
  • Mix the cucumber with 1 tsp salt. Put it in a strainer, put the strainer in a bowl, and keep it in the fridge for at least 1 hour.
  • Mix a softened 8-oz package of cream cheese, 1/2 tsp Worcestershire sauce, and 1/2 tsp garlic salt.
  • Stir cucumber into the cream cheese mix. Spread on buttered bread.
  • Refrigerate until ready to serve.

The chocolate cake was roughly based on the Portal recipe, except I was out of whipped cream, so I didn’t do the white dollops with cherries on top, or the candle. So it was really more like Black Forest cake. 

I always stress out in the lead-up to these get-togethers. Is the house reasonably clean? (“I promise, this kitchen was clean-ish before I started frosting this cake…”) But then people come, and the conversation gets going, and it’s awesome.

Catching a break before I clean up the kitchen. Happy.

An elephant love story: Real stories of Manila Zoo

July 17, 2011 - Categories: life

I retell this story for my dad, whose stories about Maali and the zoo are mostly on Facebook and harder to get to for people who aren’t already one of his more than 4200 friends. I’ve edited it for clarity and storytelling, but you can read the original thread if you connect with him on Facebook. I’ve also added a few editorial notes.

Papa, Maali the Elephant, and me

Photo (c) 2010 John Chua – All rights reserved, used with permission

From my dad, John Chua:

I am a photographer and I would rather have my photos speak for themselves, but I need to tell Maali’s story.

I don’t own the elephant. I came to know Maali in 2001, when my daughter Kathy volunteered at the zoo. She loved animals and wanted to help. As a father supporting the dreams of his daughter, I went to Manila Zoo and helped convince the Zoo director to have these young people do their volunteer work.

The zoo volunteers gave talks to students on field trips, cleaned enclosures([Editorial note: Kathy Chua has some great stories about cleaning the crocodile pens…]), and organized zoo outreach programs that brought animals to schools in order to teach kids about them. I helped out by riding a bicycle around the zoo to check on visitors, reminding them not to throw stones at the crocodiles just to see if they’re alive, or giving cookies wrapped in plastic to the giraffes.

The volunteer group grew. We had bird shows and educational field trips. We were joined by volunteers from the International School, interns from La Salle and St. Scholastica, students from veterinary schools…

One day, I noticed that the zoo keepers just threw food into the enclosures for the animals to eat. “Instead of throwing the food and just doing your job, why don’t we all get to know the animals assigned to us, and learn more so that we can take better care of them?” I asked.

A zoo-keeper replied, Sir. Madaling sabihin iyan… Mahirap gawain. (Sir, that’s easy to say, but hard to do.)

I looked straight into his eyes and said, “Watch me. I will show you how.” I don’t ask people to do things I wouldn’t do also. I looked for animals I could learn how to take care of in order to show them that it could be done.

That crossed out several animals right away. Crocodiles: not only do they not speak English, they eat them. Tigers: also out. Snakes: Slimy and don’t show emotions? Molly, the giraffe: she just gets the carrots and leaves me.

One day, when I was going around, I made friends with the old zoo keeper for Maali, the elephant. The zoo keeper told me lots of stories, and I became fascinated. I began to visit her everyday, just watching her. She was bored. She walked around, doing nothing.

I asked the zookeeper what Maali’s favorite fruit was. Mangoes, he said.

The next day, I brought a kilo of ripe mangoes. I went to Maali’s enclosure and gave them to her. The mangoes were gone in 60 seconds – everything including the seeds.

Then I noticed that when I talked to her, her eyes looked at me so attentively. I knew she was listening.

I looked forward to seeing her every time I went to the zoo – of course, with a kilo of mangoes each time. Then I got smarter. To extend my conversation with her, I started slicing the mangoes into smaller pieces. I started helping the old man carry the grass and clean the poo. I made sure the old man was beside me whenever I was inside the enclosure.

I watched every elephant episode in Discovery Channel and bought all the books on elephants that I could find at the bookstores. I learned that elephants need to drink at least 50 gallons of water every day. I learned they love cooling their bodies with water and using sand to keep insects away. I learned that they could sense your FEAR by smell. I began to learn what made her angry or afraid. She didn’t like the low-frequency murmur of diesel engines idling. She hated red trucks, like the one that delivered Coca-cola. She didn’t like horses. She didn’t like the Selecta Jingle played by the ice cream cart. Trombones or bands made her poop.

Together with my daughter Kathy, we developed behavioral enrichment programs for Maali and the other animals. Kathy went to South Africa as part of Cathay Pacific’s youth programs, where she volunteered at Johannesburg Zoo and made friends with their behavioral enrichment program specialists. She learned a lot and planned all these programs for Maali. I got a pail and started splashing Maali with water. We brought in sand for her. We froze fruits in ice blocks. We hid food in tires for her so that she could find the food in them. We spread the peanuts all over her enclosure. I’d bring coconuts or watermelons, we’d play football, and Maali would eat them afterwards. The main idea was to get Maali to look for her food, work for her food. This got her to be active.

One day, Kathy told me about an essay contest offered by Discovery Channel called “Postcard from the Wild.” The contest asked: In just fifty words, write down why you want to go to Sri Lanka. “Wouldn’t you like to go to Pinawala and see Maali’s cousins?” Kathy asked. She volunteered to help me tell our story. On top of 8×10 picture of Maali and me, we wrote: “I want to go to Sri Lanka to learn more about elephants so that I can make Maali’s life better.”

It won.

Discovery Channel called me to offer me a 10-day tour for two people. I was excited. The first thing I thought of was to bring Maali’s zoo keeper, because he needed to learn more about elephants too. Of course, my wife was disappointed. Why not her? But the zoo keeper declined, so my wife and I went to Sri Lanka to visit the Pinawala Elephant Orphanage. That’s where Maali stayed for a while after being rescued from a pit, before she was given by the children of Sri Lanka to the children of Philippines. In Pinawala, we met the mahoots and showed them pictures of Maali and me. They recognized me as one of them, and we became instant friends. We even found the mahoot who accompanied Maali when she came to Manila.

I felt sad for Maali. She was alone and in a small space. I wanted to know more about Maali, and the old man shared his stories. Before Maali came to Manila, there was a bigger elephant named Sheba. Sheba was a circus elephant who was sold to Manila Zoo after the circus went bankrupt. Sheba didn’t like Maali, so they had to be separated. The zoo built a smaller enclosure in the elephant space. While one elephant walked around, the other elephant had to be locked in the enclosure to avoid fights. It must have been a traumatic experience for Maali.

I’d been caring for Maali for several months when the Singapore Zoo director came to visit Manila Zoo. He saw me inside the enclosure with Maali. He called the attention of the Manila Zoo director and asked him to call me to the office.

The Singapore Zoo director asked me why I was inside the enclosure. I said I was a zoo volunteer. He told the Manila Zoo director that I should be forbidden to go inside the enclosure. If anything happened, the zoo would be blamed.

I told the zoo director: “Sir, if I don’t do this, who can do it? Nobody. I am willing to sign a waiver, but let me continue my work.”

The Singapore Zoo director was impressed with my sincerity. He said, “Mr. Chua. In case you visit Singapore, please visit me in my office at Singapore Zoo and let me find out what I can do to help you in learning more about elephants.” He handed me his calling card.

Several weeks later, I was in the director’s office at Singapore Zoo. He introduced me to the head of the department and the other staff, and he asked me to see the chief trainer, Mr. Tan, the next morning.

When I met him, Mr. Tan was giving a bath to an elephant lying on the floor. “Are you the one from the Philippines?” he asked.

“Yes, sir,” I said.

“Can you put those gloves on and come and help me? This elephant is constipated. I want you to put your hand inside the rectum and pull out all the poop that you can find inside.”

“Yes… sir,” I said.

After half an hour of this, Mr. Tan said, “Good job. Come, let’s have a break for tea. What’s your name?”

“Sir, John Chua, Sir. I take care of an elephant in Manila Zoo.”

“Good, I will teach you a couple of things about elephants,” Mr. Tan said. Every day for a week, I took the 5am train to Singapore Zoo and reported to Mr. Tan at 7am sharp.

All the mahoots in Singapore talked to the elephants in Singhalese, the native language of Sri Lanka. They taught me the type of food that’s best for elephants. They taught me how to read elephant body language – the movements of ears, when elephants are faking a charge or doing it for real.

They introduced me to a baby elephant male. He was so adorable, I hugged him. A mahoot said, “Hug him while he is still young. He is a male elephant, and later, he will be dangerous. Better to have a female elephant than male.”

During lunch breaks, I roamed around the night safari area on a bicycle. In broad daylight, it was so different. I saw a big bull elephant taking his daily stroll with a huge log in his trunk and long chains attached to him. I asked the mahoots why. They said that male elephants are dangerous and unpredictable. Carrying a log keeps the elephant’s mind busy. If the elephant goes berserk, the long chains can be thrown around trees to hold him. (Later that year, that bull elephant injured his mahoot in the frenzy of being in heat.)

The mahoots taught me the weak points where they hit elephants whenever the elephants disobeyed orders. They gave me the metal hook that mahoots use to control the movement of elephants.

I learned so much from the trip and couldn’t wait to make Maali’s life better back home. I brought back photos of all the enclosures, and the use of open space inspired Manila Zoo.

When I saw Maali again, I took the metal hook and all the things I had learned from Singapore Zoo. The first thing I did was to hook Maali’s left ear like the way the mahoots showed me. She followed, but I saw that she was hurting. I stopped. I said to myself, “This is not the way to go, John. You are not a trainer. You are not going to have a show. This is not a circus. You are not going to hurt Maali because you want her to follow you, John. You are not going to hurt MAALI.”

I threw the hook away and hugged Maali. I said, “No, Maali. You can have your way. I am not going to hurt you.” So that was the end to my career of being the top-notch Elephant trainer. Sometimes Maali listens to me, sometimes she doesn’t, and it’s okay.

I was afraid to get close to Maali. I knew that if I was close to her, I’d begin to love her and care for her. I’d begin to feel how she feels. When she was young, she met her cousins and relatives in the Pinawala elephant orphanage. She would have remembered them. You know how elephants remember. It must have been traumatic for her to be captured again. She must have been put in a red diesel truck – that’s probably why she gets so angry at red diesel trucks – as she was taken to the seaport.

I’m afraid for her every night. No matter how big she is, she’s too weak to defend herself against people who can harm her: zoo visitors who throw plastic bottles and aluminum cans into her enclosures, disgruntled employees who might take their revenge, people who might poison her for their own greed in order to get Manila Zoo closed ([Ed. note: Manila Zoo sits on 5.5 hectares of great real estate in Manila]). I’m afraid organizations will just take advantage of her for publicity. I’m afraid I might lose her.

I have many dreams. I have made so many dreams come true. I dream that someday there’ll be a place for Maali. Not Manila Zoo, but stretches of open sugarcane fields. When I shoot on location in places like Pampanga or Batangas, I dream of Maali grazing among the sugarcane she loves. I often pay the workers to load sugarcane in my car so that I can bring the sugarcane to her. She loves them.

Our weather, the climate, the greenery, the hospitality of the people… this makes it the best place for Maali. Have you seen how the children respond to Maali? I love each time I let the children help me feed Maali. Many elephant sanctuaries pale in comparison to what we have in our country. There’s one in Tennessee – but the climate is cold for an Asian elephant, the surroundings are dry, and the elephants don’t interact much with people. Have you seen how Maali plays with my shoelaces? She can untie my shoelaces with her trunk. We play tug-of-war with it. I always lose, so I need to buy new shoelaces every time we play.

I never wanted publicity for Maali and myself. We enjoy life by ourselves. While I don’t own Maali and Manila Zoo provides most of the zoo, I do my share. I buy food for her. I provide a water spray machine for her showers, and other necessary things. I never complain. Even in the middle of a typhoon, I am always there for her to make sure she is okay. This one is for Maali.


Sacha here again. I tell this story because Manila Zoo has broken out into public consciousness thanks to an earnest but misguided blog post that’s calling for the zoo to be shut down. The cybersphere is abuzz. There are rumours that the elephant only eats one loaf of bread a day, and that the zoo keepers maltreat the animals. There are organizations putting together an online petition to shut down the zoo. You know how easy cyberadvocacy is. Just a few clicks and you can feel like you’ve made a difference. Strident blog posts are easy to retweet or reshare.

But the real story is deeper and more inspiring than any sensationalist blog post or picket line. My family has so many stories about Manila Zoo because of the way my sister and my dad have taken it into their hearts. Ask my dad about Maali and children. Ask my sister about nursing a sick pony throughout the nights. Ask the zoo keepers about the names and stories of the animals they take care of. Ask the countless people whose lives have been touched.

I’m glad people care about causes. Here’s one where you can make a real difference: not by calling for Manila Zoo to be shut down, but by volunteering and by being inspired. You can make a difference through such little things: picking up litter, giving talks, interacting with animals and people. Find my dad on Facebook and now on Twitter. Feel free to reshare this and get the real stories out.

Piano lessons

July 18, 2011 - Categories: life

J- and I have signed up for half-hour piano lessons on Thursdays. The lessons are well-priced and the studio is a short walk from the house. She’s been teaching herself lots of music – Fur Elise, Moonlight Sonata, Still Alive. No substitute for lessons, though, and it would be good for her to develop her technique and get better at playing both hands smoothly.

Music is like math or programming or language: a game of practising seemingly disjointed pieces that slowly come together into fluency. She practises on her own, running through the melodies of computer games and classical music. She’s starting to get those experiences of flow, I think. Sometimes I take a break to help her through a difficult chord or play a sequence for her, and then she’s off again.

Maybe that’s one of the reasons why people encourage kids to get into music – those early experiences of being good at something, being able to turn imagination into experience. 

Me, I wouldn’t mind brushing up on lessons and getting better at playing. I sometimes help J- with the tougher parts of music, and I do enjoy being able to play some of my favourites. Looking forward to sharing stories!

Dealing with web development and stress

July 19, 2011 - Categories: work

So you know the Drupal project I was happily toodling along on? I thought I’d been pretty up-front about what we could realistically do in the timeframe, and the project manager was on the same page with me. Some wires must’ve been crossed somewhere, because today I handled the status update with the client and we had one of those difficult resynchronization conversations. Oh dear. It might be a bit of a scramble to solidify the additional components in time for the launch.

The clients asked if anything bad had happened. No, it was perfectly normal developmental progress based on the requirements we discussed. It just took time.

After the call, I had a quick chat with my manager. I told him what was going on, and we talked about some other projects in the pipeline. He asked me if I was stressed out.

“I can’t be stressed out. Stressing out gets in the way of code,” I said. “I just have to knuckle down and get through it.”

I worked on user registration some more and got that sorted out. Then I took a nap. Naps become even more important in crunch times. They help me reset my mind and avoid negative productivity.

I worked on user profiles some more. Then I started writing this blog post. Writing is important to me. I can postpone reading books, playing the piano, or responding to personal mail. (I might be a little slow in responding; if so, you know why!) Writing is good, though. So is spending time with W- and J-.

It’s a good project, and I think we can make it all work – not by scrambling to work tons of overtime, but by being very clear about what’s needed for a minimum viable product. We’re going to focus on just the things needed to get them off the ground, and we’ll see what else we can do from there.

Future projects: I should definitely be there for status updates.

We’ll get through this!

Weekly review: Week ending July 16, 2011

July 20, 2011 - Categories: review, weekly

Work is heating up and there’s lots of things to do in life as well. Reasonably fast and steady wins the marathon!

Plans for last week

  • Work
    • [/] Project M: Tidy up user registration, get clients to start testing – sent stuff for feedback
    • [X] Project M: Implement more reports
  • Relationships
    • [X] Host get-together
    • [X] Help mount new cabinets
    • [X] Work on inventory app for mom – couldn’t show it to her this weekend; Patch(dog) passed away
    • Posted my dad’s story about the elephant
    • Helped nudge online conversations about Manila Zoo to be more constructive
    • Got through most of the vegetables, yay
  • Life
    • [-] Do some more gardening – Basil still growing happily in starter box, though

Plans for next week

  • Work
    • [ ] Scramble to get Project M closer to launch: user registration, session workflow
  • Relationships
    • [ ] Start piano lessons with J-
    • [ ] Book Philippine tickets
  • Life
    • [ ] Put together piano pieces to learn

Dealing with a heat wave in Toronto

July 21, 2011 - Categories: life

The weather forecast calls for highs of 37ºC (99ºF), with the humidity making it feel like 46ºC (114ºF). I look slightly enviously at the temperatures in Manila, with forecast highs of 32ºC (89ºF). Airconditioning keeps the house comfortable, but not cold. When J- comes in from the outside, the heat almost visibly cascades off her.

Here’s how we’re dealing with it:

  • We minimize cooking: Summer salads, burgers, and leftovers make for low-fuss and low-heat meals. Well, burgers still call for lots of cooking, but at least it’s outside, so we don’t have to waste any airconditioning energy on it. We sometimes plug the rice cooker into the outside socket, but I haven’t felt like making rice lately. (Gasp!) In lieu of rice, I’ve been toasting bread to go with eggs, cooking couscous as a quick-and-low-effort carb to go with sauteed kale and chard, and enjoying the vegetable experiments that W- makes out of cabbage, potatoes, and other leftovers.
  • We use fans to improve air circulation. The house’s air conditioning is fine, but it’s much improved with a few strategically placed fans. The fans often make it perfectly comfortable even without air conditioning.
  • We drink plenty of water. Well, I drink plenty of water. W- has the occasional Coke as a summer treat. =) Juice is my summer treat.
  • We wear hats when walking around. It’s amazing what a difference a good hat can make: it keeps the sun off your eyes, prevents squinting, and cools you down a bit. I really like my Tilley hat. It’s the same kind W- has.

How are you holding up?

Starting piano again

July 22, 2011 - Categories: learning

J- and I have started piano lessons at a nearby music school. The teacher evaluated her as Grade 3-4, and has assigned her some pieces to work on. Me, I’m slowly working my way through Alfred’s Adult All-in-One Piano Course Level 2. 

I was nervous. It was hard to remember to hit the keys and breathe. I’m sure I’ll get the hang of both over time.

My homework: the first part of the overture from the opera “Raymond”. This is the part that sounds like this:

… except I sound more like clompclompclomp-“How do I get my right hand to play a slur while my left hand is playing staccato!?”-clompclompslurclomp-WHEEZE-“Right, must remember to breathe”-clompclompclomp-“Oops!”–clompclompclompclomp.

Well, everyone’s gotta start somewhere. =)

Rhetoric and the Manila Zoo; reflections on conversations and a request for insight

July 23, 2011 - Categories: Uncategorized

UPDATE: So I decided to face fire with love. =) Check out Friends of Manila Zoo and share your stories!

One of the best things I learned from “Thank You for Arguing: What Aristotle, Lincoln, and Homer Simpson Can Teach Us About the Art of Persuasion” is this:

The basic difference between an argument and a fight: an argument, done skillfully, gets people to want to do what you want. You fight to win; you argue to achieve agreement.

I’m thinking about this now as I try to find ways to nudge the online conversation about Manila Zoo towards more of an argument that builds a better world instead of a fight that pits oversimplifications against defensive reactions. It’s difficult, but I believe it’s worthwhile.

Here’s the situation: People for the Ethical Treatment of Animals (PETA) and other organizations are trying to get Manila Zoo shut down. There’s a blog post with outdated pictures, an online petition, and lots of tweets and posts from people who get caught up in the cause.

I know what it’s like to feel outraged and to help mobilize online opinion to beat down something. In 2005, I spoke up about a search for role models for women in IT that shocked me with its pageantry. With other people sharing their thoughts, it steamrolled into enough of a public relations mess that sponsors pulled out and the contest was cancelled – regrettably not just for philosophical reasons but also for safety, as some extremists had threatened to throw acid. I don’t stand for that kind of violence, and I’m sorry it came to that.

Older now (and wiser, I hope), I wish I’d been more constructive than indignant. It can be more tempting to bring something down than to make it better, to resign something as being unsalvageable than to find the seeds of improvement in it, to be swept by the flood of reactions than to channel it into irrigating the fields of possibilities.

So here is what I want to do about this outcry against Manila Zoo: I want to help shift the discussion from criticism to constructive action, and I want to help bring out the stories that flesh out the picture of the amazing place it can be.

Here I confess my bias: It would probably take intentional, systematic cruelty from Manila Zoo custodians or a wonderful and funded plan for both transitioning the current zoo inhabitants to better sanctuaries and providing for reasonably-priced public animal-related education before I’d be convinced that shutting down the zoo makes sense. Having met the zookeepers, I doubt the first is possible. Being realistic about our chances, I doubt the second one is probable or that it’s even significantly better than the alternative of improving the current zoo.

I’ve led a privileged life. We never had to worry about having enough money for the zoo’s PHP 40 entrance fee each. (That’s less than 1 USD.) I’ve been to some amazing zoos. But I can appreciate a zoo that public school kids can come to in order to learn that elephants aren’t just illustrations in books and that snakes aren’t actually slimy. I can appreciate having a place where families can spend a frugal afternoon. I am much more in favor of helping the zoo instead of shutting it down.

I care a lot about Manila Zoo. I’ve gotten to know it better than most people have because my dad and my sister have spent so much time there volunteering. I’ve fed bananas to Maali the elephant. I’ve marvelled at the stories of my dad and my sister of the animals they got to know: how Daktari the tiger would lick my sister’s hand, all raspy; how one crocodile rose up to block another that had been thinking of attacking the volunteers; and of course, all those touching moments between children and their parents as they discover the wonders of the zoo.

I’ve seen the zoo’s sad side, too. I cried when the giraffes Sally and Molly died, and even more when I heard why – thoughtless visitors feeding them junk or littering in their area. I’ve tried to convince visitors to stop pestering the animals in the hope of seeing activity. (Please don’t throw anything at the tiger; yes, he’s sleeping, but that’s because it’s hot – wouldn’t you prefer taking a siesta at this time too?)

I have to work on keeping cynicism from gaining a foothold. Having heard of PETA’s militant demonstrations and practice of euthanasia while similar organizations manage to achieve high adoption rates, I confess to being less than thrilled with them. When people argue that Manila Zoo’s 5.5 hectares should be put to better use and that the zoo should at least be moved far away from the city, I hear echoes of other people’s concerns that these reactions are being fanned by some commercial developer who desires that land. I’m trying to focus instead on the good things in this furor: that there are many people who care, and that maybe this is an opportunity to help people turn that caring into positive action.

It’s easy to say, hard to do. Easy to fill out an online petition, harder to actually visit the place and look for ways to make a difference. Easy to blame other people or the government, harder to see how you can make things better.

Here’s what I argue: You can make a difference, and it’s not that hard. I think the biggest problems are that people litter and that people tease the animals by throwing stuff at them. The zoo has tried signs. Volunteers and zoo keepers have tried picking up after other visitors. What can we try next? Maybe emotionally intelligent signage. Maybe more trashcans around the zoo, perhaps sponsored by companies. It’s a behavioural change, and that’s what makes it difficult. Manila Zoo isn’t an island of trash in the middle of a pristine city; we’ve got a lot to collectively learn about taking care of our surroundings. It’s just that at the Zoo, there are real consequences to our misbehaviour, and it’s not as easy to amass a private army of cleaners. I can understand the zookeepers’ reluctance to go too often into the tiger’s den to clean up the juiceboxes people throw. (I wouldn’t go in there even once.)

Now, about this teasing animals by throwing stuff at them, and about the zoo animals being slow and bored-looking… Even in the best zoos I’ve been to, many animals rest in mid-day heat. The lions don’t actually sleep tonight; they sleep in the afternoon, then hunt when it’s cool. That’s why Singapore has a Night Safari. When you go to Manila Zoo, don’t expect to hear elephants trumpeting and tigers roaring. Let them sleep, and admire them from a (very safe) distance. And don’t poke the chimps, either, even if they’re doing things that may lead to awkward conversations about the birds and the bees later. 

Yes, part of it is because the animals could use more behavioral enrichment. The techniques for that are known – help animals play more as part of getting their food. It’s like putting Maali’s mangoes inside tires (being careful to retrieve the tire when she’s done playing with it) and freezing the tiger’s food inside ice blocks (ooh, tiger popsicles). Many of these ideas are surprisingly inexpensive. Volunteer, and you might be able to help make them happen.

So here’s where we are. On one hand, there’s an online campaign to shut down Manila Zoo. It has a clear, visible focal point. It has sensationalistic headlines and pictures. I try to believe that people are more likely to be earnestly misinformed rather than intentionally deceptive. I heard a PETA volunteer claimed in a press meeting that Maali was fed only one loaf of bread a day. My dad pointed out that if Maali can eat all those bananas and mangoes and coconuts, surely she could afford more than one loaf of bread. Perhaps the emphasis had been on only one loaf instead of trying to imply that that was all she ate; telling the literal truth while leaving things wide open to convenient misinterpretation? Ah, rhetoric.

On the other hand, there are volunteers – past and future – who are helping make a difference, and all the children and other people who have been touched by this up-close-and-personal experience with the zoo. I don’t have the skill to mobilize people in a show of support – what would it be, the “Actually, the Zoo is Okay; Yes, It Could Be Better, and Here’s Where You Can Start” campaign?” – but my dad does. He used to post a lot on the public forums of PinoyPhotography.org, but now he mostly posts on Facebook, so I’m here to bridge the gap and help get the word out. (My small contribution this week: sponsoring a Flickr Pro account for my dad and nudging him to use it so that he can share more pictures. ;) ) And it’s awesome that other people are thinking of re-forming the zoo volunteer group and helping make the zoo better.

The real story is much more inspiring. I don’t want people to pick sides, I want people to make things happen: either an awesome plan for a zoo alternative, or a better Manila Zoo.

So, how do we do this? We’re probably never going to be able to nudge the people who are firmly against zoos or Manila Zoo. It’s difficult for people to change what they say once they’ve taken a hard line on it, and doubly difficult when there’s face involved. Ah well. How can we show there’s value worth preserving in the Zoo, and not everyone’s calling to have it shut down? How can we refocus other conversations on how to go forward from here?

Photo (c) 2001 John Chua – All rights reserved – Used with permission

(Papa, you should totally think about releasing some of your pictures under the Creative Commons license – maybe Attribution, Sharealike, and/or Noncommercial…)


Public transit day

July 24, 2011 - Categories: life


Today was a day for buses, subway rides, and lots and lots of walking around. We’re helping J- learn how to navigate the city and use public transit. It’s a very useful skill, and she’ll need it to get to karate and piano lessons near our house when she’s staying with her mom. I tagged along with W- for the company. There were lots of things to do at home, but it was still a great use of time – company makes time pass faster.

After J- successfully navigated to Value Village, her music lessons, and the house of one of her friends, we celebrated by getting her the MapArt Pocket Toronto Atlas and a pack of Post-It flags. We also had ramen down at Kenzo near Dundas Square – mm! I think J-‘s getting the hang of it, particularly with such good things waiting at the destinations. =)

I use public transit a lot. W- occasionally takes it, too. The sooner J- can learn to independently use public transit, the more she can explore and do on her own. Exciting times!

Photo (c) 2009 Danielle Scott, Creative Commons Attribution Copyleft License

Weekly review: Week ending July 24, 2011

July 25, 2011 - Categories: review, weekly

It’s been a busy week, what with all the hubbub about Manila Zoo. My dad and my sister have been doing brilliantly back home, and I’m supporting the Zoo the main way I can: by gathering and sharing stories. I think we’ve turned the corner. There are still negative reactions, but the positive responses are gaining critical mass.

Work is going well too. Also busy there, what with my main project getting closer to user testing and launch, and the other I need to scope. I’m sure things will work out just fine.

Plans for last week

  • Work
    • [X] Scramble to get Project M closer to launch: user registration, session workflow: Lots of bugs fixed, good progress
    • Made some improvements for Project C
  • Relationships
    • [X] Start piano lessons with J-
    • [X] Book Philippine tickets
    • Helped organize Friends of Manila Zoo website and social media presence – I think we’ve turned the corner
  • Life
    • [X] Put together piano pieces to learn
    • Started learning from a more interesting Latin book
    • Did lots of gardening

Plans for next week

  • Work
    • [ ] Get Project M ready for user testing
    • [ ] Work on scoping project T
  • Relationships
    • [ ] Help people connect with each other regarding Manila Zoo
  • Life
    • [ ] Practise piano

Cats in high places

July 26, 2011 - Categories: cat

Some cats love high places. With a little planning, it’s easy to give kitty a great view. Here are Luke and Leia hanging out on top of the new cabinets we installed in the kitchen:

Cabinet cats

We’ve left enough space for them to stand up and walk around on those cabinets. How did they get up there? Easy. They jump on the chest freezer, then up and across a series of shelves, then down to the pantry, and then up to the cabinet. I’ll see about posting a video sometime. It’s a system similar to this one.

There are a lot of pet-related furniture hacks. We haven’t done anything nearly as serious – mostly just ready-made parts arranged to let the cats climb up and over our heads. Oh, except for the cat perch that we made using lumber, sisal rope, and leftover carpet.

Even without any special arrangements, cats will often find some way to amuse themselves. One of our cats loves hanging out on top of our laundry sorter, which is a covered set of three compartments with a canopy like that of a four-poster bed. I don’t know why it has a canopy. Maybe the designer has a cat who also likes high places.

Speaking of cat hacks, this video from Japan Probe (via Cute Overload) makes me think about breaking out the LEGO Mindstorms kit we have. 

legocat jpnprobe by peakfloods

Our cats are sweet and amusing, and they make us laugh much more often than they mess up. =)

Sketchnotes from Quantified Self Toronto meetup: Conferences, pollution sensing, and growing old at home

July 27, 2011 - Categories: quantified, sketches, sketchnotes

14 people at hacklab.to today for the Quantified Self Toronto meetup:




Stuff I’m going to do before the next meeting (~6 weeks?)

  • Get back into tracking time so that I can check on hobbies and share what I’m learning with other people
  • Track community-supported agriculture box in more detail, cross-reference with groceries

To find out about upcoming meetings, join the Quantified Self Toronto meetup group!

Piano lesson week 2

July 28, 2011 - Categories: learning

I’m starting to get the hang of the first part of the overture from “Raymond” and this bluesy sort of piece from Alfred’s Basic Adult Piano course. It’s a bit mind-boggling, trying to figure out how to play staccato with my right hand while playing smooth, connected notes with my left. I find it helps to stop thinking about the music and start listening to it. Obvious, you might think, but I have to work on figuring it out. Or on not figuring it out, and going with the flow.

J- is also learning how to play the piano. She’s starting in grade 1 so that she can practise reading the notes. J- plays the piano like I type QWERTY: untutored, we hit the keys with whichever finger is closest, which is fine for pecking things out, but which can be limiting. I fixed that on the computer keyboard by switching to Dvorak and going through self-paced training exercises. Since you can’t exactly re-layout a piano keyboard to rejig your mental connections, there’s nothing to do but to unlearn those habits and then learn new ones.

I’m working on dynamics, tempo, and getting the hang of thinking in these different keys. I play the piano like I program. I get carried away by the fun and easy bits, and then I slow down for the parts I have to think about some more. One of the tricks with piano is to slow down even for the parts that you’ve figured out so that you can play at a sustainable pace throughout. Hmm. Maybe that’s like life, too.

Good mental exercise. Glad I’m doing it. Going for lessons (actual paid-for lessons that take up a chunk of my day, with exercises and homework I’m accountable for!) looks like it’s helping.

Long weekend ahead

July 29, 2011 - Categories: sketches, work


The long-weekend fairy has snuck up on me again. (Don’t you just love it when that happens?) I’m tempted to scramble because there’s so much to do at work, but that’s when it becomes even more important to slow down.

I like web development and the ability to build something that makes people’s lives better. I need to figure out a way to reduce the stress of having a high “bus factor” – the risk to a project if someone gets hit by a bus (or wins the lottery, in a more positive version). You might think that’s a risk with rare consequences – after all, I’ve gotten hit by a bus precisely zero times. (Ditto for the lottery, but that’s also because I don’t buy tickets.) A high bus factor means that if two or more projects go critical around the same time, things get tough.

I liked working in a larger development team, but I haven’t been able to do that recently. I’m trying to prepare for the future by investing in training other people, but people shuffle in and out of teams, so it’s tough. But I’m picking up good skills in estimating, working with clients, digging into the possibilities of Drupal and Rails, and patiently sanding down the rough edges of the websites I’m building, so I’m making good use of the time.

As it turns out, piano is like yoga for the mind. Playing the scales is relaxing. You can tell when your mind drifts, because your fingers get tangled up or you hit the wrong note.

Building stuff is relaxing, too. I just have to dig deep enough into it to remember that feeling.

Mornings at our house

July 30, 2011 - Categories: cat, sketches

imageNeko and Leia have taken to meowing us awake in the morning. When I stumble out of bed and pour some cat food into their bowls, they sniff, eat a few pieces, then wander off. Not hungry, then. They just want us up and out of bed. So I pick them up and cuddle them a bit, and then they go off to nap.

One day, W- had an idea. We got revenge on the kitties by meowing at them while they were napping. The morning meows stopped for a while. Now they’re back again.

I guess sometimes aloof kitties just want company.

Software and making pots

July 31, 2011 - Categories: geek, sketches, work

imageThis is what software feels like. It’s squishy and floppy, and it falls over from time to time while you’re making it. It changes. And at the end of the day, we’d really, really, really like it to hold water. Or marbles, or kittens, or whatever people want to put into it.

I think I’m going to focus on slowing down and building things better. This idea of a minimally viable product fascinates me. What’s the essential part of a system? How can we make that solid before moving to everything else? Make sure the pot can hold water before you glaze it.

There’s a teaching story I like about the importance of practice. Making lots of pots can be an easier and more effective way to learn than trying to make a single perfect pot, as long as you’re paying attention and learning from the pots you make. Well, that’s how the story goes. In real life, it’s more like “But I want to make sure this pot holds water, and why aren’t the sides straight, and I thought I plugged that leak, ooh, hey, look, that part’s all pretty now, well, here goes…”

Weekly review: Week ending July 31, 2011

July 31, 2011 - Categories: review, weekly

I thought I’d feel guilty about being on holiday while other people on my team – clients and IBMers in the US – are working, but it’s been a weekend well spent, and the Civic Day holiday will be a much-welcome transition period (plus a chance for more awesomeness).

In addition to taking care of our usual chores, we spent Saturday volunteering at Free Geek Toronto. The idea behind Free Geek Toronto is simple: help people learn computer skills and reduce electronic waste by refurbishing or recycling old computers, which can then be sold at a low cost or donated. They really need people to teach classes on how to build computers, so W- and I will start a series of classes next week.

Sunday was a kitchen sort of day. We took the pots and food containers out of the cabinets, separating them into keep-donate-repurpose piles. We reorganized the salad fixings and the spices. We emptied the chest freezer and the fridge freezer, separating different kinds of items using cloth and plastic bags: vegetables in the green bag, meat in the red, and so on. Then a big batch of cooking: two roast chickens stuffed with couscous for lunches throughout the next few weeks, stir-fried rice to use up leftovers. I’ll try scalloped potatoes and oatmeal cookies again sometime – more practice needed. Now we’re staying up late for baked beans, which will finish cooking at around 2.

Tired, but it’s a great sort of tired.

Plans from last week

  • Work
    • [X] Get Project M ready for user testing
    • [X] Work on scoping project T
    • Bounced around ideas for an IBM comic
    • Put together update for my manager
  • Relationships
    • [X] Help people connect with each other regarding Manila Zoo
    • Volunteered with W- at Free Geek Toronto
    • Worked on cleaning up kitchen
    • Attended Quantified Self meetup
  • Life
    • [X] Practise piano – 30-60 minutes daily
    • Got back into the swing of drawing – sketchnotes, drawing for fun

Plans for next week

  • Work
    • [ ] Send mid-year update to manager
    • [ ] Work on Project M issues/requests
  • Relationships
    • [ ] Work on Latin – 30 minutes daily
    • [ ] Help J- with piano
  • Life
    • [ ] Practise piano – 30 minutes daily
    • [ ] Draw – also 30 minutes daily
    • [ ] Track a complete week of time