November 2010

Saving team members from RSI

November 1, 2010 - Categories: geek, work

I watched Jen: Ctrl-C, Alt-Tab, click, click, Ctrl-v, click, click, click, click, click, Alt-Tab, Down, Ctrl-C… One by one, Jen copied the tasks from our Drupal planning spreadsheet to the Rational Team Concert task-tracking system.

I didn’t know if RTC had a batch import system we could use, but I’d rather do a macro using AutoHotkey instead of letting Jen copy the information one row at a time. (And with so many clicks, too!)

Fifteen minutes and some tweaking later, I have an AutoHotkey script that copies the information, creates the task, and moves to the next row. A few minutes, and I’ve copied all the rest of the tasks.

Less risk of repetitive strain injury for everyone, more interesting work, and the ability to easily handle future spreadsheets. Yay!

I show her the AutoHotkey script at work. “Coool,” she says.

Time to organize the tasks by story. Drag-and-drop to the rescue. Not easy with a mouse – Fitts’s law, small targets – but it’s easy enough with the tablet stylus. It feels natural.

Keep an eye out for the little things that you can fix with just the right tool. =)

AutoHotkey script:

   CoordMode Mouse, Screen
   WinActivate, Planning
   WinWaitActive, Planning
   Send ^c
   Sleep 200
   WinActivate, IBM Rational Team Concert
   WinWaitActive, IBM Rational Team Concert
   Click 972, 346  ; add
   Sleep 500
   Click 927, 406  ; task
   Sleep 500
   Click 468, 154  ; summary text field
   Send ^v
   Send {TAB}{TAB}
   Sleep 100
   Send {DOWN}  ; filed against
   Send {TAB}{TAB}{TAB}{TAB}
   Sleep 100
   Send 1  ; priority
   Send 1
   Click 807, 125  ; save and close
   Sleep 500
   Send {PgUp}{PgUp}{PgUp}
   WinActivate, Planning
   WinWaitActive, Planning
   Send {ESC}{DOWN}

Book: Choose to be happily married: How everyday decisions can lead to lasting love

November 2, 2010 - Categories: book, love, reading

Bonnie Jacobson, PhD., with Alexia Paul
2010 Adams Media, Avon, Massachusetts
ISBN 13: 978-1-60550-625-8

The book consists of short chapters that explore common conflicts and positive approaches in committed relationships. Each chapter includes one or two case studies, ways to recognize the conflict, and tips for resolving the conflict. This book is a good read for couples who are beginning to find themselves ensnared in repeating conflict patterns because they can identify and get tips for their situation. Couples who are starting out may also find it useful as a way to recognize potential conflicts before they become established.

  • Flexibility

    Responsive Reactive
    Good judgment Critical judgment
    Expressing your true self Conforming to a role
    Autonomy Isolation
    Surrender Submission
    Establishing space Neglect
    Patience Passivity
    Benign boundaries Emotional tyranny
    Awareness of limits Emotional recklessness
    Embracing change Preserving the status quo
  • Communication

    Taking responsibility Blame
    Needs Wants
    Detach Withdraw
    Speaking up Silence
    Giving the benefit of the doubt Making assumptions
    Intimate listening Hearing
    Influence Control
    Constructive criticism Destructive criticism
  • Personal power

    Deciding Craving
    Fighting fair Fighting unfair
    Support Protection
    Forgiving Forgetting
    Good selfish Bad selfish
    Family loyalty Self-interest
    Joy Happiness

Thoughts on speaking

November 3, 2010 - Categories: presentation, speaking

I always ask why I let myself get suckered into preparing a presentation. I struggle with ideas, wrestling with them until I can make sense. I stutter and sweat in the spotlight. Why bother?

But I can’t deny that I enjoy presenting more than other people might. No, not the act of presenting. That’s the tuition I pay. I enjoy that struggle, the tangled thoughts turning into stories. Sometimes I propose talks on topics I don’t know much about because I’m interested in what we’ll find out along the way.

I don’t have any standard speeches. Everything has to be on the boundary, even the old talks people like and ask me to revise. I need to learn something new each time I speak. Sometimes it’s the delight of being wrong and of arriving at an better understanding.

A talk isn’t a talk unless I can make it a conversation. If it’s just going to be a speech, no questions, no answers, I may as well leave it as a blog post or a video. I want to learn from people. I feel like my talks with no discussions trail off in mid-air, interrupted by silence. Sometimes I need to prepare these kinds of questions myself – standalone presentations viewed by strangers, talks in constrained formats for fun and creativity. I want people to ask questions anyway.

Presentations are scary, but they’re a fun way to learn. So maybe I’ll give up on my one-talk-a-month constraint, which I sometimes didn’t follow because of work or interesting opportunities. I don’t want to travel for talks, because that takes too large a chunk of personal time (even the work trips do). I’m comfortable with virtual presentations, and people have told me that my energy and passion come through. If the cost for a presentation-worth of learning is an evening or two of focus, it’s a decent trade – especially if I can get lots of reuse and ongoing insights from it.

How much time does it take to blog?

November 4, 2010 - Categories: blogging


Me? Five to ten minutes extra, tops. That’s for my most useful posts: the ones where I’m sharing how to solve a problem or answer a question I’ve come across. That’s all it takes to strip out sensitive information, format it for readability, pick tags, and throw in a few hyperlinks if I’m feeling diligent. I’ve already done the hard work of solving the problem or answering the question. I might as well spend an extra five minutes to make it part of my personal reference library and share it with search engines.

I take longer to write my other posts – the ones I write from scratch. But that’s not blogging time, that’s thinking time. I’m going to have to think through things anyway. For example, it usually takes me four hours to prepare a presentation, from brainstorming key points and examples to organizing everything into a coherent story. At some point, I usually write things down into an outline, and from there, I often write full speaker’s notes.

Whether or not I blog something complex like a presentation, I’ll still spend time thinking through it. Blogging saves me time and stress because I don’t have to worry about forgetting anything important, and it allows people to not only share that resource with others but also to stumble across it through search engines. Five minutes to post presentation notes and share the slides on Slideshare – okay, maybe closer to ten minutes because I like cross-linking them, which results in a bit of a chicken-and-egg situation – that’s nothing compared to the return on investment I get from sharing.

At this point in my post, for example, I’ve spent eight minutes thinking through typing. This is one of the reasons why I encourage everyone to learn how to touch-type. When you don’t have to think about typing, you can type as a way of thinking. You can have a record of what you’re working on for very little extra effort. “But I type so much slower than I think!”, you say. Personally, I catch myself thinking that when I’m thinking too quickly, I’m wasting a lot of effort by going around in circles or working on things I’m going to forget. Slowing down to my typing speed is not a problem.

In fact, my bottleneck isn’t typing. The previous four paragraphs (almost 380 words) took me 10 minutes to write, giving me a thinking+typing speed of about 38 words per minute, or 1.5 seconds per word. On the other hand, a typing test rates me at about 110 wpm (using a software-based Dvorak keyboard layout, on a Lenovo X61 keyboard), or about 0.5 seconds per word. Where did that other second go? Thinking. I tend to speak at 200 wpm or so when I’m excited (0.3 seconds a word?), so obviously, I can think faster – but how much more value is added by that, or taken away at that speed? Slower thought is worth the clarity and reach.

There you have it. A post I’ve recycled from something else – a presentation, an answer, a technical solution? Five to ten minutes extra, with more time if I’m crossposting or illustrating or doing anything fancy. A new post like this? 20 minutes, and now I have something I can link to in case this comes up in conversation again. =) (I have many recurring conversations, most with different people, some spread over years. Each time we revisit a topic, it becomes richer.)

How much time does it take me to write? The real answer is probably a negative amount. If I don’t write about things I’m thinking about, I waste more time thinking in circles and solving problems all over again. This saves me time.

