September 2008

Hacking the Domestic

September 1, 2008 - Categories: life

W- and I unboxed and set up our very own sewing machine yesterday. It’s nothing fancy, just a Singer Simple 16-stitch sewing machine that we picked up from Walmart. After spending an hour trying to figure out how to thread the bobbin so that the bottom thread would get picked up by the top thread, we managed to get it working. (How many geeks does it take?)

The first thing I made was a lopsided bag for random things, because everyone who sews must make a bag at some point. I was particularly proud of the way the pattern was the right way up AND the bag was lined inside with the same pattern (although in the opposite direction). It was an interesting topological exercise. ;)

The second thing I did with the sewing machine was to alter one of my much-too-large conference shirts to fit me. In this case, I turned an Ottawa Linux Symposium shirt (XL, I think) into a fitted tee.

I don’t need another T-shirt and there are plenty of other things I could do with my time, but it’s nice to be able to come up with an idea (even a simple one) and make it happen.

Squee! Won Slideshare’s Best Presentation Contest!

September 2, 2008 - Categories: presentation, sketches

Hooray!

My introduction-in-verse won the Slideshare Best Presentation Contest Category for “About Me”! Which probably means that at some point, I brought a smile to the illustrious panel of judges: Guy Kawasaki, Nancy Duarte, Garr Reynolds, and Bert Decker.

Hello, I'm Sacha Chua!
View SlideShare presentation or Upload your own. (tags: sketches self)

I’m sure I’ll put the iPod Touch to all sorts of good use!

I had a lot of fun making the presentation on my Nintendo DS. I’ve since then given to my mom so that she can do yoga, but I upgraded to the Cintiq 12WX and it’s really fun to sketch on. Still, I feel very much like a fledgling artist:

Fledgling

As promised, I’ll be sending some of my favorite presentation books to one of the lucky people who voted for me. Hello, Randell! I’m looking forward to sharing Presentation Zen and Back of the Napkin with you. =D

Squee!

Taming the Firefox keyboard with keyconfig

September 4, 2008 - Categories: Uncategorized

In my Mozilla Firefox, iMacros and ScribeFire were fighting over the F8 keyboard shortcut, and it was driving me crazy. I liked both extensions, but I wanted to remap them to different shortcut keys. The Keyconfig extension lets me do just that. Hooray, hooray, hooray!

If you can, teach; If you can’t teach, do

September 5, 2008 - Categories: career

I’ve never agreed with the adage “If you can, do; if you can’t, teach.” If you’ve ever caught yourself saying that, watch Taylor Mali talk about what teachers make. I know that you need to know something really well in order to teach it, and that teaching is an incredibly difficult thing to do properly. What I hadn’t realized until today is that if you take that adage and you flip it around, you get some pretty good career advice:

If you can, teach. If you can’t teach, do.

On the subway ride to work, I was thinking about Drupal and what I’d like to do for my next assignment. My current project will be wrapping up on October 24, and I get the feeling there would be plenty more Drupal work to do. As an application developer, I could build on all that experience I’m gaining in my current assignment: an understanding of how Drupal fits together, some practices for configuration management, testing and documentation, code snippets I can reuse, and so on.

But what I’d really like to do is teach all of this to other people so that I can focus on things I can’t teach. There are many things I do that I don’t know well enough to teach, and there are many things I do that seem intractable. I can teach tips for networking, but I don’t know how to teach people how to connect the dots. I can teach techniques for creativity, but I can’t teach creativity. I can teach ways to discover and develop passion, but I can’t teach passion.

I’d like to make this unique part more of my paying work. Ideally, I’d be able to do so while keeping my manager happy. It’ll help if I can figure out what kind of a difference I’m making and I want to make, and if I can find people who think I’m creating plenty of value.

If you can, teach. If you can’t teach, do.

Something worth thinking about….

Emacs: Jump to anything

September 5, 2008 - Categories: emacs

I just came across the Anything extension for Emacs. After you load anything.el, you can type M-x anything RET and a substring of, well, anything. Looks like a handy shortcut. It’s like Quicksilver, but for Emacs. Grab anything-config.el for a bunch of useful functions.

Here’s my current configuration:

