April 2008

Best Practices Conference – April 1, Day 2

April 1, 2008 - Categories: conference

I feel much less intimidated now.  That Best Practices conference is small, almost cozy. Thanks to social networking–and the blog, in particular–I already know a few people here.  It makes the conference so much easier to deal with. Instead of getting first-day jitters, I can fall right into conversations I’ve been wanting to have for a long time.

It’s a small conference, and maybe that’s why most people don’t have their laptops open during sessions. So, no liveblogging for me today. I’ll try braindumping to a voice recorder after the sessions. If I think of it as blogging for other people who couldn’t make it to the conference, then I think there’ll be plenty to write.  I don’t know if there’ll be transcripts, or even recordings of each presentation, but at least I can get the interesting points.

IBM Palisades is a beautiful conference center.  I don’t think I’ve been to another conference center with such a large koi pond, and I love all the old IBM machines and da Vinci replicas scattered throughout the guest wing. The facilities are well-appointed, too.  I exercised in my room a little bit today, but I plan to take advantage of the exercise room tomorrow. The queen-sized bed and bed frame are about 3 feet thick combined, which made me feel a little like the Princess and the pea, sans pea. The only downside is that I forgot my toothpaste, and this is one of those hotels where they don’t provide you with those little toothbrush kit. They do however provide you with soap, shampoo, conditioner, lotion, a shower cap, mouthwash and shoe polish, and you can buy toothpaste from the front desk for two dollars. Must remember to bring my own next time.

Looking forward to today’s sessions!

You have received a painting from Sacha

April 1, 2008 - Categories: sketches


Weekly review: March 31 to April 6

April 6, 2008 - Categories: conference, weekly

Good morning! I’m writing this from the Rosen Centre in Orlando, Florida. I’m here for the IBM Technical Leadership Exchange, which is a fantastic invitation-only conference of IBM’s best and brightest (and the occasional newbie like me who manages to sneak in). ;) I figured I’d do my weekly review before heading over to the convention center, as my evening’s probably going to be too full to write properly. Besides, morning pages are fun.

The last week had been a blast. I attended the IBM Best Practices conference in Palisades, NY, and I presented on “How to Blog Your Way Out of a Job… and Into a Career.” I really enjoyed sharing my experiences with blogging with the thirty or so people who showed up. Everyone was so open and friendly! And I’m glad that people enjoyed my presentation, too. I ended up winning Best Paper at the conference, and the organizers said I’d received over twice as many first-place votes as the next in line did! So I’m really happy that I managed to pass on so much value at my first proper conference as an IBMer.

Even more awesome than winning Best Paper, though, was having the opportunity to learn from more than a hundred people who were passionate about their work and about improving the way they work. One of the terrific things about conferences like this is that you can get so much energy and enthusiasm and encouragement from all these extraordinary people.

I’m also really glad that I had to attend sessions I ordinarily wouldn’t have chosen and joined conversations I never would have started over e-mail. For example, the keynote speeches from the Rational folks got me thinking about measuring value and measuring adoption. I think that’s one of the key benefits of face-to-face conferences. With a virtual conference, it’s just too easy to let “real work” take you away from sessions you’re not sure about. With a virtual conference, you don’t have an excuse to chat over food with people you might not otherwise have met, and you don’t have as many opportunities to form new friendships and renew the ones you had.

Good stuff. That was my last week – jam-packed with conversations and lessons learned from both the formal sessions and the informal chats. Very good stuff.

This week promises to be even better. The Technical Leadership Exchange is an even bigger conference, and I have a full schedule of sessions I would love to learn from. Although I need to revise my presentation extensively because I learned so much last week, I’m looking forward to starting conversations, too. Whee!

TLE2008: Essential Problem-Solving Skills That Will Shorten A Project, Dick Orth

April 6, 2008 - Categories: conference

My day began with S011-LED: Essential Problem-Solving Skills That Will Shorten a Project, by Dick Orth. One of the key things I took away from that session is that being a facilitative leader is hard but worth it. When you make decisions as a group, you get a lot more buy-in and you can get better answers. Consensus-building increases exposure and risk, and a leader’s role is to facilitate the discussion and mitigate the risk.

Another interesting technique I picked up was the Fist of Five, when people hold up five fingers to indicate full agreement, four fingers to indicate that they mostly agree with something, three fingers to indicate that they can live with something, two fingers to indicate that they have minor issues, one finger to indicate that they have major issues, and zero (a fist) for a flat no.  This technique works best in an established team where people feel comfortable about sharing their opinions, and not quite so well in a new team where people might not feel at ease with disagreement. 

It was interesting to hear the international perspectives from the audience. One of the audience members pointed out that in China, this technique might work with employees from multinational companies, but not with state employees because of their sensitivity to hierarchy.  The audience member also noted that this technique can be used with small companies, but not with the founder present.

Another audience member mentioned that building consensus, especially in Asia, is easier when you focus on the positive. Asking for suggestions for improvement can be less confrontational than asking if anyone has any objections. Asking people to e-mail their private comments also gives other people opportunities to share what they think.

Dick Orth walked through two models for problem-solving: a process-oriented model and a change-oriented model. The process-oriented model focused on generating lots of possibilities with many people, and then developing and narrowing them down with a handful of people. He noted that large groups take a long time to narrow a list of items down, so this should be handled by a smaller group. The change-oriented model focuses on the future state, the current state, and the gap between the two. Both models can be used together, with brainstorming used to identify the future state and the prioritized possibilities, the current strengths and issues, and the actions for moving forward. Dick noted that brainstorming the strengths is a great way to get everyone involved and energized, and that no narrowing down is needed for the strengths.