How much time does it take you to write?

Image (c) 2006 Alexandre Duret-Lutz, Creative Commons Attribution Sharealike License

Where do you find topics to write about? How to have tons of topics

November 5, 2010 - Categories: blogging, writing
This entry is part 6 of 19 in the series A No-Excuses Guide to Blogging


People often ask me how they can blog more.

The easiest blog post to write is the answer. It is also the most useful. You start with a question, and you stop when you’ve answered it.

Where do you find questions? In your e-mail inbox, in your conversations, in your work, in your life, in the things you want to learn or do. Everything starts with a question.

Always have questions. Learn intentionally. Make yourself a curriculum of questions you want to explore, and share what you learn along the way. Ask and you shall learn.

You may not know the answer. Write as you figure things out. Share those in-between steps, the questions you ask, the partial answers you find. Show your work. Help people build on what you’ve shared.

Watch other people who answer questions. Learn not only from their answers, but also their problem-solving techniques.

Don’t be afraid to return to a question. The best questions teach you each time you attempt them. For example: How can I do this better? What is the meaning of life?

Even simple questions like “Where did I put my keys?” can lead you on an adventure of “How can I avoid losing my keys?” and “What would it be like if I were better organized, and how can I get there?”

If you ever run out of your own questions, or if you want to prioritize which answers might be more useful, look at other people’s questions.

When you become the person who can answer questions – or at least give a good try – people will come to you with more questions. What a gift!

You can spend a lifetime answering questions. In the process, who knows what you’ll discover and share?

Photo (c) 2008 the Italian voice – Creative Commons Attribution Licence

My reading round-up

November 6, 2010 - Categories: book, reading
  • Books

    The Happiness Advantage: The Seven Principles of Positive Psychology that Fuel Success and Performance at Work
    2010 Shawn Achor, 978-0-307-59154-8

    Are people happy because they’re successful, or successful because they’re happy? Achor summarizes a lot of research into positive psychology, sprinkling anecdotes from corporate consulting and day-to-day life in between easy-to-read findings. Achor also shares some useful tips for changing your behavior.

    If you like this, you might want to read Learned Optimism: How to Change Your Mind and Your Life for another research-backed practical approach to happiness. If your taste runs towards life-as-experiment memoirs, check out The Happiness Project.

    Writing About Your Life
    2004 William K. Zinsser, 1-56924-468-5,

    In this memoir, William Zinsser not only shares tips on how to write about your life but also demonstrates those tips in action. He sometimes steps out of the narrative to point out how the memoir works. Definitely worth a read if you’re writing a personal blog, or any sort of nonfiction that could benefit from story.

    Well Connected: An Unconventional Approach to Building Genuine, Effective Business Relationships
    2010 Gordon S. Curtis and Greg Lewis, 978-0-470-57794-3,

    This is an intermediate/advanced book on targeted social networking. It’s a good book to turn to when you have clear goals and you need to figure out how to reach the specific people who can help you achieve them: the right person, the right approach. It builds on reciprocity and suggests several ways you can offer value.

    Life’s Too Short to Fold Fitted Sheets: Your Ultimate Guide to Domestic Liberation
    2010 Lisa Quinn, 978-0-8118-6993-5,

    This book boils down into: Don’t stress out so much, and here are some productivity, housekeeping, home decoration, and entertaining tips for making life easier. I’m particularly looking forward to trying the section called “17 meals made from a deli chicken.”

    The Age of Productivity: Transforming Economies from the Bottom Up
    210 Edited by Carmen Pages, 978-0-230-62352-1

    This turned out to be a deep research collection on the economics of Latin American companies. Interesting section on company tax evasion and the effects on productivity: tax-evading companies stay small to avoid attention, but that means they can’t enjoy economies of scale.

    The Heart of Simple Living
    2010 Wanda Urbanska, 978-1-4402-0451-7

    Typical tips on simplifying, decluttering, and developing the domestic arts. Good tip on reciprocal dining, which is more like a time/meal exchange among friends instead of a dinner party. More focus on environmental sustainability than most books I’ve read in this field.

    The Art of Barter: How to Trade for Almost Anything
    2010 Karen S. Hoffman and Shera D. Dalin, 978-1-60239-953-2

    This book covers why, how, and where to swap instead of sell. Might be handy for negotiation practice.

    Choose to be Happily Married: How Everyday Decisions Can Lead to Lasting Love
    2010 Bonnie Jacobson, PhD with Alexia Paul, 978-1-60550-625-8

    See my notes elsewhere.

    The Complete Works of Montaigne
    1943 Translated by Donald M. Frame, 0-8047-0484-8

    I’m not done with this one yet. There’s a lot to read and learn in this collection of essays, travel journals, and letters from the man who invented the essay. I’ve skimmed the Gutenberg Project’s version and the John Florio translation, but Donald Frame’s translation is the style I like the most. I look forward to learning more about philosophy, history, and assorted topics. Thanks to Ryan Holiday for the post about Montaigne’s work!

    Pretty good haul for one week.

  • Other blog posts I liked

    The other day, I heard a weather forecast use the word “flurries”. Winter’s coming! Fortunately, Lifehacker has tips on winterizing your body. Me, I’m renaming winter to “baking season.” Or soup season. Or hot chocolate season. It’s also a good time to do social experiments, like getting better at giving gifts and setting up time to hang out with friends.

    *British comedian Stephen Fry rants about language snobs and the evolution of English.* He convinces me to reconsider my gripes about people using “action” as a verb, as in: “Please action this survey.” I can see this will be a tough thing to get over. Fortunately, IBM gives me many opportunities to practice this new attitude.

    Want to know if it’ll be worth picking up that hammer? DIY or Not compares the average cost of professional labour or do-it-yourself resourcefulness. It also tells you what kinds of projects the site’s readers would prefer to DIY or hire. For example, installing kitchen wall cabinets yourself might save you ~$800, but most people would rather have someone else do it. This site would be even better with a social network makeover. Wouldn’t it be cool to share your experiences with DIY or hiring things out, and your actual costs?

    Ever been interested in doing something, only to be discouraged because you suck? The Montreal Improv blog shares a great tidbit from Ira Glass. You might have started cat painting because you like . In the beginning, your abilities can’t match up your taste. Practice is the only way to close that gap.

Weekly review: Week ending November 7, 2010

November 7, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [X] Work on yearly review documentation
    • [X] Give presentation on social media and retail
    • [X] Work on Drupal project: get integration server set up, etc.
    • Also gave presentation on intranet blogging
    • Drupal: Wrestled with Calendar and Faceted Search, still figuring out how to display faceted search results in a calendar
  • Relationships
    • [X] Write stories
    • [X] Smoothen household routines
    • Kitchen extravaganza! Baked beans, brownies, 32 roast chicken lunches (thank you, deli chicken) for freezing, chicken stock
    • Tried new recipe: apple-parsnip soup. Mmm!
    • Played Munchkin with Linda and Tim
  • Life
    • [-] Go to writing group
    • [X] Redeem salon coupon
    • Checked out human book program at Toronto Public Library
    • Bought fall/winter biking things
    • Experimented with waking up early

Plans for next week

  • Work
    • [ ] Drupal: Display faceted search results in calendar form
    • [ ] Work on yearly review documentation – project assessment and personal business commitments review
  • Relationships
    • [ ] Watch Wicked with W- and J-
    • [ ] Improve household routines: declutter and streamline
  • Life
    • [ ] Attend writing group session
    • [ ] Bike

The story of the shoes at our wedding; also, wedding pictures

November 8, 2010 - Categories: life, story

Here are some of the wedding pictures:

Wedding pictures

People found the shoes we wore remarkable, so let me tell the story for all the people who weren’t there.