(require 'anything)
(require 'anything-config)
(setq anything-sources
      (list anything-c-source-buffers
            anything-c-source-file-name-history
            anything-c-source-info-pages
            anything-c-source-man-pages
	    anything-c-source-file-cache
            anything-c-source-emacs-commands))
(global-set-key (kbd "M-X") 'anything)

Internet Explorer – hovering on non-link items

September 5, 2008 - Categories: geek

Internet Explorer 5.5 and 6 don’t support the :hover pseudoclass on anything aside from A link elements, but the site that I’m working on calls for hover behavior on form submit buttons too. (And you know how I hate working on cross-browser issues…) I followed the instructions in whatever:hover, but things still weren’t getting picked up. The missing step was to add the following line to my /etc/mime.types:

text/x-component	htc

and restart Apache. That did the trick.

Darn you, IE!

New presentation: “New media, New generation”

September 5, 2008 - Categories: enterprise2.0, presentation, sketches, web2.0

I’ll be in Washington, DC from Monday to Wednesday next week to participate in a panel on new media. It’ll also be my first presentation using the nifty new Cintiq! I thought I’d put it up on Slideshare and share it with all you folks… =) The current version’s designed for in-person delivery, so some of the slides might look a little obscure. (If all else fails, you can do Powerpoint Karaoke.) I hope I can put up an audiocast after the event.

new media, new generation
View SlideShare presentation or Upload your own. (tags: web2.0 enterprise2.0)

This was fun. It took me a while to figure it out, though. The presentation hinges on two pairs of pairs: the first set is new media = social media and new generation = net generation, and the second set is the 2×2 matrix. I only came across that while ironing handkerchiefs and playing with my speech topic out loud. Once that pattern floated up, everything else fell into place.

Part of the fun of making presentations is figuring out a natural pattern for the topic… =)

And just like that, we have a cat

September 7, 2008 - Categories: cat

And just like that, we have a cat.

Last night, as I was worrying about my paperwork, I heard W- yell, “Sacha, would you like to pet a cat?” Cat-petting beats paperwork-worrying any day, and besides, I was mostly done.

There was a charcoal gray cat on our porch. It–she–had apparently followed W- and J- home, and was purring like a sports car engine while J- stroked her. She was too friendly to have been a feral cat, and her coat was too well-kept for her to have been out on her own for long. She had no collar, though.

She was a little skittish, noticeably tenser whenever she heard cars zoom past or whenever the screen door latched loudly. But she was friendly, and we eventually tempted her in with saucers of milk and mashed-up salmon.

After she licked the saucers clean, she stood by the door and we let her out. She sat on the porch steps, watching the cars go by. She also explored the flowerboxes. After a while, J- reported that she couldn’t see the cat. I put on my shoes and stepped outside to check if the cat had moved on, looking for her home. A shadow moved near the tree in front of our house, and then ran–ran!–up the stairs and back into the house. J- and I smiled when we saw how she was getting used to us.

Cold night, or food and warmth and attention? Must’ve been an easy choice.

As we watched her explore, we munched on the salmon-mayo sandwiches W- made from the rest of the can. She explored the entire house, rubbing her face against everything in order to mark it hers.

Definitely friendly and completely unafraid of humans. Looks like we have a cat.

The totally awesome Sandy Kemsley read my Twitter gave me a cat bed, a litter box and a few liners, and some cat treats. The cat took to the bed immediately and spent the rest of the afternoon comfortably ensconced in it. W- picked up some cat litter and food; the food met the cat’s approval, but the litter still hasn’t been used. (I hope that she’s either used to litter boxes, or–lucky!–maybe she’s toilet-trained!)

We’ve put up “Cat Found” posters around the area, but I hope we can keep her. I am temporarily calling her le chat gris, like the way I called my first cat Neko because I was studying Japanese. Maybe we can teach each other how to speak French.

Weekly review – Sept 7, 2008

September 7, 2008 - Categories: weekly

Last week:

Next week:

Le Chat Gris

September 8, 2008 - Categories: cat, photography


(c) 2008 Sacha Chua, Creative Commons Attribution CopyLeft License

She’s really not as sinister as this, but I think it’s a nice picture anyway. ;)

Slidecast: New Media, New Generation

September 11, 2008 - Categories: enterprise2.0, gen-y, presentation, talk, web2.0
new media, new generation
View SlideShare presentation or Upload your own. (tags: enterprise2.0 web2.0)

I gave a panel presentation entitled “New Media, New Generation” at the Corporate Voices meeting in Washington DC on September 9, 2008. Around 40 director- and partner-level people (many in HR) attended from private corporations and nonprofit organizations. On the panel with me were Paull Young (Senior Account Executive, Converseon) and John Wolf (Senior Director, PR, Marriott). Things that went well:

Things I can do even better next time:

Emacs and w3m: Making tabbed browsing easier

September 12, 2008 - Categories: emacs, wickedcoolemacs

If you browse with a lot of open tabs, like I do, w3m will be much easier to use once you remap w3m-next-buffer and w3m-previous-buffer onto single-key shortcuts, allowing you to press a key to quickly flip between tabs.

By default, w3m-previous-buffer is mapped to C-c C-p and w3m-next-buffer is mapped to C-c C-n. On a QWERTY keyboard, you may want to remap w3m-previous-buffer to q and w3m-next-buffer to w. You’ll probably also want to remap w3m-close-window (which had been bound to q), and x is a good keybinding for that. To make all these changes, add the following to your ~/.emacs:

(eval-after-load 'w3m
  '(progn
     (define-key w3m-mode-map "q" 'w3m-previous-buffer)
     (define-key w3m-mode-map "w" 'w3m-next-buffer)
     (define-key w3m-mode-map "x" 'w3m-close-window)))

If you use a Dvorak keyboard layout, you can bind . to w3m-previous-buffer and , to w3m-next-buffer instead. Just add the following code to your ~/.emacs:

(eval-after-load 'w3m
  '(progn
     (define-key w3m-mode-map "." 'w3m-previous-buffer)
     (define-key w3m-mode-map "," 'w3m-next-buffer)))

(This is part of the draft for my book on Emacs, to be published by No Starch Press if I’m not too late.)

Emacs w3m: Open pages in external browsers

September 13, 2008 - Categories: emacs, wickedcoolemacs

Sometimes w3m is not enough. To make it easier to open the current page in a browser such as Mozilla Firefox, add the following to your ~/.emacs:

(defun wicked/w3m-open-current-page-in-firefox ()
  "Open the current URL in Mozilla Firefox."
  (interactive)
  (browse-url-firefox w3m-current-url)) ;; (1)

(defun wicked/w3m-open-link-or-image-in-firefox ()
  "Open the current link or image in Firefox."
  (interactive)
  (browse-url-firefox (or (w3m-anchor) ;; (2)
                          (w3m-image)))) ;; (3)

This defines a function that uses the current URL being browsed(1) and another function that takes the URL of the link at point(2). If no link is found, it takes the URL of the image at point(3).

You can use other browse-url functions instead of browse-url-firefox. For example, replacing browse-url-firefox with browse-url-kde will open the page, link, or image in Konqueror, KDE’s web browser.

I like binding f to the function that opens the current URL in Mozilla Firefox and F to the function that opens the current link or image in Mozilla Firefox. To do the same, add the following to your ~/.emacs:

(eval-after-load 'w3m
  (progn 
    (define-key w3m-mode-map "f" 'wicked/w3m-open-current-page-in-firefox)
    (define-key w3m-mode-map "F" 'wicked/w3m-open-link-or-image-in-firefox)))


This is part of the book that I’m writing about Emacs, which will be published by No Starch Press if I manage to get it together in time.

First impressions in an e-mail world

September 13, 2008 - Categories: gen-y

I really wish I could’ve spent more time in Washington–not only to spend a month or two in the Smithsonian Museum, but also to run into people like Jeff Widman, who’s normally based in Seattle but who happened to be in Washington when I was there.

Jeff e-mailed me last Tuesday to introduce himself and see if we could get together and chat about Gen Y and social media. That in itself was cool (I love connecting with other Gen Yers working in this space), but you know what was even cooler? He attached a PDF to introduce himself. Digging around on his blog, I came across an online version of it:

Neat idea! I’m tempted to make one myself (or refine my self-introduction in verse), because people often wonder (a) what I do for a living, and (b) how on earth I managed to get an opportunity to do that. =)

Good idea. Go out and make your own. =)

Drupal: Programmatically installing and enabling modules in the .install file

September 15, 2008 - Categories: drupal

To make configuration management easier, we decided to make sure that all behavior-related changes are in the source code repository. So when I needed to add the reCAPTCHA module to the project, I needed to figure out how to programmatically install and enable the module with update code in another module’s .install file.

Here is some sample code to do so:

/**
 * Install and enable the captcha module.
 */
function yourmodule_update_1() {
  $ret = array();
  include_once('includes/install.inc');
  module_rebuild_cache();
  drupal_install_modules(array('recaptcha'));
  variable_set('recaptcha_public_key', 'PUBLIC KEY GOES HERE');
  variable_set('recaptcha_private_key', 'SECRET KEY GOES HERE');
  $ret[] = array(
    'success' => true,
    'query' => 'Installed recaptcha module and enabled it',
  );
  return $ret;
}

Drupal: Making our build system better

September 15, 2008 - Categories: drupal

Hooray! We have running code, and we’re about to make another release after our code exits quality assurance. This means, of course, that we’ll need some way to differentiate the inevitable bugfixes that the next production release will require, and development of new features.

What’s the best way to do this? Making a release branch seems like a good idea. Here’s how I did it:

svn copy http://subversion.example.com/myproject/trunk http://subversion.example.com/myproject/branches/release-1 

Bugfixes for release-1 will be committed to the release-1 branch, while new development continues on trunk. Bugfixes will be periodically merged into trunk to make it easier to roll the next release, which will be the release-2 branch.

Next, I need to configure my local system so that it’s easy to switch back and forth. I could work with a single source tree for local.example.com, but that means switching back and forth. The best thing to do would be to have two separate source code directories: one for trunk, and one for production releases.

svn co http://subversion.example.com/myproject/branches/release-1 /var/www/example.com-prod

For each site, I’ll need

I’ll also need to update my Makefile to make it easier to work. For example, the Makefile should connect me to the right database depending on which branch I’m on. How do I determine this? One way is to have an unversioned file that overrides some of the Makefile variables, and to include that file in my Makefile. I can do this by adding the following to my Makefile:

-include *.mk

and then creating a dev-local.mk file that changes the values of my variables.

I’ll need copies of the production database translated for the different domains, which means I need to update my deploy script and format it a little to make it easier to deal with all these options. Hmm…

This will be fun.

UPDATE: Fixed HTML tags. Thanks for pointing it out!

Working on a small project

September 16, 2008 - Categories: development, geek

Working on a small project means that I wear multiple hats, and that’s helping me grow so much as a developer. Yesterday, I planned some changes to our build process and developed tools to make deployment painless. In a large project, all of this would have been decided already, and all I would need to do would be just to fit into the scheme. Here, I get to weigh the pros and cons, then make things better.

What’s the next step?

If I integrate regression testing into the production deployment script, then we will be one step closer to development nirvana. Another step would be to do daily regression testing, per-checkin tests, or even pre-checkin tests. Wouldn’t that be awesome?

I’m definitely working above my pay grade. ;) That’s because I don’t have to make all the mistakes myself. Working on and watching open source development means that I can see what problems other developers run into and how they’ve solved them, and that’s taught me ways to keep my development environment sane. I’m still going to make mistakes, but at least I can avoid some of them. Kaizen–relentless improvement–means that I’m not only solving problems right now, I’m also working on making things better. As a blogger (and somewhat of a teacher), I not only grow as a developer, but I’m helping other people grow too.

Drupal: Deploying two branches to three systems

September 16, 2008 - Categories: drupal

To keep track of the bugfixes we’ll need to make for our next release, I’ve created a Subversion branch called branches/release-1. Development of new features will continue on trunk, but we’ll merge in the bugfixes from release-1 every so often.

There are three environments we deploy to:

Local
Developers should be able to easily test both versions on their local machines.
QA server
We should be able to deploy both versions to a publicly-accessible QA server for acceptance testing.
Production server
We should be able to deploy release-1 (and then later, release-2 and so on) to the production server, preferably after a lot of testing

Editorial changes happen on the production server, where our users update content. We would like to be able to take a snapshot of that database and use that to test our development code on the QA server or in our local development environments. Because we use Domain Access to serve multiple subdomains with shared content, it’s not just a matter of using mysqldump to back up the database and copy it over. We also need to replace URLs inside the database, and we need to override domain_root using the $conf array in settings.php.

I’m the only one running Linux, so the other developers don’t really benefit from the Makefiles I’ve defined or the tools I use. For the simpler build system we had before (all development on trunk), I wrote a deployment script that allowed users to:

The new deployment script needed to allow users to do the same, but for both branches of the code. Both branches of the code would be simultaneously available on the QA server, so the script would need to deploy the code to different directories.

After some fiddling around with the page design (because I care about making interfaces make sense!), I came up with something that looks like this:

  Development Release-1
Local Database
QA Database
QA Deployment
Production Deployment None
Changelog
-------
r988 | somegeek | 2008-09-15 13:00:00 -0500 (Mon, 15 Sep 2008) | 2 lines

Use dev.qa.example.com
------------
[more changelog entries go here]
------------------------------------------------------------------------
r986 | somegeek | 2008-09-15 11:03:38 -0500 (Mon, 15 Sep 2008) | 3 lines

Starting a branch for release-1
------------------------------------------------------------------------
[more changelog entries go here]

The deployment script allows the user to get a copy of the database, deploy a copy of the database, or deploy specific revisions of branches.

Because I was having a hard time figuring out how to do ssh key-based operations from Apache (which runs as a no-login user), I use two shell scripts to do the dirty work. One shell script connects to the production server, creates a partial backup, copies the information over, and does any necessary replacements. Another shell script takes a domain name and optionally a revision, and deploys the revision from the appropriate branch.

Here’s my totally small-scale PHP way to show the revisions log:

$dev_output = shell_exec("svn log $dev_url $details --limit 20");
$dev_revisions = preg_match_all('/r([0-9]+)/', $dev_output, $dev_matches);

where $dev_url is the URL of the trunk in Subversion, and $details contains the username and password specified as options for the Subversion command-line.

I’m going to see if I can get my regression tests running on the server that I’ve got my deployment script on. Wouldn’t that be awesome?

Drupal and Drush: Updating the database from the command-line

September 16, 2008 - Categories: drupal

So now that we’re doing all our configuration changes in source code, it makes sense to automate database updates as much as I can. Here’s something I’ve added to drush_tools so that I can run all the schema changes from the command-line:

function drush_tools_update($command = '') {
  ob_start();
  require_once 'includes/install.inc';
  require_once 'update.php';
  $ret = ob_get_contents();
  drupal_load_updates();
  ob_end_clean();

  $list = module_list();
  $update_list = array();
  foreach ($list as $module) {
    $updates = drupal_get_schema_versions($module);
    if ($updates !== FALSE) {
      $latest = 0;
      $base = drupal_get_installed_schema_version($module);
      foreach ($updates as $update) {
        if ($update > $base) {
          if ($update > $latest) { $latest = $update; }
          $update_list[$module][] = $update;
        }
      }
      if ($latest) {
        sort($update_list[$module]);
        printf("%-30s %5d -> %5d (%s)\n", $module, $base, $latest, join(', ', $update_list[$module]));
      } else {
        printf("%-30s %5d\n", $module, $base);
      } 
    }      
  }
  if (count($update_list) == 0) return;
  if ($command != 'force' && !drush_confirm(t('Do you really want to continue?'))) {
    drush_die('Aborting.');
  }
  ob_start();
  foreach ($update_list as $module => $versions) {
    foreach ($versions as $v) {
      print "Running " . $module . "_update_" . $v . "\n";
      update_data($module, $v);
    }
  }
  $updates = ob_get_contents();

  cache_clear_all('*', 'cache', TRUE);
  cache_clear_all('*', 'cache_page', TRUE);
  cache_clear_all('*', 'cache_menu', TRUE);
  cache_clear_all('*', 'cache_filter', TRUE);
  drupal_clear_css_cache();
  ob_end_clean();
  $output = '';
  if (!empty($_SESSION['update_results'])) {
    $output .= "The following queries were executed:\n";
    foreach ($_SESSION['update_results'] as $module => $updates) {
      $output .= "\n" . $module . "\n--------------------------\n";
      foreach ($updates as $number => $queries) {
        $output .= 'Update #'. $number . ":\n";
        foreach ($queries as $query) {
          if ($query['success']) {
            $output .= "SUCCESS: " . $query['query'] . "\n";
          }
          else {
            $output .= "FAILURE: " . $query['query'] . "\n";
          }
        }
        if (!count($queries)) {
          $output .= "No queries\n";
        }
      }
    }
    $output .= "\n";
    print $output;
    unset($_SESSION['update_results']);
  }
}

The Road to Me 2.0: How I Was the Chosen One « Personal Branding Blog – Dan Schawbel

September 17, 2008 - Categories: gen-y, web2.0, writing

In The Road to Me 2.0: How I Was the Chosen One, Dan Schawbel writes about how he got a book deal on Web 2.0 career development for Millennials. This of course makes me slightly envious, because I’m passionate about that topic too, but then I’m supposed to already be working on my Emacs book. Mrph.

But that’s okay, I can just keep writing blog posts…

Subversion: Restore deleted files

September 17, 2008 - Categories: development

If you accidentally delete a file and then commit the change, you can retrieve the file along with the rest of the history by using svn copy to copy it into your working directory. svn copy -r revision-number your-full-repository-path-to-the-file file

UPDATE: pgier suggested svn copy http://svn/url/to/file@revision-number file

Common Use-Cases for Merging

Two-week review: 2 weeks ending September 19

September 19, 2008 - Categories: weekly

What an eventful two weeks!

My presentation on new media and the new generation in Washington was a lot of fun. I’m really starting to settle into this stick-figure drawing thing. Next week, I have three presentations scheduled, including one new one I’m going to sketch this weekend. Hooray!

I also gained more experience in software development. (Level up!) I switched over to a build system with two branches (trunk and release-1), and I wrote a few tools to help test and deploy the two branches. So far, so good. =) Now I’m managing multiple source trees with Emacs… This should be interesting.

And I helped connect the dots, too! I introduced several people to each other, and I’ve been helping groups within IBM make the most of our totally awesome Web 2.0 tools. =)

Last week, W- and J- found a gray cat wandering outside the house. We took her in, put up posters, and had her scanned for a microchip. Today, the cat’s family picked her up. I miss her already, but hey, we did the right thing. It was fun spoiling the cat, and I enjoyed seeing W-‘s warm-and-fuzzy side. =) We may get another cat – you never know…

One of my coworkers hosted a dinner party for a bunch of us recent hires, and it was a lot of fun. I love how we can talk about personal finance and travel and career and figuring things out, all within a common context (but with enough differences to make things interesting!).

I’ve also started a new hobby: sewing. I sewed myself a pair of flannel pajamas using a cute cat cloth, and I’ve been working on some skirts too. I took advantage of the Fabricland members sale to buy 7 yards of wool suiting material so that I can make a gray blazer, jumper, and trousers set. Flipping through all the sewing pattern catalogues in the store, I found some styles that might fit me. Inspired by that, I tried something different yesterday: I wore one of my white long-sleeved blouses under a gray dress. It felt interesting. =) Maybe I’ll get the hang of this style thing yet. We’ve just watched Nancy Drew, and I’m quite tempted to add a bit of a retro touch! <laugh>

I got interested in sewing not only as a way to deal with the frustrating experience of trying to shop for something simpler than what I find in the stores, but also as a way of improving my ability to see. Just as photography is teaching me to appreciate light, color, and shape, sewing is teaching me to appreciate fabric, feel, cut, make, and fall. And there’s also quite a bit of satisfaction in being able to make something, even if my seams are still a little wobbly.

What got displaced? I haven’t done much Emacs tweaking, and even less Emacs writing. Oops. But that’s okay, I’m happy with the decisions I made. I went to the gym only once this week (but it was a good workout!); we plan to go again tomorrow morning. And I’ve been a bit remiss about e-mail, but I’m setting aside some time this weekend to get back in touch with people.

Next week, I plan to:

The way I work

September 21, 2008 - Categories: career

I’m giving a presentation on what next generation work can look like for my company, and I need to figure out just what’s different about the way I work compared to the way other people might work. This is difficult because, well, this is the only way I’ve ever worked in IBM! ;) So here are some of the things about the way I work…

(braindumping for an upcoming presentation!)

We’re adopting a cat!

September 21, 2008 - Categories: cat

W- and I are adopting a cat from the Toronto Animal Services shelter. Leia’s a medium-ish-haired black-and-white cat who’s somewhat shy. We’re going to bring her home on Wednesday, after she gets spayed, and we’ll take care of post-operative care.

It was so difficult to choose. I wanted to take them all! After we spent almost an entire afternoon looking at and playing with the various cats, we narrowed it down to a handful – all female cats around two years of age. Iggy was a brown-and-white tabby who purred constantly and loved rubbing her head against you. Sasha was a quiet cat with a classic tabby coat. Leia, the one we eventually chose, was a bit reserved, but used such a variety of sounds: high meows, soft mews, and chirps. And Angel, well, Angel was insane. ;) (Well, probably not clinically insane, but getting there!)

We ended up choosing Leia because she felt like the best fit. I joked that she’s probably like W- and me in cat form: fairly low-key (well, I’m like that when I’m not excited about something ;) ), with a slight build (some cats were huge!), and with a pretty big vocabulary we’re not afraid to use. ;)