I took advantage of the break to go to a different session. Dick Orth was interesting and I was looking forward to the case study, but there was another workshop that I wanted to learn from. I explained it to Dick before his presentation, so I didn’t feel so bad disappearing. Still, those were pretty interesting two hours, and I learned a lot. =)

TLE2008: Networking: A Workshop in Getting the Most from the TLE, Jim De Piante, part 1 of 2

April 6, 2008 - Categories: conference

I attended Networking: a Workshop in Getting the Most from the TLE, by Jim De Piante. The session was about becoming more comfortable with networking and learning how to network more effectively.  The key takeaways that more people need to hear are: everyone is a born networker; focusing on helping other people is a great way to get into the mood to network; and the best way to be interesting is to be interested.

It made me wonder how more people can feel the thrill of making a connection between two other people.  Maybe a conference or workshop could have a speed networking event and challenge people to make connections between the people they’d talked to. How would something like that work? Hmm…

His model of building relationships has three steps: create a relationship, cultivate a relationship, and help.  What I found interesting about that is that Web 2.0 tends to invert this process.  You’d start by helping people, directly or indirectly, and other people can then choose to cultivate that relationship with you. Funny, innit?

An audience member asked if networking wasn’t something that needed to be self-serving.  I think Jim handled that question well, pointing out that there’s a little bit of self-interest, but it’s altruism that really builds strong relationships. For people who feel negatively about networking because they’ve run into self-centered networkers or they think they need to be self-centered, I recommend two books: “Love is the Killer App” and “Make Your Contacts Count.” Both talk about the importance and benefits of reaching out and looking for opportunities to help people.

Jim also mentioned Stephen Covey’s point about emphatic listening.  He was careful to add that he was not advising people to fake interest, or to exaggerate signs of interest.  The trick to emphatic listening to actually be interested. When you meet someone, you’re looking for common ground.  On that ground, you can build common experiences, and on those common experiences, you can build a shared understanding–hence the value of small talk. 

I found the idea of looking for common interests to be interesting. I know it’s accepted wisdom, and I encourage people to make it easier to find common interests by sharing more about themselves. What I find interesting is that people’s interests still provide me with many opportunities to connect. First, I enjoy the exercise of applying ideas from one area to another. Second, I enjoy matching people within my network and carrying ideas back and forth, so if someone’s interests aren’t a match for me, they’re bound to be a match for someone in my network (or my future network). It all goes into my head (or my database, if I’ve been diligent), waiting for some future connection.

I have more to write, but I also like sleep, so – tomorrow, then!

Don’t know where to start

April 11, 2008 - Categories: life

When there are so many stories, it’s hard to know where to start.

I have a few days on the ground before flying off to another conference. I have yet to write up my notes and e-mail all the people I’ve met. I will need to do that today.

It makes me wonder what I am doing right, so that I can teach that to others.

TLE 2008: I.B.Millennials: The Net Generation and Those Who Recruit, Hire, Work With, Manage, and Sell to Us

April 11, 2008 - Categories: conference, kaizen, presentation

Last Tuesday, April 8, I gave a presentation on “I.B.Millennials: The Net Generation and Those Who Recruit, Hire, Work With, Manage, and Sell to Us” to around 60 people at the IBM Technical Leadership Exchange in Orlando, Florida.

What did I do well?

  • Revision: I stayed up until 4:00 that morning, revising my presentation to improve the flow and include some of the ideas I got from conversations with people from all over IBM.
  • Energy: Because I stayed up so late, I was tired on Tuesday. I didn’t want to do a lackluster performance, so I napped during the session slot immediately before mine, and I had some tea afterwards. I reasoned that I could always listen to the playback of the session I had wanted to attend, but I wouldn’t have another opportunity to redo my session.
  • Presentation structure: After much thinking, I managed to find a good structure that made the presentation flow well. I used the power of three and alliteration throughout the presentation in order to make the presentation more coherent and memorable. I structured the characteristics as “changing childhoods, changing technologies, and changing workplaces”. I listed the challenges as “recruiting and hiring Millennials”, “working with and managing Millennials”, and “selling to Millennials”. Each challenge had three parts: “reach”, “ramp up”, and “retain”. Because of that structure, I hardly needed to glance at my slides to remember where I was, and I didn’t feel the urge to overload my slides with detail.
  • 30-second summary: I put in a 30-second summary at the beginning and end as a courtesy to people who wanted to attend several presentations or review the slides afterwards. This proved to be handy when some people dropped by to say hi and offer encouragement before my session, as I could give them the gist of my talk before they went to a different session. I think it’s a good practice.
  • Presenter remote: I used Jonathan Young’s Kensington presenter remote during my blogging talk at the Best Practices. I liked being able to step away from the podium, and I didn’t need to refer to my speaker’s notes. I also liked how the Kensington presenter fit my hand neatly. I found the same model at the Airport Wireless store in Newark, along with several other presenter remotes. I chose the Logitech presenter remote because it had a built-in timer with vibration alerts at 5 and 2 minutes, which is great in rooms without clocks. I bought it for $75 or so. If you want to buy it now, Amazon.com has it for $37.24 thanks to a mail-in rebate that ends on Monday, April 14. It looks like there are frequent rebate offers, so you should be able to find it on sale somewhere.
  • Stock images: Several people asked me where I got my illustrations. I got some free ones from Stock Exchange, and I got the rest of the images from Stockxpert.com. The Stockxpert.com images typically cost $1 for a presentation-sized image.
  • Discussion: I knew that I didn’t have the historical perspective or the global perspective to give people the complete picture of Millennials, so I invited people to join the discussion by asking and answering questions. I had chatted with a number of people before the session started, so I knew that people had a lot to contribute. They freely shared their concerns, experiences, and insights. This resulted in a session that was not only more interactive than the jam sessions I attended, but also a lot more educational for all of us–myself included. I think this is a terrific way to do a session, as the speaker gets to learn a lot as well. There, Jim de Piante – I asked for help and I got it! =)