W- had formal shoes from the time we attended a wedding in the Philippines. I had cream flat shoes that went well with the dress. But J- didn’t have any formal shoes that fit. She had grown size-7 feet while we weren’t looking.

Time to shop for shoes. On a good day, it’s hard to find a simple, flat, dressy-but-not-too-formal style. In the weeks before a wedding (and as retailers replace their summer flats with fall boots), it’s even harder.

We must’ve checked five or six stores before we found a shoe that fit well, had a low heel, and would go well with a dress. The shoe was too dressy for school, though. W- said, “I’m not paying that much for shoes that she’s only going to wear for an hour.” The man I married is as frugal as I am.

We joked about the Chuck Taylors we’d seen in Aldo. It was pink plaid. W- looked at me. “What about the Chucks? She can pull off the look,” he said. “We can wear whatever we want,” I said. “We’re not optimizing just for photographs.”

J- lit up. Sold!

We headed back to Aldo’s. For fun and family solidarity, W- and I picked out our own Chuck Taylors too. I chose a gray plaid, and he chose a bright red.

J- wore her Chucks to the wedding, while W- and I brought ours in a bag. After the wedding ceremony, we changed into our Chucks and had fun.

So that’s the story of the shoes. They’re about choosing everyday life over stereotypical expectations, the cultivation of in-jokes, and the serious fun of love.

How to use Drush to download and install Drupal modules

November 9, 2010 - Categories: drupal, geek, tips, work

One of the best things about building websites with Drupal is that there are thousands of modules that help you quickly create functionality.

To set things up, you need to download Drush and add it to your path. For example, you might unpack it into /opt/drush and then add the following line to your ~/.bashrc:

export PATH

Reload your ~/.bashrc with source ~/.bashrc, and the drush command should become available. If you’re on Microsoft Windows, it might need some more finagling. (Or you can just give up and use a virtual image of Linux to develop your Drupal websites. You’ll probably end up much happier. ;) )

Once you’ve installed Drush, what can you do with it?

Drush is a huge time-saver. For example, I install dozens of modules in the course of building a Drupal website. Instead of copying the download link, changing to my sites/all/modules directory, pasting the download URL into my terminal window after wget, unpacking the file, deleting the archive, and then clicking through the various module enablement screens, I can just issue the following commands to download and enable the module.

drush dl modulename
drush en -y modulename

(The -y option means say yes to all the prompts.)

So much faster and easier. You can use these commands with several modules (module1 module2 module3), and you can use drush cli to start a shell that’s optimized for Drush.

Drush is also useful if you’ve screwed up your Drupal installation and you need to disable themes or modules before things can work again. In the past, I’d go into the {system} table and carefully set the status of the offending row to 0. Now, that’s just a drush dis modulename.

Drush has a bucketload of other useful commands, and drush help is well worth browsing. Give it a try!

Getting more drawing into my life

November 10, 2010 - Categories: drawing, sketches


Reinvention: virtual storytelling summit Nov 11 – 22, 2010

November 11, 2010 - Categories: Uncategorized

Update: May 12 2012: Hmm, files are missing. Sorry!

UPDATE: Here are my sketchnotes from the first day. Click on each one to view the full-sized version. Want to share this post with others? Short URL: . (Follow me on Twitter: @sachac)

New: Added three more sketchnotes:

That Resonates With Me! How to Change the World, One Story at a Time, Nancy Duarte


Shift Your Story Arc: Creating the Trajectory of Your Life, Julie Ann Turner


Screw Your Career Path, Live Your Story! Jason Seiden


Previously posted:

Why You Need to Tell a Bigger Story, Get Storied


Spend Shift: How the Post-Crisis Values Revolution is Changing the Way We Buy, Sell, and Live, John Gerzema


Just Enough to Make a Story: Creating a Narrative from an Anecdote, Sean Buvala


Social Movements as Participatory Storytelling, Andy Goodman and Lily McCombs


Want to share this post with others? Short URL: . (Follow me on Twitter: @sachac)


I normally gloss over marketing e-mails, particularly the ones that ask me to promote something to the readers of “sacha chua :: tech evangelist, storyteller, geek”. It was a good thing Anthony Marques reached out to me again about the Reinvention Summit, which turned out to be a virtual summit on storytelling with some pretty good speakers. The sessions will run from Nov 11 (today!) to Nov 22, and the basic Explorer’s Pass is currently $33.33 – which you can get down to $8.33 if my math is right, using this $25 coupon code: REINVENTION. – the REINVENTION coupon doesn’t seem to apply, but oh well! Not a bad price for attending sessions by Nancy Duarte, Steve Denning, and other storytelling gurus.

Of the 32 sessions planned, here are a few I’m particularly interested in:

Just Enough to Make A Story: Creating a Narrative from an Anecdote
Sean Buvala, Thu, November 11, 4pm – 5pm

In most business and nonprofit settings, there is plenty of anecdotal content for just about any point you would like to illustrate. However, these single-reference-point remnants of story need to be filled out and supported in order to make their biggest impact. In this workshop, you will learn some methods for helping you create impactful stories from these story-starters.

That Resonates with Me! How to Change the World One Presentation at a Time
Nancy Duarte, Thursday, November 18, 2pm – 3pm

If you say “I have an idea for something”, what you really mean is “I want to change the world in some way.” You might not be able to change the entire world, but what is “the world” anyway? It is simply all of the ideas of all our ancestors. Look around you. Your clothes, language, furniture, house, city, and nation all began as visions in other minds.

Humans love to create. And creating starts with an idea that can change the world.

“The only reason to give a speech is to change the world.” – John F. Kennedy

Presentations are the lingua franca of business and those who master communicating with them rise faster than their peers, reach more customers than their competitors, and turn causes into a groundswell.

Pioneering presentation innovator Nancy Duarte, CEO of Duarte Design, will demonstrate how to apply the methods in her book resonate: Presenting Visual Stories That Transform Audiences, to build meaningful connections with audiences that compel them to action. Her groundbreaking work details a new way of structuring a presentation and connecting with an audience – helping the presenter create a human connection.

Changing the world starts with transforming an audience and an audience will only change if you resonate with them.

In this session, you will learn to:

  • Leverage the hidden story structures inherent in great communication
  • Connect with your audience empathetically
  • Create captivating content
  • Craft ideas that get repeated
  • Inspire enthusiasm and support for your vision

This session is for leaders who are tasked with communicating clearly and persuading through verbal communications.

Telling Taller Tales
Andrew Melville, Monday, November 15, 5pm – 6pm

I run through a model of three different levels of story; interesting, through memorable to compelling. I build on journalistic and script writing story principles to discuss people’s Intention behind storytelling, and look at observation, juxtaposition and transformation as components of powerful storytelling. I talk about experiences working with the Maori tribes of New Zealand, and their oral traditions, and metaphors from nature. Telling Taller Tales talks about building authentic and honest stories in the workplace, melding a brand story connecting marketing messages, vision and values and corridor conversations.

Why Great Storytelling Initiatives Fail, and What Can Be Done About It
Steve Denning, Friday, November 19, 4pm – 5pm

Why do great leadership storytelling initiatives tend to fail? These world-class initiatives in established organizations seem to flourish for a while, with strong top management support and demonstrated results; but then something happens, and the initiative is sidelined or downsized or undermined in some indirect fashion, Why do managers act in this way? Why don’t they recognize that storytelling is central to leadership and key to their organizations future? What can be done to sustain storytelling initiatives? Steve Denning draws on the findings from his new book, The Leader’s Guide to Radical Management, and shows what kind of changes are needed to have storytelling take its rightful place as a key management and leadership tool in 21st Century organizations. Come learn seven principles to enable storytelling in organizations.


Even if Anthony didn’t offer me a free press pass and discount coupon for sharing (code: REINVENTION), I’d probably pay for it anyway – it looks like it will be worth it. I might not have come across it without his nudging, though, so thanks, Anthony! =)