I’ll post more pictures when we have her!

Not the best day ever, but that’s okay

September 23, 2008 - Categories: life

A five-hour nap and a mug of double-chocolate truffle hot chocolate later, things are looking much better.

Today was One of Those Days, but even Those Days are bearable if you insist on thinking of them that way.

It started this morning when our home Internet connection was down and I had to figure out a way to make my 9:00 tele-presentation. I excused myself a third of the way into my 8:00 conference call after the problem refused to solve itself, and tried waking up Wayne that he could have a crack at it. He couldn’t solve it either. After some frantic scrambling, I realized that the only thing to do was to come into work. I stuffed the electronics into my bag and sprinted to work. I knew I would have just enough time to make it.

I still needed to copy the files from my Linux partition to my Windows partition. Crouching on the floor of the crowded subway car, I balanced my laptop on top of my rolling case and rebooted. A young woman stood up and offered me her seat. I thanked her profusely. She understood that it was One of Those Mornings.

I managed to copy all the files over by the time we pulled into Yonge Station. I made my way through the early morning crowd and into the IBM office downtown. I headed straight for the first free meeting room I could find. After dumping my things in order to claim ownership of the room, I snagged a lamp from an unoccupied desk. I was going to do the presentation with video, and I wanted good lighting.

It turned out that I had a few minutes of allowance before I was going to speak, so I quickly uploaded the files to our company intranet and got myself ready. There was nothing I can do about my hair, but at least I could catch my breath. And then my session started, and all the hassles of that morning faded away.