What can I do better?

  • More microphones: It seems my presentation style is highly interactive. Next time, I should request additional microphones so that people can be easily heard and recorded.
  • Better summaries: I need to get better at listening to what people say and quickly summarizing the key points for these recorded presentations.
  • Video recording: I want to save up for a high-definition video camera and a tripod so that I can share the material and improve my presentation skills. Jonathan Young’s setup was pretty good. He aimed the video camera’s LCD forward so that he could make sure he was in frame. Alternatively, I could ask a friend to take care of video recording.
  • Picture: I really should take pictures of my audience so that I can get a better count and so that I can recognize and thank people. Maybe I can ask someone to help me with that next time, so that I’m free to prepare other things I need for my presentation.
  • Audio and screen recording: I have Camtasia on my system, and there’s no reason why I can’t use it to record my non-TLE presentations. Next time!

That was a terrific experience. I’m looking forward to the next presentation!

Wicked Cool Emacs: BBDB: Set up BBDB

April 12, 2008 - Categories: bbdb, emacs, wickedcoolemacs

The main address book and contact management module for Emacs is the Insidious Big Brother Database (BBDB), which can be integrated into several mail clients and other modules within Emacs. If you use BBDB to keep track of contact information, you’ll be able to look up phone numbers or add notes to people’s records from your Emacs-based mail. Even if you don’t do e-mail within Emacs, you’ll find that BBDB’s customizability makes it surprisingly powerful.

In this project, you will learn how to set up BBDB as a basic address book. The BBDB homepage is at http://bbdb.sourceforge.net/. The development version fixes a number of bugs, so I recommend you try it instead of the stable version. However, if you are on Microsoft Windows or you do not have development tools handy, you might find the stable version easier to install. As of this writing, the stable version (2.35) can be downloaded from http://bbdb.sourceforge.net/bbdb-2.35.tar.gz . Download and unpack it to ~/elisp/bbdb-2.35, and save the pre-built bbdb-autoloads.el from http://bbdb.sourceforge.net/bbdb-autoloads.el into ~/elisp/bbdb-2.35/lisp .

To check out the development version, change to your ~/elisp directory and type in the following lines at the command prompt:

cvs -d :pserver:[email protected]:/cvsroot/bbdb login
cvs -d :pserver:[email protected]:/cvsroot/bbdb checkout bbdb

You should now have a directory called ~/elisp/bbdb. Change to that directory and run the following commands:

make autoloads
make all

After installing either the stable or development version of BBDB, include it in your load-path by adding the appropriate line to your ~/.emacs:

(add-to-list 'load-path "~/elisp/bbdb-2.35/lisp")    ;; (1)
(add-to-list 'load-path "~/elisp/bbdb/lisp")         ;; (2)

(require 'bbdb) ;; (3)
(bbdb-initialize 'gnus 'message)   ;; (4)
(setq bbdb-north-american-phone-numbers-p nil)   ;; (5)

Use either ~/elisp/bbdb-2.35/lisp(1) or ~/elisp/bbdb/lisp(2) depending on the location of the installed BBDB Lisp files. Then load BBDB(3) and configure it for the Gnus mail client and the Message mode used to compose mail(4). It’s also a good idea to configure BBDB to accept any kind of phone number(5), not just North American numbers with a particular syntax.

After you evaluate this code or restart Emacs, BBDB should be part of your system. Next step: enter your address book!

Wicked Cool Emacs: BBDB: Work with Records

April 12, 2008 - Categories: bbdb, emacs, wickedcoolemacs

Creating Records

Creating a record in BBDB is not like creating a record in graphical address book programs. You will be prompted for each field through the minibuffer, one field at a time. Don’t worry about making mistakes while entering data, as you can always edit the records afterwards.

To create a record, use the command M-x bbdb-create. Here are the prompts you’ll encounter:

Prompt Notes Example
Name Full name John Doe
Company Company or organization ACME
Network Address E-mail address (comma-separated list) [email protected]
Address Description Short identifier for address (Home, Office, etc.) – tab completion available. Leave blank if you have no address information, or if you are done. Home
Street, line 1 Street address, line 1 (not including city, state, postal code or country) 1 Acme Road
Street, line … Street address, more lines – press RET to indicate the end of the street address
City Acme City
State Abbreviations are okay. Consistency helps. AC
Country Acme Country
Phone Location Short identifier for phone number (Home, Office, etc.) – tab completion available. Leave blank if you have no phone information, or if you are done. Home
Phone Phone number. I tend to specify the full number, using spaces to break it into readable chunks. +1 111 111 1111 x1111
Additional Comments Notes about the person, such as interests, how you met, and so on Likes rockets

Press RET to skip any fields for which you don’t have information. To
cancel the entry process, type C-g (keyboard-quit).

After you create the record, Emacs will display the record in another
window. You can then switch to the record and edit it. See Project XXX: Edit a BBDB record.

Searching Records

To search for a specific record, type M-x bbdb, or press b
(bbdb) while in the BBDB buffer. This prompts for a regular
expression and searches the name, company, network address, and notes
fields of all the records for a match against the regular expression
supplied. M-x bbdb-name, M-x bbdb-company, M-x bbdb-net, M-x
bbdb-notes, and M-x bbdb-phones search the corresponding fields only.

Updating Records

After creating or searching for a record, you can switch to the BBDB
window to edit it. Press C-o (bbdb-insert-field) to insert
custom fields. You can use tab completion on existing field names, and
you can also define your own fields by typing any field name. For
example, you may want to store people’s job titles in a field called

To edit the value of a field, move your cursor to the field and press
e (bbdb-edit-current-field) to change the value. To delete
a field, move your cursor to the field and press C-k

Deleting Records

To delete an entire record, move the text cursor to the name and press C-k (bbdb-delete-current-field-or-record). You will be prompted for confirmation. Be careful! If you mistakenly delete a record, there’s no easy way to get it back. Fortunately, BBDB stores its data in a plain text file (~/.bbdb). Back up that file regularly and you’ll be able to recover from mistakes. You can also set up automatic file backups in Emacs (see Project XXX: Make Automatic Backups).

Now you know how to work with individual records. How can you import your address book information from other programs?

Wicked Cool Emacs: BBDB: Import CSV and vCard Files

April 12, 2008 - Categories: bbdb, emacs, wickedcoolemacs

If you have many contacts in another address book program, you can import them into BBDB. Two popular formats are comma-separated value files (CSV) and vCard files (VCF).

Project XXX: Import a CSV File into BBDB

To import a CSV file into BBDB, you will need csv.el from http://ulf.epplejasper.de/downloads/csv.el and lookout.el from http://ulf.epplejasper.de/downloads/lookout.el . Save both files to your ~/elisp directory. Make sure that your ~/elisp directory is in your load-path by adding the following line to your ~/.emacs:

(add-to-list 'load-path "~/elisp")

Export your contacts as an Outlook-style CSV file, then open the file in Emacs. After loading the following code, call M-x wicked/bbdb-import-csv-buffer to merge the CSV data into your address book. Emacs will try to update existing records based on the e-mail address or name provided, creating new records if necessary. After Emacs updates the records, the relevant records are displayed in the *BBDB* buffer. Here is the code to make that work:


(require 'lookout)
(defconst wicked/lookout-bbdb-mapping-table-outlook
  '(("name" "Name")
    ("net" "E-mail Address")
    ("notes" "Notes")
    ("phones" "Mobile Phone"
     "Home Phone"
     "Home Phone 2"
     "Home Fax"
     "Business Phone"
     "Business Phone 2"
     "Business Fax"
     "Other Phone"
     "Other Fax")
    ("addr1" "Home Address")
    ("addr2" "Business Address")
    ("addr3" "Other Address")
    ("lastname" "Last Name")
    ("firstname" "First Name")
    ("job" "Job Title")
    ("company" "Company")
    ("otherfields" ""))
  "Field mappings for Outlook-type CSVs exported from Outlook, Gmail, LinkedIn, etc.")

(defun wicked/bbdb-import-csv-line (line)
  "Import LINE as a CSV, trying to merge it with existing records."
  (let* (record
	 (name  (lookout-bbdb-get-value "name" line))
	 (lastname (lookout-bbdb-get-value "lastname" line))
	 (firstname (lookout-bbdb-get-value "firstname" line))
	 (company   (lookout-bbdb-get-value "company" line))
         (job       (lookout-bbdb-get-value "job" line))
	 (net       (lookout-bbdb-get-value "net" line))
	 (addr1     (lookout-bbdb-get-value "addr1" line))
	 (addr2     (lookout-bbdb-get-value "addr2" line))
	 (addr3     (lookout-bbdb-get-value "addr3" line))
	 (phones    (lookout-bbdb-get-value "phones" line t)) ;; !
	 (notes     (lookout-bbdb-get-value "notes" line ))
         (j (concat job ", " company))
	 (otherfields (lookout-bbdb-get-value "otherfields" line t))
	 (addrs nil)
	 (message ""))
    (if (string= company "") (setq company nil))
    (if (string= notes "") (setq notes nil))
    (if (string= name "") (setq name nil))
    (setq name-search (concat "^" (or name (concat firstname " " lastname))))
    (setq record (or (bbdb-search (bbdb-records) nil nil net)
		     (bbdb-search (bbdb-records) name-search)))
    (if record
	  ;; Matching records found, update first matching record
	  (setq record (car record))
	  (let ((nets (bbdb-record-net record)))
	    (unless (member net nets)
	      ;; New e-mail address noticed, add to front of list
	      (add-to-list 'nets net)
	      (bbdb-record-set-net record nets)
	      (message "%s: New e-mail address noticed: %s"
		       (or name (concat firstname " " lastname)) net)))
	  ;; Check if job title and company have changed
	  (when (or job company)
	     ((string= (or (bbdb-record-company record) "") "")
	      (bbdb-record-set-company record j))
	     ((string= (bbdb-record-company record) j)
	       (concat "Noticed change from job title of "
		       (bbdb-record-company record)
		       (bbdb-record-notes record)))
	      (message "%s: Noticed change from job title of %s to %s"
		       (or name (concat firstname " " lastname))
		       (bbdb-record-company record) j)
	      (bbdb-record-set-company record j)))))
      ;; No record found, create record
      (if (and addr1 (> (length addr1) 0))
	  (add-to-list 'addrs
		       (vector "Address 1" (list addr1) "" "" "" "")))
      (if (and addr2 (> (length addr2) 0))
	  (add-to-list 'addrs
		       (vector "Address 2" (list addr2) "" "" "" "")))
      (if (and addr3 (> (length addr3) 0))
	  (add-to-list 'addrs
		       (vector "Address 3" (list addr3) "" "" "" "")))
      (setq record (list
		     (or name (concat firstname " " lastname))
		     (concat job ", " company)
(defun wicked/lookout-bbdb-create-entry (name company net addrs phones notes
					      &optional otherfields)
  (when (or t (y-or-n-p (format "Add %s to bbdb? " name)))
    ;;(message "Adding record to bbdb: %s" name)
    (let ((record (bbdb-create-internal name company net addrs phones notes)))
      (unless record (error "Error creating bbdb record"))
      (mapcar (lambda (i)
		(let ((field (make-symbol (aref i 0)))
		      (value (aref i 1)))
		  (when (and value (not (string= "" value)))
		    (bbdb-insert-new-field record field value))))

(defun wicked/bbdb-import-csv-buffer ()
  "Import this buffer."
  (let ((lookout-bbdb-mapping-table
      (csv-parse-buffer t)))))

Project xxx: Import a vCard File into BBDB

To import a vCard file (VCF) into BBDB, you will need vcard.el from http://www.splode.com/~friedman/software/emacs-lisp/src/vcard.el and bbdb-vcard-import.el from http://www-pu.informatik.uni-tuebingen.de/users/crestani/downloads/bbdb-vcard-import.el . By default, these files allow you to import names and e-mail addresses from vCard files exported from various address book programs. Save vcard.el and bbdb-vcard-import.el to your ~/elisp directory and add the following lines to your ~/.emacs:

(add-to-list 'load-path "~/elisp")
(require 'bbdb-vcard-import)

Back up your ~/.bbdb file before calling M-x bbdb-vcard-import to import a file or M-x bbdb-vcard-import-buffer to import the current buffer. WARNING: If your vCard file includes fields with multiline values, you may get silent errors. Verify your import by browsing through the displayed entries. If some of them have been misread, revert to your backup ~/.bbdb by closing Emacs and copying your backup over the ~/.bbdb file. To fix the multi-line error, include the following lines in your ~/.emacs:

(defun wicked/vcard-parse-region (beg end &optional filter)
  "Parse the raw vcard data in region, and return an alist representing data.
This function is just like `vcard-parse-string' except that it operates on
a region of the current buffer rather than taking a string as an argument.

Note: this function modifies the buffer!"
  (or filter
      (setq filter 'vcard-standard-filter))
  (let ((case-fold-search t)
        (vcard-data nil)
        (pos (make-marker))
        (newpos (make-marker))
        properties value)
      (narrow-to-region beg end)
        ;; Unfold folded lines and delete naked carriage returns
        (goto-char (point-min))
        (while (re-search-forward "\r$\\|\n[ \t]" nil t)
          (goto-char (match-beginning 0))
          (delete-char 1))
        (goto-char (point-min))
        (re-search-forward "^begin:[ \t]*vcard[ \t]*\n")
        (set-marker pos (point))
        (while (and (not (looking-at "^end[ \t]*:[ \t]*vcard[ \t]*$"))
                    (re-search-forward ":[ \t]*" nil t))
          (set-marker newpos (match-end 0))
          (setq properties
                (vcard-parse-region-properties pos (match-beginning 0)))
          (set-marker pos (marker-position newpos))
          (re-search-forward "\n[-A-Z0-9;=]+:")   ;; change to deal with multiline
          (set-marker newpos (1+ (match-beginning 0))) ;; change to deal with multiline
          (setq value
                (vcard-parse-region-value properties pos (match-beginning 0)))
          (set-marker pos (marker-position newpos))
          (goto-char pos)
          (funcall filter properties value)
          (setq vcard-data (cons (cons properties value) vcard-data)))))
    (nreverse vcard-data)))
;; Replace vcard.el's definition
(fset 'vcard-parse-region 'wicked/vcard-parse-region)

Because address book programs don’t use standard labels for addresses and phone numbers, bbdb-vcard-import.el ignores those fields. For example, Gmail uses the generic field “Label” for address information and does not use separate fields for city, state, zip code, and country. While bbdb-snarf.el makes an attempt to extract addresses from plain text, it seems to be less trouble to export to the Outlook CSV format instead, or even to type the address in yourself. If you want to import addresses, see Project XXX: Import a CSV File into BBDB.

Here’s a partial workaround to enable you to import phone numbers. I tested this code with vCard files from Gmail and LinkedIn. To try it out, add the following modifications to your ~/.emacs:

(defun wicked/bbdb-vcard-merge (record)
  "Merge data from vcard interactively into bbdb."
  (let* ((name (bbdb-vcard-values record "fn"))
	 (company (bbdb-vcard-values record "org"))
	 (net (bbdb-vcard-get-emails record))
	 (addrs (bbdb-vcard-get-addresses record))
	 (phones (bbdb-vcard-get-phones record))
	 (categories (bbdb-vcard-values record "categories"))
	 (notes (and (not (string= "" categories))
		     (list (cons 'categories categories))))
	 ;; TODO: addrs are not yet imported.  To do this right,
	 ;; figure out a way to map the several labels to
	 ;; `bbdb-default-label-list'.  Note, some phone number
	 ;; conversion may break the format of numbers.
	 (bbdb-north-american-phone-numbers-p nil)
	 (new-record (bbdb-vcard-merge-interactively name
						     nil ;; Skip addresses
						     phones ;; Include phones
    (setq bbdb-vcard-merged-records (append bbdb-vcard-merged-records 
					    (list new-record)))))
;; Replace bbdb-vcard-import.el's definition
(fset 'bbdb-vcard-merge 'wicked/bbdb-vcard-merge)

Evaluate this code or restart Emacs, then call M-x bbdb-import-vcard again, which should merge phone numbers into your BBDB records.

Faster mail with Emacs

April 12, 2008 - Categories: emacs

I spent a few minutes getting offlineimap to synchronize my Gmail messages with dovecot, an IMAP server on my laptop. I also set up Gnus to work with the messages. Now I’m having fun speeding through my inbox. I don’t know why, but my text-based terminal seems a lot zippier and a lot easier to work with than Gmail… =)

I’m glad I’m back to doing my mail in Emacs!

That’s my dad!

April 12, 2008 - Categories: family

Beauty is in eye of autistic youth – INQUIRER.net, Philippine News for Filipinos

He has come up with “the kind of shots that have eluded some of us, even with years of training,” said ace advertising photographer John Chua, who introduced Ian to his new hobby by chance.

That’s my dad – random acts of kindness turn into front-page news! =D

Weekly review – April 13, 2008

April 14, 2008 - Categories: weekly

Another week of conferences passed by in a blur. There were so many good stories; I hope I can reconstruct them from my chicken-scratches! I haven’t even gotten back in touch with people from the two conferences I went to over the last two weeks. I plan to summarize the general conversations I’ve been having, and then get in touch with everyone and have the followup conversations over e-mail. Anyway, here’s how my week went:

  • I spent Sunday to Wednesday at the IBM Technical Leadership Exchange in Orlando, Florida. Here are some of the highlights:
  • Networking workshop: Looks like I’ve got the basic networking stuff down pat. Well, maybe I could find a better way to do follow-up – a quicker way to do data entry and mass e-mail? Hmm. Also, it might be a good idea to try teaching social networking sometime…
  • Presentation secrets from comedians: Some great tips in there, such as establishing the space at the beginning of the presentation and getting the hang of walking backwards.
  • Animal Kingdom – It’s really quite a different experience, chatting about tech while going up a rollercoaster… =)
  • Keynote speeches – Loved the energy! Someday I’m going to be able to do something like that…
  • I gave a presentation on I.B.Millennials: The Net Generation. I structured it as more of a discussion than a lecture, and I learned a lot from the thoughts that people shared. I’ve posted my notes on my internal blog.
  • Saturday was a quiet day. I spent most of the time tidying up and working on my book.
  • Catching up with family: my dad and my sister made it to the newspaper for two different things. Every so often it seems my dad gets caught up in a media blitz (all good stuff, don’t worry). Also–a reality TV show?!
  • On Sunday, I scrambled to get all my stuff together for my business trip. I found out that some suits really do mean it when they say “Dry Clean Only.” Fortunately, the suit that shrank was one of the suits I ordered off eBay for a fraction of the retail price. From now on, I will buy only machine-washable suits. =)
  • Now in Yorktown Heights, NY for a Web 2.0 Summit. Do not have to present anything for this summit, although will be around to do headless-chicken impressions because am one of the organizers. Also, promised to present something on Friday, and have two presentations scheduled for next week. Ack!
  • Thought for the week: I like this, but I’m also looking forward to slowing down and catching my breath. =)

    Sketches from the Web 2.0 Summit

    April 15, 2008 - Categories: sketches




    blue horizon 2008: My first IBM keynote!

    April 23, 2008 - Categories: conference, presentation

    Aaron Kim, Bernie Michalik, Jennifer Nolan and I gave the keynote presentation at blue horizon 2008, the main conference for GBS Canada. With 700 people in the Toronto Sheraton Centre’s Grand Ballroom, it was one of my largest presentations–and one of my best. I learned a lot preparing and delivering the presentation, and I’m glad I didn’t back out.

    I felt anxious about the keynote because we hadn’t had a lot of face-to-face time to prepare for the four-part presentation. Because of the Best Practices Conference, the Technical Leadership Exchange, and the Web 2.0 Summit, I had hardly any time to work on my part of the presentation, much less rehearse it together with the others. After agreeing on the general structure for the presentation, we split up and worked individually. I took the section on the Demographic Revolution because it was something I was interested in and I could use some of the research I’d done for my TLE talk on I.B.Millennials. Four days before the keynote, though, I still hadn’t nailed down the words for my part of the presentation. As we rehearsed, I experimented with what I wanted to say and how I wanted to say it, listening to myself to find good ways to say things. If my teammates were worried about the way I kept saying things differently each time we ran through the content, they didn’t let their nervousness show.

    I was nervous about a different thing, too. I like highly interactive sessions, but our presentation would have no opportunities for questions or insights from other people. I wasn’t sure if I’d have enough light to see people react. While giving a presentation, have you ever felt hyper-attenuated to the audience, listening with an almost physical reaction to people as you’re sharing your thoughts? That feeling is one of the things I love about speaking, and I wasn’t sure if I could get into that zone with such a large audience. I was afraid that I might be oblivious to people’s reactions.

    On Sunday–one day before our big show–I mindmapped my speech and added keywords to my speaker notes. After sending my presentation to my teammates, I threw a suit into a bag and dashed to the hotel. I checked in for one night and left my clothes in the hotel room. I then headed to the hall to meet up with Aaron, Bernie, and Jen. We rehearsed the entire presentation three times. Each time, it got smoother and smoother. I even practiced getting up on the tall stools on the stage. I didn’t want to trip in front of all of those IBMers! Not the best way to become memorable… =)

    Monday was our big day. I ironed my suit and made it down in time to grab some breakfast, hoping that I wouldn’t have any problems on stage. After the opening speech, we went on stage. Then there was nothing to do but reach out and connect.

    I loved listening to my team members’ parts. Somehow, things came together in the two days we’d rehearsed. When it was my turn, the speaker notes helped me remember all the points I wanted to make, and my presenter remote allowed me to step away from the podium. There was a hiccup when Aaron’s laptop ran out of power, but the backup computer that Aaron had brought along (hard-won experience!) got us through the rest of the presentation. Bernie ended up speaking without notes, and he didn’t seem fazed at all.

    I’m glad I was part of that presentation. It stretched me and made me want to learn even more about giving presentations and reaching out to hundreds of people. I want to get even better at sharing that energy, that fire. So–relentless improvement!

    What worked:

    • Presentation style: The four of us agreed to use large pictures to give our presentation a distinctive and consistent style. Aaron used Keynote to make it pretty. (It made me want to get a Mac just for presentations!) 
    • Metaphor: I used the metaphor of a river to describe the demographic challenges of the North American workplace. It wasn’t easy to find just the right image. I knew I wanted a wide river with a narrow middle part, but how do you search for something like that? I searched for rivers, river necks, bottlenecks… Eventually, I found a Creative Commons Attribution-licensed Flickr photo of a river canyon. I cropped and magnified the section that looked like what I wanted. The resulting image was obviously pixelated, but I just couldn’t find any other image that resembled the one I had in mind.
    • Transitions: Our speech connected well with the other keynote speeches and the advertisements. We couldn’t have planned it better. We knew a little bit about the theme beforehand, and we tapped into the zeitgeist.
    • Technology: My totally awesome Logitech presenter remote meant that we didn’t have to worry about being behind the computer to control the slides. It beat the infrared Mac remote, which only worked with certain angles.
    • Preparation: When the main computer died, Aaron’s backup Mac saved the day. The lack of speaker notes didn’t bother Bernie at all. Good work!

    What I can do to make this even better next time:

    • Watch out for in-jokes: We assumed people would understand the elephant pictures as references to Gerstner’s “Who Says Elephants Can’t Dance?”. People who weren’t familiar with IBM’s history picked up negative associations, though.
    • Learn from other people’s successes: Aaron’s preparation of a backup computer and Bernie’s smooth transition are two things I’d like to emulate.
    • Get a Mac? ;) Just for Keynote?

    That was fun!

    When I grow up, I’m going to present like Steve Jobs

    April 23, 2008 - Categories: communication, presentation

    Got this from Presentation Zen, one of my favorite resources on presentation skills:

    When I grow up, I’m going to present like Steve Jobs.

    Addicted to blogging?

    April 25, 2008 - Categories: blogging

    A post by Edward Mahoney led me to a post by Gia Lyons where she had shared the results of one of those Net quizzes. Here’s my result:

    84%How Addicted to Blogging Are You?

    Here are my answers:

    1. Where is your blog located? My own domain (for example: www.matts-awesome-blog.com)
    2. How often do you update your blog? Several times a week
    3. How many blogs do you read a day? More than 20. (Although it’s in my feedreader and I read headlines, so…)
    4. How much time do you spend reading blogs a day? Less than 30 minutes
    5. How many different blogs do you post entries on? 5 or more
    6. Have you ever live-blogged? Yes
    7. How do you stay up to date with all your favorite blogs? I subscribe to feeds via RSS, Atom, etc
    8. Have you ever blown off an important task, such as studying for an exam or making a deadline, because you were blogging? No
    9. If something interesting happens to you, do you immediately think about how you’re going to write about it on your blog? Yes
    10. What do you usually blog about? Anything and everything, including personal issues or something funny you saw at the park the other day
    11. What kind of blogging do you do? Both [work and personal].
    12. Have you ever tried to convince a friend or family member they should start a blog? Yes
    13. Have you ever come up with a great blog idea while doing something completely random, such as taking a shower or watching a movie? Yes
    14. When this quiz is over, do you plan on blogging about your blogging addiction? Yes

    I’d say that these are signs of blogging being part of your way of life, not addiction. I don’t use blogging to escape important things I need to do, but rather to enhance what I’m already doing… =)

    You have received a painting from Sacha

    April 25, 2008 - Categories: sketches


    You have received a painting from Sacha

    April 26, 2008 - Categories: sketches


    Weekly review: Week ending April 27, 2008

    April 27, 2008 - Categories: weekly

    I missed the weekly review last week, so this covers April 13 to April 27. Here’s what happened:

    • My weekends were mostly spent catching up on laundry, spending time with my partner, and working on personal projects.
    • From April 14 to April 17, I helped organize the IBM Web 2.0 Summit at the T.J. Watson Center in Yorktown Heights, NY. The Twitter-based backchannel I started on hashtags#web20summit helped people connect and chat about sessions. I was responsible for facilitating and recording sessions, so I didn’t really get to pay attention to them, but the sessions were well-received.
    • On April 18, Friday, I spent most of the day preparing for an upcoming keynote presentation. I took a short break to prepare and give a remote presentation on the Top 10 Web 2.0 Tools Every IBMer Should Try at the Web 2.0 Summit Toronto event, based on a list I’d previously blogged.
    • I spent April 20 (Sunday) to 22 ( preparing for or attending the IBM blue horizon 2008 conference for consultants. I gave a short presentation on the demographic revolution as part of the conference keynote, and I also presented a highly interactive session on the top 10 Web 2.0 tools every IBM consultant should try. I learned a lot!
    • On April 23, Wednesday, I caught up with mail and other things I’d set aside while I was away at conferences. I successfully emptied my inbox. Hooray!
    • On April 24, Thursday, I gave another short presentation on Web 2.0 and Retail, filling in for Bernie Michalik and Frank Noto, who couldn’t make it.
    • On April 25, Friday, I wrote up my conference notes and posted them to my blog. I also helped Ethan McCarty in IBM Communications with some research into how people can tell stories about the company.
    • On April 26, Saturday, I wrote another six pages for my Wicked Cool Emacs book, reaching my chapter target. Hooray! I also did some gardening, and I helped W- change his winter times to summer tires.

    Packed packed packed! Here are some of the things I’ve learned:

    • I enjoy public speaking, and I’m getting better and better at it. The way I present now is different from the way I used to present several years ago. I’m looking forward to learning even more.
    • I need a physical checklist to make sure I don’t forget anything while setting up for presentations. I forgot to record my presentations because I was thinking about other things.
    • No one likes giving presentations on short notice, but sometimes they need to be done. I need a wide range of experiences so that I can relate to different audiences quickly.
    • Professional writing is all about rewriting. It’s embarrassing to see how many mistakes you made the first time around, but at least I have the opportunity to revise!
    • I want to come up with a better way to follow up after conversations. Even keywords written down in a notebook may not be able to trigger rich memory associations. Slowing down during conferences is one way to make more out of those conversation opportunities.

    My plans for next week are:

    • Work: Return to billable work and make sure my internal and external clients are happy.
    • Network: Follow up with people I met at conferences, sending links to my conference notes.
    • Book: Revise chapter 7 based on my technical reviewer’s feedback
    • Life: Make progress on my application for permanent residency by applying for Toronto police clearance and Japanese police clearance
    • Others: Have a yard sale on Sunday with W- and J-

    You have received a painting from Sacha

    April 28, 2008 - Categories: sketches


    Restructuring Presentations: The Leadership Journey

    April 29, 2008 - Categories: communication, kaizen, presentation

    When I attended a presentation called “The Leadership Journey” at the Technical Leadership Exchange, I greatly enjoyed the anecdotes the speaker used to illustrate each point, but I felt overwhelmed by the 21 laws of leadership he presented, one after the other. The speaker had faithfully reproduced the structure in John Maxwell’s book, the 21 Irrefutable Laws of Leadership: Follow Them and People Will Follow You. Although he had supplemented it with personal anecdotes, it came off–at least to me–as sounding rather like a book report. A detailed, lively book report, but a book report nonetheless – a laundry-list of concepts. I wondered if there was a better way to present the information. Here are the laws he presented:

    1. The Law of the Lid
    2. The Law of Influence
    3. The Law of Process
    4. The Law of Navigation
    5. The Law of E.F. Hutton
    6. The Law of Solid Ground
    7. The Law of Respect
    8. The Law of Intuition
    9. The Law of Magnetism
    10. The Law of Connection
    11. The Law of the Inner Circle
    12. The Law of Empowerment
    13. The Law of Reproduction
    14. The Law of Buy-In
    15. The Law of Victory
    16. The Law of Big Mo [Momentum]
    17. The Law of Priorities
    18. The Law of Sacrifice
    19. The Law of Timing
    20. The Law of Explosive Growth
    21. The Law of Legacy

    I mentioned this to another colleague who got in touch with me about an internal conference. I had put this presentation down as one of the sessions I could volunteer to present if no one else stepped up, although I admitted I had my misgivings about how to deliver the presentation well. I told him how I felt the long list of concepts made the presentation less effective than it could have been, and that a mnemonic device or a navigational aid would make this presentation better. He was amused by the idea of a mnemonic–a 21-letter acronym, perhaps?–and said he’d pass on my feedback for some presentation coaching. Hearing that, I volunteered to give the speaker feedback myself. That would be better than second-hand feedback, I thought, and I might as well stand behind my words and learn even more in the process. =)

    This challenged me to think about the presentation more. If I were presenting this, what would I do? How could it be organized to present all that rich content in some more easily digested and applied form?

    I reviewed every slide in the original presentation, writing down keywords on a piece of scratch paper. I thought about questions the speaker could ask people to help them think about the topic before the explanation of the law. After the fourth or fifth law, I found myself categorizing things based on questions, using Who-What-When-Where-How-Why as my original framework. My first pass through the list gave me these categories: “who is a leader”, “where you go”, “how you get there”, and “what you do”. I created a spreadsheet organizing the topics into those categories. As I moved things around, I ended up refining the categories to these five:

    Who can be a leader?
    2. Influence
    5. E.F. Hutton

    How do you become a leader?
    10. Connection
    3. Process
    7. Respect
    6. Solid ground
    14. Buy-in

    What can hold you back or move you forward?
    1. The lid
    17. Priorities
    19. Timing
    11. Inner Circle
    18. Sacrifice

    What do you do as a leader?
    8. Intuition
    4. Navigation
    9. Magnetism
    16. Big Mo [Momentum]
    15. Victory
    20. Explosive growth

    Where do you go next?
    12. Empowerment
    13. Reproduction
    21. Legacy

    Some of the topics can be moved around. “12. Empowerment” belongs in both “What do you do as a leader” and “Where do you go next”, and it could also go into the earlier entries. I don’t have a good feel for whether “1. The lid” should be in “What can hold you back or move you forward?”, or “How do you get there?”. If I spent more time revising this, I’m sure things would settle down.

    What I like about this structure is that it has a certain cohesion about it. Similar laws are together, allowing the speaker to illustrate them with a single well-chosen story or use several stories to build upon a point. There are guide questions that prompt people to reflect as they’re listening to the presentation, and these guide questions are followed by advice and examples from leaders who have taken on those challenges. There’s a chronological flow that matches the leadership journey as well. Each category flows smoothly into the next, and within each category, each law leads into the next. You tell a story.

    Structure is good for speakers and listeners, too. This arrangement gives you a structure that scales: you can cover the entire thing in less than ten minutes, or you can talk for hours. And because it’s broken down into chunks, it’s easier for you remember, whether you’re presenting it or listening to it. You could probably give a speech on this from memory, and people can leave the session with a feeling of understanding the whole thing, not just the first and last chunk.

    Now I’m tempted to look for John C. Maxwell’s e-mail address and send a link to this blog post. It feels weird giving feedback to an author who’s written leadership bestsellers, and maybe there’s a higher reason why he organized those topics that way. But maybe the author hadn’t taken a step back and seen things click into place… If so, then maybe he’ll like this suggestion and use it to help others in a second edition of the book!

    What would you call what I did? I really enjoyed poking inside that presentation and bringing everything together into a structure, a story. I would love to do more of that in the future. It’s quite far from my official IBM role (although the presentation and communication practice will help me as an evangelist), but maybe I can bring aspects of that into my life sometime. Maybe one of my careers will be as a presentation coach… =) I’d love to learn and share more about effective communication!