I’ll post sketchnotes for the sessions I do manage to make it to. Check it out!

Drupal, SimpleTest, and the node access API

November 11, 2010 - Categories: drupal, tips, work

Setting up Simpletest and Drush on Drupal 6.x:

  1. Download and enable Simpletest with drush dl simpletest; drush en -y simpletest
  2. Download to your ~/.drush/drush_extras directory. This version allows you to run a single test from the command-line.
  3. Create a custom module with a tests/ subdirectory, and write your tests in it. (See this Lullabot Simpletest tutorial.)

We’re starting another Drupal project. While the IT architect is working on clarifying the requirements, I volunteered to implement the risky parts so that we could get a better sense of what we needed to do.

The first major chunk of risk was fine-grained access control. Some users needed to be able to edit the nodes associated with other users, and some users needed to have partial access to nodes depending on how they were referenced by the node. Because there were many cases, I decided to start by writing unit tests.

SimpleTest was not as straightforward in Drupal 6.x as it was in Drupal 5.x. There were a few things that confused me before I figured things out.

I wondered why my queries were running off different table prefixes. I didn’t have some of the data I expected to have. It turns out that Simpletest now works on a separate Drupal instance by default, using a unique table prefix so that it doesn’t mess around with your regular database. I’m doing this on a test server and I want to be able to easily look up details using SQL, so I needed to add this to my test case:

class ExampleTestCase extends DrupalWebTestCase {
  function setUp() {
    global $base_url;
    $this->originalPrefix = $GLOBALS['db_prefix'];
  function tearDown() { }

I also didn’t like how the built-in $this->drupalCreateUser took permissions instead of roles, and how it created custom roles each time. I created a function that looked up the role IDs using the {role} table, then added the role IDs and roles to the $edit['roles'] array before creating the user.

Lastly, I needed to add the Content Profile operations to my custom user creation function. I based this code on content_profile.test.

// create a content_profile node
$edit = array(
  'title' => $account->name,
  'body'  => $this->randomName(),
$this->drupalPost('node/add/' . str_replace(' ', '-', $role), $edit, t('Save'));

It would’ve been even better to do this without going through the web interface, but it was fine for a quick hack.

I had the setup I wanted for writing test cases that checked user permissions. I wrote functions for checking if the user could accept an invitation (must be invited, must not already have accepted, and must be able to fit). SimpleTest made it easy to test each of the functions, allowing me to build and test blocks that I could then put together.

The code in content_permission.module turned out to be a good starting point for my field-level permissions, while the Drupal node access API made it easy to handle the user-association-related permissions even though I used node references instead of user references.

It was a good day of hacking. I wrote tests, then I wrote code, then I argued with the computer until my tests passed. ;) It was fun seeing my progress and knowing I wasn’t screwing up things I’d already solved.

If you’re writing Drupal code, I strongly recommend giving SimpleTest a try. Implementing hook_node_access_records and hook_node_grants is much easier when you can write a test to make sure the right records are showing up. (With the occasional use of node_access_acquire_grants to recalculate…) Otherwise-invisible Drupal code becomes easy to verify. The time you invest into writing tests will pay off throughout the project, and during future work as well. Have fun!

Sketches: Wicked

November 12, 2010 - Categories: life, sketches

Jump to text


We’re watching Wicked on Friday. It will be J-‘s first time to see it live. W- and I have seen it before, and its story is bound up in our own.

In 2006, I was a graduate student at the University of Toronto. I lived in Graduate House and did my research at the IBM Toronto Lab. To save time on the commute, I carpooled with a new friend. We listened to recordings of CBC Ideas on the way up to the Lab, swapped books, and had great conversations.

One day, we saw ads for a production of Wicked. I promised to look into discounted tickets through Graduate House. Several months later, the musical opened in Toronto. My then-boyfriend wasn’t interested in going, so I just bought tickets for myself and my friend.

We both loved the show, and we immediately bought the music. I listened to Wicked while working on my computer and while walking around. When my boyfriend and I broke up, Wicked provided a soundtrack that picked me up and got me going. So what if I was Not that Girl? I could be Defying Gravity.

Things settled down. Life went back to normal(ish).

To return the favour, my friend invited me to a performance of Rigoletto. Three years and many adventures later, I married him.

Watched Wicked again; thinking about experiences

November 13, 2010 - Categories: family, life

We watched Wicked last night from some of the best seats in the house. It was amazing. J- had never seen it. For her, it was an entirely new experience. For me, seeing people’s facial expressions made the performance just so much richer – something I couldn’t do from the discounted rear seats we’d had the last time W- and I watched the musical.

What did we like about the experience? It added a richer sense of enjoyment to something we already loved. We often listen to the music from Wicked, and it was fantastic to be able to see it. There were new memories too, like the “Bring out the battering ramekin” quip that made W- and I laugh in an otherwise quiet theatre. (What, did they miss the pun?) It was a perfect fit for our dream fund.

What did it teach me about experiences to seek out? I really like watching performances, not just listening to music. It makes it much easier to remember and enjoy the music afterwards. I like musicals and operas more than concerts, so I’ll check out the Canadian Opera Company’s season and take advantage of their under-30 discount. W- and I love clever wordplay, too, so anything like that is fair game.

Looking forward to more awesomeness!

Weekly review: Week ending November 14, 2010

November 14, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [C] Drupal: Display faceted search results in calendar form – low priority
    • [-] Work on yearly review documentation – project assessment and personal business commitments review
    • Wrote test cases and code for access control for both Drupal projects, yay
    • Attended sessions from Reinvention storytelling summit, posted visual notes
  • Relationships
    • [X] Watch Wicked with W- and J- – it was awesome!
    • [-] Improve household routines: declutter and streamline
    • [X] Give burp cloths and Teach Your baby to Morgan and Cathy
    • Helped J- with her assignment on tracking one week’s groceries. Fun!
  • Life
    • [-] Attend writing group session – postponed to next week
    • [-] Bike

Plans for next week

  • Work
    • [ ] Submit yearly review
    • [ ] Drupal: Write more of the access control code
    • [ ] Sketchnote more sessions from the storytelling summit
  • Relationships
    • [ ] Write Christmas cards
    • [ ] Make and buy gifts
    • Declutter and streamline: winter stuff
  • Life
    • [ ] Attend writing group session
    • [ ] Bike to work (maybe 15th, 16th?)

Monthly review: October 2010

November 15, 2010 - Categories: monthly

    W- and I got married in October. That pretty much took up the whole month between spending time with our wonderful families and recuperating from the celebration. When I got back to work, I started on a Drupal project. It’s good to be back in development.

    We’ve switched back to Eastern Standard Time. The sun sets earlier now. I’ve taken my winter mittens and scarves out of storage. We’re gearing up for what I’m resolutely calling "baking season" – a way of reminding myself that even winter has its benefits. To celebrate baking season, W- has been baking these absolutely scrumptious brownies.

    We’re halfway through November already. I need to write a yearly review. My work anniversary syncs well with our yearly performance review cycle. I’ve got pictures to organize and memories to write. And then theres’s the holiday season coming up. We’re working on being more social.

    Life is good.


  • Weekly review: Week ending October 31, 2010
  • Weekly review: Week ending October 24, 2010
  • Weekly review: Week ending October 17, 2010
  • Week ending October 10, 2010
  • Monthly review: September 2010

Other stuff:

What I’m focusing on

November 16, 2010 - Categories: life

A friend e-mailed:

I would like to help you with your project ideas and goals. We could
be a good source of mutual inspiration.

So I took the opportunity to review what my actual project ideas and goals are, and what kind of help I would find really useful.

Everything I do fits surprisingly well into an overall plan. I can tell you how the work that I do at IBM and the things I do for fun support my long-term goals. (To wit: One of the things I want to do is build a more collaborative workplace, and consulting lets me help organizations with that. I also want to improve a set of particularly useful skills, hence all the development. As for fun, writing and drawing help me rock, while sewing and woodworking may help me prototype things in the future.)

For most of the big projects on my list, it’s a matter of time and personal effort. Throwing resources or people at it won’t gain me very much. Mentors are great, but it takes time and experience to become an even awesomer developer, and to learn how to do design well. It takes time and experience to learn more about writing or drawing, and to live a life worth sharing.

It’s an interesting thing, to be patient with life as it unfolds. I’m growing at a good (and sustainable) pace. There’s inspiration all around me. It’s simply a matter of reaching out and doing things, putting in that deliberate practice, experimenting with life, and maybe picking up tips along the way.

So, what do I want to learn from other people? If you think I’m doing interesting things, how can you help?

Here’s one of the projects I’ve set for myself: sharing what I know. A great way to help me is to nudge me by asking questions, because then I share (or learn!) in the process of answering. You can also teach me by example, by sharing what you know about sharing what you now. =) Another really good way to help me is to refer me to people who are also passionate about this and who’ve been working on their systems for capturing, organizing, and sharing knowledge. What’s cool about this? You’ll help lots of people along the way.

I’ve also started working on a new project: building relationships over time and space. I’m inspired by how my parents have built these long-lasting friendships, and I’m working on learning how to do something similar. In particular, I’m figuring out:

  • how to keep in touch with people who don’t write about their lives as frequently as I do,
  • how to share experiences with people who aren’t in the same geographical location (or timezone!),
  • how to make people’s lives better, and how to let them make a difference in mine
  • and of course, how to build wonderful loving relationships (Hi, W-!)

Great ways to help would be to show me by example, share your experiences and experiments, or refer me to people who do really well at this (particularly if they’re also dealing with virtual connections, and if they’re introverted too). Bonus: this will directly help me with my goal, too! What’s cool about this? I think the world is going in this direction, and people could really use the tips.

So that’s where I am. Life is awesome. I’m making steady progress. I’m pretty sure that whether or not I get where I currently want to go, I’ll do something wonderful with both the journey and the final destination. In terms of help, I’m okay – other people need more help than I do. If you think what I’m doing is terrific and you’d like to see it happen sooner, maybe you can make that one of your projects too. Then it’s not about helping me, it’s about making your life and the world awesomer. Not me, but the bigger dreams I work towards. =)

C’est la vie, in the bestest way possible.

Sketchnotes: Why I do them, how I do them, and how you can get started

November 17, 2010 - Categories: sketches, sketchnotes


Why do I sketch my notes?

A few years ago, I sketched a presentation just for fun, to see if I could do it on my Nintendo DS. The Gen Y Guide to Web 2.0 at Work has been viewed more than 50,000 times. People told me they liked the style. So I sketched more, inspired by books such as “Back of the Napkin”, and videos like Common Craft and RSAnimate’s work.

I have a hard time sitting still and listening to lectures. I used to fall asleep in class. Writing and sharing helped me stay engaged. It also helped me continue the conversation and meet interesting people.

Combining sharing with drawing was natural, and it kept me focused on listening instead of distracted.

So, why? It makes me happy, others too.

How do I sketch my notes?