I had so much fun talking about the way work is changing and what my generation practically takes for granted. The questions were among the best I’ve ever had after presentation. They were clear and thought-provoking, and I learned a lot in a process of answering them. I also had the opportunity to pull in one of my previous short presentations in order to help answer one of the questions about Gen Y retention.

Being able to see the audience through video and knowing they could see me made me feel as if I were there. Sure, I was a talking head, and most of my gestures didn’t quite fit in frame. On the other hand, my facial expressions were a lot easier to see. It reminded me of watching Evil Dead: the Musical and being able to see Ash quirk his eyebrow. Someday, I’ll make even better use of video in presentations.

I stayed on for the panel discussion, which was also a lot of fun. I learned a lot from the questions and the answers of the other panelists. Again, being able to see people asking and answering questions did a lot to help me feel part of the event.

After the panel ended, the stress of the morning caught up with me. I was having strong cramps, I was feeling slightly dehydrated, and I had forgotten my lunch at home. Almost all of the seats in our mobile offices had been booked, so I moved my things out of the meeting room and to a temporary working area. I tried getting back in touch with the organizers of the event, who had said that one of the people there had wanted to talk to me. They also tried patching me in to attend next talk. The beginning was very interesting, but when I felt myself unable to concentrate, I knew it was time to call in sick. Or, as I was in the office anyway, just tell people I was going to go home. I think it was my first sick day at IBM.

I slept on the subway ride home. On the way to the house, I ticked off what I was going to do as soon as I got through the door. I was going to heat up the hot pack and then enjoy a bowl of homemade chicken soup.

The hot pack worked fine, but when I added alphabet pasta to the chicken soup, I saw little black dots floating in the broth. Little black dots with legs. Eww. Abandoning my chicken soup, I pulled some rotini with meatballs out of the fridge, heated it, and had it for lunch.

And then I went to bed and the afternoon disappeared.

When I woke up, the house was still quiet, but the sun had set. I made myself a mug of hot chocolate, and everything started to feel much better.

What did I learn? I learned that even with a stressful start to my day (whether it’s Murphy’s Law striking or, as in the past, I heard that one of my role models was leaving the company), once I get on stage, the message itself fills me with excitement and gives me energy. I learned that I’m pretty good at quickly making plans to deal with sudden challenges, and that even when it seems everything’s going haywire, my automatic-cheerer-upper finds all sorts of small things to smile about. Was this the best day ever? Not at all – but I think I did my best with it anyway.

Bio: “IBM: The Next Generation”

September 24, 2008 - Categories: presentation

I thought I’d start keeping track of the bios I use in presentations, hiding company-specific information as necessary. =)

Sacha Chua is an Enterprise 2.0 evangelist, storyteller and geek. She joined GBS Application Services Canada in October last year after completing her master’s degree. She’s passionate about helping people collaborate and connect. Through consulting and application development, she helps companies and people learn more about social networking, Web 2.0, Generation Y, and other emerging topics. As part of the B—– community, she also helps IBMers learn more about how to use these new tools for individual and group productivity. You can find out more about her at http://sachac———– or on her personal blog at http://sachachua.com .