Mostly on a Tablet PC (Lenovo X61T) using Microsoft OneNote 2010 (good handwriting recognition) or the free Inkscape. I export using The Gimp (free) and upload it to my website ( That’s all there is to it.

Once in a blue moon, I’ll draw on paper and scan it in (Samsung SCX-4828FN), but it’s easier to fix my drawings on the computer: change size, add colour, move things around.

How can you get started?

Forget what you’ve been telling yourself: “I’m not an artist. I can’t draw.” Just take notes and have fun along the way.

Draw on paper. Take a picture, or scan your work.

Get a basic drawing tablet, digital pen, or tablet PC.

Learn from other people. (Search for visual notetaking, visual thinking, graphic recording, etc.)

Experiment and enjoy.


November 18, 2010 - Categories: life, sketches


Conversations: Stian Håklev

November 19, 2010 - Categories: education, sketches, teaching

Stian Håklev is passionate about education – and in particular, the richness of different cultures and perspectives. Here are some notes from a fascinating conversation I had with him at the Ontario Institute for Studies in Education, where he’s doing his PhD.


(larger version)

… and it wasn’t all questions, either – he has lots of ideas!

You can read his thesis at or check out the peer-to-peer education site he’s working on, where they’ve partnered with the Mozilla Foundation and other people to offer web development and other courses. Sample creative assignment: draw the Internet!

Stian’s passionate about open access, open research, multiculturalism, peer-to-peer education, and other interesting things. He’s hooked into Mozilla Foundation and the Center for Social Innovation. What else can he look at and who can he talk to? Possibly related: Open Notebook Science, LearnHub, Third Culture Kids, DemoCampToronto (to show his peer-to-peer education site and ask for tips?)

Do these questions strike a chord with you? Get in touch with Stian and make cool stuff happen!

Experimenting with mornings

November 20, 2010 - Categories: kaizen, life, productivity

Here’s my approximate sleep data for the past week, tracked with the free “Sleep on It” app I installed on my iPod Touch.

Woke up Slept
November 13 1:30 AM the next day
November 14 7:54 AM 11:14 PM
November 15 7:09 AM 8:45 PM
November 16 6:50 AM 9:23 PM
November 17 5:32 AM 9:06 PM
November 18 5:05 AM 9:34 PM
November 19 5:00 AM

I switched back to an early-morning schedule, and I really like it. Let’s see how wonderful it can be if I can tweak things further!

What’s working well?

I set my cellphone alarm a few minutes after my iPod Touch alarm. Then I put my cellphone on the drawers in the hallway. Tada! Social obligation to get out of bed AND deal with cats, instead of just reaching for the oh-so-handy snooze button.

Also, I made several lists. Here they are:

Things not worth staying up late for: Browsing the Web (it will still be there tomorrow). Reading books (ditto, save it for lunch). Things worth waking up early for: Writing. Drawing. Hacking, particularly because I can get lots of momentum and make tons of progress before our 10 AM update.
Things worth staying up late for: Social interaction. Laying the groundwork for a productive morning (setting clothes out, etc.) Things not worth waking up early for: casual web browsing. Hitting the snooze button.

This classification makes it easier for me to put away my computer and get ready for a 9-ish bedtime. (Yes, I’m often in bed before J-.) It also helps me use my morning time more productively. I didn’t get up early just to spend hours on! (Besides, it only takes me a few minutes to see the latest cat pictures…)

I haven’t run into problems with afternoon fatigue. It might be the way I switch between different kinds of tasks I enjoy, and it might be that I eat a light lunch and I have snacks.

There are still a few things to work out. Commuting to work means interrupting flow, although if I wake up early enough, I can get a chunk of time. When I go into productive hacking mode so that I can check off lots of tasks before our morning status update, I find it hard to make time for my hobbies during the regular workday, because people come in with interesting requests. And then there’s syncing up with W-, who’s more of a night owl, but that’s where shared activities and routines can help.

If you’re experimenting with waking up earlier, maybe social obligations and self-reminders can help you too. I’ll keep you posted as I learn and experience more!

Weekly review: Week ending November 19, 2010

November 21, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [X] Submit yearly review
    • [X] Drupal: Write more of the access control code
    • [X] Sketchnote more sessions from the storytelling summit
    • Innovation Discovery: Told Luis Chiang-Carbonell about Compfight for finding Creative Commons photos
    • Drupal project: Installed the Rational Team Concert Jazz client. It’s cool!
    • Helped more people with community toolkit
    • Planned upcoming workshops/presentations
    • Drupal project: Led first sprint demo
    • Drupal project: Helped with noderef design
    • Drupal project: Got the hang of content_permissions> and node access!
  • Relationships
    • [X] Write Christmas cards
    • [X] Make and buy gifts
    • Planned Skype get-together for family
    • Baked brownies, mm!
    • Had game night with Linda and Gabriel – played Chez Geek and Guillotine. Might pick up Guillotine, or maybe Bohnanza.
  • Life
    • [C] Attend writing group session – spent the day
    • [C] Bike to work (maybe 15th, 16th?) – took the TTC instead
    • Discussed possibility of getting Android phone
    • Installed Android development kit
    • Experimented with waking up early, yay!

Plans for next week

  • Work
    • [ ] Drupal project: Polish programs, work on events
    • [ ] Drupal project: Work on items identified during sprint review
    • [ ] Community toolkit: Build blog summarizer
    • [ ] Drupal: Explore making a diagramming tool for node references – dot?
  • Relationships
    • [ ] Help with homework
    • [ ] Cook more
  • Life
    • [ ] Look into Android development
    • [ ] Plan upcoming presentations / posts
    • [ ] Catch up on drawing some of the other Reinvention Summit sessions I missed
    • [ ] Draw other talks

Week beginnings

November 22, 2010 - Categories: life, productivity

What day does your week start on? It’s the same seven days, but where you start can influence how you look at things. Today I realized that my week doesn’t actually start with Mondays, as I thought before. Or maybe it shifted.

W- and I treat our weekends as week beginnings: the perfect time to lay the groundwork for a smooth-running and productive week. We do the laundry, shop for groceries, prepare food, drop off and pick up library books, tidy up, finish assorted tasks, reset our sleep schedules, and tweak our household routines.

Preparing is fun. W- and I enjoy cooking, so it hardly counts as a chore. This weekend, we made chicken adobo, leftover stirfry, and these incredibly moist and airy brownies. I also experimented with making onigiri, which would be great for afternoon snacking throughout the week. I may have gotten a little carried away.


Other chores are relaxing, too. Washing dishes, folding laundry, and putting things away are meditations in action.

If we finish early, or we want to take breaks along the way, then we spend time on other interests. I set aside blocks of time for reading, writing, coding, drawing, or sewing, depending on what I feel like. I also make time for social interaction – not so much that I’ll feel worn out, but enough to get to know other people better.

Some weekends are busy, such as our once-a-month lunch-packing extravaganza. Then we’re doubly glad when Monday comes around: proud of the accomplishment, and looking forward to the relative relaxation of the work-week!

I love the way this has been working for us. Most weeks run smoothly. When crunch time comes, we’ve got healthy food in the fridge, routines we can rely on, and relationships that carry us through.

Using part of our weekend to make the rest of the week better also helps keep our stress and energy levels on an even keel. Instead of swinging wildly from “Oh no, it’s Monday” to “Thank goodness it’s Friday!”, or treating the work as something that gets in the way of life, we treat all of the days as part of life, and we invest time into making those days more wonderful. We also make sure we don’t end up thinking of the weekend as something that gets in the way of work.

Try turning your weekend into the beginning of your week, and use that time to make your week better.

Emacs: Recording ledger entries with org-capture-templates

November 23, 2010 - Categories: emacs
Updated 2014-05-26: Thanks to Greg for the updated link to !

I use John Wiegley’s ledger program to keep track of my personal finances. It’s quick, it’s light, and it lets me slice-and-dice my data however I want. I enjoy opening my ledger file and adding transactions to it. (Particularly if it involves income!) Yes, I’m that kind of weird.

I wanted to make it even easier to add entries. Instead of using C-x C-f to find the file, using ESC > to go to the end of the buffer, and typing in the transactions, I decided to add some of my common transactions to org-capture-templates. Here’s the relevant snippet:

(setq org-capture-templates
      (append '(("l" "Ledger entries")
                ("lm" "MBNA" plain
                 (file "~/personal/ledger")
                 "%(org-read-date) %^{Payee}
  Expenses:%^{Account}  %^{Amount}
                ("lc" "Cash" plain
                (file "~/personal/ledger")
	        "%(org-read-date) * %^{Payee}
  Expenses:%^{Account}  %^{Amount}

I’ve bound org-capture to C-c r using (global-set-key (kbd "C-c r") 'org-capture), so now I can use C-c r l m to create an entry for my MBNA Mastercard. This keyboard shortcut might not seem short to you, but if you think about it as C-c remember ledger Mastercard, it makes perfect sense. =) (Besides, org-capture prompts me just in case I forget.)

Hooray for org-capture!

I just got an Android phone

November 24, 2010 - Categories: android, geek
From Phone

Thanks to W’s fine research and comparison shopping, I bought an Android phone off Craigslist. I’ve just installed Tasker and a whole bunch of other apps, and I can’t wait to try all sorts of experiments. I’m looking forward to mobile development, too! (… and yes, MobileOrg was one of the first things I installed… =) )

Android: Tracking sleep with Sleep Bot

November 25, 2010 - Categories: android, geek

I recently switched to an early-morning schedule, just for fun. Tracking my sleep helps me motivate myself to go to bed when I promised to and wake up when my alarm goes off, and it comes with useful bonuses too. I had been using the Sleep On It application on my iPod Touch to track my sleep and set my alarm. When I switched to an Android phone, one of the first applications I installed was for sleep tracking as well.

Sleep Bot Tracker Log is a fantastic sleep tracker – and it’s free. The basics: you “clock in” by clicking on the going to sleep button, which changes to a waking up button. When you wake up, you can hit the snooze button (if you’ve configured snooze) or slide your finger across the screen in order to clear the alarm. Using Sleep Bot to track your sleep means that you can view your sleep data as a graph, graph, table, or comma-separated export file – good for keeping yourself accountable.


You can set an alarm by clicking on the small alarm clock icon in the upper right. I particularly like the ability to see how much time is left before the alarm goes off, which helps me figure out how much time I have before I should go to bed. You can set the alarm tone to ringtones or songs, and configure it to fade in gradually.

You’ll also see the alarm countdown on the Android lock screen – great for a quick check. As last night’s lock screen shows on the right, I stayed up a little bit late.

alarm-settingsalarm-detail device


But wait, there’s more. Sleep Bot makes it easy to set all sorts of useful settings to help you stay asleep. I’ve told it to avoid calls, set my phone to silent + vibrate, and turn off WiFi to minimize late-night disturbances. Configuring it is also simpler than configuring similar rules using Tracker, Locale, or other context-sensitive Android applications.


Look up the free Sleep Bot  Tracker Log application on your Android phone with this handy QR code. You can add the widget to your home screen for even faster checking in. Recommend.


November 26, 2010 - Categories: life

Cate Huston writes about falling out of love with literature because of English classes, the urge to build instead of destroy, and the pigeonholing of people’s passions.

I know what that’s like. I read voraciously in grade school. My principal said I wasn’t just a bookworm, I was a booksnake. I split my free time between the library and the computer lab. I read everywhere, even while walking.

In high school and university, I learned that literature wasn’t my thing. My classmates wrote poetry, stories, even plays. I tucked my grade-school verses into a corner of my hard disk. They wrote clear, insightful literary analyses of irony or imagery—or at least I assume they were clear and insightful, given the grades they received. I struggled to do the work, or even motivate myself to do so. I still read for myself, tackling War and Peace and other classics on my own. But just like I’d ceded art to the artists, I ceded literature to others. It was not my domain. I was clearly the computer geek of my batch, and my enjoyment of that made it easier to avoid investing myself in other subjects.

We sometimes reflect on how children learn that they can’t draw, or that they can’t sing, or that they can’t act. They can, of course, but somewhere along the line, people stop trying. They think of something as outside themselves, not themselves, not for them. Despite the best intentions of teachers and family and friends, I learned that lesson. The good thing about learning that lesson, however, is that I’m learning how to unlearn it – how to reclaim those interests.

So now I write. Mostly blogs, but I’ve experimented with fiction before. I’m slowly coming to terms with the fact that other people see me as a writer – maybe not a Writer, but someone who enjoys and does well with words. I read. Mostly nonfiction, but also children’s literature (which I like because it tends to be unpretentious and not over-wrought), classics, and odd discoveries. I still can’t dissect the things I read, although I’m starting to be able to tell why I like some things and not others. I draw. Not the beautiful drawings my friends could make, but enough to make people smile. I revisit the shop and home economic skills that gave me anxiety in the classroom. I reclaim those parts of self that I’d discarded along the way.

Helping J- with homework gives me plenty of opportunities to re-encounter and reclaim. (I’m looking at you, biology, with your jargon and memorization…)

Would I have done things any differently? That overriding passion that crowded out the others gave me a lot of strength, confidence, and security, so I don’t think I would have discarded it to be more of a generalist. Some people in my class excelled in multiple areas. Perhaps if I had figured out earlier how to use a strength in one area to build strengths in another, and how to take advantage of complementary skills. I learned that towards the end of university, when blogging helped me develop reflective practice, speaking helped me learn how to scale, and learning with strangers helped me enjoy the process of figuring things out.

What will you reclaim?

Work and life

November 27, 2010 - Categories: life, reflection

Work and life. I want to write about this in the context of family, because two of my friends recently reflected on work-life integration:

It’s also been fascinating and edifying to see how… life
fits into all of this. See, the thing about work/life balance is that
it’s really easy if your life is work; you’ve only got one thing to
balance, so by default, blam, you’re done. Watching Heidi blend her
teaching and work, scholarship and family, kids and research, home and
school – you’re a mom and you’re a professor and you’re the same
person and you blend those lives and don’t compartmentalize them…
… it’s been a revelation to see both sides at the same time, and to
realize they’re not really “sides,” but… that it’s possible to blend
them, you don’t have to partition one from the other quite so firmly.

I know what I don’t want. I’ve seen my female family members at home,
and I don’t want that work-life balance; what I’ve seen is that either
you have no work (I love my work! I want a career! I want to teach!)
or the equally unpalatable-to-me alternative of having your work is
dictated by someone who’s not you (taking a job because your family
demands it rather than actually choosing to work in that way in that
time; giving up a personal career at a company in order to help with
your husband’s business, that sort of thing). I know it’s possible! I
just don’t know how it’s possible! It’s hard to see and hear and find
stories of how people come to find that sort of balance, what it looks
like, what it feels like. And I’m too shy to ask people about this
most of the time – and earlier on, when I didn’t know these things
were possible, I didn’t even know that I could ask.

Mel Chua

and feminism:

However I don’t really talk about what I mean by feminist because 1)
it doesn’t come up and 2) it’s not really something I think about a
lot. When it does, what often seems to come up is the unfairness of
women being penalized for motherhood, and as someone who doesn’t want
to have children, I’m not always sure I agree. If a woman chooses to
take a year off work and I don’t, it seems fair that I should be a
year ahead in my career. If I’m willing to travel, and relocate for my
job, and have fewer other aspects of my life to prioritize, it’s
clearly easier for me to advance.

Cate Huston

So here’s what I’m coming to understand:

It is possible for women to combine satisfying workplace accomplishments with family, community, and individual happiness. In some organizations, it’s even normal.

I’m lucky to be at IBM, where I’m surrounded by role models with all sorts of life experiences: single, in a relationship, raising young kids, raising school-age kids, empty-nesters, people who had chosen not to have kids at all; people who’ve returned to the workforce after raising their children; women whose spouses focused on child-rearing; couples who shared child-rearing responsibilities equally… Wow.

Seeing people actually live out their lives has gone a long way towards helping me accept the possibilities. There was a point in my life that I was afraid that relationships would distract me from the work I wanted to do. Now I’m married to someone who helps and inspires me do more than I had dreamed of doing. The sneak preview of parenting I get along the way shows me that it’s challenging, but not impossible, and it would help me grow, too.

So, feminism. It’s not about making everyone the same, or invalidating other people’s choices. A person who has made significant sacrifices for their career – moved a lot? took on additional challenges involving lots of extra work? – will understandably be at an advantage. That’s okay.

*It’s about the availability of choices,* so that people can build careers that fit them. Flexible schedules, off-ramps and on-ramps help people adjust their workload so that it doesn’t have to be an all-or-nothing. Parental leaves help redress another imbalance: fathers should be able to spend time with their children too.

*It’s about valuing more kinds of work and more kinds of choices,* not just working long hours or sacrificing everything for the company.

It’s about calling out and reducing discrimination against people who’ve made different life choices. It’s about recognizing and correcting systemic disadvantages. It will be hard to work the biases out of our society. Women whose bios include parenting are described more negatively, while men actually get a benefit. I was listening to a Harvard Business podcast about advice for women returning to the workforce. The podcast described how some organizations have a “project watch” – a taskforce that occasionally reviews projects assigned to people on flexible workloads in on-ramp initiatives in order to make sure that the projects give people a reasonable chance of success. Not impossibly hard, but also not mindnumbingly easy. Neither type of project helps people grow their careers, and it’s important for people to be able to grow.

Even the way we talk about it reveals biases. I don’t think women “opt out of the workforce” – or worse, “flee the workforce”, as I’ve seen described. I think people sometimes choose the sanity of focusing on one major project at a time. I don’t think giving up on family life is a prerequisite for career success. I see examples of people who have made things work. I don’t think child-rearing is necessarily insular and limited. You can learn widely-useful things and transferrable skills along the way.

When the statistics and news stories get me down, I remind myself:

Some societies and organizations are better than others. I’m lucky to have grown up with strong role models, both male and female. I’m lucky to live in a society where sexism is discouraged. I’m lucky to be in an organization that offers many options. I’m lucky to be surrounded by people who have made things work.

It’s not about the theoretical best. This is something I had to come to terms with years ago. If you worry too much about living up to your “full potential”, you’ll never be happy – particularly if you let other people define your full potential for you. It’s okay if I don’t become a super-popular nomadic entrepreneur or executive with a gazillion patents. (I find travel stressful, actually, so that would rule out the nomadic part anyway.) It doesn’t matter if other people are promoted faster, if they earn more, or if they become more famous. What matters is that I build a life that fits me, and I share what I’m learning along the way so that other people can build even better lives.

I don’t have to make all the life decisions now. A lot of this depends on things I don’t know yet. From all accounts, a baby’s first year is hectic, so people might as well plan to take a year off. After that, people make all sorts of choices. Being in a good financial and social position helps, as does keeping professional skills and networks up to date (always a good idea anyway).

We don’t have to solve all the problems in this life. I would love to wave a magic wand and create an equitable society (tada!), but it’s okay to help inch forward and work on not sliding back. We can grow a little bit at a time. Some of the little things I’m doing to nudge us forward are to always refer to it as “parental leave” instead of “maternity leave”, because work-life integration makes sense for men, too; to write without the assumption that it’s always going to be the woman staying home and raising kids; and to reflect on our biases about presenteeism, choices, and other things.

Here are some tips from another draft of this post:

Laying the groundwork

  • Save money and build a good nest egg. One of the insights I picked up from Virginia Woolf’s “A Room of One’s Own” is the freedom you get from having your own assets.
  • Build your skills and your passions so that you can make what you need doing what you love.
  • Find or build the support structures you might need: relationships, company culture, skills…
  • Cultivate relationships with supportive people.
  • Go deeper. Question the assumptions. Create unexpected value.

Weekly review: Week ending November 26, 2010

November 28, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [-] Drupal project: Polish programs, work on events (removed events from scope)
    • [X] Drupal project: Work on items identified during sprint review
    • [X] Community toolkit: Build blog summarizer
    • [-] Drupal: Explore making a diagramming tool for node references – dot?
    • Drupal: Prototyped practitioner – educator selection using AJAX, woohoo! Node references had to be AHAH-ed in pre_render>
    • Drupal: Prototyped investor graph using Raphael JS
    • Community: Updated README.txt with better instructions
    • Helped Brandon Anderson (knowledge and collaboration) learn how to use Community Toolkit to export forum posts
    • Volunteered to help with Lotusphere 2011 resources for evangelists
    • Helped community improve communications strategy
    • Submitted revised annual review notes, whee!
    • Shared updated Web 2.0 and retail deck
    • Volunteered to help with Smarter Planet sales community
  • Relationships
    • [X] Help with homework
    • [X] Cook more – made pad thai from mostly-scratch – home-made sauce this time!
    • Set up three-way Skype chat with family
    • Sent a number of Christmas cards
  • Life
    • [X] Look into Android development – woohoo! Bought an Android, have been hacking on it!
    • [-] Plan upcoming presentations / posts
    • [-] Catch up on drawing some of the other Reinvention Summit sessions I missed
    • [-] Draw other talks
    • Tweaked MobileOrg =D

Plans for next week

  • Work
    • [ ] Drupal: Get project S in shape for Iteration 2 review
    • [ ] Drupal: Take on more development responsibilities for project M
    • [ ] Prepare standalone presentation on collaboration in the enterprise for Dec 10 launch
    • [ ] Go through open source process so that I can contribute MobileOrg patches back to community
  • Relationships
    • [ ] Prepare food for the week
    • [ ] Take care of things while W- is in crunch mode
    • [ ] Set up regular schedule of Skype chats with family
    • [ ] Write and send more cards
  • Life
    • [ ] Android: Tweak MobileOrg some more
    • [ ] Android: Think about that grocery/inventory app I want to build (like GTracker, but with tweaks)

Learning Android development by hacking MobileOrg

November 29, 2010 - Categories: android, emacs, geek

I spent most of Saturday plunging into Android development, starting from the Hello World and Notepad tutorials. It was lots of fun. I wanted to use MobileOrg on Android, but it lacked a lot of things that were in MobileOrg for iPhone, so I taught myself Android development by fixing little things that a newbie like me could do.

First: I wanted the capture form to resize itself when the soft keyboard was displayed, instead of letting the virtual keyboard hide the Save button. Fortunately, I’d come across a solution while reading the technical articles on resize the activity based on the onscreen input method. I tested it on my system, then reported the issue and the fix through MobileOrg’s github. Within a few hours, the fix was included in the project. Yay! (It took me a while to figure out I could use the back button to hide the keyboard, but it was a productive while.)

Second: The editing interface was functional but not convenient , so I dug into views and layouts and all sorts of niftiness. Before and after:

edit-before   after

(… and it’s all wired up and working, at least for me!)

Mwahaha! Along the way, I ended up learning about org-mobile.el and how to set up a somewhat finicky configuration so that I could synchronize my files over Dropbox onto my SD card and into MobileOrg, and then back over Dropbox and into my computer. It’s not fully automatic, but the pieces are mostly connected now. The relevant parts of my experimental config:

(setq org-mobile-directory "~/dropbox/mobile")
(setq org-mobile-inbox-for-pull "~/personal/")
(setq default-buffer-file-coding-system 'utf-8)
(setq org-mobile-files '("~/personal/" "~/personal/" "~/personal/"))
(setq org-mobile-agendas '("a"))

Then I used M-x org-mobile-push to sync  things up. There was a bit of a kerfluffle I had to sort out. I moved files around, so I needed to delete the /sdcard/mobileorg database on my Android, and I also needed to download the checksums and other files using Dropbox before loading them in MobileOrg. But things work reasonably well now, I think, and I can browse my Org files and capture some updates. Whee!

 main organizer outline2

… and so on.

Next step: Talk to my manager about open source approvals so that I can share my patches with the community. There’s still plenty more to build on top of MobileOrg, but at least I’ve taken care of the two big things that were getting in my way.

I’ll have to decide whether I’m going to build my other app ideas as separate lightweight apps, or be evil and store as much data as I can into Org… >:) Hmm. Org as grocery list, price tracker, inventory management, and  recipe database? Org as sewing organizer for patterns, notions, fabric, measurements, and projects? Org as a hammer for an unbelievable variety of nails?


(Okay, maybe I’ll build things for SQLite first, but there’ll probably be some kind of .org or CSV eventually…)

Limiting flow

November 30, 2010 - Categories: geek, life


My head was buzzing from a good weekend of learning how to program on a new platform, so I set aside some time to reflect and clear it. This is what I had started to write:

Programming is addictive. It distracts me in a way that few other
pursuits do. I dream about code. I doodle ideas. I get lost in
development. Every free hour is a choice between spending it
programming or doing something else, and it’s hard to resist that urge
for flow – that immersive, transcendental experience of engagement and

Flow messes me up. In the flow of programming, I forget the joy and
ease of other activities. I feel myself resisting the need to surface
from flow in order to take care of household chores or work on other
projects. Just another test, just another function, just another
little success. When I reluctantly slip away, the ghost of it hovers
there, a background process that takes up memory and processing time,
interrupts me with ideas and invitations, and makes it hard for me be
mindful and focused on other things.

I know I’m lucky to be passionate about something like this, so it
seems wasteful to think of setting bounds. But my thinking feels
disjointed, hyperlinked, broken down into small functions – a little
the kind of unraveling I feel when I haven’t had the chance to
properly write and reflect—

Then W- said, “How would you like to help clean up the yard?”

So I did. While W- changed his tires and J- raked the leaves, I tidied up what remained of this year’s garden. Then I came back to the kitchen and roasted four turkey drumsticks, helped pack 11 lunch portions, made turkey pot pie filling, and prepared onigiri for next week’s snacks. It was productive, social, and good. I remembered that weekends are good for preparing for the future, and I felt even better.

There’s something interesting about that thought, and I want to explore it further. Maybe if I experiment with setting aside blocks of time, I’ll get a better balance instead of mostly going by what I feel most like doing. There is an inertia to enjoyment. The more I focus on one thing, the harder it is to return to others. While a life focused on programming – and perhaps writing as well – is probably going to be just as awesome, I’d like to pick up a few other interests as well: cooking, drawing, sewing… Even speaking and making presentations tend to go on the backburner when I have a program in mind, which results in stress down the road.

For those other interests, I need to invest time doing things that are less fun than programming in order to get to the point where I might have as much fun doing that as I have writing code.

Improving my ability to switch is likely to pay off in terms of better quality of life, lower stress, and richer combinations of complementary skills.

Here are some ways I’m thinking of experimenting with that:

Limit programming to 4-hour blocks at a time, with rest breaks throughout. Do something non-computer-related for at least an hour between programming sessions. By getting better at resuming where I left off, I’ll be able to let go with more confidence.

Schedule a block of recreational programming time on my calendar. That way, I know I’m going to be able to try things out at least once during the week, so it’ll be easier for me to resist the urge to swap chores for programming. I can keep a TODO list of things to work on, which will help me use that time more effectively.

Schedule other interests/tasks on my calendar as needed. It’s just like homework. If I’ve got a presentation or an idea planned for a certain date, I might do better by setting aside specific times to work on it. I might also use sprints or the Pomodoro technique to make it easier to focus.

Beef up my weekly review, and ruthlessly trim my task list. I’ve been postponing items that weren’t particularly important. I’d like to move each of my open projects forward at least a little each week, and the weekly review is a good time to catch that. If I do my weekly review on Friday or Saturday, I can use Sunday for focused, planned work, or target things for mornings as well. If I run into something I still don’t want to do, time to think about whether I want to scratch that off my list.