Leia’s home!

September 24, 2008 - Categories: cat

Water: Drank a number of laps of water.
Food: Ate a third of an 85g can of Fancy Feast Turkey.

We took Leia home from the animal shelter today. She’s not yet officially ours–she needs to recover from her cold and then get spayed–but the technician at the shelter thought that Leia would do better in a home than in the sick bay at the shelter. Leia’s still sneezing, but she’s drinking water and eating food, and with the way she’s just taken to us and to her room, you’d think that she’s been here for a while.

So it turns out that she’s not shy or reserved after all. Instead of cowering underneath the bed, she’s reposing on the covers, purring and chirping like the contented cat she is. Both W- and I brought our laptops up to Leia’s room so that we could keep her company while she got to know us and her room, but it doesn’t look like she needs any adjustment time. She’s adopted us as her humans, and that’s that.

Oh, yeah, she’s found her forever home.

She still needs to follow her antibiotic regimen so that she can get over her cold and get ready for spaying. Daily medicine update to be posted starting tomorrow. W- is in charge of tomorrow morning’s dose. =)

Cat’s doing better; school barbecue

September 25, 2008 - Categories: cat, education

I didn’t feel well this morning either, so I stayed home with the cat. W- took care of both of us. I felt much better after a painkiller, so it turned out to be a pretty productive at-home day.

The cat bravely snarfed down her medicated food and then sniffled through the day, coming up to us for cuddles and spending the rest of the time watching squirrels and birds from her bed near the window. She used her litter box today – hooray!

We also attended the school barbecue and curriculum night. I asked the teacher what Grade 5 students typically found challenging, and how we might be able to help. He suggested checking out the Math textbook’s companion website, asking her questions about reading and writing, and looking for ways to make far-off concepts like ancient Greece be more vivid. =) Time to build a model of the Parthenon!

The Orange Chair » Social networking and innovation in a large company

September 27, 2008 - Categories: connecting, enterprise2.0, web2.0

This is more of a work-day topic, but you might be interested in it anyway. Here’s an excerpt from my latest post on our team blog:

Whether social networks were built using traditional means or by using new social technologies, these networks can make a difference in the success of a project. Without ways to tap into the broader social networks in the company, innovators may find themselves working on a project alone, or with a few people who have similar interests and skills. With a wide, diverse network such as the ones facilitated by corporate social networking platforms, innovators can reach out, find people with similar passions and complementary skills, and help make things happen. Innovators can discover similar initiatives in the early stages of development, reducing duplicated effort and allowing people to accomplish more.

Sacha Chua, The Orange Chair » Social networking and innovation in a large company

Learning sewing and French

September 28, 2008 - Categories: sewing

Sewing is turning out to be surprisingly fun. I finished the wool jumper-dress (Simplicity 4097), learning how to work with wool and lining. It’s amazing how even my not-quite-matched-up work looks better with a little bit of lining. In a burst of confidence, I wore my jumper outside the house yesterday. It didn’t fall apart on me (hooray!), and it made me smile. And I didn’t need to unpick nearly as many seams this time around. I think I only ripped out one mistake.

I’ve started working on a matching blazer. It’ll be my first time working with interfacing (to stiffen the jacket front), reverse facing, and sleeves. I’m a little nervous about the sleeves, but I’m sure I’ll figure them out. I’m half-way through the process and the blazer is looking pretty neat.

W- and I passed by a fabric place earlier. He picked up some black-and-beige cloth for reupholstering the dining room chairs, and I picked up 2 3/4 yards of 60″ red wool. I think I’ll make another jumper with a different neckline. =)

I’m starting to really enjoy carefully measuring and cutting the fabric because I know that the attention I put into the early stages will pay off later on. The boxes we bought from Ikea yesterday have also greatly helped me organize my sewing corner. I was planning to get a sewing machine cover just to make sure Leia doesn’t get tempted by the thread, but the universal sewing machine cover looks clunky. I may just have to sew a sewing machine cozy. ;)

When I told Stephen Perelgut about my new hobby, he laughed and joked about my having too much free time. That’s not really true. I could always find plenty of things to do. I can be using this time to draw, write, cook, exercise, code, tidy up, fiddle with things, play with the cat, read…

I’m glad I added sewing to the mix, though. I enjoy creating things. Sewing is teaching me more about thinking in three dimensions with different colors and textures. Constructing my own clothes teaches me about the techniques used in the clothes I wear and the clothes other people wear, developing my eye. I’m getting better at accurately following instructions, deviating from the pattern where necessary. I think it does me good. In fact, it’s so enjoyable that I’ve started setting limits on how much time I spend sewing at any one sitting. (Leia also helps me keep track of time. Yay for cuddly cats!)

I’ve also been doing French lessons in the background. Of course, since I’m learning from Pimsleur language CDs (hooray library!), the example dialogue’s like this: “Bonjour, madamoiselle. Est-ce que vous voudrais bois quelque chose chez moi?” Aiyah. It was like that for Pimsleur Cantonese, too.

Still, learning is lots of fun. =)

Weekly review: Week ending Sept 28

September 29, 2008 - Categories: weekly

Accomplishments:

Plans for next week (well, this week):

Knowledge [shared] is power

September 30, 2008 - Categories: gen-y, social, web2.0

Here’s an excerpt from Aaron Kim’s blog post about meritocracy and social media:

Furthermore, Web 2.0 and Social Media are leveling the professional playing field. Two quotes by Pauline Ores (who is the IBM personification of Social Media Marketing) during the O&M event caught my attention:

  1. In the Social Media world, the most powerful person is the one who shares the most.
  2. Control in Social Media is like grabbing water: the stronger you grab, the less you hold. There’s a right way to retain water, but not by being forceful.

Meritocracy, Pauline Ores and the multi-dimensional IT Professional « The bamboo raft

It reminded me of something that I learned while putting together a presentation on Generation Y and how work is changing.

Knowledge is still power. The old way was to keep knowledge secret, thus ensuring your power. The new way is to share it, and thus to make it grow.

Together with lots of other people in IBM and elsewhere, Aaron Kim helps me realize that I’m on to something good.

Dan Pink

September 30, 2008 - Categories: career

Dan Pink gave a presentation on Johnny Bunko: The Medium and The Message. There’s plenty to write about, but let me jot down a few notes before I go to bed. Here are some snippets:

“If it didn’t exist today, would you invent it?”

That’s the question he asked himself before he started working on the Johnny Bunko book. He realized that tactical, ever-changing information was much better on the Internet than in books. If books didn’t exist and you wanted to invent them today, it would be difficult to get investors interested.

That made me think of the Emacs book I’m working on. The natural home for this information isn’t a printed book, because the Emacs modules I’m writing about are a fast-moving target. (Talk about fast-moving: the parts about Org are already obsolete because Carsten’s merged my ideas into the main code, and I haven’t even finished technical review yet!) The natural home for this information is in a wiki where everyone can read and contribute for free. The Emacs Wiki (http://www.emacswiki.org), to be precise. Hmm. Worth thinking about.

“This book is meant to start a conversation.”

He told us about Bunko Breakfasts and how other people get together to talk about the ideas in the book. What would be a good way to do that? I could bring it up over lunch, or have a lunch and learn session for our new hire network. I could blog about my thoughts here, comment on Dan Pink’s blog, and link to other people blogging about the same topic. I’ll tag my posts as “career”, so they’ll be easy to find again.

More tomorrow: “There is no plan.”