Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a...

307
Table of Contents January 2008........................................................................................................................................................9 Working on section on Org and projects........................................................................................................9 Projects in Emacs Org.....................................................................................................................................9 More progress...............................................................................................................................................15 Tagging in Org - plus bonus code for timeclocks and tags!.........................................................................16 Working two jobs..........................................................................................................................................19 zomg, another chapter up!............................................................................................................................20 You have received a painting from sacha.....................................................................................................20 Teaching the attitude.....................................................................................................................................20 January - Chapter 7: Taking Notes...............................................................................................................21 Book triage....................................................................................................................................................22 You have received a painting from Sacha....................................................................................................23 Maybe people really are generous with their wisdom..................................................................................23 Caag yaaa daawaamee..................................................................................................................................23 Quick book notes..........................................................................................................................................24 Writing plans for the chapter on managing notes.........................................................................................24 Note-taking: Random notes, journal entries, outlines, and hyperlinks.........................................................25 The grass is not always greener on the other side of the fence.....................................................................27 Yes, I write too much....................................................................................................................................27 Someday like seas.........................................................................................................................................27 How I got hooked.........................................................................................................................................27 Lego Star Wars.............................................................................................................................................29 Capturing Notes with Remember.................................................................................................................29 Weekly review..............................................................................................................................................34 (In the presence of) Mentors.........................................................................................................................36 My head is buzzing.......................................................................................................................................36 Not much writing today................................................................................................................................37 Planning a talk! =) ""Networking 2.0: Blogging Your Way Out of a Job... and into a Career"...................37 Mike Moran: Writer, Search Marketing Expert, Distinguished Engineer!...................................................38 Inching away, 1000 words at a time.............................................................................................................38 Searching Your Notes...................................................................................................................................39 social networking..........................................................................................................................................39 Glasses, glasses.............................................................................................................................................40 Fast-forwarding through small talk...............................................................................................................40 Outlining Your Notes with Org....................................................................................................................41 Donated $110 through Kiva, a microcredit site............................................................................................49 Reading isn't Dead Yet!................................................................................................................................50 Book notes....................................................................................................................................................51 What gets measured gets managed...............................................................................................................52 10 Terrific Wordpress Plugins......................................................................................................................53 Weekly review..............................................................................................................................................53 On second thought........................................................................................................................................54 You have received a painting from Sacha....................................................................................................54 You have received a painting from Sacha....................................................................................................54 Editing...........................................................................................................................................................54 More books...................................................................................................................................................55 You have received a painting from Sacha....................................................................................................57 You have received a painting from Sacha....................................................................................................57 Sand and snow..............................................................................................................................................57 Today............................................................................................................................................................57

Transcript of Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a...

Page 1: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Table of Contents

January 2008........................................................................................................................................................9Working on section on Org and projects........................................................................................................9Projects in Emacs Org.....................................................................................................................................9More progress...............................................................................................................................................15Tagging in Org - plus bonus code for timeclocks and tags!.........................................................................16Working two jobs..........................................................................................................................................19zomg, another chapter up!............................................................................................................................20You have received a painting from sacha.....................................................................................................20Teaching the attitude.....................................................................................................................................20January - Chapter 7: Taking Notes...............................................................................................................21Book triage....................................................................................................................................................22You have received a painting from Sacha....................................................................................................23Maybe people really are generous with their wisdom..................................................................................23Caag yaaa daawaamee..................................................................................................................................23Quick book notes..........................................................................................................................................24Writing plans for the chapter on managing notes.........................................................................................24Note-taking: Random notes, journal entries, outlines, and hyperlinks.........................................................25The grass is not always greener on the other side of the fence.....................................................................27Yes, I write too much....................................................................................................................................27Someday like seas.........................................................................................................................................27How I got hooked.........................................................................................................................................27Lego Star Wars.............................................................................................................................................29Capturing Notes with Remember.................................................................................................................29Weekly review..............................................................................................................................................34(In the presence of) Mentors.........................................................................................................................36My head is buzzing.......................................................................................................................................36Not much writing today................................................................................................................................37Planning a talk! =) ""Networking 2.0: Blogging Your Way Out of a Job... and into a Career"...................37Mike Moran: Writer, Search Marketing Expert, Distinguished Engineer!...................................................38Inching away, 1000 words at a time.............................................................................................................38Searching Your Notes...................................................................................................................................39social networking..........................................................................................................................................39Glasses, glasses.............................................................................................................................................40Fast-forwarding through small talk...............................................................................................................40Outlining Your Notes with Org....................................................................................................................41Donated $110 through Kiva, a microcredit site............................................................................................49Reading isn't Dead Yet!................................................................................................................................50Book notes....................................................................................................................................................51What gets measured gets managed...............................................................................................................5210 Terrific Wordpress Plugins......................................................................................................................53Weekly review..............................................................................................................................................53On second thought........................................................................................................................................54You have received a painting from Sacha....................................................................................................54You have received a painting from Sacha....................................................................................................54Editing...........................................................................................................................................................54More books...................................................................................................................................................55You have received a painting from Sacha....................................................................................................57You have received a painting from Sacha....................................................................................................57Sand and snow..............................................................................................................................................57Today............................................................................................................................................................57

Page 2: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You have received a painting from Sacha....................................................................................................58You have received a painting from Sacha....................................................................................................58Yak shaving with OpenOffice.org................................................................................................................58Library book reminder script - Perl geeking required..................................................................................59Taking it Offline...........................................................................................................................................59Speech recognition - a month of fun.............................................................................................................60Time management and work boundaries......................................................................................................60Windows Live Writer and blogging.............................................................................................................61Changed to excerpts on the main page - What do you think?......................................................................61I love open source.........................................................................................................................................62From Lifehack: How to Make Yourself INSANELY Useful.......................................................................62Blogging works in mysterious ways.............................................................................................................63Passed it on!..................................................................................................................................................63You have received a painting from Sacha....................................................................................................64Sketch: Editing..............................................................................................................................................6410 tips for new bloggers................................................................................................................................64

February 2008....................................................................................................................................................65Microsoft Excel - Alt-Enter..........................................................................................................................65When it rains, it pours: query letter on personal finance accepted by Linux Journal...................................65Notes along the way......................................................................................................................................66xkcd: Real programmers use Emacs.............................................................................................................68Two tweaks = a great writing day.................................................................................................................68Juggling; paperwork.....................................................................................................................................69Testing from Emacs......................................................................................................................................70I so rock =)....................................................................................................................................................70Library Elf is awesome.................................................................................................................................71Chapter 7: Managing Your Notes in Emacs - done!.....................................................................................71Upcoming events..........................................................................................................................................72Weekly review - Feb 9, 2007........................................................................................................................72Linux and Windows playing nicely together................................................................................................73Rough guide to getting an existing Windows XP partition to boot as a VMWare guest under Linux.........73Writing and "Better: A Surgeon's Notes on Performance"...........................................................................74You have received a painting from Sacha....................................................................................................75Building relationships: 10 ways to get the most out of social networking sites...........................................75I love you library!.........................................................................................................................................76Rumor has it that Dragon NaturallySpeaking works under WINE..............................................................76Making arrangements for my cat..................................................................................................................77Taking quick notes for books........................................................................................................................77Sketch: My first writing group......................................................................................................................78You have received a painting from Sacha....................................................................................................78Chapter 6: Being Big Brother (plan).............................................................................................................78BBDB: Show an address list.........................................................................................................................79BBDB: Show a phone list.............................................................................................................................80Software as a service, high tech startup :: Morph Code :: Schedule of Events............................................81BBDB: Filtering by Mail Alias.....................................................................................................................82Trying out virtual assistants..........................................................................................................................84Geni - Your family tree online......................................................................................................................84Weekly report - February 17, 2008...............................................................................................................84You have received a painting from Sacha....................................................................................................85You have received a painting from Sacha....................................................................................................85Spontaneous outbursts of baked goods.........................................................................................................85You have received a painting from Sacha....................................................................................................85Weekly review - Week ending February 24.................................................................................................85

Page 3: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

New rule for presentations............................................................................................................................86Doodling.......................................................................................................................................................86Speaker's block.............................................................................................................................................86You have received a painting from Sacha....................................................................................................86You have received a painting from Sacha....................................................................................................86You have received a painting from Sacha....................................................................................................86You have received a painting from Sacha....................................................................................................86Headless chicken impression........................................................................................................................87Recent Talks.................................................................................................................................................87Networking 2.0: Blogging Your Way out of a Job... and Into a Career.......................................................88You have received a painting from Sacha....................................................................................................89You have received a painting from Sacha....................................................................................................89Why DemoCamp is one of my favorite networking events..........................................................................89Notes from "Networking 2.0: Blogging Your Way Out of a Job and Into a Career"; the experience of speaking........................................................................................................................................................90Wicked Cool Emacs: BBDB: Keeping track of contact dates......................................................................91Internet experiment #2: Ordering clothes - success!....................................................................................94

March 2008........................................................................................................................................................95Weekly review - week ending March 2, 2008..............................................................................................95Trying out the high-flying lifestyle...............................................................................................................95What the heart has once owned and had, it shall never lose.........................................................................96It is the choices we make that show who we truly are, far more than our abilities......................................96He loves his new white hat...........................................................................................................................96Working on the book....................................................................................................................................96Wow. Physics can be phun...........................................................................................................................96Wow. Physics can be phun...........................................................................................................................97You have received a painting from Sacha....................................................................................................97Generational differences...............................................................................................................................97You have received a painting from Sacha....................................................................................................99You have received a painting from Sacha....................................................................................................99Vacations are essential..................................................................................................................................99You have received a painting from Sacha....................................................................................................99Wicked Cool Emacs: BBDB: Use nicknames and custom salutations.........................................................99Jetlag-assisted wakefulness.........................................................................................................................101Vision + Value + Voice = Connection.......................................................................................................102Optimizing my day.....................................................................................................................................102Morning Pages............................................................................................................................................102Three tips for long flights...........................................................................................................................103Morning pages............................................................................................................................................103Weekly report.............................................................................................................................................104

April 2008........................................................................................................................................................105Best Practices Conference - April 1, Day 2................................................................................................105You have received a painting from Sacha..................................................................................................105Weekly review: March 31 to April 6..........................................................................................................105TLE2008: Essential Problem-Solving Skills That Will Shorten A Project, Dick Orth..............................106TLE2008: Networking: A Workshop in Getting the Most from the TLE, Jim De Piante, part 1 of 2.......107Don't know where to start...........................................................................................................................108TLE 2008: I.B.Millennials: The Net Generation and Those Who Recruit, Hire, Work With, Manage, and Sell to Us.....................................................................................................................................................108Wicked Cool Emacs: BBDB: Set up BBDB..............................................................................................109Wicked Cool Emacs: BBDB: Work with Records.....................................................................................110Wicked Cool Emacs: BBDB: Import CSV and vCard Files......................................................................112Faster mail with Emacs...............................................................................................................................116

Page 4: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

That's my dad!.............................................................................................................................................117Weekly review - April 13, 2008.................................................................................................................117Sketches from the Web 2.0 Summit...........................................................................................................118blue horizon 2008: My first IBM keynote!.................................................................................................118When I grow up, I'm going to present like Steve Jobs...............................................................................119Addicted to blogging?.................................................................................................................................120You have received a painting from Sacha..................................................................................................121You have received a painting from Sacha..................................................................................................121Weekly review: Week ending April 27, 2008............................................................................................121You have received a painting from Sacha..................................................................................................122Restructuring Presentations: The Leadership Journey................................................................................122

May 2008.........................................................................................................................................................124Weekly review: Week ending May 4, 2008...............................................................................................124Kaizen Presentations: Web 2.0 and the University.....................................................................................125Gen Y Growing Up: My first chat with a financial planner.......................................................................126Gen Y Growing Up:....................................................................................................................................127Geek: How to use offlineimap and the dovecot mail server to read your Gmail in Emacs efficiently......128Lotus Notes Tweak: End of Message, No Response Needed.....................................................................129The Gen Y Guide to Web 2.0 at Work.......................................................................................................130I need a faster web host...............................................................................................................................130You have received a painting from Sacha..................................................................................................131Welcome to my new host!..........................................................................................................................131Sketchcast: Week ending May 11...............................................................................................................131Sketchcat.....................................................................................................................................................131It's not just for you - it helps other people remember the steps, too!..........................................................132The Incoming University Student's Guide to Web 2.0...............................................................................132How to sketch with a Nintendo DS............................................................................................................133New workflow for sketching; ooh, batch import!.......................................................................................134Weekly review: Week ending May 18.......................................................................................................135But how do you know what to draw?.........................................................................................................136Are you neglecting new employees? Web 2.0 can help you with relational onboarding...........................136You have received a painting from Sacha..................................................................................................138The only way to fight the darkness is to blaze even brighter with light.....................................................138Work permit reprieve..................................................................................................................................139Getting through the plateau of mediocrity; Picking up the idioms.............................................................139Weekly review: Week ending May 25, 2008.............................................................................................140Contact me..................................................................................................................................................141About..........................................................................................................................................................141Archive Index.............................................................................................................................................142Book: Success Built to Last........................................................................................................................142Thinking out loud: Taking it off/online......................................................................................................143New blog design.........................................................................................................................................144Relentless improvement and a focus on the positive..................................................................................145WordCamp Philippines: September 6, 2008 in Manila..............................................................................145Some thoughts on reading...........................................................................................................................145Dealing with stage fright.............................................................................................................................147Trying to get a good head shot....................................................................................................................149Two presentation stories for today: Oooh, shiny; Reaching the back row.................................................150Teaching passion.........................................................................................................................................152Emacs Gnus: Searching Mail......................................................................................................................152Too much time on her hands.......................................................................................................................154Emacs Gnus: Organize Your Mail..............................................................................................................155

June 2008.........................................................................................................................................................158

Page 5: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Weekly review: Week ending June 1, 2008...............................................................................................158Drupal: Lather, rinse, repeat - Cleaner development with installation profiles and Makefiles..................159Drupal: Adding lines to settings.php in an installation profile...................................................................159Drupal: Storing data in the user profile......................................................................................................160Drupal makes me feel like Bruce Lee + Jackie Chan.................................................................................160Emacs Gnus: Filter Spam...........................................................................................................................160A geek's guide to Toronto...........................................................................................................................162Weekly review............................................................................................................................................163Learning Japanese? Here are some useful resources..................................................................................163IBM Pass It Along - social learning!..........................................................................................................163Notes on backporting modules from Drupal 6 to Drupal 5........................................................................164Drupal meetup in Toronto later - 7:00 at the Drake...................................................................................165Setting up your Drupal development environment.....................................................................................165Storytelling in presentations.......................................................................................................................167How to scale presentations up or down - the art of timing.........................................................................168Programmatically creating CCK nodes in PHP (interaction with the Path module)..................................169Exploring the senses at the Ontario Science Centre...................................................................................170Weekly review............................................................................................................................................171Networking for new hires...........................................................................................................................172Paperwork...................................................................................................................................................173Weekly review: Week ending June 22, 2008.............................................................................................173Web 2.0 @ Work: Creating a professional profile.....................................................................................173Trudge, trudge, trudge................................................................................................................................174Holding my (quality assurance) horses.......................................................................................................174Quick weekly report, week ending June 29, 2008......................................................................................175Hooray, figured out Drupal 5 multi-step registration form with validation and invites.............................175Enough time: a new hire's reflections.........................................................................................................176Awesome, I've been quoted in Portuguese!................................................................................................178Taking book notes.......................................................................................................................................178

July 2008.........................................................................................................................................................180Weekly report, week ending July 4, 2008..................................................................................................180Sowing seeds: What is technology evangelism, anyway?..........................................................................181What do I want to learn?.............................................................................................................................181Configuration management with Drupal - Multiple developers, live site..................................................184Might need to spend more time hanging out with Emacs geeks =)............................................................184Sowing seeds: Common objections to technology evangelism for collaborative tools..............................185Canada and Web 2.0 conferences...............................................................................................................186Check out my parents =).............................................................................................................................186To dream the impersonal dream.................................................................................................................186Ruby code to quickly convert titles to ISBNs.............................................................................................188Weekly report: week ending July 11, 2008................................................................................................189Hello, I'm Sacha Chua! (Self-introduction and sitemap in verse)..............................................................189GBS Learning Week: First set....................................................................................................................190Notes from GBS Learning Week................................................................................................................191Managing interruptions...............................................................................................................................192One sentence - microfiction, microlife.......................................................................................................193Reflecting on time and overtime.................................................................................................................193What teachers make....................................................................................................................................195Emacs Org Google Tech Talk....................................................................................................................196Learning how to drive is about starting even after you stall.......................................................................196Keeping things fresh; Analyzing session feedback....................................................................................197Emacs: BBDB: Modifying the record creation process..............................................................................199Emacs: Smarter interactive prompts with Org remember templates..........................................................200

Page 6: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Drupal: Testing multisite/domain-access Drupal locally and on a testing server.......................................201Weekly review: week ending July 20, 2008...............................................................................................202Drupal: Adding a footer to all of your system e-mail.................................................................................202Please vote for my about-me/sitemap slideshow on Slideshare!................................................................203Weekly report - week ending July 25, 2008...............................................................................................203Emacs: Someone who's even geekier about BBDB!..................................................................................204Things I can do to make progress on my book...........................................................................................204Yet another snippet mode for Emacs..........................................................................................................204Want to subscribe to a subset of my blog?.................................................................................................205Emacs is not just for computer geeks; also, these are the things that keep me going................................205Emacs: Keyboard shortcuts for navigating code........................................................................................206Morning pages from Ottawa.......................................................................................................................207Eclipse to Emacs: Navigating your source tree..........................................................................................208Emacs, Remember, and GTD.....................................................................................................................209Kaizen: What would make our Drupal lives better?...................................................................................209Drupal: Patching simpletest for Drupal 5 to understand the Location header............................................210From Eclipse to Emacs: Drupal development with Subversion, tags, templates, and xdebug...................211Development kaizen: Deployment and testing...........................................................................................211Emacs and PHP: There's more than one way to do it, of course................................................................211Emacs and PHP tutorial: php-mode............................................................................................................212Kaizen: Moving time around......................................................................................................................214Emacs and PHP: On-the-fly syntax checking with Flymake......................................................................214Weekly review - week ending Aug 1-ish....................................................................................................215

August 2008.....................................................................................................................................................216Switching to Ubuntu...................................................................................................................................216Year in review: Life as a 24-year-old.........................................................................................................216Emacs: Caps lock as M-x............................................................................................................................217OpenOffice.org: Replacing dingbats..........................................................................................................217Emacs and Gnus: zomg, new chapter out the door!...................................................................................218Finding something worth talking about......................................................................................................218Drupal shell: quickly evaluating PHP statements in a Drupal context.......................................................219Drupal, Emacs, and templates: Module update functions..........................................................................220Lifehacking: Switching to a rolling laptop bag..........................................................................................221Making things tangible: agile bug-tracking with LEGO!...........................................................................221Do what works for you; It's not about being Gen Y, it's about being new.................................................222Deploying to servers...................................................................................................................................223Drupal 5: Migrating a production database to a QA server........................................................................223Happy birthday to me!................................................................................................................................224Why browse the Web in Emacs?................................................................................................................225Sweet! Facebook in Emacs!........................................................................................................................226Weekly review: Week ending Aug 17, 2008..............................................................................................226Emacs and w3m: Quick searches................................................................................................................227Running groups of Drupal tests from the command line............................................................................228Emacs and w3m: Fake your user agent......................................................................................................230Many hats: Technical writer.......................................................................................................................232The Leisure of Work...................................................................................................................................232BarCampManila..........................................................................................................................................233Just ordered a tablet....................................................................................................................................234Weekly review: August 16 to August 23....................................................................................................234Emacs and W3M: Toggling between work and the Web...........................................................................235Mouse woes on Ubuntu Hardy...................................................................................................................236Work that I love: reflecting on the whats and hows...................................................................................236Cintiq..........................................................................................................................................................237

Page 7: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Mindmapping on infinite paper..................................................................................................................237Celebrating the little things you learn.........................................................................................................237On Changing the World..............................................................................................................................238Editors for blogging....................................................................................................................................238Weekly review: Week ending Aug 31, 2008..............................................................................................238

September 2008...............................................................................................................................................239Hacking the Domestic.................................................................................................................................239Squee! Won Slideshare's Best Presentation Contest!.................................................................................240Taming the Firefox keyboard with keyconfig............................................................................................240If you can, teach; If you can't teach, do......................................................................................................240Emacs: Jump to anything............................................................................................................................241Internet Explorer - hovering on non-link items..........................................................................................241New presentation: "New media, New generation".....................................................................................242And just like that, we have a cat.................................................................................................................242Weekly review - Sept 7, 2008.....................................................................................................................243Le Chat Gris................................................................................................................................................243Slidecast: New Media, New Generation.....................................................................................................243Emacs and w3m: Making tabbed browsing easier......................................................................................245Emacs w3m: Open pages in external browsers..........................................................................................245First impressions in an e-mail world...........................................................................................................246Drupal: Programmatically installing and enabling modules in the .install file..........................................246Drupal: Making our build system better.....................................................................................................247Working on a small project.........................................................................................................................248Drupal: Deploying two branches to three systems.....................................................................................248Drupal and Drush: Updating the database from the command-line...........................................................249The Road to Me 2.0: How I Was the Chosen One « Personal Branding Blog - Dan Schawbel..............251Subversion: Restore deleted files................................................................................................................251Two-week review: 2 weeks ending September 19.....................................................................................251The way I work...........................................................................................................................................252We're adopting a cat!..................................................................................................................................253Not the best day ever, but that's okay.........................................................................................................254Bio: "IBM: The Next Generation"..............................................................................................................255Leia's home!................................................................................................................................................255Cat's doing better; school barbecue............................................................................................................255The Orange Chair » Social networking and innovation in a large company...........................................255Learning sewing and French.......................................................................................................................256Weekly review: Week ending Sept 28........................................................................................................256

October 2008...................................................................................................................................................257Knowledge [shared] is power.....................................................................................................................257Dan Pink.....................................................................................................................................................258Gen Y Perspective: Flexibility, Work-Life Balance, and Curb Cuts..........................................................258Gen Y Perspective: Why Gen Y Won't Stay at Jobs that Suck..................................................................259Sometimes you just have to do it................................................................................................................260Notes from WordCamp...............................................................................................................................261Firehose.......................................................................................................................................................261Firehose.......................................................................................................................................................261Wordpress and lifestreaming - check out my draft firehose interface........................................................261New domain name: livinganawesomelife.com...........................................................................................262My blog should be a little bit faster now....................................................................................................262Sewing: Wool jumper, blazer.....................................................................................................................262Week ending Oct 5.....................................................................................................................................263Deploying Drupal updates onto a live site..................................................................................................263I'm so sorry!................................................................................................................................................264

Page 8: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

It's a little bit scary......................................................................................................................................264Writing presentation abstracts together......................................................................................................265Sewing: Red jacket, V8343........................................................................................................................265Week ending Oct 12...................................................................................................................................265Happy BlueDay to me!...............................................................................................................................266Oooh, pretty presentation!..........................................................................................................................268Weekly review: Week ending Oct 19.........................................................................................................268Things I do when I'm travelling on my own...............................................................................................269Catching my breath.....................................................................................................................................269Back on the ground; lessons from Innovation Discovery Tel Aviv and CASCON...................................269Week ending Oct 26...................................................................................................................................271

November 2008...............................................................................................................................................272Weekly review: Week ending Nov 2, 2008................................................................................................272Learning languages.....................................................................................................................................272Cat scratching post......................................................................................................................................273Learning about conviction and life.............................................................................................................273Weekly review: Week ending November 9, 2008......................................................................................273There's something about mornings.............................................................................................................274Preparing presentations: from mindmap to storyboard...............................................................................274Weekly review: Week ending November 16, 2008....................................................................................275Upcoming webcasts on social networking, Gen Y.....................................................................................276TCP window scaling, or zomg the Internet works for me again................................................................277Weekly review: Week ending November 21, 2008....................................................................................277Virtuoso......................................................................................................................................................278Stock image series......................................................................................................................................279Notes from the City of Toronto Web 2.0 Summit......................................................................................279Notes from conversations: Conscious competence....................................................................................280More random notes from last night's conversation.....................................................................................282Notes from Rahaf Harfoush's talk on the use of social media in Obama's campaign................................283

December 2008................................................................................................................................................284Weekly review: Week ending November 30, 2008....................................................................................284Notes from conversations: Ushnish Sengupta, consulting..........................................................................285One of Canada's Most Influential Women in Social Media?......................................................................286Drupal rockitude.........................................................................................................................................287Drupal, Makefiles: save time, make awesome...........................................................................................288Let's talk about passion...............................................................................................................................289The benefits of writing................................................................................................................................290Weekly review: Week ending Dec 7..........................................................................................................290Library shortcuts.........................................................................................................................................290Crazy business idea: videoconferencing event/party spaces =)..................................................................291Notes from today's Drupal hacking............................................................................................................291DrupalCon 2009 abstract: Totally Rocking Your Development Environment..........................................293Why automation matters to me...................................................................................................................294Twitter, Whuffie, and Amazing Connections.............................................................................................294Drupal: Changing module behavior without changing the source code.....................................................295Drupal and return on sharing......................................................................................................................295The economics of entertaining at home......................................................................................................296Cintiq 12WX, OpenSuse 11.0, and much pain and suffering.....................................................................297Weekly report: Week ending Dec 14..........................................................................................................300The Return on Mistakes..............................................................................................................................300#hohoto conversations................................................................................................................................301Leavin' well enough alone..........................................................................................................................302Hosting a teleconference call......................................................................................................................303

Page 9: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Emacs, Org, and BBDB: Hyperlinking names to blogs.............................................................................303Emacs: Working with multiple source trees...............................................................................................305

January 2008

Working on section on Org and projects

http://sachachua.com/wp/2008/01/01/working-on-section-on-org-and-projects/Wed, 02 Jan 2008 03:27:10 +0000Just to say that I'm alive and writing. I'm at 1400 words or so for the section on Org and projects, and there's just a little bit more to write. I'm pretty happy with the quality of my writing today, too.

In other news, I talked to two people I haven't talked to in a while, and W- and I shoveled some neighbors' walks. =)

I also spent some time tweaking my accounting. It's true. Personal finances are BORING once you have a good setup. There's only so much planning I can do. There's also only so much analysis I can do, although it was fun figuring out how to get a PivotTable that can help me compare my expenses over the last three years. I'm looking forward to getting more data and reaching a few more milestones, but that's about it for now... =)

Projects in Emacs Org

http://sachachua.com/wp/2008/01/02/projects-in-emacs-org/Thu, 03 Jan 2008 01:41:00 +0000

Introduction

Organizing your tasks into projects can help you plan ahead, track your progress, and stay motivated. Working from a project list allows you to plan your day or week instead of just reacting to other people's requests. Keeping your projects and tasks in Org makes it easier for you to review your completed tasks and plan the next step. If you include some text describing why you want to do the project and what your intended outcome is, this can help you stay motivated throughout a long project.

Projects can take a single day or several years. They can be large projects involving lots of other people and resources, or small projects that you do on your own. Projects may involve a handful of separate steps or a hundred things you need to do in order to achieve your goal. The important thing is that there is more than one step. If you organize your task list so that related tasks are together, then you'll find it easier to get a sense of where you are, where you're going, and what you need to do next.

In this section, you will learn how to:

• Create projects, • Organize your tasks into projects, • Review your ongoing projects, and • Mark projects as finished.

I'll assume that you're using Emacs 22, and that you've set up Org using an ~/organizer.org agenda file and the basic configuration suggested in either "Org and GTD" or "Org as a Day Planner." I'll also assume that you're familiar with switching between the Org agenda view and the Org organizer file, and that you're

Page 10: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

comfortable navigating around Emacs.

The examples I'll use focus on yearly goals. You might also have short-term projects or long-term plans. Feel free to adapt the examples as needed.

Open your ~/organizer.org file. If you've collected your tasks as suggested in the previous sections on Using Org as a Day Planner or Using Org for GTD, your ~/organizer.org file might look something like this:

* Inbox ** TODO Read Emacs Lisp intro ** TODO Write yearly review ** TODO Exercise ** TODO Browse the Emacs Wiki

Create new top-level headings for this year's goals or the projects that you're working on. You can create a top-level heading by typing * and the heading, like this:

* Learn more about Emacs * Go on vacation ... * Inbox ** TODO Read Emacs manual ...

It's a good idea to add the projects to the beginning of the file (before your Inbox) because M-x remember adds new tasks or notes to the end of the file. If the last major heading as * Inbox, then the tasks and notes are automatically added to it. If the last major heading is a project, the tasks and notes may get misfiled.

What are your projects?

Yearly goals? I've got twenty-year plans!

If you're a top-down planner, you'll find it easy to list your projects. In fact, you might have a ten- or even twenty-year plan already written down. You'll find this section straightforward, because you're already used to planning in terms of projects. Go ahead and adapt the examples to your long-term plans.

Yearly goals? I live day by day!

If you're a bottom-up planner, you might be giving me a weird look right now. "Yearly goals? I'm lucky if I can figure out how to get through the next day!" This section will also show you how to find the recurring themes in your task list and organize them into projects. Give project-based planning a try for a month. If this way of thinking doesn't work for you, Org will work just fine without projects.

You probably have projects, even if you can't think of any right now. Review your ~/organizer.org file. If you haven't written down everything you needed to do yet, go through the section on basic configuration for your planning style (GTD or day planning). Once you have a list of things to do, you can then review it for big tasks, related tasks, and other project clues.

Read your tasks and ask yourself the following questions:

• *Can I do this in one sitting?* Big tasks such as "Write a book" are often projects in disguise. Use projects so that you can break them down into smaller, doable tasks.

Page 11: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• *Is this related to other tasks?* Related tasks such as "Book a flight" and "Plan my itinerary" are often clues to a project like "Go on vacation". Use projects so that you can review related tasks together.

• *Why am I doing this?* When you think about the reason why you're doing something, you'll often find a bigger project. For example, if one of your tasks is "Set up an automatic retirement savings plan", then the question "Why am I doing this?" may lead you to the project "Plan for retirement". Use projects to help you think of other ways to move towards that goal.

Big tasks need to be broken down into smaller tasks anyway, and organizing them into projects will help you make them more manageable. You may not want to organize all of your other tasks into projects. If you can pick some major themes to focus on, though, then you'll be able to see how the different things you do are related to each other, and you'll be able to think of other ways to work on those projects. If you're starting out with project-based thinking, maybe you can pick three to five projects and try to do a little work on each of them every day.

If you still don't identify any projects, that's okay. You can use Org as a straightforward task list. Jump ahead to the section on "Tags", as you'll probably find that useful.

On the other hand, if this step turns up plenty of projects, resist the temptation to over-correct and end up with hundreds of projects. I find that more than 7 active projects gets hard to manage. Pick a few main themes that you'd like to work on, and make everthing else something you plan to do someday.

Project tasks

Creating tasks

Now that you have project headings, think of the next thing you need to do in order to move those projects forward. If you've already written down those tasks, move them under the appropriate project heading. If not, type them in.

In order for a task to belong to a project, it needs to be under the heading and at a lower level. For example, if your project heading has one star, like this:

* Learn Emacs

then your TODO headings should have two stars, like this:

* Learn Emacs ** TODO Read the Emacs manual ** TODO Read the Emacs Lisp Intro manual (eintr) ** TODO Install the Emacs source code

If your tasks are not at the right level, you can add the star manually by editing the heading. You can also use M-right and M-left (org-metaright and org-metaleft) while on a heading in order to promote or demote it, and you can use M-S-right and M-S-left (org-shift-metaright and org-shift-metaleft) to promote or demote entire subtrees.

To move tasks up and down within the project, you can copy and paste the text. You can use M-Up and M-Down (org-metaup and org-metadown) to move subtrees.

Think of tasks you can do within the next week in order to move each of your projects forward. Add next actions to all of your active projects. Creating next actions for each of your projects makes it easier to remember to keep moving forward.

Page 12: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Organizing tasks

If you have many tasks in a project, you may want to organize them into sub-projects. For example, you might divide a software project into components. If you're starting from scratch, you can create the project structure by typing in more stars for sub-project headings. For example:

* Learn Emacs ** Read mail *** TODO Choose a mail client *** TODO Install and configure the mail client *** TODO Send a message ... ** Browse the Web *** Read through the w3m documentation ...

You can also demote an existing project into a subproject. Use M-S-right (org-shift-metaright) on the current project headline in order to demote it to a sub-project. This will also demote the tasks within the project. For example, demoting this:

* Learn Emacs ** TODO Choose a mail client ** TODO Install and configure the mail client ** TODO Send a message

will result in this:

** Learn Emacs *** TODO Choose a mail client *** TODO Install and configure the mail client *** TODO Send a message

Then you can change the heading and add another heading above it, like this:

* Learn Emacs ** Read mail *** TODO Choose a mail client *** TODO Install and configure the mail client *** TODO Send a message

This kind of organization is optional, but it can help you get an idea of the overall structure of your project. Using different levels allows you to hide and show groups of headings by pressing TAB on the heading.

Now that you've created your project tasks and organized them the way you want, it's time to actually do the work.

Working on tasks

If you use Org as a day planner, you may also want to schedule the tasks onto specific days with C-c C-s (org-schedule). You can review your daily or weekly agenda with C-c a a (org-agenda, org-agenda-list), switching between daily and weekly views with d and w (org-agenda-day-view and org-agenda-week-view).

You can work with the next actions in the same way you work with other tasks, rescheduling them or marking them as STARTED, WAITING or DONE with the keyboar shortcuts introduced in the previous section on Org and GTD or Org as a Day Planner.

Page 13: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

When you finish a project task, think of the next action you can do in order to move that project forward. If you use Org as a day planner, schedule the next action onto your calendar as well.

Reviewing projects

You can review your projects by opening your ~/organizer.org and browsing through the headings. S-tab (org-shifttab) changes the visibility of headings, so you can see just the top-level headings or all the details. You can use TAB (org-cycle) on a headline to show or hide subtrees.

Reviewing a list of projects

If you have many projects, you'll want a shorter view of just your active projects. To make it easier to review projects, add a PROJECT tag to all your active project headlines. You can add a tag by editing your ~/organizer.org and moving your cursor to the headline and typing C-c C-c (org-ctrl-c-ctrl-c), followed by the name of the tag (PROJECT). You can also manually type :TAGNAME: at the end of the headings, like this:

* Learn more about Emacs :PROJECT: ** TODO Read the Emacs manual ** TODO Read the Emacs Lisp Intro manual (eintr) ... * Go on vacation :PROJECT: ... * Inbox ...

You might classify some of your projects as someday/maybe - things that are nice to think about, but which you aren't acting on right now. Tag your inactive or someday/maybe projects with PROJECT and MAYBE. If you're editing the ~/organizer.org file, just add :PROJECT:MAYBE: to the heading. If you're tagging it with C-c C-c (org-ctrl-c-ctrl-c), specify PROJECT:MAYBE as the tag.

* Learn more about Emacs :PROJECT: * Go on vacation :PROJECT:MAYBE: ... * Inbox ** TODO Read Emacs manual ...

Now that you've tagged your projects, you can view just your project headlines with a custom agenda command. Custom agenda views are a terrific feature in Org, and you can do a lot with them if you know a little Emacs Lisp. Here's what you need to add to your ~/.emacs in order to get a list of your active projects and your someday/maybe projects:

(setq org-agenda-custom-commands '(("p" tags "PROJECT-MAYBE-DONE" nil) ;; (1) ("m" tags "PROJECT&MAYBE" nil) ;; (2) ;; ... put your other custom commands here ))

• (1) This makes C-c a p (org-agenda, p) show your active projects. • (2) This makes C-c a m (org-agenda, m) show your "maybe" projects.

With these two commands, you can quickly review your active and inactive projects. To jump to a project from the agenda view, move your cursor to the heading and press RET (org-agenda-switch-to). If you want to

Page 14: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

scan through the projects quickly, use f (org-agenda-follow-mode) in the agenda view to turn on follow mode, then move to different headlines. Another window will show the headline at point.

If you review your projects at least once a week, you'll find it easier to make regular progress. If you want to combine your weekly/daily review with your project list, you can do that with org-agenda-custom-commands as well. Here's what you'd put in your ~/.emacs:

(setq org-agenda-custom-commands '(("p" tags "PROJECT-MAYBE-DONE" nil) ("m" tags "PROJECT&MAYBE" nil) ("a" "My agenda" ;; (1) ((org-agenda-list) ;; (2) (tags "PROJECT-MAYBE-DONE"))) ;; (3) ;; ... put your other custom commands here ))

• (1) The first argument is the shortcut key, the second is a name for the agenda view • (2) Your daily or weekly agenda. The d and w (org-agenda-day-view and org-agenda-week-view)

shortcuts work if the point is within this section • (3) A list of your active projects

This configures C-c a a (org-agenda, "My agenda") to display your agenda and a list of your project headings. Again, you can press RET (org-agenda-switch-to) to jump to a project from its heading in the agenda view.

Reviewing your stuck projects

You might have forgotten to create next actions for some of your active projects. Org can help you find projects which don't have next actions. You can then decide if the project is complete or if it needs further action.

To list stuck projects, you first need to tell Org what a stuck project is. The following code defines a stuck project as an active project (not tagged "maybe" or "done") that doesn't have a TODO or STARTED action, if the body of the project doesn't contain "*lt;IGNORE>". Add this to your ~/.emacs and evaluate it:

(setq org-stuck-projects '("+PROJECT/-MAYBE-DONE" ("TODO" "STARTED") nil "\\<IGNORE\\>"))

Then you can use M-x org-agenda-list-stuck-projects or C-a a # (org-agenda, org-agenda-list-stuck-projects) to show only the stuck projects. Review this list and jump to the headlines.

Want to add that to your custom agenda view? Modify the org-agenda-custom-commands value in your ~/.emacs to be like this:

(setq org-agenda-custom-commands '(("p" tags "PROJECT-MAYBE-DONE" nil) ("m" tags "PROJECT&MAYBE" nil) ("a" "My agenda" ((org-agenda-list) (org-agenda-list-stuck-projects) ;; (1) (tags "PROJECT-MAYBE-DONE"))) ;; ... put your other custom commands here ))

• (1) It's a good idea to put it before your regular project list so that you can see what needs your

Page 15: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

attention.

What about finished projects? You might want to keep them in your Org file, but they shouldn't show up in your active and inactive project lists. Org can keep track of those projects too.

Marking projects as done

If you look at the custom commands above, you'll notice the "-DONE" specifier. "DONE" is the tag we'll use to indicate done projects. To tag a project as done, move the point to the project heading and type C-c C-c (org-ctrl-c-ctrl-c). The tag prompt will default to the current tags. Just add "DONE" and press Enter. With the custom commands we've set up, projects tagged DONE will not show in your active, inactive, or stuck project lists.

You can also add the tag manually. For example, if the project heading is

* Learn Emacs :PROJECT:

and you're happy with your level of Emacs proficiency, then you can mark it as done by changing it to

* Learn Emacs :PROJECT:DONE:

If you have plenty of completed projects, your Org file might be quite large. You can mark a subtree for archiving by typing C-c C-x C-a (org-toggle-archive-tag). This hides it from most Org commands. You can also archive a tree into a different file with C-c C-x C-s (org-advertized-archive-subtree).

Wrapping up

Now you can create projects, manage your project tasks, and review your active, inactive, and stuck projects in Org. You know how to mark projects as completed and how to archive them. You've also started using tags to dynamically generate reports from your Org file.

Tags can do a lot more. To find out what else you can do with tags, read the next section on "Tagging in Org".

On Technorati: wickedcoolemacs, emacs, org

More progress

http://sachachua.com/wp/2008/01/02/more-progress/Thu, 03 Jan 2008 02:23:12 +0000Yay, I finished my writing goal for the day! Tomorrow's a busy day. I have two conference calls, a client meeting, an eye exam (need new glasses), and if I can squeeze it in, a dentist appointment as well. I've finished a lot of work for the client, and I'm looking forward to sharing the first drafts with them. I'm really turning into an intranet social media consultant! =) This is good. Tomorrow is also an editing day, so I'll take whatever I have so far and start putting it all together. And then the chapter's just going to magically fall into place, like it did last time. The days are just packed. =D

Page 16: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Tagging in Org - plus bonus code for timeclocks and tags!

http://sachachua.com/wp/2008/01/04/tagging-in-org-plus-bonus-code-for-timeclocks-and-tags/Sat, 05 Jan 2008 03:57:00 +0000The section on projects introduced tags as a way to differentiate active and inactive projects. In this section, you'll learn more about tags and how you can use them to filter your task list. What's a tag, anyway? In Org, tags are keywords at the end of headlines. Each tag can contain letters, numbers, and the symbols '_' and '@'. Tags begin and end with colons, and a single colon separates multiple tags. For example, you could have headlines like this:

* Personal :PERSONAL: ** TODO Buy milk :@ERRANDS: ** TODO Call Mom :@PHONE: ** TODO Send letters :@ERRANDS: * Work :WORK: ** TODO Call John about report :@PHONE:JOHN: ** TODO Prepare for presentation on Monday ** TODO Call Mary about the presentation :@PHONE:URGENT:MARY:

One way to use tags is to filter your task list by priority. For example, you may want to focus on your urgent tasks first without getting distracted by other items on your task list. Another way to use tags is to keep track of the context of your tasks as suggested in GTD. By doing similar tasks together, you might be able to work more efficiently. For example, if you're on the phone at the office, it may be a good idea to do all of your work-related phone calls. If you're going to go to the post office, you might want to drop by the supermarket on your way back. You can use tags to categorize your headlines any way you want. Tags can take advantage of the outline structure. For example, although the tasks "Buy milk", "Call Mom", and "Send letters" have one tag each, they also inherit the "PERSONAL" tag from the parent headline. A tag search for "PERSONAL" would display all three tasks. To customize this behavior, look at the documentation for the variables org-use-tag-inheritance and org-tags-match-list-sublevels. Tags can help you organize and filter your task list. In this section, you'll learn how to add tags to your headlines, view tagged items in your Org file and in your agenda, and define custom agenda views. You'll also learn about custom tag searches and other interesting things you can do once you've tagged your headlines.

Adding tags

You can edit your ~/organizer.org file and add tags manually by typing in :tagname: at the end of the headline. You can also add tags by typing C-c C-c (org-ctrl-c-ctrl-c) when the point is on a headline. Use M-TAB (complete-symbol) to complete a tag based on all the tags used in the current file. If Alt-TAB is not processed by Emacs, you can use ESC-TAB instead. Separate multiple tags with a single colon, like this: (:@PHONE:URGENT:). The beginning and ending colons are optional when using C-c C-c (org-ctrl-c-ctrl-c), because the function will automatically add them. If you add certain tags frequently, you can set up single-key shortcuts. For example, if you frequently tag tasks as "URGENT", you may want to define a shortcut (at least until your life gets under control). You can assign shortcuts globally by adding this code to your ~/.emacs and evaluating it:

(setq org-tag-alist '(("URGENT" . ?u) ("@PHONE" . ?p) ("@ERRANDS" . ?e)))

You can also set this on a per-file basis by adding the following line to the beginning of your file:

#+TAGS: URGENT(u) @PHONE(p) @ERRANDS(e)

Page 17: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You can then use these C-c C-c (org-ctrl-c-ctrl-c) to enter these single-key shortcuts, ending it with RET. If you are assigning a single tag, type C-c C-c C-c (org-ctrl-c-ctrl-c, next change exits) to make it even faster by skipping the RET. If you use single-key shortcuts, you'll need another way to enter tags that start with the shortcut key. You can type them in manually, or you can use C-c C-c (org-ctrl-c-ctrl-c) and type TAB to enter in any tag. To remove a tag, you could use C-c C-c (org-ctrl-c-ctrl-c) again, or delete it manually. To remove all tags, use C-c C-c (org-ctrl-c-ctrl-c) and press SPC.

Viewing tagged items

Whether you want to view tagged headlines by themselves or in the context of your other headlines, tasks, and notes, Org has some nifty tagging features for you.

Agenda view

To view tagged headlines by themselves, use C-c a m (org-agenda, org-tags-view) and specify the search tag. For example, you can view your urgent tasks by specifying "URGENT". Note that this command displays the top headlines matching that tag, whether they're tasks or not. For example, if you searched for "WORK", you would just get the "* Work" headline. To view tagged tasks, use C-c a M (org-agenda, org-tags-view with a prefix argument). This shows only the tasks that have that tag. To search for a combination of tags, you can combine tags like this:

WORK&@PHONE only your work phone callsPERSONAL-@ERRANDS personal tasks, but without errandsJOHN|MARY Anything tagged with "JOHN" or "MARY" For example, if you're going to have a meeting with both of them

If you check certain lists often, you might want to create a custom agenda command for them. In the section on Projects, you configured custom agenda commands for active and inactive projects by adding the following code in your ~/.emacs:

(setq org-agenda-custom-commands '(("p" tags "PROJECT-MAYBE-DONE" nil) ("m" tags "PROJECT&MAYBE" nil) ("a" "My agenda" ((org-agenda-list) (tags "PROJECT-MAYBE-DONE"))) ;; ... put your other custom commands here ))

You can use the same idea to create quick custom views for your other tagged tasks. For example, to create custom views for your urgent work tasks and your phone calls, modify the org-agenda-custom-commands setting in your ~/.emacs to be like this:

(setq org-agenda-custom-commands '(("u" todo "WORK&URGENT" nil) ;; (1) ("c" todo "WORK&@PHONE" nil) ;; (2) ("h" todo "PERSONAL-@ERRANDS" nil) ;; (3) ("p" tags "PROJECT-MAYBE-DONE" nil) ;; (4) ("m" tags "PROJECT&MAYBE" nil) ("a" "My agenda" ((org-agenda-list) (tags-todo "URGENT") ;; (5) (tags "PROJECT-MAYBE-DONE"))) ;; (6) ;; ... put your other custom commands here ))

Page 18: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• (1) "u" is for "urgent", "todo" specifies that TODO headlines are to be shown, "WORK&URGENT" is the query string, and the last item means that there aren't any options

• (2) "c" is for "call" • (3) "h" is for "home" • (4) The second item here is "tags" instead of "todo", which means that the highest-level matching

headlines should be shown whether or not they're tasks. • (5) This is how to add a tag search for tasks into a custom agenda command. • (6) This is how to add a tag search for headlines into a custom agenda command.

Sometimes you'll want to see more context instead of just a list of headlines. You can jump from your Org agenda to the corresponding headline by pressing RET (org-agenda-switch-to) on the entry. You can also quickly browse through the headlines in another window by pressing f (org-agenda-follow-mode) while in the Org agenda view, then moving your point to the different lines. These commands work with the summary in the Org agenda view. If you want to show only matching headlines in your ~/organizer.org file, you can use Org's sparse tree search commands.

In your agenda file

A sparse tree shows only the matching headlines in the context of the headlines above them. This is useful when you want to see your tasks within your outline structure. All other headlines are collapsed so that they're easy to skip. To do a sparse tree search, type C-c \ (org-tags-sparse-tree). You can then expand and collapse subtrees with the TAB (org-cycle) command. To limit the search to only task headlines, type C-u C-c \ (org-tags-sparse-tree with a prefix).

Other cool things you can do with tags

And if you ever want to know how much time you spent on urgent tasks, you can call the following function from your organizer.org file with:

M-x wicked/org-calculate-tag-time RET URGENT RET

to see something like this:

Time: 98:44 (98 hours and 44 minutes)

You can call it with a prefix in order to be prompted for a start time (inclusive) and end time (exclusive). Here's the code to add to your ~/.emacs:

(defun wicked/org-calculate-tag-time (matcher &optional ts te) "Return the total minutes clocked in headlines matching MATCHER.MATCHER is a string or a Lisp form to be evaluated, testing if agiven set of tags qualifies a headline for inclusion. TS and TEare time start (inclusive) and time end (exclusive). Call with aprefix to be prompted for TS and TE.

For example, to see how much time you spent on tasks tagged asURGENT, call M-x wicked/org-calculate-tag-time RET URGENT RET. Tosee how much time you spent on tasks tagged as URGENT today, callC-u M-x wicked/org-calculate-tag-time RET URGENT RET . RET +1 RET." (interactive (list (read-string "Tag query: ") (if current-prefix-arg (org-read-date)) (if current-prefix-arg (org-read-date)))) ;; Convert strings to proper arguments

Page 19: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(if (stringp matcher) (setq matcher (cdr (org-make-tags-matcher matcher)))) (if (stringp ts) (setq ts (time-to-seconds (apply 'encode-time (org-parse-time-string ts))))) (if (stringp te) (setq te (time-to-seconds (apply 'encode-time (org-parse-time-string te))))) (let* ((re (concat "[\n\r]" outline-regexp " *\\(\\<\\(" (mapconcat 'regexp-quote org-todo-keywords-1 "\\|") (org-re "\\>\\)\\)? *\\(.*?\\)\\(:[[:alnum:]_@:]+:\\)?[ \t]*$"))) (case-fold-search nil) lspos tags tags-list tags-alist (llast 0) rtn level category i txt p marker entry priority (total 0)) (save-excursion (org-clock-sum ts te) (goto-char (point-min)) (while (re-search-forward re nil t) (catch :skip (setq tags (if (match-end 4) (match-string 4))) (goto-char (setq lspos (1+ (match-beginning 0)))) (setq level (org-reduced-level (funcall outline-level)) category (org-get-category)) (setq i llast llast level) ;; remove tag lists from same and sublevels (while (>= i level) (when (setq entry (assoc i tags-alist)) (setq tags-alist (delete entry tags-alist))) (setq i (1- i))) ;; add the nex tags (when tags (setq tags (mapcar 'downcase (org-split-string tags ":")) tags-alist (cons (cons level tags) tags-alist))) ;; compile tags for current headline (setq tags-list (if org-use-tag-inheritance (apply 'append (mapcar 'cdr tags-alist)) tags)) (when (and (eval matcher) (or (not org-agenda-skip-archived-trees) (not (member org-archive-tag tags-list)))) ;; Get the time for the headline at point (goto-char (line-beginning-position)) (setq total (+ total (or (get-text-property (1+ (point)) :org-clock-minutes) 0))) ;; if we are to skip sublevels, jump to end of subtree (org-end-of-subtree t))))) (if (interactive-p) (let* ((h (/ total 60)) (m (- total (* 60 h)))) (message "Time: %d:%02d (%d hours and %d minutes)" h m h m))) total))

Now you can slice and dice your timeclock records any way you want, thanks to tags! Random Emacs symbol: cc-imenu-java-generic-expression - Variable: Imenu generic expression for Java mode. See `imenu-generic-expression'. On Technorati: wickedcoolemacs, org, emacs

Working two jobs

http://sachachua.com/wp/2008/01/04/working-two-jobs/

Page 20: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sat, 05 Jan 2008 04:12:32 +0000"Next time I do this, I'm going to have to find a day job that isn't this similar to my hobby," I said as I took a three-minute break from writing. Even with the break-reminding program I have on my system, a full day of working at the computer was still tiring--and I had nearly half a section to go. "This isn't a hobby," W pointed out as he massaged my shoulders. "It's more like a second job." He's got a point there. Because I want to meet some goal dates, I put schedule pressure on myself. It's work. I do a little bit of it even when I'm not in the mood for it, and I consciously work on getting into the right mood for it. And hey, I'm thrilled about my progress. =) I can almost feel my writing muscles getting stronger. I'm settling into a good rhythm for writing. For example, this section took me 2 hours and 19 minutes to write. Just enough time between a post-dinner break (take a shower, read a book, chat a little, look at Your Personal Penguin (so cute!)) and bedtime. Getting speech recognition to the point where I can trust it would be nice, too, so that I can give my hands a rest. =) Must remember to write about non-Emacs, non-writing topics sometime, or I'll bore all my friends!

zomg, another chapter up!

http://sachachua.com/wp/2008/01/05/zomg-another-chapter-up/Sat, 05 Jan 2008 19:55:00 +0000

I've finished the first draft of Chapter 8: Taming Your Tasks. PDF ODT DOC. Whee!

The feedback I'm looking for right now is:

• Does the chapter flow properly, or would it make better sense rearranged? • Does it cover all the things a basic chapter on task management should cover? (I know, the Planner

thing's a bit sparse... My original 'budget' for this chapter was 35 pages!) • Does it include at least one or things that make you go "Hmm, that's interesting"? • Is it missing some of your favorite hacks or coolest features?

Fiddly bits like formatting will wait for the second pass.

If you leave your feedback as comments on this post, I'm less likely to lose it in all the mail that's piling up in my inbox! =)

On Technorati: wickedcoolemacs, emacs, org, planner, writing

Random Emacs symbol: widget-specify-secret - Function: Replace text in FIELD with value of `:secret', if non-nil.

You have received a painting from sacha

http://sachachua.com/wp/2008/01/05/you-have-received-a-painting-from-sacha-24/Sun, 06 Jan 2008 02:15:06 +0000

Teaching the attitude

http://sachachua.com/wp/2008/01/06/teachable-moments/Mon, 07 Jan 2008 02:52:00 +0000

Page 21: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

J- was getting frustrated by the game of chess she was playing with her dad. She couldn't see any good moves. Her pieces were all tangled up, and she didn't know what to do.

It's interesting watching another human being learn how to think strategically. She's not quite there yet, as she has a hard time thinking of what her dad's response would be. I remember being like that, and I remember the chess drills I did in order to learn how to see ahead.

So instead of writing the blog post that I meant to write today, I took some time to teach her. No, I didn't coach her during the game. Instead, we wiped the board clean and I set out some pieces for one of the simplest drills, King and Rook vs King. I'd shown her this before. She'd successfully completed it with some coaching. It would be good for reinforcing the idea of thinking ahead.

She was moving the pieces somewhat randomly (although legally, of course). So I started counting to 50 moves, the limit on end-game dilly-dallying in tournament play. When I was getting close to 50, she We reached a draw during the first drill. Then I showed her how she needed to decide which side of the board she would force my king to stay on, and how that rook could keep my king there, then drive it backwards once it had the support of her king.

We did another drill, with plenty of sound effects. "I'm going to get you!" I exclaimed as my solitary king pursued her rook, step by step. She squealed and moved her rook to the other side. "Uh oh," I said when my king had nowhere to go but in front of hers. "Noooo!", I cried as her rook forced mine against the board. She checkmated my king with a little prompting.

We went back and forth a few times before she caught on that she needed to sometimes "waste" a move. When she could checkmate my king with no prompting, I reinforced the idea ("Pick which side of the board you're going to squish my king against, and focus on forcing my king back") and replaced her rook with a queen. I showed her how a queen can checkmate faster than a rook. She checkmated me handily, and finished the session thrilled with what she could do.

Why am I telling this story? I think it hints at why and how I teach. A lot of what I'm doing right now can be considered teaching, even though it looks different: my social media consulting with IBM, the book that I'm writing on Emacs... But I'm not teaching facts or procedures. I care about shaping attitude and so that I can unlock potential. I talk to people about blogging and bookmarking because I want to influence their attitude towards collaboration, and because I want to see what they'll do (so that I can learn from them too!). I talk about Emacs, but what's important to me is the "if I can tweak this, what else can I do with it?" kind of feeling that will unlock the rest of Emacs for other people.

So part of what I do is think of exercises or examples that will help people feel that intrinsic joy. For J and chess today, it was the feeling of purposeful movement and of knowing what she was doing. That's what I hoped to teach her. How can I do this better?

On Technorati: teaching

January - Chapter 7: Taking Notes

http://sachachua.com/wp/2008/01/07/january-chapter-7-taking-notes/Tue, 08 Jan 2008 02:11:00 +0000

For January 2008, my assignment is to write a chapter on taking notes with Emacs. Here are the blog posts that I plan to write, each around 1000-2000 words long. This should give me plenty of material to edit, if I don't go mad first. ;)

Page 22: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

- [ ] Keeping Notes in Emacs Structured vs Unstructured (outline, free-form) Flat vs Hyperlinked Private vs Public File structure (one file, daily, snippets) - [ ] Outline Notes with Org, Blorg - [ ] Daily Notes with Planner - [ ] Hyperlinked Notes and Muse - [ ] Publishing Muse - [ ] Publishing Planner, RSS - [ ] Remember: quick note entry - [ ] Snippets with Howm - [ ] Blogging from Emacs - Wordpress, LJ, Blogger,Muse-Blosxom, EmacsAtomAPI - [ ] Encrypted Notes (full file, segments) - MOSTLY WRITTEN

I find that thinking of a book as a collection of articles works out well for me. Starting with a rough outline like this, I'll write 2000-word articles of the kind that I'd write for Linux Journal or LinuxWorld, and then I'd put them into my outline and add transitions. After I write all the pieces, then I can write the introduction and the wrap-up sections.

Slowly getting the hang of this writing thing... =)

On Technorati: emacs, writing, wickedcoolemacs

Random Emacs symbol: message-narrow-to-headers-or-head - Function: Narrow the buffer to the head of the message.

Book triage

http://sachachua.com/wp/2008/01/07/book-triage/Tue, 08 Jan 2008 02:21:00 +0000

Okay. 31 books. 15 days. Plus all the writing I still need to do. I may have made a bit of a miscalculation. No problem, it's the library, I can always renew or request books.

The only books I probably won't be able to renew are

• Open an Online Business in 10 Days • Money Can Buy Happiness • The Mid-Career Success Guide • Make Your Contacts Count (2nd ed) • How to Photograph Absolutely Everything

(Yes, I wander all over...)

I can do that. =)

One of these days, I'm going to revise my OPAC reminder script to also automatically deactivate all of my requests once I go over a certain number of books... ;)

On Technorati: reading

Random Emacs symbol: table-narrow-cell - Command: Narrow the current cell by N columns and shrink the cell horizontally.

Page 23: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/07/you-have-received-a-painting-from-sacha-25/Tue, 08 Jan 2008 03:25:04 +0000

Maybe people really are generous with their wisdom

http://sachachua.com/wp/2008/01/08/maybe-people-really-are-generous-with-their-wisdom/Wed, 09 Jan 2008 01:59:01 +0000I racked my brains trying to figure out how to ask one of our clients to lunch. We were in the middle of a project and there wasn't much time to spare, but I was impressed by the way he'd improved the presentation draft. I wanted to ask him so many questions: How did he get interested in marketing? How did he get started? What were his favorite resources? What were some tips he could share? What was his story? There was so much I wanted to learn from him... but how to get started? We were scheduled for a working lunch today, but maybe after we passed a major milestone, I'd be able to treat him to lunch and pick his brain. I tried out different opening lines in my head as I unwrapped my sandwich slowly. If only scripts had been included in the new-employee orientation kit! I was so preoccupied, I nearly missed his conversation opener. Without any preamble or obvious shift to a non-work topic, he just started talking to me about writing, journalism, and storytelling. I'd been reading about journalism just the night before, thanks to "How to Write Fast (While Writing Well)" by David Fryxell (good book, would recommend it), and it was fascinating to hear other examples of what I'd just read. And he saved me the trouble of trying to figure out how to ask him about that, too. Wow! I felt even more inspired when he told me, "You have a good writing style. It's personal and personable." Whenever I hear this from people--particularly people who know a thing or two about writing--part of me squeals with glee and does a little dance. (Thanks to the patient mentorship of people like Stephen Perelgut, I can usually do this without actually squeeing in public.) There's something here that I want to keep honing, there's something I want to get better and better at, and little hints from people like him tell me I might be on the right path. How did he have such a good handle on my personal interests, and how did he know to offer that kind of encouragement? Thanks to blogs, he could read the stories I wouldn't have thought of e-mailing him. I knew he'd passed by my personal blog before. He'd mentioned it during one of the meetings. He must have dropped by again--wow! And he had taken the time to share some of his thoughts and encourage me to keep exploring writing and storytelling... Wow. I don't know why people don't mind giving me so many tips and helping me learn so many things. Maybe most people really are just that way, and all it takes is one wide-eyed person with curiosity and and the itch to share whatever she's learning with other people down the road. Maybe people enjoy sharing what they've learned with other people. Maybe people enjoy helping others along the way. Maybe people enjoy using more than just the 20% of their talents that are used in their job description. Maybe they enjoy sharing their years of experience instead of just what their current company asks for. All I know is that I want to help the people in his company discover and develop those kinds of connections. I want to help as many people in as

Page 24: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

many companies as I can. That's why I joined IBM to do enterprise social media consulting: because I'm learning so much from so many wonderful, unexpected connections, and I want to help companies help their employees to do even better. =)

Caag yaaa daawaamee

http://sachachua.com/wp/2008/01/08/caag-yaaa-daawaamee/Wed, 09 Jan 2008 02:25:19 +0000"Caag yaaa daawaamee," was my muffled answer as the dental hygienist poked around in my mouth. "I mean, check your department to see if they have funding," I said after he removed the scaler. "They might have some kind of assistantship."

Graduate school advice isn't what I usually talk about with dental hygienists, but Phu was different. Born in Vietnam, he'd moved to Canada with his parents when he was young. He'd never quite gotten the hang of winter, though, and now he was thinking of escaping to Australia and going for a master's in oral health focusing on gerontology. He was concerned about the high cost of foreign student tuition, though. So I told him how University of Toronto's guaranteed funding not only paid my tuition but also some modest living expenses, and that he should check the schools he was applying to for any kind of funding program or scholarship. The professional programs at U of T don't have funding (the university probably figured that MBAs will be more than able to pay back their student loans), but other programs at universities might have research and teaching assistantships. Also, Canada put in an off-campus work program this year; maybe Australia has one, too.

So my dentist checkup took a little longer than usual because we were chatting about grad school, Sydney, weather, and other topics while he poked around my teeth, but it felt much better than an anonymous scrape-and-go. There was a bit of a delay while we waited for the dentist to come look at my wisdom teeth, so we chatted some more. First time I'd ever had green tea at a dentist's office. =) (As it turns out, my two bottom wisdom teeth are growing sideways, and I'll need to have them removed sometime.)

If you happen to be in the Toronto area and you want to give Phu more advice or encouragement, you can drop by the Manulife Centre on Bay and Bloor. Second floor, near the movie theatres.

The other folks at the office are also friendly, and the place has personality: lots of pictures of a white poodle who must be the dentist's favorite pet. If you mention the pictures, the dentist will also happily show you an oil portrait of the dog. (An oil portrait! I don't have one.) Nice place, and very accommodating of panicky people who are worried that they might have a cavity (me last week--as it turns out, one of my wisdom teeth was just breaking through the gum in a funny manner). Recommend.

Quick book notes

http://sachachua.com/wp/2008/01/08/quick-book-notes/Wed, 09 Jan 2008 02:59:35 +0000How to Write Fast (While Writing Well): Books: David Fryxell Recommended. Good stuff all the way through. Advice you'd read in other writing books, but well-illustrated. I loved the examples of story structure, and the quotes sprinkled throughout the book. Key takeaways: Writing quickly is possible, even for fiction. It's all about discipline and organization. Outlines are really helpful. Index cards and research are really helpful, because then you can hang them on the outline and practically write the article/book/whatever from there. Other notes: Research is good, but not too much research. If you over-write, you waste time. Keep your eyes open for irony, twists, structure--these make a story interesting. During delays or lulls in the interview, write down details. Shorthand (or some kind of it) is worth learning. Open an Online Business in 10 Days: Books: Melissa Campanelli Not recommended. Nothing particularly spectacular. The interviews

Page 25: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

near the end of the book are good if you want to get a quick tour through popular Web businesses, but nothing jumped out at me even though I scanned the book cover to cover. Will probably use scanning technique suggested in How to Read a Book next time I do stuff like this... You know, I might just stand a chance at finishing all the books...

Writing plans for the chapter on managing notes

http://sachachua.com/wp/2008/01/09/writing-plans-for-the-chapter-on-managing-notes/Thu, 10 Jan 2008 02:05:19 +0000- [ ] Keeping Notes in Emacs Structured vs Unstructured (outline, free-form) Flat vs Hyperlinked Private vs Public File structure (one file, daily, snippets) In this section, you'll learn about the different kinds of notes you take, and you will be able to choose one or two Emacs modules to start learning. - [ ] Capture and retrieve - Remember, search Getting the ideas out of your head and into your note-taking system; searching your notes (basic), searching your notes (specific) Wicked cool code: Remembering to different note-taking systems, searching different note-taking systems - [ ] Outline Notes with Org, Blorg In this section, you'll learn how to keep outlined notes using Org. You'll be able to create headings, sub-headings, and text notes. You'll also learn how to manage outline items by promoting, demoting, and rearranging them. These basic editing commands are covered in the Emacs Org manual, so I'll just give a brief summary.. You'll also get tips on how to capture text quickly (M-x remember, dabbrev), work with large outline files (split windows are useful), and search your notes efficiently (searching headings or text). Lastly, you'll learn how to publish your Org file as HTML or LaTeX. Wicked cool code would be: searching, how to import to and export from Freemind, a graphical mind-mapping program. - [ ] Daily Notes with Planner In this section, you'll learn how to write a day-based journal using Planner. In addition to free-form notes on the page, you'll also be able to keep semi-structured notes typed in manually or captured using Remember. You'll also learn how to publish the resulting pages as HTML and RSS, and how to customize the output. Wicked cool code would be: searching notes and displaying matching headlines, private notes, publishing note headlines, and publishing a note index. - [ ] Hyperlinked Notes with Muse In this section, you'll learn how to create a personal wiki using Muse. You'll learn how to create pages, link to pages, and publish your wiki. Wicked cool code: Capturing notes to specific pages using Remember and keyword matches, private pages, publishing pages when you save them. - [ ] Snippets with Howm In this section, you'll learn how to manage random snippets of information using Howm. - [ ] Blogging from Emacs - Wordpress, LJ, Blogger,Muse-Blosxom, EmacsAtomAPI In this section, you'll learn how to use Emacs as a blogging client for many popular platforms. This is mainly for keeping other blogs in sync, although I'll also talk about the possibility of using planner-rss + something like Feedwordpress. - [ ] Encrypted Notes (full file, segments) - MOSTLY WRITTEN In this section, you'll learn how to encrypt your notes. Actually, this will probably be split up into the different tools...

Note-taking: Random notes, journal entries, outlines, and hyperlinks

http://sachachua.com/wp/2008/01/09/note-taking-random-notes-journal-entries-outlines-and-hyperlinks/Thu, 10 Jan 2008 02:48:50 +0000I take at least three different kinds of notes, and I need to manage them differently. Here are some rough thoughts on the different kinds of notes I work with and how I manage them. I'd love to hear about your note-management strategies in comments or e-mail!

Random notes

When I worked on my thesis, I filed hundreds of lines from my literature review. I needed to quickly pull together just the notes matching a certain keyword or belonging to a particular section. I also needed to be able to properly cite each note. Lastly, I structured my notes so that I could get a random note, which turned

Page 26: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

out to be really helpful for breaking me out of writing ruts and for helping me see creative connections. Writers and public speakers keep similar databases of story ideas and great quotations. They need to be able to search their databases for matching records, and they might not think of these categories ahead of time. Random information management isn't just for word geeks and researchers. If you've got scraps of paper or a text file with notes from meetings, clips from interesting articles, and thoughts to yourself, you're already managing random information. You just might not have a good system for capturing and searching the information. Important things for a random information manager:

• You should be able to easily capture information. • You should be able to easily search for information.

(An ideal random information manager might even suggest relevant entries. Come to think of it, I should find out if I can get the Remembrance Agent running again. That was really cool.) I started using Howm for this before. It was a great random information manager for Emacs. I haven't been using it lately, though, as I hadn't set it up on my work laptop. I might do so soon.

Journal entries

Journal entries tend to be short, chronological notes. They can be private or public, or a mix of both. They can be also be retrospective or forward-looking. Journal entries are more structured than random information snippets because they're associated with a specific date and are generally about activities, experiences, or goals. My blog is an example of a journal. It has public and private entries. The private entries are removed from the blog before publishing. Important things for a journal manager or a blog:

• You shouldn't have to enter date and time yourself. • You should be able to flip through your entries or search them for keywords. • You should be able to get an overview of your notes for a time period.

I use Planner for this because Planner makes it easy to publish day pages and RSS. I also write some entries directly on a Wordpress blog, which also imports my Planner blog entries.

Outlines

Some notes belong to a bigger structure. For example, if you're drafting a document, you might work on different sections that will ultimately be merged. Random information management and journals are not enough because you need structure. An outline helps you see how things fit together. The draft for this book is an example of an outline. I sometimes work top-down by starting with the headings and defining more detail. I also work bottom-up by writing blocks of content and then fitting them into my outline. Important things for an outline:

• You should be able to structure your notes into headings and subheadings. • You should be able to promote, demote, and rearrange those headings quickly. • You should be able to quickly get an overview or drill down into detail.

I use Org for outlined text because Org makes it really easy to manipulate outlines.

Hyperlinked Text

The structure of hyperlinked text can actually be applied to the other three types of notes. Random notes benefit from freely-defined hyperlinks, where you can specify keywords that will automatically be linked

Page 27: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

without needing to edit each note where the keyword occurs. Journal entries can link to other journal entries or to topic-oriented pages. Outlines and other documents may allow people to jump to related sections through hyperlinks. Hyperlinks allow you to work with more freedom than a strict hierarchy of topics would permit. An example of a hyperlinked note system would be the way the posts on my blog are often linked with plan pages that focus on specific topics. (These links are only on my hard disk, so don't worry if you don't see them!) Topic pages allow me to review my topic-related notes as well as other freeform notes I've added. Important things for hyperlinks:

• You should be able to link to resources outside the note-taking system. • You should be able to link to other notes in the note-taking system. • You may want to be able to link to other sections of the same note.

I tend to use Muse with Planner for hyperlinked pages, but I've also tried it with Howm.

Search

A note-taking system good at capturing journal entries may not necessarily be good at capturing and searching random information or managing outlines. It helps to have different note-taking systems, each optimized for different tasks, or a tool that adapts to what you need at that time. A search that spans your different note-taking systems is also a great help. Currently, I don't have a unified search system. Well, aside from grep... This is one of the things I plan to work on while writing this chapter. =)

Feedback?

Do you keep other types of notes, and/or do you have tips for managing notes? Please share them here so that I can think about how Emacs can be tweaked to support them!

The grass is not always greener on the other side of the fence

http://sachachua.com/wp/2008/01/09/the-grass-is-not-always-greener-on-the-other-side-of-the-fence/Thu, 10 Jan 2008 03:17:19 +0000

The grass is not, in fact, always greener on the other side of the fence. Fences have nothing to do with it. The grass is greenest where it is watered. When crossing over fences, carry water with you and tend the grass wherever you may be.

Robert Fulghum (1937-), It Was on Fire When I Lay Down on It, cited in http://www.quotationspage.com/mqotd/2008-01-04.html

Yes, I write too much

http://sachachua.com/wp/2008/01/09/yes-i-write-too-much/Thu, 10 Jan 2008 03:44:57 +0000Post stats for your viewing pleasure. =) ~646,802 total published words from 4,255 posts Someday I'm going to make pretty graphs. I'd like to visualize my posts according to time/day of week/topic/whatever. Anyway, the data is out there. Enjoy!

Page 28: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Someday like seas

http://sachachua.com/wp/2008/01/12/you-have-received-a-painting-from-sacha-26/Sat, 12 Jan 2008 05:35:03 +0000

How I got hooked

http://sachachua.com/wp/2008/01/12/how-i-got-hooked/Sat, 12 Jan 2008 06:46:54 +0000I fell in love with Emacs because of Planner and Remember. I got hooked. By that, I mean that I discovered the joys of modifying the behavior of other people's code through hooks. Well-written Emacs code has plenty of entry points so that you can change things without rewriting everything, and both Planner and Remember were well-written. The flexibility that John Wiegley had built into Planner and Remember (in his spare time!) convinced me that I absolutely needed to learn Emacs Lisp. I e-mailed John, singing high praises about Planner and volunteering to help track down any bug reports so that I could learn in the process of helping others. What did he do? He made me the maintainer for Planner, the go-to person, the buck-stops-here person. Was I terrified? My first time being in charge of an open source project, a language that I had just begun to learn, and schoolwork to do on top of all of that... Of course I was scared. I found a way to make working on Planner part of my final-year project (might as well get academic credit for hacking on it!), made the Emacs Lisp Intro and the Emacs Lisp manuals my weekend, bedtime, and mealtime reading. Back then, Planner.el was one file, which made it a little less intimidating. At first, I found it hard to think of a way to improve Planner, which was already a great way to track my tasks. Remember was also a good way to jot down short notes that were automatically added to my Planner day page. Both Planner and Remember had some support for picking up hyperlinks to whatever I was looking at when I created the task or note. What was missing? Timestamps so that I could tell when I wrote a note; more link support so that I could automatically link to a file or a mail message or a contact record; private, perhaps even encrypted segments; copying a note to another page; publishing a blog as RSS... For the next few years, I worked with incredible people who had thought long and hard about how they managed their tasks and their notes, and who taught me how they did things through their feature requests and their code. I became more comfortable in Emacs Lisp than in any other computer language I knew (eventually maintaining Remember as well), I had formed a thriving community of about 200 people around the world who also contributed ideas and code, and I was hooked. Because I could change so much about Emacs, I had so much fun coming up with creative applications. When a friend and I were studying Japanese, she wanted to know if I could set up Emacs with flashcards and example sentences so that we could learn words in context. I knew that Jim Breen had a huge database of example Japanese sentences with their English translations and that this was freely available on the Net. I downloaded the database and--one crazy idea fueled by another in that natural sugar high that can happen when two geeks start brainstorming--I made our learning fun by extracting all the cat- and kitten-related sentences. This is how I learned about such wonderfully onomatopeic words as "fuwafuwashita", which means "fluffy". We both adored cute little kitties, and reading example sentences about these furballs would make our studies delightful. Now, where could we put these sentences so that we'd run into them often? Aha! Remember! Every time we wrote a blog post or needed a scratch pad to store some information, we would be rewarded by a short sentence in Japanese about cute little kittens, and we could look up the meaning and pronunciation with custom keyboard shortcuts. And hey, it worked for me--I found myself writing because I wanted to see what sentence would come up, and I found myself learning because I'd run into all these cool words. For variety, I switched to sentences about computers and other topics that I wanted to be able to discuss. Try getting your blog editor or note manager to reward you each time you share a story or write down a tidbit of information. There is incredible power in customizing your note-taking system to just the way you think, and when you combine that with the delight of a surprise, you have something that is difficult to do with any other system--paper-based or electronic, text-based or graphical, commercial or free.

Page 29: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I turned the projects over to other maintainers when I started with graduate school, but as you can see, I still love working with Emacs. My mind does this little somersault of joy when I pull off a particularly nifty tweak or when I run across a beautiful piece of code. And yes, one of the reasons why I'm writing this book about Emacs is because I'd love to have an opportunity to explore all the nooks and crevices of this piece of software--well, not all, because by the time the book hits press, people will have added even more. In this chapter on notetaking, I hope to be able to show you the mechanics of note-taking in Emacs--but more than that, I hope to show the sheer joy of having a system that you can play with, of not just filing notes in a database but M-x remember-ing in a system that will make you smile or laugh, of shaping and reshaping things until they fit you like clay fits your hand. Come and have fun.

Lego Star Wars

http://sachachua.com/wp/2008/01/13/lego-star-wars/Sun, 13 Jan 2008 05:15:43 +0000I was really going to spend some more time writing today. I'd gotten to 1083 words already. Then we discovered the joys of Lego Star Wars.

Now I have to tell you, it's interesting playing a Star Wars game with someone who had only watched Episode 3 and who referred to R2-D2 as "the guy who goes beep beep beep". It was Lego, though, and we were laughing out loud at the cut scenes. Then to work, clearing levels and solving puzzles. We moved with military precision--

"Ack! Stop killing me!"

"I want to be the guy with brown hair!" (J- liked playing Obi-Wan Kenobi.)

"If you shake the plants, you get more studs!" (The game encourages you to destroy everything in sight, and a few things that aren't.)

--or at least with the precision that blindfolded conscripts would have on their first day of service. But we got through the first few levels, and we eventually got the hang of things.

Much to the detriment of my Emacs-related writing. So much for discipline and organization... but that was fun. I tell myself that it's an investment--yeah, that's right, an investment, helping J- learn how to work quickly and calmly in stressful conditions, tactical planning, and coordination... Riiiight.

Okay, it was just fun. =)

Tomorrow: Chat with people (I'll be on Skype and Yahoo at 9:00 EST, although I'll probably be busy catching up with my parents), some more writing (I will finish that article), maybe a trip to the Royal Ontario Museum (J- wants to go), and either more writing or some reading...

And then more play!

<R2-D2 whistle>

Capturing Notes with Remember

http://sachachua.com/wp/2008/01/13/capturing-notes-with-remember/Sun, 13 Jan 2008 20:24:00 +0000

Page 30: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Ideas come from everywhere. While reading this blog, you might come across interesting snippets that you'd like to save. While writing code, you might be hit by an idea for something you want to do with the program. While on a phone call, you might need to write down what you need to prepare for a meeting the next day.

How do you take notes now? Do you jot your notes on a scrap of paper or into a leather notebook? Do you copy and paste what you're looking at into a plain text file or document? Do you scribble things into a personal digital assistant?

I've tried different note-taking strategies: colorful mindmaps, outlined text files, even voice recordings. I felt frustrated every time I had to write down whose e-mail or which webpage prompted the note (shouldn't the computer do that automatically?), but I was even more frustrated when I'd come across a note and not remember why I wrote it.

Remember changed all that for me. The key ideas behind Remember are that you should be able to write notes with minimal distraction, and that as the context should be automatically picked up so that you don't have to write it down. If you're writing a note based on a mail message, Remember will pick up the details of the message and create a hyperlink so that you can view the original message when reviewing your notes. If you're working on a file, Remember will link to it so that you can jump back to it. If you're browsing a web page (in Emacs, of course), Remember will remember the title and URL, so that you can go back to the page when you want to clarify something in your notes. After you save the note, you'll be back in the same environment you were: no need to switch applications and no need to remember different keyboard shortcuts.

You might think that Remember's only worth it if you do _everything_ in Emacs. For me, it worked the other way around. I started by using Remember to take notes in Planner, a personal information manager available for Emacs. As I got accustomed to the way Remember and Planner just automatically hyperlinked to whatever I was looking at, I thought: Why doesn't my mail client do this? Why doesn't my web browser do this? Why doesn't my chat client do this? So I ended up reading through the manuals, figuring out how to do all these things in Emacsâ€â€ン and I loved it, eventually doing most of my work (and play!) within an Emacs frame. Although I use other applications now, like Lotus Notes for work mail and Mozilla Firefox for browsing, I still switch back to Emacs for my notes.

In this section, you'll learn how to set up Remember and take quick notes in Emacs. We'll start by configuring Remember to save your notes to a file, and how to configure Remember to save to different places depending on the content. You'll also learn how to quickly search your notes file for entries.

You can also integrate Remember into other note-taking systems in Emacs. The sections that cover those systems will also show you how to configure Remember to save your notes there.

Setting Up Remember

Remember is a separate package, which you can download from https://gna.org/projects/remember-el . As of this writing, the latest stable release is Remember 1.9. Download the latest version and unpack it into your ~/elisp directory. You should end up with a new directory, ~/elisp/remember-1.9 .

To configure Remember to save to plain text files, add this code to your ~/.emacs and evaluate it:

(add-to-list 'load-path "~/elisp/remember-1.9") ;; (1)(require 'remember-autoloads)(setq remember-data-file "~/notes.txt") ;; (2)(global-set-key (kbd "C-c r") 'remember) ;; (3)

(defun wicked/remember-review-file () "Open `remember-data-file'."

Page 31: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(interactive) (find-file-other-window remember-data-file))(global-set-key (kbd "C-c R") 'wicked/remember-review-file) ;; (4)

;; Not (global-set-key (kbd "C-c r")... as originally written... Thanks for catching that, Seth!

• 1: Change this to the directory that contains remember.el • 2: Notes will be saved to this file. You can change this if you want; just keep in mind that this section

refers to ~/notes.txt. • 3: C-c r (remember) is a handy shortcut key for remember. You can also bind it to other shortcut keys

such as F9 r. • 4: This shortcut makes it easy to check your remembered notes.

After you've configured Remember, try it out by typing C-c r (remember). Your Emacs frame will be split in two, and one of the windows will be a *Remember* buffer. Type your note. The first line will be the headline, and the rest of the buffer will be the body of the note. If you call C-c r (remember) from a file, the filename will automatically be included at the end of the buffer. Type C-c C-c (remember-buffer) to save the note.

Try it now by typing C-c r (remember) to bring up the buffer, typing in a short note, and using C-c c (remember-buffer) to save it. If you open ~/notes.txt to review your note, you'll find something like this:

** Sat Jan 12 14:43:02 2008 (Your headline goes here)

Your note body goes here

/home/sacha/.emacs

You can even save yourself some copying and pasting. Mark a region of text and use C-u C-c r (remember). The selected text will be included in the buffer, so all you have to do is comment on it.

Make a habit of typing C-c C-r or C-u C-c C-r (remember) when you need to remember something. Type C-c C-c (remember-buffer) to get back to work, knowing that your notes have been safely saved in your ~/notes.txt file.

Reviewing Your Notes

Use C-c R (wicked/remember-review-file) to check your notes, or open ~/notes.txt yourself. To search your notes, use C-c R (wicked/remember-review-file) to open the file, then use C-s (isearch-forward) to search for words interactively, or use M-x occur to find all lines containing a word.

You may notice that the default format that Remember uses is an outline format that is compatible with Org and Allout, both of which have powerful outline-editing tools. I prefer Org's outline-editing commands, and you'll learn about them in the "Outline Notes with Org" section. Here's a quick summary.

First, you need to switch the buffer to Org mode by typing M-x org-mode. To automatically open your notes file in Org mode, add

-*- mode: org -*-

to the first line of your ~/notes.txt. Then, when you open your ~/notes.txt file, it will be in Org mode.

Page 32: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You can quickly collapse or expand all the outline entries by pressing S-TAB (org-shifttab). To collapse or expand a single entry, move the point to the headline (the line beginning with *, **, or any number of asterisks), then press TAB (org-cycle). To move an entry up or down, move the point to the headline and press S-UP (org-shiftup) or S-DOWN (org-shiftdown). To demote or promote a heading, press M-RIGHT (org-metaright) or M-LEFT (org-metaleft).

You can treat ~/notes.txt as your inbox, and keep your organized notes in another file or groups of files. Cut and paste the text between the files to clear your inbox, and use M-x grep to search multiple files. Alternatively, you can keep all of your notes in one large text file, and use C-s (isearch-forward) and M-x occur to search for information.

Now you know the basics of remembering information, saving it into a file, and reviewing the file. By default, Remember annotates your notes with a filename, if you were looking at a file when you called C-c r (remember). As you learn more about Emacs, you may want to configure Remember to add more intelligent annotations and other text to the Remember buffer. The more work Remember does for you, the less work you have to do!

Enabling annotation functions

The easiest way to get Remember to automatically understand mail messages, Web pages, info files, BBDB contact records, and other sources of information in Emacs is to use either Org or Planner. To learn how to integrate Remember with either Org or Planner, read the section on "Outline Your Notes with Org" and "Writing Your Journal with Planner".

You can also define your own annotation functions. When you call C-c r (remember) from a buffer, Remember goes through each of the functions in remember-annotation-functions, and it uses the first non-nil value returned.

For example, you may work with many temporary buffers that don't have filenames. To create an annotation function that adds buffer names, add the following code to your ~/.emacs after the basic Remember configuration code:

(eval-after-load 'remember '(progn (add-to-list 'remember-annotation-functions 'buffer-name t)))

This adds buffer-name to the end of the annotation list, making it a last resort.

What if you want line numbers included with the filename or buffer name? You could replace the previous code with this:

(defun wicked/remember-line-numbers-and-file-names () "Return FILENAME line NUMBER." (save-restriction (widen) (format " %s line %d" (or (buffer-file-name) (buffer-name)) (line-number-at-pos))))(eval-after-load 'remember '(progn (add-to-list 'remember-annotation-functions 'wicked/remember-line-numbers-and-file-names)))

With that code, C-c r (remember) will automatically pick up the line number from your file or buffer.

Page 33: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

By default, Remember saves your notes to a plain-text file, so you'll have to open the files manually. The command M-x ffap or find-find-file-at-point may be convenient. If you want hyperlinks that you can visit easily, consider saving your notes in an Org or Planner file instead.

Now you've got context. What else can you do with the Remember buffer?

Adding Other Text to the Remember Buffer

Remember has plenty of hooks that let you modify the behavior. For example, you might want to insert a random tagline or fortune-cookie saying whenever you create a note. This is a fun way to encourage yourself to write more, because then there's a little surprise every time you open a Remember buffer.

Here is a totally small-scale way to use random lines from a text file. Let's say that you have a text file made up of movie quotes, taglines, knock-knock jokes, or short fortune-cookie sayings. When I wrote this code, I used Japanese/English sentence pairs about cats, because I was studying Japanese. You can use whatever tickles your fancy, as long as this text file (~/taglines.txt) has one line per saying.

(defun wicked/random-tagline (&optional file) "Return a random tagline." (with-current-buffer (find-file-noselect (or file "~/taglines.txt")) (goto-char (random (point-max))) (let ((string (buffer-substring (line-beginning-position) (line-end-position)))) string)))

(eval-after-load 'remember '(progn (defadvice remember (after wicked activate) "Add random tagline." (save-excursion (goto-char (point-max)) (insert "\n\n" (wicked/random-tagline) "\n\n")))))

If you want multi-line sayings, look into the Emacs fortune cookie package, and replace wicked/random-tagline with a function that returns a random string.

This code modifies the behavior of C-c r (remember) by inserting a random tagline after the buffer has been prepared. You can use the same idea to insert a timestamp noting the time you started, use a template, or modify the text in other ways.

Saving to Different Places

You can also change how Remember saves its notes. For example, if you want all of the notes that contain the word ":EMACS:" or ":WORK:" to go into separate files, you can add this code to your ~/.emacs:

(defvar wicked/remember-keywords '((":EMACS:" . "~/emacs.txt") (":WORK:" . "~/work.txt")) "*List of (REGEXP . FILENAME).If an entry matches REGEXP, it will be storied in FILENAME.The first regular expression that matches is used.")(eval-after-load 'remember '(progn (defadvice remember-region (around wicked activate)

Page 34: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

"Save notes matching `wicked/remember-keywords' elsewhere." (let* ((b (or beg (min (point) (or (mark) (point-min))))) (e (or end (max (point) (or (mark) (point-max))))) (string (buffer-substring-no-properties b e)) (done nil) (keywords wicked/remember-keywords)) (while keywords (when (string-match (caar keywords) string) (let ((remember-data-file (cdar keywords))) ad-do-it) (setq keywords nil done t)) (setq keywords (cdr keywords))) (unless done ad-do-it)))))

You can even configure Remember to use different handler functions. This chapter covers several note-taking systems for Emacs, and you may want to use Remember to save to more than one note-taking system. For example, you can set up C-c r p to start a Remember buffer that saves to Planner, and C-c r o to start a Remember buffer that saves to Org. Here's the code for your ~/.emacs:

(defun wicked/remember-to-org () "Remember to Org." (let ((remember-annotation-functions ;; (1) (cons 'org-remember-annotation remember-annotation-functions))) (remember) (set (make-variable-buffer-local 'remember-handler-functions) '(org-remember-handler)))) ;; (2)

(defun wicked/remember-to-planner () "Remember to Planner." (let ((remember-annotation-functions ;; (3) (append planner-annotation-functions remember-annotation-functions))) (remember) (set (make-variable-buffer-local 'remember-handler-functions) '(remember-planner-append)))) ;; (4)

(global-unset-key (kbd "C-c r")) ;; (5)(global-set-key (kbd "C-c r o") 'wicked/remember-to-org)(global-set-key (kbd "C-c r p") 'wicked/remember-to-planner)

• 1: We need to make sure that Org-compatible links are created. • 2: This makes C-c C-c save the note to the Org file. • 3: Planner uses a list of annotation functions, so we add all of them to the beginning of the list. • 4: This makes C-c C-c save the note to the Planner page. • 5: We need to unset keyboard shortcuts before we can set longer keyboard shortcuts that start with the

same sequence.

To learn more about configuring Remember with the different note-taking systems, read the sections for those systems.

On Technorati: wickedcoolemacs, book, emacs, remember

Random Emacs symbol: compilation-find-file - Function: Find a buffer for file FILENAME.

Page 35: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Weekly review

http://sachachua.com/wp/2008/01/13/weekly-review-13/Mon, 14 Jan 2008 01:32:00 +0000

This week was a week for catching up with coworkers. Aaron Kim got back from his vacation and took off again for another trip spreading the good news about IBM and Web 2.0 in London. Fortunately, I caught him at 120 Bloor on Monday. I also chatted with Bernie Michalik about writing (apparently, I say "Good stuff" just about every post on our team blog, The Orange Chair). And I welcomed Jen Nolan back from mat leave by treating her to lunch and thanking her for the career advice she gave me last year. =) Good times.

I've also made a lot of progress on the wiki that I'm building for a financial services company. I'm proud of the way it's shaping up: a guide for internal consultants, a guide for community core team members, and a guide for other employees using these social media tools (blogs, wikis, forums). I like the way that it's not just about how to use these tools - click this, type in that - but also how people can use the tools together to do what they want to do.

I joined another IBMer for an interview with a reporter from a major business magazine who was writing an article on these "water-cooler technologies". I'm thrilled every time I get an opportunity to tell people about some of the cool stuff we're doingbeing. And last Friday, another person got in touch with me to ask permission to quote me in the annual report of a project I love. Wow! There's something powerful about being vocal about appreciation.

On the personal side, I went to the dentist and had a lot of fun chatting with the person who scrubbed my teeth. =) It turns out that my wisdom teeth will probably need to be removed, as they're growing all funny. In other news, the glasses that I ordered from Zenni Optical have left Hong Kong and should be on their way to Canada.

More progress on the book. I've started on the chapter on taking notes, and I have about 3000 words so far. My target is 12,000 words, or about 35 pages. I plan to finish it by January 31, according to my original schedule. I'm averaging about 1000 words a day, but I should find a way to resist the temptations of Lego Star Wars DS. It'll be easier to write when J-'s distracted by other things! I have 9 writing days, if I alternate writing with editing and other things I need to do. This is doable. Fun, even. =)

(See, I'm getting the hang of this! Next step: graphs...)

W- and J- are doing fine. W-'s been cooking up a storm, and he's now baking some egg tarts. (Home-made egg tarts! I'm so spoiled.) I made up for a little of it by exercising earlier, but I really need to keep it up, considering how fun food is around here...

I was glad to have had the opportunity to talk to one of my best friends when she was feeling really really homesick. She's studying at Purdue right now, and she really misses home. Her advisor is open to her working from the Philippines, and I hope everything works out with her department.

It was fun chatting with my parents, too. W-, J-, and I are planning to fly to the Philippines for two weeks this March, and we're starting to plan what to see. I hope we're not too late to book flights to Boracay!

Oh, and I've overcontributed to my RRSP, but I haven't gone over the lifetime limit yet (whew!). Now I have to figure out the best non-registered way to save for my retirement so that I can gradually push my retirement age further and further back. (I should put together some kind of spreadsheet that calculates this for me...) I suppose I _could_ find a financial advisor, but he or she would have to be able to tell me stuff that I haven't read in the dozens of books I've read on personal finance. Good stuff, mind you, not things like "Go into

Page 36: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

daytrading" or "Pick this high-MER loaded mutual fund that'll give me plenty of commissions." Oh, and a financial advisor who's used to dealing with people who aren't panicking about debt, and who are interested in planning long-term.

Or maybe I should just learn to do everything myself, because financial planning is, after all, a lifelong skill. My books are all nicely balanced, although I had to create a slide deck to remind myself exactly how my budgeting system works. That's _probably_ a sign that it can be simplified further. It seems to work. I just have to trust it. Actually, the next step would be to use invariants (thank you, Problem Solving and Methods of Proof, and numerous other computer science and math courses!) to _prove_ that it's correct. I will explain this in another post. =)

So that's where I am in terms of work, health, book, family and friends, and money. There are lots of other stories to tell, but this is just a quick overview of where I am.

Next week: More wiki work. It would be great if I could find other people to contribute to it, as I get lots of great ideas by bouncing them off others. I also need to start on my US visa paperwork for a conference I want to attend in April, and I need to do some more work on my permanent residency application (applying for clearances everywhere I've ever lived, and following up on employment confirmation with my old department).

Life is good.

Random Emacs symbol: w3m-add-local-hook - Function: Add to the buffer-local value of HOOK the function FUNCTION.

(In the presence of) Mentors

http://sachachua.com/wp/2008/01/14/in-the-presence-of-mentors/Tue, 15 Jan 2008 03:32:54 +0000The room lights dimmed around me, and a few solitary lamps signaled others staying late. I didn't mind at all, because I was having fun. Not everyday do I get a chance to pick a mentor's brain with no time restraint beyond from the grumbling of a stomach (easily ignored, and besides, I brought snacks). Well worth it

Here are some quick notes about what we talked about:

• Influence: show people why, not just how• Early adopters will adopt a technology for novelty's sake, but it gets really interesting when non-

early-adopters take to it. That means you've found a problem and solved it.• 40,000 feet view and runway view• Different perspectives and the value that brings• Enthusiasm

One of these days, I may try tweeting our conversation on the fly. ;)

Great day for mentoring. Jen Nolan volunteered, too, and I laughed because I'd already been thinking of her as a mentor. She's awesome.

My head is buzzing

http://sachachua.com/wp/2008/01/15/my-head-is-buzzing/

Page 37: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Wed, 16 Jan 2008 01:26:43 +0000My head is buzzing. Well no, not like a mosquito. Bouncing around, like a sugar-high rabbit in a cage. My brain is itching to be distracted. Writing feels slow.

I hate this feeling. I want to be in flow. Flow is what happens when you're in the zone, when you're concentrating, when things just fit together. I love that feeling, and it frustrates me that I can't slide into it as easily as I did before. In the meantime, I'll keep writing, because I'll eventually get back on track. Whatever I write now can then be edited into something better.

Games threw me off balance. A gameplaying binge last weekend led into games taking over my subway ride, and I have had enough. I had never realized how important my commute was for decompression , or how stretched my brain can feel when it's trying to go all over the place. Video games are particularly evil because part of their business is to get into your head. Pretty pictures. Random reinforcement. A sense of control, agency. Just like Sesame Street was focus-group-tested within an inch of its life, some games have been refined over years to be surprisingly appealing.

But it all comes down to this: who do I want to be, a Pokemon Master or an author? I want the heightened feelings of flow more than I want the short-term stimulation of games, so even if my thoughts are getting pulled every which way, I'm going to keep dragging them back. In the long run, I'm going to get more satisfaction from that kind of focus than from any game.

In the meantime... Boingboingboingbzzz....

Not much writing today...

http://sachachua.com/wp/2008/01/15/not-much-writing-today/Wed, 16 Jan 2008 03:27:29 +0000... but I'm glad to report that my mind is calming down a bit. At the very least, I'm getting the hang of just getting something out there. Oh, wait... Looks like I managed to write a little over a thousand words anyway. They're not really all stuck together in an article yet, but they're snippets and they're going to come together later on. =) Getting the hang of this writing thing. =D

http://sachachua.com/wp/2008/01/15/4680/Wed, 16 Jan 2008 03:54:16 +0000

... And the MacBook Air, while interesting, doesn’t meet any immediate need (though I look forward to playing with one sometime). I already have a very lightweight laptop, anyway.

says David Singer (Read This Blog). Yeah, I'm not too impressed either. Then again, I already have an ultraportable. It hasn't moved much in the last few days, though... Light as it is, bringing it AND a Lenovo T60 would not be fun. In other news, I'm trying out Newzcrawler as a way to read and blog quickly. I'm not too impressed. You know, if I could just spend some time getting nnrss to work under Emacs...

Planning a talk! =) ""Networking 2.0: Blogging Your Way Out of a Job... and into a Career"

http://sachachua.com/wp/2008/01/15/planning-a-talk-networking-20-blogging-your-way-out-of-a-job-and-into-a-career/Wed, 16 Jan 2008 04:07:54 +0000So it looks like I might be talking at the next Concordia University alumni event. Wouldn't that be cool?

Page 38: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Thanks to Ian Garmaise and Cheryl Morris for the referrals! Here's the short description of my talk:

You know that networking is important to success. Now learn how to use blogs to connect with other people for both personal and business benefits, in both extrovert- and introvert-friendly ways. In this highly interactive two-hour workshop, you will learn how blogs can help you keep track of your accomplishments, discover and express your passion, connect with other people, demonstrate your character and competence, build your reputation, grow your network, and advance your career. You'll learn about the challenges that come with having a public image, but also the rewards that may follow. You'll develop a plan for getting started and connections that will get richer over time.

and a quick bio (eh, writing in third person):

Sacha Chua is an intranet social computing consultant with IBM Global Business Services. She earned her M.A.Sc. in human-computer interaction at the University of Toronto in November 2007, and her research was about using Web 2.0 to locate expertise in a large organization. She also has a B.S. Computer Science degree from the Ateneo de Manila University in the Philippines. And yes, her blog helped convince her (current) manager to create the perfect position for her. In her spare time, she works on a technical book about Emacs, devours stacks of books from the library, and writes on her personal blog at http://sachachua.com.

I love speaking in public. I get a chance to learn so much in the process. =) I love writing, too. It's funny how those things feed on each other: writing helps me learn and think, speaking gets the message out there and helps me make it more conversational, and that in turn gives me more to write about... Anyway: February 27, 6:00 - 8:00, actual talk 6:30-7:30 or so. It's going to be mainly for alumni (even though I'm not one! =) ), but stay tuned - I'll post more notes and maybe even a recording. (And I have to eventually get around to posting my Livin' la Vida Emacs presentation from DemoCamp. That was absurd amounts of fun.) Looking forward to it! I've been collecting notes for a presentation like that for a while now, and I'm looking forward to telling stories and helping people imagine, plan, and act. =)

Mike Moran: Writer, Search Marketing Expert, Distinguished Engineer!

http://sachachua.com/wp/2008/01/16/mike-moran-writer-search-marketing-expert-distinguished-engineer/Wed, 16 Jan 2008 18:20:09 +0000

Mike is an IBM Distinguished Engineer and Product Manager of IBM's OmniFind search software, which offers the security, scalability, and extensibility needed for enterprise search solutions. Prior to this position, Mike spent eight years in various positions at IBM's customer-facing Web site, ibm.com, most recently as the Manager of ibm.com Web Experience, where he led 65 information architects, Web designers, Webmasters, programmers, and technical architects around the world.

About Mike Moran—Writer and Search Marketing Expert

Holy cow. =) Just found another role model. I'd heard about his book on BlogCentral, but I hadn't realized he's a Distinguished Engineer. Another role model! =D When I grow up, I'm going to be like him. Or Carol Jones, who is also Really Awesome.

Page 39: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Inching away, 1000 words at a time

http://sachachua.com/wp/2008/01/16/inching-away-1000-words-at-a-time/Thu, 17 Jan 2008 04:30:12 +0000

The article on Org still doesn't quite fit together yet, but I'm writing. 1000 words at a time, 1.5 hours a day, slowly but surely putting it together... =)

Searching Your Notes

http://sachachua.com/wp/2008/01/17/searching-your-notes/Fri, 18 Jan 2008 02:26:35 +0000

C-s (isearch-forward) and C-r (isearch-backward) are two of the most useful Emacs keyboard shortcuts you'll ever learn. To search forward interactively, type C-s (isearch-forward) and the first few characters of your search. Repeat C-s (isearch-forward) as necessary, or type in more characters to jump to the first instance that matches all those characters. Use these shortcuts to not only search your Org file, but also to quickly jump to sections. For example, I often search for headlines by typing C-s (isearch-forward) * start-of-my-headline. Org searches collapsed sections, so you don't need to open everything before searching.

To search using Org's outline structure, use C-c / r (org-sparse-tree, regexp), which will show only entries matching a regular expression. For more information about regular expressions, read the Emacs info manual entry on Regexps. Here are a few examples:

To find Search for

All entries containing "cat"

cat

All entries that contain "cat" as a word by itself (example: "cat," but not "catch")

\<cat\>

All entries that contain 2006, 2007, or 2008

200[678]

social networking

http://sachachua.com/wp/2008/01/17/social-networking/Fri, 18 Jan 2008 04:55:05 +0000All that's needed to turn me from an introvert to a people person is the ability to skip small talk, at least in the beginning. Thank you, Internet! Take today, for example. I was working on a wiki guide to social media on a client site when I heard a cheery voice introduce himself and say that he found me on a social network. A few minutes later, I was deep in conversation with someone I'd never met or even talked to before. He had noticed that my client contact had added me on LinkedIn, and that I was from IBM. Intrigued, he checked out my profile and read my blog. He was baffled by the Emacs posts, but he noticed my passion for social computing, and that was something that he was very interested in. We talked about knowledge management, technology adoption, influencing behavior, the different initiatives going on at the company. I recommended

Page 40: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

two books: Influencer: The Power to Change Anything by Kerry Patterson, Joseph Grenny, David Maxfield, Ron McMillan, Al SwitzlerRead more about this book...

The Leader's Guide to Storytelling: Mastering the Art and Discipline of Business Narrative by Stephen DenningRead more about this book...

... and I'm definitely looking forward to more conversations. Wouldn't it be amazing if people in his companyâ€â€ン and in other companiesâ€â€ン could meet and talk to other people as easily as he found and talked to me? Wouldn't it be great if people could skip past all the small talk and build rapport by talking about the things people are passionate about?

Glasses, glasses

http://sachachua.com/wp/2008/01/18/glasses-glasses/Fri, 18 Jan 2008 05:11:05 +0000

"You're ordering glasses from the Internet? You're braver than I am!" was the almost-unanimous sentiment I heard when I told people how my previous set of frames had fallen apart and that I wasn't too keen on spending hundreds of dollars on a new pair. The sole dissenter was ubercool Leigh Honeywell, who told me that she had picked up a couple of pairs from Zenni Optical.

On her recommendation, I picked up two pairs. Both of them are fantastic. =) Prescription is right on. The frames are a little wider than I'm used to, but they're both memory frames, so they fit securely on my head. And they're way cheaper than frames bought in-store would be, not to mention the lenses.

Frame#: 3413 Half Rim Hingeless Stainless Steel $12.95 (Black) Lens Width 49mm, Height 27mm, Bridge 17mm FrameWidth 136mm,Temple Arm Length 140mm Frame Weight with 1.57 index lens 11 grams

and

Frame#: 3412 Stainless Steel Half Rim Frame with Flexible (Memory) Plastic Temples $12.95 (Burgundy) Lens Width 50mm, Height 28mm, Bridge 19mm FrameWidth 136mm, Temple Arm Length 140mm Frame Weight with 1.57 index lens 12 grams

Lenses are included in the frame price, although I paid an extra ~$5 for anti-reflective coating. Compare with... what... $200, $300 per frame, plus more for lenses?

I picked fairly conservative designs, but there are tons of styles on Zenni and other online retailers. =) Someday I may experiment with styles a bit more. These are fine. They're hingeless: interesting.

Recommend, particularly for people who find optical shops way more expensive than they should be. Measure your old glasses to find out what frame dimensions you're comfy with, then pick out a pair or two. =)

Page 41: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Fast-forwarding through small talk

http://sachachua.com/wp/2008/01/18/you-have-received-a-painting-from-sacha-27/Fri, 18 Jan 2008 05:35:03 +0000

Outlining Your Notes with Org

http://sachachua.com/wp/2008/01/18/outlining-your-notes-with-org/Sat, 19 Jan 2008 01:44:35 +0000

Large documents are almost impossible to write without outlines. There's just too much to fit in your head. Outlines help you work with a structure, so that you can see the big picture and how sections fit together. Outlines are also surprisingly useful when brainstorming. You can work with varying levels of detail, starting with a high-level overview and successively refining it, or starting with the details and then letting the structure emerge as you organize those details into groups.

Emacs has one of the most powerful outline editors I've come across. Although word processors like Microsoft Word and OpenOffice.org Writer support outlines too, Emacs has a gazillion keyboard shortcuts, and once you get the hang of them, you'll want them in other applications as well. In addition, working in Emacs tends to force you to focus on the content instead of spending time fiddling with the formatting. Whether you're writing personal notes or working on a document that's due tomorrow, this is a good thing.

In this section, you'll learn how to outline a document using Org. You'll be able to create headings, sub-headings, and text notes. You'll also learn how to manage outline items by promoting, demoting, and rearranging them.

Understanding Org

Org is primarily a personal information manager that keeps track of your tasks and schedule, and you'll learn more about those features in chapters 8 and 9. However, Org also has powerful outline-management tools, which is why I recommend it to people who want to write and organize outlined notes.

The structure of an Org file is simple: a plain text file with headlines, text, and some additional information such as tags and timestamps. A headline is any line that stars with a series of asterisks. The more asterisks there are, the deeper the headline is. A second-level headline is the child of the first-level headline before it, and so on. For example:

* This is a first-level headlineSome text under that headline** This is a second-level headlineSome more text here*** This is a third-level headline*** This is another third-level headline** This is a second-level headline

Because Org uses plain text, it's easy to back up or process using scripts. Org's sophistication comes from keyboard shortcuts that allow you to quickly manipulate headlines, hide and show outline subtrees, and search for information.

Page 42: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

GNU Emacs 22 includes Org. To automatically enable Org mode for all files with the .org extension, add the following to your ~/.emacs:

(require 'org)(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))

To change to org-mode manually, use M-x org-mode while viewing a file. To enable Org on a per-file basis, add

*- mode: org -*-

to the first line of the files that you would like to associate with Org.

Working with Outlines

You can keep your notes in more than one Org file, but let's start by creating ~/notes.org. Open ~/notes.org, which will automatically be associated with Org Mode. Type in the general structure of your document. You can type in something like this:

* Introduction * ...

You can also use M-RET (org-meta-return) to create a new headline at the same level as the one above it, or a first-level headline if the document doesn't have headlines yet.

Create different sections for your work. For example, a thesis might be divided into introduction, review of related literature, description of study, methodology, results and analysis, and conclusions and recommendations. You can type in the starting asterisks yourself, or you can use M-RET (org-meta-return) to create headings one after the other.

Now that you have the basic structure, start refining it. Go to the first section and use a command like C-o (open-line) to create blank space. Add another headline, but this time, make it a second-level headline under the first. You can do that by either typing in two asterisks or by using M-RET (org-meta-return, which calls org-insert-heading) and then M-right (org-metaright, which calls org-do-demote). Then use M-RET (org-meta-return; org-insert-heading) for the other items, or type them in yourself. Repeat this for other sections, and go into as much detail as you want.

What if you want to reorganize your outline? For example, what if you realized you'd accidentally put your conclusions before the introduction? You could either cut and paste it using Emacs shortcuts, or you can use Org's outline management functions. The following keyboard shortcuts are handy:

Action Command Shortcut Alternative

Move a subtree up org-metaup / org-move-subtree-up M-up C-c C-x u

Move a subtree down org-metadown / org-move-subtree-down M-down C-c C-x d

Demote a subtree org-shiftmetaright / org-demote-subtree S-M-right C-c C-x r

Promote a subtree org-shiftmetaleft / org-promote-subtree S-M-left C-c C-x l

Page 43: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Demote a headline org-metaright / org-do-demote M-right C-c C-x <right>

Promote a headline org-metaleft / org-do-promote M-left C-c C-x <left>

Collapse or expand a subtree org-cycle (while on headline) TAB

Collapse or expand everything org-shifttab (org-cycle) S-TAB C-u TAB

Use these commands to help you reorganize your outline as you create a skeleton for your document. These commands make it easy to change your mind about the content or order of sections. You might find it easier to sketch a rough outline first, then gradually fill in more and more detail. On the other hand, you might find it easier to pick one section and keep drilling it down until you have headlines some seven levels deep. When you reach that point, all you need to do is add punctuation and words like "and" or "but" between every other outline item, and you're done!

Well, no, not likely. You'll probably get stuck somewhere, so here are some tips for keeping yourself going when you're working on a large document in Org: brainstorming and getting a sense of your progress.

Brainstorming

Brainstorming is a great way to break your writer's block or to generate lots of possibilities. The key idea is to come up with as many ideas as you can, and write them all down before you start evaluating them.

I usually switch to paper for mindmapping and brainstorming because paper helps me think in a more colorful and non-linear way. However, it can be hard to manage large mindmaps on paper, because you can't reorganize nodes easily. Despite its text-heavy interface, Org is one of the best mindmapping tools I've come across. Because it's built into Emacs, everything can be done through keyboard shortcuts.

When you're brainstorming, you might like working from two different directions. Sometimes it's easier to start with an outline and to add more and more detail. Other times, you may want to jot quick ideas and then organize them into groups that make sense. Org provides support for both ways of working.

Brainstorming bottom-up is similar to David Allen's Getting Things Done method in that separating collection from organization is a good idea. That is, get the ideas out of your head first before you spend time trying to figure out the best way to organize them. To get things out of your head quickly, collect your ideas by using the M-RET (org-meta-return) to create a new heading, typing in your idea, and using M-RET (org-meta-return) to create the next heading. Do this as many times as needed.

One way to encourage yourself to brainstorm lots of ideas is to give yourself a quota. Charles Cave described this technique in an article on org-mode, and it's a great way to use structure to prompt creativity. Simply start by adding a number of empty headings (say, 20), then work towards filling that quota. For example, you might start with ten blanks for ideas, then gradually fill them in like this:

* Things that make me happy** Curling up with a good book** Watching a brilliant sunset** Giving or getting a big warm hug** Writing a cool piece of Emacs code

Page 44: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

** ** ** **** **

When all of your ideas are in Org, start organizing them. This is where you move ideas around using M-S-up (org-shiftmetaup) and M-S-down (org-shift-metadown), which call org-move-subtree-up and org-move-subtree-down. This is also a good time to use headings to group things together.

Getting a Sense of Progress

You've brainstormed. You've started writing your notes. And if you're working on a large document, you might lose steam at some point along the way. For example, while working on this book, I often find myself intimidated by just how much there is to write about Emacs. It helps to have a sense of progress such as the number of words written or the number of sections completed. To see a word count that updates every second, add this code to your ~/.emacs:

(defvar count-words-buffer nil "*Number of words in the buffer.")

(defun wicked/update-wc () (interactive) (setq count-words-buffer (number-to-string (count-words-buffer))) (force-mode-line-update)) ; only setup timer once(unless count-words-buffer ;; seed count-words-paragraph ;; create timer to keep count-words-paragraph updated (run-with-idle-timer 1 t 'wicked/update-wc))

;; add count words paragraph the mode line(unless (memq 'count-words-buffer global-mode-string) (add-to-list 'global-mode-string "words: " t) (add-to-list 'global-mode-string 'count-words-buffer t))

;; count number of words in current paragraph(defun count-words-buffer () "Count the number of words in the current paragraph." (interactive) (save-excursion (goto-char (point-min)) (let ((count 0)) (while (not (eobp)) (forward-word 1) (setq count (1+ count))) count)))

The best way I've found to track my progress in terms of sections is to use a checklist. For example, the collapsed view for this section looks like this:

** Outline Notes with Org [7/9] ;; (1)*** [X] Outlining Your Notes... ;; (2)*** [X] Understanding Org...*** [X] Working with Outlines...

Page 45: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

*** [X] Brainstorming...*** [ ] Getting a Sense of Progress... ;; (3)*** [X] Searching Your Notes...*** [X] Hyperlinks...*** [X] Publishing Your Notes...*** [ ] Integrating Remember with Org

• (1): [7/9] shows that I've completed 7 of 9 parts. • (2): [X] indicates finished parts. • (3): [ ] indicates parts I still need to do.

This is based on the checklist feature in Org. However, the standard feature works only with lists like this:

*** Items [1/3]- [X] Item 1- [ ] Item 2- [ ] Item 3

Add the following code to your ~/.emacs in order to make the function work with headlines:

(defun wicked/org-update-checkbox-count (&optional all) "Update the checkbox statistics in the current section.This will find all statistic cookies like [57%] and [6/12] and updatethem with the current numbers. With optional prefix argument ALL,do this for the whole buffer." (interactive "P") (save-excursion (let* ((buffer-invisibility-spec (org-inhibit-invisibility)) (beg (condition-case nil (progn (outline-back-to-heading) (point)) (error (point-min)))) (end (move-marker (make-marker) (progn (or (outline-get-next-sibling) ;; (1) (goto-char (point-max))) (point)))) (re "\\(\\[[0-9]*%\\]\\)\\|\\(\\[[0-9]*/[0-9]*\\]\\)") (re-box "^[ \t]*\\(*+\\|[-+*]\\|[0-9]+[.)]\\) +\\(\\[[- X]\\]\\)") b1 e1 f1 c-on c-off lim (cstat 0)) (when all (goto-char (point-min)) (or (outline-get-next-sibling) (goto-char (point-max))) ;; (2) (setq beg (point) end (point-max))) (goto-char beg) (while (re-search-forward re end t) (setq cstat (1+ cstat) b1 (match-beginning 0) e1 (match-end 0) f1 (match-beginning 1) lim (cond ((org-on-heading-p) (or (outline-get-next-sibling) ;; (3) (goto-char (point-max))) (point)) ((org-at-item-p) (org-end-of-item) (point)) (t nil)) c-on 0 c-off 0) (goto-char e1) (when lim (while (re-search-forward re-box lim t)

Page 46: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(if (member (match-string 2) '("[ ]" "[-]")) (setq c-off (1+ c-off)) (setq c-on (1+ c-on)))) (goto-char b1) (insert (if f1 (format "[%d%%]" (/ (* 100 c-on) (max 1 (+ c-on c-off)))) (format "[%d/%d]" c-on (+ c-on c-off)))) (and (looking-at "\\[.*?\\]") (replace-match "")))) (when (interactive-p) (message "Checkbox statistics updated %s (%d places)" (if all "in entire file" "in current outline entry") cstat)))))(defadvice org-update-checkbox-count (around wicked activate) "Fix the built-in checkbox count to understand headlines." (setq ad-return-value (wicked/org-update-checkbox-count (ad-get-arg 1))))

Now add [ ] or [X] to the lower-level headlines you want to track. Add [/] to the end of the higher-level headline containing those headlines. Type C-c # (org-update-checkbox-count) to update the count for the current headline, or C-u C-c C-# (org-update-checkbox-count) to update all checkbox counts in the whole buffer.

If you want to see the percentage of completed items, use [%] instead of [/]. I find 7/9 to be easier to understand than 71%, but fractions might work better for other cases.

Okay, you've written a lot. How do you find information again?

Searching Your Notes

When you're writing your notes, you might need to refer to something you've written. You may find it helpful to split your screen in two with C-x 3 (split-window-horizontally) or C-x 2 (split-window-vertically). To switch to another window, type C-x o (other-window) or click on the window. To return to just one window, use C-x 1 (delete-other-windows) to focus on just the current window, or C-x 0 (delete-window) to get rid of the current window.

Now that you've split your screen, how do you quickly search through your notes? C-s (isearch-forward) and C-r (isearch-backward) are two of the most useful Emacs keyboard shortcuts you'll ever learn. Use them to not only interactively search your Org file, but also to quickly jump to sections. For example, I often search for headlines by typing * and the first word. Org searches collapsed sections, so you don't need to open everything before searching.

To search using Org's outline structure, use C-c / r (org-sparse-tree, regexp), which will show only entries matching a regular expression. For more information about regular expressions, read the Emacs info manual entry on Regexps. Here are a few examples:

To find Search for

All entries containing "cat"

cat

All entries that contain "cat" as a word by itself

\<cat\>

Page 47: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(example: "cat," but not "catch")

All entries that contain 2006, 2007, or 2008

200[678]

Hyperlinks

If you find yourself frequently searching for some sections, you might want to create hyperlinks to them. For example, if you're using one file for all of your project notes instead of splitting it up into one file per project, then you probably want a list of projects at the beginning of the file so that you can jump to each project quickly.

You can also use hyperlinks to keep track of your current working position. For example, if you're working on a long document and you want to keep your place, create a link anchor like <<TODO>> at the point where you're editing, and add a link like [[TODO]] at the beginning of your file.

You can create a hyperlink to a text search by putting the keywords between two pairs of square brackets, like this:

See [[things that make me happy]]

You can open the link by moving the point to the link and typing C-c C-o (org-open-at-point). You can also click on the link to open it. Org will then search for text matching the query. If Org doesn't find an exact match, it tries to match similar text, such as "Things that make me really really happy".

If you find that the link does not go where you want it to go, you can limit the text search. For example, if you want to link to a headline and you know the headline will be unique, you can add an asterisk at the beginning of the link text in order to limit the search to headlines. For example, given the following text:

In this file, I'll write notes on the things that make me happy. (1)If I ever need a spot of cheering up, I'll know just what to do!

** Things that make me happy (2) *** ...

Example Link 1: [[things that make me happy]]

Link 2: [[*things that make me happy]]

Link 1 would lead to (1), and Link 2 would lead to (2).

To define a link anchor, put the text in double angled brackets like this:

<<things that make me happy>>

A link like [[things that make me happy]] would then link to that instead of other occurances of the text.

You can define keywords that will be automatically hyperlinked throughout the file by using radio targets. For example, if you're writing a jargon-filled document and you frequently need to refer to the definitions, it may help to make a glossary of terms such as "regexp" and "radio target", and then define them in a glossary section at the end of the file, like this:

Page 48: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

*** glossary<<<radio target>>> A word or phrase that is automatically hyperlinked whenever it appears. <<<regexp>>> A regular expression. See the Emacs info manual.

Radio targets are automatically enabled when an Org file is opened in Emacs. If you've just added a radio target, enable it by moving the point to the anchor and pressing C-c C-c (org-ctrl-c-ctrl-c). This turns all instances of the text into hyperlinks that point to the radio target.

Publishing Your Notes

You can keep your notes as a plain text file, or you can publish them as HTML or LaTeX. HTML seems to be the easiest way to let non-Emacs users read your notes, as a large text file without pretty colors can be hard to read.

To export a file to any of the formats that Org understands by default, type C-c C-e (org-export). You can then type 'h' (org-export-as-html) to export it as HTML for websites. You can also type 'l' (org-export-as-latex) to export it to LaTeX, a scientific typesetting language, which can then be published as PDF or PS. Another way to convert it to PDF is to export it as HTML, open it in OpenOffice.org Writer, and use the Export to PDF feature. You can also open HTML documents in other popular word processors to convert them to other supported formats.

By default, Org exports all the content in the current file. To limit it only to the visible content, use C-c C-e v (org-export-visible) followed by either 'h' for HTML or 'l' for LaTeX.

If you share your notes, you may want to export an HTML version every time you save an Org file. Here is a quick and dirty way to publish all Org files to HTML every time you save them:

(defun wicked/org-publish-files-maybe () "Publish this file." (org-export-as-html-batch) nil)(add-hook 'org-mode-hook ;; (1) (lambda () (add-hook (make-local-variable 'write-file-functions) ;; (2) 'wicked/org-publish-files-maybe)))

• (1) Every time a buffer is set to Org mode... • (2) Add a function that publishes the file every time that file is saved.

What if most of your files are private, but you want to publish only a few of them? To control this, let's add a new special keyword "#+PUBLISH" to the beginning of the files that you want to be automatically published. Replace the previous code in your ~/.emacs with this:

(defun wicked/org-publish-files-maybe () "Publish this file if it contains the #+PUBLISH: keyword" (save-excursion (save-restriction (widen) (goto-char (point-min)) (when (re-search-forward "^#?[ \t]*\\+\\(PUBLISH\\)" nil t) (org-export-as-html-batch) nil))))

Page 49: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(add-hook 'org-mode-hook (lambda () (add-hook (make-local-variable 'write-file-functions) 'wicked/org-publish-files-maybe)))

and add #+PUBLISH on a line by itself to your ~/notes.org file, like this:

#+PUBLISH * Things that make me happy

When you save any Org file that contains the keyword, the corresponding HTML page will also be created. You can then use a program like rsync or scp to copy the file to a webserver, or you can copy it to a shared directory.

Integrating Remember with Org

You can use Remember to collect notes that you will later integrate into your outline. Add the following code to your ~/.emacs to set it up:

(global-set-key (kbd "C-c r") 'remember) ;; (1)(add-hook 'remember-mode-hook 'org-remember-apply-template) ;; (2)(setq org-remember-templates '((?n "* %U %?\n\n %i\n %a" "~/notes.org"))) ;; (3)(setq remember-annotation-functions '(org-remember-annotation)) ;; (4)(setq remember-handler-functions '(org-remember-handler)) ;; (5)

• 1: Handy keyboard shortcut for (r)emember • 2: Creates a template for (n)otes • 3: Create a note template which saves the note to ~/notes.org, or whichever Org file you want to use • 4: Creates org-compatible context links • 5: Saves remembered notes to an Org file

With this code, you can type C-c r n (remember, Notes template) to pop up a buffer (usually containing a link to whatever you were looking at), write your note, and type C-c C-c (remember-buffer) to save the note and close the buffer.

You can use this to store snippets in your notes file, or to quickly capture an idea that comes up when you're doing something else.

Now you know how to sketch an outline, reorganize it, fill it in, brainstorm, stay motivated, and publish your notes. I look forward to reading what you have to share!

Donated $110 through Kiva, a microcredit site

http://sachachua.com/wp/2008/01/19/donated-110-through-kiva-a-microcredit-site/Sat, 19 Jan 2008 15:02:22 +0000

I believe in microcredit. I believe in helping people help themselves and people around them through entrepreneurship. Access to capital is hard if you're just starting a business, and microcredit loans bridge that step. Besides, it's great learning a little bit about the people you're lending to, instead of just donating to a big organization.

Page 50: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I believe in microcredit. I just hadn't done anything about it until today, when I read Quinn's blog post about receiving a $25 Kiva gift certificate and lending to a barber in Cambodia. I registered on the site and lent $100 from my charity budget.

I lend to women, because statistics show that they have a higher repayment ratio compared to men. I prefer to lend to people who have had experience with microlending and business. In particular, I prefer to lend to women with children and a business, because they've got really good reasons to manage the business well and they're used to handling lots of things going on at the same time. I also prefer to lend to groups, because they have good social support and motivation.

I believe in microcredit, and I'm glad that I can do something about it. In fact, I'm going to follow Quinn's example here and regularly give away gift certificates, one each month. =) Maybe even two, if I like the system.

Now if Kiva would partner with a microfinance organization in the Philippines, that would be awesome.

Reading isn't Dead Yet!

http://sachachua.com/wp/2008/01/19/reading-isnt-dead-yet/Sat, 19 Jan 2008 15:32:46 +0000

As an internet-addicted millennial, I’m well aware that the printed word is dying. Our generation is going to be the death of printed magazines and newspapers. I haven’t read a newspaper in years, but thanks to Google News, Digg, Reddit, NowPublic and others; I’m still as informed as I was when I used to keep scrapbooks full of newspaper clippings.

But what I didn’t know is that books are already toast. Steve Jobs recently told the New York Times his opinion on Amazon’s Kindle electronic book reader.

“It doesn’t matter how good or bad the product is, the fact is that people don’t read anymore,” he said. “Forty percent of the people in the U.S. read one book or less last year. The whole conception is flawed at the top because people don’t read anymore.”

Ouch.

Will Pate, If People Don’t Read, Why Keep Writing?

As an Internet-addicted millenial, I'm also deeply addicted to the reading. I read. A lot. I read because I love learning about things and books give me the most bang for the buck when it comes to established topics, thanks to the research and thought people have put into their books, and I read because I love having fantastic

Page 51: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

conversations with fellow bookworms. Granted, I read more than almost everyone I know, but most of my friends read a lot too. And if we're this weird geeky island in a sea of people who'd rather watch television or video and be constrained to the speed and order at which someone communicates, then that's the way it is.

I don't think the picture is as bleak as Steve Jobs paints it, though. People read and write, but they read and write mostly light material: e-mail, blog posts, things like that. A Vision of Students Today (video below) makes that point very well. Jump to 1:58 if you want to see just that bit.

So people read a lot, but it's like what people would get if they read only magazine or newspaper articles. It's like snacking instead of eating your vegetables. Vegetables, properly done, can be quite yummy. Books, too. But the good thing about it is that many books are going online, whether it's because publishers and authors are trying new ways to reach more people, or even people like me are writing online because of the quick feedback of the Internet.

The printed word isn't dying. It's going online. It's moving onward and upward. And if that forces writers and publishers and readers (who might also be writers and publishers in this new world) to figure out new models for the way we do things, great!

Book notes

http://sachachua.com/wp/2008/01/19/book-notes/Sat, 19 Jan 2008 21:43:20 +0000

Writing To Learn by William K. Zinsser I can't do justice to this book. It's full of beautiful writing. After I return this to the library, I'm getting my own copy to keep around for inspiration. Read more about this book...

• How to Write Fast (While Writing Well) by David Fryxell

Great read. Recommend. Key points: discipline and organization. • There's plenty of time for writing books (examples of people who write books five minutes at a

time).

Page 52: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Use outlines and other tools to help you organize your material.

Read more about this book...

Money Can Buy Happiness: How to Spend to Get the Life You Want by MP Dunleavey

Interesting read, nothing particularly new to me, but good advice.

Asset 1: your valuable time Asset 2: your personal resources Asset 3: your health Asset 4: financial control Asset 5: mutual fund Asset 6: get into bonds Asset 7: giving to feel good

Page 32. Like many economists, he found that some arenas have a greater impact on people's contentment with life. For example, a rewarding family life was a key ingredient in overall life satisfaction, whereas work tended to not have as big an impact.

Read more about this book...

Book Yourself Solid: The Fastest, Easiest, and Most Reliable System for Getting More Clients Than You Can Handle Even if You Hate Marketing and Selling by Michael Port

I'd recommend this for independent consultants. Good, practical advice. E-mail me if you want my book notes. =)

Read more about this book...

Open an Online Business in 10 Days by Melissa Campanelli

Nothing particularly interesting.

Read more about this book...

Business Leaders and Success: 55 Top Business Leaders and How They Achieved Greatness by Investor's Business Daily, William O'Neil

Nothing spectacular here either.

Read more about this book...

What gets measured gets managed

http://sachachua.com/wp/2008/01/19/what-gets-measured-gets-managed/

Page 53: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sun, 20 Jan 2008 00:05:49 +0000

I spent the afternoon working on a progress meter for my writing. I like measuring things, and I think this will help keep me motivated. Besides, I wanted an excuse to hack. ;)

I initially wrote this in PHP, but then I converted it to Emacs Lisp just for kicks. I like my Emacs code better. =)

Here's where I am right now:

7: Managing Your Notes 3655 of 16000 words

Wicked Cool Emacs9 8 7 6 5 4 3 2 10 1

I still have to tweak the code a bit before I feel comfortable putting it out there, but if this works, then cool!

10 Terrific Wordpress Plugins

http://sachachua.com/wp/2008/01/19/10-terrific-wordpress-plugins/Sun, 20 Jan 2008 02:47:39 +0000Here are ten of my favorite Wordpress plugins: Discover old posts and make random connections.

1. On this day 2. Random Posts widget 3. Similar Posts

Make it easier for people to comment and keep track of the conversation. Make it easier to respond to those comments, too!

4. Brian's Threaded Comments 5. Subscribe To Comments 6. Better Comments Manager

Check out these other plugins.

7. Flexo Archives - if you've been blogging since 2002, you need one of these. 8. FeedWordPress - I used this to import all of my old blog posts from my Planner-based blog. Great if

you keep more than one blog. 9. Google XML Sitemaps - Because it doesn't matter what you write if Google can't find it. 10.TD Word Count - Nice to see how many words you've written. Tweak this a little to share your stats

with the rest of the world.

Weekly review

http://sachachua.com/wp/2008/01/20/weekly-review-14/Mon, 21 Jan 2008 04:45:04 +0000

Page 54: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Work: While reviewing the work I've done on the social media guide, I found out that I'd written well over 16,000 words in the last few weeks. The guide is shaping up quite nicely, and I'm looking forward to turning it over in the next week or two. This is good, because there's a whole bucket load of work coming my way. The next two weeks are going to be quite interesting.

Book: The chapter on notetaking in Emacs is starting to take shape. I'm at 6000 words, and my target is 16,000. My editor and I are gradually tweaking the structure. I'm learning!

Life: Speech recognition is now accurate enough for me to read book notes to my computer, and this is actually quite fun.

I've made a list of little things that I could buy or do to make my day-to-day life better. Surprisingly, most of the things in this list aren't expensive. I look forward to using my play money budget in a planned manner.

W- is doing a fantastic job of keeping me sane. He's just amazing. He's also keeping me very well fed, with buttermilk cinnamon rolls and couscous-stuffed chicken.

It's my dad's birthday tomorrow!

Goals for next week.

Book: If I write 1500 words every day for the next week, I'll be done with all the content by Sunday. Then I can spend the last week of January editing this chapter and the previous one. I need to finish the section on Planner, and I'm also thinking of writing about howm and a few other Emacs notetaking techniques.

Life: I look forward to touching base with Flo and maybe Leigh on Saturday. Also, I'll invest some time in taking care of some of the things that make my life easier. I'll start with 10 minutes of exercise every day, or maybe 20 if I can get that sorted out. =) It might not be fun immediately, but it will become fun if I stick with it.

Work: Customize the social media wiki with more client-specific information, and turn it over. Prepare for my next engagements. Starting to get the hang of this!

On second thought...

http://sachachua.com/wp/2008/01/21/on-second-thought/Mon, 21 Jan 2008 05:10:00 +0000

On second thought, the best way to go about this isn't just another writing sprint. After all, writing is such a small part of writing. Editing is so much more important. What I really need to do to take advantage of the support that I can get from my editor is to go back and start incorporating suggestions he made into the previous chapter. Then I'll get a better sense of what a good chapter looks like, feels like. If nothing else, then I'll have a good chapter to look at and say, hey, I can actually write stuff like that.

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/21/you-have-received-a-painting-from-sacha-28/Mon, 21 Jan 2008 05:25:04 +0000

Page 55: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/21/you-have-received-a-painting-from-sacha-29/Mon, 21 Jan 2008 05:30:05 +0000

Editing

http://sachachua.com/wp/2008/01/21/editing/Tue, 22 Jan 2008 03:21:28 +0000

I didn't write 1500 words today. I spent most of the evening trying to remove words. Instead of writing new material for my chapter on taking notes, I edited the first 10 pages of my previous chapter on task management.

I like editing. I can read what I want to say, and all I have to do is figure out how to say it better. I translate from something that I understand to something that other people might understand. It helps to throw away this abstract idea of "people" and write for specific people I know. I like thinking of a few other geek girls who are also interested in Emacs, like Clair and Quinn. How would I explain Emacs task management in a way that would help my friends go, "Aha! Now I see it!"? When I get the technical stuff nailed, I cut and tweak until it sounds like something I'd actually say to them.

Editing is work, but it's good work. This is what's going to make me a good writer: deliberate practice. I can feel the changes in the text. I think there are much better ways to say things in the way I say them right now. I don't know what those ways are yet, but I'm looking forward to finding out. This is not to say that I'll spend the next few decades obsessively polishing a single chapter. This book is a starting point, not the end, and I like writing and learning too much to get stuck.

I'd still like to make it to my self-imposed deadline of January 31 for this chapter, but sprinting towards that deadline would be less effective than deliberately practicing writing, deliberately trimming and polishing my previous work until I get a sense of what it means to write.

More books

http://sachachua.com/wp/2008/01/22/more-books/Wed, 23 Jan 2008 02:28:28 +0000

"I enjoyed lunch too :) Please email the titles of all of those books! They all sounded wonderful," tweeted Heidi Hansen. E-mail, Heidi? ;) E-mail is so old-school. Here are the books we talked about:

The Leader's Guide to Storytelling: Mastering the Art and Discipline of Business Narrative by Stephen Denning

Read the first few chapters to learn about telling springboard stories. This book is more about

Page 56: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

influencing large groups of people, but you might find the tips on storytelling useful even if you're working one-on-one. Tell people stories about the ways social software saves you time and helps you do more, and tell those stories in a way that helps people imagine the time they could save and the things they could do. =) (Also, it's a good read.)

Read more about this book...

Influencer: The Power to Change Anything by Kerry Patterson, Joseph Grenny, David Maxfield, Ron McMillan, Al Switzler

This one talks about the personal, social, and structural motivations and abilities that you need to think about if you're influencing adoption. Again written for the large-scale, but worth keeping in mind when you're trying to influence behavior one-on-one. Also good because it'll help you understand why you can't win everyone... =) Read more about this book...

I also often recommend this:

Crossing the Chasm by Geoffrey A. Moore

also has some good stuff about technology adoption. Here you'll see the technology adoption curve, with innovators, early adopters, early majority, late majority, and laggards. (Or something like that...)

Read more about this book...

Alex might find these books about writing useful, as they talk about scientific writing as well:

Writing To Learn by William K. Zinsser

Start with this one; it's about bridging the gap between science and writing. =) Read more about this book...

The Periodic Table by Primo Levi One of William Zinsser's favorite examples of chemical writing. A friend lent this to me, and it's a great read. Read more about this book...

Jennifer Dodd, I think I mentioned the first three books to you as well, and these ones for independent consultants:

Million Dollar Consulting: The Professional's Guide to Growing a Practice by Alan Weiss A friend strongly recommended this. I haven't read it yet, but I trust his taste in books.

Page 57: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Read more about this book...

Flawless Consulting: A Guide to Getting Your Expertise Used by Peter Block

Read more about this book...

Book Yourself Solid: The Fastest, Easiest, and Most Reliable System for Getting More Clients Than You Can Handle Even if You Hate Marketing and Selling by Michael Port

Just finished this one. Practical advice. Haven't read enough in this area to tell you if it's one of the better books, but it seems okay. =) Read more about this book...

WLW really should have a frequently-recommended-books plugin.

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/22/you-have-received-a-painting-from-sacha-30/Wed, 23 Jan 2008 02:50:05 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/23/you-have-received-a-painting-from-sacha-31/Thu, 24 Jan 2008 03:00:05 +0000

Sand and snow

http://sachachua.com/wp/2008/01/23/you-have-received-a-painting-from-sacha-32/Thu, 24 Jan 2008 03:10:03 +0000

Today

http://sachachua.com/wp/2008/01/24/today-3/Fri, 25 Jan 2008 03:26:16 +0000

The highlight of the day was finding out that one of my presentations had been accepted to IBM's Technical Leadership Exchange, one of the most prestigious conferences in IBM. It's intimidating, considering I have

Page 58: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

barely 3 months experience and the rest of the people there bring decades of expertise. It's intimidating because some of my role models submitted abstracts that weren't accepted. It's intimidating, because it's such a terrific opportunity to learn. I don't feel anything like a technical leader, but I'll learn as much as I can and share whatever knowledge and connections I gain.

My work is going well too. I really appreciate hearing the feedback from my clients, and I'm glad to see that the guide I wrote is becoming a useful resource for them. I have two new engagements coming up next week. I'm starting to get a sense of the value I can contribute. I'm starting to see how I can fit.

I am making slow but steady progress in my book. I edited another 10 pages, bringing me up to 20 out of 47 in the previous chapter, reorganizing, formatting, fixing the little typos that somehow slipped out. It's slow going, but essential work. I wonder if I can outsource it.

All in a day's work.

This weekend: more writing, more editing, more catching up with friends. I'm looking forward to framing the family portraits my mom sent me, and maybe I'll pick up a couple of picture frames from IKEA. I've got a number of talks coming up, which means I need to start writing the material for them.

This morning started out a bit gray, but I'm learning that I can keep working through it.

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/26/you-have-received-a-painting-from-sacha-33/Sat, 26 Jan 2008 05:55:03 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/26/you-have-received-a-painting-from-sacha-34/Sat, 26 Jan 2008 06:00:06 +0000

Yak shaving with OpenOffice.org

http://sachachua.com/wp/2008/01/27/yak-shaving-with-openofficeorg/Sun, 27 Jan 2008 05:50:31 +0000

Fiddly little editing tasks are driving me mad. Formatting all the keyboard shortcuts as EmphasisBold and the command names as Literal... I figured that if I could write a program that got 80% of the cases right, that would not only save me time but also stress. So I spent two hours shaving the yak today, learning just enough OpenOffice.org Basic to put together two procedures that attempt to handle most of the cases. FormatCommands looks for anything within parentheses inside a body paragraph, and FormatKeyboardShortcut looks for things like C-c r t (remember, tasks). I don't expect this to be usable to anyone, but if it can be a useful jumping-off-point for other people, that would be awesome.

Sub FormatCommands

Page 59: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

oDoc = ThisComponent Descriptor = oDoc.createSearchDescriptor() Descriptor.SearchRegularExpression = true Descriptor.SearchString = "\([^)]+\)" Found = oDoc.FindFirst(Descriptor) do while not isNull(Found) oNew = oDoc.Text.createTextCursorByRange(Found.Start) if oNew.CharStyleName = "" and (oNew.ParaStyleName = "Body" or oNew.ParaStyleName = "BodyFirst") then oNew.goRight(1, False) oNew.goRight(Len(Found.String) - 2, True) oNew.CharStyleName = "Literal" end if Found = oDoc.findNext(Found.End, Descriptor) Loop End SubSub FormatKeyboardShortcuts oDoc = ThisComponent Descriptor = oDoc.createSearchDescriptor() Descriptor.SearchRegularExpression = true Descriptor.SearchCaseSensitive = true Descriptor.SearchString = "([CMS]-)+([a-zA-Z0-9]+)*( [a-zA-Z0-9])* " Found = oDoc.FindFirst(Descriptor) do while not isNull(Found) if Found.CharStyleName = "" and (Found.ParaStyleName = "Body" or Found.ParaStyleName = "BodyFirst") then Found.CharStyleName = "EmphasisBold" end if Found = oDoc.findNext(Found.End, Descriptor) Loop End Sub

Library book reminder script - Perl geeking required

http://sachachua.com/wp/2008/01/27/library-book-reminder-script-perl-geeking-required/Sun, 27 Jan 2008 06:17:48 +0000

W- and I borrow lots of books from the library. This script helps keep order in the house by reminding us when either of us have books that are due. I've removed our information from it and have made no efforts to make it user-friendly. Perl geeking required.

opac-reminder.txt

(It's really a .pl. Can't be bothered to mess around with forcing content type at 1:10 AM...)

Here's the one that generates the RSS file that's pulled into the right sidebar of my blog:

opac2rss.txt

Enjoy!

Taking it Offline

http://sachachua.com/wp/2008/01/27/taking-it-offline/Sun, 27 Jan 2008 21:06:27 +0000

Page 60: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

This was a week of online encounters becoming offline ones. I had lunch with Heidi Hansen, a librarian from Ann Arbor, Michigan. She was in Toronto for a few days, and Andy Piper suggested that we get together because we're both interested in social networking. To give you an idea of how small the world is, we had never met our mutual friend face to face. Andy Piper had "met" her randomly through a blog post about Plazes, and I met Andy through IBM. He knew we were both interested in social computing, so he told us about each other. Great call. Over lunch at Green Mango (730 Yonge Street), Heidi and I chatted about wikis, blogs, technology adoption, life, and other wonderful things. I find that people in library and information sciences are just as techie as I am when it comes to social networking and information spaces, even though they'd never admit it. =) I enjoyed our conversation, and I'm thrilled to hear that she and her husband will be moving to Toronto, and that her husband is taking a postdoc at the University of Toronto. (Andy Piper blogged about it too.) I look forward to keeping in touch! There's something different about having a conversation with another blogger. Our online lives transform our off-line interactions. I had never met Heidi before, but a quick scan of her blog showed me that I was going to enjoy that conversation with her. And I did. There was no awkwardness, no shyness, not even a twinge of the asymmetry I feel when I talk to people who know a lot more about me than I do about them. In those asymmetric conversations, I feel I need to ask a lot of questions so that I can understand the other person as much as he or she understands me. When I talk to people who have rich online presences, I don't feel that imbalance. We just slip right into easy conversation. Another person I'd gotten to know through IBM blogs is Jonathan Feinberg, maker of Dogear (our enterprise social bookmarking system) and other systems that make my day-to-day life so much better. When I heard that he was flying into town for a gig (one night only!), I had to go and see this other side of him. He played drums for the launch of Michael Holt's new CD, "Windows," held at The Music Gallery (197 John St.) Great venue. I knew it was a mistake leaving my camera behind. This mistake was confirmed when he took a break from the drums in order to put on a red clown nose for a hilarious act. Jon in a red clown nose! Worth it. After the show, we chatted about music and finding time to do what you love when you also have other priorities. Something worth thinking about. Speaking of things to think about, I had brunch with Florina Xhabija at Eggstacy (1255 Bay St). I met Flo at a DemoCamp when she walked up to me and said that she liked my blog. I had a great conversation with her and other U of T students at the DemoCamp afterparty, and we caught up over brunch yesterday. We talked about psychology, gender roles in computer science, life decisions, social networking, and other things. She's also a big fan of tea, so I might organize a tea party soon. I prefer to spend time at home, and this week's been an anomaly in terms of going out. Still, that was a fun conversation, and I'm looking forward to the next one. Work is going well. My second client project will be extended, and I'm thrilled to see that the guide I am making for them is starting to take hold. Next week is packed. I have a workshop on Monday and Friday, and a short term engagement during the other days of the week. I'm starting to see how I provide value, and my three upcoming events (two as speaker, one as organizer) will certainly stretch me. Our plan for our trip to the Philippines is starting to take shape. We're thinking of spending four days in Bohol, and if I'm really lucky, maybe I can convince my dad to go on a 4- or 5- day trip up to the Mountain Provinces. That should cover most of the sightseeing, and we can always leave things to do for next time. My goals for next week are:

• Do well in this hectic week of work. • Finish editing the second draft of the chapter on task management. • Finish 3/4 of the chapter on taking notes.

Speech recognition - a month of fun

http://sachachua.com/wp/2008/01/27/speech-recognition-a-month-of-fun/Sun, 27 Jan 2008 21:37:47 +0000

I hadn't expected speech recognition to be this much fun. Something magical happens when I take my fingers off the keyboard. I give myself permission to talk in an unstructured way. Instead of looking down at my laptop monitor, I find myself looking up imagining myself talking to a friend. I'm free to use gestures, turning an idea over and over, trying to grasp what I want to say. And most surprising of all, I can feel the

Page 61: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

difference when I can hear my own enthusiasm. That clues me into the topics I want to talk about.

I tried this before with a voice recorder. I never found the time to listen to myself again, trying to pick out my words against the background of subway announcements and crowd chatter. Somehow, working with the computer changes things. Dragon NaturallySpeaking skips over my silences, successfully transcribes many of the words even in a rapid-fire brain dump, and breaks apart the phases of seeking out what I want to say, figuring out how to say it, and editing it into something that makes sense.

I don't use it all the time. I'm a little self-conscious about talking to my computer when there's somebody else in the room. (At this, W- smiles at me.) I still carry a portable voice recorder, but because my recorder doesn't do any noise cancellation, I find the easiest way is to re-dictate the interesting parts. But I appreciate the freedom that dictation gives me. I don't know if I work any faster or slower with it, but I do know that I work differently. And if it lets me reach different ideas, then it'll be well worth it.

Time management and work boundaries

http://sachachua.com/wp/2008/01/27/time-management-and-work-boundaries/Sun, 27 Jan 2008 22:08:02 +0000

[Never Wrestle With A Pig]:

McCormack addresses time management here, making several astute points. The biggest one - and the one that I see many people not actually doing - is to set a very strict time for leaving work and sticking to it. Doing that ensures two things: one, that you have adequate time for personal growth and rest so that, two, during the time you’re actually there, you can be highly productive. I’ve seen people burn the midnight oil quite often - it works fine for a little while, but they usually wind up exhausted, underproductive, and bitter about things, none of which are helpful for your career.

The Simple Dollar - Review: Never Wrestle With A Pig I'm in my twenties, and this is supposed to be when I focus almost exclusively on my career, put in the long hours, and do whatever I need to do in order to get on the fast track and stay there. That might work for other people, but I don't think it would work for me. I need the space for growth and rest, and there are other important things in life. I'll work hard when it's time to work, and I'll invest time in developing other areas of my life as well.

Windows Live Writer and blogging

http://sachachua.com/wp/2008/01/28/windows-live-writer-and-blogging/Tue, 29 Jan 2008 02:03:06 +0000

You might have noticed that I haven't written much about Emacs lately. I confess: I'd been distracted by the dark side of the Force. I'm not referring to Lego Star Wars for the DS, but to using Windows Live Writer to post entries to my WordPress blog. Writing about blogging on Planner was awkward when I wasn't blogging on Planner.

I have to confess: I like Windows Live Writer. I like easily uploading images to my blog. I like previewing my blog posts. I like integrating with my RSS reader so that it automatically picks up an excerpt and a link

Page 62: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

back to the original site. (It's a little like a limited Remember.)

But I miss Emacs. I miss referring to people in the course of my blog post and using a keyboard shortcut to the hyperlink to their blog, website, or whatever else was in their contact record. I miss the freedom to change all the keyboard shortcuts and define my own markup. I miss using Emacs. I got distracted by a shiny new hammer but I can't stop thinking of a Swiss Army chainsaw.

Now that I've tried these "modern blogging clients", I know more of what I want to say when it comes to Emacs and blogging. What I want to show here is that as archaic as the interface looks, it's still got this amazing power that I just can't find anywhere else. I want to show people the benefits of integrating blogging with all the rest of your life: your contact list, your todo- list, your e-mail, whatever else you have.

First I need to set up Emacs, Planner, and my blog on the computer downstairs...

I'm still using Windows Live Writer to post this, but soon I'll be back!

Changed to excerpts on the main page - What do you think?

http://sachachua.com/wp/2008/01/29/changed-to-excerpts-on-the-main-page/Wed, 30 Jan 2008 02:28:15 +0000Following the advice in Debbie Weil's "The Corporate Blogging Book", I've changed the main page of my blog to show excerpts instead of full posts. That way, you won't get intimidated by huge blocks of text. What do you think about it? Good idea? Bad idea? Should I go back to full posts?

The Corporate Blogging Book: Absolutely Everything You Need to Know to Get It Right by Debbie WeilRead more about this book...

I love open source

http://sachachua.com/wp/2008/01/29/i-love-open-source/Wed, 30 Jan 2008 03:23:39 +0000

I run into a bug, I tinker around with it, I drop into IRC, I tell people about the bug, the maintainer works through it with me, the maintainer prepares a new release.

Yay. =)

From Lifehack: How to Make Yourself INSANELY Useful

http://sachachua.com/wp/2008/01/30/from-lifehack-how-to-make-yourself-insanely-useful/Wed, 30 Jan 2008 15:27:52 +0000

Here are some great tips on how to become insanely useful.

1. Share what you know 2. Be confident in yourself 3. Solve the current problem 4. Give willingly — even when it’s your job 5. Satisfy your own curiosity 6. Listen to others

Page 63: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

7. Don’t take over 8. Know when to stop 9. Teach, don’t tell 10.Be sensitive to people’s feelings and shortcomings 11.Ask for help 12.Model best practices 13.Be reliable

Being useful, even insanely useful, doesn’t mean allowing yourself to be used. It means offering what you can, when you can, and doing so gladly. This applies whether you’re doing favors for friends, working with a team at work, writing instructions, or anything else — set limits, but within those limits, be wholly available.

Lots of people are useful — they do the things they need to do, solve the problems they need to solve, and keep things chugging along. People that are insanely useful are in high demand by the companies they work for, the organizations they take part in, the clients they serve, their friends and family, and society in general because they not only solve problems and make things work but they add value to every relationship they take part in.

Lifehack.org, How to Make Yourself INSANELY Useful

Check out the article for concrete tips. =)

Blogging works in mysterious ways

http://sachachua.com/wp/2008/01/30/blogging-works-in-mysterious-ways/Thu, 31 Jan 2008 02:31:28 +0000

When Melissa, an associate partner in Learning Strategy, sent me an instant message, I nearly missed it because I was in the middle of an energetic brainstorming session with Aaron, Jen, and Bernie. I'm glad I saw Melissa's message when I was packing up. She told me how Jennifer (another Learning consultant) had been demonstrating the way we use blogs and wikis to a group of clients. The clients happened to see my post linking to the Lifehack post on how to become insanely useful, and they wanted to know more. Melissa knew that I had crossposted it to my external blog, so she asked my permission to send them a link to it. Of course, I was happy to help, and I was even more thrilled to hear from other consultants also doing social computing adoption and evangelism. Because of that conversation, Melissa invited me to join their Lessons Learned review. I'm looking forward to that. I'm also looking forward to swapping ideas! =)

I shared the Lifehack article because it described many things I work towards, and because I thought other people might like to read it. Looks like that paid off!

Passed it on!

http://sachachua.com/wp/2008/01/30/passed-it-on/Thu, 31 Jan 2008 02:38:56 +0000I came across an internal blog post about making sense of the intranet social networking tools. Joseph, a communications assistant from the UK, asked us to help him make sense of the overwhelming choices we have in terms of Web 2.0 tools. When I checked out the wiki he created, I found out that Joseph was doing his Ph.D. dissertation on social computing in the enterprise. This just happened to be the area that I got my masters in, so I sent him an instant message and I shared a copy of my thesis with him, in the hope that my

Page 64: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

bibliography might save him some time. He had read some of my blog entries, but he hadn't realized I had done my master's research in the same area. I then proceeded to brain dump a whole bunch of tips, such as:

• Blog about your research. This is the single best thing you can do to get the word out and to find people who are interested in this kind of thing. I can't begin to describe how helpful people were. And if you end up falling in with the way the company does social networking (like I did!), people will help you find a great job too!

• Build relationships. Again, the internal blog's a terrific place to do that, particularly for this area of research. Invest time in scanning the blogs and commenting on things you find interesting.

• Don't worry about disappearing off the dashboard. Plenty of people use feed readers and subscribe to specific people or tags, so once you get on their radars, you'll stay there.

• Use a feed reader that lets you create keyword searches. That way, you never miss discussions that you are interested in. Feedreader, Omea, and FeedDemon all have this feature.

• Get to know people. I recommended a whole bunch of people who are interested in social computing. =)

• Read these books: Crossing the Chasm, The Diffusion of Innovations, The Tipping Point, and Influencer.

• Check the blogs for news about interesting tools. Our internal early adopter program is good, but the internal blogs catches the coolest hacks from all over.

• ... and other tips! =)

I tried to squeeze as much as I could in half an hour, but I'm sure I'll think of other tips! I loved just passing on everything I could think of. It was the best way to give back to all the people who helped me with my research, and I was happy to have stumbled across someone else who could learn from what I did. Besides, it was the Right Thing to Do. Thank you, blogs, for this opportunity to help!

You have received a painting from Sacha

http://sachachua.com/wp/2008/01/30/you-have-received-a-painting-from-sacha-35/Thu, 31 Jan 2008 03:40:03 +0000

Sketch: Editing

http://sachachua.com/wp/2008/01/30/you-have-received-a-painting-from-sacha-36/Thu, 31 Jan 2008 04:25:03 +0000

10 tips for new bloggers

http://sachachua.com/wp/2008/01/31/10-tips-for-new-bloggers/Thu, 31 Jan 2008 21:29:25 +0000

1. Write for one person. Don't get intimidated by the blank screen or the unknown audience. Write for one person. Write for yourself, write for your boss, write for your coworker, write for your friend, write for your mom... but write for one person at a time. I like writing for myself.

2. Cc: world. Recycle as much knowledge as you can. Answered a question over e-mail that other

Page 65: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

people might find helpful? Blog it. Had a great conversation that other people might learn from? Blog it. Learned something interesting that other people would like? Blog it. There's plenty to write about.

3. Get personal benefits. You won't stick with blogging unless you see what's in it for you. Me, I like being able to look back and find out what I was doing and why I was doing it. My blog helps me answer those questions. My blog helps me see how I've changed. My blog helps me remember how I solved problems. My blog helps me connect with people. My blog helps me make the most of time because I get lots of value out of the books I read, the conversations I have, the things I do. My blog opens lots of opportunities. As you can see, I blog for selfish reasons.

4. Create value for others. When you tell your stories or share your ideas or pass along a tip that you found useful, you might end up helping someone months or even years down the line. Searchable blogs keep providing value in unanticipated ways.

5. Let people discover your blog. Add it to your e-mail signature. Mention it when it's relevant. Link to it. Make it easier for people to find your blog, and you'll benefit by having richer conversations with less small talk and more interesting topics.

6. Read and comment. Read other people's blogs to learn what they're interested in and what blogging is like. Comment on their blogs: share your thoughts or even just thank them for posting. Write about their blog posts in your own blog - great way to quickly add content and share the link love.

7. Keep writing. Don't expect your first post to get a hundred comments. Keep writing. You're not writing for other people, you're writing to discover what you have to say. You will be boring for at least the first few months, or however long it takes to throw off the writing habits you picked up in school. Keep writing anyway. Eventually, you'll get more used to writing and you won't have to think about writing so much. Then you'll be able to concentrate on what you want to say.

8. Be yourself. Don't write corporate-speak. Don't keep it just business. Show a little of your personal side. People will connect with you better for it.

9. Give yourself permission to get better and better. You had a typo. You gave the wrong link. You were wrong. You changed your mind. That's okay. It's a blog, it's conversational, it's chronological. It's okay to make mistakes. You get better every day.

10.Have fun. Don't treat it like homework, treat it as a terrific way to discover who you are and who other people are. Keep an eye out for your positive experiences and celebrate them!

What do you think? =)

February 2008

Microsoft Excel - Alt-Enter

http://sachachua.com/wp/2008/01/31/microsoft-excel-alt-enter/Fri, 01 Feb 2008 00:39:14 +0000

Jennifer Nolan reminded me tha Alt-Enter lets you put multiline text into a Microsoft Excel spreadsheet. I'd ran across it before, but hadn't remembered it until she pointed it out. =) Thought I'd pass it on!

When it rains, it pours: query letter on personal finance accepted by Linux Journal

http://sachachua.com/wp/2008/01/31/when-it-rains-it-pours-query-letter-on-personal-finance-accepted-by-linux-journal/Fri, 01 Feb 2008 01:40:09 +0000

Page 66: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Tracking Your Finances with Ledger and Gnuplot Most people generally stress out about their finances at the end of the year and at tax time. A good personal finance program can help them plan and control their expenses so that they can make it through the holidays and taxes without wiping out their bank accounts. That way, they'll have room in their budgets for another year's subscription to Linux Journal! My article will give practical tips for managing personal finances with the Ledger command-line tool, and how to slice and dice the data with awk and Gnuplot to generate useful graphs. It is compatible with Gnucash but far friendlier for people who like working with text files. For example, I have more than two years of categorized financial data: some imported from bank statements, some exported from Gnucash, and many added through the Emacs Ledger mode. I can see my average monthly expenses for any category, project my savings into the future, or export the data and graph it in Gnuplot to see how my income compares with my expenses and to look for patterns. This makes it easy for me to see where I am, and motivates me to keep moving forward. I would love to share these tips with your readers in an article around 2200 words long, accompanied by sidebars that include tips on managing personal finance.

Part of my query letter to the Linux Journal

Okay. I can do this. What's on the horizon in terms of extracurricular writing?

• TLE paper, 3 pages, self-imposed deadline of Feb 19 • Talk on Networking 2.0 (script, presentation), 1 hour, to be delivered Feb 29 • Wicked Cool Emacs book (ongoing), finish chapter on notes management, flexible deadline but

would like to finish it by Feb 7 • Wicked Cool Emacs book (ongoing), write next chapter on Being Big Brother (ooh, that'll be fun!),

flexible deadline but would like to finish it by March 7 • ON VACATION March 10 - 24 (may get some writing done) • Personal finance article for Linux Journal, April 1

Discipline. Discipline and organization.

I need to make better use of my commuting time. The DS is a nice distraction, but I need to convert my commute into thinking or writing time.

What do I need in order to do that?

I need to have:

• An outline (paper copy, and I can put the full version in my DS) • A pad of paper • A pen that I won't lose (or don't care about losing) • Free hands to do this • Another way to work if I don't have a seat or free hands (voice recorder)

Tech prop: Typing is not fun on the DS. It's not bad for keeping data, but typing involves an on-screen keyboard. Maybe I can borrow W-'s old Treo, find an outlining tool, load my outline into that. I'll give that a shot.

Page 67: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Today: Prep outline, get everything ready for tomorrow - I have a longer commute coming up. I'm reasonably ready for the work I need to do, so I can spend some thinking time on the book.

... tap tap tap...

Notes along the way

http://sachachua.com/wp/2008/02/01/notes-along-the-way/Fri, 01 Feb 2008 15:53:11 +0000

The subway floor is slick with muddy footprints. It's crowded, so I sandwich my backpack between my feet and take out the Treo that W- lent me. If I write quickly I'll finish this before I get to Don Mills.

*

I kept my head down while walking so that the snow wouldn't get on my glasses. This meant that all I could see was the snow in front of me barely indented by the footprints of other people on their morning trek to the subway station. I had some portable sunshine - an inspiring podcast about writing.

*

These are my morning pages, I guess. Stretching exercises to warm up my brain and limber up for an interesting day. There's so much to write about. I'll write about yesterday.

*

I spent yesterday morning at one of my clients, integrating the wiki I made with a wiki that another team had put together. I joined a working meeting and shared what I knew. Things are going well.

In the afternoon, I prepared for the second part of a workshop for Web 2.0 brainstorming and planning. My team members were happy to let me take the lead in organizing the information and creating slides. I enjoyed creating a spreadsheet that organized the ideas from our brainstorming session. The spreadsheet made it easy to evaluate the ideas as well. We'll see how well that goes!

End result: I'm in charge of practically everything on the second day of the workshop. :) This will be fun.

*

When I checked my personal mail, I found an acceptance letter for an article proposal I'd sent to Linux Journal. (I have warm and fuzzy feelings about Linux Journal because that's how W- first heard about me.)

With so many extracurricular writing projects on the horizon, I realized that I needed to do more than play on my DS during commutes. I've tried writing on the DS before, but I didn't like tapping ideas out on an onscreen keyboard because that meant that one hand would be doing all the work. W- had an old Treo 270 that he no longer used, and it had a thumbboard. Now all I had to do was figure out the best way to use it to write.

I tried different outlining programs, but I wasn't happy with any of them. I was looking for in-place editing, a quick way to add nodes, and drag-and-drop reorganization. Most outlining programs for the Palm separate editing the outline from editing the nodes. Bonsai looked promising, but my Microsoft Windows XP kept blue-screening whenever I tried to transfer it over. So it's back to the built-in MemoPad, which should be fine

Page 68: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

for now.

So far, so good. I plan to use the Palm to outline, and occasionally to write blog posts like this. My voice recorder is always around my neck, so once I've fleshed out my outline, I can talk it through. I have earphones too, so I can review my braindump and write down interesting points. This involves my ear in the editing process.

Oops, I forgot the index cards. I had volunteered to bring index cards just in case they're useful for the prioritization of ideas. That's okay, we'll make do.

*

As W- expected, the meeting was cancelled due to the storm. Aaron Kim called me on my cellphone just as I was looking for the right bus at the Don Mills subway station. Jennifer's cellphone charger went kaboom, so there's no way to get in touch with her right now. I'll drop by the Innovation Centre and see if it's worth staying there, or if I should just work at home. I didn't pack lunch, but I brought some granola bars. If Bernie and Jen are there, then it's worth working on Drupal next to them. If not, I'll go home.

I've been working on my outlines, so I don't feel that my commute has been a total wash. :) It's surprisingly easy to work on a speech or article outline using just a flat text file. I still want Org on the Palm, though. Maybe Emacs on the Zaurus?

*

Why not work on my laptop?

I don't always have a seat, and the laptop is a little too big and heavy for me to feel comfortable about pulling it out anywhere. It's the convenience factor, I guess. I'll try it on the trip down Yonge to see if it's easier than I think. If so, then I'll take the Palm sync cable with me so that I can work either way.

*

Oh, look at that, I've hit the 4K limit on MemoPad. See? Writing is easy. You just think out loud.

*

Actually, no, I think I'll head straight home. Healthier food. :)

xkcd: Real programmers use Emacs

http://sachachua.com/wp/2008/02/01/xkcd-real-programmers-use-emacs/Fri, 01 Feb 2008 16:56:50 +0000

Page 69: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

From xkcd

Thanks to Jean-Francois Arsenault!

Two tweaks = a great writing day

http://sachachua.com/wp/2008/02/01/two-tweaks-a-great-writing-day/Sat, 02 Feb 2008 04:16:21 +0000

This was a very good writing day. I wrote 2256 words for my book, Wicked Cool Emacs, filling in the section on using Planner to take notes. I braindumped some stories from yesterday and today in an 847-word blog post, and I also sketched the outlines of my upcoming presentations and articles. All of that was extracurricular work in addition to e-mails, instant messages, meetings, wikis, and spreadsheets. Yes, it was a very good writing day, and I think I'll finish this chapter by the 7th, somehow managing to finish a chapter a month despite everything else that's going on.

What did I do differently? I tried two things:

Using a PDA to write during my commute: the thumb board made all the difference. Tapping tiny keys on a virtual screen or even scrawling in handwriting or graffiti was too slow for me. It made me think too much about input, and I got distracted from what I want to say. On the other hand, I found it easy to type while thinking about what I want to say. I didn't feel slowed down by the technology.

I spent most of my commute writing blog posts and outlining my upcoming presentations and articles. I was surprised to find that a flat file was good enough for organizing my outline. I thought that I would need an outline or mind mapping program, but all the programs I tried took too much effort to get ideas into the system. Palm's built-in memo pad did quite well, although I ran into the 4 kB limit about halfway through my commute and I had to start a new note.

I also ended up draining the battery because I hadn't dimmed the backlight, but that just meant that I could play on my DS with a clear conscience.

Tracking the number of words remaining: Early in the writing process, I set up Emacs to show a running total of the number of words in my draft. The first version of the quote showed the total number of words, and the second version of the quote showed the difference between a baseline and the current number of words. This was useful for seeing how much I'd written since I reset the baseline. Today, I flipped it around. Instead of showing me how many words I'd written, Emacs showed me how many words I still had to write, starting at 2000 and counting down. I don't know if that's a key change, but I admit that it was fun seeing the number inch down. Maybe it's the computer science geek in me, but I find it easier to test if something is zero then to test if something is equal to another number.

Page 70: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Hmm. One of these days, I might even hook my word counter into some kind of automatic status notification to the outside world so that people can find out how I'm doing. Maybe it would automatically tweet when I reach 50%, 75%, and 100% of my quota. Not that anyone really needs to know, but I think it would be fun.

I didn't look into doing word counts on the Palm, but I don't think I'll need it. I think of the Palm as a way to work on outlines and jot quick thoughts. I was pleasantly surprised to find out that I'd written so much, though.

End result: another section in the book, another step closer to the end of my third chapter, and a warm and fuzzy feeling of accomplishment. I may be getting the hang of this writing thing.

I'm looking forward to joining the writing group that Leigh Honeywell is thinking of starting up. I'd happily head out into the snow for an afternoon of writing at the Linux Caffe. Of course, I won't be able to do speech recognition, but I think the company will more than make up for it. And who knows? If I bring my voice recorder along, I can use it to capture my demos to other people and transcribe those into my computer afterwards.

Kaizen: relentless improvement. Yes, even for creative processes like writing... =)

Juggling; paperwork

http://sachachua.com/wp/2008/02/01/juggling-paperwork/Sat, 02 Feb 2008 04:17:59 +0000

All of this is extracurricular work. My day job is going well, too. One of the challenges than figuring out right now is how to do my best at all the different projects that I'm working on. I want to make sure that each client is happy with the work I do, and that when I am working on the project, our expectations are aligned and people feel that their goals are as important to me as their goals are to them. I get a little anxious when my schedule is uncertain, but with a little bit of initiative and planning, I'm sure I'll work things out.

I've also submitted an application for an emergency visa applicant to the US consulate. There are couple of exciting work-related opportunities that I would love to be part of. I can't talk about them yet, but if they do go through, you'll know. It's a bit of a pain to not be able to travel freely, but hey, that's life!

Testing from Emacs

http://sachachua.com/wp/2008/02/02/4728/Sat, 02 Feb 2008 20:22:26 +0000I'm using weblogger.el and xml-rpc.el to post directly to my Wordpress. I wonder how well it works... Sorry about the RSS thrashing! <sheepish grin> It took a while for the idea of a test blog to occur to me. So sorry. =) In conclusion: Emacs posting to external weblogs - not quite there yet. Weblogger.el is somewhat okay, g-client and atom-api didn't work at all on my system. Waah. Quite frustrating.

I so rock =)

http://sachachua.com/wp/2008/02/03/i-so-rock/Sun, 03 Feb 2008 06:08:26 +0000

I have about 41 pages for my current chapter on taking notes in Emacs, and I still have to write the

Page 71: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

introduction and wrap-up sections. This means that I'll need to do some more editing. It's clearly time to apply another piece of advice from the wonderful book How to Write Fast (While Writing Well), by David Fryxell: don't over-write, because the time you waste writing more than necessary and then editing down to the required length could be spent writing about something else!

I also rock because I'm getting the hang of writing macros for OpenOffice.org. Basic is not my favorite language and OpenOffice.org macro programming is sufficiently obscure that it's hard to find examples of what I want to do. OOoMacros.org helped me learn enough to write a few more functions to make my writing life better. I wrote two new functions today: one to mark up wingdings in my code, and another to mark up the source code examples. Both save me lots of tedious work. The wingding function replaced all instances of (1), ;; (1), (2), ;; (2), until (9) and ;; (9) with the corresponding wingding. The example function marked up everything enclosed in <example>..</example> tags, formatting the first and last lines in a different style and using a single-line code style for short examples. Between that and the two functions I'd previously written to format about 80% of my command and keyboard shortcuts, editing is just so much better.

It seems that most people don't tinker with their tools. I like doing so. I like getting to know what I can do with a tool and how far I can push it. This can be frustrating sometimes (I spent all afternoon trying to get Emacs to play nicely with other weblogs!), but most of the time, it's both fun and useful. Not only am I saving myself time, I'm also exercising my brain and opening opportunities for other hacks down the line. This is good.

Oh! And W- is giving Ledger a try. The tool he'd been using to keep track of finances dropped some more of his data recently. Because it's all magic inside, he couldn't figure out what happened. I'd been going on about how awesome Ledger is, this command-line double-entry accounting tool that provides no bells or whistles but with which I can do all sorts of crazy things. He described how he wanted to budget, and I showed him how to do it. No screencast, but I do plan to review the audio and create some supporting materials for my upcoming article on Ledger and Gnuplot.

Life is good. =)

Library Elf is awesome

http://sachachua.com/wp/2008/02/03/library-elf-is-awesome/Sun, 03 Feb 2008 16:06:19 +0000

When I blogged about my totally small-school library reminder script, Claudine recommended Library Elf, which helps people manage their library loans. I hopped over and set weekly reminders to go out on Sunday, just before my Monday book runs. I just got my first reminder e-mail from them, and I am impressed. C'mon. Look at that screenshot. It tells me when books are due and when my holds expire. If I hover over the links, I can see which books they are. The lists of holds ready for pickup and books that are checked out are sorted by date, which makes perfect sense. I can add W-'s library card and track his books as well. =)

Page 72: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Awesome awesome awesome.

Chapter 7: Managing Your Notes in Emacs - done!

http://sachachua.com/wp/2008/02/03/chapter-7-managing-your-notes-in-emacs-done/Mon, 04 Feb 2008 01:21:20 +0000

By golly, it's starting to look like a book.

I just finished putting together my third chapter, which is really chapter 7 in the book: managing your notes and Emacs. This chapter is about taking notes in Emacs, focusing on Remember, Org, Planner, and blogs. At 38 pages, it's a little over my planned 35 pages, and I haven't even covered all the things that I wanted to like random information management with Howm, blogging to Blosxom, and customizing Planner templates. Maybe after some really fierce copy-editing, I'll have some space.

I sent a copy off to my editor, and I just finished uploading a PDF and OpenOffice.org document that you can download and read. There's also an HTML version, but the formatting is a little wonky. I hope you find this useful! I didn't blog as much of this as I did last time, so I missed out on all the wonderful feedback people could've given me. I'll do that next chapter.

I formatted most of the chapter this afternoon, hanging out with Leigh Honeywell, Seth Hardy, and a few other geeks at the Linux Caffe. Leigh's working on a book proposal, and we're thinking of organizing a writing group for technical authors. We'll start by meeting this Thursday at Leigh's apartment. iI enjoyed chatting with them as I worked on my book, drifting in and out of conversations. I think it would be a good idea to work somewhere quieter, with plenty of table room for assorted gadgets, but this was a good start.

Next chapter: contact management in Emacs. I've got a lot of fun hacks that I want to share here, so coming up with material shouldn't be hard. I'll keep you posted!

(UPDATE: Fixed links. Thanks to Leschinsky Oleg for pointing that out!)

Upcoming events

http://sachachua.com/wp/2008/02/03/upcoming-events/Mon, 04 Feb 2008 02:29:18 +0000

My proposal was accepted at an IBM conference on best practices! I'm thrilled to have all these opportunities to share what I'm learning and to learn even more from other people. It's a little mindboggling dealing with all of this as an early-career employee with less than half a year on the job, but I know from personal experience just how wonderful public speaking is when it comes to networking and connecting with people.

Page 73: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I'll need to work extra hard to balance all these conferences with paying work, and to show the business value of all of that. It's a bit of a challenge in the consulting world where we're supposed to maximize our utilization, but maybe it will work out well.

To help keep track of all the conferences, articles, and other significant events on my horizon, I've added an upcoming events widget below the calendar on my blog. I used MagpieRSS and PHP to read the XML file from Google Calendar, and I did a little regular expression magic to get just the dates and locations. Maybe you'll find it useful too!

Business responsibilities come first. If my clients aren't happy, I may just have to pull out of some of the conferences. I think everything will work out, though, and the conferences will help me bring even more value to my client work!

Weekly review - Feb 9, 2007

http://sachachua.com/wp/2008/02/09/weekly-review-feb-9-2007/Sun, 10 Feb 2008 01:25:28 +0000I haven't written in a while, and my fingers are starting to itch. I've been preoccupied. Last Thursday I learned (again!) that an hour before the end of the day is not the best time to attempt to switch my work laptop over to Linux, and I spent the rest of that evening trying to restore some kind of functionality. On Friday I got everything sorted out while still being able to do my regular work, and now I'm posting this from a nicely set-up Linux. I will get Emacs blog posting up again soon. I also spent a good deal of time catching up with Quinn Fung, one of my best friends in Canada. She's in Toronto for a few weeks in order to interview people for research, and she's staying over here. (I was a student not too long ago, and I remember how nice it is not to have to worry about accommodation!) I've really enjoyed our reflections on Emacs, life, music, education... and I should write about them because I think you'd enjoy them too. Because I hadn't regularly written during the week, it's hard for me to tell you what I did and what the highlights were. Fortunately, I remembered to jot down some points during the commute home last Friday, so here they are: Monday: Started a new engagement at another financial services company Tuesday: Worked on social media wiki, had a good status-check meeting Wednesday: Worked on my first Drupal module (opt-in) Wednesday: Note about learning from example (... darn if I can remember what that was about) Thursday: Worked on social media wiki, learned about the table-plus macro, thought about information design Thursday: Started switching over to Linux Thursday: Went to writing session at Leigh Honeywell's place. Would have written if I hadn't been trying to fix my computer. Nice to catch up, though! Friday: Got Linux working again. Friday: Brainstormed a 40-minute talk together with Bernie Michalik using a whiteboard. Good stuff. Friday: Installed Node Relativity and started to play around with that for another module I need to write. Being in flux unnerves me. I hadn't been keeping track of my time in Emacs, hadn't been writing regularly, hadn't done my weekly planning... I felt adrift. I couldn't point to anchors in my day, blog posts and checked-off tasks that showed me that I'd done something. Brrr. So enough mucking about with VMWare or VirtualBox. Time to write. Time to think. Time to relax.

Powered by ScribeFire.

Linux and Windows playing nicely together

http://sachachua.com/wp/2008/02/10/linux-and-windows-playing-nicely-together/Sun, 10 Feb 2008 21:32:40 +0000

I spent the better part of this weekend trying to get Linux and Windows to play nicely together. I'm much more comfortable in Linux than I am at Windows, but I need both: Linux for development, and Windows to

Page 74: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

deal with all the other office productivity stuff. After I started running into frustrating Windows-specific issues, I realized that Linux-like workarounds on Windows just weren't enough for me. So I repartitioned my hard disk, installed IBM's Open Client for Linux, and switched over.

It wasn't easy to get VMware up and running. I saw more Blue Screens of Death than I had in the past year. It was frustrating switching back and forth, trying to figure out the right combination of drivers so that I could use VMware to run an existing Windows XP installation. After I installed the VMware SCSI drivers, my SATA drive finely worked.

Audio wasn't enabled by default, but after I set that up, even Dragon NaturallySpeaking worked without a hitch. So now, I'm dictating into Windows, which is running in Linux. This makes me happy. =)

Rough guide to getting an existing Windows XP partition to boot as a VMWare guest under Linux

http://sachachua.com/wp/2008/02/10/rough-guide-to-getting-an-existing-windows-xp-partition-to-boot-as-a-vmware-guest-under-linux/Mon, 11 Feb 2008 00:59:48 +0000Because I might have to do this again someday...

1. Install VMWare Server. Use the advanced config to create an image that uses your existing hard disk. 2. Boot Windows (physically). Back up the current hardware profile. 3. Boot Linux. Download the SCSI drivers from

http://www.vmware.com/download/ws/index.html#drivers .. 4. Change your GRUB config so that it doesn't time out. You do _not_ want to accidentally boot your

Linux partition while inside Linux. 5. Start VMWare with your Windows image. Use the recovery console. Mount the SCSI drivers FLP as

a floppy and copy the files to c:\windows\system32\drivers . 6. Boot Windows physically. Use the Control Panel - Add New Hardware dialog to add the VMWare

SCSI driver. It might also be a good idea to disable ACPI for the computer 7. Boot to Linux. Use VMWare to load the Windows image.

The SATA drive complicated things a bit, but I eventually got stuff sorted out. Yay! Next step: Wonder if seamless is worth the trouble...

Powered by ScribeFire.

Writing and "Better: A Surgeon's Notes on Performance"

http://sachachua.com/wp/2008/02/10/writing-and-better-a-surgeons-notes-on-performance/Mon, 11 Feb 2008 03:35:22 +0000

I don't remember where I got the book recommendation to read this book, but it's a fascinating read, and I aspire to this kind of life. (Although not in medicine - I couldn't bear the responsibility!).

Better: A Surgeon's Notes on Performance by Atul Gawande

Read more about this book...

Page 75: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Here's a quote for all you writers, bloggers, and other aspiring communicators, from the afterword on how to become a positive deviant [p.249]

My fourth suggestion was: write something. I don't mean this to be an intimidating suggestion. It makes no difference whether you write five paragraphs or a blog, a paper for a professional journal, or a poem for reading group. Just write. What you write need not achieve perfection. It need only add some small observation about your world.

You should also not underestimate the power of the act of writing itself. I did not write until I became a doctor. But once I became a doctor, I found I needed to write. For all its complexity, medicine is more physically than intellectually taxing. Because medicine is a retail enterprise, because doctors provide their services to one person after another, it can be a grind. You can lose your larger sense of purpose. But writing lets you step back and think through a problem. Even the angriest rant forces the writer to achieve a degree of thoughtfulness.

... Most of all, by offering your reflections to an audience, even a small one, you make yourself part of a larger world. Put a few thoughts on a topic in just a newsletter, and you find yourself wondering nervously: Will people notice it? What will they think? Did I say something dumb? An audience is a community. The published word is a declaration of membership in that community and also the willingness to contribute something meaningful to it.

So choose your audience. Write something.

Atul Gawande, Better

My blog anchors my participation in the larger world, resulting in not only online interaction but real-world as was well. It makes me part of the conversation.

When I talk to people who don't blog. I feel a strange disconnect as if the conversation we have stops there: stops at the e-mail exchange with each other, stops at the meeting, is confined within the boundaries of our encounters. When I talk to people who blog, the conversation is wide open and embraces the world.

It's hard to explain that to the people who are afraid that they might have nothing to say. The truth is that you won't discover what you have to say until you say it. Sometimes it's hard to remember that not everyone has discovered the use of writing in reflecting and connecting with others. People have other priorities. They have no time. And perhaps at the core of it, they are shy as I was shy, as I still am shy. But I can overcome my shyness because I want to be part of that larger conversation with them. With you.

Write, and join the conversation.

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/11/you-have-received-a-painting-from-sacha-38/Mon, 11 Feb 2008 06:30:05 +0000

Building relationships: 10 ways to get the most out of social networking sites

http://sachachua.com/wp/2008/02/11/building-relationships-10-ways-to-get-the-most-out-of-social-

Page 76: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

networking-sites/Mon, 11 Feb 2008 14:56:04 +0000Dustin Wax shares these tips in Building Relationships: 10 Ways to Get the Most Out of Social Networking Sites - Lifehack.org :

1. Have a clear purpose2. Complete your profile3. Don’t follow the leader4. Accept everyone5. Add everyone you know, no matter how little6. Pick one or two networks and work them7. Send messages8. Have something to say9. Avoid clutter10.Firewall your personal with [sic] business lives

Dustin Wax, Building Relationships: 10 Ways to Get the Most Out of Social Networking Sites - Lifehack.org

I agree with most of his list, except for Accept everyone and Firewall your personal and business lives. Here's why:

I don't accept everyone. At least, not until I've had a good conversation with them. Many people on social networking sites seem to think that it's all about collecting connections. The only time you'll ever hear from them is when they send you a form-letter invite, and that's it. I don't mind connecting with people out of the blue, but I want to make at least a little effort to establish a connection first. I want to know more about my connections than just what's on their profile. What's the point of social networking if I can't make a personal introduction? After all, if people are in my network, I should be able to vouch for them, or at least say something that people wouldn't get if they just search the Net. So if people want to collect connections, but they don't want to engage in at least one e-mail conversation about why they want to connect and what their personal goals are, if they've never checked out my blog or told me about theirs, if they've never even made an effort to find things we have in common and how we can help each other... I won't connect. I'd rather limit my already-large contact list to people I feel comfortable reaching out to. Similarly, I don't add people en-masse, just people I would like to keep in touch with. And (gasp!) I prune the contact list once in a while. After all, if people just want to keep an eye on me, they can read my blog or use lots of other asymmetric ways to keep in touch. My contact list should be a list of people who would read my e-mail or take my call if I needed help, and who are willing to spend some time helping me get to know them.

I don't separate my business and personal life. People who do this miss out on such rich interactions. The truth is, you need that personal touch to make business relationships sparkle. I can't tell you how many times my personal blog has led to interesting conversations with my clients and colleagues. Granted, there are some things I don't blog (mainly because I don't have the time to write about everything I do want to blog). But I won't try to build barriers between my personal and business life. This is who I am: all of it, all my blog posts and sketches and rants. It is possible to have both integrity of self and honesty of self-expression.

How about you? How do you feel about open networking or work-life separation?

Technorati Tags: networking

Powered by ScribeFire.

Page 77: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I love you library!

http://sachachua.com/wp/2008/02/11/i-love-you-library/Mon, 11 Feb 2008 23:31:07 +0000

On February 21, when you access the library's catalogue and your account online, you will see the following improvements

• Book covers and reviews for many items • Receive email notification about holds and overdue material, if you have provided library

staff with your email address. After February 21, contact your branch or call Answerline (416-393-7131) and provide us with your email address, if you wish to take advantage of this new service.

• Ability to suspend your holds request for a period of time – eg. do not fill this hold between July 10 and August 1. Your place in the holds queue is maintained but you are not called if you come to the top of the list between July 10 and August 1. After August 1 your hold becomes active again and you will be called when the item is available.

• Ability to change the pick-up location for unfilled hold requests.

Toronto Public Library > About the Library > Website Redesign I can't wait to see the new interface!

Powered by ScribeFire.

Rumor has it that Dragon NaturallySpeaking works under WINE

http://sachachua.com/wp/2008/02/11/rumor-has-it-that-dragon-naturallyspeaking-works-under-wine/Tue, 12 Feb 2008 01:58:05 +0000That would be _just_ awesome. Wine Application DB - Viewing App: Dragon Naturally Speaking 9 I wonder if it will let me program in Emacs through dictation?

UPDATE: Darn! I have Dragon NaturallySpeaking 9.5, which does not work. Boo. Back to VMWare, then...

Making arrangements for my cat

http://sachachua.com/wp/2008/02/12/making-arrangements-for-my-cat/Wed, 13 Feb 2008 00:22:27 +0000Trying to arrange my cat's transit isn't easy. Today I called the Japanese Quarantine Service. Not trusting my command of the Japanese language (it's been two years of no practice!), I decided to just try to make it in English. I'd rather repeat myself using creative analogies than have my cat turned back at the airport! The woman at the Yokohama head office assured me that I didn't need the microchip and quarantine system they have for pets brought into Japan. A health certificate would do. She advised me to call the Narita Terminal 2 branch for more details. So I called up the Narita Terminal 2 branch and explained that I wanted to bring my cat from the Philippines to Toronto through Narita, and that I wanted to know what papers I needed. The man on the other end of the line apologized, saying he spoke little English. After trying to explain it in different ways, I gave in and said, "Ummm... neko no koto desu." "Oh, cat! Nihongo ga wakarimasu ka?" I explained in the fragments of Japanese that I remembered that no, not really, I'm really bad at Japanese (heta desu), but we could try. In broken Japanese, I explained what I wanted to do. Relieved, he launched into a confident (and fast!) explanation, which I had to interrupt with "Gomen nasai, zenzen wakarimasen deshita! (Sorry, I didn't understand a word of that!)" He slowed down and made an effort to intersperse English words

Page 78: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

whenever he could--and that's how I found out that I just need to check with the airline. See, if Neko were here, my Japanese would probably be better. I had been studying Japanese when we tore open the bathroom wall to save this tiny ant-covered kitten, so naturally I named the cat "Cat" in Japanese. (My sister calls her Catastrophix, based on the characters in the wonderful series Asterix and Obelix.) I practiced my Japanese on her, and that's probably why she won't listen to anyone else in the household. Anyway... So I need a health certificate no earlier than 10 days of departure and a document from a vet showing rabies vaccination no later than 30 days prior to departure. As I won't be there a full month, I'll need to ask my family to take care of getting the rabies vaccination certificate. I've missed my cat so much. I'm looking forward to bringing her over. Don't know what she'll do about snow, though. Looks like she'll be an indoor cat with a heated bed and all! ;)

Powered by ScribeFire.

Taking quick notes for books

http://sachachua.com/wp/2008/02/12/taking-quick-notes-for-books/Wed, 13 Feb 2008 01:11:57 +0000I love my book notes system. I almost always ask fellow bookworms how they keep track of what they've learned from the books they've read, and their suggestions have helped me put together a pretty darn good system. Here's how I work:

Capture: I usually read books in front of my computer so that I can use Dragon NaturallySpeaking to take notes while I read. I speak the page number and the quote I want to remember. Using speech recognition to write book notes means that I don't have to take my hands off the book, and I don't have to perch it precariously on my lap as I try to type in quotes. Speech recognition is reasonably accurate, and I love breezing through a passage at some 300 words a minute. This is awesome. This is so much better than my old way of doing things. I suspect this also does good things for my ability to recall important points. When I finish a page, I correct the text that's already there.

If I'm not at my computer, I record notes into a portable voice recorder. If I'm feeling lucky, I get DNS to auto-transcribe the recordings. This doesn't usually work. Background noise messes up the recognition. But it's usually good enough to let me find the pages again. Or--shhh--sometimes I dogear pages. ;)

Organize: I copy the book notes into a plain text file that uses the Org outline mode. I organize my booknotes with the titles as second-level headings, and I sometimes tag the books with keywords.

Store: I copy my book notes onto my Nintendo DS, where I can use the ReadMore homebrew application to quickly review my book notes on the subway.

Review: Every so often, I whiz through the books in my book notes system so that I can keep the key points fresh in my mind. This review is also a good opportunity to pass a book's idea on to someone else.

What would make this even better? A Nintendo or Palm text editor that understood Org files would be just amazing. Integration with LibraryThing would be nice, too, so that people could easily find out which books to discuss with me. Even without those pieces, though, my system works really really well for me.

What's your system?

Powered by ScribeFire.

Page 79: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sketch: My first writing group

http://sachachua.com/wp/2008/02/12/you-have-received-a-painting-from-sacha-37/Wed, 13 Feb 2008 01:25:03 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/12/you-have-received-a-painting-from-sacha-39/Wed, 13 Feb 2008 01:30:04 +0000

Chapter 6: Being Big Brother (plan)

http://sachachua.com/wp/2008/02/13/chapter-6-being-big-brother-plan/Thu, 14 Feb 2008 02:34:02 +0000I haven't been writing about Emacs lately. Here's my outline so that you can help keep me honest. =) My next chapter is about the Big Brother Database (BBDB) and contact management in Emacs, which is one of the things that made people laugh when I showed my Emacs configuration at DemoCamp in Toronto. Anyway, here's what I'm planning to write about: Chapter 6: Being Big Brother (30 pages)

• Why use Emacs to manage your contacts? What is BBDB? • Project xxx: Set up BBDB Project xxx: Import contacts: CSV, card Project xxx: Create a record

Project xxx: Search records • Mail Project xxx: Integrate BBDB with Mail Project xxx: Notice e-mail changes Project xxx: Filter

mail according to record Project xxx: Categorize contacts with mail aliases Project xxx: Personalize greetings Project xxx: Personalize signatures Project xxx: Mail merge Project xxx: Track last contact

• Filtering records Project xxx: Show a phone list Project xxx: Show an address list Project xxx: Show no contact since Project xxx: Show tag queries Project xxx: Remember birthdays

• More data Project xxx: Snarf records Project xxx: Add pictures Project xxx: Export contacts Project xxx: Synchronize contacts Project xxx: Synchronize with LinkedIn

BBDB: Show an address list

http://sachachua.com/wp/2008/02/13/bbdb-show-an-address-list/Thu, 14 Feb 2008 03:59:30 +0000

I sometimes feel like bringing out my stationery, my fountain pen, and a coil of stamps, and writing cards to random people in my address book. When I travel, I also enjoy writing quick postcards to people who live in the country I'm visiting. That's why I wrote this code to filter my address book so that I could see only the contacts with snail-mail addresses, or only the contacts whose snail-mail addresses match a regular expression.

You can call M-x wicked/bbdb-find-people-with-addresses to filter the displayed BBDB records. Press RET at the "Regexp: " prompt in order to show all records with addresses, or type in a regular expression that matches anything in the addresses field. By default, wicked/bbdb-find-people-with-addresses works on the BBDB records already shown in the *BBDB* window, or all records if none are shown. This allows you to

Page 80: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

successively filter BBDB records. (Combined with the other BBDB projects I'll blog about, you'll be able to get a list of all the people you haven't talked to in three months but who you've talked to within the year, who are interested in Emacs and cooking but not social networking, and who have a phone number in your contact database! How's that for targeted mail? ;) ) Anyway, if you want to start your search from scratch and you don't want to call M-x bbdb with . as the regular expression, use the universal prefix argument (C-u M-x wicked/bbdb-find-people-with-addresses) and it will search your entire contact database.

Have fun! =)

(defun wicked/bbdb-find-people-with-addresses (&optional regexp records) "Filter the displayed BBDB records to those with addresses." (interactive "MRegexp: ") (let ((records (if current-prefix-arg (bbdb-records) (or records bbdb-records (bbdb-records)))) filtered cons next) (while records (when (and (bbdb-record-get-field-internal (if (arrayp (car records)) (car records) (caar records)) 'address) (or (null regexp) (string= regexp "") (delq nil (mapcar (lambda (address) (string-match regexp (wicked/bbdb-address-string address))) (bbdb-record-get-field-internal (if (arrayp (car records)) (car records) (caar records)) 'address))))) (setq filtered (cons (if (arrayp (car records)) (car records) (caar records)) filtered))) (setq records (cdr records))) (bbdb-display-records (nreverse filtered))))

(defun wicked/bbdb-address-string (address) "Return ADDRESS as a string." (mapconcat 'identity (delq nil (list (mapconcat 'identity (bbdb-address-streets address) ", ") (let ((s (bbdb-address-city address))) (and (not (string= s "")) s)) (let ((s (bbdb-address-state address))) (and (not (string= s "")) s)) (let ((s (bbdb-address-zip address))) (and (not (string= s "")) s)) (let ((s (bbdb-address-country address))) (and (not (string= s "")) s)))) ", "))

(defun wicked/bbdb-yank-addresses () "Copy displayed addresses to the kill ring." (interactive) (kill-new (mapconcat (lambda (record) (concat (bbdb-record-name (car record)) "\n" (mapconcat (lambda (address) (concat (bbdb-address-location address) ": " (wicked/bbdb-address-string address)))

Page 81: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(bbdb-record-get-field-internal (car record) 'address) "\n"))) bbdb-records "\n\n")))

BBDB: Show a phone list

http://sachachua.com/wp/2008/02/14/bbdb-show-a-phone-list/Fri, 15 Feb 2008 03:27:50 +0000

When I find myself in an airport, I sometimes take a little time to say hi to a bunch of people who are suddenly just a local call a way. Or sometimes I'm thinking of going somewhere, and instead of flipping through my phone's address book, I'll check my computer to see who might be interested.

You can use this function to filter phone numbers in your BBDB based on a regular expression. As usual, leaving the regular expression blank means that all records with phone numbers will be displayed. By default, the function works on the currently displayed records, allowing you to apply multiple filters. You can call it with a universal prefix argument (C-u M-x sacha/bbdb-find-people-with-phones) to match against all contacts in your database.

Here's the code:

(defun sacha/bbdb-find-people-with-phones (&optional regexp records) "Search for phone numbers that match REGEXP in BBDB RECORDS.Without a prefix argument, filter the list of displayed records.Call with a prefix argument to search the entire database. Thisworks best if you use a consistent format to store your phonenumbers. The search will strip out non-numeric characters. Forexample, +1-888-123-4567 will be treated as +18001234567.

To search for all numbers in Toronto, search for\"+1\\(416\\|647\\)\". If you search for certain areasfrequently, it might be a good idea to define a function forthem." (interactive (list (read-string "Regexp: ") (if current-prefix-arg (bbdb-records) (or bbdb-records (bbdb-records))))) (let (filtered next) (while records (when (and (bbdb-record-get-field-internal (if (arrayp (car records)) (car records) (caar records)) 'phone) (or (null regexp) (string= regexp "") (delq nil (mapcar (lambda (phone) (when (string-match regexp (sacha/bbdb-phone-string phone)) (concat (bbdb-phone-location phone) ": " (bbdb-phone-string phone)))) (bbdb-record-get-field-internal (if (arrayp (car records)) (car records) (caar records)) 'phone)))))

Page 82: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(setq filtered (cons (if (arrayp (car records)) (car records) (caar records)) filtered))) (setq records (cdr records))) (bbdb-display-records (nreverse filtered))))

(defun sacha/bbdb-phone-string (&optional phone) "Strip non-numeric characters from PHONE, except for +." (replace-regexp-in-string "[^+1234567890]" "" (bbdb-phone-string phone))) (defun sacha/bbdb-yank-phones () "Copy a phone list into the kill ring." (interactive) (kill-new (mapconcat (lambda (record) (mapconcat (lambda (phone) (concat (bbdb-record-name (car record)) "\t" (bbdb-phone-location phone) "\t" (bbdb-phone-string phone))) (bbdb-record-get-field-internal (car record) 'phone) "\n")) bbdb-records "\n")))

Software as a service, high tech startup :: Morph Code :: Schedule of Events

http://sachachua.com/wp/2008/02/14/software-as-a-service-high-tech-startup-morph-code-schedule-of-events/Fri, 15 Feb 2008 03:40:51 +0000Winston Damarillo is an all-around cool guy and a serial tech entrepreneur who wants to help more people start up tech companies in the Philippines. So he put together Mor.ph, and now Mor.ph is holding a bootcamp for aspiring tech entrepreneurs. It's also a business competition, so if you win, you get funding, support, and mentoring. Good stuff. Kinda makes me wish I was based in Manila instead! ;) Software as a service, high tech startup :: Morph Code :: Schedule of Events

BBDB: Filtering by Mail Alias

http://sachachua.com/wp/2008/02/16/bbdb-filtering-by-mail-alias/Sat, 16 Feb 2008 06:11:42 +0000You can use "a" (bbdb-add-or-remove-mail-alias) in BBDB buffers to add a mail alias to the current entry, or "* a" to add a mail alias to all displayed entries. I use mail aliases to tag or categorize my contacts (example: emacs, writing, etc.). The following functions can make it easy for you to filter displayed records using a combination of keywords: Display records matching ALIAS and ALIAS

M-x sacha/bbdb-filter-displayed-records-by-alias RET alias alias

Display records matching ALIAS or ALIAS

C-u M-x sacha/bbdb-filter-displayed-records-by-alias RET alias alias

Omit records matching ALIAS and ALIAS

M-x sacha/bbdb-omit-displayed-records-by-alias RET alias alias

Page 83: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Omit records matching ALIAS or ALIASC-u M-x sacha/bbdb-omit-displayed-records-by-alias RET alias alias

Here's the code:

(defun sacha/bbdb-filter-by-alias-match-all (query-aliases record-aliases) "Return non-nil if all QUERY-ALIASES are in RECORD-ALIASES." (let ((result t)) (while query-aliases (unless (member (car query-aliases) record-aliases) (setq query-aliases nil result nil)) (setq query-aliases (cdr query-aliases))) result))

(defun sacha/bbdb-filter-by-alias-match-any (query-aliases record-aliases) "Return non-nil if any in QUERY-ALIASES can be found in RECORD-ALIASES." (let (result) (while query-aliases (when (member (car query-aliases) record-aliases) (setq query-aliases nil result t)) (setq query-aliases (cdr query-aliases))) result))

;; Moved this to a convenience function so that we don't;; have to deal with invert and property splitting.(defun sacha/bbdb-filter-by-alias (bbdb-records alias-filter-function query &optional invert) "Return only the BBDB-RECORDS that match ALIAS-FILTER-FUNCTION.ALIAS-FILTER-FUNCTION should accept two arguments: - QUERY, a list of keywords to search for - aliases, a list of keywords from the recordIf INVERT is non-nil, return only the records that donot match." (delq nil (mapcar (lambda (rec) (if (funcall alias-filter-function query (split-string (or (bbdb-record-getprop (if (vectorp rec) rec (car rec)) 'mail-alias) "") "[ \n\t,]+")) (when (null invert) rec) (when invert rec))) bbdb-records)))

;; Splitting this into two functions because of interactive calling.(defun sacha/bbdb-filter-displayed-records-by-alias (query &optional any) "Display only records whose mail-aliases match QUERY.If ANY is non-nil, match if any of the keywords in QUERY arepresent.See also `sacha/bbdb-omit-displayed-records-by-alias'." (interactive (list (let ((crm-separator " "))

Page 84: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(completing-read-multiple "Mail aliases: " (bbdb-get-mail-aliases))) current-prefix-arg)) (when (stringp query) (setq query (split-string query "[ \n\t,]+"))) (bbdb-display-records (sacha/bbdb-filter-by-alias (or bbdb-records (bbdb-records)) (if any 'sacha/bbdb-filter-by-alias-match-any 'sacha/bbdb-filter-by-alias-match-all) query)))

;; Splitting this into two functions because of interactive calling.(defun sacha/bbdb-omit-displayed-records-by-alias (query &optional any) "Display only records whose mail-aliases do not match QUERY.If ANY is non-nil, match if any of the keywords in QUERY arepresent.

See also `sacha/bbdb-filter-displayed-records-by-alias'." (interactive (list (let ((crm-separator " ")) (completing-read-multiple "Mail aliases: " (bbdb-get-mail-aliases)) current-prefix-arg))) (when (stringp query) (setq query (split-string query "[ \n\t,]+"))) (bbdb-display-records (sacha/bbdb-filter-by-alias (or bbdb-records (bbdb-records)) (if any 'sacha/bbdb-filter-by-alias-match-any 'sacha/bbdb-filter-by-alias-match-all) query t)))

This will be part of my book, Wicked Cool Emacs. Looking forward to putting it together!

Trying out virtual assistants

http://sachachua.com/wp/2008/02/16/trying-out-virtual-assistants/Sat, 16 Feb 2008 15:00:48 +0000I've set aside some of my play money to try out virtual assistants. I want to learn more about delegating tasks effectively, because that's something that'll help me a lot in the future. Help with online research, document and presentation design, and miscellaneous tasks would be appreciated, too. There's always that urge to go and just stick the money into my long-term investments account, but I think this would be a good long-term investment as well. I've been focusing on virtual assistants from the Philippines because I want to help out and because I'll have fewer language barriers. (It may be a good opportunity to pick up a dialect, even!) Over 80 virtual assistants and companies have registered on VA4U. The best practice seems to be to go with larger companies that can coordinate different kinds of talent and cover for gaps in staffing, but it's hard to get a sense of size in the list. And every time I come across someone who confesses to be a computer geek, or someone who has a computer science degree, the teacher inside me feels a pang. I want to give them more interesting work than what most people might give them. Something that matches their strengths and helps them develop the skills they want to have. Yes, I know, I'm technically hiring or contracting with people, but I want to treat them as partners and help them develop anyway. So I've started asking these potential virtual

Page 85: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

assistants what kind of work they love to do and what they want to get better at. Maybe we can find something that will work out for everyone. =) Have you tried having a virtual assistant? How was your experience? Ever been curious about it? What would you outsource?

Geni - Your family tree online

http://sachachua.com/wp/2008/02/17/geni-your-family-tree-online/Sun, 17 Feb 2008 19:15:22 +0000Okay, I did find another social network I wanted to join online. Geni is a family-oriented application, and you can use it to collaboratively build your family tree. I don't know if it can handle the complexities of the Chua clan (my grandmother led a complicated life! ;) ), but it isn't a bad way to start. The good thing about it is that it doesn't rely on everyone opting in, because you can fill in other people's details. And once you've gotten your family tree in place, you can share photos, look up birthdays, send messages, announce events, that sort of thing. Check it out!

Weekly report - February 17, 2008

http://sachachua.com/wp/2008/02/17/weekly-report-february-17-2008/Mon, 18 Feb 2008 04:35:29 +0000It's been a good week for experiments. I gave a presentation on Web 2.0 and the enterprise to a large financial institution, and I took responsibility for the second half of a Web 2.0 workshop at a publishing company. On a personal note, I tried outsourcing some of my online research to virtualworkdesk.com, ordering gifts (and a suit!) off eBay.ca, and entering data into Geni. Here's what my week looked like:

• Monday: PHP coding, rehearsed and delivered presentation on Web 2.0 • Tuesday: Continued working on social media guide; back-to-back meetings • Wednesday: Worked on PHP modules • Thursday: Delivered workshop • Friday: Continued working on social media guide; presented guide to internal consulting team • Saturday: Marathon shopping trip for pasalubong, little gifts to give to friends and family

My goals for next week are to:

• prepare articles and presentations for the two next talks on my horizon, which have both hit "urgent" status at the same time

• finish the audio and video modules • turn the social media guide over to internal consultants • get an idea of the help I can expect from a virtual assistant

Oh, and it would be nice to sort out Ledger envelope budgeting again... =)

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/19/you-have-received-a-painting-from-sacha-40/Tue, 19 Feb 2008 05:10:03 +0000

Page 86: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/19/you-have-received-a-painting-from-sacha-41/Tue, 19 Feb 2008 05:20:03 +0000

Spontaneous outbursts of baked goods

http://sachachua.com/wp/2008/02/19/you-have-received-a-painting-from-sacha-42/Tue, 19 Feb 2008 05:25:02 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/20/you-have-received-a-painting-from-sacha-43/Wed, 20 Feb 2008 22:20:05 +0000

Weekly review - Week ending February 24

http://sachachua.com/wp/2008/02/23/you-have-received-a-painting-from-sacha-44/Sat, 23 Feb 2008 14:35:07 +0000

New rule for presentations

http://sachachua.com/wp/2008/02/24/you-have-received-a-painting-from-sacha-45/Mon, 25 Feb 2008 03:15:03 +0000

Doodling

http://sachachua.com/wp/2008/02/24/you-have-received-a-painting-from-sacha-46/Mon, 25 Feb 2008 03:15:10 +0000

Speaker's block

http://sachachua.com/wp/2008/02/24/you-have-received-a-painting-from-sacha-47/

Page 87: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Mon, 25 Feb 2008 03:15:13 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/25/you-have-received-a-painting-from-sacha-48/Tue, 26 Feb 2008 01:10:05 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/25/you-have-received-a-painting-from-sacha-49/Tue, 26 Feb 2008 01:15:04 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/25/you-have-received-a-painting-from-sacha-50/Tue, 26 Feb 2008 01:25:03 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/26/you-have-received-a-painting-from-sacha-51/Tue, 26 Feb 2008 13:50:09 +0000

Headless chicken impression

http://sachachua.com/wp/2008/02/26/headless-chicken-impression-2/Tue, 26 Feb 2008 16:55:39 +0000Today is not my day. As it turns out, my presentation on "Blogging Your Way Out of a Job... and Into a Career" for the Concordia University Alumni Association is tomorrow evening, not Friday evening as I thought. (Next time, I should create a calendar entry while reading e-mail, instead of relying on my memory!) Apparently it's been quite a hit, with over 60 people registered and people pleading to get in. If I do this right, it might even result in more business for my team at IBM. (Must remember to put in a slide about who I am, and add something like that to the closing.) I wanted to print my handouts on business cards. Bringing home something physical from an event is a good way to remember to act on what you've learned. But the printer at home stubbornly refused to feed the Avery business card forms I picked up, and Staples.ca didn't seem to let me make totally custom business cards. Taking off on Jonathan Coulton's "Big Bad World One", I couldn't help but sing, "I quit, I'm done, I don't think it's going to turn out okay. It's no fair and it's no

Page 88: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

fun if every time it's gonna print the same way: Me zero, big bad printer one." So I threw up my hands and considered my backup plans. I could just point the audience to one URL and have them look up the resources from there, but there's something about taking a visible reminder home. What else could I do? Fortunately, I had plenty of blank index cards lying around, thanks to my experimentations with paper-based productivity planning. After much tweaking, I got the printer to print on index cards. The margins are off because the printer won't let me print less than an inch from the edge, but I limited the number of lines and the result looks deliberately balanced. Now all I have to do is actually build the page, update the presentation, rehearse it, and get everything sorted out. Oh, and do the rest of my day job, too. But something I've noticed--and I don't know how I learned to do this--is that even while part of me can flail wildly about in a headless chicken impression, part of me is always looking for the humor in the entire thing, part of me is always planning ahead and thinking of backup plans, and part of me just focuses on getting the work done.

Be like a duck. Calm on the surface, but always paddling like the dickens underneath.

Michael Caine, actor =)

Recent Talks

http://sachachua.com/wp/talks/Wed, 27 Feb 2008 00:56:02 +0000

Object 1

| Get your Presentation Pack

• New Media, New Generation Corporate Voices, Washington DC, September 9, 2008

• Networking 2.0: Blogging Your Way Out of a Job... and Into a Career Concordia University Alumni Association Wednesday, February 27, 2008

• Web 2.0 for the Enterprise [financial institution] February 2008 • ...

Check out my Slideshare for more publicly-available presentations!

Networking 2.0: Blogging Your Way out of a Job... and Into a Career

http://sachachua.com/wp/2008/02/27/20080227/Wed, 27 Feb 2008 23:00:56 +0000Blog for FREE on wordpress.com or blogger.com! Make a habit of writing at least once a week, and your

Page 89: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

blog will help you develop your passion, improve your skills, and build your network. Here are some ideas to help you get started:

1. Who are you? 2. What are your interests? 3. What are your goals? 4. What’s a typical day in your life? 5. How did you get started? 6. Share a recent challenge or success story! 7. Share a tip!

COMING SOON: The presentation and recording from the event Check this page on March 7 (Friday) for more news, or leave a comment below so that I can e-mail you when new tips are up! Connect with other people who attended this talk by leaving a comment! Put in your name, your e-mail address, and the address of your blog (ex: http://example.blogspot.com). Tell us what you thought about the presentation, and what you’d like to learn more about. Your e-mail address will not be shared or sold with anyone, and your name will be automatically linked to your blog. Check out other people’s comments and blogs to find out more. Good luck and have fun!

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/27/you-have-received-a-painting-from-sacha-52/Thu, 28 Feb 2008 04:50:04 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/02/29/you-have-received-a-painting-from-sacha-53/Fri, 29 Feb 2008 05:10:09 +0000

Why DemoCamp is one of my favorite networking events

http://sachachua.com/wp/2008/02/29/why-democamp-is-one-of-my-favorite-networking-events/Sat, 01 Mar 2008 00:42:27 +0000I love DemoCamp and the whole BarCampToronto scene. I've made all sorts of incredible connections there. Let me tell you a story from just this Monday's DemoCamp17, and you'll see why. It was towards the end of the DemoCamp pub night, past the bar's closing time. I headed over to say hi to Kaleem Khan, whom I hadn't talked with that evening. He was talking to a woman I didn't recognize, so I introduced myself and asked whether she had been to DemoCamp before. She introduced herself as Alex and said that this was her first DemoCamp and that her friend had told her about it. Kaleem joked that clearly nobody had told Alex that it would be a conference full of geeks. Alex laughed and said that she works with scientists, so geeks were extroverts in comparison. When she mentioned scientists, I perked up and told her that there was someone she really needed to met. I headed across the room and found Jamie McQuay chatting with a few other people. At the first break in the conversation, I kidnapped Jamie and steered him across the room to where Alex was sitting. I mentioned that Jamie was helping organize a SciBarCamp (an unconference for scientist-types), and I told Jamie about how the topic of scientists had come up. Jamie and Alex started chatting, and

Page 90: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

the next time I checked in on them, I heard Alex invite Jamie to get in touch with her to see if her organization might be interested in sponsoring SciBarCamp. How cool was that? That's a terrific example of the kind of connections I love making. By keeping my ears open, I can come across all these opportunities to connect the dots. If I know what people are interested in or are looking for, then I can connect them with the peolpe, ideas, or tools they need in order to make things happen. DemoCamp has been a consistently fantastic place for me to make those connections. Why? I think it's because of these reasons: People who go to DemoCamp are interesting. They're independent consultants, startup founders, and even the occasional big-company anomaly like me. They've all got something interesting about them, and they make it easy to find out what that interesting thing is. The demos and Ignite presentations are a terrific way to get the conversation started. High-energy, eye-opening demos put everyone in an optimistic and open mood, and do away with all the small talk about the weather. My favorite opener is, "So, which of the demos and Ignite presentations did you like the most?" From there, I can find out more about why people found them interesting and what else they're into. Plus, I can carry their compliments back to the speakers for extra karma points! I know or know of enough people to get network effects. I've reached the tipping point. I get economies of scale. When I meet new people, I can usually think of people they should get to know. If I don't know someone, I know the other connectors can help me find that person - and then I'll know them too. I'm on hugging terms with many DemoCamp regulars, and I feel warm and fuzzy about people there because I've gotten to know and admire them through their blog entries, presentations, comments, and e-mail. How can I connect even better at DemoCamp?

• Follow up: I need to ensure I have nothing scheduled for the evening after DemoCamp, or at the very least, I should have a quick e-mail ping ready to go as soon as I get home. BBDB was the best way for me to do that because I could keep notes on people and tie that into e-mail, so I might switch back to doing my mail in Gnus, even though Gmail has been really good to me!

• Give out business cards: This is mainly to increase the chance of follow up. I usually take the responsibility of e-mailing people, but it's better if they also have something physical that reminds them of our conversation. I used to print my own double-sided business cards, but my current printer can't handle the fine-cut business card templates. This is definitely worth getting a better printer. (Preferably one that can also do index cards.)

• Do another presentation: Hands-down, the best way to network at these events. People still remember the DemoCamp10 presentation I gave on Livin' la Vida Emacs. I'd love to prepare an Ignite presentation on networking at DemoCamp, and turn that into something that we can share on the DemoCamp signup page so that newbies can make the most of the experience.

How about you? Been to DemoCamp? What do you think?

Notes from "Networking 2.0: Blogging Your Way Out of a Job and Into a Career"; the experience of speaking

http://sachachua.com/wp/2008/02/29/notes-from-networking-20-blogging-your-way-out-of-a-job-and-into-a-career-the-experience-of-speaking/Sat, 01 Mar 2008 01:11:31 +0000

[mostly drafted right after I got home]

I just got back from a presentation I gave to the Concordia University Alumni Association on blogging your way out of a job into a career. My voice is a little hoarse and my feet are slowly getting reacquainted with the ground. No, seriously--I must remember not to wear those heels to presentations. But I really enjoyed sharing those stories and tips, and I'm glad that people found the presentation not only informative but also entertaining.

Page 91: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

What did I do well?

The combination of blogging, social networking, writing, and self-development in a single talk made this one really pop with passion. I love sharing my experiences and tips on social media because I can't wait to see what other people will do with it, and if there's anything I can do to help them get over that rut, that's awesome! This passion and all the practice I've had talking about these topics made it really easy to get up there and focus on making a connection.

I used the rule of three all over the place: passion, skills, and network; "I don't know what to do, I don't have the time, I don't know who'll read it;" remember, reflect, reach out; start a blog, share regularly, reach out. This fractal structure helped me prepare the presentation (not too long, not too short), remember what I was going to say, and show some semblance of order in the presentation.

I put in some effort and a few dollars into visually fixing up this presentation with stock illustrations from stockxpert.com. Most of my presentations have been plain text (white on a black background, usually), but I felt like giving graphics a try. The coordinated graphics I use helped make my presentation feel more fun for me. Practice will help me get better and better at communicating visually as well as verbally...

I rehearsed the entire talk while reading my speaker notes, recording it as an MP3. I looped over this recording during my commute today. This helped keep the topics in my mind. I also printed out a few pages of slide handouts (9 slides per page) to visually anchor my talk as I rehearsed it mentally. During the actual presentation, this practice helped me remember the key points I wanted to make for each slide. Giving myself permission to say things differently helped me not only avoid anxiety (which would have made it even harder to remember what I wanted to say!) but also work within that flexible framework to match the interest of the audience.

I built interactivity into the talk, with two networking breaks and a number of shows of hands. One of the things I love about speaking to a small audience is the challenge and experience of listening while I'm talking. I'm not always good at this. My own enthusiasm sometimes makes it hard for me to slow down! But the physical experience of listening to people's eyes, people's postures, people's smiles, feeling that itch in my hands and in my bones as I find myself attuned to their energy… Wow.

What can I do better next time? (Yes, see, I really do this!)

The key thing that will make this even better would be to make sure someone else is in charge of recording. ;) You know, someone who'll remember to bring fresh batteries instead of dead ones, someone who'll remember to actually start the voice recorder, someone who'll get all of that sorted out. When I'm out there, I'm just too caught up in the moment, in the opportunity to connect with people,

I could use some more planning. I'm glad that people felt comfortable asking me questions throughout the presentation. I completely forgot about defining what a blog is in the first place, silly me, and other things like that which I inevitably discover right after the projector's turned off. Such is life. Next time, I'll try listening to my recording with my newbie hat firmly on.

And I should probably bring along a fishbowl and collect people’s business cards or e-mail addresses so that I can make it easier to keep in touch after the talk! =)

Wicked Cool Emacs: BBDB: Keeping track of contact dates

http://sachachua.com/wp/2008/02/29/wicked-cool-emacs-bbdb-keeping-track-of-contact-dates/

Page 92: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sat, 01 Mar 2008 03:49:00 +0000

I hadn't realized just how much I missed my Big Brother Database until today. Three networking events packed into one week meant that I hadn't set aside enough time for follow up, and I felt my memories of the conversations getting a little hazy. Fortunately I'd taken some notes on my Palm, but I knew I had to get it into some kind of contact management system quickly, and Gmail Contacts just wasn't compelling enough for me. So it's back to Emacs, plain text files, and a surprisingly sophisticated contact manager.

I also promised to do some work on the book today, so everything dovetailed nicely.

The following bit of code helps me filter displayed contacts to show only the people I haven't contacted since a certain date. This is handy for remembering to keep in touch with old friends, for example. Or at least it would be handy if I used it more often and if I actually sent the letters that pile up in my e-mail drafts and my snail mail outbox... but at least it's a step in the right direction.

If you want to know who you have or haven't talked to in a while, you need to do two things. First, you need to keep track of when you talked to people. Second, you need to generate reports.

To be able to quickly add contact notes to BBDB records, add the following to your ~/.emacs:

ch6-bbdb-ping.el:

(define-key bbdb-mode-map "z" 'wicked/bbdb-ping-bbdb-record)(defun wicked/bbdb-ping-bbdb-record (bbdb-record text &optional date regrind) "Adds a note for today to the current BBDB record.Call with a prefix to specify date.BBDB-RECORD is the record to modify (default: current).TEXT is the note to add for DATE.If REGRIND is non-nil, redisplay the BBDB record." (interactive (list (bbdb-current-record t) (read-string "Notes: ") ;; Reading date - more powerful with Planner, but we'll make do if necessary (if (featurep 'planner) (if current-prefix-arg (planner-read-date) (planner-today)) (if current-prefix-arg (read-string "Date (YYYY.MM.DD): ") (format-time-string "%Y.%m.%d"))) t)) (bbdb-record-putprop bbdb-record 'contact (concat date ": " text "\n" (or (bbdb-record-getprop bbdb-record 'contact)))) (if regrind (save-excursion (set-buffer bbdb-buffer-name) (bbdb-redisplay-one-record bbdb-record))) nil)

You can then use z in BBDB buffers to add a quick note to the "contact" field of the current record. The date is automatically noted. You can create a note for a specific date by calling {{C-u wicked/bbdb-ping-bbdb-record}} with a prefix argument. For convenience, the suggested configuration binds this to "z", because it was one of the few unbound keys I could find. Use this after you meet, call, or e-mail people, and write down a short note about the conversation you had. You might find these notes useful later on.

If you met a number of people at an event in the past and you have Planner installed and loaded, you can use

Page 93: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

{{planner-timewarp}} to set the effective date to another date. To return to today, use {{M-x planner-timewarp nil}}.

To automatically add a datestamped copy of sent e-mail subjects to people's BBDB records, add the following to your ~/.gnus:

ch6-bbdb-message-add-subject.el:

(defun wicked/message-add-subject-to-bbdb-record () "Add datestamped subject note for each person this message has been sent to." (let* ((subject (concat (format-time-string "%Y.%m.%d") ": E-mail: " (message-fetch-field "Subject") "\n")) (bbdb-get-addresses-headers (list (assoc 'recipients bbdb-get-addresses-headers))) records) (setq records (bbdb-update-records (bbdb-get-addresses nil gnus-ignored-from-addresses 'gnus-fetch-field) nil nil)) (mapc (lambda (rec) (bbdb-record-putprop rec 'contact (concat subject (or (bbdb-record-getprop rec 'contact) "")))) records)))(add-hook 'message-send-hook 'wicked/gnus-add-subject-to-bbdb-record)

Now that you have the data, how can you use it to filter? Add the following to your ~/.emacs:

ch6-bbdb-show-only-no-contact-since.el:

(defun wicked/bbdb-show-only-no-contact-since (date &optional reverse records) "Show only people who haven't been pinged since DATE or at all.If REVERSE is non-nil, show only the people you've contacted on or since DATE.Call with a prefix argument to show only people you've contacted on or since DATE." (interactive (list (if (featurep 'planner) (planner-read-date) (read-string "Date (YYYY.MM.DD): ")) current-prefix-arg (or bbdb-records (bbdb-records)))) (let (new-records last-match timestamp omit notes) (while records ;; Find the latest date mentioned in the entry (let ((timestamp (wicked/bbdb-last-date (if (vectorp (car records)) (car records) (caar records))))) (if (if reverse ;; Keep if contact is >= date (null (string< timestamp date)) ;; Keep if date > contact (string> date timestamp))

Page 94: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(add-to-list 'new-records (if (vectorp (car records)) (car records) (caar records)) t))) (setq records (cdr records))) (bbdb-display-records new-records)))

(defun wicked/bbdb-last-date (rec) "Return the most recent date for REC or nil if none.Dates should be in the form YYYY.MM.DD. The first date in thenotes field and the first date in the contact field are used, sodates should be in reverse chronological order." (let* ((wicked/date-regexp "\\<\\([1-9][0-9][0-9][0-9]\\)\\.\\([0-9][0-9]?\\)\\.\\([0-9][0-9]?\\)\\>") ;; Get the first date mentioned in the notes field (notes-date (or (and (string-match wicked/date-regexp (or (bbdb-record-notes rec) "")) (match-string 0 (or (bbdb-record-notes rec) ""))) "0000.00.00")) ;; Get the first date mentioned in the contact field (contact-date (or (and (string-match wicked/date-regexp (or (bbdb-record-getprop rec 'contact) "")) (match-string 0 (or (bbdb-record-getprop rec 'contact) ""))) "0000.00.00"))) ;; Compare the two dates (or (if (string< notes-date contact-date) contact-date notes-date) "0000.00.00")))

To generate a report, use {{M-x wicked/bbdb-show-only-no-contact-since}} and specify the date. These functions are much easier to use with Planner's date-handling functions. Planner can read dates like "-1" (yesterday), "-7fri" (seven Fridays ago), "2" (the second of this month), "1.2" (January 2 in this year), and "2007.01.02" (January 2, 2007).

You can also flip the filter by using the universal prefix argument ({{C-u M-x wicked/bbdb-show-only-no-contact-since}}) to show only the people you've contacted since a certain date. This is good for knowing the size of your active network. Because the filter works on displayed records, you can combine it to find all the people you talked to last year but not this year. You can also combine it with other filters to find all the people you've marked as friends, but who you haven't talked to in three months. Then you can send a personalized e-mail or make a phone list, and get back in touch. And that's how you keep track of your contact dates!

Internet experiment #2: Ordering clothes - success!

http://sachachua.com/wp/2008/03/02/internet-experiment-2-ordering-clothes-success/Sun, 02 Mar 2008 18:10:45 +0000There are some things that most people would never think of buying from the Internet because they require such a personal fit: eyeglasses, clothes, and shoes. Having successfully ordered two pairs of eyeglasses from Zenni Optical with substantial savings, I decided to explore the second frontier: buying clothes off the Internet.

After four months of working in the corporate world, I found myself gravitating to a few favorite outfits: a gray pinstripe suit that I bought off the rack (about $40 because it was on sale) and invested about $70 in having it tailored to me, and a few combinations of a long-sleeved blouse, a V-neck sweater, pants matching the sweater, and a scarf matching the blouse. (See, Kathy, I'm getting the hang of this coordination thing...) I'm still not as sharply dressed as consultants in other practices, though, and there are some gaps in my wardrobe that I'm gradually filling in--such as a coordinated black suit.

Page 95: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I find it difficult to shop for clothes in brick-and-mortar stores. There just aren't that many clothes for short, slim people with small torsos and somewhat wider hips. It's frustrating to go through the entire Eaton Centre and find only a few outfits that merit a trip to the dressing room. I rarely find anything that fits off the rack, and the noisy crowd can feel overwhelming after a few hours.

It doesn't help that I shop with a very specific idea of what I want: a pair of oval red frames, a black pant suit in size 4 petite, a pair of beige pumps with a slightly rounded toe and a 1" to 1.5" square heel. I wish I could press a button to have the store reorganized by color and style instead of just by brand. In short, I want an Internet-like shopping interface. Bring on some faceted navigation.

So when I was shopping for gifts on eBay.ca, I took the opportunity to also search for petite size 4 pantsuits, and I was happy to find some that I wouldn't mind trying out. eBay is not known for good return policies, so I submitted bids that were low enough for me to charge to experience if things didn't work. As in my experiment with ordering eyeglasses of the Internet, I reasoned that if it didn't work, I wasted a little of money, but if it did, I could save a lot more time and money in the future. It was worth a try.

The first of my suits arrived the other day. I had to trek up to the post office to pay customs, but even with shipping and tax, the suit cost just about as much as the gray suit I picked up during one of the sales. I had ordered a double-breasted black suit, and it arrived in the condition described: new and all ready to go. In terms of fit, it was no worse than suits in stores. In terms of cost, it was decent. In terms of convenience, it was much better.

So there: shopping for clothes on the Internet is worth a try. =)

March 2008

Weekly review - week ending March 2, 2008

http://sachachua.com/wp/2008/03/02/weekly-review-week-ending-march-2-2008/Mon, 03 Mar 2008 01:58:44 +0000I feel a little flushed today, and I've been sniffling all weekend. After I finish this blog post, I'm going to go to bed.

• Monday: DemoCamp 17 was terrific. I liked Tom Purves' presentation on the state of wireless in Canada because the 5-minute Ignite talk was both visually appealing and energetically delivered. The Mozilla phenomenologist's presentation was also well-designed. Good stuff. Networking was lots of fun, too, although I have to confess that I still haven't followed up. Tomorrow, I promise.

• Tuesday: Mostly spent preparing for my talk on Networking 2.0: Blogging Your Way out of a Job and into a Career.

• Wednesday: Delivered the Networking 2.0 talk at the Concordia University Alumni Association event. Well-received. People loved the energy.

• Thursday: GBS Foundations dinner. Thoughts on this sometime.• Friday: Continued working on social media guide. Volunteered to help with internal blogging strategy

for my team.

Next week is going to be crazy. We're flying to the Philippines on Saturday, so I have a bunch of things to take care of before then. To wit:

• Wrap up my projects

Page 96: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Plan for the four conferences I'm going to in April - doublecheck accommodations, travel plans, speaker review, etc. (presenting at Best Practices Conference, Blue Horizon, and Technical Leadership Exchange.. augh!)

• Turn over metaverse event planning to someone• Figure out how to turn on vacation mail• Pick up currency• Put mail on hold• Get my laptop sorted out• Inch along on my book

Waah.

Trying out the high-flying lifestyle

http://sachachua.com/wp/2008/03/04/you-have-received-a-painting-from-sacha-54/Wed, 05 Mar 2008 03:20:06 +0000

I have to confess that I'm more than a little anxious. That's a lot of time spent in conference centers and airports.

What the heart has once owned and had, it shall never lose

http://sachachua.com/wp/2008/03/04/you-have-received-a-painting-from-sacha-55/Wed, 05 Mar 2008 03:30:04 +0000

You know what it's like to make a choice you really don't want to make, but have to because it's the right thing to do? I will probably not be bringing my cat over from the Philippines.

It is the choices we make that show who we truly are, far more than our abilities

http://sachachua.com/wp/2008/03/04/you-have-received-a-painting-from-sacha-56/Wed, 05 Mar 2008 03:35:04 +0000

"It is the choices we make, Harry, that show who we truly are, far more than our abilities," said Albus Dumbledore to Harry Potter in JK Rowling's The Philosopher's Stone. It's always been a little intimidating, having all these doors open. It can be a struggle to find and listen to the small voice of my intuition when I'm surrounded by so many good suggestions and opportunities. I need to make sure that I'm growing at a sustainable rate, that I don't overcommit or burn myself out, that I don't lose myself. I need to make sure my priorities are right, and that I actually follow them.

He loves his new white hat

http://sachachua.com/wp/2008/03/04/you-have-received-a-painting-from-sacha-57/Wed, 05 Mar 2008 04:25:03 +0000

Page 97: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Working on the book

http://sachachua.com/wp/2008/03/06/working-on-the-book/Thu, 06 Mar 2008 05:22:48 +0000Now that I have an idea of what a good Wicked Cool Emacs book chapter looks like, I find it much easier to write and edit chapters. I've just finished revising my first three chapters based on my editor's feedback, and they will be finding their way to my technical reviewer soon. Bursty productivity indeed. Oh, that and productive application of structured procrastination... =)

Wow. Physics can be phun.

http://sachachua.com/wp/2008/03/06/wow-physics-can-be-phun/Fri, 07 Mar 2008 03:58:08 +0000Props to Michael McGuffin for this awesome find: Phun - 2D physics sandbox. Watch the demo or download

it and start playing. Object 2

Wow. Physics can be phun.

http://sachachua.com/wp/2008/03/06/wow-physics-can-be-phun-2/Fri, 07 Mar 2008 04:03:55 +0000Props to Michael McGuffin for this awesome find: Phun - 2D physics sandbox. Watch the demo or download

Page 98: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

it and start playing. Object 3 This makes me want a Tablet PC.

You have received a painting from Sacha

http://sachachua.com/wp/2008/03/06/you-have-received-a-painting-from-sacha-58/Fri, 07 Mar 2008 04:30:04 +0000

Generational differences

http://sachachua.com/wp/2008/03/07/generational-differences/Sat, 08 Mar 2008 01:05:09 +0000

One last big post before I focus on my vacation preparations.

I've been thinking a lot about generational differences because of my upcoming presentation on I.B.Millennials. I had a hard time figuring out how to speak about my generation without dealing with too many generalizations, and what to say to people who think that oh, it's just about age. Today, I finally came to understand why I want to talk about this topic. It's not about drawing lines, it's about connecting people.

No one will argue that society today is very different from society in the 1950s or in the 1900s, and that there have been massive technological and social changes. One way to see this is to look at ads and newspaper articles from fifty years ago, many of which would be unacceptable today.

Why is a discussion about generational differences important? You have lived through these changes and adapted your ways of thinking to them, but for people of my generation, this is all we know. We will have all sorts of assumptions. We will take all sorts of things for granted. We will understand some things intuitively, and be stumped by others. ("What was life like before the Net? before mobile phones? What's job security? Why would you want to work for just one company? Wouldn't that be boring? If I can do my job in half the time it takes other people to do it, why shouldn't I get the rest of the day off?") Perhaps some of these differences come with being young. Perhaps some of these differences come with growing up in societies that are radically different from the ones you grew up in. Perhaps we face our own questions and challenges that we are only now learning how to articulate.

Page 99: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Most of us will have neither the experience nor the perspective to recognize these differences or work around them. That's why it's important for leaders to be aware of trends, to spot opportunities and weaknesses, to bring people together. And that's why this conversation about generational differences is important: not to draw lines, not to praise one generation over the other, but to recognize potential conflicts and work around them, and to build on each other's strengths.

I don't want to make excuses for my generation. I want people to be able to challenge us to be all we can be instead of shrugging things off with "Oh, they're kids, they'll change as they grow up." But the world can't wait until we grow up. We can't wait until people of my generation are thirty or forty, settled, 'normal'. We are here and there are more of us coming; how can we all work together more effectively?

People of my generation are coming into a workplace that's very different from the workplace you started in. The long time between generations can make companies forget the lessons learned the last time around. Every generation brings unique strengths and weaknesses. That does not make a discussion of those challenges irrelevant. Indeed, it shows that if organizations can learn to manage this transition well, they will reap the benefits with succeeding generations.

And why is making the most of this generation important? Many organizations recognize a need for massive cultural change when it comes to adopting new collaborative and social technologies that can require not only changes in behavior, but even changes in corporate culture and values. It reminds me of the very things that bewilder many parents - my generation's reliance on electronic communication and virtual social networks, collaboration despite previous norms in education and other areas, and an inescapably globalized world. If organizations can make the most of our energy and our skills, then they can ride that wave into organization-wide cultural change. If not, then they will miss opportunities that their competitors will take.

Generational differences is a political topic, an emotional topic. No one likes being reminded that they grow older each year. It is easy to dismiss it with the same words used to dismiss the voice of youth: "They'll grow up eventually." But if we can harness those differences to bring us to where we want to go as an organization and as a society, if we can anticipate and deal with the potential conflicts that many might encounter, then wouldn't that be a valuable conversation?

I need to revise my TLE presentation. I've just found the kernel of passion in my talk. I'm not going to have the time to link this to all the conversations happening around this topic, so please feel free to cross-reference the other great discussions happening around this. But anyway, that's what I had to say.

You have received a painting from Sacha

http://sachachua.com/wp/2008/03/08/you-have-received-a-painting-from-sacha-59/Sat, 08 Mar 2008 05:55:04 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/03/08/you-have-received-a-painting-from-sacha-60/Sat, 08 Mar 2008 05:55:21 +0000

Page 100: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Vacations are essential

http://sachachua.com/wp/2008/03/08/you-have-received-a-painting-from-sacha-61/Sat, 08 Mar 2008 05:55:46 +0000

(color balance on my DS is a little off... How can I calibrate the color profile of this thing?)

You have received a painting from Sacha

http://sachachua.com/wp/2008/03/08/you-have-received-a-painting-from-sacha-62/Sat, 08 Mar 2008 05:55:50 +0000

Wicked Cool Emacs: BBDB: Use nicknames and custom salutations

http://sachachua.com/wp/2008/03/24/wicked-cool-emacs-bbdb-use-nicknames-and-custom-salutations/Mon, 24 Mar 2008 08:26:48 +0000

I like starting my e-mail with a short salutation such as "Hello, Mike!", "Hello, Michael", or "Hello, Mikong!", but it can be hard to remember which nicknames people prefer to use, and calling someone by the wrong name is a bit of a faux pas. Sometimes people sign e-mail with their preferred name, but what if you haven't sent e-mail to or received e-mail from someone in a while? In this project, you'll learn how to set up my BBDB to remember people's nicknames for you using a custom "nick" field, and to use those nicknames when replying to messages in Gnus or composing messages from my BBDB.

The nickname code worked so well that I started thinking of what else I could customize. It was easy to go from nicknames to personalized salutations. This hack started because one of my friends is from Romania, so I thought I'd greet her in Romanian with "Salut, Letitia!" instead of just "Hello, Letitia!". The code in this project uses a "hello" field to store these salutations in your BBDB.

To set up personalized nicknames and salutations, add the following code to your ~/.emacs:

(defvar wicked/gnus-nick-threshold 5 "*Number of people to stop greeting individually. Nil means always greet individually.") ;; (1)(defvar wicked/bbdb-hello-string "Hello, %s!" "Format string for hello. Example: \"Hello, %s!\"")(defvar wicked/bbdb-hello-all-string "Hello, all!" "String for hello when there are many people. Example: \"Hello, all!\"")(defvar wicked/bbdb-nick-field 'nick "Symbol name for nickname field in BBDB.")(defvar wicked/bbdb-salutation-field 'hello "Symbol name for salutation field in BBDB.")

(defun wicked/gnus-add-nick-to-message () "Inserts \"Hello, NICK!\" in messages based on the recipient's nick field." (interactive) (save-excursion (let* ((bbdb-get-addresses-headers ;; (2) (list (assoc 'recipients bbdb-get-addresses-headers))) (recipients (bbdb-get-addresses nil gnus-ignored-from-addresses

Page 101: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

'gnus-fetch-field)) recipient nicks rec net salutations) (goto-char (point-min)) (when (re-search-forward "--text follows this line--" nil t) (forward-line 1) (if (and wicked/gnus-nick-threshold (>= (length recipients) wicked/gnus-nick-threshold)) (insert wicked/bbdb-hello-all-string "\n\n") ;; (3) (while recipients (setq recipient (car (cddr (car recipients)))) (setq net (nth 1 recipient)) (setq rec (car (bbdb-search (bbdb-records) nil nil net))) (cond ((null rec) ;; (4) (add-to-list 'nicks (car recipient))) ((bbdb-record-getprop rec wicked/bbdb-salutation-field) ;; (5) (add-to-list 'salutations (bbdb-record-getprop rec wicked/bbdb-salutation-field))) ((bbdb-record-getprop rec wicked/bbdb-nick-field) ;; (6) (add-to-list 'nicks (bbdb-record-getprop rec wicked/bbdb-nick-field))) (t (bbdb-record-name rec))) ;; (7) (setq recipients (cdr recipients)))) (when nicks ;; (8) (insert (format wicked/bbdb-hello-string (mapconcat 'identity (nreverse nicks) ", ")) " ")) (when salutations ;; (9) (insert (mapconcat 'identity salutations " "))) (when (or nicks salutations) (insert "\n\n"))))) (goto-char (point-min)))

(defadvice gnus-post-news (after wicked/bbdb activate) "Insert nicknames or custom salutations." (wicked/gnus-add-nick-to-message))

(defadvice gnus-msg-mail (after wicked/bbdb activate) "Insert nicknames or custom salutations." (wicked/gnus-add-nick-to-message))

(defadvice gnus-summary-reply (after wicked/bbdb activate) "Insert nicknames or custom salutations." (wicked/gnus-add-nick-to-message))

After you add this code, you can store personalized nicknames and salutations in your BBDB. Nicknames and salutations will be looked up using people's e-mail addresses. While in the *BBDB* buffer, you can type C-o (bbdb-insert-new-field) to add a field to the current record. Add a "nick" field with the person's nickname, or a "hello" field with a custom salutation. When you compose a message to or reply to a message from that person, the salutation or nickname will be included. If no nickname can be found, the recipient's name will be used instead.

A number of variables can be used to modify the behavior of this code(1). For example, you may or may not want to greet 20 people individually. The default value of wicked/gnus-nick-threshold is to greet up to four people individually, and greet more people collectively. If you always want to greet people individually, add (setq wicked/gnus-nick-threshold nil) to your ~/.emacs. If you want to change the strings used to greet people individually or collectively, change wicked/bbdb-hello-string and wicked/bbdb-hello-all-string. If you want to store the data into different fields, change wicked/bbdb-nick-field and wicked/bbdb-salutation-field, but note that old data will not be automatically copied to the new fields.

Page 102: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Here's how the code works. First, it retrieves the list of addresses from the header(2). If there are more addresses than wicked/gnus-nick-threshold, then wicked/bbdb-hello-all-string is used to greet everyone. If not, each recipient address is looked up. If the recipient cannot be found in your BBDB, then the recipient's name or e-mail address is used(4). If there is a personalized salutation, it is used(5). If there is a nickname, it is used(6). If the person has a record but neither salutation or nickname, then the name of the record is used(7). After all recipients have been processed, the names are added to the message(8), followed by the salutations(9). This function is added to the different Gnus message-posting functions, so it should be called whenever you compose or reply to messages.

You can use BBDB to personalize even more. Check out "Project XXX: Personalize signatures" for more ideas.

Jetlag-assisted wakefulness

http://sachachua.com/wp/2008/03/24/jetlag-assisted-wakefulness/Mon, 24 Mar 2008 08:27:35 +0000I was out like a light last night at maybe 8:00 or so. Jetlag. Today I woke up at 3:30. I meant to stay in bed until at least 4:00, but I felt time slipping past, and I wanted to do something with it. That's okay. Maybe I can turn this into a jetlag-assisted early-morning wakeup. I hear many productive writers wake up really early, write, and then go about the rest of the day.

I spent most of yesterday putting together a photo book. There were many memories omitted because we didn't take pictures. I may work on something a little more verbose some other time. Still, it's not a bad first photo book. There, that's one new thing I did this week that I've never done before.

What are my goals for this week?

• I need to finish and rehearse the two talks I'll be giving over the next two weeks.• I need to prepare for all the networking opportunities by having business cards printed and by getting

a card scanner.• I need to finish my article on personal finance with ledger.• I want to develop a blogging plan for the various blogs I need to contribute to.• I want to write about 4000 words for my book. My goal is to finish the raw material for the chapter on

BBDB.• I want to exercise first thing every morning, slowly inching up what I can do. I'm keeping track of my

progress on a chart in the kitchen.

That should be enough for starters. =)

Vision + Value + Voice = Connection

http://sachachua.com/wp/2008/03/24/vision-value-voice-connection/Mon, 24 Mar 2008 10:17:38 +0000Gary Brown e-mailed me this insightful manifesto from Michael Lee Stallard, an expert on client and employee engagement. In it, Michael describes the key ingredients of a connection culture: vision, value, and voice. More and more companies are focusing on developing deep, rich connections between their employees and their customers, and this document has a number of good examples of the benefits of this approach. Check it out at ChangeThis :: The Connection Culture: A New Source of Competitive Advantage.

Page 103: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Optimizing my day

http://sachachua.com/wp/2008/03/25/optimizing-my-day/Tue, 25 Mar 2008 11:28:48 +0000

Maybe there's some truth to the advice, "Early to bed and early to rise makes a man healthy, wealthy, and wise." Thanks to jetlag, I've been up uncharacteristically early. I like the new rhythm my day has taken. Before this jetlag-assisted early start, I used to stumble out of bed, scarf down a quick breakfast, and head to the office. Waking up was a gradual process, and it took me about an hour or so to warm up for more creative work. After I returned from the office, I tried to squeeze in some personal creative time in the evenings. I found it difficult to write when my brain was tired from work. Finding the time to exercise was low on my list, as it took me away from other things I would rather be doing. Yesterday, I simply couldn't stay in bed past 3:30 in the morning. That gave me plenty of time to exercise, plan my day and my week, and write a thousand words for my book. I arrived at the office at 8 o' clock and worked on my most important tasks. Because I had breakfast earlier, I got hungry earlier, too. Fortunately, I had brought brownies from the Philippines, and that helped me last until lunch time. I felt myself winding down in the afternoon, so I worked on some more routine tasks. When I got home, I spent some time tidying up and chatting with other people. This was a good way to relax and get ready to sleep. I was asleep by 8. Today I'll find out if I can repeat that rhythm. This morning, I woke up at 4:30. I prepared oatmeal, then exercised while the oatmeal simmered. Exercising first thing in the morning meant that I woke up quickly and with lots of energy. I even found the time to bake peanut butter cookies. The only hiccup was that I had some filesystem problems with my laptop, so I didn't get around to writing as much as I wanted. I spent some time sketching instead. Tonight, I'll see if preparing breakfast and lunch in the evening is a good way to use my downtime to free up some of my personal creative time. Tomorrow, I'll set my alarm clock for even earlier. I'd also like to move my morning writing session earlier, perhaps even before breakfast. Kaizen: relentless improvement.

Morning Pages

http://sachachua.com/wp/2008/03/26/morning-pages/Wed, 26 Mar 2008 08:13:56 +0000

• Kathryn Everest has the most vivid figures of speech I know. Yesterday, she described social media adoption as "You can hear the rickets of the rollercoaster." Beautiful.

• I woke up at 3:30 today. Did 53 jumping jacks, 23 semi-pushups, 23 crunches, 8 dips, and 34 leg raises - all one up from yesterday. I keep having to rest during the leg raises, maybe because they're at the end of the exercise and I'm tired. Or at least my muscles want a break - the rest of me is up and raring to write.

• I finally ordered personalized business cards yesterday. They won't make it in time for my first two conferences, but they'll be pretty handy during the rest of the conferences. I like using business cards and index cards as handouts during presentations, so I still want a color inkjet printer so that I can make my short-run cards. Shipping would get pretty expensive if I keep ordering custom business cards for each presentation. The Canon Pixma ip3000 looks ideal, but FutureShop only stocks the ip4500. Wish it did duplex index cards, though. Is any printer actually capable of doing so? Please tell me before I head to FutureShop tomorrow. =)

• Those high-protein breakfasts we had in the Philippines might be a good idea after all. Oatmeal at 5 in

Page 104: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

the morning vanishes by 9. I finished both the carrot sticks and the peanut butter cookies way before lunch. Today I'll try cooking garlic rice and longganisa, of which many varieties are available at the T&amp;T Supermarket. Yay!

• I'm thinking of setting aside some money every month for shared experiences - you know, go out and do something with people. Pottery lessons? A photography walk? A weekend getaway? Fortunately, there are now all sorts of experience sellers: Xperience Days, Virgin Experience Days, Cloud 9 Living... There's also Perfect Day Gifts here in Toronto. Hmm...

Three tips for long flights

http://sachachua.com/wp/2008/03/26/three-tips-for-long-flights/Wed, 26 Mar 2008 12:12:08 +0000Flying to the other side of the world means almost a full day in transit. Here are three tips to help you get through your next long flight:

• Drink plenty of water. It's easy to forget to drink water on a plane. I usually ask the flight attendants for two glasses of water. This has the side effect of also making you stand up and exercise once in a while, which is good for avoiding deep-vein thrombosis.

• Bring noise-isolating earphones. An eye-mask is also helpful. You can usually plug the earphones into airline seats, giving you better audio than the earphones provided by the airline.

• Bring a variety of things to do. A pen, a pad of paper, and an MP3 player will keep you busy throughout the flight.

How do you fly over the ocean?

Morning pages

http://sachachua.com/wp/2008/03/27/morning-pages-2/Thu, 27 Mar 2008 08:00:10 +0000

• Yesterday, I got up early and made garlic fried rice, longganisa, and scrambled eggs. The high-protein breakfast worked! I didn't get hungry until about lunchtime, which meant that I didn't dig into my emergency stash of peanut butter cookies. This is good. I'm going to make garlic rice, breakfast sausages, and scrambled eggs today. I should pick up some buttermilk so that I can make pancakes.

• I still need to figure out what to do about my short-run business cards, as no card-printing business will take runs of 50, much less do them in less than a week. I'm leaning towards printing on card stock and doing the cutting myself. I'm going to see if I can use the Xacto knives we already have. If not, time to spring for one of those big rotary cutters...

• Yesterday's mentoring chat with David Singer was a lot of fun. I enjoyed being able to talk about some of the things I was excited about, such as the conferences I'm attending next week. He gave me a useful way to think about what I like to do, too: I'm a pollinator. Interesting...

• Despite going to bed at 10 last night, I was up at 3:30 again this morning. A little sleepier than the previous four days, but I wanted to keep my schedule more than I wanted a few more hours of sleep. I exercised again this morning. This is good. =)

• I like this. Working at the office from 8 to 4-ish means that I don't have to squeeze into the subway and I can take advantage of the quiet times at the office.

• I'm still looking for a better blog editor under Linux. Something that can handle posting dates and

Page 105: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

multiple blogs would be nice. • Work continues on my Ledger article. I wrote 771 words in one hour yesterday, and that's just all

about the envelope budgeting. I'm going to finish that section and start on regular budgeting today. It's kinda funny how I write backwards. I started working on the second-to-the-last chapter of my book, and I'm moving towards earlier chapters. I started at the second-to-the-last part of this article, and I'm moving towards the beginning. Maybe it's because that allows me to think about where I want people to be after they finish reading my article, and then work backwards until I get them there. It intimidates me less than starting from the beginning and figuring out where I want to take people.

• I've brainstormed a list of topics for my work blog, and hope to write enough of them to schedule posting over the two weeks that I'll be away. It's like dipping a toe into the problogging life. If I plan the topics well, then I'll get to learn and write about things I wanted to learn anyway. Also, I'm still looking for a terrific outline program for the Palm. Hmm...

• Life is great. =)

Weekly report

http://sachachua.com/wp/2008/03/30/weekly-report-3/Sun, 30 Mar 2008 18:12:10 +0000One week on the ground--that's all I have in between flights. We got back from a two-week vacation in the Philippines. I was glad to see that I'd tied everything up neatly before I left and things had gone on in my absence. Between catching up and getting ready for my next set of flights, my week was just packed (but in a very good way). Here's what happened:

• I made my first photobook. Well, I didn't bother with captions or anything... Just dumped all the pictures into Picasa, did a little photo correction, uploaded them to Shutterfly, and organized them into roughly logical groups. We'll see how well that worked when the photobooks arrive.

• The jetlag-assisted early start was terrific for my productivity. Unfortunately, it didn't last all week. A few late evenings set me back to my pre-trip schedule. At least I've tasted the productivity of an early-morning schedule. If I can get away with following that schedule during the next few weeks' conferences, I think that would be awesome. If late-night networking means I can't get up at 3:30 or 4:00 without zombie-ing out during the conferences sessions, I'll stick with the usual day schedule, and I'll try going back to an early schedule after this month of conferences.

• Most of my week was spent doing internal work for my team, preparing for the various conferences that are coming up. I managed to do a little client work, too. I feel reasonably happy with my preparation for the next few conferences.

• I finished my article on personal finance with Ledger and Gnuplot for the Linux Journal. Hooray!

Next week, I'm flying to IBM Palisades in New York for the Best Practices Conference, and then to Florida for the Technical Leadership Exchange. If I can survive both conferences with plenty of networking opportunities and without falling flat on my face during my presentations, I think I'll count that as a win.

April 2008

Best Practices Conference - April 1, Day 2

http://sachachua.com/wp/2008/04/01/best-practices-conference-april-1-day-2/Tue, 01 Apr 2008 11:37:53 +0000

I feel much less intimidated now. That Best Practices conference is small, almost cozy. Thanks to social

Page 106: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/01/you-have-received-a-painting-from-sacha-63/Tue, 01 Apr 2008 12:40:06 +0000

Weekly review: March 31 to April 6

http://sachachua.com/wp/2008/04/06/weekly-review-march-31-to-april-6/Sun, 06 Apr 2008 14:08:44 +0000

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

Page 107: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/06/tle2008-essential-problem-solving-skills-that-will-shorten-a-project-dick-orth/Mon, 07 Apr 2008 03:59:47 +0000

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

Page 108: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/06/tle2008-networking-a-workshop-in-getting-the-most-from-the-tle-jim-de-piante-part-1-of-2/Mon, 07 Apr 2008 04:01:53 +0000

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.

Page 109: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

Don't know where to start

http://sachachua.com/wp/2008/04/11/dont-know-where-to-start/Fri, 11 Apr 2008 09:45:01 +0000When 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

http://sachachua.com/wp/2008/04/11/tle-2008-ibmillennials-the-net-generation-and-those-who-recruit-hire-work-with-manage-and-sell-to-us/Fri, 11 Apr 2008 15:27:18 +0000Last 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

Page 110: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/12/wicked-cool-emacs-bbdb-set-up-bbdb/Sat, 12 Apr 2008 19:10:14 +0000

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:

Page 111: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

cvs -d :pserver:[email protected]:/cvsroot/bbdb logincvs -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:

autoconf./configuremake autoloadsmake 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

http://sachachua.com/wp/2008/04/12/wicked-cool-emacs-bbdb-work-with-records-2/Sat, 12 Apr 2008 19:21:58 +0000

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

Page 112: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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 1Street 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 LocationShort identifier for phone number (Home, Office, etc.) - tab completion available. Leave blank if you have no phone information, or if you are done.

Home

PhonePhone 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-

Page 113: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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 "job".

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 (bbdb-delete-current-field-or-record).

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

http://sachachua.com/wp/2008/04/12/wicked-cool-emacs-bbdb-import-csv-and-vcard-files/Sat, 12 Apr 2008 22:19:11 +0000If 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: ch6-bbdb-import-csv-buffer.el:

(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"

Page 114: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

"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) name-search (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 (progn ;; 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) (cond ((string= (or (bbdb-record-company record) "") "") (bbdb-record-set-company record j)) ((string= (bbdb-record-company record) j) nil) (t (bbdb-record-set-notes record (concat "Noticed change from job title of " (bbdb-record-company record) "\n" (bbdb-record-notes record))) (message "%s: Noticed change from job title of %s to %s" (or name (concat firstname " " lastname))

Page 115: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(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 (wicked/lookout-bbdb-create-entry (or name (concat firstname " " lastname)) (concat job ", " company) net addrs phones notes otherfields)))) record)) (defun wicked/lookout-bbdb-create-entry (name company net addrs phones notes &amp;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)))) otherfields) record)))

(defun wicked/bbdb-import-csv-buffer () "Import this buffer." (interactive) (let ((lookout-bbdb-mapping-table wicked/lookout-bbdb-mapping-table-outlook)) (bbdb-display-records (mapcar 'wicked/bbdb-import-csv-line (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)

Page 116: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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 &amp;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 ona 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) (save-restriction (narrow-to-region beg end) (save-match-data ;; 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"))

Page 117: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(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 company net nil ;; Skip addresses phones ;; Include phones notes))) (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

http://sachachua.com/wp/2008/04/12/faster-mail-with-emacs/Sun, 13 Apr 2008 00:57:36 +0000I 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!

http://sachachua.com/wp/2008/04/12/thats-my-dad/Sun, 13 Apr 2008 01:03:27 +0000Beauty 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

http://sachachua.com/wp/2008/04/14/weekly-review-april-13-2008/Tue, 15 Apr 2008 03:18:43 +0000Another week of conferences passed by in a blur. There were so many good stories; I hope I can reconstruct

Page 118: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/15/sketches-from-the-web-20-summit/Wed, 16 Apr 2008 01:30:04 +0000

blue horizon 2008: My first IBM keynote!

http://sachachua.com/wp/2008/04/23/blue-horizon-2008-my-first-ibm-keynote/Wed, 23 Apr 2008 22:00:36 +0000

Page 119: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

Page 120: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/23/when-i-grow-up-im-going-to-present-like-steve-jobs/Wed, 23 Apr 2008 22:29:24 +0000

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

Object 4 When I grow up, I'm going to present like Steve Jobs.

Technorati Tags: presentation,presentation-skills,someday,communication

Addicted to blogging?

http://sachachua.com/wp/2008/04/25/addicted-to-blogging/Fri, 25 Apr 2008 20:26:05 +0000

Page 121: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/25/you-have-received-a-painting-from-sacha-64/Sat, 26 Apr 2008 02:40:02 +0000

You have received a painting from Sacha

http://sachachua.com/wp/2008/04/26/you-have-received-a-painting-from-sacha-65/Sun, 27 Apr 2008 03:10:05 +0000

Weekly review: Week ending April 27, 2008

http://sachachua.com/wp/2008/04/27/weekly-review-week-ending-april-27-2008/Sun, 27 Apr 2008 23:06:58 +0000

Page 122: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/04/28/you-have-received-a-painting-from-sacha-66/

Page 123: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Tue, 29 Apr 2008 02:05:03 +0000

Restructuring Presentations: The Leadership Journey

http://sachachua.com/wp/2008/04/29/restructuring-presentations-the-leadership-journey/Tue, 29 Apr 2008 19:52:50 +0000

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?

Page 124: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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. Influence5. E.F. Hutton

How do you become a leader?10. Connection3. Process7. Respect6. Solid ground14. Buy-in

What can hold you back or move you forward?1. The lid17. Priorities19. Timing11. Inner Circle18. Sacrifice

What do you do as a leader?8. Intuition4. Navigation9. Magnetism16. Big Mo [Momentum]15. Victory20. Explosive growth

Where do you go next?12. Empowerment13. Reproduction21. 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

Page 125: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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!

May 2008

Weekly review: Week ending May 4, 2008

http://sachachua.com/wp/2008/05/04/weekly-review-week-ending-may-4-2008/Sun, 04 May 2008 22:46:21 +0000Last week:

• Posted the last of my notes from my conference, adding the other tips people shared from my packed session on "The Top 10 Web 2.0 Tools Every IBM Consultant Should Try"

• Did community consulting for several internal groups • Prepared for two teleconference presentations on Web 2.0 next week • Got my internal login problems resolved, hooray! • Realized that intranets don't need A-lists, and that concentrating on celebrities can actually be harmful

- must blog about this later • Submitted the revised 7th chapter of my Wicked Cool Emacs book after some frustration about how

to write about moving targets • Watched Joe versus the Volcano and a lot of episodes of Human Weapon with W- and J-. • Read through a fair bit of Prince Caspian and devoured a number of other books as well. • Tried to figure out how to do surveys in Lotus Notes. No luck. • Met a new mentor. • Prepared spreadsheets of my finances - doing well =) • Realized teleconferences will probably be a big part of my life, so I might as well get good at them ;)

Next week:

• Two teleconference presentations • Client work • More progress on my permanent residency application • My first meeting with a financial advisor - hence the spreadsheets • More yoga • Another article for chapter 6 of Wicked Cool Emacs book • Driving lessons

Page 126: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Kaizen Presentations: Web 2.0 and the University

http://sachachua.com/wp/2008/05/07/kaizen-presentations-web-20-and-the-university/Wed, 07 May 2008 19:00:42 +0000

I'm still buzzing from the first client teleconference presentation I made. I gave a brief overview of Web 2.0 and universities.

Here's what I learned because I did it well:

• Energy and excitement really helps. I focused on topics I was passionate about, picked highlights that I wanted to share, and told myself not to be intimidated by the collective IQ in an audience I couldn't see.

• Standing up is good. It makes it easier to project more energy and pretend to be giving an actual presentation. This also makes it easier to gesture.

• If you need to use the handset, use your hand to hold it against your ear instead of scrunching your neck. This not only saves you from a sore neck, but also allows you to improve your breathing. If you have a noise-cancelling headset, use that instead. I don't have one of those yet.

• If you're running out of preparation time, practice your opening and closing, run through middle parts quickly, then go back and practice enough of your opening to give you a confident start. It's important to make a good first impression. Not only does the primacy effect mean that people will remember the beginning of your presentation more than the following parts, but a strong start will give you confidence and make the rest of the presentation flow. A strong close that recaps important points and energizes people is also very helpful. Things in the middle will come to you once you get into the flow.

• Upload the presentation to Sametime Unyte instead of sharing your screen. Not only will this be faster for your audience, but you'll also be less worried about random things popping up. (It's still a good idea to set Sametime to Do-Not-Disturb or something similar, though.)

• Call in and start recording the Unyte presentation at least ten minutes before the start of your session. Things get really hectic right before the presentation. It's easier to spend 10 minutes just waiting on the phone than to try to remember to set up all of your recording while the organizer's announcing you.

• Check your social network for resources. Cattail was really handy. =) Also, thanks go to Stephen Perelgut for links and de-stressing!

Here's what I can do to make things even better:

• Bring a glass of water. No stage doesn't mean no stage fright. • Create an activity template to make sure I remember to do everything. I'm starting to believe in

Activities - I used it as a last-minute checklist for myself. • Make sure I get a quick brief from the organizer as early as possible. I went down the wrong path

with my first draft. Fortunately, the client rep briefed me last Tuesday, so I spent the rest of the day (and the night) hurriedly revising the presentation. It came out nicely.

• Reserve a room. I hadn't reserved a room because I was planning to take one of the smaller non-bookable rooms, but all of those rooms were full. Moving to the "think bar" near the windows didn't help. I should book a conference room. Even if the room is more space than I need, using that space is better than distracting more than six people. This will also minimize distractions from people asking me to quiet down. ;)

• Keep a library of materials. I need a good system for organizing slides, images, stories, and so on.

Page 127: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Happy! =D

Gen Y Growing Up: My first chat with a financial planner

http://sachachua.com/wp/2008/05/07/gen-y-growing-up-my-first-chat-with-a-financial-planner/Thu, 08 May 2008 02:24:08 +0000

Another milestone! Today, I consulted a financial planner for the first time. I'd been meaning to find a financial planner who could review my setup and suggest other best practices, and I learned a lot from the session.

When I told the financial planner how I'd maxed out my registered retirement savings plan, she was impressed, and suggested looking into corporate class funds. They're taxed a little differently than regular mutual funds, and can be more tax-efficient than regular funds when outside an RRSP. I took the literature and promised to read up on it. Based on this Globe and Mail article about corporate class funds, it seems that corporate class funds are good for active investors who like switching in and out of funds, and not so good for buy-and-hold investors who favor index funds because of tax efficiency and low management expense ratios. (TD Canada Trust e-Series has the lowest-MER index funds I've seen so far, as the exchange-traded index funds that are increasingly popular in the US are somewhat bulkier over here.)

It was good to get some advice on uncommon concerns, such as international personal finance. How would I need to prepare for the scenario of moving back to the Philippines? I knew that my RRSP investments could be left in Canada, but I didn't know how to handle my non-registered investments and other accounts in a tax- and duty-efficient manner. It turns out that I can leave money here, but I may not be able to give further instructions from overseas, and withdrawing everything could result in losses or high taxes. One way to handle this situation might be to convert all my accounts into long-term investments, then leave very good instructions. I'm currently planning to stay in Canada for a while, but it's nice to know what I need to do in order to prepare for other options.

I answered her questions about my existing assets and expenses, and I asked her to help me prepare several retirement scenarios: the traditional retire-at-65 kind of plan, the ambitious be-flexible-at-40 plan, and the calculations for time in between. I wanted to figure out what a basic plan is, then inch that retirement date earlier and earlier. I gave her the numbers she asked for, and she'll share some plans with me the next time we meet.

Writing about this gave me an epiphany. What I want to develop is not a retirement plan, but a medium-term opportunity plan. I don't need to know how many dollars I'll need in order to never work again. I'm not in the habit of postponing life until then, and I certainly hope I can continue doing meaningful work forever. What I want to know is this:

How can I position myself so that I can create and take advantage of opportunities while dealing with the risks?

(This post is not financial advice. Good luck!)

Gen Y Growing Up:

http://sachachua.com/wp/2008/05/08/gen-y-growing-up/

Page 128: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Thu, 08 May 2008 14:31:27 +0000

Holly Hoffman is another Gen Y blogger writing at worklovelife.com. I came across her blog on a short list of Gen Y bloggers, and after a quick browse, I subscribed. Today, she posted an entry about being good at what you do - even if you don't like it:

In a word, what I am talking about it responsibility. I may not be passionate about my 8-5 job, but I am passionate about being a quality employee and coworker. To buck Gen Y stereotypes, I guess you might say I am passionate about responsibility.

Holly Hoffman, worklovelife.com

That reminded me of this excerpt from a book I read last year:

Rather than quit work and go on a sabbatical to discover some burning career passion, which, by the way, might be just the ticket for some people, I've decided to go all in with my work because, well, it's my work. Seriously. I decided that whatever work I do can be a source of fulfillment and even joy, depending on the extent to which I go all in with it.

It can be a chicken-or-egg question. Should I wait until I find work that I love before I commit to go all in? Or should I go all in so that I will begin to love the work that I've got?

Why would I conceivably not want to be the best I can be at whatever I'm doing? I like the idea that whether I'm sweeping a street, weeding my yard, playing drums in a band, teaching a class, taking photos at a wedding, working as a customer service representative, selling insurance, washing cars, running a company, being a personal fitness trainer, bagging groceries, or writing a book that I take the attitude that I will knock your socks off with how I do what I do. Or maybe it's my own socks that I want to knock off.

Work Like You're Showing Off: The Joy, Jazz, and Kick of Being Better Tomorrow Than You Were Today (p. 72)by Joe Calloway

Read more about this book...

Go and knock your own socks off.

Geek: How to use offlineimap and the dovecot mail server to read your Gmail in Emacs efficiently

http://sachachua.com/wp/2008/05/08/geek-how-to-use-offlineimap-and-the-dovecot-mail-server-to-read-your-gmail-in-emacs-efficiently/Fri, 09 May 2008 02:07:09 +0000

1. Make sure you've set up Postfix or some other mail server that can send mail. I'm not going to cover that because my configuration for outgoing mail doesn't use Gmail.

2. Install dovecot (IMAP server) and offlineimap (IMAP synchronization). You can probably find binaries for your distribution.

3. Edit /etc/dovecot.conf and set the following:

default_mail_env = maildir:%h/Maildir

Page 129: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

4. Put the following in ~/.offlineimaprc, changing your_local_username, your_username, and your_gmail_password:

[general]accounts = Gmail maxsyncaccounts = 1

[Account Gmail]localrepository = Localremoterepository = Remote

[Repository Local]type = IMAP remotehost = localhostport = 143remoteuser = your_local_username

[Repository Remote]type = IMAPremotehost = imap.gmail.comremoteuser = [email protected] = your_gmail_passwordssl = yesmaxconnections = 1realdelete = nofolderfilter = lambda foldername: foldername in ['INBOX']

If you feel comfortable specifying your password for your local account in your ~/.offlineimaprc, you can do so by adding a remotepass line under the remoteuser line in the [Repository Local] section.

5. chmod go-rwx ~/.offlineimaprc for a little bit of safety. 6. Type offlineimap to start synchronizing. 7. While that's synchronizing, use something like this as your ~/.gnus:

(setq gnus-select-method '(nnimap "Mail" (nnimap-address "localhost") (nnimap-stream network) (nnimap-authenticator login)))

(setq user-mail-address "[email protected]")(setq gnus-ignored-from-addresses "youruser")

8. Start Emacs. Start Gnus with M-x gnus. If you don't see the INBOX group, press ^ (gnus-group-enter-server-mode), open nnimap:Mail, move your cursor to the INBOX, and either press RET to go into the group or press u (gnus-browse-unsubscribe-current-group) to toggle the subscription status until you're subscribed to the group. Then it should show up on the group screen (M-x gnus). Hope that helps. Have fun!

Lotus Notes Tweak: End of Message, No Response Needed

http://sachachua.com/wp/2008/05/09/lotus-notes-tweak-end-of-message-no-response-needed/Fri, 09 May 2008 17:20:54 +0000

Taking a quick break from Javascript hacking to post this Lotus Notes tweak.

Following Susan Schreitmueller's advice in the 28-hour Workday presentation she gave, I started replying in

Page 130: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

subject lines and using [EOM, NRN] to indicate the end of the message and that no response is necessary.

Not everyone's familiar with this convention, so I always included a short explanation in the body of the message. After a number of these EOM/NRN messages, I created an AutoHotkey macro to save me a few keystrokes. I set up !eomnrn to expand to "EOM - end of message, NRN - no response needed", and I used that in the body of the message.

I thought it still took too many keystrokes and mouse clicks to reply to a message, add my note to the subject line, add "[EOM, NRN]" to the end of the line, and type in the explanation in the body of the message. In fifteen minutes, I whipped up this little LotusScript agent that prompts you for a response, puts it in the subject line with an explanation, and sends the message off.

In Lotus Notes, use Create - Agent to create an agent called something like "1. EOM - NRN". Edit the agent and put this in the Initialize sub.

Dim workspace As New NotesUIWorkspace Dim session As New NotesSession Dim db As NotesDatabase Dim collection As NotesDocumentCollection Dim memo As NotesDocument Dim reply As NotesDocument Set db = session.CurrentDatabase Set collection = db.UnprocessedDocuments Set memo = collection.getFirstDocument() While Not(memo Is Nothing) Set reply = memo.CreateReplyMessage( False ) response = Inputbox("Response to " + memo.Subject(0)) If (response <> "") Then reply.Subject = response + " re: " + memo.Subject(0) + " [EOM, NRN]" reply.Body = "EOM - end of message, NRN - no response necessary" reply.IsSavedMessageOnSend = True reply.Send(False) End If Set memo = collection.GetNextDocument(memo) Wend

Then you can select the message(s) you want to whiz through, type Alt-A 1 to call the action, and reply quickly. You can also call it while viewing a message, which is probably a safer place to start.

Enjoy!

The Gen Y Guide to Web 2.0 at Work

http://sachachua.com/wp/2008/05/09/the-gen-y-guide-to-web-20-at-work/Fri, 09 May 2008 20:32:12 +0000An IBM colleague asked me to put together a few tips for Web 2.0 at Work. Here's something I had fun putting together, sketching it on my Nintendo DS:

Page 131: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Object 5

| View | Upload your own

I need a faster web host

http://sachachua.com/wp/2008/05/10/i-need-a-faster-web-host/Sat, 10 May 2008 22:44:58 +0000

My site's been slow for a while now - so slow that even I don't have fun flipping through it. So I'm thinking of switching over to a different site. I checked out webhostingbuzz, but they don't offer full SSH access. Here's what I need:

• Linux webhosting with PHP and Rails • Proper SSH access so that I can test and run things from the comfort of a terminal • >= 10 GB of transfer per month (who knew I used 8 GB?) • >= 5 GB disk space (currently using 1.3 GB) • >= 10 domains • >= 20 databases (development and stuff)

Anything you'd recommend?

You have received a painting from Sacha

http://sachachua.com/wp/2008/05/10/you-have-received-a-painting-from-sacha-67/Sun, 11 May 2008 03:35:03 +0000

Welcome to my new host!

http://sachachua.com/wp/2008/05/11/welcome-to-my-new-host/Mon, 12 May 2008 04:35:23 +0000

If you see this, you're on my new webhost. Hooray! =)

Page 132: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

This will be a little shaky for the next few days as I move more things over, but things should be much more zippy now. Next steps: get my domain name sorted out, then move my non-blog content over.

Thanks for your patience!

Sketchcast: Week ending May 11

http://sachachua.com/wp/2008/05/12/sketchcast-week-ending-may-11/Tue, 13 May 2008 01:36:09 +0000

Andy Piper linked to my Nintendo DS sketches and to something interesting called sketchcasting, so I wanted to figure out if I could do that myself without having to get a tablet or work with the mouse. It turns out that you can use a Java program called ColorsDraw to play back DS Colors sketches on regular computers, and you can even export to AVI. A little bit of editing later, and voila!

[kml_flashembed movie="/notebook/colors/weekly-may11.swf" width="400" height="318" /]

Let's see how well this works.

Sketchcat

http://sachachua.com/wp/2008/05/12/sketchcat/Tue, 13 May 2008 01:55:39 +0000Hey, that worked. Good thing I still have some of my favorite sketches on my DS. Here's the sketch I play back to myself whenever I miss my cat or feel uncreative: [kml_flashembed movie="/notebook/colors/cat.swf" width="400" height="318" /] She very obligingly posed for me the last time I was in the Philippines. I miss my cat.

It's not just for you - it helps other people remember the steps, too!

http://sachachua.com/wp/2008/05/14/its-not-just-for-you-it-helps-other-people-remember-the-steps-too/Thu, 15 May 2008 02:56:11 +0000

We took J- to her last hiphop dance class before the performance on Monday. It's amazing what lessons in life and leadership you can pick up from something like that.

We arrived early, so we watched the previous class. The instructor was a lively young woman who coached and cheered the kids through their dance routine. You should have seen the serious looks of concentration on the kids' faces as they tried to remember all the steps. They wanted to do well - and they certainly didn't want to be That Kid Who Forgot The Dance Steps.

After a rather subdued dance routine, the dance teacher called all the students together and asked them to say the steps out loud, just as she'd taught them before. Some of the kids hesitated. The dance teacher explained, "It's not just for you. It helps other people remember the steps, too!" At that, the kids perked up. I guess they realized that other kids faced the same problems they did, and that they could help each other. =)

The kids went into the dance routine with renewed energy. Some kids jumped straight into it, shouting their moves. Others were more tentative, whispering the moves to themselves. Seeing that, the teacher said, "I can't hear you!" By the end of the run, the kids were yelling their moves as they did them, and laughing at

Page 133: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

each other's antics.

"Great! Now during the performance, we'll whisper it, okay?" said the teacher. Several kids turned to her with worried looks. The teacher reassured everyone that saying it out loud would help them remember. "Pinky promise!" she said. Then--if I saw it right--all the kids clustered around the teacher, pinky-promising one by one.

Other people around us are trying to figure out the steps, too. We can help others while helping ourselves. That's why I like yelling out my steps, sharing what I'm doing and how I'm doing it. Who knows, someone might be going through a similar thing too! =) Sometimes, what we need to boost our confidence is that pinky-promise from someone that things are going to work out all right. I pinky-promise you: things will be wonderful.

The Incoming University Student's Guide to Web 2.0

http://sachachua.com/wp/2008/05/16/the-incoming-university-students-guide-to-web-20/Fri, 16 May 2008 12:57:28 +0000

Read extensively. The university library's an amazing resource. Yours might come with access to online research libraries, too. Combine that with Internet resources such as Wikipedia, blogs, and so on. Speed-reading can help you browse through information quickly so that you can focus on the good stuff.

Write. Writing is a great way to remember what you're learning and reflect on how you're doing things. This will help you get better and better at what you do, and you'll be able to recognize the things you're good at and that you enjoy. If you write on a blog, you can use it to reach out to people. Write about what you're learning, and you'll help other people who are learning about it too. Write about what you're doing well, and you'll start building a network and a reputation that will come in really handy when you're looking for work.

Connect. Find out if there's a Facebook group for your incoming university class. If not, start one and invite other people to join. It's a great way to connect with people even before the first day of class. Feeling shy? That's okay, everyone is too. If you focus on helping other people connect and make friends, you'll become more and more comfortable, and you'll make friends along the way too. Don't hesitate to look for role models online, too. Many people have blogs that you can read to get a sense of what life is like in their industry. Read, then comment, then contact them, and you'll get a head start on growing your network.

Behave online and offline. The Internet remembers, and even sites that promise you privacy occasionally mess up and expose things you've shared to the world. Think twice about posting pictures of wild parties, underwear-on-your-head shenanigans, and other things things that future employers and coworkers might take against you. In fact, since just about anyone can take a picture of you and post it up on the Net where you don't have control of it, you might want to keep clean entirely. You don't need to posture to be cool, and you can have fun without doing things you'll regret.

Don't let yourself be limited by anything or anywhere. I took my bachelor's degree in a university in the Philippines. Great school, but it didn't have all the courses I wanted. =) I was on the Internet learning from course materials from everywhere: MIT, Georgia Tech, wherever I could find information. Now there are even more choices. Check out places like MIT OpenCourseware and Stanford iTunes for free courses. This is great not only for learning things, but also for getting a better sense of what you like. In fact, it might be a good idea to check the courses out now before you declare a major. You don't need to understand everything. You just have to get a sense of whether you'll like the course or not. That way, you'll spend less time switching around to find something you enjoy and will use.

Page 134: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

--

I think I'll make a few sketches about this over the long weekend. =) Any other tips for incoming college and university students?

How to sketch with a Nintendo DS

http://sachachua.com/wp/2008/05/17/how-to-sketch-with-a-nintendo-ds/Sat, 17 May 2008 19:48:50 +0000

As promised, here's a quick guide to sketching on the Nintendo DS:

Object 6 | View | Upload your own

Useful sites:

• DSTT - one of the homebrew chips • DS Colors at CollectingSmiles.com • ColorsDraw, a Java applet for playing back .DRW files

I like sketching on the DS because it's something I can always take with me. I've thought about getting a digitizing tablet, but I've always held off because, well, I don't think of myself as an artist. Not a proper artist--not like Diane, one of my best friends. She has sketchpads full of good stuff, and would definitely make the most of a tablet. Me, I doubt my artistic skill and hand-eye coordination. But I've been working on developing my visual vocabulary by taking pictures, looking at photos and great presentations, and trying to explain abstract things with analogies, and I'm discovering that maybe I do have a little bit of an artistic side. Sketching is actually a lot of fun. Maybe my drawings aren't as cool as the sketches that people have posted in the Colors Gallery, but they're my drawings, and they make me happy. =)

I'm starting to save up for a tablet PC. =) I think that would be fun to play with, and I've learned that it's good to follow my intuition. I would love to mindmap and storyboard my presentations with a tablet PC, and if I can use that to sketch bigger things, even better! So I've made room in my spending plan, and at my current rate of saving, I'll have the sum saved just in time for my 25th birthday. =) I want the Lenovo X61 multi-touch model, but maybe an even better one will come along by the time I've saved up for it. (And maybe there'll be more software for it, too!)

In the meantime, I want to learn more about communicating with the tools I have. I've got so many

Page 135: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

things I want to share: things I've learned, things I'm learning from other people and from books and from the world around me. You can come along and learn with me as we figure things out. That's what this blog is for. =) So I've checked out a whole bunch of books on visual storytelling, and I'm going to be drafting and drawing some other ideas over the next few weeks. (My Wicked Cool Emacs book may turn into a cartoon guide to Emacs... Yeah, right. ;) )

What would be some great ways to improve on this without springing for new gadgets? I'd really love to figure out how to work with the videos I can get from ColorsDraw and turn them into a slideshow where the pace is controlled by the viewer. I'd love to be able to move things around, cut things apart, and crop and greenscreen... I'd love to do proper animations of stick figures and drawings, too. (Wouldn't it be awesome if someone came up with a DS homebrew app for that?) And there's plenty to learn even with static images. =)

So that's where I am with this Nintendo DS sketching thing. I'm learning a lot, and it's fun. <grin>

New workflow for sketching; ooh, batch import!

http://sachachua.com/wp/2008/05/17/new-workflow-for-sketching-ooh-batch-import/Sat, 17 May 2008 23:23:00 +0000So here's my new workflow:

1. figure out the gist of what I want to say 2. write down some titles 3. sketch a couple of ideas into my idea book (thanks Mom!) 4. pull the storyboard together 5. draw it on my DS 6. copy the files using the USB adapter 7. convert the DRW files to PNGs using a scale of 2.0 (nice and not too blurry even blown up) 8. batch-import all the PNGs in a directory (OpenOffice.org extension or Microsoft Powerpoint Import

Image -> Photo Album) 9. post the presentation to Slideshare.net 10.blog about it

=) I really wish I could just automate step 7, but oh well! ;)

Weekly review: Week ending May 18

http://sachachua.com/wp/2008/05/18/weekly-review-week-ending-may-18/Mon, 19 May 2008 01:31:50 +0000

Wow. What a week. Every week helps me understand a little more about life and what I love to do, and this week's been a terrific teacher. =)

The quickly-sketched Gen Y Guide to Web 2.0@Work that I put together for a friend caught people's attention, with over 8,000 views on Slideshare and a mention in ReadWriteWeb's article on Why Gen Y is Going to Change the Web. Wow. =) That little thing combined many of my passions and resulted in big results. I love helping people connect. I love bridging the gaps between generations and helping people figure out how to make the most of these new tools. I love exercising my creativity. I love communicating and learning more about communication. I love inspiring and being inspired by others. And I love love love love learning from other people. When I can bring all of those things together... Wow!

Page 136: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I want to build on that strength. I've checked out books on sketching and visual storytelling because I really like how comics and editorial cartoons express things so concisely and effectively. As in writing, I often find it difficult to figure out what I want to say and how I want to say it. I know I'm going to get it wrong, but that's okay. I may need to get it wrong a couple of times before I figure out the message. Talking to other people helps me figure out what I have to say, too, and that's why this blog's so useful. If you comment on something, I learn from what you're saying, and I learn about what I'm saying. (Does that make sense? Maybe it will make sense when I figure out how to explain it.) If I practice, I'll eventually develop the verbal and visual vocabulary to help people understand what I mean, and then I can use that share all these things I'm learning from you and from others. I can't get there unless I go through the awkward phase of trying to figure out what I mean, so... umm... thanks for your patience. =)

I did a number of other interesting things at work, too. We held a virtual exhibition called Innovation in Action, and I volunteered to help staff the Social Networking booth. It was my first time to try a virtual conference/tradeshow like that! =) I had the first shift, and I had a lot of fun figuring out ways to make the most of the platform. In addition to the simultaneous conversations I had with the people who dropped into our booth and typing up my tips to share with colleagues on my internal blog, I had my hands full. Figuring out good ways to connect with people and sharing those tips with my colleagues was a lot of fun!

I've also been doing more development work with Drupal and Javascript, and I'm slowly but steadily making progress. I like the puzzle-solving aspect of it, and I hope I can add more of a people aspect to that kind of work too.

I started on the fifth chapter of my technical book about Emacs, too. I was really anxious about the book before because it was so difficult to write about something that's always changing, but I'm going to keep writing about it anyway and we'll just figure out how everything works out. =)

In other news:

W-, J- and I have been bitten by the gardening bug. We're trying to grow some hot peppers from seed, have a few small hills ready for canteloupes (me) and watermelons (W-), and I've planted the forget-me-not seeds we received for free. We also bought sage and rosemary plants, although we've been keeping them indoors due to chilly weather.

I have also discovered a rather territorial and ruthless side of me: I won't tolerate dandelions in the backyard. I know they can be used in salad and tea, and they really are quite pretty, but I won't have them crowding out my plants (well, my future plants). =)

We watched Prince Caspian today, too. I couldn't help sobbing during the disastrous castle scene, but the rest of the movie felt great, and Reepicheep stole the show. =) After we watched the movie, we chatted about how the movie differed from the book. (Hehehe... Never miss a learning opportunity!)

Great week!

Plans for next week:

• Make progress on my work projects. (Someday I'll get the hang of this...) • Prepare three presentations for two weeks from now. Good opportunity to go over the things I wanted

to improve. =) • Practice sketching stick figures.

Life is great!

Page 137: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

But how do you know what to draw?

http://sachachua.com/wp/2008/05/18/you-have-received-a-painting-from-sacha-68/Mon, 19 May 2008 02:39:32 +0000

But how do you know what to draw?You don't know until you start drawing.

Are you neglecting new employees? Web 2.0 can help you with relational onboarding

http://sachachua.com/wp/2008/05/19/are-you-neglecting-new-employees-web-20-can-help-you-with-relational-onboarding/Mon, 19 May 2008 14:41:06 +0000

When you're new to a company, you can feel quite lonely. Who will you eat lunch with? Who can you ask for help? You can also feel lost. Why are you working there? What can you do to make a difference? Where do you go from here?

This can be hard to remember this several decades after you've joined the company and when you've developed a wide social network, but people who are starting out might not only feel tremendously isolated, but also not know about opportunities to use their strengths.

Gallup has an article about helping newcomers make friends in order to increase employee engagement and retention. This reminded me of the Human Capital Institute's webcast and whitepaper on relational onboarding and how social networking accelerates new hires into star performers, which said:

Rather than abandon highly motivated new hires to orientations, hard to navigate intranets, and stacks of dusty manuals, successful organizations help new hires build a strong network of relationships with colleagues who can help transform them into star performers. Building strong relationships from day one makes new hires feel more connected to the workforce, resulting in decreased turnover, shortened time to contribution, greater engagement and job satisfaction. This webcast will examine how HR executives can make the shift from ‘administrative’ onboarding’ to ‘relational onboarding,’ and how Corporate Social Networking technology can help build the network of connections integral to a new hire’s and the company’s success.

Sally Colella and Nancy Wheeler, Human Capital Institute

Page 138: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I've been with IBM for seven months, and I want to share this kind of onboarding experience with everyone. As a new hire, I'm learning so many things every day. Writing about what I learn helps me not only understand and remember things better, it also helps me share what I'm learning with other new hires and with other people throughout the company. Isn't that amazing? I get to create value for other people while I'm learning. Blogs have helped me make friends, ask for help, give help, get plugged in... It's terrific stuff, and I want to help as many people connect as I can.

That's one of the reasons why I love working with IBM. I want to help organizations figure out how to use social networking to help bring new people on board, connect passionate people with each other (employees, customer evangelists, whoever!), and join the conversations inside the company and in the world. This is challenging because it's not just a matter of introducing a blogging platform or putting up a wiki - it requires a lot of thought about the work culture, and yes, even the occasional cheerleading. But this is work I love to do, and if there's any way you can help me find organizations who want to consult with me and my team, please feel free to e-mail me at [email protected]. =)

I worked on a little sketch presentation on "Web2.0@Work: In Pursuit of Passion" over the weekend, trying to explain why this is just so cool. I put it up on Slideshare on Saturday, and today it's the Slideshow of the Day. That probably means lots of people are interested in this topic. =) Are you? Let's talk about it so that we can figure out how wonderful it can be!

Object 7

| View | Upload your own

Link from myventurepad: Make Friends with Employee Engagement

You have received a painting from Sacha

http://sachachua.com/wp/2008/05/19/you-have-received-a-painting-from-sacha-69/Mon, 19 May 2008 15:21:45 +0000

The only way to fight the darkness is to blaze even brighter with light

http://sachachua.com/wp/2008/05/19/you-have-received-a-painting-from-sacha-70/

Page 139: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Tue, 20 May 2008 00:25:03 +0000

Thank you for your comforting thoughts. I was horrified to hear what happened to Ollie. It's sad that people can do things like that. I cried and cried and cried, and J- and W- put their arms around me and comforted me. There was nothing I could have done to prevent it or to call him back, and there was nothing I could do to prevent that from happening to other animals in the future. When the initial shock passed, I found myself faced with a decision: I could either let this close me up and discourage me from caring so much that I could get this hurt, or I could defy that and keep myself open. I realized that--at least for me--the only way to fight the darkness within the world and within ourselves is to blaze even brighter with light. The only way to deal with random acts of sickness is with kindness. The only way to deal with hate is to love more fiercely. The only way to face death is to live. Ollie was a good cat, and I'm glad I had that time with him. You can read about the time my dad rescued this poor drenched little kitten off the street and our daring cat rescue when Ollie decided to go and get lost on the roof. It was more than just the adventures, though. Ollie taught me a lot about the kindness of my parents, Kathy, and the other people at home. That's what I treasure most about him: that a rather dusty orange cat with an endless appetite for food, the most piteous kitten-like meow (really quite out of place on a tomcat), and a penchant for getting stuck (in the same place! sweet but not very smart - that meow certainly helped persuade us to keep rescuing him), could teach me more about people and love. I am sad that people can do such things to a cat, but I will not let that eclipse the goodness of other people or the happy stories Ollie was part of. I'm happy I got to know Ollie. (And I am trying very hard not to run off and adopt another stray cat.) UPDATE: My mom said that Ollie might have been in an accident; no one knows. But it's beautiful that a stray and fearful kitten could find in our house something to call home.

Work permit reprieve

http://sachachua.com/wp/2008/05/23/work-permit-reprieve/Fri, 23 May 2008 11:53:59 +0000

I was relieved to find out that extending my post-graduate work permit should be straightforward. The Government of Canada had recently extended the post-graduate work permit program from one year to a maximum of three years, although the work permit can't last longer than the period of studies, so I can renew it for at most another year. It was difficult not being able to look beyond October of this year, and I'm glad that I have a little more leeway now. It's still probably not going to be enough time to get my permanent residency application completely resolved, but I've assembled most of the paperwork and I'm just waiting for two more pieces. Yes, I've been remiss, but I've been focusing on other things. =) All in good time...

Getting through the plateau of mediocrity; Picking up the idioms

http://sachachua.com/wp/2008/05/25/getting-through-the-plateau-of-mediocrity-picking-up-the-idioms/

Page 140: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sun, 25 May 2008 20:04:08 +0000

This week, I discovered--rediscovered?--something I love about programming and broke through something that had been frustrating me for a while.

The energy I get from sharing what I know with people--giving presentations, writing articles, talking to people in small groups and one on one--coupled with a slight imposter syndrome--difficult to avoid when working with such experienced people!--had left me wondering if developing software was still in my future. I've been good at it before, but I was wondering if it was the kind of competence that had taken me far but which could keep me from doing something that would bring in even more of my passions.

One of the things I loved about programming was working with people directly. When I maintained an open source personal information manager named Planner, I enjoyed helping people who were passionate about becoming more productive. I wasn't sure if I could get that kind of experience in commercial software development, where there might be layers of analysis and design between me and actual users, and where we typically work on larger projects than the highly personalized customizations I helped other Planner users make. In the seven months I'd been with the company, I hadn't really been on any projects that made me feel good about programming.

I was feeling pretty blah about coding. I could do it, but I wasn't feeling that spark. I figured that it might be just be the relationship of skill to joy. I remember coming across something like this graph when I was reading about the role of deliberate practice in developing expertise.

When you start learning something, you enjoy it because you're learning a lot. Then you hit the plateau of mediocrity. No matter how much you practice, it seems as if you're making very slow progress. This lasts until you become good enough to stop thinking about doing things and start enjoying yourself while you do them. Deliberate practice gets you through that plateau of mediocrity. It's not very fun, but if you can trudge through that plateau, you can break through to new heights.

Actually, the skill/joy curve looks more like this:

... because there's always more to discover. (And that's a good thing!)

Researchers found that this holds true whether you're talking about tennis, chess, music, or anything else in life. I was feeling it with my work. I'd gotten good enough at presenting to have fun doing it (although it still makes me nervous), but I was stuck in the plateau of mediocrity when it came to programming. I was frustrated because I couldn't get a sense of my progress.

But this week, I immersed myself in Drupal code, learning enough of it to rewrite some code to follow the Drupal way of doing things--and I felt a shift in the way I wrote the code. I love picking up the idioms of a language or a programming platform, just as I enjoyed learning enough Japanese to understand the juggling unicyclists at Ueno Park. There's something magical about feeling your brain start flowing along different paths. Picking up programmatic idioms, learning more about other people's code and ways of thinking--that's what turns the isolated activity of programming into a social activity for me. I'm not just writing code. I'm listening to and talking with the other programmers who had touched that code before. I'm learning the lingo. I'm grokking it.

Page 141: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I'm looking forward to doing more work in this area. I'm still very far from a Drupal whiz (that's probably a number of other joy/skill cycles away), but it'll be fun getting there. =)

Weekly review: Week ending May 25, 2008

http://sachachua.com/wp/2008/05/25/weekly-review-week-ending-may-25-2008/Sun, 25 May 2008 20:19:56 +0000

• This week was mostly about working on Drupal code. =) Finding my groove! • I've also been working on my book. It's slow going, but it's going. • I enjoyed preparing the meals this weekend. I had fun arranging food on plates, too. I can't help it - if

I'm going to make something, I might as well make it look pretty. W- was amused. • Driving practice today, too. Got flustered only three times! Progress. • Requested a copy of my birth certificate for my permanent residency application. • Learned that I can probably extend my post-graduate work permit - need to kick off the paperwork for

that soon!

Next week, I have more Drupal and translation server work, and I have three presentations I need to put together for work:

• Taking it Offline, a presentation about how to combine online and offline social networking (0:20) • I.B.Millennials, a replay for the IBM Regional Technical Exchange (1:15) • Top 10 Web 2.0 Tools You Should Try, a replay for IBM TechConnect (0:30)

I also plan to:

• Apply for my Japan police clearance (permanent residency application) • Put together all the paperwork I need for the work permit extension • Handle more of the cooking • Drive some more

=)

Contact me

http://sachachua.com/wp/contact-me/Sun, 25 May 2008 21:46:05 +0000If you need to get in touch with me right away, call me on my cellphone at +1 416 823 2669. You can also send me a text message on my cellphone. Direct messages on Twitter (user id: sachac) also reach my cellphone, and Yahoo Messenger can also send SMS messages. You can e-mail me at [email protected]. I check personal e-mail during the weekends. For work-related matters, please contact me at sachac AT ca.ibm.com. I check my work e-mail every business day. I check blog comments almost every day, but I might not respond right away.

About

http://sachachua.com/wp/about/Mon, 26 May 2008 00:07:50 +0000About me I'm Sacha Chua. I am currently:

Page 142: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• An Enterprise 2.0 consultant at IBM - I help companies and people learn how to use Web 2.0 tools such as blogs, wikis, and social bookmarking in order to be more productive and to collaborate more effectively

• A technology evangelist who can't help but infect people with enthusiasm about interesting technologies that they might find useful--and how they can get started

• A storyteller, because the best way to influence people to change is to tell them stories about other people, about what they could do, and about how to get there

• A geek writing a book about the Emacs text editor and dabbling in Emacs Lisp and PHP programming in my spare time,

• An application developer at IBM working with PHP and Java in my day job, • A blogger who tries to write down everything possible because (a) it helps me think more clearly, (b)

I'm probably going to need it again, and (c) it may help someone else along the way • A doodler sketching on a Nintendo DS • A booksnake (not bookworm!) who devours almost a book a day - thank goodness for public

libraries • A supporter of public libraries and microfinance institutions who believes in education,

entrepreneurship and capacity-building • A personal finance geek who enjoys balancing books and tweaking systems, but doesn't bother with

trading (just index funds, thank you) • A yoga student who's starting to settle into the habit of going thrice weekly • A Filipino living in Toronto who hasn't quite gotten the hang of winter yet, but is trying • A daughter who sees her parents and sisters twice a year or so (not counting Skype) and loves them a

lot • A partner to a wonderful man and his daughter • 24 years old (soon to be 25!) and loving life • ... and many other things

I have also been:

• A teacher of computer science at the university level - I loved teaching the introductory courses because I enjoyed convincing freshmen than computer science was actually fun

• A professional fire dancer (poi), because my sister taught me and then dragged me along on her gigs • A fiction writer specializing in flash fiction (really short short stories) • An open source maintainer of the Planner personal information manager and the Remember

module, both for Emacs • An open source contributor to projects like Emacs Relay Chat and the Compaq iPaq Linux

bootloader • ... and many other things

About this blog Here, you'll find notes on:

• Web 2.0 and Enterprise 2.0 - how social technologies can help us work and connect more effectively

• Cooking - I've gotten much better since my CookOrDie days! • Presentation skills and how I want to get better and better • Communication skills in general • Social networking both online and offline • Gen Y guides - sharing tips with other people my age • New hire stories - I'm new! =) • The Emacs text editor - a very geeky topic, so don't worry if you don't understand any of these posts • Weekly reports just to keep myself grounded • ... and whatever else I think of posting =)

Page 143: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Archive Index

http://sachachua.com/wp/archive-index/Mon, 26 May 2008 00:19:11 +0000

Book: Success Built to Last

http://sachachua.com/wp/2008/05/25/book-success-built-to-last/Mon, 26 May 2008 01:27:44 +0000

In Success Built to Last (Jerry Porras, Stewart Emery, and Mark Thompson), you'll learn that passion is essential to lasting success, and that both preoccupation and pain can point you towards what you're passionate about. Here are a few quotes I liked:

What we consider to be painful offers a window to our soul -- to see uniquely who we are and what we must do. Do you love to play music and at the same time find it disturbingly painful to hear a flat note on that CD, or hate to live without music for a whole day? Let's forget for a moment that friends and relatives think it's foolish or even dangerous for you to choose music as your next profession. Do you love to write poetry and find it torturous to read a bad sentence? When I say painful, I don't mean annoying--I mean, does it torment you, keep you awake at night, or get you up in the morning? (p.156)

I have many passions that trigger that in me, and over time I'll learn how they all blend together. It's painful to listen or watch people communicating ineffectively, and this drives me to learn more about presentation skills and other ways to reach out. It's painful when I hear someone make excuses for not learning something (no time, etc.), so I make an effort to understand the root causes and see if I can help people over any humps. It's painful to know that I want to communicate something but I'm not doing it well, so I get out there and keep trying. It's painful to watch other people get buried in money worries, so I enjoy balancing my books and looking for more ways to be frugal. It's painful to do things that a computer really should take care of, so I program little tools that can automate some of my work. It's painful to watch people have humdrum days at work, so I try to bring more of myself to the work that I do. It's painful to consider resigning myself to a less than full life, so I find as much joy as I can.

The point is that you know that you are on the right track when you naturally obsess over what you love like a geek, as in being a person who is single-minded in pursuit, at the risk of being socially insensitive while so engaged. It attracts you even when you're too tired to do anything else. It seduces you to the point where you lose interest in everything else, to the extent that you become socially inept around people who couldn't care less about whatever it is. (p.40)

<grin> Hey, I've been geeking out since I was a kid. W- is like that too, so we're working out how to signal each other when we're in our single-minded focus modes.

What are you passionate about?

If you can't name anything, you might want to contemplate this quote:

"And if you say, I don't have anything I love, well then there's a real problem right there, and you have to sit down and say, 'Why don't I have anything that I love?' What in me has walked away from every inclination that I had, that I had found something, something that sparked me, something that was for me, and I didn't do it. You have to go back, you know, just recount every moment of your life, what was it, what was that one thing that I did that I loved?" said

Page 144: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

[Sally] Field, [a director and actress].

My dad taught me how wonderful following your passion can be. I hope you discover that joy too. =) Me, I'm discovering it step by step - and the journey is awesome.

Success Built to Last: Creating a Life that Matters by Jerry Porras, Stewart Emery, Mark Thompson

Read more about this book...

Thinking out loud: Taking it off/online

http://sachachua.com/wp/2008/05/25/thinking-out-loud-taking-it-offonline/Mon, 26 May 2008 02:06:11 +0000

Object 8 | View | Upload your own

Do you want to get more people you know to read your blog, connect to you on social networks, and interact with you online? Do you want to build stronger, deeper relationships with your online contacts, maybe even interacting offline? Here are some quick tips on how you can use your online network to strengthen your offline one and the other way around. To go from offline contacts to online contacts, build value: 1. If you want people you know to connect with you online, make sure people can find you. Create a personal website that has your bio, some contact information, and links to more information on the Net. Put your website address on your business card and in your e-mail signature, and mention it when appropriate. 2. To get people to visit your website or read your blog, give them something they'll find immediately useful. For example, if the coworker encounters a problem that you've solved before and blogged about, give your coworker the URL of that blog post and he or she will almost certainly check it out. If you've given your elevator pitch to people and they're convinced that you're the person who can solve their problem, they'll check out your website too. Make it easy for people to find the information they'll find immediately useful. 3. To get people to keep coming back, provide continuing value. If you follow the advice in step 2, you'll end up accumulating a lot of useful information that can show people that you're worth subscribing to. Make it easy for people to browse through your website and figure out if they want to subscribe to you or connect with you. If you want to connect with people on social networks, don't think of it as a one-time connection, but treat it as an opportunity to develop an ongoing relationship. To go from online contacts to offline contacts, build trust: 1. Teach people about your competencies. This is probably the easiest one to start with. Sharing tips and experiences shows people what you're good at, and they can start to trust you in those areas. 2. Show people your character. If you go beyond just giving facts and start telling stories, you can form more of a personal bond with people. This helps them trust you as a person, because they get to know

Page 145: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

your character. 3. Be yourself. It's a lot easier to go from online contacts to offline contacts if people know your real name. A picture and a biography helps, too. =) Hmm, will think about this more. There's something in here that might be useful... =)

New blog design

http://sachachua.com/wp/2008/05/25/new-blog-design/Mon, 26 May 2008 02:17:26 +0000

Well, it's still really the Networker-10 theme underneath, but I've stripped away a lot of the CSS that made my site look heavy, moved things around, added some quick links along the top, and finally got around to making sure wp-cache worked. The site should be nice and zippy again. Check it out at sachachua.com!

Relentless improvement and a focus on the positive

http://sachachua.com/wp/2008/05/26/relentless-improvement-and-a-focus-on-the-positive/Mon, 26 May 2008 11:39:45 +0000

W- asked me the other day, "Does everything need to be positive with you?" I thought about it for a bit, and I realized that yes, I firmly believe in the power of focusing on what's positive and what's actionable in order to grow. (So much so that I translate what other people tell me!) I think that focusing on the positive helps you build people up instead of tearing them down. I love Sam Decker's description of one of Bazaarvoice's workplace practices:

Quarterly performance feedback (our "3/3/1" process), including "upward" feedback for the managers from their staff - to help all of our employees rapidly grow and reduce the anxiety in our organization (everyone always knows where they stand); I have been told by many of our employees and managers that they have learned more at Bazaarvoice than anywhere else they have worked. Our feedback is balanced (the 3/3/1 is a simple email form to document the 3 things you did well that quarter, the 3 things you could have done better, and the 1 initiative you are going to focus on as a result). The upward feedback from staff illuminates blind-spots on our management team, many of which have never been discussed with them in previous companies because the feedback process was too poor to generate intensely constructive dialogue.

Sam Decker, myventurepad: Total Leadership and Bazaarvoice's Amazing Culture

3/3/1. The three things you did well, the three things you could have done better, and the one initiative that you're going to focus on as a result. Relentless improvement that gives you energy and opportunities to celebrate what you're doing well and envision where you want to go. Good stuff.

WordCamp Philippines: September 6, 2008 in Manila

http://sachachua.com/wp/2008/05/26/wordcamp-philippines-september-6-2008-in-manila/Tue, 27 May 2008 01:34:54 +0000

From my Wordpress dashboard: WordCamp Philippines is On. Unfortunately, I won't be in town for it. =( Glad people are doing it, though! =D

Page 146: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Some thoughts on reading

http://sachachua.com/wp/2008/05/26/some-thoughts-on-reading/Tue, 27 May 2008 02:06:15 +0000

Ben Casnocha's blog post about how to find new books to read (sparked by a blog post by Tyler Cowen on the same topic) made me think about how I pick books to read. I tend to go through six or seven books a week, squeezing pages out of subway moments, quiet evenings and weekend afternoons, and even the occasional lunchtime read. A branch of the Toronto Public Library is just a few blocks away from the house, making it a pleasant walk now that days are long and nights are warm.

I enjoy pulling random books off library shelves, stepping out of the genres I typically read. For example, here are the results of today's library raid:

Life: The Odds: And How to Improve Them by Gregory Baer

I picked this up because a quick browse showed that the book managed to make numbers and statistics interesting, which is a skill I'm sure to find useful.

Read more about this book...

Drawing Comics is Easy! (Except When It's Hard) by Alexa Kitchen

I was curious about drawing. When I opened the book, I was won over by this:

Publisher's note and author's disclaimer: The contents of this book were created in a short burst when Alexa was 7 years old. As this book goes to press she is all of 8 years old and, as a writer and artist, is now a quantum leap ahead of these early efforts. The publisher believes this book is worthly of publication or he would not have mortgaged his home and Shmoo collection to finance the 6-figure initial print run and national publicity campaign. However, the author wishes it to be known, for the record, that Drawing Comics is Easy! is "not very good" and "full of mistakes," and wishes to emphasize that her "next book will be much better."

Published by DKP, P.O.Box 2250, Amherst MA 01004-225. DKP is an acronym which the designer likes because it fits the spine dimensions much better, though at the same time, of course it also conveniently disguises the actual name of the company: Denis Kitchen Publishing Co., LLC. Thus, if you've been persistent enough to read this far on the indicia page fine print (which nobody does) you realize that--yes--this book has been published by Alexa's own father's publishing company. However suspicious, unseemly or opportunistic that disclosure may seem to some, the publisher wants it known that Alexa's literary agent made this choice of companies objectively and at arm's length after no doubt weighing attractive offers from Pantheon, Norton, Knopf and other competing publishers. Thus any familial connection is strictly coincidental.

Drawing Comics is Easy!

I had to bring it home and blog about it. =)

Page 147: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Read more about this book...

Howl's Moving Castle by Diana Wynne Jones

I watched this in Japan... in Japanese... which didn't help my comprehension much... so I figured I'd read it again to see if I could reinterpret my befuddled memories. Also, I like raiding the children's lit section. =)

Read more about this book...

I always appreciate recommendations from other people. I love finding other bookworms, and I love the way our shared books give us conversational shorthand. I love finding out what other people are interested in, and books are a great way to do that. Of course, I'm thrilled whenever I can return the favor by prescribing some of my favorite books for whatever situation I come across. =)

When I was a kid, my parents used to let me pass the time in bookstores while they took care of other things. As a result, I've gotten pretty good at skimming through books while standing or walking around, and I've gotten pretty shameless about pulling ten to fifteen books off the shelf and scanning through them quickly to see if any of them are good. I usually find two or three to buy, so I guess it works out for the bookstore.

I tend to go on reading spurts, reading everything I can find in the library about a particular subject. The Toronto Public Library allows me to place holds on up to fifty items, and I often run into that limit. I use my Amazon wishlist to store other books I'm interested in--books that didn't fit in the 50-book limit, books that haven't been acquired by the library, and so on. One of these days, I'm going to get Amazon/Toronto Public Library integration working again. =)

When I read a book, I mark interesting segments by tucking scraps of paper between the pages. I used to dogear pages and I still occasionally do so, but I feel guilty about doing that to library books. I'm horrified by the way that other people actually scribble in library books. Augh. Anyway, after I finish the book, I encode my notes in an outlined text file, along with the page numbers. I've gotten my Dragon Naturally Speaking to the point where I actually enjoy dictating things to it, which is much better than typing because (a) I don't have to lift my hands from the book, (b) I can trace lines with my finger so that I don't get lost, and (c) I get to experience the words in another medium. Good stuff.

Every so often, I review my book notes and think about how I've applied the ideas, how I might apply the ideas, how the ideas relate to other things I know, and who might be able to use those ideas as well. That's where the outline comes in handy. I can skim the outline to see which book I'd like to think about, or I can search it for keywords to find a useful quote, or I can even jump to a random spot. I've copied the text file to my Nintendo DS (yes, you can read text files on it), so I can even read on the go. (Next step: make an application specifically for reviewing my book notes? =) )

I've gotten so many benefits from my insatiable appetite for books. Richer conversations, interesting connections, improved communication skills, and an abundance of material to share... I love reading, and I hope lots of people discover the joys of reading too!

Dealing with stage fright

http://sachachua.com/wp/2008/05/28/dealing-with-stage-fright/

Page 148: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Wed, 28 May 2008 12:36:01 +0000

I had a lot of fun presenting at yesterday's conference. Reflecting on it, I realized that my presentations are strongly influenced by what people bring to the session. The passion that people like about my presentations comes from the energy that people share with me when they listen and when they share. The insights they walk away with come from other people like them as well as from the people and experiences and thoughts I bring in through my presentation. I'm just there to prepare the stage and spark the conversation. =) Here are some quick tips for energizing presentations and some reflections based on the presentation I gave today.

1. Chat with people before the presentation starts so that you can make personal connections and find out what people are interested in.

2. Always treat it as a dialogue.

3. Turn your presentation into a conversation and learn something new from your audience.

Stage fright - everybody has it

I had one hour left before my presentation at the IBM Regional Technical Exchange in Markham. I couldn't shake off my anxiety. The words felt heavy in my mouth, and my voice felt strained. The new stories I wanted to add didn't quite blend in with everything else. My phrasing was off. My energy was off, too--I was having a hard time making the shift from the morning's introverted-programming mode to the high-energy presentation mode I needed for the afternoon.

I headed over to the refreshments table to make myself a cup of mint tea, snagging a couple of chocolate-macadamia cookies along the way. I was savoring the chewy chocolate cookie when another IBMer walked up to me. She asked if I was anxious about my upcoming talk, and she said that she could never eat when she was nervous. I told her that a couple of cookies are remarkably effective at reducing stress. After my headless chicken impression at the IBM Web 2.0 Summit, I went so far as to pour milk into a glass and dunk cookies into it. (That worked. It's important to know what works for you.) We chatted briefly about the talk and about some other matters, and she wished me luck on the presentation. I felt my mood start to lift.

By the time I finished my tea and munched through the second cookie, I was ready to set up the room. I plugged in my power supply, fiddled with the video settings, and tested the color scheme (no reds) and all the slides (legible). These little routines help me get into presentation mode.

(Yes, everyone gets stage fright. I think mine comes from the idea that so many people are trusting me with their time! Mine goes away when I start sharing my energy with people and people give it right back (in a good way). Neither my level of preparation nor the aesthetics of my slides matter, although having slides that make me happy helps. Nope, my stage fright depends on whether people in the audience are getting a good deal for their time. =) )

Chat with people

One of the key things that helped me tap presentation energy was chatting with the people waiting for the presentation to start. I really appreciated how people came up to me and wished me luck, or let me engage them in conversation--that helped me calm my stage fright. I made sure to ask a number of people throughout the room what they were interested in. I figured that if I could make those people happy, then I'd probably stand a good chance of making most people in the room happy. If people were interested in the session, then by golly, I was interested in it too! Hearing what a few people were interested in allowed me to see the hundred-something people as individuals and to talk about things in a way that felt (to me, at least) as if I was having a regular conversation (in which I'd feel comfortable making all these side comments). Establishing that initial contact with people throughout the room helped me remember to make eye contact and to talk

Page 149: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

about different perspectives. After all, you can't talk to only the front row after you've met some people in the back row who are curious about what you want to say. And did I mention that talking to people helped me handle my stage fright?

So the next time you give a presentation, get your setup time out of the way, and spend the rest of the time talking to people who have made an effort to be there early. They'll give you plenty of ideas, encouragement, and energy, and if you can engage them, you can spread that energy to other people.

Always treat it as a dialogue

Interaction is what makes an real-time presentation different from a recording. The presentation starts off with the energy you bring and the curiosity that people in the audience bring, and it takes shape as people interact with it. When people take the time to attend your presentation in person, give back to them by involving them in it. When you have the ability to see people's reactions or even engage them in conversation, listen to those people throughout your presentation. You are always in a dialogue, even if you're doing most of the talking.

How do you do this? You can use the same skills and instincts you use when talking to people one on one. You know how you can tell when someone's interested or someone's losing focus, even if they aren't saying anything? If you focus on presenting to one person at a time, you can listen and adapt just as instinctively, and you'll talk more naturally too. Just remember that there are lots of other people in the room, so talk to them too. If you're facing a big audience and you can't see people, you'll have to imagine them. Talk to people before your presentation so that you can go into your presentation with a sense of real people in the audience.

Turn your presentation into a conversation

Another thing that makes me excited about presentations is that I know I'm going to learn something new. I love including a lot of discussion in my presentations, and I'm always amazed by what people share. For example, terrific issues and insights came from the audience today. (I've got to retell some of those stories!) So I'm not an expert passing on knowledge, but rather as a facilitator who sets the stage and gets the conversation going. When I give larger, less interactive presentations (like that blue horizon 2008 keynote to around seven hundred people!), I like thinking about the internal dialogue people are having with me, even if they can't raise their hands and share what they're thinking with everyone else.

Next time you plan a presentation, try adding more dialogue. You need energy and openness in the room to get this going. People need to want to add something, see that they have something to add, and feel that you're open to it (and you'll manage the time and the rest of the discussion as necessary). It really helps to have some friendly faces who will take pity on you and jumpstart the conversation if needed. =) Have some backup questions based on what other people might ask you, and feel free to ask the audience questions as well. Most speakers are unnerved by silence (trust me, three seconds of quiet feels like an awfully long time!), but you need to give people time to understand what you've said and to think about what they want to say. A teaching tip I picked up before is to count to seven (silently) instead of moving on after just a few seconds. That seven-second gap helps people shift from listening mode to interacting mode, and if you can get people to share, your presentation will really sparkle.

So here are those quick tips again:

1. Chat with people before the presentation starts so that you can make personal connections and find out what people are interested in.

2. You're always in a dialogue. Listen.

Page 150: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

3. Turn your presentation into a conversation and learn something new from your audience.

And don't forget to have fun! =)

Trying to get a good head shot

http://sachachua.com/wp/2008/05/28/trying-to-get-a-good-head-shot/Thu, 29 May 2008 01:46:39 +0000

Tim Sanders blogged about the importance of having at least one really good picture. It's true: a good head shot adds a dash of personality to blogs, slide decks, corporate directory profiles, and everything else that forms part of your personal brand. If you don't have a picture on your blog yet, think about adding one! Besides, photos tell stories. =) Here's the story behind my current profile pic:

Last January, a colleague asked me for a high-resolution head-shot that would be included (along with something I said) in one of their annual reports. I no longer had the high-resolution version of the profile picture I was using at the time. Besides, I'd taken that picture myself in 2005 using a point-and-shoot camera and my desk lamp (you can see the ceiling of my dorm room at Graduate House!), and it was definitely time for a change. But where was I going to

find a low-cost photographer on a Friday evening?

Right next to me, apparently. I asked W- to take my picture. It was a good opportunity to try the 50mm lens he got me for Christmas. We'd both read plenty of photography books, so we knew that we needed a plain white wall near a window with good light. The only suitable one was the wall directly across the bathroom, so W- set up the tripod across the threshold and I quickly put on some foundation and tucked my hair into a bun.

The window light was coming from my right, and the shadows were a little too dark. I tried turning this way and that, but I couldn't turn too far towards the light because my face would then be at the wrong angle. The tripod was stuck in the doorway and we couldn't move it further. Hmm...

Fortunately, reading books on photography and blogs like Strobist gave us the confidence to try a little lighting. W- had splurged on an external flash unit, though, and we put that to good use. J- got conscripted into holding the large white sheet of paper that was our reflector, and we bounced the light off that in order to fill in the shadows. W- also fiddled with the manual-focus lens until he felt that things were reasonably in focus. (Apparently, it's hard to get the eyes sharp when the subject's giggling too much because of the art direction and the assistant's antics.)

Naturally, J- wanted her picture taken too. (I remember some particularly good zombie-J pictures from this session.)

I was still breaking out in lots of pimples at the time, so I edited the most promising picture in Gimp in order to tone down the distracting bits. I didn't think I could do anything about my teeth (short of braces--tried them, couldn't stand them), so I left those alone. Anyway, I ended up with a profile picture that made me happy and taught all of us a little more about playing with light.

My picture's nowhere near as awesome as my mom's, but that's because my dad's a professional photographer. I'd love to practice taking portraits of friends, and once we either have that yard sale or put all the extra stuff away, maybe I can have people over again... =)

Page 151: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Two presentation stories for today: Oooh, shiny; Reaching the back row

http://sachachua.com/wp/2008/05/29/two-presentation-stories-for-today-oooh-shiny-reaching-the-back-row/Fri, 30 May 2008 00:59:52 +0000

Today, I talked to about eighty to a hundred people during my TechConnect keynote in the IBM Toronto Lab Amphitheatre. My presentation was about The Top 10 Web 2.0 Tools You Should Try. I enjoyed customizing it for the audience (IBM Toronto Lab folks - research and development) as well as for the challenging timeslot (30 minutes for 10 tools!). I owe a lot to the Lab, and I was glad to have the opportunity to give back. =) I also had the pleasure of turning the stage over to Abe Batthish for his talk on the Web 2.0 Technology Interest Community, and I had fun listening to him as well.

Here are a couple of stories from the presentation.

Oooh, shiny

With only thirty minutes on the clock, the presentation was going to be fast-paced, and I had to have some way to keep track of what slide I was on. I considered standing near my laptop, but I nixed that because I'd have an even tougher time connecting with people behind such a massive podium. I didn't want to constantly look behind and up at the two projected screens a few feet above my head. Running through the slides in my head, I walked to the center of the stage. As my eyes drifted upwards, I caught a glimpse of something shiny.

Oooh, shiny.

The control room at the back of the amphitheatre was separated from the auditorium by a large one-way mirror, which was reflecting all that light. The mirror just the correct angle for me to see it--and was that a backwards image of my slides?

I hadn't noticed that the last time I gave a speech in the same amphitheatre. Nifty.

Thanks to a childhood spent reading everything and everywhere I could, I had picked up the ability to quickly read backwards. My slides were easy to distinguish even when flipped horizontally. I grinned and returned to my seat in the audience, looking forward to giving my totally small-scale "confidence monitor" a try.

After Julie Waterhouse introduced me, I launched into a whirlwind tour of the top 10 Web 2.0 tools the audience should try. I found it easy to make eye contact while avoiding the microphone feedback zones and occasionally glancing at the reflection to make sure I was flipping to the right page. It was like my keynote segment to 700 people using the Hilton Toronto's snazzy audio/visual setup. No, this amphitheatre was better. The Hilton's LCD panel had been in the lower left corner of my vision, and I had caught myself glancing to the side to see it. Here, the mirror was in the center of the back wall of the amphitheatre, slightly above the audience's heads, and visible anywhere I looked.

Now I'm wondering how I can set up a mirror like that in less-equipped rooms. A full-length mirror wouldn't be portable, but maybe a small mirror set up at the appropriate distance would work. I'm not talking about a double-mirror clamped to the podium, though--I really don't like standing behind podiums! Maybe a convex mirror like those car rear-view mirrors? Will the image be too distorted? Maybe I can make a totally small-scale confidence monitor. Hmm...

Reaching the Back Row

I wasn't quite sure if I had effectively reached people today. I felt that I was cramming too many words into

Page 152: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

too short a time. (If I'm going to do this again in 30 minutes, I'll probably focus on just 5 tools!) I made a few jokes, got a few chuckles, got plenty of nods of recognitions at the problems and pain points I described... but I didn't have time to turn it into the kind of open, interactive presentation I love. When I gave a similar presentation at another conference, the other tools that people shared during the discussion gave me plenty of material for follow-up posts. Due to today's time constraints, I didn't get to open it up, so I ended up doing all the talking. (Pity! I would've loved to find out what was on people's shortlists of tools.)

But people enjoyed it, and I think I convinced a few people to give some of those tools a try. =) I wish I could've stayed for the networking events, but I needed to hitch a ride back home for some other stuff. When I got home and reconnected to the intranet, I noticed that a manager had left a comment on my presentation. He mentioned that he had sat in the back row and that he really enjoyed my presentation and my contagious enthusiasm. If I can reach someone in the back row with my passion, I must be doing something right! =)

Teaching passion

http://sachachua.com/wp/2008/05/30/teaching-passion/Sat, 31 May 2008 01:07:14 +0000

Ideally, teachers would focus on one single thing: getting their students really, deeply excited about the subject of the course. Everything else, the students can do on their own.

Peter Turney, Apperceptual: Genius, Sustained Effort, and Passion (blog post) Link from Michael Nielsen

Here's another of my favorite quotes:

If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea.

Antoine de Saint-Exupery

=)

Emacs Gnus: Searching Mail

http://sachachua.com/wp/2008/05/31/emacs-gnus-searching-mail/Sat, 31 May 2008 12:49:37 +0000

There are several ways to find messages in Emacs. From the summary buffer, you can use / o (gnus-summary-insert-old-articles) to display all or some old messages. You can then scan through the headers in the summary buffer by using C-s (isearch-forward), or you can limit the displayed messages with these commands:

Messages from a given author / a gnus-summary-limit-to-author

Messages whose subjects matching a given regular expression / / gnus-summary-limit-to-subject

Messages that match a given extra header / x gnus-summary-limit-to-extra-headers

Page 153: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Messages at least N days old / t gnus-summary-limit-to-age

Limits work on the messages that are currently displayed, so you can apply multiple limits. If you make a mistake, use / w (gnus-summary-pop-limit) to remove the previous limit. You can repeat / w (gnus-summary-pop-limit) until satisfied. To remove all the limits, type C-u / w (gnus-summary-popl-limit).

If you specify a prefix, the limit's meaning is reversed. For example, C-u / a (gnus-summary-limit-to-author) will remove the messages from the matching author or authors.

You can use Gnus to search the currently-displayed messages by using M-s (gnus-summary-search-article-forward) and M-r (gnus-summary-search-article-backward).

If you want to search a lot of mail, you'll find NNIR handy. NNIR is a front-end to mail search engines which can index your mail and return search results quickly. If you want to use NNIR with a local or remote IMAP server, you will need to use nnir.el and imap.el. If you download your mail using fetchmail or connect to a POP3 server and use an nnml backend, you can use NNIR with a search engine such as swish-e to search your ~/Mail directory efficiently.

1.6.7.1 Setting up IMAP and NNIR

If you use IMAP, then your mail is stored on the mail server and you'll need to use the IMAP search interface to search through it. Download nnir.el from http://www.emacswiki.org/cgi-bin/wiki/download/nnir.el and save it to your ~/elisp directory. You will also need an imap.el that is newer than the one that comes with Emacs 22. Download imap.el from http://www.emacswiki.org/cgi-bin/wiki/download/imap.el and save it to your ~/elisp directory as well. Because Gnus comes with an older version of imap.el, you will need to make sure that the new version of imap.el is loaded. Add the following to your ~/.gnus:

(add-to-list 'load-path "~/elisp")(load-file "~/elisp/imap.el")(require 'nnir)

Restart your Emacs. You can check if the correct version of imap.el has been loaded by typing M-x locate-library and specifying imap.el. If Emacs reports "~/elisp/imap.el", then Gnus is configured to use the updated imap.el.

1.6.7.2 Setting up POP3 and NNIR

If you use the configuration for POP3 that is suggested in this chapter, then your mail is stored in the nnml backend, which uses one file per message. To search this using NNIR, to install nnir.el and an external search mail engine. The Namazu search engine runs on Linux, UNIX, and Microsoft Windows, so that's what we'll talk about here. To find and configure other mail search engines supported by NNIR, check out the comments in nnir.el.

First, you'll need to download and install Namazu. If Namazu is available as a package for your distribution, install it that way, as it depends on a number of other programs. An installer for Microsoft Windows can be found at http://www.namazu.org/windows/ . If you need to build Namazu from source, you can get the source code and instructions from http://www.namazu.org .

Page 154: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

After you've installed Namazu, create a directory for Namazu's index files, such as ~/.namazu-mail. Then index your mail by typing this at the command-line:

mknmz --mailnews -O ~/.namazu-mail ~/Mail

and add the following to your ~/.gnus:

(add-to-list 'load-path "~/elisp")(require 'nnir)(setq nnir-search-engine 'namazu)(setq nnir-namazu-index-directory (expand-file-name "~/.namazu-mail"))(setq nnir-namazu-remove-prefix (expand-file-name "~/Mail"))(setq nnir-mail-backend gnus-select-method)

1.6.7.3 Searching your mail with NNIR

From the group buffer displayed by M-x gnus, you can type G G (gnus-group-make-nnir-group) to search your mail for a keyword.

If you're using the Namazu search engine, then you can use more sophisticated search queries such as:

Linux Emacs messages that contain both "Linux" and "Emacs"

Linux or Emacs messages that contain either "Linux" or "Emacs"

Emacs not Linux messages that contain "Emacs" but not "Linux"

Emacs and (Linux or Windows) messages that contain "Emacs" and either "Linux" or "Windows"

"apple pie" messages that contain the phrase "apple pie"

{apple pie} messages that contain the phrase "apple pie"

+from:[email protected] messages with [email protected] in the From: header

+subject:"apple pie" messages with the phrase "apple pie" in the Subject: header

+subject:apple +subject:pie messages whose Subject: headers contain both "apple" and "pie"

If matching messages are found, then you will see a temporary group with the results. Although you can't delete messages from this view, reading and replying to these messages is the same as reading and replying to regular messages.

To see a message in its original context, type G T (gnus-summary-nnir-goto-thread) from the summary buffer. This opens the message's original group. If Gnus asks you how many articles to load, press RET to accept the default of all the articles.

Page 155: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

This is a draft for the Wicked Cool Emacs book I'm working on. =) Hope it helps!

Too much time on her hands

http://sachachua.com/wp/2008/05/31/too-much-time-on-her-hands/Sat, 31 May 2008 13:53:47 +0000"Where do you find the time to do that?" That's what I often hear from people when I talk about blogging, social networking, or anything outside their current habits. I've also heard this as "I don't have the time to even learn about that," or even "In order to follow that advice, you have to have a REALLY good job where you don't have to do any real work." They're all variations on the "Too much spare time on his hands" put-down dissected by Cory Doctorow in his excellent blog post. Too much time on my hands. I've heard that a lot. People use it as a convenient excuse to dismiss what I'm saying, to not take action, to not think about what they're currently doing and what they can do better. And that's okay--as long as they're being intellectually honest about their excuse. When I handle this question at my presentations, I usually show that all the activities I talk about can be salami-sliced into things that people are already doing. Spent two hours searching for how to solve a problem? Spend another two or three minutes posting the solution on your blog so that you can remember it and so that you can teach others. Reviewing the previous week and planning the next one? Blog about it as a way of sharing your progress. People who understand the principle of relentless improvement (kaizen) and are interested in something will almost automatically find those slices. People who want to learn something but who don't know how to get started will find those slice suggestions useful. People who think it's a waste of time will shake their heads and say things like "She has too much time on her hands." Clay Shirky made an excellent point about spare time and what people choose to do with them. Here's an excerpt from one of his presentations about Wikipedia and cognitive surplus:

[The television producer] heard this story [about Wikipedia] and she shook her head and said, "Where do people find the time?" That was her question. And I just kind of snapped. And I said, "No one who works in TV gets to ask that question. You know where the time comes from. It comes from the cognitive surplus you've been masking for 50 years."

Clay Shirky, Gin, Television, and Social Surplus Too much spare time on my hands? =) We all have moments when we don't have to do anything. People can spend that time watching television or indulging vices, or people can do something that helps them and helps other people. As long as people are happy with the way they spend their time and the consequences of their choices, then they're fine. But if they use "I don't have the time for that" as an excuse to avoid thinking about how they spend their time, then that's their decision. It's not about having time. It's about choosing how to spend time. I'm still learning how to do so, and I think I'll always need to learn more and more about the best use of my time. But I'm pretty happy with the way I spend time - there's always more to do, but I'm pretty good at doing good things. When I hear other people say, "She has too much time on her hands", I hear it as less of a statement about me and more of a statement about them. How about you? How do you feel about time?

Emacs Gnus: Organize Your Mail

http://sachachua.com/wp/2008/05/31/emacs-gnus-organize-your-mail/Sat, 31 May 2008 20:47:17 +0000

People handle large volumes of mail in different ways. Keeping everything in one mailbox can quickly become unmanageable because messages you need to read get lost among messages you don't need to read.

You can move mail manually by selecting them in the summary buffer and typing B m (gnus-summary-move-article). Then type the name of the group to which you would like to move the message. The group will be created if it doesn't exist.

Page 156: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

To move multiple messages, mark them with # (gnus-summary-mark-as-processable) and then type B m (gnus-summary-move-article). To unmark a message, type M-# (gnus-summary-unmark-as-processable). To unmark all messages, type M P U (gnus-summary-unmark-all-processable).

Automatically filing mail

Moving messages by hand is tedious and time-consuming. One way to deal with this is to set up rules that automatically file mail into different groups (or folders, as they're called in other mail clients). Gnus calls this "splitting" mail, and you can split mail on IMAP servers as well as mail downloaded from POP3 servers to your computer.

For example, if you're using Gnus to read mail from an IMAP server, you can split your messages by adding this to your ~/.gnus:

(setq nnimap-split-inbox "INBOX") ;; (1) (setq nnimap-split-predicate "UNDELETED") ;; (2) (setq nnimap-split-rule '( ("INBOX.emacs" "^Subject:.*emacs") ("INBOX.work" "^To:.*[email protected]") ("INBOX.personal" "^To:.*[email protected]") ("INBOX.errors" "^From:.*\\(mailer.daemon\\|postmaster\\)") ))

If you use a different inbox, change the value of nnimap-split-inbox(1). Any messages in the inbox will be split according to nnimap-split-rule(2), which is a list where each element is a list containing the group's name and a regular expression matching the header of messages that should be filed in the group. In this example, Gnus will move mail with subjects containing the word "emacs" to INBOX.emacs, mail directed to [email protected] to the INBOX.work group, mail directed to [email protected] to the INBOX.personal group, and mail error messages to INBOX.errors. All other messages will be stored in INBOX.

If you're downloading your mail from a POP3 server and storing it in nnml, add this to your ~/.gnus instead:

(setq nnmail-split-methods '( ("mail.emacs" "^Subject:.*emacs") ("mail.work" "^To:.*[email protected]") ("mail.personal" "^To:.*[email protected]") ("mail.errors" "^From:.*\\(mailer.daemon\\|postmaster\\)") ))

All other messages will be stored in mail.misc.

Start M-x gnus again, and your mail will be split into the different groups.

Where are my groups?

If you don't see your new groups in the group buffer displayed by M-x gnus, type A A (gnus-group-list-active) to see all the groups. Go to the group that you would like to add to the group buffer, then type u (gnus-group-unsubscribe-current-group) to toggle its subscription. In this example, INBOX.automated is not subscribed to, but INBOX is.

Page 157: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

U 13: INBOX.automated 76: INBOX

When you type M-x gnus again, you'll see your subscribed groups if they have unread messages.

nnimap-split-rule and nnmail-split-methods allow you to filter interesting or uninteresting mail into different groups based on their headers. Gnus comes with an even more powerful mail splitting engine. In fact, Gnus comes with "fancy mail splitting."

Fancy mail splitting

With fancy mail splitting and some configuration, you can split mail based on a combination of criteria. You can even manually file a message and have Gnus automatically file incoming replies in the same group.

To configure an IMAP connection to use fancy mail splitting, add the following to your ~/.gnus:

(setq nnimap-split-inbox "INBOX") (setq nnimap-split-predicate "UNDELETED") (setq nnmail-split-fancy ;; (1) '(| ;; (2) (: gnus-registry-split-fancy-with-parent) ;; (3) ;; splitting rules go here ;; (4) "INBOX" ;; (5) )) (setq nnimap-split-rule 'nnmail-split-fancy) (setq nnmail-split-methods 'nnimap-split-fancy) ;; (6) (gnus-registry-initialize) ;; (7)

This configures IMAP to use the nnmail-split-fancy function to determine the group for messages. Note that we're setting the nnmail-split-fancy variable here. If you want to process your IMAP mail separately from your other mail, you can set the nnimap-split-fancy variable instead. If so, also set nnimap-split-rule to 'nnimap-split-fancy. Using nnmail-split-fancy here makes the other examples easier to understand, though.

The nnmail-split-fancy variable controls the splitting behavior(1). The "|" symbol means that that the first matching rule is used(2). For example, if the message being processed is a reply to a message that Gnus knows about, then the gnus-registry-split-fancy-with-parent function will return the name of the group, and nnmail-split-fancy will file the message there(3). You can add other splitting rules as well(4). If messages don't match any of these rules, the last rule specifies that the messages will be filed in INBOX(5). Set nnmail-split-methods to nnimap-split-fancy as well in order to work around some assumptions in other parts of the code(6). After that, initialize the Gnus registry(7), which is responsible for tracking moved and deleted messages. This allows you to automatically split replies into the same folders as the original messages.

To configure fancy mail splitting with an nnml backend (suggested configuration for POP3), add the following to your ~/.gnus instead:

(gnus-registry-initialize) (setq nnmail-split-fancy '(| (: gnus-registry-split-fancy-with-parent) ;; splitting rules go here "mail.misc" ;; (1) )) (setq nnmail-split-methods 'nnmail-split-fancy)

This code is similar to the IMAP example, except that the default mailbox name for nnml is mail.misc(1).

Page 158: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Here's how the previous rules in nnmail-split-methods would be translated to nnmail-split-fancy rules for an IMAP configuration:

(setq nnmail-split-fancy '(| (: gnus-registry-split-fancy-with-parent) ;; splitting rules go here (from mail "INBOX.errors") ;; (1) (any "[email protected]" "INBOX.work") ;; (2) (any "[email protected]" "INBOX.personal") ;; ("subject" "emacs" "INBOX.emacs") ;; (3) "INBOX" ;; or "mail.misc" for nnml/POP3 ))

The from keyword matches against the "From", "Sender", and "Resent-From" fields, while the mail keyword matches common mail system addresses(1). The corresponding to keyword matches against the "To", "Cc", "Apparently-To", "Resent-To" and "Resent-Cc" headers, while any matches the fields checked by the from and to keywords(2). You can also compare against the subject and other headers(3).

You can use logic in splitting rules, too. For example, if you like reading the jokes on [email protected], but you don't like the ones sent by [email protected] (he not only has a bad sense of humor, but also likes picking on Emacs!), you can use a rule like this in your nnmail-split-fancy:

;; ... other splitting rules go here... (any "[email protected]" ;; (1) (| (from "[email protected]" "INBOX.junk") ;; (2) "INBOX.jokes")) ;; (3) ;; ... other splitting rules go here

The first rule matches all messages with "[email protected]" in from- or to-related headers. Matching messages are processed with another split rule, which moves messages from [email protected] to a separate group(2) and files the other messages in INBOX.jokes(3). To learn more about creating complex rules, read the Gnus Info manual for "Fancy Mail Splitting".

June 2008

Weekly review: Week ending June 1, 2008

http://sachachua.com/wp/2008/06/01/weekly-review-week-ending-june-1-2008/Sun, 01 Jun 2008 17:29:14 +0000Last week:

• Gave two presentations in person: I.B.Millennials at the Regional Technical Exchange at Sheraton Parkway, and Top 10 [IBM] Web 2.0 Tools You Should Try at the TechConnect event at the IBM Toronto Lab.

• Much progress on the Drupal project I'm working on. =) I'm getting the hang of theming it, too! • Progress on my book. It's a lot easier when I think about blog posts instead of 2000-word chunks, and

blog readers instead of book readers... =) • Applied for clearance from Japan (for permanent residency application) • Assembled paperwork for extension of work permit • Checked out a whole bunch of books from the library. Hooray!

Page 159: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Next week:

• One virtual presentation: Taking It Offline/Online - how to combine your online and offline social networking

• Do more work on the Drupal project - theming, multisite • Wicked Cool Emacs: filtering spam, scoring mail, setting up profiles • Send application for extension of work permit • Check with University of Toronto regarding reference letter

Drupal: Lather, rinse, repeat - Cleaner development with installation profiles and Makefiles

http://sachachua.com/wp/2008/06/01/drupal-lather-rinse-repeat-cleaner-development-with-installation-profiles-and-makefiles/Mon, 02 Jun 2008 03:05:24 +0000

I'm beginning to really like Drupal, a PHP-based content management system. Working with Drupal feels almost like working with Emacs because of the number of hooks that people have designed into the system. =) So here's a Drupal tip for fellow newbies.

When you're developing a site in Drupal, it's a good idea to make sure that you can reproduce your setup on a different system. One way to do that is to periodically do a fresh install of Drupal with your modifications, and see if everything still works.

For example, on my system, I have an installation profile that enables and sets up Drupal the way I want. I also have a script that deletes and recreates the database, then restores the default settings.php. To refresh my system, all I have to do is type "make clean", then open my Drupal site in the browser. After I specify the installation profile for my project and the database connection details, Drupal sets everything else up. Because I use installation profiles and source code control (svn on this project), I can commit my changes, update the copy on the test server, and easily reproduce my system there. Using installation profiles saves me the time that I would've spent setting up and configuring all the modules (and in the right order!), and this practice can help you too.

Here's how to get started:

1. Make a copy of sites/all/default/settings.php before you configure your system, or get the settings.php from a clean (never-installed) Drupal directory. I like putting this copy in sites/all/default/settings_default.php.

2. Create an installation profile for your system. The easiest way is to use the install_profile_wizard module to generate a base installation profile, then modify it as needed. Put this profile somewhere in your profiles directory.

3. Create a Makefile, shell script, or batch command that drops the database you're using, recreates the database (granting any permissions necessary), and copies sites/all/default/settings_default.php to /sites/all/default/settings.php

Then, when you're developing code, you can just call your Makefile/script/batch command to start from a (relatively clean) database.

Lather, rinse, repeat.

Page 160: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Drupal: Adding lines to settings.php in an installation profile

http://sachachua.com/wp/2008/06/02/drupal-adding-lines-to-settingsphp-in-an-installation-profile-2/Mon, 02 Jun 2008 15:35:54 +0000

Installation profiles can make it easier for you to test and reproduce your configuration. But what if you need to do more than what Install Profile Wizard detects? For example, parts of the Domain Access module ask you to add lines to your sites/default/settings.php. Fortunately, PHP allows you to set up your install profile to write to files during installation.

Here's the code I added to the end of the profilename_profile_final() function:

// Add the following to the end of settings.php $file = fopen("sites/default/settings.php", "a"); if ($file) { fputs($file, "\$cookie_domain = '.transitions2.org';\n"); fputs($file, "require_once './sites/all/modules/domain/domain_conf/settings_domain_conf.inc';\n"); fputs($file, "require_once './sites/all/modules/domain/domain_prefix/settings_domain_prefix.inc';\n"); fclose($file); } else { drupal_set_message("Can't add domain-related lines to sites/default/settings.php"); }

Hope it helps!

Drupal: Storing data in the user profile

http://sachachua.com/wp/2008/06/02/drupal-storing-data-in-the-user-profile/Mon, 02 Jun 2008 17:09:36 +0000If you want to store data in the user profile, here's an example of a quick and dirty way to do it:

global $user;if ($user) { $array = array('fieldname' => 'value_to_save'); user_save($user, $array);}

Then access it with $user->fieldname. For more configurability, check out the Profile module.

Drupal makes me feel like Bruce Lee + Jackie Chan

http://sachachua.com/wp/2008/06/02/drupal-makes-me-feel-like-bruce-lee-jackie-chan/Tue, 03 Jun 2008 01:28:15 +0000

Emacs Gnus: Filter Spam

http://sachachua.com/wp/2008/06/07/emacs-gnus-filter-spam/

Page 161: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sun, 08 Jun 2008 00:19:10 +0000(draft for an upcoming book called Wicked Cool Emacs)

Ah, spam, the bane of our Internet lives. There is no completely reliable way to automatically filter spam. Spam messages that slip through the filters and perfectly legitimate messages that get labelled spam are all part of the occupational hazards of using the Internet.

The fastest way to filter spam is to use an external spam-filtering program such as Spamassassin or Bogofilter, so your spam can be filtered in the background and you don't have to spend time in Emacs filtering it yourself. In an ideal world, this would be done on the mail server so that you don't even need to download unwanted messages. If your inbox isn't full of ads for medicine or stocks, your mail server is probably doing a decent job of filtering the mail for you.

Server-based mail filtering

As spam filtering isn't an exact science, you'll want to find out how you can check your spam folder for misclassified mail. If you download your mail through POP, find out if there's a webmail interface that will allow you to check if any real mail has slipped into the junk mail pile. If you're on IMAP, your mail server might automatically file spam messages in a different group. Here's how to add the spam group to your list of groups:

1. Type M-x gnus to bring up the group buffer. 2. Type ^ (gnus-group-enter-server-mode). 3. Choose the nnimap: entry for your mail server and press RET (gnus-server-read-server). 4. Find the spam or junk mail group if it exists. 5. Type u (gnus-browse-unsubscribe-current-group) to toggle the subscription. Subscribed groups will

appear in your M-x gnus screen if they contain at least one unread message.

Another alternative is to have all the mail (spam and non-spam) delivered to your inbox, and then let Gnus be in charge of filing it into your spam and non-spam groups. If other people manage your mail server, ask them if you can have your mail processed by the spam filter but still delivered to your inbox. If you're administering your own mail server, set up a spam filtering system such as SpamAssassin or BogoFilter, then read the documentation of your spam filtering system to find out how to process the mail.

Spam filtering systems typically add a header such as "X-Spam-Status" or "X-Bogosity" to messages in order to indicate which messages are spam or even how spammy they are. To check if your mail server tags your messages as spam, open one of your messages in Gnus and type C-u g (gnus-summary-show-article) to view the complete headers and message. If you find a spam-related header such as X-Spam-Status, you can use it to split your mail. Add the following to your ~/.gnus:

(setq spam-use-regex-headers t) ;; (1) (setq spam-regex-headers-spam "^X-Spam-Status: Yes") ;; (2) (require 'spam) ;; (3) (spam-initialize) ;; (4)

This configures spam.el to detect spam based on message headers(1). Set spam-regex-headers-spam to a regular expression matching the header your mail server uses to indicate spam.(2) This configuration should be done before the spam.el library is loaded(3) and initialized(4), because spam.el uses the spam-use-* variables to determine which parts of the spam library to load.

In order to take advantage of this, you'll also need to add a rule that splits spam messages into a different group. If you haven't set up mail splitting yet, read qthe instructions on setting up fancy mail splitting in

Page 162: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

"Project XXX: Organize mail into groups". Add (: spam-split) to either nnmail-split-fancy or nnimap-split-fancy, depending on your configuration. For example, your ~/.gnus may look like this:

(setq nnmail-split-fancy'(;; ... other split rules go here ...(: spam-split);; ... other split rules go here ..."mail.misc")) ; default mailbox

(draft for an upcoming book called Wicked Cool Emacs, more to come!)

A geek's guide to Toronto

http://sachachua.com/wp/2008/06/08/a-geeks-guide-to-toronto/Mon, 09 Jun 2008 01:10:30 +0000

• Toronto Reference Library • Royal Ontario Museum • Active Surplus • Linux Caffe • Ontario Science Centre

Gino Ledesma (one of my friends from university) is in Toronto for some training, so I spent the afternoon showing him some of my favorite geek places. =) He was blown away by the size of the Toronto Reference Library (and I showed him Robarts Library, too - no stacks access, though =( ). We enjoyed walking through the Royal Ontario Museum (particularly the Philippine section with, err, basket-like cellphone holders). Guidebooks wouldn't have told him about Active Surplus or the Linux Caffe. =) And I might go with him to the science centre next weekend. (I love the place!) Ah, geeks hanging out...

Weekly review

http://sachachua.com/wp/2008/06/08/weekly-review-15/Mon, 09 Jun 2008 01:30:32 +0000

Page 163: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

It seems that all I did at work this week was struggle with CSS and HTML. (Darn you, IE6!) And there's more of that next week, too. Ah, front-end development work. I'm learning way more than I want to know about the inconsistencies of the box model, floating behavior, and other quirky things that plague web designers. There's a reason I stick to back-end code...

The rest of life has been quite interesting. Between my recently-rejoined krav maga classes and the Manila-hot humidity that's been hitting Toronto recently, I've been... hmm... glowing, right, that's the term. Whatever happened to "temperate" weather? Oh, well, at least it's sunny. And when it isn't sunny, nature takes care of watering the garden for me.

My cantaloupe seeds have finally germinated. I had started another batch indoors after birds and resident wildlife snacked on the seeds I optimistically sowed outside. ("But it said late May to early June!" "Also requires at least five nights of more than 23'C." "Oh.") Two of those seeds grew roots, so I carefully planted them outside. I'm not sure if they'll manage to grow before winter sets in, but it's fun even as a science experiment. The rosemary sprigs are growing quite well, too, and I hope a few of them will take the hint and start branching out. I've sown some lettuce and basil seeds as well, although I suspect that rabbits will get to the lettuce long before we will.

Slight progress on my book - half an article written. I hadn't really explored Emacs' spam-filtering features before, so this is new ground for me.

Next week: two presentations and more development work. Oh, and more yoga and krav! We'll see if I survive.

Learning Japanese? Here are some useful resources

http://sachachua.com/wp/2008/06/09/learning-japanese-here-are-some-useful-resources/Mon, 09 Jun 2008 13:07:51 +0000

One of my friends is planning to learn Japanese, so I thought I'd put together some tips for him and for other people.

If you're planning to learn Japanese, I have some Japanese-related bookmarks on del.icio.us that you might find useful. =) You might also want to check out what other people have bookmarked for japanese+language.

I particularly recommend this quick and dirty guide to Japanese, Jim Breen's WWWJDIC and the example sentence search. You can download the examples file from the FTP server for totally awesome local lookup. I wrote some code in Emacs to make this easier (and to insert random taglines into my blog posts =) ).

Good luck and have fun!

IBM Pass It Along - social learning!

http://sachachua.com/wp/2008/06/10/ibm-pass-it-along-social-learning/Tue, 10 Jun 2008 13:48:22 +0000

I'm happy to share that one of my favorite Enterprise 2.0 tools within IBM is now available on the Internet. IBM Pass It Along is now available on Alphaworks, a public IBM site for people interested in trying out emerging technologies--all you need is a free ibm.com account. IBM Pass It Along is about sharing what you know and learning from other people. If you have a how-to you'd like to share, create a topic for it. If

Page 164: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

you're curious about something, request it. If you're just curious about the crazy tools we use within the enterprise, check it out! =)

Here's what I love about Pass It Along, and I think you'll love it too:

• You can find out who's learning a topic and see what else they're interested in. Sharing what I know becomes a lot more fun when I can see who's learning, because it gives me feedback that what I'm sharing is useful. Lists of people are much better than anonymous hit counts because I can view their profiles to see what else they're interested in.

• You can learn from other people's contributions. People can add links, related presentations, discussion topics, and other updates. For example, the "How to Make the Most of Your Commute" topic I started within IBM drew lots of interesting suggestions.

• You can create a place for discussions. I give a lot of presentations, and Pass It Along topics are a terrific place to hold follow-up discussions and reach out to more people. I post my presentation material using the Presentation Wizard and include the URL of the Pass It Along topic on my slides. It's a great way for learners to connect with each other, too.

I also really like how a newbie like me can create value for other people by sharing what I'm learning. =) Whee! I'm copying some of my public content over, and you can find my topics on Pass It Along.

IBM Pass It Along on Alphaworks is a public site open to everyone. Access controls will follow soon, so you can limit topic access to just your organization if needed. IBM Pass It Along is even better inside your organization, where you can link it up with your employee directory or do all sorts of other cool stuff.

Check it out - it might be a great fit for your organization!

IBM Pass It Along

Notes on backporting modules from Drupal 6 to Drupal 5

http://sachachua.com/wp/2008/06/10/notes-on-backporting-modules-from-drupal-6-to-drupal-5/Tue, 10 Jun 2008 17:46:42 +0000

I needed a web statistics module for a Drupal-based project at work, and integrating an external web statistics module seemed to be the way to go in terms of performance and features. BAWstats integrates the popular AWstats web statistics analyzer into Drupal. The module was developed for Drupal 6, so I spent a few hours backporting it to Drupal 5. I don't know if I can send a patch back (might have to do some paperwork), but anyway, here are some notes so that (a) I can remember how to do this in the future, and (b) it might save you some time.

Backporting from Drupal 6 to Drupal 5: Change the menu items

• Move the menu path from the array key to the path attribute. • Rename

page callback to callback and page arguments to callback arguments.

• Remove the file and file path attributes. Move the included files to include_once lines for now, and

Page 165: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

look for instances of include that need to be changed to include_once. Read the included files to check for unintended execution.

• Change tokenized menu items (%/%/%) to ones that dynamically build the menu path (arg(1) . '/' . arg(2) . '/' . arg(3)). Don't forget - this shouldn't be cached.

• Change 'access arguments' => array( to 'access' => user_access( or something similar.

Those were most of the changes I needed to make in order to backport bawstats to Drupal 5. Seems to work so far... =) More notes when I run into other things!

Drupal meetup in Toronto later - 7:00 at the Drake

http://sachachua.com/wp/2008/06/10/drupal-meetup-in-toronto-later-700-at-the-drake/Tue, 10 Jun 2008 17:52:13 +0000Instead of self-defense and yoga classes today, I'm going to the Lullabot meetup for Drupal developers over at the Drake (1150 Queen St W, 7:00 PM - 10:00 PM). Should be fun. =)

Setting up your Drupal development environment

http://sachachua.com/wp/2008/06/11/setting-up-your-drupal-development-environment/Wed, 11 Jun 2008 14:00:12 +0000

People found the 7-minute impromptu braindump I gave at last night's Drupal Toronto meetup useful enough to vote it the best talk, so I thought I'd write it up. =)

Development

• Use source code control. No, seriously. Use it. Religiously. It's going to save you someday. CVS is popular. Subversion is also easy to set up. It's a must when you're working with other people, but even if you're on your own, it's really handy to be able to go back to previous versions or to check your changes.

• Get to know your integrated development environment (IDE). For example, I use Eclipse + PHP Development Toolkit (PDT) + Xdebug, and the keyboard shortcuts save me so much time and make it easier for me to think about my code instead of thinking about editing my code. F3 to jump to a function definition, Ctrl-Shift-R to open a file by typing part of the filename, Ctrl-space to complete text... I've also gotten XDebug integration to work, so I can step through code and examine variables without putting var_dump everywhere. Know your tools.

• Add the XDebug extension to your PHP installation. Even if you don't get XDebug integrated with Eclipse, you'll like the new and improved var_dump and other debugging functions. I've heard good things about Zend Debugger, too.

• Put your entire Drupal directory into your project in the IDE, not just your site-specific code. You can even check your entire Drupal directory into your source code control repository. This makes it easier to look up functions in Drupal core, not just your sites/all/modules directory. You _could_ version-control just your site-specific code (profiles/, sites/, etc.), but set-up becomes a little more complicated.

• Use an installation profile to manage your configuration. Experiment with things using the administration interface, then create/update an installation profile that sets up a brand-new Drupal installation. This will save you lots of time and head-scratching when you need to reproduce your setup.

• Make starting from scratch easier, and do it often. I have a Makefile that drops my database and

Page 166: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

recreates it, resets my settings.php, and even opens up a Firefox browser that uses my installation profile to set everything up from scratch. Drupal 5: Copy your settings.php to settings-default.php or something like that before you install your system, then copy settings-default.php over settings.php when you want to refresh your setup. Drupal 6: Delete settings.php when you want to refresh your setup.

Firefox

• Use multiple profiles. You can start completely independent Firefox processes by using profiles. For example, you could have your default profile with all the bells and whistles, and a test profile with just FireBug. You can log in as different users, too. Use this command to start a new Firefox process: firefox -ProfileManager -no-remote

• Install and use FireBug. Best web development extension ever. I use this to examine the document object model, debug my CSS rules, experiment with my CSS and HTML on the fly, and monitor the network requests.

• Set up quick searches for drupal.org and php.net. You can define quick searches by creating bookmarks that use keywords and %s placeholders in Location:. Example: Do a quick Google-search of Drupal.org by adding a bookmark with Location: http://google.com/search?q=inurl:drupal.org+%s and Keyword: gd (short for Google Drupal). To use your new quick search, type Ctrl-L or Alt-D to get to the address bar, then type gd keywords. Set up ways to search php.net and drupal.org/project, too. =)

Multi-site / virtual hosts

• Simplify switching between your computer and your remote server. If you've set up your local system for virtual hosts and you have a remote server for testing, you'll want to be able to switch between testing locally and testing remotely. Set up your local system to respond to all the domain names for the site (ex: example.com, foo.example.com, bar.example.com) and a local subdomain (ex: local.example.com). Set up your remote server to respond to all the domain names for the site (example.com, foo.example.com, bar.example.com) and a remote subdomain (ex: test.example.com). Then set up your /etc/hosts (c:\windows\system32\drivers\etc\hosts on Microsoft Windows) to look like this:

127.0.0.1 localhost local.example.comremote.server.ip.address test.example.com

127.0.0.1 example.com foo.example.com bar.example.com#remote.server.ip.address example.com foo.example.com bar.example.com

local.example.com will always resolve to your computer, test.example.com will always resolve to the other computer, and everything else depends on which line is active. # comments out a line. When you want to switch to testing on the remote server, add # to the beginning of the line for 127.0.0.1 example.com... and remove # from the line for your remote server. If you want to automate this even further, write a script that swaps different /etc/hosts files around.

Hope that helps! I'd love to find out what you've done to tweak your environment. Feel free to share your tips here!

Storytelling in presentations

http://sachachua.com/wp/2008/06/12/storytelling-in-presentations/Thu, 12 Jun 2008 13:17:53 +0000

Page 167: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Angelina Gan asked me if my storytelling approach is based on Peter Orton's (wonderful!) presentation on using storytelling in business, so I thought I'd share how I started telling stories and what my favorite resources are.

I don't know exactly why I started telling stories instead of listing bullet points. Maybe it was because of the never-ending march of bullet-ridden presentations. Maybe it was because I kept skimming through business books that were all numbers or pithy sayings without anecdotes to make those statements come alive. Maybe it was because I watched terrific presentations highlighted on the Presentation Zen blog. Maybe it was because of the books I read about telling success stories to deepen your relationships with people, influencing change through story-telling, and telling effective stories. Whatever it was, I started collecting stories and sharing my own.

I'd taken up writing flash fiction (really short stories, typically 55 words long) in 2005, and that turned out to be surprisingly useful. Reading other people's flash fiction stories taught me that you could tell a story with conflict and character development in a paragraph or two, and that it was fun keeping an eye out for story material. I had originally gotten interested in flash fiction because it felt like a code optimization challenge, and because the stories were short enough for me to write during lunch or a subway ride, on pieces of paper or even on my cellphone. I never felt particularly literary (and in fact had gotten Ds in my English classes in university for lack of effort), but finding and telling stories (or in this case, making them up!) turned out to be a lot of fun.

So when I came across the business applications of storytelling--from social networking to influencing technology adoption--and I saw how it dovetailed with my passions, I jumped right into it. I started collecting stories. For example, I started my master's research by collecting stories about how people used Dogear (an enterprise social bookmarking system by IBM) so that I could figure out how people were using it in their work and how they could use it even more effectively. I collected stories to help me not only convince people to try out new tools but also give them models to follow and people they could relate to. I also told stories about what I was doing and how I was doing it, and that helped me get to know a lot of people as well. Besides, I love "catching other people doing well"--telling other people's success stories, especially when they don't realize they're doing well.

The results? People act on what I share. They make my stories their own. Not only that, people also tell me that they enjoy my presentations and that my enthusiasm is contagious. Giving presentations - telling stories, having conversations - has become a lot more fun.

How do I find stories? I keep an eye out for things that happen in real life, like this conversation I had with J-. There's a seed of a story in there, and by telling part of the story, I make it easier to remember later on. I also enjoy reading people's blogs, because they tell stories from their experiences as well. I read a lot - it certainly helps to have a public library within walking distance. Whenever I come across a particularly good story in any of these sources, I write it down, I bookmark it, I add it to my notes. When I work on presentations, I've got a general idea of relevant stories that I've come across, and then I use my notes to look up the details.

For example, I was preparing a presentation about University Relations and the Net generation. I didn't want it to be a boring list of bullet points or advice. I could've rehashed the presentation I gave at the Technical Leadership Exchange, but I wanted to make the most of my opportunity to speak with a group that could really make the most of Web 2.0. I remembered that some months ago, I had come across a terrific internal blog post about how a demonstration of IBM's internal social tools got an audience of university students really interested. I had bookmarked it as a story about Web 2.0 and recruiting, knowing that it would be useful someday. Well, that someday had come! I checked my bookmarks, went back to the blog post, refreshed my memory, and added it to my presentation. I'm sure that the story will make my point more effectively than a list of bullet points.

Page 168: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

How can you get started with storytelling? Keep an eye out for story material. Develop a system for filing those stories so that you can find them again when you need them. Tell stories. I've linked to some of my favorite books in this post - check them out for more tips. Storytelling is effective and fun. Enjoy!

How to scale presentations up or down - the art of timing

http://sachachua.com/wp/2008/06/12/how-to-scale-presentations-up-or-down-the-art-of-timing/Thu, 12 Jun 2008 14:02:05 +0000

(More braindumping - not quite at the article level yet! =) )

When I plan presentations, I always start by coming up with the key message based on the objectives and the expected audience. The key message needs to be something I can explain in at most 30 seconds, and it needs to answer the audience's question: "What's in it for me?" The key message also needs to give people a way to act on that message. (Yes, even FYI presentations.) If I can't explain what I want to say in 30 seconds, I mindmap and brainstorm and turn things over until I can.

There's no point in working on the rest of the presentation until you know what you want people to take away. If you can't say what you want to say in 30 seconds, think about the topic until you understand it well enough to say it in 30 seconds. When you figure out what your 30-second pitch is, you can use that as your abstract and you can use it in networking conversations at the conference/event/wherever. Very useful.

After I determine the key message, I pick three or so supporting points. This is also where I try to find a clever navigational structure or mnemonic to help me remember my points and to help the audience remember my points. Alliteration and acronyms are my favorite tools, but I occasionally come across a good metaphor, too. If I can't find anything that fits, I try to at least get the rhythm of the words to sound right. (No, I haven't given a presentation in iambic pentameter yet - but I'm tempted to! ;) ). A thesaurus helps me find synonyms that fit, and a dictionary (I usually use a kid's dictionary) helps me spark the creative process with random associations and browsing. (Flip it open to a random page, pick a random word, and see if that's useful.)

Resist the temptation to cram lots of points into your presentation. Find the minimum that you need to support your key message, then get those across clearly.

So there's the 30-second pitch, the supporting points can be summarized over three minutes or so, and you can wrap it up and explain the next actions in another minute. When the presentation works as a 5-minute talk, it's time to flesh it out to a 15-minute to 30-minute talk. You can do that by adding stories to the supporting points, keeping the key message in mind. Stories can take varying levels of detail, so they're pretty flexible.

To take a talk from the 30-minute mark to the 60-minute mark, add more interaction and deeper stories. Good interaction tends to require a longer presentation slot because you need some time for people to shift into discussion mode (and you have to be comfortable with silences), and you don't want to cut discussions off too early. If you're doing interaction, don't make question-and-answer the end of your presentation. Move question-and-answer into your presentation, then take advantage of the opportunity to summarize both your presentation and the discussion with a strong ending, emphasizing the next steps.

Longer timeslots such as 1.5 hours or 4 hours or even days need to be broken up with more interaction and variety. From my university classes (both attending and teaching), I learned that attention tends to flag after about 20 minutes. Mix things up and give people time to process the information. (And to stretch!) Resist the temptation to structure your presentation as one loooong presentation. Break your presentation up into more

Page 169: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

presentations, because it's important for people to have review and closure.

In this approach, you're building up from the core message. As long as you can make that point, you don't have to worry about leaving material out. If you don't overload your slides, you can quietly trim material in order to accommodate a particularly good discussion (or a long rant about something else) and people won't feel cheated. =) If you find out that you have to talk for longer than expected (say, the next speaker is having technical difficulties), then add more detail or more stories or more interaction. If you find out that you have to talk for shorter than expected (say, the previous speaker had technical difficulties ;) ), focus on the key message and the supporting points.

Try it out for your next presentation. Start with your 30-second pitch, then build on it. When you get used to adjusting the timing on the fly, you'll always be able to end on time.

Programmatically creating CCK nodes in PHP (interaction with the Path module)

http://sachachua.com/wp/2008/06/12/programmatically-creating-cck-nodes-in-php-interaction-with-the-path-module/Fri, 13 Jun 2008 02:29:28 +0000

I've been experimenting with the Drupal Content Construction Kit, which promised to be a more flexible way to deal with custom node types in the Drupal content management system. However, I'm a finicky sort of person who likes being able to reproduce the setup from a fresh start, and CCK isn't well-known for that. In fact, CCK nodes aren't well-known for being easy to move from one server to another.

Following the instructions for programmatically creating, inserting, and updating CCK nodes will get you most of the way there. Here are some of the gotchas you'll want to watch out for.

I was using Path to define aliases for my nodes and the path aliases were just not getting created. After lots and lots of tracing with XDebug, I found out that it was checking for user_access, but no user was active during the installation process. Solution: create the admin user and load it into a global $user variable.

I also spent a fair bit of time being very annoyed with CCK and creating nodes programmatically in my install profile. Turns out that you first need to use install_add_content_type to create the base node type, _then_ follow the instructions to drupal_execute the form that adds custom fields.

Here's a quick sketch of the code:

function profilename_profile_final() { // lots of other code here install_add_user('admin', 'admin', '[email protected]', array(), 1); global $user; $user = user_load(array('uid' => 1)); install_add_content_type(array( // take this from Install Profile Wizard )); node_get_types('types', NULL, TRUE); // flush cache $content = array(); $content['type'] = array( // take this from content copy export ); $content['fields'] = array( // take this from content copy export );

Page 170: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

_install_create_content($content); }function _install_create_content($content) { global $_install_macro; $type_name = $content['type']['type']; $_install_macro[$type_name] = $content; include_once drupal_get_path('module', 'node') .'/content_types.inc'; include_once drupal_get_path('module', 'content') .'/content_admin.inc'; $macro = 'global $_install_macro; $content = $_install_macro['. $type_name .'];'; drupal_execute('content_copy_import_form', array('type_name' => $type_name, 'macro' => $macro)); content_clear_type_cache();}

Now I feel more confident about CCK...

Exploring the senses at the Ontario Science Centre

http://sachachua.com/wp/2008/06/15/exploring-the-senses-at-the-ontario-science-centre/Sun, 15 Jun 2008 22:36:26 +0000

A friend from university was in Toronto for the week, so that was a good excuse to go to the Ontario Science Centre. The current special exhibition is about Mars exploration and worth a visit, but the highlight of my trip was a challenge posed in the Weston Family Innovation Centre.

The science centre assistant explained that we were going to be blindfolded, and we had to find our way from a random point in the room back to the stairs where we began. Before the blindfolds were put on, we had five minutes to familiarize ourselves with the layout of the room and the different sounds and textures. (No smells to work with, and I certainly wasn't going to taste anything!)

J- and I went first. We were blindfolded and taken somewhere, led around a few times, and sent on our way. Gino accompanied me and W- accompanied J- - not to help, but just to make sure that we didn't bonk our heads on something. When it came to finding our way back, we had to work by ourselves.

I heard the faint tones of a piano keyboard to front-left, and I knew that was the oil-bubble exhibit. (I'd played with it a number of times.) I also knew that the exhibit was close to the center of the room, so walking away from it would get me to some kind of wall. On the way to the wall, I felt the tall plastic poles of the craft center in which I'd once spent an hour or two creating random things using felt and fuzzy pipe cleaners. I knew where I was. Finding the wall was then easy, and I knew which way to go. After that, it was just a matter of tracing the wall (which took me into a little-used maintenance area, apparently) and getting back to the stairs.

As I stepped on the red floor that marked the goal area, the science centre assistant noted my time and said he was blown away. It turned out that the science centre had been running the challenge for five months, and at 4 minutes and 29 seconds, I was just a few seconds behind the first-place record established by a guy who was actually blind and who had done the challenge twice. I laughed and told him that my background in computer science meant that I'd written my share of maze-solving problems. Also, I'd been into assistive technologies in my senior year, so navigating blind didn't scare me--I knew totally awesome people who could do it. =)

I didn't mind navigating without sight, building the map in my head. In fact, I enjoyed listening to the different sounds and figuring out where they were, guessing my location and confirming or adjusting my mental model with each thing I ran across. The experience reminded me of the Tactile Dome in San Francisco's Exploratorium (another wonderful science center!), where I had a lot of fun figuring out what

Page 171: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

objects were embedded into the walls.

If I were to do it again (which is unlikely as this was the last day of the challenge), I would use just one long cardboard tube instead of trying to navigate with two, as I liked having a free hand to feel the textures and make sure I was on the right track. I would sweep the tube in front of me like the way that blind people use their cane to quickly check their path, and I would walk faster because I could trust it to tell me where the wall was.

That's what it felt like, and I encourage you to give it a try if you encounter this challenge yourself. =) (Maybe your local science centre might find it interesting!)

Weekly review

http://sachachua.com/wp/2008/06/15/weekly-review-16/Sun, 15 Jun 2008 23:25:33 +0000

This week at work was mostly characterized by Drupal. I finally figured out how to use CCK and Views in Drupal 5, and I've even figured out how to programmatically create them (after much wailing and gnashing of teeth because of interactions with Domain Access and Path!). I'm looking forward to using this knowledge for awesome.

I also attended a local Drupal meetup. I ended up giving a 7-minute impromptu braindump on how to set up a great coding environment for Drupal. This won Best Talk and an extra-large T-shirt with the label "node monkey" (a clever reference to "code monkey" and Drupal's node-based architecture). I haven't figured out exactly what to do with that extra-large shirt yet, but it will involve T-shirt surgery so that I can wear it to the Drupal meetups without drowning in it. I may even have a series of hacks, if I plan it carefully. =)

I enjoyed giving presentations about social networking and Millennials during a virtual IBM conference and during a meeting of the IBM University Relations group. Next week, I'm going to give a talk on networking for new hires for the GBS Foundations new hire group.

Krav maga and yoga continue to be fun. I didn't go last Tuesday because of the Drupal event, but I made up for that by skinning a knuckle during our Thursday session on combinations. Yesterday, we practiced quick offenses--slaps and headbutts from a neutral position. I have no illusions about my abilities--I'm definitely not going to pick a fight!--but it was fun exploring these things with such helpful and encouraging people in the class.

I had a lot of fun at the Ontario Science Centre this weekend, too.=)

Tonight, I hope to write most of an article that I've promised a colleague. Next week, I plan to wrap up most of the work for my Drupal-related project and resume working on an internationalization-related project. I'd also like to do more writing, which means resisting the siren call of Lego Indiana Jones... (But it's so pretty on the PSP!)

Networking for new hires

http://sachachua.com/wp/2008/06/19/networking-for-new-hires/Fri, 20 Jun 2008 00:59:53 +0000

I gave a presentation on social networking for new hires to the GBS Application Services Foundations new

Page 172: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

hire network.12 people attended, and a few more dialed in, including one person from Poughkeepsie. (Yay international companies!) We had a lot of fun during the roundtable introductions. After things settled down, I gave my presentation.

The key thing I learned while preparing the presentation is that people can get by without paying special attention to social networking, but some effort can help people really transform their lives into extraordinary ones. I talked about the intersection of passion, knowledge and skills, and opportunities. If you learn more about what you're passionate about, you'll find or create or attract opportunities to learn more about and practice those passions or to use your knowledge and skills. The more you learn, the more you'll be able to appreciate your passions, and the more opportunities will be open to you. It's a beautiful cycle that makes things get better and better.

I also gave a number of quick tips on how to be more effective at social networking using events, conversations, notebooks, business cards, personal sites, blogs, articles, presentations, and other tools and opportunities. All these things can help you learn, reach out, and share what you're learning.

The key thing I learned while giving this presentation was that although people could quickly identify passions outside work, job-related passions didn't come to mind. I believe that it's possible to love your work. My dad taught me this. I know that even if there are difficult days and boring days and lost days, if there's that underlying passion, all those days will be worthwhile.

I'm glad to say that my work allows me to exercise some of my passions. So, what am I passionate about?

I'm passionate about helping people connect. I believe that interesting things happen when we bring different kinds of people together, and that's why I love how blogging and other forms of social media allow people to bump into people outside their teams. I not only get to help people connect and collaborate, I even get to help companies figure out how to help their people do so.

I'm passionate about helping new hires connect with the rest of the organization and vice versa. I believe that a good social network can not only help new hires learn what they need to learn but also get opportunities to discover and make the most of their passions. I want to help new hire networks challenge and catalyze people's growth in addition to providing basic social support. I want to help new hires get connected and share what they learn. Because I've been helping people connect using these new tools, new hire networks approach me to find out how I can help them. =)

I'm passionate about helping people share what they're learning. I believe that teaching as you learn helps you learn more effectively. I want to help people share the tidbits that they're learning and passing those tidbits along to others who are learning too. I not only get to lead by example, I also get to coach others.

I'm passionate about spreading enthusiasm, energy, and passion. I believe that people can be happy at work and in life. I want to learn from people who are happy and successful, I want to be an example to others, and I want to help others along the way. I not only get to share my passions with my coworkers and with other people outside the organization, I also get to encourage others when they need that extra burst of energy.

I'm passionate about communication skills, presentations, public speaking, and storytelling. I believe that presentations should be more than just bullet points and that communication should be more than just talking at people. I want to share what people are learning, inspire people to action, and help them inspire other people in turn. I not only get to learn more about communication skills and practice them by frequently giving presentations, I also get to share what I'm learning and influence the way other people communicate.

What are you passionate about? What knowledge or skills do you want to develop, and what opportunities

Page 173: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

would help you be even more effective?

Paperwork

http://sachachua.com/wp/2008/06/19/paperwork/Fri, 20 Jun 2008 01:08:45 +0000Check out this strip from PHDComics on the joys of visa paperwork. Been there, done that... <laugh&gt

Weekly review: Week ending June 22, 2008

http://sachachua.com/wp/2008/06/22/weekly-review-week-ending-june-22-2008/Sun, 22 Jun 2008 17:23:09 +0000More Drupal work! This week, I wrapped up the first phase of my project at work. I'm starting to feel comfortable with Drupal--particularly the thorny combination of CCK, Views, Domain Access, and PHP code. I've deployed the code to the quality assurance server, documented my installation procedure in a script, and even set up a convenient administration interface to help the testers put the system through its paces. I'm starting to feel like a proper software developer. Oh my! I gave a presentation on social networking for new hires on Thursday, and I learned a lot while preparing and presenting that presentation. I don't have any presentations scheduled until mid-July, when I have three presentations scheduled in one week (two replays and one new presentation on technology evangelism). Time to start preparing for them... In self-defense and krav maga class, we practiced groundwork, side kicks, back kicks, and getting out of side head-locks. I've got a long way to go before I can kick as well as the others do, but the guys make it fun. We often warm up with a shoulder-tapping game, which I like. I sometimes forget to breathe, though, and that makes me tire faster! <laugh> Gotta work on that. It's been quite an indulgent week on the personal front. On Friday, W- and I made up for long workweek days by taking off early and wandering around downtown. He introduced me to Burrito Boyz, this hole-in-the-wall burrito place that seemed to be quite a favorite among students and clubbers. Yummy! And then on Saturday, W- and I went on a classic dinner-and-a-movie date: an absolutely scrumptious elk steak dinner at the Corner House restaurant (the soft-shell crab starter is also not to be missed) and a movie (Iron Man, which got great reviews on RottenTomatoes). We even squeezed in a concert. Video Games Live happened to be playing near the movie theatre, so we listened to a number of segments before watching the movie. I plan to spend the next week helping the quality assurance team test the system we've been working on, transferring some of my work to the new hires coming on board (I already know one of them! =) ), and preparing for the next few weeks. From mid-July to late August, my schedule's going to be quite a whirl. Presentations, working remotely in Ottawa, then off to the Philippines for Diane's wedding... Lots of stuff going on!

Web 2.0 @ Work: Creating a professional profile

http://sachachua.com/wp/2008/06/22/web-20-work-creating-a-professional-profile/Sun, 22 Jun 2008 19:51:02 +0000Do you have a professional website, or do you just leave your professional profile up to random Internet search results or sparse corporate directory listings? Although we have a terrific centralized corporate directory at IBM, I've found it very useful to also have a simple professional profile with a short biography, my contact information, and links to the other services I use on the intranet and on the Internet. Having one site that brings all of these things together makes it easier for me to help people get to know who I am, what I'm passionate about, and where they can find out more about me. I include this URL in my e-mail signature and in my presentations so that people can find me easily. I use Wordpress as a content management system so that I can quickly add links and pages without editing HTML. On my internal site, I use the Blueprint theme for Wordpress. It's clean and easy to read, and it fits with Big Blue's color scheme. The front page explains who I am, what I do, and what my team does. It also links to places where people can check out my

Page 174: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

bookmarks, download my latest presentations, and so on. To set up something like it:

1. Download and install Wordpress. 2. Download and unpack the Blueprint theme to your wp-content/themes/ directory. 3. Choose the Blueprint theme from the Wordpress administration interface. 4. Create a page called "About". Fill it in with details about yourself. 5. Set the About page as your site's front page in the Settings - Reading menu. 6. Create links to your profiles on other services and other related websites.

Trudge, trudge, trudge

http://sachachua.com/wp/2008/06/22/trudge-trudge-trudge/Sun, 22 Jun 2008 23:50:11 +0000Oh no, I've hit the slump. I spent some time working on the Wicked Cool Emacs today. Spam filtering - not something I'd set up before. I'm writing it because I promised to write it, but I can't shake off the feeling that this part would be better done by someone who's passionate about Emacs and spam filtering. I have Google handle my spam filtering for me, so I haven't needed to do anything more sophisticated. Still, not everyone's going to have the same set-up, so it would be good to document that too. I'm tempted to jump to a different chapter and start working on that, just to make working on the book fun again.

Holding my (quality assurance) horses

http://sachachua.com/wp/2008/06/24/holding-my-quality-assurance-horses/Tue, 24 Jun 2008 13:35:17 +0000

Okay, I really shouldn't be making changes to a live system, even if we're doing the quality assurance testing and there are lots of bugs I'm just itching to mark "closed". =) It just becomes too much of a headache, trying to fix all the new bugs introduced by the fixes for the old ones... <laugh>

You'd think that I'd know this lesson by now. The last time I had a majorly stressful deployment was when I created a registration system for my university's alternative class program. It was working all very well and good, and then--I don't know, was it a feature request or a last-minute bug--I needed to modify it while everything was running in production. I remember getting into that heightened alertness that I used to feel during programming competitions, when I could feel the time pressure but I could also feel myself actively calming down and focusing on what I needed to do, muttering the mantra "don't panic, don't panic, don't panic" as I tried to make small changes that wouldn't break anything currently running.

Today, I'm not going to do that, and I hope to keep avoiding the stress. Today, if I spot any defects I want to close, I'll work on it on my local system, commit the code, and wait until we close this phase before updating the server. =)

The apprentice's road is long and full of lessons... =)

Quick weekly report, week ending June 29, 2008

http://sachachua.com/wp/2008/06/30/quick-weekly-report-week-ending-june-29-2008/Mon, 30 Jun 2008 04:20:07 +0000

Next week, I'm going to write these weekly updates on Friday or something, so they don't get squeezed into

Page 175: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sunday night. =)

This week:

• Work: Welcomed new team member on board. Also, a CSS person joined our project team, hooray! • Work: More Drupal work, yay! Going through bugs reported in QA process. • Fight/fitness: headlocks, knees, 360' defenses • Fun: Three movies (so spoiled!): Wall-E, You Don't Mess with the Zohan (surprisingly funny), and

Kung Fu Panda. Shopped for a few things to make life even better.

Next week:

• Drupal, Drupal, more Drupal. =) • Promised to map Web 2.0 for business resources within the company. Time to break out the

visualization tools. • Promised to put together a guide for speakers. • Promised to put together some resources for new hires. •

Hooray, figured out Drupal 5 multi-step registration form with validation and invites

http://sachachua.com/wp/2008/06/30/hooray-figured-out-drupal-5-multi-step-registration-form-with-validation-and-invites/Mon, 30 Jun 2008 20:45:23 +0000The validation of multi-step forms in Drupal 5 was much less scary than I thought it would be, or maybe I lucked out by basing my code on something that already worked. =)

I had spent last Thursday and Friday searching the Internet for people's blog posts about the topic. I came across exact descriptions of the problems I encountered, but no solutions--only notes about critical bugs in Drupal 5. Asking the developers in #drupal didn't yield any tips, either. They told me to get ready for a world of pain.

Then I remembered that the password-reset module used a multi-step form, and validation actually worked. I had already incorporated part of the source code into one of my modules, and it was easy to extend that example. I defined a new multi-step form in my PHP code as a replacement for the system form in user/register. There were some complications around the fact that other modules modify the behavior of user_register, but I got the code to validate and submit the data. And it worked!

No code snippet, sorry. Too many interactions for me to explain neatly. Some hints:

• You can use logic to set the value of $step.• Pass information to the next step using hidden fields.• Make sure the step field is included in your form template. Watch out for this if you've got a form

template that specifies all the fields explicitly.• Captcha uses hook_form_alter to add a captcha based on the form_id. It doesn't know about steps.

You'll need your own hook_form_alter to unset the captcha if you don't need it on the other steps. Make sure your module runs after captcha by changing the weights in the system table.

So now I have a multi-step form that can skip step 1 (employee verification) if a valid invite code is provided, asks for CAPTCHA once, and does all the validation and user registration magic. Hooray!

Page 176: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Enough time: a new hire's reflections

http://sachachua.com/wp/2008/07/01/enough-time-a-new-hires-reflections/Wed, 02 Jul 2008 02:45:04 +0000

After one of the new hires read my blog, she asked me, "How do you find the time to do what you do?" This was after I'd sent her a couple of useful links, so I didn't think she meant it in the "You have too much time on your hands" kind of way. I said that I saved lots of time and and I use that time to get good enough at what I do so that people want me to do what I want to do. After reflecting on the question, though, I realized that my answer is at least half-wrong.

It's not about time management or productivity.

I probably work less than most new hires do. I don't work long hours because my evenings and weekends are full of wonderful things to do. (Okay, I do some work in the evenings and on the weekends, but that's because it's fun.) I've also kept a careful rein on the urge to immerse myself in work because I've heard that it can take over one's life. This is not to say that people who live for work have made the wrong choice (we owe so much to people like them!), but I like the balance I have.

I don't think I work significantly smarter than other people do. This is not about tips for handling e-mail faster or to make better use of your downtime. I've read a good number of productivity books and blogs, and I've incorporated many of their suggestions into my habits, but that's really more to minimize frustration than to trim every last minute and streamline my daily routines. Besides, all these things are things other people can do. Whenever I come across something that saves me time, I try to teach it to other people--lifting as I climb. I'm not looking for a competitive advantage. I want to make the path even easier for other people than it was for me.

Besides, it's difficult to compare productivity anyway. Let's take my current project. I can read and figure out PHP code quickly, but it takes me forever to do cascading style sheet designs for websites. Am I faster or slower than my teammate? I don't think it matters. My manager and my team members are happy with my work. I fulfill my end of the deal, and I help other people work more productively as well. I'm happy with my work and how I spend my time, and that's probably the best result.

So if it's not about longer hours or greater productivity, what's the deal, then?

These three things are true about time: you will always have the same amount of time in one day as other people do, there will never be enough time to do everything, and there's plenty of time to do the things that matter. The first point is the answer to "Where do you find the time to do this?" The second point is what stresses lots of people out. The third point is what makes all of that easier to deal with. It's like the difference between a half-empty glass and a half-full glass. If you're stressed out because you feel you don't have enough time, you'll feel even worse and you'll use up more energy when you're doing things. If you're happy that you have the time to do a number of valuable things and maybe even a little more, you'll feel better and you'll bring that energy to your work and your life. So much of happiness is in how you see things.

What matters? For me, my formal responsibilities matter. My team relies on me to do certain kinds of work. I can see the value in what I'm doing, and I know that if I do a good job at what I do, I help other people create even more value doing the work they do. So yes, my work matters.

Page 177: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

But my formal responsibilities aren't everything. Even when it comes to work, I feel that it's important for me not to run totally flat out. Some people relish that kind of challenge. Me, I can probably pull it off as a sprint, but not a marathon. I'm not the kind of person you want working 80-hour weeks, schedule packed to the brim. I need gaps of unstructured, potentially "unproductive" time.

Where does that "unproductive" time go? I use that time to reflect, to learn, to reach out, and to share what I'm learning.

I regularly reflect on what I've been doing, how I've been doing it, how I can do it better, and where I want to go. This helps me practice relentless improvement. Reflection is such an important part of the way I work and live that when I don't give myself the time to step back, I feel raw, stretched, frayed. I need that quiet time. I need that space to learn, and I need that space to share.

When I learn, I divide my time between focused skill-building (like the way I'd burn through twenty books on a single topic or focus on a particular programming platform), general scanning (a feed reader makes it easy to stay up to date), and random-walking in search of serendipitous connections. All three types of learning have given me incredible value, not only for myself but also for other people. Focused skill-building gives me the deep knowledge I can use at work and I can share with others. General scanning lets me fish out just the right example from my memory when we're throwing ideas around at a meeting. Random-walking helps me draw connections between different areas.

Reaching out to people lets me find opportunities to learn more and to be of even more help. I'm a little shy about inviting people out for a walk or interrupting their concentration with an instant message, but I feel comfortable commenting on blog entries or e-mailing people about something we've talked about. My blog also helps me reach out. People come across it for all sorts of different reasons, such as a search result, an e-mail signature, or a casual conversation. If they find it useful, they sometimes write to say hi or to ask a question. So even if I'm shy or busy working on something else, my blog is always out there, reaching out to people for me.

My blog is also the primary place where I share what I'm learning. Teaching something helps you learn it more effectively, and you can create lots of value by doing so. I spent at least two days struggling with multi-step form validation in Drupal, and I happily spent fifteen minutes writing about it in the hopes of saving other people time. I try to do the same with the other things I learn. Teaching what I'm learning is a natural fit with my reflections. It helps me learn more effectively. It's a terrific way to reach out. I also give presentations, answer questions through e-mail, coach people over the phone, and talk to people. A lot of that material starts out as a blog post, though, as I try to figure out what I want to say and how to say it.

Teaching--whether it's an informal blog post or a dressed-up presentation--is a fantastic way to keep getting extra value from the time you've already spent learning something. It's like what I tell myself when I make a mistake or when I spend a long time trying to figure something out: "You've already paid the tuition. Now collect the paycheck." If you're the one in that situation, you know that the time you spent is gone. You won't be able to get it back. What you can do, however, is not only to learn the lesson, but to get even more value out of it by sharing it with others. It's like passive income, except it's about creating additional value over and over again. A little investment of time now can save lots of people time in the future, and that has a way of working out for you too.

So that's the long answer to "How do you find the time to do the things you do?" I do this stuff because it matters to me. It looks like it matters to other people too, so maybe I'm on to something here. I hope it works for you too!

Page 178: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Awesome, I've been quoted in Portuguese!

http://sachachua.com/wp/2008/07/02/awesome-ive-been-quoted-in-portuguese/Wed, 02 Jul 2008 14:00:21 +0000

Todas as faces da colaboração?

O poder do indivÃduo já era. Experiências com colaboração e ferramentas sociais em grandes companhias, como a IBM, dão conta de mostrar o valor do trabalho desenvolvido em rede e global

Que tal conseguir o emprego dos sonhos compartilhando suas idéias em um blog? Foi assim que Sacha Chua, atual evangelizadora de Empresa 2.0 da IBM, conquistou o posto que ocupa hoje dentro da companhia, em Toronto, Canadá. Aos 23 anos, tão logo a jovem estudante passou a circular pela empresa por conta do projeto de conclusão de sua tese de mestrado em computacão social, em 2006, não hesitou em disparar posts sobre a própria pesquisa pela ferramenta interna de blogs que a IBM disponibilizava aos funcionários.

"Percebi que se não fizesse isso, no final de mestrado poucas pessoas leriam minha tese. Escrever sobre a pesquisa enquanto ela era feita permitiu que eu compartilhasse meu conhecimento com outras pessoas e aprendesse com as sugestôes e conselhos que me davam", conta.

Foi como se a partir daquele momento tivesse calçado os sapatinhos de cristal de uma Cinderela moderna que ascendia para o universo corporativo. Do dia para a noite, o blog da então ilustre desconhecida caiu no gosto dos funcionários e se tournou o mais popular da empresa não só no Canadá--com média de 300 a 600 acessos diários--tudo sem sair da esfera interna da IBM. "Queria fazer mais do que escrever software, queria ajudar as pessoas a se conectarem por blogs, wikis e outras ferramentas web 2.0 e a IBM era a empresa perfeita para aplicar tudo que aprendi a respeito no mundo real. Quando chegou a hora de pedir o emprego, o processo foi fácil porque os futuros colegas de equipe já me conheciam e sabiam o suficiente para convencer a gerência a criar um cargo só para mim", lembra.

A história de Sacha poderia ser uma exceção, mas não é. Essa é apenas uma das faces das oportunidades que as ferramentas sociais e de colaboração apresentam dentro de companhias. Por isso, a IBM vem apostando na criação de ambientes férteis para a inovação.

Except for my age, most of it's right. Nifty! There's more, but it would take me a while to type it all in from the scan. I wonder if I can get a copy of the magazine for my mom... =)

Pereira, Paula. June 2008. "Todas as faces da colaboração?", B2B Magazine

Taking book notes

http://sachachua.com/wp/2008/07/03/taking-book-notes/Fri, 04 Jul 2008 02:04:30 +0000

It turned out that our newest team member, Tom Plaskon, is also a bookworm. Over lunch last Wednesday, we chatted about how we keep track of what we're learning from books. My system hasn't changed that much sinceI described it in February, but I thought I'd post an updated blog post about it, just in case writing about

Page 179: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

it prompts ideas.

How I get books:

I still read lots of books. I usually order books from the Toronto Public Library system or pull them off the library shelves when I go on a library run, but sometimes I'll pick up books from the bookstore or order them online. I occasionally get book recommendations from other people, too.

I tend to read in sprints, focusing on a single subject. I'm currently revisiting personal finance, and I've read about comics and graphic novels, sketching, storytelling, writing, leadership, time management, Javascript, CSS, relationships, communication, management, consulting, entrepreneurship, photography, cooking, presentation skills, education, reading, economics, parenting (yes, I read my mom's parenting books when she was raising me - made for an interesting childhood!), social networking, quarter-life crises, career planning, learning, creativity, self-defense, exercise, romances (particularly classic Regency ones) gardening, and other topics that slip my mind at the moment. Reading in sprints allows me to get through books quickly (few non-fiction books are packed with new ideas) and see the interconnections between ideas in books. Sometimes I'll go for variety when I'm raiding the library shelves.

This is a pattern of reading that practically requires a well-stocked public library, as there's no way I'm going to spend all that money doing a reading sprint by buying books from Chapters or Amazon. I'd be limited by my book budget and I'd end up with too many books full of too much filler. Using the public library allows me to get value from books I might not ordinarily buy and books that are mostly fluff except for one or two good insights. (Or books that have one good idea and just keep hammering it in.)

How I read books

While I'll slow down and enjoy a dense, well-written book, most books are worth cursory scans. Sometimes I'll look at the table of contents to get the lay of the land. Other times, I'll just plunge right into it, skimming the book for good quotes, interesting insights, or good explanations.

I read books on the subway, over breakfast or dinner, while walking (except across intersections), on evenings and weekends, and whenever I can steal a moment. I try to always have a book or two in my bag.

How I take notes

The first step is to mark the passages I want to keep. I don't like writing in books (and absolutely abhor the idea of writing in a library book!), so I have to keep track of the passages I want to put into my book notes system. I must confess that I've resorted to dogearing pages. Post-It flags feel wasteful and torn slips of paper are inconvenient. I'd be happy to switch to a better method for remembering pages if it was something I could do while walking around (rules out scanning text with a digitizing pen) and it allowed me to keep track of any number of pages (rules out bookmarks, unless I carry a whole stack of them).

After I've gone through a book once, it's time to put the passages into my book notes system. If I have time, I use Dragon NaturallySpeaking to dictate the book details, page numbers, and relevant passages to my computer. It's fun, it reinforces my memory, and it helps me train the speech recognition engine. If I'm pressed for time, I scan the relevant pages, then and use Tesseract Optical Character Recognition to convert the scans into text.

I currently keep my book notes in a large text file with a little markup to make it easier for Emacs to display it as an outline. (Hooray org-mode!) Each book is an outline item, and each quotation starts with the page number. I also add my own notes.

Page 180: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

How I review my books

The human brain is good at associative memory. When a conversation topic reminds me of something I'd read, I can usually come up with a few titles or keywords from the quotations. My book notes allow me to send not only the book details but also the relevant quote, which helps other non-bookwormish people zero in on the part they might want to check out. So far, my text file has been working well.

I occasionally review my book notes by flipping through my book notes on the computer or on my Nintendo DS, jumping to a random note, or searching for certain keywords. I also reread particularly good books to see if I'll get even more insight this time around. This helps me keep the content fresh, and it also prompts me to think about who I know would benefit from the book I'm reviewing.

How I can make this system better

I think I'll start using LibraryThing to keep track of the books I've read. This allows me to take advantage of social recommendations. I used to use Amazon for that, but it's also nice to run into fellow bookworms with similar interests and to see what else they're reading.

It might be good to capture diagrams neatly. I've got the scanner, so I just need to work out a good image storage thing.

I want to be able to link related quotations and books with each other. Blog posts would be a good way to do that. I just need to make sure I save my post locally, too.

I need to think about which new books are worth acquiring. =) There are a few presentation-related books I'm going to order (Back of the Napkin, Presentation Zen, Slideology).

July 2008

Weekly report, week ending July 4, 2008

http://sachachua.com/wp/2008/07/04/weekly-report-week-ending-july-4-2008/Fri, 04 Jul 2008 20:33:08 +0000As promised, weekly report on Friday instead of Sunday! Let's see how well that works. This week:

• Drupal: Our CSS person started work. Hooray! • Drupal: We switched over to the next phase of configuration management. Instead of dropping and

recreating the database from scratch, we now have to work with a live database, making sure that we don't lose the editorial changes that users have been making. It's pretty straightforward with Drupal, actually. Database changes are added to module .install files as modulename_update_() functions. Edits and other system changes are handled in the .profile and through the Web interface. I should blog about this soon.

• Drupal: I handled lots of little defects and a few larger changes. • Speaking: Prepared another presentation for the upcoming IBM Academy of Technology conference

on collaboration. "Sowing Seeds: A Technology Evangelist's Guide to Grassroots Adoption." Uploaded it to internal file-sharing site.

• Speaking: Got the survey results back from the IBM Technical Leadership Exchange! Blog post about that later.

• New hires and networking: Had lunch and tea with some of the other new hires and older employees. =) Good stories. Also, started working on a guide for new hires.

Page 181: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Work: I wrote two short Ruby scripts that analyzed internal blogging, bookmarking, and file-sharing activity for one of the communities I'm active in. Posted the results in internal blog posts.

• Work: I started putting together some resources for fellow IBM newbies. It's in our internal version of Pass It Along.

• Fight/fitness: Not much this week. Just one class of yoga because the gym was closed on Tuesday and I was feeling tired last Thursday.

Next week:

• Drupal: Survive the demo. Plan tasks for the next phase and clarify my responsibilities. • Speaking and presentations: Write blog posts / speaker notes / articles for my upcoming presentations.

Make plans for conference travel. • New hires and networking: Make a one-page list of tips about IBM and Web 2.0

Sowing seeds: What is technology evangelism, anyway?

http://sachachua.com/wp/2008/07/04/sowing-seeds-what-is-technology-evangelism-anyway/Sat, 05 Jul 2008 00:13:51 +0000Today, I want to talk about grassroots adoption, when you're trying to influence people around you to try out something new--a new tool, a new idea, a new way of working--without dictating to people. I hope that I can help you get a better sense of where other people are, what might be stopping them from moving forward, where you are, and how you can get better at helping other people learn. I'm interested in this because as a technology evangelist, I've talked to a lot of people about social tools like blogging and wikis. Over the next few blog entries, I want to share some of the objections that I've come across. I also want to share some of the methods I've tried and observed. But first, let's talk about what technology evangelism is. You might be wondering why I use the term "evangelism", considering its religious roots and sometimes negative connotations. For me, evangelism has that hint of being more than just a dry list of facts. You want to inspire people to action, and you want to do this in a way that sticks even when you're not around. The technology you want to promote is not going to be a perfect fit for everyone or every time. Technology evangelism is not about convincing people that your way is the right way. It's about showing people what their options are, helping them find something that fits them, and helping them learn how to make it part of their work or their lives. (I forget this sometimes, too.) So if a technology isn't going to be a perfect fit for everyone immediately, how can you encourage grassroots adoption? One way is to scatter the seeds as widely as possible. If you reach out, you might find a lot of people who can benefit from the technology you want to promote. Help them, and their success stories and influence will help you reach out to even more people. You might not have that option. You might have been asked to help a team get up to speed on a tool. You might want to explore a collaborative tool, but before you can take advantage of that tool, you'll need to get other people on board too. (After all, you can't collaborate on your own.) This is where it can get frustrating. Next post on Monday (or earlier =) ): Sowing seeds: Five common objections

What do I want to learn?

http://sachachua.com/wp/2008/07/06/what-do-i-want-to-learn/Sun, 06 Jul 2008 17:46:10 +0000Inspired by Michele Martin's post on personal learning environments, I started working on a mindmap and a blog post about how I learn. Before I got far into it, though, I realized that I wanted to first share what I want to learn - the why, not just the how.

So here are a few things that I want to learn more about, why I want to learn more about them, and how I'm currently learning about them. I'd appreciate your suggestions, and I'd love to hear about what you're learning!

Page 182: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Telling stories with words and images

A good story can make a point so much more effectively than charts or data can. I love listening to stories and showing people that they've learned something other people will find useful. I love collecting stories so that I can pick an appropriate story later. I love telling stories in my presentations, blog posts, and conversations, and I want to get better at it.

I want to get better at finding and telling stories because I believe it's a remarkably effective way to understand people's experiences and to communicate.

I practice telling stories with words and images by writing blog postsand by including stories in my presentations. So far, I'm doing well,but there's still so much more I can learn. When I grow up, I want tobe Dan Pink. ;)

I want to get better at listening for hints of a story and bringing it out. I think I've read as much as I could about this, so it's really just a matter of getting out there and talking to people.

I want to improve my visual literacy. I often have a hard time thinking of a good image that can illustrate an abstract idea, and an even harder time finding an image that fits. I've used Creative Commons-licensed pictures from Flickr and stock photography from low-cost photo sites, and I've seen how they can make presentations much richer. I want to develop my ability to think of illustrations and either sketch them myself or find good stock photos. In order to improve that, I:

• read books about presentation design and cartooning• flip through graphic novels and compilations of comic strips• browse presentations on SlideShare.net• sketch on my Nintendo DS

I think I just need to expose myself to a whole lot of images so that I can start making associations in my brain. =)

Helping new hires connect with the rest of the organization (and vice versa) through Web 2.0

Yes, that's pretty specific. =) I'm also curious about how individual employees can use social media to grow their networks and provide more value, how communities can use social media to support their activities, and how companies can incorporate social technologies into their strategies, but I'm particularly passionate about helping new hires connect. I think it'll not only make a big difference in employee retention and satisfaction, it'll also help companies get more value from what new hires know and what new hires are learning.

I want to get better at communicating the benefits and needed actions to experienced people. To practice this, I've joined a community that helps colleagues learn about Web 2.0 and use our internal tools effectively.

I want to improve my ability to show new hires the benefits and help them get started. I'm working on some materials for new hires, and I've gotten involved with our local new hire network.

Experience will help me learn a lot, and I'll also get to provide a lot of value along the way. =)

Sharing what I'm learning

I want to get better at figuring things out and sharing what I've learned. I'm practicing this by blogging and

Page 183: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

by talking to people. I can improve this in several ways:

• I can learn about more things• I can improve my writing skills to help me write faster, clearer, and more effectively• I can make it easier for you to find other things you might be interested in.

I want to get better at mapping what I know. If you know what I know, then you can make better use of it. I've got too many blog posts for someone to go and read all of them, but a good map of that - and a map of things I've learned but haven't written about yet - can help you find things you might find interesting.

Helping people change

The thing I enjoy about technology evangelism isn't convincing people to change, it's helping people who already want to change. I want to get better at helping people understand their options, figure out how to get started, and learn how to be more effective. I'm practicing by helping people at work and on my blog, and I'm learning more by talking to other people who have a similar urge to help others learn and grow.

Nurturing relationships over a distance

I'm here in Canada because my significant other is here and he can't move to the Philippines with me. My family and my old friends are half a world away. Being split between worlds is the biggest source of pain in my life. It's hard to stay in touch when you don't get to share as many experiences. It's hard to deal with expectations - both mine and other people's. It hurts because I don't want to go for either extreme. I don't want to give up on this wonderful relationship and focus instead on my duty to my family and my country. I don't want to focus only on this relationship and forget my roots.

I need to connect with other young first-generation folks. How do other people manage it?

I'd also like to nurture my old friendships, because I'd gotten to know some really incredible people over there. Some friends are easier to keep in touch with than others--they blog, they chat... Through them, I get to hear about other friends, too. I still need to think about how I can do this better.

I also want to learn how to nurture connections with people around the world - coworkers, acquaintances, people I've gotten to know through blogs... I currently practice that by responding to mail and by reading other people's blogs.

Learning how to nurture relationships over a distance is difficult, but I need to learn.

Being more practical

There are a lot of little things in life that I still need to learn. Driving, sewing, gardening, stuff like that. No substitute for experience - I just have to do it.

---

So those are a few of the things I'm working on learning these days. I'd love to hear your tips. How about you? What are you learning?

Configuration management with Drupal - Multiple developers, live site

http://sachachua.com/wp/2008/07/06/configuration-management-with-drupal-multiple-developers-live-site/Sun, 06 Jul 2008 19:07:43 +0000

Page 184: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

We've moved into the next phase of our development. External users now have access to our testing server, and theylle be busy not only filing bugs but also creating editorial content. This means that we can't just drop the database and recreate everything from scratch. (Darn!) However, we still need a way to make sure that:

• developers have a consistent environment for development and testing, so all changes need to be checked into the Subversion source code control system

• all significant changes are captured so that we can deploy the tested system on the production server

Here's our current plan:

• Editorial changes (creating new nodes, editing existing nodes) happen on the testing server. Developers can test their local systems with real data by downloading a data dump from the testing server and loading it locally.

• Code changes that don't require database updates can be pushed to the testing server after local testing.

• Code changes that require database changes or one-time administrative actions can be handled in modules' .install files as modulename_update_somenumber() and _install() functions. This can be tested locally by loading a data dump from the testing server and then running update.php. It should also be tested from a fresh install. If the change works locally, then the testing server can be updated. (Make sure to run update.php on the testing server as well).

When we deploy the system to production, we'll review all the content, remove the test data, and push the data and the code to the live site.

See http://heyrocker.com/drupal/content/deployment-and-change-management-problem for more analysis.

Might need to spend more time hanging out with Emacs geeks =)

http://sachachua.com/wp/2008/07/06/might-need-to-spend-more-time-hanging-out-with-emacs-geeks/Sun, 06 Jul 2008 21:04:25 +0000This is dreadful. I've made no progress on my book, and I've noticed that it has steadily crept down my list of priorities. I suspect it has a lot to do with the kinds of people I hang out with and the kinds of places I hang out. ;)

I used to hang out in irc.freenode.net#emacs a lot, and I used to frequently check the RecentChanges page of http://www.emacswiki.org. Both were great sources for Emacs questions and answers, and they often inspired me to go and write blog posts sharing what I discovered.

Lately, I've been hanging out with Drupal geeks and social networking geeks--hence all the blog posts about Drupal and technology evangelism. This is because of work, and so my blog posts are about things I'm learning at work. My Emacs use is down to reading mail, reading news, and managing my day. I still use it every day, but I'm not doing a lot of development in it. (Hmm, maybe that's something else I can set up.)

Maybe I should start writing from the front of the book instead - basic Emacs stuff, leading up to more advanced tips...

Page 185: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Sowing seeds: Common objections to technology evangelism for collaborative tools

http://sachachua.com/wp/2008/07/07/sowing-seeds-common-objections-to-technology-evangelism-for-collaborative-tools/Tue, 08 Jul 2008 00:34:24 +0000Whether you're a team member trying to convince your coworkers to explore a new tool, or a manager trying to require everyone to use a new system, you know that influencing other people's opinions and behavior is really difficult. You're no stranger to rejection. You know what rejection sounds like. "I'm too busy." "I don't have the time to learn that right now." Or--more frankly--"I don't see the value in that." If you've _never_ heard these phrases, e-mail me - I want to know how you do what you do. Chances are, you've heard them. Chances are, you've even said them. When someone says these things to you, it's not a rejection of you or of the idea. It's a sign that there's a deeper issue that hasn't been addressed. In some cases, people will be firmly against your idea, and there's not much you can do to help them consider the options. Many times, though, people do want to learn more and try things out--but they're held back by one thing or another. If you can help them get over those barriers, they're open to trying things out. Here are five of the barriers I often come across, and some ways to help people break through them. Think about people you've tried to help and see if you can identify them on this spectrum. You've probably thought about each of these items before, but it helps to be able to take a step back and think about what's stopping people.

1. I'm happy with the existing tools. It's difficult to introduce something new when an existing way is good enough for the needs people currently have, particularly if the new tool doesn't do everything the old tool does and more. People who were happy with horse-drawn carts simply didn't see why they would need a "horseless carriage" that was complex and finicky. Likewise, it can be hard to introduce new collaborative tools when people have gotten used to their existing tools and workarounds. It's not enough to say that something is new and interesting. Try to identify significant pain points that give people enough reason to try something out, or point out compelling opportunities to get new benefits.

2. No one else is doing it. This is a chicken-and-egg problem: You can't use a tool to collaborate with other people unless they use it too, and they won't use it unless other people are using it. You can address this by looking for ways to get individual productivity benefits from these tools, and then drawing people in when they need help from you. Sometimes you won't be able to introduce a tool gradually. In that case, you'll probably need your entire team's cooperation or at least willingness to give the new tool a try for a limited period of time. Be prepared to help your teammates learn how to use the new tool, and focus on efforts that will get quick results.

3. I don't think I can trust beta software. New tools may not be fully supported, and they may not be able to provide as much performance as your team needs. Unfortunately, this is another chicken-and-egg problem that's probably outside your control. Your early adoption can help the tool development teams justify additional investment in the tool, but it's difficult to get other people to trust something that may be discontinued or that does not have sufficient resources. Team members may also lack trust in their ability to use the tools effectively. Your best bet is probably to use established tools for mission-critical collaboration until your team has more confidence in the new tools and their ability to use them.

4. I don't know where to start. This is probably the easiest barrier to address. At this point your team members are interested in changing and are ready to take action. Show people small actions they can take to get immediate benefit.

5. I can't make it a habit. If you've ever made a New Year's Resolution or tried to break or start a habit, you know how hard it is to change your routine. This is basically what you're asking people to do when you ask them to try out a new collaborative tool--to make it a habit. It's okay if people lapse. Just help them start again. One way to help is by identifying some behaviors people want to change, such as replacing e-mailed attachments with uploads to a team workspace. When you see the old behavior, remind people (gently! =) ) about the new behavior. Reinforce this by helping them see the

Page 186: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

benefits they've personally experienced. If the new tool is a good fit for people, they'll eventually make it part of their habits.

Next: Sowing seeds: Five methods

Canada and Web 2.0 conferences

http://sachachua.com/wp/2008/07/09/canada-and-web-20-conferences/Wed, 09 Jul 2008 14:10:04 +0000A colleague asked me about Web 2.0 and social networking conferences in Canada, so I figured I'd post it here too. Here are the big ones I know about:

• Mesh Conference (http://meshconference.com) is an annual Web 2.0 conference held in May here in Toronto. They get a good line-up of speakers, and they're always sold out.

• DemoCamp (http://democamp.info/) is my favorite Web 2.0 / small business community event series. You'll reach Web 2.0 thought leaders in Toronto, small businesses and entrepreneurs, people looking for jobs involving Web 2.0 and social networking, and students with great skills. Sponsorship (http://democamp.eventbrite.com/) is capped at $200 / sponsor / event. Events run every month or so, and there's one next week.

• Northern Voice (http://northernvoice.ca) is a Vancouver conference about personal blogging and social media. I've never been there, but I know people who like it.

Any really cool ones I missed?

Check out my parents =)

http://sachachua.com/wp/2008/07/09/check-out-my-parents/Thu, 10 Jul 2008 01:10:16 +0000My dad and my mom know how to make things happen.

My dad often comes up with wild ideas, such as creating a cultural tradition (he's been immortalized in one of the tribal epic poems), flying an ultralight across the Philippine archipelago, or organizing large photography trips up to the rice terraces of Banaue. Sometimes these ideas start with "Wouldn't it be fun if...". Other times, my dad sees a need and responds to it. My mom helps my dad make those ideas reality by connecting with different groups, helping my dad inspire them with his vision, and organizing the logistics.

Growing up watching them move mountains, I learned the power of having a vision and bringing people together. I saw how my parents' initiatives weren't just about doing what they wanted to do, but also making it possible for other people to do what they wanted but never dared to do before. People appreciated the opportunity to make a difference, to join in making things happen.

If you like what I'm learning about and talking about, you'd probably really like learning from my mom (http://daysstories.blogspot.com, http://adphoto.com.ph/business/) and my dad (http://www.pinoyphotography.org/forum/index.php?topic=2922.0 - my dad is MagicEye, check the thread for lots of stories). They rock! =)

To dream the impersonal dream

http://sachachua.com/wp/2008/07/10/to-dream-the-impersonal-dream/

Page 187: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Fri, 11 Jul 2008 01:48:44 +0000

I've been trying to find words to explain what it's like wanting to make things happen, how it's not about me but rather about the possibilities I see. One of the books I just picked up from a library has a good quote about it:

Entrepreneurship is nothing about the one who creates a thing and everything about the one who consumes the thing. Entrepreneurs don't care about the thing they create, in and of itself (as much as they may love what they produce or do). They care about creating it because of the impact it can have on someone else. It's about that thing as an answer to a question others have long ago stopped asking, or long before they even consider the possibility of it changing for them. (p.50)

And another snippet:

Unless your idea for a business exceeds anything you have ever imagined doing before, is bigger than anything you have believed yourself capable of before this moment, has the potential of transforming a large enough number of people's lives in the world to make a huge difference in how the world works, and challenges you sufficiently to risk everything you have to make it a reality, don't do it.

Just don't do it, dear reader, because it will likely disappoint you in too many ways to mention. Don't do it unless you're ready to rumble. Don't do it unless you can put all your fears behind you. Don't do it unless the pain of not doing it will exceed the probable pain of doing it by a factor of ten. Don't to it, because it's not a game one plays casually. Don't do it, because it will confound you, confuse you, threaten to overwhelm you, every single dangerous step of the way. (p.104)

Awakening the Entrepreneur Within: How Ordinary People Can Create Extraordinary Companies by Michael E. Gerber

Read more about this book...

Here's what I care about at work:

• I care about helping new hires, interns, and other fellow Generation Y-ers connect with the rest of the company, and vice versa. I care because I think it would be pretty amazing if all of us newbies were engaged, passionate, and sharing what we're learning along the way. Ultimately, I want to affect not only the way IBM connects with its new hires and interns, but the way leading enterprises bring these new voices into the conversation.

• I care about helping interested colleagues learn more about how to use Web 2.0 to improve their personal productivity and collaborate more effectively. I care because I've seen how people use these tools to connect and collaborate across the organization for unexpectedly wonderful results. Ultimately, I want to see these tools become part of the culture not only at my company but also in others.

• I care about helping clients learn from IBM's experience with social media, and helping IBM learn from them. I care because I believe in what we've got inside IBM and I want to help other organizations explore this kind of culture of openness, trust and collaboration. I care because I know we can learn a lot from other companies as well. Ultimately, I want to connect evangelists and champions in different companies so that we can learn from each other's experiences.

So I guess I'm a bit of an intrapreneur after all. Technology evangelism around Web 2.0 and emerging

Page 188: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

technologies is officially part of my job, but all of these things are things I do because I have to do them, because I can't imagine not doing them. =) I'm going to need a lot of help, but there are a lot of people who are glad to help out because these are their visions too. (I like to think that I'm the one helping them!)

Let's find out how wonderful it can be. =)

What's your dream?

Ruby code to quickly convert titles to ISBNs

http://sachachua.com/wp/2008/07/10/ruby-code-to-quickly-convert-titles-to-isbns/Fri, 11 Jul 2008 02:19:33 +0000

I love the Toronto Public Library system. I can't say that enough. I particularly love how I can go on a reading spree, place holds on a gazillion books, and have them delivered to the library branch that's about three blocks away from the house.

Ideally, of course, these books would arrive suitably spaced apart so that a new batch arrives just as I've finished another. This happens when I request popular books. Most of the time, though, the books that I want to read fall in the Long Tail--obscure titles, books that have fallen off the New York Times bestseller lists, and the occasional random find.

All of these books tend to descend on the unsuspecting library branch at the same time.

There were 27 books waiting for me earlier. The librarian thanked me for clearing the shelf. J- greatly enjoyed piling them into the shopping cart we had the foresight to bring. Yes, I've got presentations to prepare and things to do--but reading is fun, and I'm somehow going to find time to read all those books before my three-week loan period is up. I'll probably be able to renew them, but hey, might as well try.

So I decided I might as well try tracking them on LibraryThing. Instead of typing in all the details manually, I grabbed the list of titles from my account on LibraryElf (good reminder system for books), used ISBNdb to convert the titles into ISBNs (best guess), and imported the list of ISBNs into LibraryThing. Now my profile lists 163 books--a small fraction of the books that have passed through my hands, but it's better than nothing. Someday I might even get myself a barcode scanner so that I can just pick up the ISBNs from the book jackets.

Anyway, I promised the Ruby code I'd quickly written to convert the titles to ISBNs:

require 'net/http'require 'CGI'require 'open-uri'require 'rexml/document'

access_key = 'YOURACCESSKEYHERE'while (s = gets) s.chomp! url = "http://isbndb.com/api/books.xml?access_key=" + access_key + "&index1=title&value1=" + CGI::escape(s) xml = REXML::Document.new(open(url).read) if (xml.elements["ISBNdb/BookList/BookData"]) puts xml.elements["ISBNdb/BookList/BookData"].attributes["isbn"] endend

Page 189: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Takes titles as standard input, prints out ISBNs. Enjoy!

Technorati Tags: isbn,ruby,librarything,isbndb,books,book,reading

Weekly report: week ending July 11, 2008

http://sachachua.com/wp/2008/07/11/weekly-report-week-ending-july-11-2008/Fri, 11 Jul 2008 21:14:49 +0000Lots of progress and lots of connection - good week!

• More progress on the Drupal project. It's starting to really come together! You'd never guess it from the length of my bug list, but we're getting close to the finish line. Also--there might be another Drupal project in the line-up, hooray!

• On Wednesday, I had lunch with the other recent hires in the AS Foundations group. I brought up the idea of having a movie night for the new Batman movie.

• New hire evangelism: I mentioned the internal biz.newhire forum to a couple of people from various new hire networks. Looking forward to making it a place for conversations.

• A couple of terrific conversations with people about variouscollaborative initiatives around IBM made me feel warm and fuzzy abouthaving the opportunity to contribute something.

• I braved my first kerfluffle about interpersonal communications at work. A colleague's (good-natured) teasing had made me feel a little uncomfortable, so we sorted that out. All's well that ends well.

• I spent three hours at the gym last Tuesday, doing yoga, bag/fitness, and krav maga level 1. Fitter than I used to be! =)

Next week is another presentation gauntlet: four unique presentations given a total of eight times! Yikes! I hope to not only survive this gauntlet, but to do it in style. After all, it's fantastic that I have all these opportunities to share what I'm learning. It'll be a challenge to maintain my enthusiasm and passion throughout the four repeats of a single presentation, but if I can do that, then I'll be ready for a whole lot more.

Stay tuned!

Hello, I'm Sacha Chua! (Self-introduction and sitemap in verse)

http://sachachua.com/wp/2008/07/12/hello-im-sacha-chua-self-introduction-and-sitemap-in-verse/Sat, 12 Jul 2008 04:28:42 +0000Inspired by Dr. Doolittle, Animaniacs, and the Slideshare World's Best Presentation Contest, I present to you my self-introduction/sitemap... in verse! =) It was fun to make, and I hope it makes you smile. =)

Page 190: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Object 9

Like it? Please vote for it! World's Best Presentation Contest I'd love to see how far this... err... sketchy style of presentations can go. =) Here's the text: Hello, I'm Sacha Chua and I'm really pleased to meet ya. How can I assist ya? I would love to find out how. So what can I connect you to? Ideas that would help you through? Some tools, perhaps, to help you do the thing you're working on right now? Are you changing your bulletin boards and stickies, your e-mail and Notes twisties for bookmarks, blogs, and wikis? I can help you strategize. Are you looking for a presentation 'bout Web 2.0 and my generation? (It has caused a small sensation--all this interest in Gen Ys!) If you're also into Drupal and you're searching for something useful, then I hope, my fellow pupil, that I've written what you need. Are you an Emacs fan at home with M-x plan and all that Emacs can? You'll like my Emacs feed. Are you looking for a book that's worth a second look and some time in a nook? We might see eye-to-eye. Can I teach you what I learned from the pancakes that I burned? (Too late the things were turned!) For my notes, read CookOrDie. I'm a person full of passion (and a hacker of some fashion). I reflect and I take action, and it's all there on my page. There are few things I've not written (even times that I've been smitten, and my darling psycho kitten) because all the world's a stage. There's more in my six years of blogging hopes and fears and laughter, anger, tears--and there'll be more to come! I'd love to hear from you, your thoughts--and comments too. Thanks for clicking through. I hope you've had some fun!

GBS Learning Week: First set

http://sachachua.com/wp/2008/07/13/gbs-learning-week-first-set/Mon, 14 Jul 2008 01:33:18 +0000

I think it's amazing that I get to talk about my favorite tools and encourage people to try things out. I'm at the GBS Learning Week in Niagara-on-the-Lake in order to present "The Top Ten Web 2.0 Tools Every IBM Consultant Should Try," and I'm scheduled to do it four times over two days. I'm also giving part of the keynote presentation--a short segment on the demographic revolution, given twice over two days. Oh, and I've got an early-morning presentation on Tuesday, an unconference session to facilitate, and another Web 2.0 teleconference workshop on Friday.

I am so going to earn that massage.

I did the first set of presentations today. About thirty people attended the first session, and about fifteen

Page 191: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

people attended the second.

Back-to-back sessions are tough. I felt more comfortable with the first session because I could chat with the audience before starting. The second was a bit more difficult because I didn't want to wait too long, but that meant that people filtered in during the start of the presentation. Next time, I'm going to give myself more time between presentations so that I can grab a drink of water, chat with people, and reset myself.

Good stuff, though. I'm tempted to radically restructure the presentation as a story. Might be worth trying--and it'll be fun! I should ask the organizers if I can get the feedback forms from the first day separate from the feedback forms from the second day. After all, how many times will I get to test presentation styles with the same layout, same type of audience, same timeslot, and things like that? =)

Ooh, this will be fun.

Notes from GBS Learning Week

http://sachachua.com/wp/2008/07/17/notes-from-gbs-learning-week/Thu, 17 Jul 2008 13:32:07 +0000I just got back from the GBS Learning Week conference held at White Oaks (Niagara-on-the-Lake), and I wanted to write down my notes before plunging back into e-mail and the daily routine. Here's a brain-dump just so that I get everything out there. I'll refine some points into blog posts later. Ideas for improving networking at conferences:

• People should get the attendee list beforehand. This would be even cooler if we could help people set up networking sessions. The Technical Leadership Exchange conference had some meeting places set up beforehand, but the 4,000+ attendee list was a bit overwhelming. If the attendee list could be mashed up against your contact list and some kind of social recommendation system, then it might be more manageable. Calendar, too?

Main tent, second time: (~200 people)

• The value of keeping it fresh • Adding humor: illustrating generational change through VCR joke. "It used to be that you could tell if

you were on the wrong side of the generation gap if your VCR said 12:00. Now, it's if you know what a VCR is."

• Relaxing and connecting with the audience • Video • Slides: images are very flexible. I didn't change my slides, I just changed my content and delivery. • People liked my presenter remote because it provided good feedback when advancing slides, it had

intuitive controls, it had fantastic range, and it had a slim, dark profile.

Web 2.0 tools, third and fourth times: (~15 + 10)

• I took responsibility for follow-up • I used the talk as an opportunity to collect data • I changed it from a list of ten things to a multiple-choice quiz to help people think about how they

were currently doing things • I could really use two easels next time • Maybe I might have a webcam watching the audience, to aid with counting and improvement?

Main tent, first time: (~ 200)

Page 192: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Not having text means being able to drop in even better statistics and references on the fly • Speaker notes are terrific • River metaphor frequently cited afterwards • Good joke about half-empty, half-full room

Web 2.0 tools, first and second times: (~ 30 + 15)

• Back to back sessions are hard • People liked my energy • Second session was a bit tougher than the first - people may be tired, too • Need time in between sessions to mingle and recharge • Still good, though!

Sowing Seeds: A Technology Evangelist's Guide to Grassroots Adoption (~20)

• Remote presentation early in the morning - doubly-tough! • Liked the webcam part - Sametime Unyte has added this, but it's not available for IBM early adopter

accounts yet • I need to work on this. Who am I being that people's eyes are not lighting up?

Ideation:

• My notebook of business ideas turned out to be useful • Random sources of ideas: phone book, StumbleUpon, HalfBakery, good questions • One of my strengths that I should build on

Miscellaneous:

• Bernie Michalik told me about two funny IBM ads: "Websphere isn't for dummies" and "Should've called IBM Global Services here." I can't find the originals, though. =(

• Between my own presentations and some client-related work, I didn't get to attend many presentations. I'm glad I got to see Jean-Francois Barsoum's presentation, though. He was funny! Particularly clever things I want to steal: roadrunner running across the screen, and a good illustration of the impact of government policies: the Haiti/Dominican Republic border showing the effects of deforestation. I may also find an excuse to use a fake Powerpoint end screen. Also, during the Open Space thing, he used his cellphone to record people summarizing the points, and he played it back during the wrap-up. Terrific idea - showed diversity of input while getting the points across. He recorded a video and put it up on YouTube, actually.

• Ruth McLenaghan recommended the book "I Can See You Naked". • Met a number of recent hires (same cohort), like Nancy Gabor and Sameer Gupta). • Promised to follow up with people through e-mail, will need to get some kind of mailing thing going • Difference between culture (how things get done around here) and climate (how we feel) • 5y half ValuesJam gone, good way to illustrate • Interest in rotational assignments • Utilization versus skill development • Blue Consulting? • Interest in employee engagement, future leadership development

Managing interruptions

http://sachachua.com/wp/2008/07/17/managing-interruptions/

Page 193: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Fri, 18 Jul 2008 03:11:54 +0000W- asked me if I could recommend any self-help books or tips on how to manage interruptions and get back on task. I thought it was funny because I'm usually the one who has problems staying on task. (Dishwasher partially full, laundry sitting in the washing machine, un-sipped tea, things like that...) =) Then again, I think I get fewer computer-based interruptions than he does. I told him that David Allen's book on Getting Things Done is popular among geeks who deal with frequent interruptions. The key ideas that help are to write down all the tasks in a trusted system, and not to switch tasks unless it's really urgent and important. He's also checking out LeechBlock, a Firefox extension that makes it just a bit easier to focus on your real work instead of going to your favorite time-wasting sites. =)

One sentence - microfiction, microlife

http://sachachua.com/wp/2008/07/17/one-sentence-microfiction-microlife/Fri, 18 Jul 2008 03:20:22 +0000Microblogging done beautifully: onesentence.org. Someday I hope to be able to write like that. =)

Reflecting on time and overtime

http://sachachua.com/wp/2008/07/18/reflecting-on-time-and-overtime/Fri, 18 Jul 2008 21:47:49 +0000

This week gave me an opportunity to think about time, work, and money.

I had spent much of Sunday and my evenings on conference-related work. As much as I enjoyed the opportunity to reach out and touch people I wouldn't ordinarily get to meet, I also realized that it was time I took away from my personal projects and my other relationships. By the time the conference wrapped up on Wednesday, I was looking forward to a quiet day working at home.

Although I'd already worked the typical number of hours for the week, I still felt that I needed to keep working on Thursday and Friday. I wanted to make some more progress on my main billable project, and I was also helping a number of volunteer efforts get off the ground. I put in a full day of work on Thursday, and I headed into the office on Friday.

After I did some more work on my main billable project, demonstrated some of our internal Web 2.0 tools, and replied to my e-mail, I looked into the process for filing overtime. I had given the company my personal

Page 194: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

time because the company wanted the value I could create, so I figured that I should be able to get some of that value back. I knew I could be compensated in either money or time, but I needed to do some paperwork.

Catching myself getting frustrated by the process for filing overtime, I decided to put off the paperwork until next week and enjoy some of the time that I had earned.

Don't get me wrong--I love the opportunities I have to grow and work with such wonderful people. I just want to make sure that I'm living the values that I want to live, because I won't be effective if I'm not authentic. This doesn't mean that I don't love my work. This means I love it enough to want to always love it, instead of coming to resent it or losing touch with myself.

During my commute back, I looked at the options of no overtime, overtime for money, overtime for time, and free overtime, thinking about their effects on my happiness, relationships, increased opportunities to help, career progress, and bank balance. This is the chart I sketched on the subway ride home.

VALUES: Personal happiness and relationships are very important to me. I enjoy opportunities to help, but I'm not too worried about it because there are more than enough awesome opportunities to reach out and make a difference, both inside and outside work. I think about but am not overly concerned with career growth, because that tends to follow opportunities to help. Money is flexible. I don't mind growing wealth and I'd like to share in the value I create, but because I enjoy being frugal and I don't have many financial demands, I'm not driven to earn more and more.

OPTIONS:

No overtime: If I try my best to stay within the 40-44 hours that forms a "typical" work week, I think this will have a terrific effect on my happiness and my relationships. I'll be able to explore other areas, exercise my creativity, and keep myself from going overboard. I'll miss out on some opportunities to help at work and my career won't progress as quickly as other people's might, but I'll have more opportunities to help outside work and those opportunities may turn into things that can make money for me, too. This doesn't stop me from volunteering on things I love about work during my free time (but only the things I love!). =) What will I do with the rest of the time? Experience new things, think, learn, write, dream, doodle, listen, share, grow...

Overtime compensated by money: Ideally it would be overtime for something I really enjoy and would be doing anyway, but even in that case, I'd still have to deal with the paperwork. Once I sort out the paperwork, though, this will be less stressful. (I should revise this chart after I complete the process a number of times.) On the downside, I might find myself doing overtime on things I don't particularly care about, in which case I'll probably feel the strain of not enough rest, reflection, or creative randomness. I may also end up finding it easier to focus on work than on relationships, so that's not too good either. In addition, money is flexible, but

Page 195: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

time is irreplaceable. On the upside, it'll open up more opportunities to help at work, it would be good for my career (particularly that utilization target), and it would grow my bank balance (well, after taxes). It's also a good way of making sure that I spend time on things that other people will find valuable.

Overtime compensated by time later on: This depends on the circumstances. I would need to fill out paperwork and coordinate with my team members, which will take effort. On the other hand, if this allows me to move time around so that I can have more chunks of free time, then that can work out well for personal happiness and relationships. If I can put in work when demand is high and take time for myself when demand is low, then my opportunities and career would probably be positively affected. On the other hand, there will probably always be demand, and it's hard to take a break when other people are working hard.

Free overtime: I can skip the paperwork, but that doesn't solve the problem of being more stressed because I give up time spent on rest, reflection, learning, or relationships. It's good for opportunities and career, and has a neutral effect on money.

SUMMARY: My intuition tells me that the no overtime case gets me closest to living my values without too much stress, and even if that might limit my career advancement, it opens so much more of life to me. Overtime for money and overtime for time are pretty much tied, but it'll be a moot point because overtime is going to be phased out for my job category next year. Free overtime is good for the company, but it doesn't help me confront and try to live my values, and it's too easy to get sucked into work.

I'm going to work on the paperwork so that I can get what I'm eligible for and so that I can understand the process. After that, I'll avoid working overtime unless the company really really needs it, and then I'll see if I can either take that as time off (preferably) or as money.

I think it's good to think out loud about things like this. I've learned more about my tradeoffs, and I'd love to hear your insights. If my employer disagrees with the way I currently think, I'd rather hear about it now (and maybe work out a different view?) than later. It doesn't mean that I don't love my work. Again: all this means I love it enough to want to always love it, instead of coming to resent it. I hope that by thinking about my values and decisions, I can make the fit better and better.

What teachers make

http://sachachua.com/wp/2008/07/18/what-teachers-make/Fri, 18 Jul 2008 21:59:52 +0000

Object 10

Page 196: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Someday I'm going to be able to speak truth like that.

Emacs Org Google Tech Talk

http://sachachua.com/wp/2008/07/18/emacs-org-google-tech-talk/Fri, 18 Jul 2008 22:50:39 +0000

I'm so envious! Time to get working on that book...

Link from minor emacs wizardry

Learning how to drive is about starting even after you stall

http://sachachua.com/wp/2008/07/19/learning-how-to-drive-is-about-starting-even-after-you-stall/Sat, 19 Jul 2008 22:13:40 +0000

I'm still learning how to drive.

It seems that most teenagers anxiously waited for the birthday that let them get a learner's permit and get on

Page 197: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

the road. I didn't. Between carpools, public transit, and other people driving, I never needed to drive. Besides, jeepneys, buses and tricycles made driving in downtown Manila a harrowing spectacle. In Toronto, public transit can get me nearly everywhere I need to go. I'd like to stay car-free as long as possible, as I've seen how owning a car can be an expensive proposition.

Still, there's no getting around the fact that driving is a useful skill, so I'm learning. It's difficult to learn something that other people already take for granted. I feel frustrated whenever I have to do so much back and forth in parking or when I make the wrong decision when it comes to navigating. I learn so slowly!

I'm lucky that W- can put up with my mistakes patiently, and he even tells me not to be so hard on myself. It's difficult not to berate myself for mistakes like stalling the car in the middle of the road and then grinding the starter in my panic. One of the things I'm learning from all of this is that even when I feel like a failure and all I want to do is make the stress stop, I need to relax and reset my mood if I'm going to be able to do better. I need to make an effort to switch my mental track from:

"Why can't I get this? Teenagers pick this up quickly."

to

"Everyone's alive? Good. Anything else can be taken care of. Now, how can I do things better next time?"

If I don't make that mental switch, I end up making more and more mistakes. If I do, then I might stand a chance of making it home without making W-'s knuckles white.

One of the things that I've noticed is that I have a hard time navigating. We've passed through those roads countless times, but even when W- asks me what looks familiar, I find it hard to distinguish between the different reasons that different things look familiar. So after driving practice today, I finally looked up all of these places on Google Maps. I couldn't figure out how they were related just driving along, because I couldn't focus on anything aside from not getting into an accident. Seeing the map in my head might make navigation easier for me.

Learning how to drive is not fun, but I know I need to learn. The only thing to do whenever I stall is to start again. (Preferably without grinding the starter.)

Keeping things fresh; Analyzing session feedback

http://sachachua.com/wp/2008/07/19/keeping-things-fresh-analyzing-session-feedback/Sun, 20 Jul 2008 01:21:53 +0000

One of the best ways to keep yourself enthusiastic and engaged when you're presenting a topic that you've talked about a number of times before is to keep changing it, whether it's by tweaking the content of your presentation or opening it up for more discussion. For my four GBS Learning Week sessions on "The Top 10 Web 2.0 Tools Every IBM Consultant Should Try" (available on the IBM intranet on Pass It Along), I decided to vary the structure. The first two times I presented it, I added a new tool to the list and consolidated two other items. For the third and fourth times, I presented it as a survey or quiz instead of a straight list of recommendations.

The third and fourth times felt a lot more effective for me because the new structure made it easier for people to reflect on their current practices and see the potential benefits of these new tools and new ways of working. I made sure that the session feedback for the third and fourth sessions were kept separately, so I could look for any differences.

Page 198: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Then it was time to put on my (very small) stats geek hat. The quantitative feedback didn't show any statistically significant differences, which I didn't mind because my average satisfaction rating was around 3.5 out of 4 (midway between "satisfied" and "very satisfied").

How satisfied were you with this session? (4 - very satisfied, satisfied, neutral, dissatisfied - 1)

1st/2nd 3rd/4th

Mean 3.49 3.73

SD 0.60 0.46

SEM 0.10 0.12

N 39 15

I got practically the same ratings for the question: How relevant was this topic to your current role and/or interest for your career development?

The comments were:

• Well done, Sacha! • Very enthusiastic. Well done! • Partly about saving time, partly about filling your day 24/7 with work stuff--what about downtime? • Great job, Sacha! • So much good stuff presented in such a short period of time! Wish we could have had a little more

time to see a short practical demo of each of the 10 tools. Very well presented. • Pretty good list of tools. • Excellent presentation by Sacha • Good session • Sacha made this dull topic interesting with practical examples. Thanks. • Very informative. • Very informative and good info on how to find and use some great tools. Instructor made topics

interesting and had a good pace (not too slow) • Good delivery, very enthusiastic • Enthusiastic presenter, passionate about her subject. Good approach by question and answer. • High energy! well done • Sacha is very enthusiastic! Great job!!! Super tips!!! • Fantastic--Sacha is a very engaging speaker! • Super presenter - perfect length

I also changed the follow-up strategy for the third and fourth sessions, promising to e-mail people afterwards instead of just directing them to where they can download the presentation. We'll see how well that works. I might yet see significant differences in adoption and retention. =)

Speaking of session feedback, I've been meaning to post my speech feedback from the Technical Leadership Exchange session I gave on I.B.Millennials: The Net Generation and Those Who Recruit, Hire, Manage, Work With, and Sell to Us.

NSI Rating Scale:

Page 199: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Excellent: 85 - 100Good: 75 - 84Fair: 65 - 74Poor: 55 - 64Severe Problem: below 55

The value of the content Total Responses: 43 NSI Rating: 87.21 (Excellent) Ranking: 64 of 317The speaker’s ability to deliver the material Total Responses: 42 NSI Rating: 92.86 (Excellent) Ranking: 47 of 317Your ability to apply what you learned Total Responses: 43 NSI Rating: 70.93 (Fair) Ranking: 115 of 317This session will help me achieve my business goals Total Responses: 43 NSI Rating: 63.37 (Poor) Ranking: 164 of 317

Comments were:

• Good background of case study. Questionable general recommendations may have missed pluses and minuses.more statistics, Study references?Quite interesting for an older generation and I think more info to get and retain employees should go out to IBMersSacha is a fabulous presenter and handled everything thrown at her wonderfully.Very touched.Very well spoken, excellent presenter. Great energy.Great dynamic speaker, interesting topic. Will check out her blog I am sure it will be interesting and informative.

I've got the "interesting and engaging overview" part down pat, and it would be even more effective if I can directly link it to people's next actions and business goals. That particular presentation was more about talking about issues and setting the stage for a discussion rather than helping people make immediate changes in terms of recruiting/hiring/managing/collaborating with/selling to Generation Y, though, so that's understandable. Presentations like "Top 10 Web 2.0 Tools ___ Should Try" are much more focused on next actions, and those seem to be okay.

So what's the next step from here? On the "building on your strengths" side, I'm working on more visual communication. You can check out my attempts on my Slideshare page. Three of my six public presentations have been featured on Slideshare Presentation of the Day, so I must be on to something here. =) On the "shoring up your weaknesses" side, I've been thinking about presentation topics that can lead to immediate next actions. I didn't feel that "Sowing Seeds: A Technology Evangelist's Guide to Grassroots Adoption" was as effective as it could've been. Reminds me of this:

Zander goes on to say "...if the eyes are not shining you have to ask yourself a question: who am I being that my player's eyes are not shining?" This goes for our children, students, audience members, and so on. For me that's the greatest takeaway question: who am I being when I am not seeing a connection in the eyes of others?

"Benjamin Zander: Who are we being?" Garr Reynolds, Presentation Zen

Kaizen: relentless improvement. I want to learn how to help people's eyes shine with possibility.

Page 200: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Emacs: BBDB: Modifying the record creation process

http://sachachua.com/wp/2008/07/20/emacs-bbdb-modifying-the-record-creation-process/Sun, 20 Jul 2008 15:26:53 +0000

You might want to add fields to the record creation process in M-x bbdb-create. In addition to asking for name, company, e-mail address, addresses, phone numbers, and notes, you may want to make sure you remember to put in birthdates or other information. If you want to prompt for custom fields after the regular BBDB creation form, modify this simple example to suit your needs:

(defadvice bbdb-read-new-record (after wicked activate) "Prompt for the birthdate as well." (bbdb-record-putprop ad-return-value 'birthdate (bbdb-read-string "Birthdate (YYYY.MM.DD): ")))

Thanks to Kaleb Yilma for the question!

Emacs: Smarter interactive prompts with Org remember templates

http://sachachua.com/wp/2008/07/20/emacs-smarter-interactive-prompts-with-org-remember-templates/Sun, 20 Jul 2008 15:46:46 +0000Paul Lussier wanted to know how to interactively prompt for a value and use that value multiple times in org-remember-templates. His example is:

(setq org-link-abbrev-alist '(("RT" . "https://rt/Ticket/Display.html?id=")))

(setq org-remember-templates '(("Tasks" ?t "* TODO %?\n %i\n %a" "~/organizer.org") ("Appts" ?a "* Appointment: %?\n%^T\n%i\n %a" "~/organizer.org") ("RT" ?R "* [[RT:%^{Number}][%^{Number}/%^{Description}]]" "~/org/rt.org")))

The version of Org on my system prompts for Number twice. We want to store the value in an associative list somewhere so that if Org encounters another prompt with the same text, it'll use the stored value. Here's a diff that'll do the trick.

diff -u /home/sachac/elisp/org/org.el /tmp/buffer-content-4571Oz1--- /home/sachac/elisp/org/org.el 2008-07-20 11:28:54.000000000 -0400+++ /tmp/buffer-content-4571Oz1 2008-07-20 11:42:06.000000000 -0400@@ -12822,38 +12822,52 @@ (org-set-local 'org-remember-default-headline headline)) ;; Interactive template entries (goto-char (point-min))- (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([guUtT]\\)?" nil t)- (setq char (if (match-end 3) (match-string 3))- prompt (if (match-end 2) (match-string 2)))- (goto-char (match-beginning 0))- (replace-match "")- (cond- ((member char '("G" "g"))- (let* ((org-last-tags-completion-table- (org-global-tags-completion-table- (if (equal char "G") (org-agenda-files) (and file (list file)))))- (org-add-colon-after-tag-completion t)- (ins (completing-read- (if prompt (concat prompt ": ") "Tags: ")

Page 201: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

- 'org-tags-completion-function nil nil nil- 'org-tags-history)))- (setq ins (mapconcat 'identity- (org-split-string ins (org-re "[^[:alnum:]]+"))- ":"))- (when (string-match "\\S-" ins)+ (let (interactive-entries lookup)+ (while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([guUtT]\\)?" nil t)+ (setq char (if (match-end 3) (match-string 3))+ prompt (if (match-end 2) (match-string 2))+ lookup (assoc prompt interactive-entries))+ (goto-char (match-beginning 0))+ (replace-match "")+ (cond+ ((member char '("G" "g"))+ (let* ((org-last-tags-completion-table+ (org-global-tags-completion-table+ (if (equal char "G") (org-agenda-files) (and file (list file)))))+ (org-add-colon-after-tag-completion t)+ (ins (if lookup+ (cdr lookup)+ (completing-read+ (if prompt (concat prompt ": ") "Tags: ")+ 'org-tags-completion-function nil nil nil+ 'org-tags-history))))+ (if (null lookup)+ (setq interactive-entries (cons (cons prompt ins) interactive-entries)))+ (setq ins (mapconcat 'identity+ (org-split-string ins (org-re "[^[:alnum:]]+"))+ ":"))+ (when (string-match "\\S-" ins) (or (equal (char-before) ?:) (insert ":")) (insert ins) (or (equal (char-after) ?:) (insert ":")))))- (char- (setq org-time-was-given (equal (upcase char) char))- (setq time (org-read-date (equal (upcase char) "U") t nil- prompt))- (org-insert-time-stamp time org-time-was-given- (member char '("u" "U"))- nil nil (list org-end-time-was-given)))- (t- (insert (read-string- (if prompt (concat prompt ": ") "Enter string"))))))+ (char+ (setq org-time-was-given (equal (upcase char) char))+ (setq time (if lookup (cdr lookup) (org-read-date (equal (upcase char) "U") t nil+ prompt)))+ (if (null lookup)+ (setq interactive-entries (cons (cons prompt time) interactive-entries))+ (org-insert-time-stamp time org-time-was-given+ (member char '("u" "U"))+ nil nil (list org-end-time-was-given))))+ (t+ (let ((text+ (if lookup+ (cdr lookup)+ (read-string+ (if prompt (concat prompt ": ") "Enter string")))))

Page 202: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

+ (insert (or text ""))+ (if (null lookup)+ (setq interactive-entries (cons (cons prompt text) interactive-entries)))))))) (goto-char (point-min)) (if (re-search-forward "%\\?" nil t) (replace-match "")

Have fun!

Drupal: Testing multisite/domain-access Drupal locally and on a testing server

http://sachachua.com/wp/2008/07/22/drupal-testing-multisitedomain-access-drupal-locally-and-on-a-testing-server/Tue, 22 Jul 2008 15:09:54 +0000We're using Domain Access to manage a number of related subdomains on a single server. I prefer to develop and test locallly, then push my changes out to a testing server so that other people can try the system. I use the same domain names on my computer and on the test server so that I don't have to make any changes in the database. To switch between them, I comment or uncomment a line like

127.0.0.1 example.com sub1.example.com sub2.example.com

in my /etc/hosts file. However, Firefox caches the domain name information, and it can be confusing to figure out which server I'm on. The following setup makes this much easier:

1. Install Domain Details to show the IP address of the server in your status bar. Good for a quick check - am I on 127.0.0.1 or elsewhere? (NOTE: I started with ShowIP, but it looks like ShowIP caches the information.)

2. Install the Clear Cache Button extension. 3. Restart your browser and customize your toolbar. Add the Clear Cache button. Click on this before

switching sites.

In an ideal world, I'll have a plugin that automatically twiddles my DNS entries, too. =)

Weekly review: week ending July 20, 2008

http://sachachua.com/wp/2008/07/22/weekly-review-week-ending-july-20-2008/Tue, 22 Jul 2008 15:23:26 +0000Oops. I'm a bit late. =).There wasn't much else to report besides the GBS Learning Week and my feedback from it. Worked a lot during those four days, ended up slightly frazzled on Thursday and thinking about overtime. Survived making seven presentations in one week! Also, got some practice in driving, came across a few cool videos, such as What teachers make (inspiring) and the Emacs Org Google tech talk (geeky), and worked on some more Drupal stuff. Had nice chat with Mom.

Goals for this week:

• Get that much closer to a release-worthy version of the Drupal site.• Blog more about Emacs in an attempt to get back on the book-writing track. Thanks to folks in

#emacs and people who have been e-mailing/commenting on Emacs-related stuff!• Meet up with people in Ottawa. W- is going to the Ottawa Linux Symposium.

Page 203: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Drupal: Adding a footer to all of your system e-mail

http://sachachua.com/wp/2008/07/23/drupal-adding-a-footer-to-all-of-your-system-e-mail/Wed, 23 Jul 2008 20:27:10 +0000Drupal's hook system is making me almost as happy as Emacs' hook system does. =) There's a hook_mail_alter function that allows you to modify any message your system sends. Example:

function mymodule_mail_alter($mailkey, &$to, &$subject, &$body, &$from, &$headers) { $body .= "\n\n" . t('This is a system-generated email, please do not reply to this message');}

You gotta love developers who plan for extensibility and put all sorts of hooks into the code...

Please vote for my about-me/sitemap slideshow on Slideshare!

http://sachachua.com/wp/2008/07/25/please-vote-for-my-about-mesitemap-slideshow-on-slideshare/Fri, 25 Jul 2008 12:14:58 +0000Only 7 days left for the Slideshare World's Best Presentation Contest, and I'd love it if y'all came out and voted for my about-me presentation--if only because I found a way to fit both Drupal and Emacs into my rhyming self-introduction! =) It's only one minute and 25 seconds, and it'll probably make you smile. Plus, it's a (mostly) working sitemap, and how cool is that? ;) The prize for this category is an iPod Touch, which (if I win it) I will promptly put to good use. After all, if I used my Nintendo DS to make a presentation, what might I do with something like the iPod Touch? ;) Honorable mention would get me a copy of Presentation Zen book, which I liked so much I bought it already, so I'd be happy to raffle it off and keep just the warm and fuzzy feelings that my fledgling sketching and writing skills got noticed. Want it? Leave a comment on this entry (just one comment is fine), and I'll pick a random commenter if I win the book. In addition to either blog posts about doing interesting things with the iPod Touch or a chance at winning a free book, you'll also get the satisfaction of supporting a geek in an area dominated by graphic designers. =) (Not that graphic designers can't be geeks, of course.) Anyway, please vote for my presentation! =) Voting ends on July 31,

2008. World's Best Presentation Contest

Weekly report - week ending July 25, 2008

http://sachachua.com/wp/2008/07/25/weekly-report-week-ending-july-25-2008/Sat, 26 Jul 2008 01:00:20 +0000After putting in some work over the weekend, W- and I headed to Ottawa. He's here for the Ottawa Linux Symposium, and I'm here to hang out with a few Linux geeks I know - or at least I would've been, had the two people I was looking forward to meet actually decided to come this year. (They both had very good reasons, though.) Telecommuting worked out mostly okay. I finished the items on my list and joined all the relevant calls. Voice over IP occasionally flaked out on me, but we worked around it. I tried rebooting to Microsoft Windows a few times in order to use the VoIP plugin I've got in the mail client, but I sometimes encountered system problems. Still, none of that stopped me from getting my bug list down to zero, and I'm looking forward to the next phase of development in this Drupal project. Hooray! Maybe I'll try to switch my development environment to Emacs during the break - that'll encourage me to keep working on the book. In other news, I now have tentative trips to Washington (September?), Berlin (October?), and Montreal

Page 204: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(October?), all because of Web 2.0 stuff. Hooray! I'm simplifying my wardrobe while adding some flair, too. ;) I used to be quite fond of dresses with matching bags when I was eight or so, and then (if you believe my sister) I promptly lost all sense of fashion. I'm slowly working out my style, my "uniform" - a white blouse, a black skirt or pair of slacks, and a scarf. I replaced my handbag with a medium-sized one with loops for a scarf, and I find a certain odd pleasure in having matched the scarf around my waist with the scarf tied (neatly) around the rim of my bag. It reminds me of fractals. I've also made progress on my quest for decent flat shoes I can wear to the office, having decided that life would probably be better without high heels. It might be unfashionable, but it'll save me back pain in the long run. Next week, my plans are to:

• Install Ubuntu on another partition and get the IBM Linux layer onto it. I think this will help me be more productive. I'm not quite used to the way Redhat Enterprise Linux does things.

• Patch any critical bugs the testers find, and get ready to move the Drupal project from QA to production.

• Write at least three Emacs-related blog posts. • Finish my pasalubong shopping. • Produce a one-page guide to IBM's Web 2.0 tools for new hires< ./i>

Emacs: Someone who's even geekier about BBDB!

http://sachachua.com/wp/2008/07/25/emacs-someone-whos-even-geekier-about-bbdb/Sat, 26 Jul 2008 01:40:24 +0000Remember all those tweaks I posted for working with contacts using Emacs' Big Brother Database? John Sturdy has even cooler stuff. Check out his BBDB extensions. His bbdb-export-lists.el can divide people into different phone and address lists, and his bbdb-human-names.el will even try to address people properly. Clearly, I don't talk to enough Reverend Doctors to require code like this. (And shouldn't there be "Right Honorables" and "His Grace"s in there, too? ;) )

Things I can do to make progress on my book

http://sachachua.com/wp/2008/07/26/things-i-can-do-to-make-progress-on-my-book/Sat, 26 Jul 2008 09:22:26 +0000

• Switch my development environment to Emacs• Put together the existing book chapters I have so far• Process the tech reviews I've gotten back• Work on one outline item• Work on a different chapter• View and explain a random person's .emacs file• Have regular release schedules• Work on the outline• Just write• Hang out in #emacs• Read Emacs-related blogs• Read random wiki pages on emacswiki.org• Post tidbits• Dig through my old Emacs configuration• Answer Emacs-related mail• Monitor help.gnu.emacs and other Emacs-related newsgroups/mailing lists• Learn about a random Emacs symbol• Write for 10 minutes• Brainstorm ideas

Page 205: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Upgrade my packages

Yet another snippet mode for Emacs

http://sachachua.com/wp/2008/07/26/yet-another-snippet-mode-for-emacs/Sat, 26 Jul 2008 10:55:22 +0000While reading gnu.emacs.help, I came across yasnippet (yet another snippet extension for Emacs). It provides interactive templates for text or code entry. It's similar to SkeletonMode, but with TextMate-type syntax, simpler prompting for information, and more focus on expanding mode-sensitive text in the buffer. Here's what I did to get started with it on my system:

1. Download http://yasnippet.googlecode.com/files/yasnippet-0.5.5.tar.bz2 and unpack it as ~/elisp/snippets.

2. Download http://yasnippet.googlecode.com/files/yasnippet-bundle-0.5.5.el.tgz and unpack it as ~/elisp/yasnippet-bundle.el .

3. Symlink lisp-interaction-mode to emacs-lisp-mode with the command

ln -s ~/elisp/snippets/emacs-lisp-mode ~/elisp/snippets/lisp-interaction-mode

4. Add the following lines to ~/.emacs

(require 'yasnippet-bundle)(yas/initialize)(yas/load-directory "~/elisp/snippets");; I don't like using partial words for completion(setq yas/key-syntaxes '("w_" "w_." "^ "))

So far, so good. M-x yas/minor-mode lets me use TAB as the completion key, and I can use TAB and S-TAB to navigate between the fields of a snippet as well. I think it's a decent snippets mode if you don't need the complexity of skeleton.el. After some experimentation, I see how this might make me even happier working on Drupal. I've put together this first try at a template for Drupal modules. Drupal code has a lot of repetitive typing and/or search-and-replacing because all the hook functions need to start with the module name. With yasnippet, I can type in the module name once, and all the other functions will be updated. I often find myself looking up the argument lists for the hook functions, too, and the template includes the hooks I tend to use. I think this snippet will save me a lot of start-up time. You know what would be even cooler? If I could create snippets that dynamically calculate values using Emacs Lisp. Then I could create, for example, a hook_user abbreviation that automatically picked up the module name from the filename or from the other functions. Wouldn't that be cool? UPDATE: Putting Emacs Lisp in templates is awesome. With this function in my ~/.emacs:

(defun sacha/drupal-module-name () "Return the Drupal module name for .module and .install files." (file-name-sans-extension (file-name-nondirectory (buffer-file-name))))

I can make templates like this one for hook_user. Sweet!

Want to subscribe to a subset of my blog?

http://sachachua.com/wp/2008/07/26/want-to-subscribe-to-a-subset-of-my-blog/Sat, 26 Jul 2008 11:27:26 +0000I write a lot about Emacs. I also write a fair bit about Drupal. Both are rather geeky topics that may not interest you, or they might be the only things you want to read about. If all the posts you want to read fall into

Page 206: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

a specific category (example: emacs, drupal, sketches), you go to the category page and subscribe to just that category in your feed reader. If you want to exclude posts in a specific category, here are six ways to filter RSS feeds. Try out http://www.feedrinse.com. I might occasionally go into firehose-mode, but at least you've got a way to control it! =)

Emacs is not just for computer geeks; also, these are the things that keep me going

http://sachachua.com/wp/2008/07/26/emacs-is-not-just-for-computer-geeks-also-these-are-the-things-that-keep-me-going/Sat, 26 Jul 2008 18:50:18 +0000Reposted with permission because (a) it shows that people who aren't computer geeks can also love Emacs, and (b) it gave me a warm and fuzzy feeling and encouraged me to keep writing, so I want to keep it around just in case I get in a rut again.

Sacha, I'm an emacs newbie who's trying to both simplify and empower my computing life, and I've chosen emacs as the tool to do that. I'm pretty excited about that, and overwhelmed, too. Actually, a little background might help: I'm a PhD student in early modern (read: renaissance) English literature. Yeah, I'm a Shakespeare guy. I work in a field in which computers are, to most folks, MS Word, MS Entourage, and MS Explorer. I'm a nut who actually plays with stuff. (Actually, I don't tell my colleagues about it. It could honestly damage my career. I know, it's disturbing.) I also have some tech chops, being a refugee from the heady late 1990s tech boom where I co-founded a small company that made some money before it collapsed. I've been able to do the basics in emacs for years. The basics, but nothing more. My introduction this time was a rather circuitous route: I moved from Mellel (on the Mac), to Scrivener where I discovered the wonders of MultiMarkdown. Happily I discovered that I could use MMD and TextMate to create LaTeX files without having to look at a bunch of distracting LaTeX markup. I could write plain text and, with a couple of handy keystrokes, create beautiful PDF files that my committee would appreciate. The plain text files took up no space and could be edited anywhere. I could fit a bazillion of them on my USB drive and carry loads of research with me to my office on campus (where I got a hand-me-down Dell running XP v.e.r.y.s.l.o.w.l.y) and on my much speedier Mac at home and even in Linux. Neat. Still, MMD felt hack-y and was only supported by one guy and I wondered if there was anything else like it out there. Which lead me to muse-mode. From there you can guess my path of discovery: org-mode, planner-mode, remember: oh my! For a prose writer like myself, the ability to have the cursor jump forward and backward by letter, word, line, and paragraph was nothing new, but M-a and M-e have changed my life. Why don't all word/text processors understand that the sentence is the fundamental unit of prose writing? Why don't they all allow me to navigate using units that make logical sense? Whoever said that emacs was for programmers only surely isn't a writer. (This is becoming much longer than I had anticipated, sorry.) My point in writing is to tell you how invaluable I have found your two public chapters (I think they're 7 and 8) have been for me. The whole idea of writing a book about emacs as cool (as opposed to just highly functional) is both obvious and revolutionary. Know that I would buy a copy today if only it were available. I noticed in your blog that you felt you had lost some steam on the book. Please don't. My life is better, my writing is better, my research is better, and, much to the joy of my wife, my progress toward a completed PhD is better, all thanks to emacs which, based on the tools I'm using, is also in thanks to you. So thank you, and keep writing. I, for one, and hungry for more. I'm sure others are, too.

Jeffrey Windsor

Page 207: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Emacs: Keyboard shortcuts for navigating code

http://sachachua.com/wp/2008/07/27/emacs-keyboard-shortcuts-for-navigating-code/Sun, 27 Jul 2008 09:48:33 +0000One of the lines on my list of things I can do in order to make progress on my book is to move my Drupal development environment from Eclipse to Emacs, as immersion would no doubt give me plenty of things to tweak and describe. When you use something every day, you notice the rough edges. With Emacs, you can sand those edges down. I already use Emacs every day, but I had been doing most of my development work in Eclipse because Eclipse packaged a number of useful features I wanted. If I can move my environment to Emacs, though, I'll be able to customize it a lot more freely. Take something as simple as navigation, for example. In Eclipse, I can hit Ctrl+K to search for the next instance of the current word, which is a handy way to look for function calls or definitions in the same file. How would you do that in Emacs? The built-in search functions allow me to take text from the buffer, but I wanted something even faster. Here are some of the ways you can tweak navigation, too. If you haven't tried it yet, you'll probably like interactive search (C-s) because you can modify the search and see the results as you type. All you need to do to make it better than Eclipse's Ctrl+K is to add a function to grab the current word, even if the point in the middle of the word. Add the following code to your ~/.emacs:

(defun sacha/isearch-yank-current-word () "Pull current word from buffer into search string." (interactive) (save-excursion (skip-syntax-backward "w_") (isearch-yank-internal (lambda () (skip-syntax-forward "w_") (point)))))(define-key isearch-mode-map (kbd "C-x") 'sacha/isearch-yank-current-word)

Type C-s (isearch-forward) to start interactively searching forward, and type C-x to get the current word. Use C-s and C-r to search forward and backward. You can modify your search, too. Want to make it even faster? Use these functions to bind similar searches to shortcut keys:

(defun sacha/search-word-backward () "Find the previous occurrence of the current word." (interactive) (let ((cur (point))) (skip-syntax-backward "w_") (goto-char (if (re-search-backward (concat "\\_<" (current-word) "\\_>") nil t) (match-beginning 0) cur))))

(defun sacha/search-word-forward () "Find the next occurrance of the current word." (interactive) (let ((cur (point))) (skip-syntax-forward "w_") (goto-char (if (re-search-forward (concat "\\_<" (current-word) "\\_>") nil t) (match-beginning 0) cur))))(global-set-key '[M-up] 'sacha/search-word-backward)(global-set-key '[M-down] 'sacha/search-word-forward)

Feel free to change the keybindings or otherwise improve the code. =) Good luck and have fun!

Page 208: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Morning pages from Ottawa

http://sachachua.com/wp/2008/07/27/morning-pages-from-ottawa/Sun, 27 Jul 2008 10:22:17 +0000In one of her books, Julia Cameron suggested writing morning pages as a way to get one's creative juices flowing - at least three pages of writing about whatever comes to mind. I still don't know exactly how pages translate into blog posts, but I thought it would be nice to break up a string of Emacs-related posts with proof that I do, too, have a life. ;) (Well, a life outside Emacs, at least.) That statement would probably have been more powerful had W- and I not chosen to skip the Ottawa Linux Symposium's closing party in favor of working on our computers. He's been trying to figure out how to get kubuntu up and running with all the usual IBM stuff, and I've been trying to figure out how to give Emacs all the features I like in Eclipse and more. So yes, that was what we were doing on a Saturday night: learning more about our tools while sharing a Killaloe sunrise beavertail. (No actual beavers harmed; it's fried dough.) We're heading back to Toronto today. I'm looking forward to having oatmeal for breakfast and preparing a simple, Sacha-sized meal for lunch and dinner. A full week of eating out for every single meal has left me craving the kitchen. Yes, cooking takes more time, but I don't have to decide between feeling guilty about leaving food on my plate and feeling satiated, I don't have to take a chance on whether or not the restaurant will be closed (as was the case with many of our choices on Saturday evening), and I learn a lot more in the process. This is one of the reasons why I don't like traveling for an extended period of time. I miss the kitchen. I miss turning meals from just fuel or explorations of tastes into experiments that'll teach me something interesting along the way. And yes, I'm also looking forward to getting back to the gym. It's funny how you miss it. I've been making up with lots of walking, but still. I miss what I feel like after a good workout: bedraggled but triumphant. I've enjoyed my brief stay in Ottawa, though. I didn't get to meet the people I had been looking forward to seeing, but I did go to some of the birds-of-a-feather get-togethers. I checked out the Sparks pedestrian mall, the Rideau Centre, the Bytown museum, and I saw the cat sanctuary near Parliament (awwww!). I figured out some of the pieces that I'll need to improve if I want to telecommute effectively from the Philippines. VOIP is a big one, and a backup calling card won't hurt, either. I also need to figure out the timezone thing. =) It's been a good trip.

Eclipse to Emacs: Navigating your source tree

http://sachachua.com/wp/2008/07/27/eclipse-to-emacs-navigating-your-source-tree/Mon, 28 Jul 2008 00:17:29 +0000Two other things I like about the Eclipse development environment are the ability to jump to a function definition and the ability to open any resource in the workspace. Fortunately, these shortcuts are easy to duplicate in Emacs. Exuberant Ctags is a utility that builds an index of the function definitions in your source code. You can use this index to jump to any function definition using editors such as vi or emacs. To index your Drupal source code, for example, go to the root of your source directory and use a command like this:

find . -name \*.module -o -name \*.php -o -name \*.inc -o -name \*.install -o -name \*.engine -o -name \*.profile | etags -l php -

To use this index in Emacs, add the following code to your ~/.emacs, changing drupal-project-path as necessary:

(defvar drupal-project-path "~/proj/example" "*Base path for your project")

(require 'etags)(setq tags-file-name (expand-file-name "TAGS" drupal-project-path))

Evaluate the code. You can then use M-. (find-tag) to jump to the declaration of a function in your project. To open any resource in your source tree with a few keystrokes, index the files with filecache and use ido to

Page 209: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

open the file. Ido is well worth learning how to use. Here's the code I use, taken almost directly from the filecache documentation:

(require 'filecache)(require 'ido)(defun file-cache-ido-find-file (file) "Using ido, interactively open file from file cache'.First select a file, matched using ido-switch-buffer against the contentsin `file-cache-alist'. If the file exist in more than onedirectory, select directory. Lastly the file is opened." (interactive (list (file-cache-ido-read "File: " (mapcar (lambda (x) (car x)) file-cache-alist)))) (let* ((record (assoc file file-cache-alist))) (find-file (expand-file-name file (if (= (length record) 2) (car (cdr record)) (file-cache-ido-read (format "Find %s in dir: " file) (cdr record)))))))

(defun file-cache-ido-read (prompt choices) (let ((ido-make-buffer-list-hook (lambda () (setq ido-temp-list choices)))) (ido-read-buffer prompt)))

(ido-mode t);; Change this to filter out your version control files(add-to-list 'file-cache-filter-regexps "\\.svn-base$")(if drupal-project-path (file-cache-add-directory-using-find drupal-project-path))

(global-set-key (kbd "ESC ESC f") 'file-cache-ido-find-file)

This turns ESC ESC f into a handy shortcut for finding files anywhere in your project tree. Read the source code (ido.el) for more information on ido shortcuts. Good luck and have fun! (UPDATE: Added "." to the find command - two people suggested it! =) ) (UPDATE: Forced etags to detect files as php and added .engine and .profile to the list of extensions) (UPDATE: Added version control filter for file-cache)

Emacs, Remember, and GTD

http://sachachua.com/wp/2008/07/28/emacs-remember-and-gtd/Mon, 28 Jul 2008 11:17:14 +0000Charles Cave has written an excellent Remember Mode Tutorial with useful templates for notes, receipts, books read, daily reviews, and all sorts of other good stuff. Check it out!

Kaizen: What would make our Drupal lives better?

http://sachachua.com/wp/2008/07/28/kaizen-what-would-make-our-drupal-lives-better/Mon, 28 Jul 2008 11:38:17 +0000Kaizen: relentless improvement. We're getting ready for the next phase of our Drupal project, and it's a good time to think about how we can make our process better.

Page 210: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Automated builds: I have a few Makefile commands related to pushing the latest development source code to the testing server, but the other developers can't use the commands on Microsoft Windows. However, they have access to another Linux-based server. If I can simplify the deployment process (maybe a password-protected webpage that allows you to choose which revision to deploy?), then they won't be held up when I go on vacation.

• Automated testing: We used simpletest for a few pieces of functionality, but we don't have anything close to coverage. I'd like to learn how to write proper tests for Drupal so that I can avoid regression errors, which I often made during development.

• Switching between hosts: Because we use Domain Access, I can't just use a local domain name and a copy of the server's database. My current approach is to use the same domain name as on the testing server, and then keep editing /etc/hosts to switch back and forth. An alternative might be to create a Makefile target that grabs the server's database, runs it through sed to translate all the domain names to my local domain, and restores the database from this translated file. That way, I don't need to edit /etc/hosts all the time.

• Coding environment: I'm thinking of moving my development from Eclipse to Emacs in order to be able to customize my environment more effectively. I'll post more notes about it as I figure out what works for me and what doesn't. It's a good excuse to learn even more about Emacs...

What worked well:

• Source code control, I love you so much, even if you're Subversion. • Adding a CSS person to our team meant that the other developer and I were much less stressed out

about cross-browser issues. Hooray! • Using a defect-tracking system was infinitely better than sending e-mail around, even if that defect-

tracking system was ClearQuest. ;)

Drupal: Patching simpletest for Drupal 5 to understand the Location header

http://sachachua.com/wp/2008/07/28/drupal-patching-simpletest-for-drupal-5-to-understand-the-location-header/Mon, 28 Jul 2008 20:38:04 +0000Automated testing is part of good programmer hygiene. I wanted to write tests for both functions and Web-based interfaces in our Drupal project, but one of the tests I wrote was always failing. Many prints and var_debugs later, I found out that it was because simpletest didn't do anything with Location: headers, which happen when you drupal_goto an external site. Here's a first pass at fixing that behavior - patch sites/all/modules/simpletest/simpletest/browser.php:

Index: browser.php===================================================================--- browser.php (revision 753)+++ browser.php (working copy)@@ -321,6 +321,22 @@

$this->_history->recordEntry( $this->_page->getUrl(), $this->_page->getRequestData());+ $counter = 0;+ $url = $this->_page->_headers->_location;+ if ($url) {+ $url = ≠w SimpleURL($url);+ }+ while ($url && $counter < 10) {+ $this->_page = &$this->_fetch($url, $parameters);+ $this->_history->recordEntry(

Page 211: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

+ $this->_page->getUrl(),+ $this->_page->getRequestData());+ $url = $this->_page->_headers->_location;+ if ($url) {+ $url = ≠w SimpleURL($url);+ }+ $counter++;+ } return $this->_page->getRaw(); }

(update: okay, let's try diff syntax highlighting with wp-syntax...)

From Eclipse to Emacs: Drupal development with Subversion, tags, templates, and xdebug

http://sachachua.com/wp/2008/07/29/from-eclipse-to-emacs-drupal-development-with-subversion-tags-templates-and-xdebug/Tue, 29 Jul 2008 13:33:01 +0000Yesterday, I started working on my Drupal project in Emacs. I can't believe I hadn't moved to Emacs earlier. =) I really like being able to diff a file with C-x v = (vc-diff) and check in a file with C-x v v (vc-next-action). I also like the way that svn-status (from psvn.el) lets me examine a directory tree, mark a set of files, and commit them--all without using the mouse. I probably should've set up keyboard shortcuts for these in Eclipse, but Eclipse made it too easy to just use the mouse. Emacs encourages you to use the keyboard, and it's easy to customize any keyboard shortcut. php-mode's C-c . (php-show-arglist) works beautifully with the TAGS file that I'd set up using Exuberant Ctags, so I don't need to do anything special in order to get function definitions. Definition functions for PHP functions would be nice. In the meantime, there's C-c C-f (php-search-documentation). The yasnippet template engine came in handy when I was writing test cases. I updated my module template to include the simpletest hook, added a test case template, and added a template for the simpletest hook as well. Yay dynamic templates! And I just got Xdebug working with PhpMode and Geben... Sweet!

Development kaizen: Deployment and testing

http://sachachua.com/wp/2008/07/29/development-kaizen-deployment-and-testing/Tue, 29 Jul 2008 13:54:39 +0000I got back yesterday to a still-empty defect list, so I decided to spend the day working on some infrastructure to help my team work more effectively. Thinking about what could make the most difference in the other developers' productivity, I decided to invest time into making it easier for them to deploy code to the testing server. I had written a Makefile target that efficiently transferred only the updated files, but the other developers worked on Microsoft Windows and did not have all the necessary tools. I spent the morning writing a web-based interface for them: a password-protected PHP script that displayed a list of recent revisions and allowed people to deploy a selected revision to a separate server. Behind the scenes, it was a mess of bubblegum and string. To work around various limitations, I strung together sudo and suid and rsync and ssh key-based authentication. It wasn't pretty, but it worked. I e-mailed instructions to my team members, and they started using it right away. After solving that problem, I focused on improving our tests. Fixing one bug often led to creating or recreating another, and these regression errors resulted in back-and-forth communication and wasted time. I explored the Simpletest automated testing framework for Drupal, and found out that I could write both unit tests and Web-based tests using the framework. However, I had a hard time figuring out why several of my Web-based tests consistently failed. I found out that the latest version of Simpletest for Drupal 5 did not understand the Location: header, which we use extensively in order to direct people to different subdomains and external sites. I fixed it and wrote a number of tests for one of our key

Page 212: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

modules. By the time I was ready to pack up and go home, I'd gotten into the swing of writing test cases. Easier deployment and automated testing go a long way towards making a project almost a joy to work on. I'm glad I spent some time paving the way for my team and for other projects to come. =) Kaizen: relentless improvement.

Emacs and PHP: There's more than one way to do it, of course

http://sachachua.com/wp/2008/07/30/emacs-and-php-theres-more-than-one-way-to-do-it-of-course/Wed, 30 Jul 2008 12:25:04 +0000The PhpMode page on EmacsWiki lists five options for developing PHP in Emacs. I'm currently using the php-mode maintained by Aaron Hawley, and I'm quite happy with it. I'm curious about the php-mode maintained by Ahmet Usal, though, as it has extensive templating support and electric behavior. It seems to have abbreviations and argument lists for every PHP function, and I might borrow the code and convert it to a yasnippet file if I don't end up using this. I'll switch to Ahmet Usal's php-mode today, see what it feels like, and post my notes. Has anyone else tried both?

Emacs and PHP tutorial: php-mode

http://sachachua.com/wp/2008/07/30/emacs-and-php-tutorial-php-mode/Wed, 30 Jul 2008 13:16:43 +0000php-mode is responsible for syntax highlighting, indentation, and other major PHP-specific modifications to your editing environment. There are a number of PHP modes available for Emacs. In this project, you'll learn how to set up the php-mode available from http://sourceforge.net/projects/php-mode/ . At the time of this writing, the current version is 1.4.0 and the maintainer is Aaron Hawley.

Download the latest php-mode.el from http://php-mode.sourceforge.net/ and save it to a directory in your load-path. I like to organize my Emacs Lisp files in a directory called ~/elisp. To add PHP support to your Emacs, add the following lines to your ~/.emacs:

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

This configures Emacs to automatically recognize files ending in ".php", ".phps", ".php3", ".php4", ".phtml", and ".inc" as PHP files. To associate more extensions with PHP files, add lines like this example to your ~/.emacs:

(add-to-list 'auto-mode-alist '("\\.module$" . php-mode)) (add-to-list 'auto-mode-alist '("\\.inc$" . php-mode)) (add-to-list 'auto-mode-alist '("\\.install$" . php-mode)) (add-to-list 'auto-mode-alist '("\\.engine$" . php-mode))

This associates php-mode with the extensions used by Drupal, a PHP framework. When you open a file with the specified extension, it should be highlighted according to PHP syntax.

Here are some useful commands:

TAB c-indent-command Indent the current line

M-; comment-dwim Add a line comment, comments or uncomments the currently-

Page 213: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

selected region, or does other smart comment-related actions

C-c C-f php-search-documentation Search the online PHP manual for the current word

C-c RET php-browse-manual View the online PHP manual

C-c . c-set-style Change coding style

C-M-a, C-M-e

c-beginning-of-defun, c-end-of-defun

Go to the beginning or end of the current function

C-M-h c-mark-function Select the current function

M-a, M-ec-beginning-of-statement, c-end-of-statement

Go to the beginning or end of the current statement

Here are some variables you may wish to customize:

indent-tabs-mode Set this to nil if you want to insert spaces instead of tabs

case-fold-search Set this to t if you want case-insensitive search.

c-basic-offset Set your tab size or number of spaces used as a basis for indentation

You can either customize these variables globally with M-x customize or set them for php-mode. Here's an example that sets up a buffer with the coding style recommended for Drupal:

(defun wicked/php-mode-init () "Set some buffer-local variables." (setq case-fold-search t) (setq indent-tabs-mode nil) (setq fill-column 78) (setq c-basic-offset 2) (c-set-offset 'arglist-cont 0) (c-set-offset 'arglist-intro '+) (c-set-offset 'case-label 2) (c-set-offset 'arglist-close 0)) (add-hook 'php-mode-hook 'wicked/php-mode-init)

You can further customize the indentation by moving the point to where the indentation needs improvement and typing C-c C-o (c-set-offset).

To try automatic indentation, press C-j (newline-and-indent). If you like that behavior, you can make it the default in php-mode by adding the following line in ~/.emacs:

(define-key php-mode-map (kbd "RET") 'newline-and-indent)

You may also be interested in M-x show-paren-mode, which shows the matching parenthesis, bracket or brace for the character at point. You can enable it automatically by adding the following line to your

Page 214: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

~/.emacs:

(setq show-paren-mode t)

It's a good idea to separate PHP and HTML code. This is not only better coding practice, but it also makes developing in Emacs much easier. php-mode focuses on PHP-specific behavior and does not have special support for HTML. Emacs has a number of packages that allow you to work with multiple modes like php-mode and html-helper-mode in a single buffer, but they don't always work, and indentation can be confusing. If you must work with large segments of both PHP and HTML in the same file, check out MultipleModes (http://www.emacswiki.org/cgi-bin/wiki/MultipleModes) for tips.

Kaizen: Moving time around

http://sachachua.com/wp/2008/07/31/kaizen-moving-time-around/Thu, 31 Jul 2008 10:46:30 +0000I recently (re)discovered that writing is much easier and more enjoyable in the early morning when I'm fresh and focused than late at night when I'm thinking more about what I'm doing at work. To take advantage of this, I've been slowly moving my waking time earlier and earlier. Yesterday, I went to bed at 9 after tidying up and preparing for the next day. Today, I got up at 5:15. It was fifteen minutes later than I'd set the alarm clock for, but I realized that the dream I was dreaming wasn't all that interesting compared to what I might learn if I started writing.

Moving tasks to the night before can support this early-morning writing by freeing up more time. The more I can do the night before, the less I need to do the morning after - and it pays off even when the exchange isn't 1:1. For example, moving the half-hour I used to spend cooking steel-cut oats for breakfast from morning to evening means that I spend just a few minutes heating up a breakfast with much more texture than instant oatmeal. I packed my lunch last night, so I just need to grab it from the fridge and head out the door. I checked my purse for my keys and badge, too. Doing these little things the night before helps me streamline my morning routine.

What else can I do to free up time? I might try watering the plants in the late afternoon or try outlining in the evenings. OpenLoops has good tips for making the most of these early morning hours, and I'm sure I'll discover more along the way.

I'd also like to look into freeing up weekend time. I used to save laundry loads and library runs for the weekend, but if I can use my weekday evenings to take care of these things, then that frees up a larger block of uninterrupted time.

Emacs and PHP: On-the-fly syntax checking with Flymake

http://sachachua.com/wp/2008/07/31/emacs-and-php-on-the-fly-syntax-checking-with-flymake/Thu, 31 Jul 2008 10:50:22 +0000The dreaded white screen of nothingness usually means that I've misplaced a quotation mark or brace somewhere in my PHP code. On-the-fly syntax checking in Eclipse helped me find those errors quickly because I could scan the right scrollbar for areas marked with red. I knew that shifting to Emacs wouldn't automatically cure me of the propensity to mismatch my parentheses. If I could get on-the-fly syntax checking working in Emacs, I'd save myself a lot of time. It took me a while to sort out various configuration problems. Most were due to the fact that PHP didn't report parse errors with my original configuration, even though I had uncommented the line after "Show only errors". As it turned out, the error_reporting option in php.ini needs to include E_PARSE in order for php to report parsing error details. Here's the value I'm currently using in /etc/php.ini:

Page 215: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

error_reporting = E_ERROR|E_COMPILE_ERROR|E_CORE_ERROR|E_PARSE

Flymake is the package responsible for on-the-fly syntax checking in Emacs. Out of the box, it supports C, C++, XML, XHTML, Perl, Java, TeX, and IDL. To load Flymake and add support for PHP, add the following to your ~/.emacs:

(require 'flymake)

(defun flymake-php-init () "Use php to check the syntax of the current file." (let* ((temp (flymake-init-create-temp-buffer-copy 'flymake-create-temp-inplace)) (local (file-relative-name temp (file-name-directory buffer-file-name)))) (list "php" (list "-f" local "-l"))))

(add-to-list 'flymake-err-line-patterns '("\\(Parse\\|Fatal\\) error: +\\(.*?\\) in \\(.*?\\) on line \\([0-9]+\\)$" 3 4 nil 2))

(add-to-list 'flymake-allowed-file-name-masks '("\\.php$" flymake-php-init))

;; Drupal-type extensions(add-to-list 'flymake-allowed-file-name-masks '("\\.module$" flymake-php-init))(add-to-list 'flymake-allowed-file-name-masks '("\\.install$" flymake-php-init))(add-to-list 'flymake-allowed-file-name-masks '("\\.inc$" flymake-php-init))(add-to-list 'flymake-allowed-file-name-masks '("\\.engine$" flymake-php-init))

(add-hook 'php-mode-hook (lambda () (flymake-mode 1)))(define-key php-mode-map '[M-S-up] 'flymake-goto-prev-error)(define-key php-mode-map '[M-S-down] 'flymake-goto-next-error)

Evaluate that code, open one of your PHP files, and intentionally break it. The syntax error should be highlighted. To change the highlighting, move your point to the error and type M-x customize-face. Accept the default (flymake-errline), then customize it as desired. Don't forget to save your customizations for future sessions. If your syntax errors are not highlighted and you get a message like this:

Configuration error occured while running (php -f test_flymake.php -l). flymake will be switched OFF

double-check your /etc/php.ini to make sure that E_PARSE is included as one of the options for error_reporting. You can check the output by running php -f yourfile.php -l. You should see the line number of the parse error. Make sure that this matches the regular expression added to flymake-err-line-patterns in your ~/.emacs. If your PHP returns a slightly different message, modify your flymake-err-line-patterns accordingly. Flymake can save you a lot of programmer frustration for the cost of a little CPU time. Use it to check for errors before you save files or commit them to your source code control repository, and you and other developers will be much happier. (UPDATE: Fixed typo in flymake-php-init)

Weekly review - week ending Aug 1-ish

http://sachachua.com/wp/2008/08/02/weekly-review-week-ending-aug-1-ish/Sat, 02 Aug 2008 16:25:35 +0000This week was about mornings. I successfully switched over to an early-morning schedule, waking up at around 6 in order to write. I found that writing was much easier and more enjoyable in the morning, with lots of energy and a fresh mind, and I also appreciated the incidental benefits of being able to have a leisurely breakfast and a non-stressed start to my day. (W-'s gratitude for early-morning coffee was a nice bonus!) This early-morning schedule meant that I found myself getting sleepy at 9, though, and I was often in bed by 10. W- expressed some concern that we might end up leading separate lives, so we'll figure out how to balance

Page 216: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

that. We could either figure out how to make the most of a late schedule, shift to an early schedule, or make sure we have enough quality time together. If you're in a wonderful relationship with someone with a different circadian rhythm, how do you make the most of it? (I'd definitely like to keep my early-morning writing, though. I liked the feeling of that more than I like afternoon or evening writing...) Result: Lots of Emacs blog posts this week, as I set up my Emacs development environment for PHP!

• On-the-fly syntax checking with Flymake • Emacs and PHP tutorial: php-mode • Emacs and PHP: There's more than one way to do it, of course • From Eclipse to Emacs: Drupal development with Subversion, tags, templates, and xdebug • Navigating your source tree

In other news, the Drupal project I've been working on is now live on the production server. Hooray! The project manager asked us last week to estimate how much time it would take to move the system from the quality assurance server to the production server. I plucked a number out of the air based on how long it took to move to the QA server: one hour? My teammate adjusted my estimate to account for finicky things: three hours? The project manager laughed and told us that we had a week to do it. I took care of it yesterday, and it took me almost exactly an hour (including DNS changes). I'll check later if any bugs have come up. I was also happy with some of the infrastructure I built and the tests I added at work. Kaizen! Experience++! Other parts of my life:

• I've achieved the savings target for my gadget fund, which means I _could_ go out and get a Lenovo Thinkpad X61 tablet PC if I _really_ wanted to. I don't have a compelling need for it, though. I'd like to use it to draw and mindmap, but there are plenty of things to keep me busy in the meantime, so I won't touch the gadget fund until I know that it'll give me a lot of extra value.

• I'm saving up some of my play money so that I can experiment with delegating chores and swapping money for time. I don't have a good sense yet of whether that's an efficient long-term tradeoff, but it's worth exploring. Personal assistant agencies in Toronto tend to charge about $25 / hour.

• Yoga classes have been cancelled for August, so it's just going to be krav maga. I'll continue to do yoga at home.

I'm planning to install Ubuntu today. I need to borrow W-'s CD drive, as mine seems to be somewhat broken. I'd like to get everything set up over the long weekend. My goals for next week are:

• Work out a better schedule with W- so that we have time to keep developing in-jokes and enjoying each other's company

• Keep the production server running; begin development on phase 2? • Cook beef stroganoff for the first time • Get ready for our trip to the Philippines - yay!

August 2008

Switching to Ubuntu

http://sachachua.com/wp/2008/08/03/switching-to-ubuntu/Sun, 03 Aug 2008 15:28:09 +0000Switching my laptop to Ubuntu took much less time and effort than I thought it would take. I couldn't resize my existing partitions, so I formatted my data partition and made my swap partition smaller. This gave me about 6.5GB of space for the base Ubuntu system. My /home directory was already on a separate partition, and the other partitions had my installations of Microsoft Windows and Redhat Enterprise Linux. Reusing

Page 217: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

my /home partition made it really easy to get up and running. I've also symlinked a few shared directories such as /usr/src and /usr/local. End result: a system that's pretty much like my RHEL system, but much more current. Hooray!

Year in review: Life as a 24-year-old

http://sachachua.com/wp/2008/08/03/year-in-review-life-as-a-24-year-old/Sun, 03 Aug 2008 20:32:39 +0000I'm turning 25 in a little over a week. Birthdays are a terrific opportunity to look backward and look forward--what I've done, how I've grown, and what I want to do or be next. I'll be celebrating my birthday in the Philippines, among family and my oldest friends. But I'd also like to celebrate my birthday with you, as through my blog, you've shared my journey too. The blog makes it easy to review the year. So, how am I different from the person I was in August 2007? There were three major changes in my life, all related to each other. The first is my relationship with W-, which began in March 2008 and is now such a core part of my life. I can't say enough good things about it without sounding like a Hallmark card. The second major change is the transition from the academe to the industry: I finished my master's degree and joined IBM Canada as a technology evangelist and application developer. The third major change followed naturally from the first two: instead of going home to the Philippines, I'll be in Canada for a while. Because of W-, I chose not to return to the Philippines after the completion of my studies, and because of my work, I had the means to support myself here. This change was the most challenging, but I'm sure it will work out somehow. Along the way, I learned how to sketch, cook, defend myself, do yoga, drive in winter, make it across the monkey bars, go on the static and flying trapezes, grow a herb garden, script virtual worlds, manage my retirement investments, survive the conference circuit, dictate to the computer, inspire my colleagues, share thoughts about my generation, develop with Drupal, and connect with amazing people. I've grown as a person. I've learned a lot about love. I've learned a lot about fighting for what I feel and building bridges after the storms. I've learned about the wonder and delight one can feel in ordinary things. I've learned about the kind of person I can be. I've grown as a writer, speaker, and developer. I've learned about how writing fits into my life. I've learned about my personal style of presenting (interactive, enthusiastic, practical). I've learned about configuration management, testing, and all sorts of tweaks to make my development environment a better fit for me. I've shared what I've learned along the way. What will the next year be like? I'm looking forward to deepening my relationship with W- and seeing what another year of shared experiences will bring us. I'd like to get better at connecting with friends and family. I hope to get an even clearer idea of how I can contribute professionally, and to do so. I'd like to explore other ways to work and live more fully. Here are some of my measurable goals for the next year. By August 2009, I'd like to be able to look back and say that I've:

• completed a book on Emacs (whether published by No Starch Press or self-published) • increased my reach and responsibilities at and outside work • completed my paperwork for the permanent residency application (Canadian experience class?) • continued to donate 10% of my income • continued to save at least 50% of my income • developed another income source aside from salary, interest, and index growth • learned how to cook at least 20 new recipes

Join me as I figure more things out! =)

Emacs: Caps lock as M-x

http://sachachua.com/wp/2008/08/04/emacs-caps-lock-as-m-x/Mon, 04 Aug 2008 10:59:02 +0000Inspired by Lennart Borgman's recent post on help.gnu.emacs about binding Caps Lock to M-x on Microsoft

Page 218: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Windows, I set my system up with the Linux equivalent. To make Caps Lock a shortcut for M-x, add the following lines to your ~/.emacs:

(if (eq window-system 'x) (shell-command "xmodmap -e 'clear Lock' -e 'keycode 66 = F13'"))(global-set-key [f13] 'execute-extended-command)

OpenOffice.org: Replacing dingbats

http://sachachua.com/wp/2008/08/04/openofficeorg-replacing-dingbats/Mon, 04 Aug 2008 17:41:15 +0000I _really_ should have blogged this when I first wrote it. That would've saved me time writing it again!

Sub ReplaceDingbats(optional doc) oDocument = IIf(IsMissing(doc), ThisComponent, doc) oSearchDesc = oDocument.createSearchDescriptor for i = 1 to 9 oSearchDesc.searchString = "(;; )?\(" + i + "\)" oSearchDesc.searchRegularExpression = true mFound = oDocument.findFirst(oSearchDesc) do while not isNull(mFound) mFound.string = chr(&HF08B + i) mFound.CharFontName = "Wingdings" mFound = oDocument.findNext(mFound.End, oSearchDesc) loop next iEnd Sub

It's a macro for OpenOffice.org - replaces the widgets I use in formatting the book chapter...

Emacs and Gnus: zomg, new chapter out the door!

http://sachachua.com/wp/2008/08/04/emacs-and-gnus-zomg-new-chapter-out-the-door/Mon, 04 Aug 2008 18:25:34 +0000So I _finally_ pulled everything together and got my Gnus chapter out the door. Hooray, hooray, hooray!

• Reading Mail with Gnus (PDF) • Reading Mail with Gnus (HTML) , produced by Org

Disclaimers: It's rough, it probably makes a few assumptions about whatever version of Emacs I'm running, it's probably missing your favorite tips (and I'd love to add them!), and it probably has typos. Meep. But it's out there! Hooray, hooray, hooray! Next step: write about web-browsing in Emacs...

Finding something worth talking about

http://sachachua.com/wp/2008/08/04/finding-something-worth-talking-about/Mon, 04 Aug 2008 19:45:59 +0000"I don't know what I'd talk about," people often tell me when I encourage them to think of topics for conferences and events. "I don't know what to write about," they say when I encourage them to blog. "I'm not an expert. I don't know anything." I get that imposter feeling as much as anyone else. I wonder what I know and why people are interested. I worry that the next presentation, the next article is when I'll be unmasked as just another newbie. Sometimes I think that my enthusiasm is the main reason why people listen, because

Page 219: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

they already know everything I'm saying. I hate wasting time by not adding anything new. You might recognize these things as reasons that stop you from standing up and speaking. Before you can think of improving your presentation skills or even becoming comfortable in front of the crowd, you need to find your _why_--your reason to speak, something worth talking about. I struggle with this every time I see a call for participation or come across a conference I want to attend. These questions are helpful:

• Who will be at the event, and who do I want to get into my session? This gives me an idea of the audience.

• What do they care about that I also care about? If I can't find something that I'm passionate about and the audience is probably interested in, then it's not worth presenting. I'd like to avoid presenting on things I don't particularly care about, and no one's going to listen if I'm passionate about something and I can't show people what's in it for them. If I can find something we all care about, though, then it's easy to go forward.

• How can I help them? What can I do to save them time or help them work more effectively? If I spent a lot of time learning about something, I can save lots of people time by summarizing what I've learned, pointing out good ways to do things, and helping people avoid the pitfalls.

• What do I want to learn more about? Teaching helps me learn something new or deepen my knowledge of something I've learned. Every presentation should stretch me at least a little, even if it covers similar ground as a previous presentation. Each presentation is a good excuse to learn. I'll often submit stretch presentations where I know maybe half of the material, and this helps me learn even more in the process of preparing the presentation.

The next time an opportunity to share comes up--a call for participation, an educational community meeting--ask yourself:

• Who will be at the event? • What do they care about that you also care about? • How can you help them? • What do you want to learn more about?

Chances are that you'll find something you want to share. Good luck and have fun!

Drupal shell: quickly evaluating PHP statements in a Drupal context

http://sachachua.com/wp/2008/08/05/drupal-shell-quickly-evaluating-php-statements-in-a-drupal-context/Tue, 05 Aug 2008 21:25:26 +0000I often find myself needing to variable_set something temporarily, just to try things out. The drush module provides a command-line interface that solves this problem with a little more hacking. To minimize the effect on my source tree, I've unpacked it into the sites directory for my local installation and enabled it in my test database. After I enabled the main drush module and the related modules, I tweaked drush_tools to include an insecure-but-useful eval command. Here it is:

--- sites/local.example.com/modules/drush/drush_tools.module.orig 2008-08-05 17:18:48.000000000 -0400+++ sites/local.example.com/modules/drush/drush_tools.module 2008-08-05 17:18:55.000000000 -0400@@ -46,6 +46,10 @@ 'callback' => 'drush_tools_sync', 'description' => 'Rsync the Drupal tree to/from another server using ssh' );+ $items['eval'] = array(+ 'callback' => 'drush_tools_eval',+ 'description' => 'Evaluate a command',

Page 220: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

+ ); return $items; } @@ -156,3 +160,6 @@ } } +function drush_tools_eval($command) {+ eval($command);+}

I also added an alias to my ~/.bashrc along the lines of:

alias drush='php ~/drupal/sites/local.example.com/modules/drush/drush.php -r ~/drupal -l http://local.example.com'

where ~/drupal is my multisite Drupal directory root. After I loaded the alias with "source ~/.bashrc", I can now execute PHP statements in my Drupal context with commands like:

drush eval "variable_set('hello', 'world');"

Good stuff!

Drupal, Emacs, and templates: Module update functions

http://sachachua.com/wp/2008/08/06/drupal-emacs-and-templates-module-update-functions/Wed, 06 Aug 2008 19:00:46 +0000Drupal's coding conventions make it easier to hook into system behavior, but they also result in a lot of repetitive typing. For example, you can run code when upgrading a module by putting the code in a function named modulename_update_N() in your module's install file. I found myself scrolling up and copy-pasting stuff too many times, so I decided to automate it instead. I've been using yasnippet for my Emacs templates. All I needed to do to automate that little update bit was to write some code that figured out what the next update number should be. Here's the snippet file I've just added (~/elisp/snippets/php-mode/drupal-mode/_update):

function `(sacha/drupal-module-name)`_update_`(sacha/drupal-module-update-number)`() { $ret = array(); $0 $ret[] = array( 'success' => true, 'query' => '$1', ); return $ret;}

The relevant functions from my ~/.emacs:

(defun sacha/drupal-module-update-number () "Return the number of the next module update function.This is one more than the highest number used so far.This function should be called in a module's .install file." (save-excursion (save-restriction (widen)

Page 221: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(goto-char (point-min)) (let ((module-name (sacha/drupal-module-name)) (max 0)) (while (re-search-forward (concat "function[ \t\n]+" module-name "_update_\\([0-9]+\\)") nil t) (setq max (max (string-to-number (match-string 1)) max))) (number-to-string (1+ max))))))

(defun sacha/drupal-module-name () "Return the Drupal module name for .module and .install files." (file-name-sans-extension (file-name-nondirectory (buffer-file-name))))

I can't think of how I'd do that in Eclipse. =) Don't get me wrong--I still like Eclipse--but I heart being able to hack my editor on the fly.

Lifehacking: Switching to a rolling laptop bag

http://sachachua.com/wp/2008/08/06/lifehacking-switching-to-a-rolling-laptop-bag/Thu, 07 Aug 2008 01:36:11 +0000I've been paying attention to the preventive advice I picked up during my last session with a registered massage therapist, and I thought I'd post an update on how things are going with this life-hacking.

• I switched to flat shoes. When the massage therapist mentioned that high-heeled shoes could be the reason why some of my muscles were tense, I said I'd switch to flat shoes. This was apparently not the way most women react. They're more likely to say, "Sure, when they make flat shoes that aren't ugly." Well, I found two pairs of shoes that look presentable enough for the office. =)

It turns out that you really do need to walk a mile in your own shoes before they're broken-in enough to be comfortable. Both of my new pairs of flat shoes are now comfy enough for extended walks. The fancy insoles I picked up to add arch support threw me off balance and induced enough pain to make me hobble, so I got rid of the insoles. Now I just use plain liners to keep the shoes relatively clean.

• I switched to crossing my legs at the ankles, not at the knees. Sometime after grade school, I picked up the habit of crossing my legs at the knees. I suppose it was because practically everyone else I saw did it. Probably not goot for my back muscles and circulation in the long run. Stopping this behavior took a little conscious thought for a couple of days, and then it felt natural not to do it any more. Now I just cross at the ankles if I want to, all proper-like.

• I switched to a rolling laptop case instead of a backpack. Yes, it's a bit of a challenge getting a bulky rolling laptop case through the wickets or up and down stairs, but my shoulders think it's a good trade-off.

There's only one thing I'm having a hard time doing: leaning back. The massage therapist said that some of my back and neck muscles are tenser than they need to be because I lean forward instead of using the chair back. I'm not used to the idea of leaning back against the chair. It feels casual, and it sometimes means that I'm not in quite the right position to type. Hmm...

Making things tangible: agile bug-tracking with LEGO!

http://sachachua.com/wp/2008/08/06/making-things-tangible-agile-bug-tracking-with-lego/Thu, 07 Aug 2008 01:46:02 +0000What a creative way to make things concrete... <laugh>

Page 222: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Tangible Bug Tracking Using LEGO Bricks in Agile2008, Toronto Object 11

view presentation (tags: buglego agile2008 lego tool)

Do what works for you; It's not about being Gen Y, it's about being new

http://sachachua.com/wp/2008/08/06/do-what-works-for-you-its-not-about-being-gen-y-its-about-being-new/Thu, 07 Aug 2008 02:13:38 +0000Luis Suarez has just realized that being a Web 2.0 evangelist doesn't mean getting into every new Web 2.0 tool, and he linked to Chris Brogan's post on doing what works for you. This reminds me of a point I've been wanting to think about for a while. =) When people look at the way new generations or new hires immerse themselves in learning, they often think that they themselves could never do that, could never find the time to try out and learn all these different things. If you've ever told yourself that or heard someone say that, I'd like to help you remember what it was like to be on the other side of the fence, and I'd like to remind my future self what it's like to be here. Yes, being new means I have no bad habits to unlearn. That's part of it. But it's also true that I don't have as many good habits as you do, or even "good enough" habits that can get me through. That's one of the things that drives me to go out there and experiment. Because I don't have a "good" way of dealing with so many things, I need to try lots of different ways and see which ways work for me. In other areas, where I've found things that work for me, I stick with them and get deeper and deeper into them. Someday, my mind might have been so shaped by the tools I've used that I won't see any need or potential beyond them, and it might be someone else's turn to explore even further. I think that the trick, then, is to keep "breaking" things, keep stepping out of my comfort zone, so that I always feel the urge to learn something. For example, even though I've used Emacs for years, I'm always pushing it to do something new, and I'm always tinkering with other editors and other systems to see if I can steal any good ideas. Helping other people also stops me from becoming complacent, becoming too comfortable with my current toolkit. When I'm helping people brainstorm, answering their questions, customizing systems to fit their needs, I learn more about them, the system, and myself. I learn in the process of teaching. I'm not going to adopt every single thing that comes along, especially when I've already got something that works out quite well. (Look at how old my text editor is!) That's okay. That kind of exploration will naturally fit other people. What I can do, though, is:

• expand the breadth and depth of my tools so that I'm not just replacing interchangeable parts, but exploring new territory

• keep exploring the depths and the interconnections between different tools • help people with as many tools as I can, especially if that takes me outside my toolkit • borrow ideas from other tools

That's how I plan to mix being both new and experienced. =) How do you keep yourself new?

Page 223: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Deploying to servers

http://sachachua.com/wp/2008/08/08/deploying-to-servers/Fri, 08 Aug 2008 14:38:25 +0000I'm heading to the Philippines tomorrow, and to make life easer for the two other Windows-based PHP developers on my team, I updated the web-based deployment script I mentioned in Development kaizen: deployment and testing. I added the ability to push a specified revision to the production server. It took me less time than I thought it would (I love it when things Just Work!), so I decided to spend time documenting it just in case I ever need to do it again (almost certainly) or just in case it breaks while I'm away (hope not). Behind the scenes, there are a number of moving parts:

• Key-based authentication. Because I need to copy files and run commands on the production and QA servers non-interactively, I needed to set up key-based authentication using SSH. I'm somewhat nervous about using a passphrase-less key, but I couldn't see a way to work around this.

• Rsync. I use rsync over ssh to transfer files to the remote system. It's good at efficiently transferring changed files. I couldn't use --delete to get rid of old files, though, as our source tree does not include the complete system.

• A shell script with the suid bit. The shell script is responsible for exporting the requested revision to a temporary directory, rsyncing it over to the selected host, and running a few commands on the server in order to reset file permissions and clear the cache. The suid bit is there so that it takes my identity and uses the key that I set up. I resorted to suid because I couldn't figure out how to make sure that Apache had its own key. I tried associating it with the user that Apache ran as, but I kept running into "no tty"-type errors. The suid workaround solved the problem quickly.

• A PHP script that displays a form and the last 20 revisions. The form includes a drop-down box of the revisions displayed, a button for deploying to QA, and a button for deploying to the server. When submitted, the script does some error-checking, then uses system to call the relevant shell script. The script determines the list of revisions by using shell_exec to store the output of svn log ... -limit 20 in a string, then using preg_match_all to match all instances of /r([0-9]+)/. Seems to work.

Drupal 5: Migrating a production database to a QA server

http://sachachua.com/wp/2008/08/08/drupal-5-migrating-a-production-database-to-a-qa-server/Fri, 08 Aug 2008 20:37:25 +0000Building on the configuration management strategy I described last time, I wrote some scripts to make it easier for other developers to migrate the production database to the QA server or to get a copy of the production database for their local system. I needed to consider the following factors:

• Domain name changes: Because we use Domain Access to serve multiple subdomains using a single Drupal installation and shared sign-on, we needed to make sure that all instances of the domain root are replaced and the correct domain_root is set. For example, the site URLs might be:

Production QA Local

example.com qa.example.com local.example.com

foo.example.com foo.qa.example.com foo.local.example.com

bar.example.com bar.qa.example.com bar.local.example.com

• Privacy concerns: The QA database and local copies of the database should not contain sensitive user information. All users aside from the administrator should be removed from the system, and all content on site should be limited to editorial content.

Page 224: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Efficiency: We don't need data like access logs or watchdog logs in QA or for local testing. This saves quite a lot of time and space during the data migration process.

Here's how I did it:

1. I identified tables I needed to copy over and tables that I could just leave empty. I did this by going through the output of "SHOW TABLES" in a MySQL console.

2. In my Makefile, I declared a DB_DATA variable that contained a list of tables I wanted to copy. 3. I wrote a backup_partial target in my Makefile that issued a series of commands:

mysqldump -u ${DB_USER} --password=${DB_PASSWORD} ${DB} --no-data > partial.dump # export the schemamysqldump -u ${DB_USER} --password=${DB_PASSWORD} ${DB} --opt --complete-insert ${DB_DATA} >> partial.dump # Dump some of the datamysqldump -u ${DB_USER} --password=${DB_PASSWORD} ${DB} --opt --complete-insert --where='uid< =1' users users_roles >> partial.dump # Dump the admin and anonymous usersecho "UPDATE node SET uid=1;" >> partial.dump # Set all the node authors to adminecho "REPLACE INTO search_index_queue (nid, module, timestamp) select nid, type, unix_timestamp(now()) FROM node;" >> partial.dump # Prepare for reindexing

4. I wrote a shell script on an internal server that accepted an argument (the domain to translate to) and performed the following steps:

1. ssh into the production server and run make with my backup_partial target, compressing the resulting partial.dump

2. scp the partial.dump.gz from the production server onto the internal server 3. unpack partial.dump.gz 4. figure out what $DOMAIN is supposed to be based on the arguments 5. run perl -pi -e "s/example.com/$DOMAIN/" partial.dump 6. load partial.dump into my database 7. run cron.php if it can

5. I added two buttons to my web-based deploy script: one button to migrate the production database to the QA server, one button to make a copy of the production database for the domain "local.example.com". Both buttons call

6. I created multisite settings.php in my Drupal directory (ex: sites/local.example.com and sites/qa.example.com). The production settings go in default/settings.php, and the multisite settings.php override it like this:

$conf = array( 'domain_root' => 'local.example.com',);$cookie_domain = '.' . $conf['domain_root'];

$conf allows you to override Drupal variables returned by variable_get.

So now, I can click on a button to migrate a sanitized copy of the production database to the QA server or to my local system. Sweet!

Happy birthday to me!

http://sachachua.com/wp/2008/08/12/happy-birthday-to-me-2/Tue, 12 Aug 2008 15:40:33 +0000Last night, I figured out how I wanted to celebrate my birthday. I've never really been one for gifts, and my family's much the same way. One year, my mom said that for her birthday, she'd like to receive sturdy plants

Page 225: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

for her garden. Another time, she requested books. One year, I asked people for letters. On another birthday, I asked people for their two-year plans. (Seriously. I gave seatwork.) This year, I wanted to celebrate my birthday by sharing stories. I realized that a large part of being homesick is missing the sense of being known, and I wanted to share both my Philippine stories with W- and my Canadian stories with my family. I celebrated my 25th birthday with my parents, my middle sister Kathy, and my partner W-. In the morning, my dad took W- and me around the electronic shops at Raon, the combination of Catholicism and superstition around Quiapo, and the photography shops at R. Hidalgo. I'm looking forward to trying out the SB-800 flash my dad gave me as a birthday gift. =) After our trip, my mom took us around Ateneo, UP, and Pisay. W- and I had watched "Philippine Science" at the Toronto International Film Festival, so it was nice for him to see where I'd gone to school. We told a lot of stories along the way. In the evening, my dad and my sister gave the commencement speech at the graduation of the photography students at Benilde. It was a quick, informal affair accompanied by a photo exhibit, which inspired me to think about shooting more. After the commencement reception, we went out to dinner at Chateau 1771 in Greenbelt. We told tons of stories over dinner, and W- got a better idea of the crazy adventures that my family finds ourselves in. =D It was just the way I wanted to spend my birthday. (Or, well, it would've been if I'd remembered to bring a way to record the stories...) Tomorrow, my godparents are having a tea party at the house in Alabang. It'll be fun seeing them again. =) The day after that is Diane's wedding - hooray! I just finished sending a few of my high school pictures to Mario, who's putting together a slideshow. Can't wait to attend! 25 years. So far, so good. Next up - even better!

Why browse the Web in Emacs?

http://sachachua.com/wp/2008/08/12/why-browse-the-web-in-emacs/Wed, 13 Aug 2008 00:57:20 +0000"Are you browsing Slashdot in Emacs?", W- asked me after he glanced at my screen. With Emacs' reputation for including everything _and_ the kitchen sink, you probably won't be surprised to hear that there's more than one way to surf the Internet using your text editor. With today's Javascript- and image-heavy websites, it can be hard to believe that anyone would use a text-based browser with limited support for many of the things we take for granted. Still, a Web browser in your text editor can be surprisingly useful. Here are some of the reasons why you might like it:

• Browsing is faster and less distracting. Forget flashing ads, garish colors, and large images. When you surf the Web in Emacs, you can focus on reading, and you can use all the typical Emacs shortcuts for navigating around. You can view images when you want to. If you need to see something that Emacs doesn't support, you can easily open the current page in an external Web browser.

• You can integrate it into your work. With a little bit of Emacs Lisp, you can qucikly look up information on the Web based on what you're currently working on. For example, PHP mode comes with a shortcut that lets you look up the current function's documentation in the PHP manual. You can look up bug report details, dictionary definitions, and Wikipedia pages with minimal typing, too. If you use Emacspeak, you can set up the web browser to speech-synthesize more than what's displayed on screen. The more you use Emacs, the more benefits you get from the integration.

• You can customize everything. You can customize your Emacs experience quickly and easily, and if you spend a lot of time on the Net, you'll appreciate having your own shortcuts and functions. For example, I've completely remapped my keyboard shortcuts to support tabbed browsing on a Dvorak keyboard, and I've defined a few functions to make frequently-used commands much easier. You can even use functions to process Web pages and either summarize the information you're interested in or make pages more navigable. It's all just Emacs Lisp.

• You're safe from browser exploits. No Javascript pop-ups, no image bugs, no browser-based malware that can take over your comuter or steal data. Just content.

• You need less memory. Why open up a memory-intensive graphical Web-based browser when you've got Emacs open anyway?

Page 226: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

There's more than one way to browse the Web in Emacs, of course. Browse-url is a package that makes it easy to open URLs in your preferred browser or browsers. For example, you can use it to browse the Web in Mozilla Firefox, and (of course) you can use it to browse the Web within Emacs itself. For browsing within Emacs, you can use w3m.el, an interface to the external W3M browser, or w3, a Web browser written entirely in Emacs Lisp. Of the two, I prefer w3m.el, which is much faster and more featureful than w3. Both can display graphics, tables, and frames, and w3 supports stylesheets. More about Emacs and browsing the Web soon! Planned projects for this chapter of Wicked Cool Emacs:

*** Project XXX: Browse the Web*** Project XXX: Open the current webpage in an external browser*** Project XXX: Different browsers for different pages*** Project XXX: Toggle between Web and work*** Project XXX: Quick search*** Project XXX: Customize your keymap*** Project XXX: Download files*** Project XXX: Add access keys*** Project XXX: Use social bookmarking*** Project XXX: Typeahead*** Project XXX: Preview HTML*** Project XXX: Read Web pages as news

Sweet! Facebook in Emacs!

http://sachachua.com/wp/2008/08/12/sweet-facebook-in-emacs/Wed, 13 Aug 2008 01:18:50 +0000So here's how to access Facebook from w3m, one of the web browsers in Emacs: 1. Enable cookies by setting w3m-use-cookies to t. 2. Go to http://m.facebook.com . 3. Choose the HTTP login. 4. Log in with your username and password. Hooray for mobile interfaces that don't require Javascript! =D So far, it seems to work. I can update my status! Sweet! Next step: Figure out how to set up shimbun for Facebook mail so that I can read my Facebook mail like a newsgroup...

Weekly review: Week ending Aug 17, 2008

http://sachachua.com/wp/2008/08/18/weekly-review-week-ending-aug-17-2008/Mon, 18 Aug 2008 08:31:00 +0000What a hectic and fun week! It was the first week of my vacation in the Philippines, and every day was just packed with things to do with friends and family. On August 11 (Monday), we arrived in Manila. The Philippine Airlines flight we arrived on was full of boisterous Filipinos who joked with the flight attendants, sang way off-key, and cheered as the plane touched the tarmac, but I didn't mind losing sleep on that red-eye flight. I was home! And I was awake enough to try the dress I was going to wear for Diane's wedding and make other arrangements... On August 12, I celebrated my birthday with W- and my parents. My dad took W- and me to Raon (the electronics district) and R. Hidalgo (the street of photography shops), and he gave me a flash for my birthday. I look forward to using it to light stuff! In the afternoon, my mom took W- and me to Ateneo de Manila University and Philippine Science High School, so that W- could get an idea of what my campus years were like. We also passed by the University of Philippines, where my mom told W- stories about her campus years. In the evening, I snuck into the Benilde commencement ceremony and exhibit for the graduates of their photography diploma course, and I listened to my dad and my sister give the short commencement speech. Cool! On August 13, my dad gave W- and me a few shooting lessons. We discovered that the flash I have can freeze water drops in action, and we also practiced lighting small objects. I took a picture of the Scrabble game that W- and I had played on the flight home. It was definitely worth recording. =) After our shooting lessons, my mom took us to Alabang, where we had a tea party with several of my godparents. We listened to hilarious stories about avoiding traffic tickets, taking pictures in restricted

Page 227: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

areas, and other hijinks that my parents and godparents had done. Practically all of August 14 was taken up by Diane's wedding. She was the first of my best friends to get married, so we were all excited about that. I couldn't help going "squee!" every few minutes. I loved the video montage that Mario had put together: childhood pictures, high school pictures, all the way up to their engagement pictures. The wedding photographers delighted us by showing a video montage of Di's wedding pictures during the reception itself - that was fast work! We spent most of August 15 working at home. I was aghast to find out that a bug in my code had resulted in the deletion of users on our production system ( =( !), and that the project manager and the IT architect had to recreate many accounts by hand. That further emphasized the importance of test-first development and well-written tests. Ouch. I've paid the tuition for that mistake, now I just have to collect the paycheck; I can't undo that mistake, but I can learn from it and become a better developer. To avoid that mistake in the future, I will write more tests using the Simpletest framework, and I'll ask someone else to review the tests with me. I perked up a bit more in the afternoon, when my mom took W- and me to a yoga class taught by one of her friends. It was more challenging than the yoga classes we normally attend, and it was a good break. The yoga teacher was so impressed that both W- and I do yoga, and waxed lyrical about how beautiful it was to see couples practice yoga together. On August 16, I hosted a get-together for my friends. We spent the entire afternoon laughing at the best of the Internet memes: a pastiche of websites and Youtube videos that we or the others had missed. In the evening, we watched Shaun of the Dead and Hot Fuzz, which both left us practically crying from laughter (and maybe a little grossed out). It was so nice to laugh with my friends again! We spent most of August 17 at a photography summit, where we learned about taking pictures of people. I'm looking forward to applying those lessons. I'd like to learn how to take good pictures of my friends! My mom also showed W- the rows and rows of stalls selling pearls at Greenhills. It was all quite overwhelming, and I was glad to get back to the photography summit. So that was what last week was like. I hope next week will be a little calmer. <b>I plan to work during most of the week</b>. I'm going to be on a team call this evening, so I napped this afternoon to make sure I can stay up later. A quieter schedule should mean more early-morning writing time, too, and I'm looking forward to <b>posting more notes on browsing the Web from Emacs</b>. Lastly, I'm thrilled at how BarCampManila's turning out. I pinged a couple of people about having a geek get-together on Thursday, August 21, and gave them the responsibility for making it happen. And they did! So, if you're near Metro Manila and you want to hang out, check out: <a href="http://www.barcamp.org/BarCampManila">BarCamp Manila</a> - August 21, 2008, 7:00 PM @ G2VC Innovation Center<br /> <a href="http://www.barcamp.org/BarCampManila">SIGN UP ON BARCAMP.ORG!</a>

Emacs and w3m: Quick searches

http://sachachua.com/wp/2008/08/18/emacs-and-w3m-quick-searches/Tue, 19 Aug 2008 02:14:59 +0000A number of browsers allow you to define quick searches so that you can type keywords into your address bar in order to search predetermined sites. With a little bit of code, you can do this in Emacs, too. In this project, you'll learn how to set up your own keywords to work with w3m and browse-url, so you can use your keywords for browsing both inside and outside Emacs. First, set up keywords by adding the following lines to your ~/.emacs. We'll use an associative list of regular expressions and substitutions, like this:

(setq wicked/quick-search-alist '(("^g?:? +\\(.*\\)" . ;; Google Web "http://www.google.com/search?q=\\1") ("^g!:? +\\(.*\\)" . ;; Google Lucky "http://www.google.com/search?btnI=I%27m+Feeling+Lucky&q=\\1") ("^dict:? +\\(.*\\)" . ;; Dictionary "http://dictionary.reference.com/search?q=\\1")))

This will turn "g keyword1 keyword2" into a Google search for keyword1 and keyword2. Next, define

Page 228: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

advice for the functions that open URLs. Before-type advice allows you to modify arguments before the function is run, and we'll use that to change the URLs. To modify the URL behavior of w3m, add the following to your ~/.emacs:

(require 'cl-seq)(defadvice w3m-goto-url (before wicked activate) "Use the quick searches defined in `wicked/quick-search-alist'." (let* ((my-url (replace-regexp-in-string "^ *\\| *$" "" (replace-regexp-in-string "[ \t\n]+" " " (ad-get-arg 0)))) (match (assoc-if (lambda (a) (string-match a my-url)) wicked/quick-search-alist))) (if match (ad-set-arg 0 (replace-regexp-in-string (car match) (cdr match) my-url)))))

This sets up your quick searches for use within w3m. To set up quick searches for use with browse-url and external browsers, add the following to your ~/.emacs:

(defadvice browse-url (before wicked activate) "Use the quick searches defined in `wicked/quick-search-alist'." (let* ((my-url (replace-regexp-in-string "^ *\\| *$" "" (replace-regexp-in-string "[ \t\n]+" " " (ad-get-arg 0)))) (match (assoc-if (lambda (a) (string-match a my-url)) wicked/quick-search-alist))) (if match (ad-set-arg 0 (replace-regexp-in-string (car match) (cdr match) my-url)))))

To try out your searches, use M-x browse-url RET g emacs RET to do a Google search for all things Emacs, and use M-x w3m-goto-url (usually bound to g) inside w3m to use the quick searches. You can define more quick searches like this:

(add-to-list 'wicked/quick-search-alist '("^ew:? *?\\(.*\\)" . ;; Emacs Wiki Search "http://www.emacswiki.org/cgi-bin/wiki?search=\\1"))

Running groups of Drupal tests from the command line

http://sachachua.com/wp/2008/08/19/running-groups-of-drupal-tests-from-the-command-line/Tue, 19 Aug 2008 07:26:20 +0000

I've written about using drush to evaluate PHP statements in the Drupal context using the command line before, and it turns out that Drush is also quite useful for running Simpletest scripts. Drush comes with a module that allows you to display all the available tests with "drush test list", run all the tests with "drush test run", or run specified tests with "drush test run test1,test2".

'Course, I wanted to run groups of tests and tests matching regular expressions, so I defined two new commands:

drush test run re regular-expression Run all tests matching a regular expression that uses ereg(..) to match. Ex: drush test run re Example.*

Page 229: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

drush test run group group1,group2... Run all tests matching the given groups Ex: drush test run group Example

Here's the patch to make it happen:

Index: drush_simpletest.module===================================================================--- drush_simpletest.module (revision 884)+++ drush_simpletest.module (working copy)@@ -12,9 +12,13 @@ function drush_simpletest_help($section) { switch ($section) { case 'drush:test run':- return t("Usage drush [options] test run.\n\nRun the specified specified unit tests. If is omitted, all tests are run. should be a list of classes separated by a comma. For example: PageCreationTest,PageViewTest.");+ return t("Usage drush [options] test run .\n\nRun the specified unit tests. If is omitted, all tests are run. should be a list of classes separated by a comma. For example: PageCreationTest,PageViewTest."); case 'drush:test list': return t("Usage drush [options] test list.\n\nList the available tests. Use drush test run command to run them. ");+ case 'drush:test group':+ return t("Usage drush [options] test group .\n\nRun all unit tests in the specified groups. For example: drush test group Group1,Group2");+ case 'drush:test re':+ return t("Usage drush [options] test re .\n\nRun all unit tests matching this regular expression. For example: drush test re Page.*"); } } @@ -30,10 +34,18 @@ 'callback' => 'drush_test_list', 'description' => 'List the available Simpletest test classes.', );+ $items['test re'] = array(+ 'callback' => 'drush_test_re',+ 'description' => 'Run one or more Simpletest tests based on regular expressions.',+ );+ $items['test group'] = array(+ 'callback' => 'drush_test_group',+ 'description' => 'Run one or more Simpletest test groups.',+ ); return $items; } -function drush_test_list() {+function drush_test_get_list() { simpletest_load(); // TODO: Refactor simpletest.module so we don't copy code from DrupalUnitTests $files = array();@@ -60,6 +72,11 @@ $rows[] = array($class, $info['name'], truncate_utf8($info['desc'], 30, TRUE, TRUE)); } }+ return $rows;+}++function drush_test_list() {

Page 230: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

+ $rows = drush_test_get_list(); return drush_print_table($rows, 0, TRUE); } @@ -75,3 +92,31 @@ } return $result; }++function drush_test_re($expression) {+ if (!$expression) {+ die('You must specify a regular expression.');+ }+ $rows = drush_test_get_list();+ $tests = array();+ foreach ($rows as $row) {+ if (ereg($expression, $row[0])) {+ $tests[] = $row[0];+ }+ }+ simpletest_run_tests($tests, 'text');+ return $result;+}++function drush_test_group($groups) {+ $rows = drush_test_get_list();+ $tests = array();+ $groups = explode(',', $groups);+ foreach ($rows as $row) {+ if (in_array($row[1], $groups)) {+ $tests[] = $row[0];+ }+ }+ simpletest_run_tests($tests, 'text');+ return $result;+}

That makes running tests so much easier and more fun!

Emacs and w3m: Fake your user agent

http://sachachua.com/wp/2008/08/19/emacs-and-w3m-fake-your-user-agent/Tue, 19 Aug 2008 23:49:14 +0000

In an ideal world, you would never need to make your browser pretend to be a different browser. In reality, a number of websites check for specific browsers such as Mozilla or Internet Explorer, or even specific versions of those browsers. Other websites check for popular search engine crawlers such as the Googlebot in order to display content optimized for that search engine. You may want to change your user agent to work around such limitations, or you might want to change your user agent string just for fun.

The following code allows you to set your user agent (wicked/w3m-set-user-agent), reload the current page using a specified user agent (wicked/w3m-reload-this-page-with-user-agent), and define regular expression matches for URLs to control user agent strings (wicked/w3m-fake-user-agent-sites). To use this, add the following to your ~/.emacs:

(defvar wicked/w3m-fake-user-agents ;; (1) `(("w3m" . ,(concat "Emacs-w3m/" emacs-w3m-version " " w3m-version)) ("ie6" . "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)")

Page 231: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

("ff3" . "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008070206 Firefox/3.0.1") ("ff2" . "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080208 Firefox/2.0.0.13") ("ie7" . "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)") ("ie5.5" . "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)") ("iphone" . "Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; en-us) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.20") ("safari" . "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_2; en-us) AppleWebKit/525.13 (KHTML, like Gecko) Version/3.1 Safari/525.13") ("google" . "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)")) "*Associative list of user agent names and strings.")

(defvar wicked/w3m-fake-user-agent-sites ;; (2) '(("^https?://www\\.useragentstring\\.com" . "ff2")) "*Associative list of regular expressions matching URLs and the agent keyword or value. The first matching entry will be used.")

(defun wicked/w3m-set-user-agent (agent) "Set the user agent to AGENT based on `wicked/w3m-fake-user-agents'. If AGENT is not defined in `wicked/w3m-fake-user-agents', it is used as the user agent. If AGENT is empty, the default w3m user agent will be used." (interactive (list (completing-read "User-agent [w3m]: " (mapcar 'car wicked/w3m-fake-user-agents) nil nil nil nil "w3m"))) ;; (3) (if agent (progn (setq w3m-user-agent (or (and (string= agent "") (assoc "w3m" wicked/w3m-fake-user-agents)) ;; (4) (cdr (assoc agent wicked/w3m-fake-user-agents)) ;; (5) agent)) ;; (6) (setq w3m-add-user-agent t)) (setq w3m-add-user-agent nil)))

(defun wicked/w3m-reload-this-page-with-user-agent (agent) "Browse this page using AGENT based on `wicked/w3m-fake-user-agents'. If AGENT is not defined in `wicked/w3m-fake-user-agents', it is used as the user agent. If AGENT is empty, the default w3m user agent will be used." (interactive (list (completing-read "User-agent [w3m]: " (mapcar 'car wicked/w3m-fake-user-agents) nil nil nil nil "w3m"))) (let ((w3m-user-agent w3m-user-agent) (w3m-add-user-agent w3m-add-user-agent)) (wicked/w3m-set-user-agent agent) ;; (7) (w3m-reload-this-page)))

(defadvice w3m-header-arguments (around wicked activate) ;; (8) "Check `wicked/w3m-fake-user-agent-sites' for fake user agent definitions." (let ((w3m-user-agent w3m-user-agent) (w3m-add-user-agent w3m-add-user-agent) (sites wicked/w3m-fake-user-agent-sites)) (while sites (if (string-match (caar sites) (ad-get-arg 1)) (progn (wicked/w3m-set-user-agent (cdar sites))

Page 232: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(setq sites nil)) (setq sites (cdr sites)))) ad-do-it))

wicked/w3m-fake-user-agents sets up a number of common user agents(1) using examples from http://www.useragentstring.com. If you frequently use other user agents, add them to this associative list. wicked/w3m-fake-user-agent-sites sets up some rules for URLs so that you can work around specific websites(2). The first matching rule will be used.

wicked/w3m-set-user-agent can be called from a w3m browser session to set the user agent for all new pages visited. By default, it uses the w3m user agent(3). It will also use the w3m user agent if the agent is blank(4). If the user agent is one of the frequently-used agents defined in wicked/w3m-fake-user-agents, then the corresponding user agent string will be used(5). If not, the string will be used as-is(6). If the agent is nil, the user agent string will be disabled.(7)

You can check a single page using a different user agent by using M-x wicked/w3m-reload-this-page-with-user-agent. It temporarily sets the user agent and then reloads the current page.(7)

The last segment of code modifies the behavior of w3m-header-arguments(8), matching wicked/w3m-fake-user-agents against the URL. This temporarily sets the user agent for matching sites.

Many hats: Technical writer

http://sachachua.com/wp/2008/08/21/many-hats-technical-writer/Thu, 21 Aug 2008 04:07:41 +0000

I just spent the last three days updating the administrator's guide and related documentation for the Transition2 project, making pretty screenshots and typing in clear, step-by-step instructions. Last time I checked, I had 80 pages or so. I don't know if anyone's going to read it, but at least it's there. =)

I actually had fun writing it. I do miss hacking on Drupal code, though.

So here's my current hierarchy of things I enjoy doing for work, going from most enjoyable to least enjoyable:

• Connecting with people, brainstorming, giving presentations about things I'm passionate about, learning, writing about what I'm learning - love love love!

• Helping people learn about tools they're going to love • Developing on open source platforms with terrific user communities (hello, Drupal, Emacs!) • Writing documentation (not so much) • Dealing with paperwork and fiddly things I can't automate • Making front-ends • Dealing with cross-browser issues and other things that force me to use Microsoft Windows (not a

happy kitty!)

The Leisure of Work

http://sachachua.com/wp/2008/08/21/the-leisure-of-work/Thu, 21 Aug 2008 09:54:40 +0000

Many people hate working during vacations. Others hate going on vacations with people who stay just as

Page 233: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

connected to the office in the country as they are in the cubicle. One of the things that I'm learning on this trip, though, is that work can actually make the trip more relaxing.

This isn't a forget-your-worries kind of vacation, but more about keeping my ties. I grew up in the Philippines, and most of my family and my friends live in Metro Manila. The short trips I take are the only time I get to catch up with them face-to-face. I remember one trip when I felt so distraught at the prospect of leaving that it was hard to enjoy the days before my flight back to Toronto. When departure looms, every moment gets thrown into hyperfocus, and there's such a temptation to pack every instant with activity. When I return to my quiet(er) Toronto life, the the sudden vacuum in my schedule gets filled with the pain of being between worlds.

So when I decided that I'd find a way to make it to the wedding of one of my best friends, I felt guilt over not being able to spend the whole time relaxing. My team members were counting on me to contribute to the project. I didn't feel comfortable taking an entire two weeks off, and it didn't make sense to fly halfway around the world for a trip of only a week. My compromise was to spend the first week on a proper vacation and the second week working remotely.

It turned out remarkably well. This week of work is what made everything feel more like home. It seems that the greatest leisure is the feeling of normalcy, of being part of the everyday routine, of following the rhythm of meals and work and some unwinding at the end of the day. Last week was hectic: lots of fun, hardly any time to breathe, hardly any time to reflect, hardly any time to slow down. This week, I feel more like I'm at home.

This trip to the Philippines feels much more relaxed than the others, as if we're not trying to cram too much in too little time. Yes, we're flying back to Toronto two days from now. Yes, two weeks is still too short a trip. Yes, I've run out of evenings for planning get-togethers. But it doesn't feel as jarring as the last time I traveled. I don't feel as misplaced, and I don't feel that I'm unraveling from the strain of being "on" all the time. I have space to be normal. I have time to breathe.

I've checked off some bugs, written some documentation, responded to some mail, and thought about some improvements. There's a sleepy cat on my lap. All is well with the world.

I'm flying back to Toronto in a couple of days. In the past two weeks, I learned that I can work anywhere, there are things I love about both worlds I live in, and that I can be fully present--here and now--even though I'm becoming a person of two worlds.

BarCampManila

http://sachachua.com/wp/2008/08/21/barcampmanila/Fri, 22 Aug 2008 01:32:20 +0000

BarCampManila drew over 80 people. There were 16 presentations ranging from 5 to 7 minutes each. What an amazing turnout!

Jerome Gotangco is my new hero. He organized everything (including getting a banner printed with the BarCampManila logo) less than two weeks after I e-mailed him saying that it would be fantastic to have a geek get-together on the 21st and could he please Make It Happen... Wow!

Highlights for me:

• Mario Carreon's "Maritess and her first computer" sketch. Dual-core aquarium indeed!

Page 234: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Calen Legaspi and his 7... no... 6... no... 2 lessons from starting a software company! (Nobody expects the Calen Exposition!)

• JM Ibanez and git-svn - gotta check that out

What would make this even better?

• More of a networking session after the talks - maybe limit it to 5 or 10 talks • Longer slots for demos (no Powerpoint allowed for those!) • Better sound system (they're already working on this) • Table for laptops • Presenter remote

Catch the replay! I'm looking forward to hearing about the next one. I'm probably going to be in Canada, but that's what streaming is for... =)

Just ordered a tablet

http://sachachua.com/wp/2008/08/26/just-ordered-a-tablet/Tue, 26 Aug 2008 14:29:09 +0000I've just ordered the Cintiq 12WX, a 12.1" pressure-sensitive tablet that also includes a screen so that you can see what you're working on. I think it's brilliant. It will probably be even more useful than the Lenovo X61 Tablet PC--the other gadget I was considering getting with the gadget fund I'd saved up. I hope it will arrive in time for the four-day weekend we've got coming up. I'd love to use it to sketch my presentations, and W- will certainly enjoy using it to retouch photos. I like this feeling. I knew I'd be in the market for some kind of drawing thing, so I started saving a few months ago. After I gave my Nintendo DS to my mom, I needed another drawing tool, and it was nice to know what I wanted AND know that I could freely get it. More sketches to come!

Weekly review: August 16 to August 23

http://sachachua.com/wp/2008/08/26/weekly-review-august-16-to-august-23/Wed, 27 Aug 2008 00:42:39 +0000My second and last week in the Philippines was more relaxed, but it was just as enjoyable as the first week. I spent most of the time working, and I learned a lot about documentation. I helped kickstart the first BarCampManila. I also got to spend more time with my parents, have high tea with my godparents, and watch Blades of Glory with friends. Leaving the Philippines was difficult - it always is - and I found myself near tears as I walked through the airport with W-. But it was a very good trip, and I was happy to have gone. Work: I put on my technical writer hat and rewrote most of the documentation for the administrator, bringing it up to date and adding plenty of screenshots. I still haven't quite figured out if I should document the system as it currently is (which means revising it often) or as it will be (which means inconsistent documentation for work in progress). My project manager suggested this compromise: I'll document the system assuming some critical bugs are fixed on the production server, but leave other enhancements out of the manual. I'm learning how to use doxygen to extract source code comments, too. I'd prefer to keep low-level design documentation close to the source code so that I can keep it up to date, and I definitely don't want to reboot to Windows and start both Lotus Notes and Microsoft Word every time I need to make a change. Doxygen looks like a good tool for documenting not only the functions but also the design of the system, and I'm looking forward to learning how to make it dance. Even with what I learned after half a day of study, I was already much more comfortable with it than with the idea of keeping our developer documentation in Word. I've gotten permission from my project manager to use it for our low-level documentation, and I've promised him an

Page 235: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

archive of HTML documents by Wednesday. That wasn't the only thing I did during the second week of my vacation, of course. I had a lot of fun at BarCampManila, a hastily-organized unconference that went really well. I gave a short speech on why geeks should blog, and I hope I convinced a few people to make it a habit. I've also posted other notes about the event. Check them out! My parents spent a lot of time with us that week. My dad took us flying in an ultralight, and W- got this totally amazing shot of the blue sky and the volcano reflecting off the ricefields. We also snuck into a photo summit lecture on portrait photography, and we picked up lots of tips. We passed by the zoo to say hi to Maali, and we took some fun pictures with the zoo animals. Once we sort our vacation pictures, I'll post the pics on my blog. My goals for next week (well, this week, now) are:

• get back into the swing of work by finishing the admin guide and the developer documentation • contact everyone I promised to get back to after the trip • write three more posts about Emacs • use my gadget budget for awesome (maybe get that Cintiq tablet; UPDATE: ordered!)

Emacs and W3M: Toggling between work and the Web

http://sachachua.com/wp/2008/08/27/emacs-and-w3m-toggling-between-work-and-the-web/Wed, 27 Aug 2008 12:24:12 +0000Here's a handy shortcut that toggles between the W3M web browser and other buffers you're working on. I use it to quickly switch between code and documentation (or your favorite timewasting site, as it also makes a handy boss key). Define the function by adding the following code to your ~/.emacs:

(defun wicked/toggle-w3m () "Switch to a w3m buffer or return to the previous buffer." (interactive) (if (derived-mode-p 'w3m-mode) ;; Currently in a w3m buffer ;; Bury buffers until you reach a non-w3m one (while (derived-mode-p 'w3m-mode) (bury-buffer)) ;; Not in w3m ;; Find the first w3m buffer (let ((list (buffer-list))) (while list (if (with-current-buffer (car list) (derived-mode-p 'w3m-mode)) (progn (switch-to-buffer (car list)) (setq list nil)) (setq list (cdr list)))) (unless (derived-mode-p 'w3m-mode) (call-interactively 'w3m)))))

Then bind it to a shortcut key sequence (F7 F7 in this example) by adding the following code to your ~/.emacs:

(global-set-key (kbd " ") 'wicked/toggle-w3m)

You can then use F7 F7 to switch back and forth between your web browser and whatever else you're working on.

Page 236: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Mouse woes on Ubuntu Hardy

http://sachachua.com/wp/2008/08/27/mouse-woes-on-ubuntu-hardy/Wed, 27 Aug 2008 13:08:13 +0000It's really quite odd. I've tried two USB mice (one wireless, one wired) on my Kubuntu system. They work well... once. The next time I try to use them, I'm lucky if I manage to get a minute of use out of them. Something is very wrong. =( Anyway, that's enough time spent on mouse issues--one hour today, one hour yesterday! Pfft. I'll try it again later.

Work that I love: reflecting on the whats and hows

http://sachachua.com/wp/2008/08/27/work-that-i-love-reflecting-on-the-whats-and-hows/Wed, 27 Aug 2008 13:38:47 +0000At the team-building event the other day, I got to meet a number of other people who had been with IBM for a number of years. Several people told me stories about projects planned using at least 80-hour weeks, of high turnover and stressful environments, but also the increased responsibilities and career opportunities for people who stay with those projects. Other people talked about priorities and intentionally limiting the number of hours they worked in order to make time for other things, their happiness with their decisions, and the support they received from the company. It made me think about what work I love to do and how I want to live. I'm getting a better idea of the work I enjoy doing. Here's a rough sketch:

• I love sharing what I'm passionate about, helping people learn more and become more effective, and encouraging people to grow. In my current role, I get to do plenty of presenting, conducting workshops, coaching, and writing. People appreciate not only the information I share but also the enthusiasm with which I share it and the thoughtfulness with which I help people learn.

• I love learning about all sorts of things. I'm currently working on visual literacy, and I'm looking forward to using the Cintiq tablet to experiment with graphics even more. I also love learning about social networking, communication skills, and other topics that I can share with people around me.

• I love connecting people with other people, ideas, or tools. It gives me a thrill whenever I can introduce people to just the right person who can help them do what they want, to a book or article that fits their interests, or to a tool they'll love.

• I love exercising my creativity and helping people brainstorm. As part of my work, I often get to help people brainstorm Web 2.0 business ideas, and I really enjoy bringing in things I've learned from all the different aspects of my life.

• I enjoy working on lightweight projects based on open source technologies with vibrant user communities. I get to do this with my Drupal-based project and with my Emacs book. I love being able to read source code and learn from other people's contributions. I love sharing tips on my blog and learning more from others. I love giving back to the community, too!

• I can write technical documentation better than most developers can. And I don't mind doing it, too, as long as it doesn't require me to keep changing applications or operating systems.

• I don't like working on front-end interfaces, such as designing graphics, writing CSS, or trying to make a page look exactly like the design. I can do it, but I'd rather do a simple design.

• I really don't like working on cross-browser or cross-platform issues. • I really don't like dealing with inconsistent, fiddly, or frustrating things such as bugs in one's

operating system (really, my mouse should Just Work) or convoluted administrative paperwork. Some people enjoy solving problems like that. I don't.

I'd like to explore sales at some point, too. I want to find out if it might be a good fit for me, too, and I like the idea of helping people find the right solution for them. So that's a general idea of my strengths. I love helping people be more effective, whether it's by sharing ideas or tips, connecting them with others, or building or tweaking tools for them. I enjoy software development and technical writing too, but mainly as a

Page 237: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

way of supporting my ability to help people be more effective. Those are the "whats," at least right now. What about the hows? I don't see myself working on projects with unrealistic time expectations. I don't see myself sacrificing life for work or for career advancement. If I did, I'd be going up the ladder, yes, but it might be the wrong ladder for me. The things I love doing and the things that make me special all require me to be happy and passionate about my work. I believe that I can be successful at them while living according to my values. I'm looking forward to seeing the kind of life I can build. =) Have you thought about your whats and hows?

Cintiq

http://sachachua.com/wp/2008/08/28/cintiq/Thu, 28 Aug 2008 06:53:18 +0000It's 2:51 in the morning. I've just spent the last... umm... six hours getting the Cintiq mostly sorted out, and I

have barely enough time to get enough sleep to be barely functional tomorrow. But it's worth it. Okay, it doesn't seem obvious from the quality of my drawing, but it's certainly fun...

Mindmapping on infinite paper

http://sachachua.com/wp/2008/08/28/mindmapping-on-infinite-paper/Thu, 28 Aug 2008 16:24:28 +0000I am officially in love. I can't believe how much fun it is to mindmap with the Cintiq 12WX tablet and the free Inkscape vector-drawing program. The Cintiq's integrated display means I can just draw on my mindmap, like the way people do on Tablet PCs. I can zoom in and out by sliding a finger along the touch strip. I can move around by pressing a button on the stylus and then moving in the direction I want. I can quickly switch to pencil mode, switch to selection mode, or delete items with a button press. And Inkscape gives me an infinite canvas to work with... About the only thing that could make this even better would be for me to use a real mindmapping program that can hide and show outline notes--and index my handwriting, too. Oh, and it would need to run on Linux. In the meantime, I'm going to have some fun. =D

Celebrating the little things you learn

http://sachachua.com/wp/2008/08/29/celebrating-the-little-things-you-learn/Fri, 29 Aug 2008 12:40:45 +0000Photo (c) 2007 Sean Dreilinger, Creative Commons Attribution Noncommercial Copyleft I love learning. I love being able to do something I'd never done before or to do something even better than before. This week, I learned how to write a good set of low-level documentation using the doxygen tool, influence project decisions, test a website for accessibility, set up a digitizing tablet under Linux, sketch and edit my sketches, mindmap using a tablet, lay out a photobook, and answer some of J's old homework in French. I'm looking forward to learning even more over this long weekend! Every time I learn or improve a skill, I like celebrating. I often write about what I learn on my blog, as it's a great way to not only share what I'm learning but also that sense of accomplishment in learning something new. Sometimes I take a moment to pat my own head, which alwas makes W- smile when he sees this. "Celebrating the little things?" he says. You bet! Why shouldn't we celebrate these little victories? A baby's first smile, first word, and first step are all monumental milestones people celebrate. Growing up, we celebrate the first time we tie our shoes by ourselves, the first degree, the first paycheck. What if we never grew out of celebrating these milestones? What if we celebrated more? Celebrating the little things keeps learning fun. What have you learned lately?

Page 238: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

On Changing the World

http://sachachua.com/wp/2008/08/29/on-changing-the-world/Fri, 29 Aug 2008 13:42:02 +0000Like Daniel at Young and Frugal, I am going to change the world. I'm changing it already, and as I grow, I'll do better and better. I won't always succeed, but I'll always learn. I'll get better and better at finding better and better fits between what I'm passionate about, what I'm good at, and what the world needs. It's not because I can be anything I want to be, but because I'm becoming more of who I am. Let's face it: I'm unlikely to become an Olympic swimming champion or the CEO of a wildly successful social networking platform. But there's so much I can do right now, and there's so much I want to grow into in the future. There are amazing people around me who encourage me to keep following my passion, keep exploring new areas. They know you can't train people to do what I do, and that I create a lot of value you can't put into a job description. If people around me weren't this supportive, I'd just look for a different environment. I would keep following my passions, because I can't imagine living any other way. I have what-am-I-doing moments. I have do-I-really-have-to-do-this moments. I have just-get-me-through-this-day moments. But I also have I-totally-rock moments and I-helped-someone-else-totally-rock moments, and I'm going to have more of those. When people tell me I'm special, I tell them that I'm just like they are, and I ask them what it would take for them to live like I do. What would it take for people to live with passion and joy? I'm Sacha Chua, and this is not just about Generation Y. =)

Editors for blogging

http://sachachua.com/wp/2008/08/29/editors-for-blogging/Fri, 29 Aug 2008 22:52:13 +0000Penelope Trunk's editor helps her improve her blogging and her tweeting:

In case you didn't know, I have an editor for my blog. This comes from being a columnist for so long. My editors were incredible—one was from Vanity Fair, one went on to the Harvard Business Review, and they definitely made me a better writer. So I have an editor for my blog, and if you think that's over the top, consider this: he also edits my Twitters. I mean, you can't write about sex and investors in the same 140-character phrase and still get funding unless you have an editor to save you from yourself.

What I've been doing while I've not been posting » Brazen Careerist by Penelope Trunk Of course, she's a professional writer and she probably has a gazillion readers. =) But maybe small(er) fry like me might gain a lot from asking an editor what he or she would do to make this blog even awesomer... =) Someday!

Weekly review: Week ending Aug 31, 2008

http://sachachua.com/wp/2008/08/31/weekly-review-week-ending-aug-31-2008/Sun, 31 Aug 2008 18:23:25 +0000

Page 239: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Lots of learning this week! The Cintiq tablet I ordered from Vistek arrived the very next day. After learning way too much about X.org in the process of setting it up, I've gotten it to work as a tablet and as a second screen. Hooray! Someday I'll get GIMP and Inkscape to recognize pressure and the eraser tip, but for now, it's good enough. I used the Cintiq to quickly process and layout the pictures we took during the vacation. The last time I made a photobook, I used Shutterfly's predetermined layouts. This time, I used the open source Scribus desktop publishing program to make everything from scratch. Now I just need to find a nice printer and binder who'll take a PDF... New dish of the week: pad thai, from a mix. It was okay. We borrowed some magazines from the library and I flipped through them to get an idea of things I might play with this fall. My wardrobe's already been tending towards warm earth colors, so maybe I'll try playing with metallics. At work: propagated a few good ideas, including persistent chat rooms; worked on accessibility. Love: W- is totally awesome. =) This week's reason: he hung up the memory scroll my friends and family had made for me before I left for Canada. =) Aww! Next week:

• More sketching and photography • Prepare presentation • Cook salmon and couscous • Sort out new sewing machine =)

September 2008

Hacking the Domestic

http://sachachua.com/wp/2008/09/01/hacking-the-domestic/Tue, 02 Sep 2008 00:26:35 +0000W- 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

Page 240: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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!

http://sachachua.com/wp/2008/09/02/squee-won-slideshares-best-presentation-contest/Tue, 02 Sep 2008 18:18:03 +0000

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.

Page 241: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Hello, I'm Sacha Chua! Object 12

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: 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

http://sachachua.com/wp/2008/09/04/taming-the-firefox-keyboard-with-keyconfig/Thu, 04 Sep 2008 17:24:15 +0000In 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

http://sachachua.com/wp/2008/09/05/if-you-can-teach-if-you-cant-teach-do/Fri, 05 Sep 2008 13:09:47 +0000I'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

Page 242: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/09/05/emacs-jump-to-anything/Fri, 05 Sep 2008 13:51:52 +0000I 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

http://sachachua.com/wp/2008/09/05/internet-explorer-hovering-on-non-link-items/Fri, 05 Sep 2008 15:53:51 +0000Internet 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"

http://sachachua.com/wp/2008/09/05/new-presentation-new-media-new-generation/Sat, 06 Sep 2008 03:43:11 +0000I'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.

Page 243: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

new media, new generation Object 13

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 2x2 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

http://sachachua.com/wp/2008/09/07/and-just-like-that-we-have-a-cat/Mon, 08 Sep 2008 00:06:27 +0000And 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.

Page 244: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Weekly review - Sept 7, 2008

http://sachachua.com/wp/2008/09/07/weekly-review-sept-7-2008/Mon, 08 Sep 2008 00:40:00 +0000Last week:

• Prepared presentation for new media and new generation panel next week. Non-annotated slides up on Slideshare. Got featured on Slideshare home page. Growing as a presenter!

• Finished accessibility-related issues, now working on other general issues. Growing as a developer!• Sorted out my October travel schedule - maybe Boston and Brussels. Ooh.• Took back-to-school pictures of Jessica with pretty good lighting. Yay flash! Now looking at more

equipment: umbrellas, stands, etc. Growing as a hobby photographer!• Ordered a replacement phone: Nokia 3500. • Cat! Cat! Cat! Whee!

Next week:

• Give panel presentation, answer questions in Washington, DC.• Kick off my Canadian visa renewal process, hope I get everything together in time. Would really love

to go to Brussels.• Finish most of remaining issues for Transition2 project.• Make progress on Emacs book: at least five pages for w3 chapter (it's only fifteen pages long, it

shouldn't be this hard!).• Cat! Cat! Cat! Whee!

Le Chat Gris

http://sachachua.com/wp/2008/09/08/le-chat-gris/Mon, 08 Sep 2008 13:28:40 +0000

(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

http://sachachua.com/wp/2008/09/11/slidecast-new-media-new-generation/Thu, 11 Sep 2008 14:47:10 +0000

Page 245: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

new media, new generation Object 14

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:

• People loved the informal style of my hand-drawn presentation. They told me that the stick figures were both clear and engaging.

• People also really appreciated my energy, enthusiasm, and passion. • I met lots of people and gave them tips on social media. • I enjoyed figuring out a good structure for the presentation. The symmetric structure (new media =

social media, new generation = net generation, and a 2x2 matrix) was easy to remember, and I figured out how to make the topics flow into each other.

• I told stories as part of my presentation, and those stories were easy to remember as well. • Joining people for dinner beforehand and listening to a number of the other presentations gave me not

only a sense of what people were interested in, but enough rapport with people so that I felt comfortable chatting.

• I remembered to record audio and video, and to ask someone to pay attention to the video camera. Most of the talk was captured on video - hooray! I've added the recorded audio to my presentation on Slideshare (see above), and I've synchronized it with the slides.

Things I can do even better next time:

• I can update my Talks page before heading to the presentation. • I can ask the organizers for an attendee list so that I can get a better sense of who the audience

members are. • With a little more polish, I can make the presentation handout a good opportunity for more branding

and help. • I can work on pausing instead of using filler words like "right?" • A proper video camera set up on a tripod near the front would give me better-quality video

recordings. • I can ask the organizers for tips on which airport I should use. • I can ask my frequent-flyer friends how they make the most of travel time. Two hours is too short to

really get into code. Maybe I should go earlier? Maybe those frequent flyer clubs are useful for something after all. Maple Leaf Club Worldwide (Air Canada) is CA$599/year. How much would I need to travel in order to make something like that worthwhile, and do I want to travel that much?

• I can bring a phone that isn't on the fritz. =)

Page 246: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Emacs and w3m: Making tabbed browsing easier

http://sachachua.com/wp/2008/09/12/emacs-and-w3m-making-tabbed-browsing-easier/Fri, 12 Sep 2008 12:43:41 +0000If 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

http://sachachua.com/wp/2008/09/13/emacs-w3m-open-pages-in-external-browsers/Sat, 13 Sep 2008 13:26:51 +0000Sometimes 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

Page 247: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

(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

http://sachachua.com/wp/2008/09/13/first-impressions-in-an-e-mail-world/Sun, 14 Sep 2008 02:30:11 +0000I 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:

Next Life Goal­­Speak at TED! (Seth Godin Internship application)

Object 15 View SlideShare presentation or Upload your own. (tags: cow purple)

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

http://sachachua.com/wp/2008/09/15/drupal-programmatically-installing-and-enabling-modules-in-the-install-file/Mon, 15 Sep 2008 13:44:30 +0000To 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. */

Page 248: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/09/15/drupal-making-our-build-system-better/Mon, 15 Sep 2008 18:04:00 +0000Hooray! 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

• a source code directory • a database • entries in /etc/hosts • entries in my Apache configuration • a local site directory (ex: sites/dev.local.example.com) with settings.php • a QA site directory (ex: sites/dev.qa.example.com) with settings.php

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

Page 249: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/09/16/working-on-a-small-project/Tue, 16 Sep 2008 12:42:44 +0000Working 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

http://sachachua.com/wp/2008/09/16/drupal-deploying-two-branches-to-three-systems/Tue, 16 Sep 2008 13:15:12 +0000To 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:

• Download a stripped copy of the production database with the URLs changed for their local testing environment

• Deploy a stripped copy of the production database to the QA server • Deploy a specified revision of the source code to the QA server

Page 250: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Deploy a specified revision of the source code to the production server

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

Local Database

QA Database

QA Deployment

988987985984983982981980979978977976975974973972971970969968 986963985984983982981980979978977976975974973972971970969968967

Production Deployment

None 986963985984983982981980979978977976975974973972971970969968967

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

http://sachachua.com/wp/2008/09/16/drupal-and-drush-updating-the-database-from-the-command-line/Tue, 16 Sep 2008 15:03:36 +0000So 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();

Page 251: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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)) {

Page 252: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

$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

http://sachachua.com/wp/2008/09/17/the-road-to-me-20-how-i-was-the-chosen-one-%c2%ab-personal-branding-blog-dan-schawbel/Wed, 17 Sep 2008 12:41:24 +0000In 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

http://sachachua.com/wp/2008/09/17/subversion-restore-deleted-files/Wed, 17 Sep 2008 21:00:05 +0000If you accidentially 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 Common Use-Cases for Merging

Two-week review: 2 weeks ending September 19

http://sachachua.com/wp/2008/09/19/two-week-review-2-weeks-ending-september-19/Sat, 20 Sep 2008 01:39:01 +0000What 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

Page 253: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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:

• Work on more Drupal-related tasks for my project • Have fun doing those three presentations, learn something new • Finish the two skirts, practice seams • Go to the gym at least twice during the week

The way I work

http://sachachua.com/wp/2008/09/21/the-way-i-work/Sun, 21 Sep 2008 14:47:35 +0000I'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...

• I share my notes while I learn. I'm learning a lot at work, and I make sure I spend some time every day writing down what I've learned. This helps me understand and remember more. The key difference, though, is that I share my notes on my blog. This means that people can chime in with suggestions (almost always happen!) and learn from me as well. It also means that people can come across my posts in search engines. If it takes me fifteen extra minutes to write something up, and I save three people an hour's worth of fiddling with things each... that's a pretty good return on investment.

• I move as much information out of my inbox as possible. Mail is not the best tool for organizing task-related information. I usually use Lotus Connections Activities to group task-related information. It's also terrific for collaboration. I can see people's updates and share resources without sending lots of e-mail around.

• I create templates for things I often do. For example, I have a detailed activity template for preparing presentations. This checklist reminds me to take care of important steps, such as double-checking the teleconference information, packing my presenter remote, and so on. I've also added links to my favorite resources and shared this template publicly within the company, so anyone can use my template to plan a presentation. By doing this, I help share my processes with other people.

• I make it easy for people to get to know me. I often share snippets of myself within the company. I talk about what I'm passionate about and what I don't enjoy. I show people what I'm excited about. I share my hopes and my concerns. Because of this, people have told me that they feel they know me pretty well even if they've never quite met me, and they feel comfortable starting a conversation with me. Because people know what I'm interested in and they've come to think of me as a friend, they send me all sorts of opportunities that fit what I'm passionate about. Most of the opportunities I've received have come through my social network instead of from my manager. My manager helps me go after the opportunities, but it's my network that lets me find out about them.

• I stay connected inside and outside the company. People really make a difference for me. I enjoy knowing and getting to know so many wonderful people within the company, and I love how I can reach out, learn more about them, and even help them out. Because IBM has such a big ecosystem, it's

Page 254: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

much too easy to go into heads-down mode and forget about the outside. My blog, the blogs I read, and the other communities I participate in all help me keep in touch with what's going on in the outside world. For example, I really enjoy browsing through the presentations on SlideShare - it's great to see what people are talking about and how they're communicating it.

• I build other people up. If I do something by myself, that's okay. If I can involve other people and spread the opportunities and growth, that's much, much better. That's why I help other people and communities learn about tools and ways of doing things, and that's why I enjoy giving presentations and writing articles. I can get a lot more leverage on my time than I would if I were working alone, and I can connect with people who are talented at different things.

• I invest time in learning. I work at about 80% of my capacity so that I can spend the rest of the time on increasing that capacity in myself and in others. I don't have a fixed schedule or time budget (nothing like "one and a half hours each day" or "every Friday"), but I give myself leeway to explore things, and I make sure I learn about something different every week or so. I'm always looking for better ways to do things, and I share those ways with others. (Kaizen! Relentless improvement!) I also often find that the random things I learn about that don't seem to have any connection to my current work end up making a difference somewhere.

• I get great leverage on my time. I'm comfortable speaking to or writing for hundreds of people. It takes me a few extra minutes to share a bookmark, copy a good answer to my blog, post a recording of my presentations, or share a file on our internal file sharing system. In return, I get to reach a wider audience and I can save more people more time. I also save myself time when I can find these resources instead of doing things all over again! This is the way I get leverage on my time. I turn my services into products that people can use again and again.

• I follow my passion. I keep figuring out that intersection between my passions, my skills, and what my company and the world needs, and then I go ahead and do it. If I'm providing enough value (and it seems I am!), then people will help me figure out how to do even better. =)

• Work/life balance is non-negotiable for me. I do my best work when I'm happy, and doing my best work makes me even happier. Balance is a dynamic thing, and I enjoy listening and figuring out what I want to do. I don't see it as a win-lose trade-off, either. I firmly believe that I can be happy with both my professional life and my personal life, and I refuse to accept anything less. I know that it's much too easy for me to focus on work (it's fun to make things and make things happen!), so I make sure I explore other things as well. This is also the reason why I enjoy being frugal - it gives me the space to enjoy the balance I want.

(braindumping for an upcoming presentation!)

We're adopting a cat!

http://sachachua.com/wp/2008/09/21/were-adopting-a-cat/Sun, 21 Sep 2008 21:31:04 +0000W- 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!

Page 255: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Not the best day ever, but that's okay

http://sachachua.com/wp/2008/09/23/not-the-best-day-ever-but-thats-okay/Wed, 24 Sep 2008 01:12:22 +0000A 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 take 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.

Page 256: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Bio: "IBM: The Next Generation"

http://sachachua.com/wp/2008/09/24/bio-ibm-the-next-generation/Wed, 24 Sep 2008 13:07:01 +0000I 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!

http://sachachua.com/wp/2008/09/24/leias-home/Wed, 24 Sep 2008 23:30:48 +0000Water: 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

http://sachachua.com/wp/2008/09/25/cats-doing-better-school-barbecue/Fri, 26 Sep 2008 01:40:52 +0000I 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

http://sachachua.com/wp/2008/09/27/the-orange-chair-%c2%bb-social-networking-and-innovation-in-a-large-company/Sat, 27 Sep 2008 14:29:32 +0000

Page 257: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

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

http://sachachua.com/wp/2008/09/28/learning-sewing-and-french/Sun, 28 Sep 2008 21:24:40 +0000Sewing 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

http://sachachua.com/wp/2008/09/29/weekly-review-week-ending-sept-28/Tue, 30 Sep 2008 01:54:36 +0000Accomplishments:

• I prepared and gave a presentation on Gen Y and how work is changing to an IBM team that helps

Page 258: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

make awesome things happen on our intranet. Videoconferencing made this remote presentation a lot of fun, and I really enjoyed being able to see people during the question-and-answer section and the panel. The external version of the presentation is on Slideshare (Work: The Next Generation), and I'll look into the recordings I made to see if any of them turned out fine.

• I felt ill during most of the week. With a lot of rest, hot tea, hot water bottles, and the occasional ibuprofen tablet, though, I managed to get through it. I even got a fair bit of work done.

• I got invited to an external panel on government, youth, and Web 2.0, and an internal panel on storytelling. Exciting times! Passion really does result in compounding opportunities.

• I finished the wool jumper I was working on (Simplicity 4097), and I wore it outside the house. =) The first time I wore one of my sewing creations outside! Whee!

• Leia was very chatty. We suspect she's in heat. In a few days, she'll be off her antibiotics (she had been sneezing), and she'll be ready for an operation.

Plans for next week (well, this week):

• TUE: Complete the scenarios for Gen Y and banking, make plans for the trip to Boston. • TUE: Attend Dan Pink's career talk at the University of Toronto. (!) • TUE: Kick off my project assessment process. • WED: Get the next release of Transition2 ready for production. • FRI: Finish the alerts feature for Transition2. • SAT: Re-immerse myself in the Emacs community. I'm finding it hard to write because I don't talk to

other people enough. • SAT: Possibly meet up with Ben Casnocha and a bunch of other interesting people. • SUN: Finish the coordinating wool jacket I'm working on.

October 2008

Knowledge [shared] is power

http://sachachua.com/wp/2008/09/30/knowledge-shared-is-power/Wed, 01 Oct 2008 01:42:32 +0000Here'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.

Page 259: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Dan Pink

http://sachachua.com/wp/2008/09/30/dan-pink/Wed, 01 Oct 2008 02:17:15 +0000Dan 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."

Gen Y Perspective: Flexibility, Work-Life Balance, and Curb Cuts

http://sachachua.com/wp/2008/10/01/gen-y-perspective-flexibility-work-life-balance-and-curb-cuts/Wed, 01 Oct 2008 21:07:52 +0000In today's Teach Me Teamwork seminar on managing Gen Y, Bea Fields (the author of Millennial Leaders) mentioned that many managers are taken aback by Gen Y's demands for flextime, telecommuting, and other work-life balance initiatives. Some companies complain about the lack of work ethic in young employees and wonder how much of a circus work needs to be in order to retain and engage Gen Y. Other companies are adapting, exploring results-only work environments and other-than-traditional-office arrangements. I am really glad that Gen Yers have the chutzpah and the numbers to make workplace flexbility and work-life balance a front-and-center issue. We've seen the consequences of other people's decisions. We've seen people work overtime, weekends, and holidays for companies that then laid them off in resource actions or folded because of market circumstances. Many Gen Yers come from separated families where stress from work took its toll. The lesson? Making a living can't be more important than living a life. What do Gen Yers want? Here's what often comes up:

• A focus on results, not just face-time • The ability to work from home or from anywhere • The flexibility to work when we're most effective, whether that's early in the morning or late at night

Sounds familiar, doesn't it? Workplace flexibility and work-life balance weren't a Gen Y issue in the beginning. This started with working mothers who found themselves pulled between the demands of family and job. Some fathers were interested in this too, but social conventions stopped it from becoming a real issue. Gen Y of both genders care about work-life balance and flexibility, and not just because of family responsibilities. I read a lot about work-life balance, and I talk to a lot of people who've made decisions either way. I've heard how focusing on work can become a vicious cycle: if the rest of your life suffers because of your focus on work, then it's easier to focus on work and harder to build up the rest of your life to the point where you enjoy it again. I don't mind the occasional crunch. I want a sustainable pace, and life is too short to work at a company that wants to burn me out instead of help me grow. Initiatives for workplace flexibility and work-life balance are like the curb-cuts that make cities better for people in wheelchairs: they benefit many more people than the original targets. If you've ever rolled a stroller or a

Page 260: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

suitcase along a busy street, you know how great those curb-cuts are. Flextime, telecommuting, results-only work environments, and other initiatives aren't just about attracting and retaining Gen Y. They also help companies make the most of other people's talents: Baby Boomers phasing into semi-retirement, Gen Xers starting to raise their own families, and people who work in non-traditional arrangements. Flexibility and work-life balance: good for everyone.

Gen Y Perspective: Why Gen Y Won't Stay at Jobs that Suck

http://sachachua.com/wp/2008/10/02/gen-y-perspective-why-gen-y-wont-stay-at-jobs-that-suck/Thu, 02 Oct 2008 13:36:06 +0000

In yesterday's talk by Bea Fields on managing Gen Y, one of the listeners asked how much of a fun circus work would need to become in order to attract and retain younger workers. The well-known and much-criticized Gen Y tendency to job hop makes Gen Y retention a key issue for companies around the world. Here's my Gen Y perspective on this issue: when work-life balance is important and career plans are chaotic, it just doesn't pay to work at jobs that suck.

Why do people work at jobs that don't make them happy? There seem to be three main reasons:

• They need the money or the health insurance. • They don't care about the sacrifices they have to make. • They see it as a stepping-stone towards a bigger opportunity.

Let's look at those three reasons from a Gen Y perspective.

Do they need the money or the health insurance?

Many Gen Yers still live at home, so they have less financial pressure. Others live on their own or with friends, but aren't carrying mortgages or supporting families. True, many Gen Yers experience financial pressure from student loans, credit card debt and other obligations, but most can get by.

What about health care? We're in the prime of our lives, and most don't need to worry about losing insurance coverage. Life insurance and family insurance needs are low, because we typically don't have any dependents. That means we can shift jobs without worrying about not being covered in the meantime.

Why else would people take jobs they weren't happy in? They might not care about the other sacrifices they need to make, such as working long hours and living under high stress.

I know many Gen Yers who work overtime and weekends, but I also know many Gen Yers who prioritize work-life balance and who make time in their lives for other things. If their jobs don't allow them to have the kind of life they want, they'll look for other opportunities. They know that for every company that talks about company loyalty and retention but then turns around and expects an unsustainable pace of work, there are also companies that walk the walk and are really interested in improving workplace flexibility--not just for senior employees, but for everyone.

Why would people work so hard, anyway? The answer is related to the third reason why people stay in jobs that don't make them happy. They see those jobs as stepping-stones to greater opportunities.

It used to be that you would "pay your dues" in a boring, thankless job, eventually rising in the ranks and gaining a cushy position. Not any more. After rampant downsizing (I mean, "right-sizing", or "resource actions", as IBM likes to call it), the failure of even supposedly rock-solid institutions (hello, Fannie Mae!),

Page 261: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

and the un-cushy-izing of formerly cushy positions such as partners in law firms (who are now subject to the threat of de-equitization) is it any wonder why many people--Gen Y, especially, as we're making these entry-level decisions--no longer believe in long-term career planning and in paying your dues in a thankless position?

Lesson One in Daniel Pink's unconventional career guide The Adventures of Johnny Bunko is: "There is no plan."

There is no plan. If there can be no neat plan from getting from point A to point B, if being the office gopher won't get you to the corner office, if you can burn yourself out because of overtime and high stress but still be laid off because of unpredictable market conditions, then it makes sense to take a step back, invest in yourself, and do work that creates value and make you happy.

Gen Y knows this: your employer pays you, but you ultimately work for yourself. You are ultimately responsible for developing your own skills, finding your own opportunities, and making the life that you want.

Gen Y challenges for recruiting and retention, such puzzling issues for HR departments all over the world, are really just logical reactions to the realities of the marketplace. It makes sense to pick jobs and organizations where you can create value, learn, and enjoy working. It makes sense to contribute and learn as much as you can, then move before you get moved--whether it's to another job in the organization, or to another organization entirely. It makes sense to make sure that there's something in it for you.

Does that mean that Gen Yers are mercenary? No. In fact, money isn't the biggest reason why Gen Yers leave organizations. Gen Yers are looking for opportunities to make a difference, to grow, to connect, and to work with people they admire. Dot-com-like perks like foosball tables are fun, but they don't make up for opportunities to make a difference.

The organization that can quickly tap new Gen Yers' passions and skills, move them into a position where they can contribute in a meaningful way, and help them build the social networks that will make them even more productive--that's the kind of organization that will be able to easily recruit and retain Gen Y, because that's the kind of organization that understands what matters.

Sometimes you just have to do it

http://sachachua.com/wp/2008/10/03/sometimes-you-just-have-to-do-it/Sat, 04 Oct 2008 03:45:46 +0000Last Wednesday, I was definitely not a happily sewing kitty. I was halfway through the blazer I was sewing, and it felt wrong. The darts had bubbless. The sleeve I'd attached was crooked, and when I tried the blazer on, it looked boxy. I tried taking in the side seams, but I had no idea how to do it without making the fabric do weird things. It was frustrating. I was tempted to put that project on hold and switch to making either a cotton mock-up of the same pattern or an easier pattern. After taking a day's break from sewing, I revisited the project. I took my time in basting the pieces of cloth together, and then I sewed the sleeves on even though I wasn't 100% confident yet. And you know what? It actually looks like a proper blazer now. It's a loose fit and the darts are still somewhat puffy, but it looks somewhat like the illustration, and that makes me happy. Note to self: next time I'm plagued by self-doubt, it might be worth following the plan all the way through and seeing what happens. =) Sometimes things end up much better than they looked like in the middle.

Page 262: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Notes from WordCamp

http://sachachua.com/wp/2008/10/04/notes-from-wordcamp/Sun, 05 Oct 2008 00:22:43 +0000wordcamptoronto on Twitter #wpto08, #wcto08, which one? Joseph Thornley search.twitter.com sociology + technology RSS changed it from pastime to productivity tool Magazine analogy - doesn't make sense to keep physically checking newstand Asked audience who has developed plugins, nice interaction Check out category enhancements wpdiso? profile plugin live-conference.ca phug.ca Matt Mullenweg If it takes you more than five minutes [to upgrade], you're doing it wrong, as the lolcats would say (good idea for another presentation: bring in lolcats picture) 2 Wikipedias a month posted on wordpres.com 5 billion spam comments caught, 99.925% accuracy camp vs conference, open source vs closed source kudos to Davao WordCamp for being awesomest, mentioned karaoke sound system, pool, lumpia, super-passionate people, awesome shirt Release cycles, time-based, 2 months dev 1 month cool-down, 1 month testing - reminds me of what Mark Shuttleworth said re cadence Top 10 Wordpress plugins Looking into better multimodal support Other notes Wordpress help desk Role scoper Flashpress Wordpress developer's toolbox, Drupal version also Flutter Comicpress Theme test drive Wordpress e-commerce Contact manager Conversations Himy - misses Emacs Planner PIM bliki Brian Anderson, Mireille Massue, Elena Yunusov - storytelling Mireille -SecondLife, presentations, storytelling, visual thinking - introduced by Tania Samsonova Stuart Dykstra - SecondLife, virtual culture

Firehose

http://sachachua.com/wp/2008/10/04/firehose/Sun, 05 Oct 2008 00:28:04 +0000

Firehose

http://sachachua.com/wp/firehose/Sun, 05 Oct 2008 00:29:47 +0000

http://sachachua.com/wp/2008/10/04/5215/Sun, 05 Oct 2008 01:15:20 +0000

• Attend WordCamp • Cut out sewing patterns • Set up my blog as a tumblelog/lifestream without overwhelming people

Wordpress and lifestreaming - check out my draft firehose interface

http://sachachua.com/wp/2008/10/04/wordpress-and-lifestreaming-check-out-my-draft-firehose-interface/Sun, 05 Oct 2008 02:09:40 +0000Inspired by WordCamp Toronto (and the Flutter plugin in particular), I decided to spend some time figuring out if I could use Wordpress as a tumblelog/lifestream without overwhelming people and while still making my regular blog posts easy to find. I also wanted to bring in some of the weekly and daily planning that I do. Here's what I have so far: Draft firehose interface It's currently running off categories of posts that are excluded from the default RSS feed and from index.php. I'm half-tempted to make it run off files instead, because I can very easily rsync those from my computer... and that will probably end up involving Emacs. ;) That would be pretty sweet, wouldn't it? ... or a blosxom instance that feeds RSS into Wordpress... ... or an Org/Planner export that feeds RSS into Wordpress... Oh, the possibilities. What do you think? I'm planning

Page 263: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

to offer several interfaces to my blog. Firehose might become the default interface (there'll be a mainpost-summary version for people who like scanning and a main-post full version for people who hate clicking). There could be a traditional reverse-chronological everything view and an almost-everything view (excludes tidbits). There could also be an explore view full of random posts and "On This Day" goodness. And maybe another view for people coming in from search engines... What do you think? What would make it easier for you to browse?

New domain name: livinganawesomelife.com

http://sachachua.com/wp/2008/10/04/new-domain-name-livinganawesomelifecom/Sun, 05 Oct 2008 03:01:42 +0000I like having my name as my domain name. It makes sense, and it's very searchable... if you can remember how to spell my name, that is. But people mispell my name even in respected print publications, and there's very little chance people are going to be able to figure out my name if I mention it in a Q&A session. I needed something easier to spell. So now you can look for me at livinganawesomelife.com, and you'll get to my blog. =) How's that for fun and memorable? And it's true, too!

http://sachachua.com/wp/2008/10/05/5227/Sun, 05 Oct 2008 12:00:24 +0000

• WordCamp Toronto • Chat with my parents • Update sewing patterns and make fabric list • Clear inbox

My blog should be a little bit faster now

http://sachachua.com/wp/2008/10/05/my-blog-should-be-a-little-bit-faster-now/Mon, 06 Oct 2008 01:28:03 +0000I picked up a lot of ideas from this weekend's WordCampToronto, and I'm looking forward to doing a front-page redesign over the next few weeks. I finally got around to using YSlow to look for ways to optimize my site (or at least make it suck less), so things should be marginally better now. Thanks for your patience! =)

Sewing: Wool jumper, blazer

http://sachachua.com/wp/2008/10/05/sewing-wool-jumper-blazer/Mon, 06 Oct 2008 01:38:55 +0000(blazer not pictured). This is the jumper I made following Simplicity 4097. I also made a blazer from the pattern. It was my first time working with wool, lining, interfacing, facing sections, and sleeves. My conclusions? Wool was pretty easy to work with, lining made everything look terrific (even if my seams didn't quite match up), and sleeves were difficult. Mine still pucker a little. But it's not bad at all, and I've worn it outside the house already. Whee!

Page 264: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Week ending Oct 5

http://sachachua.com/wp/2008/10/05/week-ending-oct-5/Mon, 06 Oct 2008 01:43:11 +0000Accomplishments:

• Created saved searches/alerts module for Drupal-based project • Prepared Gen Y banking scenarios for an upcoming client workshop • Connected lots of dots • Attended WordCampToronto, had plenty of good conversations • Finished my wool blazer • Tweaked my Wordpress

Plans for next week:

• Participate in Innovation Jam (!) • Make 7-minute demo of Gen Y at Web 2.0 at Work • Document deployment plan and finish other features • Work on assorted tech stuff • Start sewing red wool blazer • Prepare for upcoming workshops and presentations

Deploying Drupal updates onto a live site

http://sachachua.com/wp/2008/10/06/deploying-drupal-updates-onto-a-live-site/Mon, 06 Oct 2008 13:05:34 +0000Our configuration management discipline paid off last week, when we rolled out lots of bugfixes onto our production server. I used my deployment script to test the release-1 branch against our regression tests and copy the source code to the production server after it passed. A quick database update later, and everything worked without a hitch. Why did it work? Here's what's behind our build system:

• We have a branch for release-1 bugfixes and a trunk branch for new features. It's easier than cherrypicking features to push to production.

• Module .install files handle all behavior-related changes (variables, new modules, etc.). Drupal can automatically apply those changes during the database upgrade process. Even the process of enabling a module is done through an update function in our main module's .install file. Note that the module install files are called in alphabetic order, so you may need to think about the sequence of functions.

• The Simpletest framework for unit and functional testing allows us to write regression tests that

Page 265: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

minimize risks of updates. • Updates and tests are always run after a stripped-down copy of the production database is loaded, and

are also occasionally tested against a full copy of the production database. This makes sure that the changes will cleanly apply to the production server. Domain Access complicates things a little because the domain name is encoded in the database, so my deployment script also takes care of substituting the correct domain name.

• To automate testing and upgrades, we use the Drupal Shell (drush) module in our local and QA environments.

• I wrote a deployment script webpage that provides a form for managing database changes and source code deployments to our QA server and to our production server.

I think it's pretty darn good. What would make it even awesomer?

• An updated deployment plan. I'm going to work on this document later. • Testing before commits, instead of after. maybe I can set up a pre-hook on my own system, or use

Emacs to do this somehow. • Buttons to get full copy of database for local, QA. Full copies of the database take much more time,

but are useful for getting a realistic feel for the functionality. • An article on how other people can get up and running with this kind of thing. DeveloperWorks,

maybe?

http://sachachua.com/wp/2008/10/06/5273/Mon, 06 Oct 2008 14:13:07 +0000

• Update build and deployment plan • Refine alert behavior for Drupal site • Participate in IBM's Innovation Jam • Paperwork: expenses, time, overtime • Write about lesson 2 from Johnny Bunko: build on your strengths • Cut second set of pieces for sewing • Write about Emacs

I'm so sorry!

http://sachachua.com/wp/2008/10/07/im-so-sorry/Wed, 08 Oct 2008 01:28:09 +0000I got caught up in IBM's Innovation Jam, and I hadn't realized that my blog was somewhat broken. Oops. I've disabled a great number of third-party things, including the Twitter Tools feed that made everything go haywire. Which widgets would you like back?

It's a little bit scary

http://sachachua.com/wp/2008/10/08/its-a-little-bit-scary/Thu, 09 Oct 2008 03:23:10 +0000I feel a bit nervous. There's a lot of shifting around, and lots of things I wonder about, too. I'm starting to feel a little unraveled around the edges, which is usually an indicator that I haven't been doing enough writing and reflection. There's a little bit more left to the Innovation Jam, some more work on my project, and then there's some more time to rest. Running on hugs, cough lozenges, and more hugs.

Page 266: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Writing presentation abstracts together

http://sachachua.com/wp/2008/10/11/writing-presentation-abstracts-together/Sat, 11 Oct 2008 21:54:27 +0000When Jennifer Okimoto pinged me about possibly putting together a presentation for Web 2.0 Expo 2009 in San Francisco, I perked up at the possibilities. I had been intimidated by the list of previous sessions (who am I to tell all these experienced techies and businesspeople about Web 2.0), but Jen and I could definitely share lots of lessons learned about Web 2.0 in a large enterprise, bridging generations and geographies. So I started a Google Doc for the abstract. After several invitations, she finally got access to it, and we brainstormed and refined our abstract through the shared document. It was a lot of fun, particularly coming up with a good title. I think my fondness for alliterative, catchy titles showed: "Linking the Leviathan?" "Moving the Mountain?" This should be easier, though. I should be able to right-click on a person in our instant messaging client and say "Collaborate", pick a document, work on it in realtime, be able to invite other people in, and have that persist. Someday...

Sewing: Red jacket, V8343

http://sachachua.com/wp/2008/10/12/sewing-red-jacket-v8343/Sun, 12 Oct 2008 04:07:51 +0000

I'm working on a red jacket now. I've been meaning to pick up a red jacket, but I'd never found a dark red jacket with clean and simple lines... so now I'm making one. It helped that there was a sale on Vogue sewing patterns, and that I'd stumbled across this deep red wool while W- was picking up fabric for the dining room cushions. In other news, sketching is so much easier in a vector drawing program where I can edit my mistakes. Thank you, Inkscape!

Week ending Oct 12

http://sachachua.com/wp/2008/10/12/week-ending-oct-12/Sun, 12 Oct 2008 19:40:52 +0000Text:

• IBM's Innovation Jam was a lot of fun. I focused on it because it was a great opportunity to connect cross IBM and share ideas. I posted more than 200 messages!

• I still got real work done. Our site users will be able to save searches. • Worked on some scenarios for Gen Y banking. Looking forward to Boston workshop. • Started on red wool jacket. Outer layer is done. • Bought gadgets - Logitech Pro 9000 webcam, Logitech Nano mouse. Both work with Linux. • Found a Filipino costume for an upcoming Virtual Cultural Festival in SecondLife. • One of my role models left the company. Felt frustrated. Wondering how to make things better.

Someday...

Priorities for next week:

• Mentoring session on Tuesday: ask good questions, learn lots

Page 267: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Demo of intranet tools to client VP • Flight to Boston for workshop. Whee!

Happy BlueDay to me!

http://sachachua.com/wp/2008/10/15/happy-blueday-to-me/Thu, 16 Oct 2008 02:30:33 +0000

Today is my one-year anniversary at IBM! Yes, I know, I've been on the IBM network for a couple of years now, but I was a graduate student then, and before that, I taught university-level computer science. This is my first year outside the academe and my first year working with IBM, so I'm going to take this opportunity to look back, celebrate what I've learned, and celebrate the people who made this possible.

Over the past year, I've grown tremendously as a developer. I learned how to develop on the Drupal content management platform, and I've contributed back to some of the modules we've used. Applying the principle of relentless improvement, I invested time in setting up unit tests and functional tests, creating build and deployment tools, integrating the tests into the deployment script, and managing multiple branches of source code. I also acted as the system administrator for our project, developing installation scripts, setting up multiple testing and production environments, and keeping them running. I'm a much better developer now than I was one year ago. I'm looking forward to growing even more. Thanks go to Robert Terpstra and Ted Tritchew, who arranged my first Drupal project; Jennifer Nolan, who worked with me on my first and second Drupal projects, and from whom I learned a lot; Daniel Kumm and Kamran Khan, who gave me that second Drupal project where I learned how to really rock it; Stefan Nusser and the other Drupal-using folks in IBM; Waclaw Ferens, whose CSS skills helped me avoid the frustration of cross-browser coding and just focus on the code I really liked to do; and the tons of open source developers out there who shared not only their code but also their insights on how coding can be done better. Yay!

I also grew a lot as a speaker. This year, most of my presentations were about Web 2.0, Gen Y, or social networking. While helping another IBMer, I stumbled across a distinctive personal style of hand-drawn illustrations that resonated with people. Applying that style, I won a category prize in Slideshare.net's worldwide Best Presentation Contest, delighted senior-level clients, and helped many people think of IBM as just a little bit cooler and more creative. I've spoken at numerous conferences and delivered part of two keynote speech, one of which was in front of 700 people. I've delivered remote presentations that informed and energized people. I've participated on panels, facilitated workshops and brainstorming sessions, and even helped organize conferences. I've presented to fellow new hires and to IBM's technical leaders, to internal teams and to our clients. Presenting teaches me a lot about a topic, and I enjoy making things easier to understand. I'm looking forward to even more presentations, particularly when that intersects with my consulting. Thanks go to all the people who gave me opportunities to speak and to learn from other people, to my manager for being fairly liberal when it came to travelling to speak at conferences, and to the wonderful people who listened to what I had to share (and especially to those who gave me a high rating afterwards ;) ). Particular thanks go to Laurie Friedman, who nudged me to figure out a way to explain to Gen Yers coming out of college that Web 2.0 _does_ work at work.

I haven't been doing as much Web 2.0 consulting and coaching as I'd like, but I've been able to help a few clients learn more about Web 2.0, incorporate the concepts into their strategy, and learn how to use these tools more effectively. My youth and my lack of industry experience means that many clients and account teams feel more comfortable with the more senior consultants on my team. However, I occasionally get to offer a Gen Y perspective, pitch in for others, or help with background work such as doing industry scans, brainstorming ideas, or capturing the discussion. I'm good at that work, though, and I can see how it adds value. I also help connect the dots, bringing opportunities into my team and helping my team members find resources throughout the company. I can get even better at this by exposing myself to more ideas, by exploring clients' interest in Gen Y and collaboration, and by developing marketing materials for my team.

Page 268: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Thanks go to Aaron Kim for getting me into this terrific opportunity and for encouraging me at every step of the way; Robert Terpstra, for giving it a try and bringing together this team; Bernie Michalik and Jennifer Nolan, for guidance and good examples; Jenny Chang and Tom Plaskon, for helping our team grow; Jennifer Okimoto, Pauline Ores, Kathryn Everest and all the others who sent insights and opportunities our way; the account teams we've worked with; and the clients who figured we had something good to share. (And we do!)

I've helped a number of IBM communities, teams, and individuals. Again, I've not been able to do as much as I'd like (still no New Bee's Cartoon Guide to Web 2.0 at Work), but I've tried to make sure that people could reuse as much as possible. Next year, I'd like to not only help put together that guide for new hires, but also make it part of the new employee orientation process, link it up with all the new hire groups and campus hire groups, and set up mentoring and reverse mentoring relationships among many people. Thanks go to the totally awesome Web 2.0 evangelists; people all over IBM who are interested in learning about these new tools and who keep us busy; to the new hire network AS Foundations which made IBM feel even more welcoming; to the new hire networks and the other people around the world that I've had the pleasure to reach; and to everyone who, through blogs, other social computing tools, e-mail, or instant messaging, shared their insights with me and mentored me.

I've been really lucky to learn from and share what I'm learning with lots of people. I've not only been able to post chunks of what I know, but also learn from other people's contributions and get a sense of the value I've created and passed on to others. I'm thrilled that I'm one of the top contributors, and I'd love to help more people contribute there and on our other tools.

It hasn't been a perfect year. I've seen a number of my mentors and role models leave for other companies, and that frustrates me. I've heard some of the difficulties encountered by fellow new hires and experienced IBMers, and that frustrates me, too. On the plus side, I've been glad to share my energy and enthusiasm with lots of people, and I'm glad I've helped some of the people I look up to remember why they enjoy their work. Many people have returned the favor, including David Singer, who shared a great perspective on the bigger picture.

When things get really bad, there's always getting a hug from my partner. He's awesome. And we have a cat who loves giving massages. My parents and I have worked out the distance thing, I think. People in IBM are amazing, too, and there are even more people and things outside IBM helping me find energy and happiness when I have one of those maybe-I-should-start-my-own-company days. ;)

And of course, there's so much more I won't be able to fit into this already-long blog post... but thanks. =)

What an amazing year. I'm looking forward to the next one. I would love to keep myself booked doing things I love: developing quick community sites using Drupal and other open-source platforms, helping people learn more about Web 2.0, brainstorming ideas, developing strategy, designing and implementing systems, and coaching people and groups.

There are also a number of things I'd like to help do in order to help make IBM a better place. I want to see the campus hire and new hire networks around the world linked up (maybe even recognized as a formal diversity group?) so that we can share resources, get representation, and make it easy for people to bounce ideas off us. I want to help put together different guides to Web 2.0 at Work that can be incorporated into the new employee orientation process or into the community-building cookbook. I want to put together a set of conference social networking tools that'll help people make the most of those face-to-face or virtual get-togethers. I want to teach everything I've learned (or at least capture it somehow) so that I can understand it better, so that I can share it with others, and so that I can go and learn even more. There are a lot of things I want to do, but there's plenty of time, and there are plenty of people who are passionate about similar things who can help make it happen.

Page 269: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

At the end of it all, I want to be someone who's contagiously happy: someone who loves her life _and_ her work, someone who helps other people be happy with their life and their work, and someone who's making a difference in people's lives. I'm already like that, on a small scale, and I look forward to growing.

So that's what my year's been like (fantastic!), and that's what my next year will probably look like. Why am I sharing all of this with you? Not just because I'm patting myself on the back - although I literally do that even for small victories, as it's fun to celebrate the small things... Here's why:

• There's so much to share and not enough time to share everything, so if you've come across something I know that you'd like to know as well - ping me or leave a comment!

• I'd love it if you spent some time reflecting on your year, too. What did you learn? What did you get better at? What do you want to do next? Who do you want to become?

• I want to help other people have this kind of an amazing year. What would it take? How wonderful can it be?

• And hey, if you know what I'm good at and what I'm interested in, maybe you'll think of me next time an interesting opportunity comes your way. =) Share what you're interested in too, and I'll keep my eyes and ears open for you!

Thanks for an amazing year. Let's see what the next one can be like. I'll keep you posted! (UPDATE: Fixed HTML tags. Teeheehee!)

Oooh, pretty presentation!

http://sachachua.com/wp/2008/10/16/oooh-pretty-presentation/Fri, 17 Oct 2008 01:14:43 +0000When I grow up, I'm going to make presentations like this. =)

Sketchboards + Prototypes Object 16

View SlideShare presentation or Upload your own. (tags: prototyping ux)

Weekly review: Week ending Oct 19

http://sachachua.com/wp/2008/10/19/weekly-review-week-ending-oct-19/Sun, 19 Oct 2008 23:48:55 +0000Last week, I:

• gracefully handled whatever Murphy's Law wanted to throw at me during a presentation to a client VP

Page 270: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• prepared a pretty presentation and ran through it during the prep session, whereupon the account team gave so many suggestions that we essentially replanned the entire session

• made travel arrangements for Tel Aviv and started learning a little Hebrew • even managed to work on some code and solve some of my teammates' Drupal and Linux problems!

Next week, it's all about:

• the Innovation Discovery workshop in Boston • possibly the Innovation Discovery workshop in Tel Aviv • more Drupal code • getting my papers ready for the Canadian Experience Class permanent residency application

Things I do when I'm travelling on my own

http://sachachua.com/wp/2008/10/19/things-i-do-when-im-travelling-on-my-own/Mon, 20 Oct 2008 00:01:14 +0000Here are some odd things I give myself permission to do when I'm travelling on my own:

• Play computer games in the airport. In particular, I play Nethack, a really old text-based adventure game. I don't know how I started associating Nethack with airports and travel, but it works for me. Maybe it's Pavlovian reconditioning - I don't like the hassle of flying, but Nethack makes it bearable.

• Sing. Softer when other people are around--just enough for me to hear the song in my head. Stronger when I'm walking by myself. Even stronger when the subway's coming in and the screech of the rails can drown me out. =) I think I've gotten better at singing, too - I've just suddenly figured out how to do the middle notes I used to have such a problem with before...

• Take a cab. Or at least I will, on the way back. I took public transit from the airport to the hotel today, and while it wasn't an ordeal, it wasn't fun, either.

I wonder what W- is doing with his kitchen pass... =)

Catching my breath

http://sachachua.com/wp/2008/10/23/catching-my-breath/Fri, 24 Oct 2008 00:06:09 +0000I just came back from a trip to Boston that was jam-packed with interesting conversations and connections. The cookies were a big hit, and I added lots of value too! =D I'll be heading to Tel Aviv tomorrow for another client workshop. I've suddenly been made in charge of the social networking session, so we're going to see if I can pull another rabbit out of the hat and get everything sorted out before my session on Monday. Right after that, I fly back and run to my session on social networking business models at CASCON 2009. I'm not entirely sure I'm going to get through it all without going crazy, but hey, it's worth a try. ;) And it's a good thing W- and Leia will be there for me no matter what. I can panic after all of this is over. =)

Back on the ground; lessons from Innovation Discovery Tel Aviv and CASCON

http://sachachua.com/wp/2008/10/29/back-on-the-ground-lessons-from-innovation-discovery-tel-aviv-and-cascon/Wed, 29 Oct 2008 17:04:35 +0000

It's good to finally be on the ground.

Page 271: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

It's been a crazy two weeks, so I've been blogging very little. From Sunday to Wednesday last week, I was in Boston. I returned to Toronto, then I flew to Tel Aviv on Friday and I got back on Tuesday. Tuesday was also when I'd promised to talk about social networking business models at CASCON, so I did, jet-lagged and all. Before all of these Innovation Discovery workshops turned up on my calendar, I'd bought myself a ticket to the opera (Don Giovanni). It was a beautiful production (great lighting and set design!), and the singing was, of course, amazing.

So the long and short of it is, this is the first time I've been able to sit down and write! <laugh>

Time for the usual reflections. What worked well:

• W- was absolutely wonderful. He helped me pull myself together for the trip. Little things reminded me of him, made me smile, and kept me going. And he picked me up from the airport and helped me get through that crazy day yesterday, too. Just so you know and there aren't any surprises: if I ever had to choose between IBM and him, he would win. No doubt about it. So let's not ever let things get to the point where I would have to make that choice, mmkay?

• I prepared for my session on very short notice, but I pulled through thanks to the help of Andy Schirmer, Mahmood Ashek, Stuart McRae, and the wonderful thing that is Cattail. Julia Bartlett and Jade Nguyen-Strattner helped me make changes on the fly. One of the great things about getting to know lots of people and finding out what their passions are is that I can pull the right names out of my head. Funny, but none of them show up on the first page of a SmallBlue search for mobile social networking... =)

• Social networking was clearly a big topic for the client, and they'd spent a while thinking about mobile social networking and what services they could build around it. They presented their plans and ideas first, which allowed us to adjust our presentation based on what they already knew and what they might be interested in.

• The personas that I quickly developed helped people anchor the discussions and brainstorming on a clear end-user. One of the groups eventually decided to go with a different persona, but everyone found the idea to be useful.

• One of the other topics was emerging markets, and the fact that I'm from the Philippines helped because I could give a different perspective and anecdotally validate some of the trends that they had been seeing.

• Despite my jet lag, I still got compliments on my energy and spirit. I also got through my CASCON presentation all right, even though I was also jet-lagged and fuzzy. Stephen Perelgut suspects that this is a good way to make me more understandable at conferences - tire me out with jet lag first, then put me in front of people. ;)

• Trips are a great opportunity for me to meet up with people I've kinda gotten to know online. I chatted with Ido Guy from the Haifa research lab. It was great to finally meet him! He'd like to learn more about promoting the cool things that the Haifa research lab is working on. He's also interested in measuring the business value of social networking, and we might be able to get something going. Joan DiMicco is curious about the same thing when it comes to new hires, so that sounds like a good area to explore.

• The maps I printed out helped me orient myself and reduced my anxiety when I was taking cabs. Also, knowing a little about the local culture helped me avoid getting ripped off by fixed pricing for cabs. ;) It was impossible to convince cabs to use the meter when I was with George and Neil, but I got the other cabs to use the meter when I was travelling alone. It's the principle of the thing: I'd rather encourage honest taxi drivers than go with taxi drivers who take advantage of tourists, because I've seen how taxi drivers can go from taking advantage of tourists to taking advantage of pretty much everyone. You should try getting a cab from the malls in downtown Manila at night...

• I spent a few hours learning Hebrew while sewing and while doing the dishes, and that helped make the place feel less alien. It probably helped me build some more rapport with the local folks, too!

• The sock-shoes in the amenities kit on the Air Canada flight to Tel Aviv were pretty comfortable. I should make some for myself for future business trips.

Page 272: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

What to do better next time:

• I regretted not being able to wander around and see more of the place. Some people took extra days off. The two trips I took to the Philippines took up all my vacation time, and I also enjoy spending time at home, but maybe I can save up overtime so that I can have a free day.

• Jade Nguyen Strattner and George Rudnicki facilitated very well, keeping the conversation flowing. I liked the introduction structure that George used, asking people to tell a story about something they innovated. I'll try using that the next time I'm in charge of introductions. Maybe during my tea parties?

• Neil Marquardt took individual pictures of everyone and put them into the capture document. People liked this a lot. Maybe I can do that at the Innovation Discovery workshop in Brussels. I can bring my camera and a flash, and maybe even a background if I can fit it into my suitcase. An umbrella and a light stand might be overkill, though. ;)

• I can put together a travel kit with a mask, a travel pillow, an extra pillow for lumbar support, sock-shoes, and a wide-necked water bottle that I can ask the flight attendants to fill. I can also make sure I always get an aisle seat, so I don't worry about disturbing others if I'm getting out of my seat too often.

Now back to my regular work!

Week ending Oct 26

http://sachachua.com/wp/2008/10/29/week-ending-oct-26/Wed, 29 Oct 2008 17:11:26 +0000So late! =) I've been very busy. What I did last week:

• Facilitated a session on Gen Y during the IBM Innovation Discovery workshop in Cambridge, Massachusetts

• Met up with lots of people from IBM Research. Learned a lot, connected lots of dots. • Blogged about what I learned. • Got assigned the Social Networking segment of the IBM Innovation Discovery workshop in Tel

Aviv. Crammed madly for it. • Flew to Tel Aviv for the IBM Innovation Discovery workshop.

Plans for Oct 27 to Nov 2:

• Survive the rest of the IBM Innovation Discovery workshop in Tel Aviv (Done!) • Survive CASCON despite jetlag (Done!) • Attend a real opera - Canadian Opera Company (Done!) • Braindump what I'd learned • Follow up on all the great conversations I had during those trips and CASCON • Get back to work on my Drupal project • Finish my red jacket • Send off the paperwork for my visa • Send off the paperwork for my permanent residency application • Recover from back-to-back business trips

Page 273: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

November 2008

Weekly review: Week ending Nov 2, 2008

http://sachachua.com/wp/2008/11/02/weekly-review-week-ending-nov-2-2008/Sun, 02 Nov 2008 19:37:20 +0000This week was half travel, half catching up. I flew to Tel Aviv for a customer workshop at which I facilitated a session about mobile social networking. When I got back, I worked on my Drupal-based project, ironing out a few bugs and playing defect tennis. I processed lots of requests quickly. I was going to do the paperwork for the Schengen visa so that I could help with another customer workshop in Brussels. I was nervous about the time and I didn't want to cancel my participation at the last minute, as I know from first-hand experience that it can be pretty difficult for people taking up the sudden slack. So I recommended a number of people in Europe to the workshop organizers, and I hope they find a good fit. During this mad two-week stint of travel, I realized a couple of things:

• Consulting is a scary thing. ;) You're always wondering if the client will feel that you've provided enough value. Programming or making things seems a little more clear-cut in that respect.

• I love connecting the dots, and I seem to have passed some threshold that makes the network effects scale well. Because people know I like connecting the dots, they tell me about what they can offer and what they're looking for.

• A few days of working at home helps me settle down and relax after unusual stints of overtime. Otherwise, things feel pretty raw.

I finished the red jacket I was working on, and I've also completed a purple skirt. I'm very happy with the way the red jacket turned out, and the notions I picked up during Fabricland's sale have helped me me save time and make my purple skirt neater. My next project (already halfway done) is a black skirt following the same pattern as the purple skirt. After that, I'll probably make two reversible four-color shells to make business-trip packing even easier. I'd been thinking about the personality differences between people who start things and people who finish things. I'm very much a starter. I can see the possibilities of starting things, I'm good at figuring out who I need to talk to in order to make something happen, and I can be excited and get other people excited too. On the other hand, after a while, I can lose interest and move on to other things, which is probably why my Emacs book is languishing in the doldrums. That's one of the reasons why sewing interests me. Small, quick projects that give me tangible results when I finish them... Maybe this a good way to develop more persistence and attention to detail. =) Next week, I'll be focusing on the Drupal-based project. We're coming up on our second release date, and I think we're in pretty good shape despite all my travel. I also need to get the details ironed out for my talk in Concordia University: the student's guide to Web 2.0 at work, and for an upcoming panel on government, Web 2.0 and youth. On Thursday, SelectMinds has a virtual corporate social networking conference. I'm looking forward to attending the session on onboarding with social networking tools (1:45 ET - 2:45 ET). We'll be recording videos of our other presentations on Thursday, so I might not be able to make it to the rest of the interesting sessions. It'll be a very busy week, but I hope to make time to get my permanent residency application together and to follow up on the interesting conversations I had over the past two weeks.

Learning languages

http://sachachua.com/wp/2008/11/02/learning-languages-2/Sun, 02 Nov 2008 20:56:01 +0000My recent trip to Tel Aviv was a good reason to learn a little Hebrew. I listened to the Hebrew I course from the Pimsleur language series (available in the Toronto Public Library!) while I was sewing clothes or doing dishes, and I printed out a few phrase lists I found on the Internet. I didn't get to the point of being able to

Page 274: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

have a good conversation in Hebrew, but it was nice not feeling totally lost, and occasionally even recognizing some of the things that people around me were saying. I like learning different languages. It's like building with blocks: you collect different kinds of pieces, and the more pieces you collect, the more ways you can combine them and make sense. W- and I have been watching Heroes. Yes, we're very much behind the times. ;) My favorite segments are when Masi Oka shows up as Hiro and speaks in Japanese. I miss the rush of semi-understood syllables, the alien familiarity of a learned skill. Maybe I should take that up again. I probably won't be able to make much time for conversation practice, but it would be interesting to be able to read foreign blog posts and make occasional comments. So I've bought Japanese Flip for the new iPod Touch (thank you, Slideshare) and I'll be playing with it on the subway ride. =) I'll also see about getting back to learning French...

Cat scratching post

http://sachachua.com/wp/2008/11/04/cat-scratching-post/Tue, 04 Nov 2008 17:06:23 +0000Last weekend was a weekend of making things. W-, J- and I built a scratching post for Leia, our cat. We took a 4x4 and wrapped it with sisal rope, sprinkling catnip between the coils. Leia loved it. She climbed up the 3-foot post easily, and we often found her precariously perched on the 4x4 end on top of it, all four paws crammed together. So W- built an extension on top of the scratching post, screwing a short, flat piece of wood on top of the post end and covering the platform with a scrap of carpet. Leia's so spoiled. =)

Learning about conviction and life

http://sachachua.com/wp/2008/11/04/learning-about-conviction-and-life/Tue, 04 Nov 2008 17:41:25 +0000One of the videos we watched last weekend was Ever After, which is my favorite Cinderella reimagining because Drew Barrymore plays a no-nonsense Cinderella who doesn't wait for anyone to rescue her, isn't pining away for a prince (or the fjords), and is a bit of a bookworm. The prince is amazed--and a little perturbed--at how Cinderella lives with such passion and conviction. She's alive in a way unlike her stepsisters, her stepmother, and all the people at court are not. It's tempting to let my passions lull, to lose them in the bustle of everyday, to moderate them in order to be like others, to fritter away time and energy. But I know what I love doing: I love helping people connect and collaborate. So I'm going to. =)

Weekly review: Week ending November 9, 2008

http://sachachua.com/wp/2008/11/09/weekly-review-week-ending-november-9-2008/Sun, 09 Nov 2008 14:24:05 +0000This week:

• Got ready for the second release of my Drupal-based project. Things are going well! • Attended the Women in IBM Networking Group's executive mentoring session. Realized I don't want

to become an executive considering the compromises people make. ;) • Not only survived the videotaping of my Top 10 Web 2.0 Tools GBS Consultants Should Try session,

but gave the guy a few tips on video production. Played around with Camtasia Studio for making picture-in-picture shows.

• Attended the HR.com/SelectMinds corporate social networking teleconference session on new hire onboarding. No surprises, although picked up a few good stories about Southwest and other companies.

• Booked my flight to Montreal.

Page 275: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Dropped by hacklab.to. Ran into Jed. Good conversation about job-hunting, social networking, Emacs, etc.

• Played around with CiviCRM for personal contact relationship management. • Helped out with a talk on mentoring by telling my story about blogs. • Mindmapped and storyboarded Montreal talk. • Printed out necessary forms for permanent residency application. • Tweeted much more than before, thanks to iPod Touch.

Next week:

• Push release-2 to production server. • Document release procedure so that other people can do it in the future (and so that I can take it with

me to future projects). • Finish whatever enhancements I have time to do. • Deliver session in Montreal on students and Web 2.0 at work. • Meet up with lots of interesting Montreal-basedpeople, including friends I haven't seen in a while. • Fill in one of my permanent residency forms. • Finish black skirt. • Mail package to Randell.

There's something about mornings

http://sachachua.com/wp/2008/11/11/theres-something-about-mornings/Wed, 12 Nov 2008 00:56:49 +0000Our cat has a firm idea of what constitutes a perfectly acceptable wake-up time for breakfast: 6:00. I've taken to waking up early and making her breakfast, getting ready, and so on. Today I arrived at work at 7:00. The lights were still dim. I don't think anyone else was in the IBM office. I got a lot done. I remembered to leave work early, too, and I got a lot done at home as well. I remember blogging about early starts a number of times, and I like it when I can get into the rhythm of it. W- and I will make sure we keep in sync, too. Preparing a few things the night before makes things so much more convenient. After dinner, I pack my lunch, leave a pot of oatmeal to soak on the stove, and set out all my clothes in the order that I need to put them on. The rest of the time is mine to spend, and then it's another great morning. I'm getting the hang of the little things, too. The subway ride is the best time for Japanese flashcard practice, because I'm sitting down. The Pimsleur language lessons are best for dish-washing time, because I need my hands to be free. I'm working my way through French, and I hope I'll be able to practice understanding conversation when I'm in Montreal. There's still a lot of room for improvement. Depending on need, I may make early mornings my personal project time. Right now, I'm relaxed, but not feeling very creatve. There are a number of things I still need to follow up on, including possible tea party plans. (I'm a month late with my tea parties!) But things are good. =)

Preparing presentations: from mindmap to storyboard

http://sachachua.com/wp/2008/11/11/preparing-presentations-from-mindmap-to-storyboard/Wed, 12 Nov 2008 02:12:11 +0000The way I prepare presentations has changed quite a lot since I started speaking in public in 2002. (Wow, it's been six years!) I was preparing a presentation for Concordia University students on Web 2.0 at work, and I figured that it's gotten to the point where I can actually explain to other people how I do it. In the process, I'm

sure we'll figure out ways to do things even better. =) Here's what I did: I started by writing some details about the talk along the top of the page: where it is and who's attending. Then I drew two stick

Page 276: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

figures: one for people going into the talk, and one for people going out of the talk. I focused on the people going out of the talk. What did I want them to be able to do? What did I want them to understand? What did I want them to feel? After I sketched the outcome, I went to the beginning. What would people be thinking, going in? What would be their experiences and assumptions? Then I drew an arrow from the person going in to the person going out. Somehow, my presentation would need to help people get from point A to point B. I added lots of arrows feeding into that main arrow. Which stories could help people move towards the

outcome? I listed as many stories as I could. Then I started mindmapping the presentation so that I could group similar elements and flesh things out in more detail. I wrote my key message on the right side. Then I broke it down into parts, which I refined further. I cross-referenced it against the first page to see if I had any other stories that fit in nicely, and to make sure that all the parts I wanted to include were related to

the arrow between point A and point B. And then it was storyboard time! =D I didn't have any storyboard templates lying around (maybe I should print some!), so I used graphing paper instead. I could've used my Cintiq for this and the previous steps, but graphing paper had been more convenient when I started, and it didn't cost me that much more time. =) It was strange making a storyboard for the presentation. I'd hear snippets of the presentation in my head - sudden snatches of potential transitions and ways to illustrate topics. I started from the first slide and followed the images as they flowed. There are better ways to illustrate these things, I'm sure, but this was a good start! =) After I created the storyboard, I opened up Inkscape and brought out my Cintiq tablet. I made a grid of 800 pixel by 600 pixel rectangles, 5 rectangles across and 9 rectangles down. I set the rectangle fills to black and my pencil color to white, and then I started drawing. I occasionally cleaned things up with the node tool and the delete button, both mapped to shortcut keys on my tablet. A couple of hours later, it was done. Then I needed to figure out how to get it into a presentation. I didn't want to export each frame, because it was hard to keep things in sequence and inconvenient to rearrange slides in the presentation software. Instead, I exported the entire thing as a large image. I used ImageMagick (convert -crop 800x600 slides.png slide_%d.png) to slice the image into tiles, and the OpenOffice.org Photo Album extension to import all of the slides. Bonus: they imported in sequence! I saved the slides as ODP and PPT, and exported the slides as PDF. Et voila:

A Student's Guide to Web 2.0 at Work Object 17 View SlideShare presentation or Upload your own. (tags: web2.0 students)

The slides don't make sense without me, but that's okay. =) I may make a standalone version if it works out.

Weekly review: Week ending November 16, 2008

http://sachachua.com/wp/2008/11/16/weekly-review-week-ending-november-16-2008/Mon, 17 Nov 2008 02:43:40 +0000

Page 277: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

This week:

• It was my last week on the Transition2 project, and there weas a big change that I needed to make to the source code internals in order to prepare things for future features. I didn't know how much I'd complete, but I told the project manager I'd give it my best try. I made surprisingly good progress, and I think that was partly due to a new habit of waking up really early in the morning to do that coding. The unit tests also made it easier for me to verify that things still worked. I managed to get all of my tests working today - hooray! It still needs a lot of tweaking before then, and I (or the next developer) still need to figure out localization, but it's in pretty good shape.

• I gave a speech on blogging at Concordia University in Montreal. The weather was poor, so only fifteen or so people came, but I think I helped a number of people gain confidence. People liked the stick figures. =) I learned a lot while preparing and delivering that presentation. I blogged about how I mindmapped and storyboarded the presentation, and with that as my preparation, I found it easy to change the presentation a bit in order to accommodate the mix of people I met there. I had originally planned to talk to a younger crowd because the talk was part of the Backpack to Briefcase series, but a number of people were interested in professional uses of it, so I mixed a little of that in. I also used a webcam to record my presentation. That was a good idea.

• I stayed a couple of extra days with Michael McGuffin and Alice Servera, which was a fantastic idea. It's so much better staying with friends than staying at a hotel, and it was also a good idea to stay over a bit instead of going back right away. I convinced Michael to cook something for us, and the pineapple fried rice he made was wonderful. I told them stories about my life in Toronto, and we chatted with my mom over the computer. =) I also enjoyed playing with their kids and meeting Alice's extended family, who were all warm and friendly.

Next week:

• I'm looking forward to starting on a new Drupal-based project. I'm joining an existing team, so I'll get to learn from the ways they're currently doing things. =)

• I need to put together some paperwork: invoices, permanent residency application, passport renewal, etc.

• I'd like to start sewing that 3/4 sleeve pajama top out of red fleece. =)

Upcoming webcasts on social networking, Gen Y

http://sachachua.com/wp/2008/11/18/upcoming-webcasts-on-social-networking-gen-y/Tue, 18 Nov 2008 22:27:19 +0000Here are some free upcoming webcasts I'm planning to attend:

Brazen Careerist: Capturing the Hearts and Minds of Young Talent through Blogs

Presenter: Penelope Trunk, CEO & Founder, Brazen Careerist

Date: Wed, 3 Dec 2008

Time: 1:00 PM - 2:00 PM ET

Grassroots Networking: The Pros and Cons of Growing Your Social Network

Panelists:Shannon Baker, HR Manager, Cisco Systems, Inc. Deborah Casaubon, Director, Talent Development, Cisco Systems, Inc. Megan Hundley, HR Manager, Cisco Systems, Inc.

Page 278: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Date: Thu, 4 Dec 2008

Time: 1:00 PM - 2:00 PM ET

Best Practices in Integrated Corporate Social Networking: The Intersection of CSN, Web 2.0 and Talent Management

Presenters:Charles Coy, Director of Product Marketing, Cornerstone OnDemand, Allan Schweyer, Exec. Director & SVP, Research, Human Capital Institute (HCI)

Date: Wed, 10 Dec 2008

Time: 12:00 PM - 1:00 PM ET

I Can Do It Myself! Providing Gen X and Gen Y Employees with A New Breed of e-learning Tools

Presenter: Tom Casey, Principal, The Concours Group

Date: Thu, 11 Dec 2008

Time: 3:00 PM - 4:00 PM ET

Anyone else dialing in? =) Maybe we can share notes.

TCP window scaling, or zomg the Internet works for me again

http://sachachua.com/wp/2008/11/19/tcp-window-scaling-or-zomg-the-internet-works-for-me-again/Wed, 19 Nov 2008 22:54:47 +0000Sites such as aircanada.com, pcfinancial.ca, and (horror of horrors!) torontopubliclibrary.ca had gotten _unbearably_ slow on Linux. Here's how I fixed it (as root): echo 0 > /proc/sys/net/ipv4/tcp_window_scaling I love you, Ubuntu forums.

Weekly review: Week ending November 21, 2008

http://sachachua.com/wp/2008/11/21/weekly-review-week-ending-november-21-2008/Fri, 21 Nov 2008 21:20:39 +0000I rocked. =) I turned my Drupal-based project over to a new team member. It was in great shape: the new branch passed all my old regression tests, the deployment script still worked, and the module that I'd partially implemented was well-documented with my notes. I was so glad that I'd invested the time in writing tests, tools, and documentation. I was also glad I insisted on using doxygen for low-level documentation instead of (gack!) Microsoft Word, as doxygen gave us call graphs and caller graphs for free. I checked on the team members today to see if there was anything else they needed in order to work effectively, and it looks like everyone's happy. I started a new Drupal-based project on Tuesday, and I brought the habits and tools I picked up during the previous project. The features I've been working on now have nice little tests. I've automated more of the install and testing process. I also spent some time scrubbing my old deployment scripts, and I sent them to the person who just started as the release engineer for the project. Things are going well. =) I still haven't met another Linux-based Drupal developer within IBM, though. =| No matter - maybe I'll eventually inspire people to give it a try! I helped Aaron Kim and Bernie Michalik out with a workshop

Page 279: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

for a major insurance company. I seem to be their go-to idea-generator, which is awesome fun. I love coming up with a range of ideas based on what I've seen, what I'd like to see, what technology makes possible, and so on. I think Aaron exaggerated when he said I come up with hundreds of ideas, but it _is_ a lot of fun for me. I get to play with all sorts of combinations of interesting things. I attended part of the workshop, too, and I shared a couple of stories. I also found myself gathering resources this week. I handled a number of requests for information on new employees, Gen Y, social networking research, and other topics, and people were very happy with the information and people I pointed them to. I get a lot of questions because people know I'm interested in these things, and I love handling those questions because each question gives me an opportunity to organize more information in a coherent way. I get to build on top of other things I've done before! =) So that was this week: I turned over my old project (in a way that made me happy), hit the ground running (in a way that also made me happy), helped generate lots of ideas (and that made me happy too), and answered lots of questions (happy happy happy). Oh, and I sewed a pajama top out of red fleece. (Happy _and_ warm!) =) Next week: More Drupal work, a Government 2.0 panel, a dinner party with some family friends, and maybe the pajama bottoms...

Virtuoso

http://sachachua.com/wp/2008/11/22/virtuoso/Sat, 22 Nov 2008 22:57:28 +0000

While I was in Montreal, Michael McGuffin told me about Cecile Licad, a Filipino pianist who's done some remarkable things. He told me about the time Cecile Licad was playing Rachmaninov in a concert, and the lights went out. She kept playing for more than a minute - beautiful, complex music - and when the lights came back on, the orchestra members scrambled to catch up. Thanks to YouTube, you can see it for yourself:

Object 18

That made me think about what it's like to know something complex so deeply that you can do it without your notes. I don't have an eidetic memory and music isn't my strength, but I'm starting to enjoy the benefits of breadth and depth in areas like creativity, Linux, and PHP--and Drupal, more and more. Of course, many of the things I work on are... well... a lot more difficult to do without electricity (although I _have_ worked through code and presentations on paper!), and nowhere near as easy to enjoy as a good musical performance. But someday I'd like to be a virtuoso at these things. Maybe sewing, too...

Thanks to Michael for the tip!

Page 280: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Stock image series

http://sachachua.com/wp/2008/11/22/stock-image-series/Sun, 23 Nov 2008 00:51:08 +0000Peter Bauer wondered where I got the images in my presentation on Blogging Your Way Out of Your Job... and Into a Career. =) I figured I'd post it here too, just in case you're curious. Check out koun's illustrations on Stockxpert.com. =) Someday I might get a figure modeling program...

Notes from the City of Toronto Web 2.0 Summit

http://sachachua.com/wp/2008/11/26/notes-from-the-city-of-toronto-web-20-summit/Thu, 27 Nov 2008 00:35:01 +0000Thanks to Aaron Kim's referral, I participated on a panel about Generation Y and Government 2.0 at the City of Toronto's Web 2.0 Summit. I told a couple of stories about characteristics of my generation and opportunities (for everyone!) opened up by Web 2.0, including Clay Shirky's story about 4-year-olds and televisions (hmm, got the details wrong on that one). During the panel, I learned about the City of Toronto's push towards citizen-centric views of information with their 311 project, some thoughts on using subscriptions, aggregation and filtering in order to deal with information overload, and concerns about digital divides and lack of access to computers or the Net. I also heard a story about how one company uses the Web 2.0 equivalent of a swear jar - people who send attachments through e-mail get poked about how they can be using more effective tools to collbaorate. =) What went well?

• People: I enjoyed getting to meet the organizers, the other panelists, and the audience members. People had interesting stories and questions. I particularly enjoyed Mark Surman's talk about lessons from open source development that may help cities become more open and participative. =)

• Webcast: There was a live webcast of the event, and Lan Nguyen told me that more than three hundred people from all over Canada logged in to watch the streaming video. Moderators also took questions from the online audience and brought them into the discussion. This was a terrific idea because it allowed more people to participate. People were interested in simultaneous webcasting for all city sessions, and I think that would be a Good Thing.

• Twitter backchannel: Towards the end of our panel, I noticed that one of the online comments mentioned the #to20 Twitter backchannel. I pulled out my iPod Touch, keyed in the wireless user name and password the organizers gave me, and navigated to the #to20 search page. After I scanned through the previous discussions, I started bringing ideas from the backchannel into our panel conversation. People's tweets reminded me of interesting points to bring up. I'm really glad I had access to the Twitter backchannel without doing something as awkward as bringing out a laptop, and that I could get to know different aspects of the people I'd just met in person. Good stuff! I'll be relying on Twitter to keep me up to date tomorrow, as I won't be able to attend in person and rumor has it that the live webcast requires Internet Explorer.

• Experience: I'm usually anxious before panels and presentations like this because I don't feel at all like an expert. Who am I to talk about Web 2.0, or Generation Y, or something like that? I make up for it by reading a _lot_ about the topic, collecting stories, and talking to a lot of people about the topic. This time, I was even more anxious because I'm not a citizen of Canada, I didn't grow up in Toronto, and I don't know much about the way the Canadian political system works. But the pre-event call reassured me that they'd be okay with my newcomer perspective, and during the panel, it turned out that I had plenty to share: stories from other organizations and people, ideas I've written and spoken about, experiences I've reflected on... It all worked out well, and I'm glad I got to share some of what I'd learned. =)

What would make this even better?

Page 281: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Focus: A development issue pulled my attention away during the last panel session, which was a pity because it seemed like an interesting one.

• Planning: I really should get into the habit of asking for the registration list or even just looking speakers up so that I can have richer face-to-face conversations with them. Names alone are hard to search for. The next time I help organize a conference, I think I'll ask everyone for blog addresses, Web addresses, profile links, or a short self-introduction... Hey, maybe I'll do that for my tea party! =)

• Linking: Should've found the webcast URL before the event and posted it on my blog, so that more people could tune in! I'll keep an eye out for recordings. =)

Lots of people to follow up with, lots of conversations to continue...

Notes from conversations: Conscious competence

http://sachachua.com/wp/2008/11/28/notes-from-conversations-conscious-competence/Fri, 28 Nov 2008 16:04:32 +0000

Politeness

I'm going to start off with a story about embarrassing myself, because it's something worth thinking about, I learned a lot through it, and it shows you that I'm human and there are many things you can teach me. <laugh>

Jeff invited me to this talk, and I was really looking forward to it. I had been somewhat frazzled that afternoon (oy, paperwork!), though, and by the time I arrived at Rotman, I realized I didn't clearly remember what Jeff looked like. I couldn't pick him out of the rapidly growing crowd. I did, however, see a few other people I recognized a bit (including Darren from the summit I'd attended the day before), and after some reintroductions, we sat near the front of the audience. (More on this later; see "The best seats in the house")

Darren brought a number of friends over, so the seats in front filled up quickly. I kept looking around, but I didn't see the people I was looking for - Jeff, who had invited me, and Sabrina, who I had met on the subway last Monday. I suppose it would've helped if I had a clearer memory of their faces - another argument for using a smartphone for taking people's pictures and associating them with my address book records. ;)

Jeff walked up to me and reintroduced himself (thank goodness!), and promised that we'd get together afterwards for coffee or tea so that he could pick my brains and introduce me to his other guests. Then it was time for the session to start. =)

Over tea later that evening, Jeff told me about possible generational differences in etiquette, and how he had been surprised (but not offended because he was expecting these generational differences) that I hadn't sought him out--or lacking that, saved seats for him and the other guests. In retrospect, it would've made sense for me to stand near the back and look for him (or look obviously lost, in which case I'm sure he would've found me easily). He asked me what it looked like from my perspective, and I told him about the interesting conversation I found myself in with the folks I'd met at the other event, my understanding that he'd probably be really busy as an organizer, and how I wasn't sure how many other guests he had invited or who they were. =) It all worked out quite well, although I'm sure I must've blushed quite a bit.

There, Jeff - it's not that Generation Y isn't aware of these things. It's mainly that I'm a little fuzzy-brained when it comes to people's faces, and that I trusted we'd meet up some way or another during the event - which we did, thanks to you. =)

Page 282: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

The best seats in the house

I like sitting in the front row, near the center aisle - the best seat in the house for most lectures, seminars, and other events. This usually means that I need to arrive early, which also allows me to chat with other early-birds, the event organizers, and the speakers. Even when I arrive late, though, I sometimes still squeeze into a seat near the front if the talk hasn't started yet. There are usually a couple of empty seats there, and I still get a great view.

There are several benefits to sitting in front, and you should consider these the next time you're attending an event. =) Here are a few of my reasons:

• People who sit in front tend to be really interested in the topic. I can't count the number of great conversations I've had with people, just chatting with people around me before the start of an event. (Yes, I still think of myself as shy. I figure that other people are shy too, so talking helps people settle into the event a bit.)

• I'll probably think of a question for the talk, and it's easier for organizers to see me and hand me a microphone if I'm near the front or near an aisle--or sitting front-and-center, a real keener!

• I can help influence the energy of a speaker or of the room. I love actively listening to sessions--being interested and enthusiastic, reacting to what's being said, keeping my body language open and encouraging. As a speaker, I also really appreciate it when other people bring a lot of energy to the room, too.

Story: I was going down on an escalator at a research conference and a guy on the other escalator waved to me and told me (quickly) that he wanted to talk to me. After he doubled back and met me at the other end of the escalator, he explained that he was giving another session soon (I told him it was one of the ones I was looking forward to). He asked me to sit in the front row. I was surprised by this request, so I asked him about it. He told me that he really appreciated my energy and enthusiasm, and that I made it easier for him to speak! So next time you're in the audience, think about the fact that you can influence the speaker, and through the speaker, the entire mood of the room. =)

• I'm in a good position to overhear interesting questions asked after the session. =) I like standing on the periphery of the crowd that usually gathers around speakers after their sessions. People ask all sorts of interesting questions, and I learn quite a lot from what people are interested in and how the speakers respond.

• Sitting in front keeps me more engaged. I'm not just looking at the slides or hearing a voice come out of the speaker system. I've got a full view of what's going on. Hey, if you had rink-side tickets to a game, wouldn't you take them too? =)

Conscious competence and knowledge sharing

We talked about the Johari window, or how learners progress through:

1. unconscious incompetence - when you don't know what you don't know 2. conscious incompetence - when you know that you don't know 3. conscious competence - when you need to pay attention in order to do something, and 4. unconscious competence - when you can do something without thinking

Jeff shared how he had used this concept when applying for the position he currently has. The discussion reminded me of the challenge of expertise: it's difficult for experts to share what they've learned because they're no longer conscious of what they do and they find it hard to explain all the steps. (Try explaining something you know how to do to a five-year-old.) When you're unconsciously competent in something, it's

Page 283: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

difficult for you to teach it to other people because you don't think about all the things you do in order to achieve a result. People can still learn by observing you, and if you think about things and consciously break them into smaller steps, you can still teach other people, but it takes effort.

This discussion reminded me of one of the things I recommend to organizations interested in blogging and other forms of knowledge sharing. People are often interested in these tools as a way of sharing expertise, and they hope that they can get subject matter experts to blog or contribute to a wiki. I think that a much more practical and effective way to approach this, though, is to encourage learners to share what they're learning. Not only do they get the immediate personal benefits of understanding topics more clearly as they take notes and find ways to explain things, but they also help other people learn and build their own reputations at the same time. Get the newbies to do the sharing, with subject matter experts reviewing things for accuracy and clarity. Everyone will learn more. Going back to the Johari window - you're enabling the consciously competent to teach the consciously incompetent who want to learn, and in the process, you help everyone move forward.

Tied in with that idea of knowledge sharing, then, is the reflective practice of blogging or writing what you're doing, how you're doing it, and how you can do things better. That conscious, continuous attention to improving competence is one of the key effects that regular, intentional blogging (or wiki-ing, or whatever else) has on a person's skills. Jeff was initially discouraged by the thought of trying to find an hour each day for blogging, but maybe if he spent an hour each week telling stories into a voice recorder (or his Blackberry) or writing down his weekly review, he'll start enjoying the benefits of this approach.

The conversation also reminded me of another reflection I posted: "If you can't, do. If you can, teach." I shared with them how I'm always trying to teach myself out of a job, sharing as much as I can of my conscious and unconscious competencies so that other people can learn and so that I free up more of my time to focus on things I don't know how to teach yet. For some people, this is a scary thought because job security means differentiating yourself through knowledge or expertise, not trying to bring everyone up to your level. For me, I think that greater security and fulfillment comes from helping lots of people grow, and because I also get to practice my ability to learn and share, I'll have plenty of things to keep me busy. =) I create more value and I have more leverage on that value by sharing with others, and that means more opportunities flow to me and other people as well.

Speaking of conscious competence - it's really cool that Jeff consciously develops his social networking skills. He's curious about the way I do it, too. I've blogged a fair bit about social networking, and I'll keep posting my notes as we all learn more.

Plenty of other notes about technology adoption, social bridgebuilding, storytelling, and things like that, but I need to work on some other stuff first. More to follow!

More random notes from last night's conversation

http://sachachua.com/wp/2008/11/29/more-random-notes-from-last-nights-conversation/Sat, 29 Nov 2008 13:42:31 +0000

• Spam haiku - Jeff has the book • Richard Florida - I hadn't recognized the name, but I remember reading The Rise of the Creative

Class. • Jeff - Story about Bell landline problems, difficulty with system, running outside and talking to a Bell

technician who helped fix it • Gregory told us about this London restaurant that projects dishes and uses a touchscreen table. • Writing and reflection • Diffusion of innovations as applied to career resources

Page 284: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Brand and clarity

Notes from Rahaf Harfoush's talk on the use of social media in Obama's campaign

http://sachachua.com/wp/2008/11/29/notes-from-rahaf-harfoushs-talk-on-the-use-of-social-media-in-obamas-campaign/Sat, 29 Nov 2008 14:39:27 +0000

• Collaborated on Grown Up Digital. Was working on chapter about politics when she was convinced to join campaign. Inspired by watching Yes We Can video (user-generated).

• Mybo - tools for communities • Not about new media - key innovations were political strategy, philosophy 1. Fifty State Strategy -

story about Arizona, John McCain's home state - 1000 volunteers on Day 1 2. Disaffected Center - not just party 3. Small donations New media was just a reflection of the underlying strategies and philosophies

• Everything was networked and cross-linked: Video went out on YouTube, posted to Facebook/Myspace/etc., and so on. Always had a linkback and a Donate button.

• Hypersegmented e-mail - geography, issues selected, donation history. Donation history key to respecting relationship.

• SMS campaign - inform of events, donate time, get feedback. Cellphone very different tone and feel. Great way to keep in touch, and offline connection helped drive offline action. Sent information on polls, voter protection, updates.

• iPhone application sheer genius, I think. =) Gave people opportunities to get involved. Call friends - addressbook sorted by battlefield priority, gave you report screen after the call. GPS - find field office. Issues - offline application that included talking points for all the issues; turned every iPohen into a campaign office.

• Numbers: MyBO - 2 million profiles, 35,000 volunteer groups, including niche ones (D&D Group for Obama). 400k blog posts, 200k offline events. Funny Halloween event: one woman organized a group of friends to go out dressed up as voting machines, asking people to vote. Also, "Yes Wii Can" - person organized a Wii party + voter registration party at home. Shows creativity and innovation.

• Activity index - 10 levels based on events hosted, events attended, calls made, doors knocked, blog posts, amount from other donors, groups joined, etc. Controlled access to resources. Allowed organizers to contact active promoters / community organizers without pressuring participants.

• Personal fundraising page key. People donate to friends more than charities. This made things personal.

• Phone campaign - Script with reporting buttons built in for capturing answers. Canvassing - map. • Worried during election - average waiting time 6.5 hours in some places, unexpected difficulties with

polling machines

KEY PHILOSOPHIES: 1. Give New Media a seat at the table. - Don't just delegate it to an intern or a junior associate. See it as an execution tool. Make the investment. Examples: Wells Fargo, Dell. 2. Tools are useless without a blueprint. - Half of social media campaigns fail because there's no mutual purpose - fit between community and company. No off the shelf cookie cutter solution. Find the sweet spot between core vision and agility. Message clear, vision clear, interpretation creative. 3. Know the lay of the land. Map out major players, bloggers, evangelists, critics, competitors. Find the conversations. Pay attention to fit. Example: Fedex Facebook attachment application. 4. Build relationships. Social etiquette, cocktail parties versus That Guy. Listen. Be authentic. Example: Comcast turnaround, comcastcares. 5. Call to action. Campaign always drove towards offline action. Asked a lot of their volunteers. Example: Nike community asked to spend time around the brand. Expectations were clear. 6. Give up control. Story about Yes We Carved pumpkin-carving community. Creative and fun. Empower brand ambassadors - they're where you

Page 285: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

can't be. Embrace cocreation. Let your brand evolve. Accept other people's work. Co-creation really strengthened people's personal connection to campaign. Next steps, making things even better? - Keep people engaged on issues they care about. Would've liked to make even better use of Twitter. People were curious about insider moments - more blogs, videos, etc. Key difference: social media as part of life, not something extra.

December 2008

Weekly review: Week ending November 30, 2008

http://sachachua.com/wp/2008/12/01/weekly-review-week-ending-november-30-2008/Mon, 01 Dec 2008 16:30:47 +0000Work:

• Submitted my business results for the year (Personal Business Commitments) • Participated on a Gen Y and Government 2.0 panel at the City of Toronto's Web 2.0 Summit. Lots of

great conversations. • Attended Rahaf Harfoush's talk on social media and the Obama campaign. Chatted with Jeff

Muzzerrall, Gregory Lam and Fiona Cunningham over tea. • Finished my assigned tasks (except for wontfixes) for the Drupal-based microsite project we're

working on. • Got mysite and other modules working. Whee! • Gave release engineer detailed notes, implementation sketch, sample scripts for fancy Drupal

deployment system. ;) • Set up rudimentary deployment script.

Life:

• Contacted a bunch of people met at various events. • Adopted a new cat from Toronto Animal Services! He's _adorable._ • Started sewing a lightweight gray wool vest. • Hiked with W- and J- a bit more than 7 km near Caledon Hills. • Sent out invitations for storytelling soiree, hooray! • Submitted passport renewal application. • Submitted Philippine police clearance application.

Next week:

• Work: Extend mysite to work with Organic Groups nodes, get site ready for testing. • Work: Get ready for Web 2.0 for Biz community call with yearly summary. • Pick up notarized police clearance application from Philippine embassy and send it home for

processing. • Apply for Japan police clearance again. • Take pictures of cats. • Finish vest. • Start working on annual letter. • Host dinner party.

Page 286: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Notes from conversations: Ushnish Sengupta, consulting

http://sachachua.com/wp/2008/12/02/notes-from-conversations-ushnish-sengupta-consulting/Tue, 02 Dec 2008 21:43:30 +0000Ushnish Sengupta was interested in exploring social media consulting. He picked my brains over hot chocolate at the Bluestar Cafe. Here are some rough notes from that conversation:

• The first tip I gave him was to blog. I think it's a good idea for consultants to keep a blog because it's an easy and nearly-free way to help establish credibility and build connections. The blog can contain success stories, articles, lessons learned, announcements of upcoming events, tips, tidbits, and other pieces of information that can help both potential and existing clients. Besides, it's awfully hard to do social media consulting if you're not immersed in the space and you don't have a presence.

• Business cards: I told him about putting pictures and interesting conversation hooks on business cards, showing him mine as an example.

• Ushnish was interested in potentially getting a PhD looking at consulting services and similar areas. I recommended that he check out services science. A recent conference we both attended (CASCON) had a number of sessions about the topic, so I suggested reviewing the proceedings to find people and topics of potential interest. I also recommended that he get in touch with people like Kelly Lyons - she's currently doing research in this field.

• Twitter backchannel: He asked me how the City of Toronto's Web 2.0 Summit went. I told him about the interesting conversations that happened in real life and on the Twitter backchannel, and suggested that the next time he's at an event, he should find the tag that people are using and tune in to search.twitter.com for some lively conversation.

• Professional networking: He asked me which professional social networks I'm on. I told him that I'm active on LinkedIn and I use it to connect with people so that I can find out about changes in e-mail addresses and positions. He asked me if I was on Plaxo. I told him that I never got into Plaxo because it started off with a bad value-proposition for people who entered their data and that it had been fairly spammy. I haven't looked into Plaxo Pulse in detail, but LinkedIn and my personal addressbook handles most of my needs.

• Multiple networks: He asked me about being on multiple networks and how networks become popular and then fade away. The key things I shared with him were that ideas and skills tend to be transferrable between networks, and that an external profile such as a personal site or blog is important because it ties all the networks together. I also told him about something I picked up from Rahaf Harfoush's talk on the Obama campaign: produce a piece of content and then distribute it through different channels.

• Partnership: Ushnish asked me if I preferred to work with people I know well or if I preferred to work alone. I told him that I definitely prefer to work with other people because I learn much more in the process. I also told him that I actually enjoy working with people I don't know that well yet, because it gives me an opportunity to develop a new relationship and spread the skills. If I'm asked to give a presentation, I often look for ways to enable other people to give the presentation, perhaps with a little coaching from me. I want other people to develop wonderful skills, too.

• Teaching as I learn: The point on partnership segued into a discussion of how useful, fulfilling, and effective it is to try to teach everything I know how to do. I recapped some of the points from "If you can, teach; If you can't teach, do".

• Event management: I told him that I'm interested in learning more about hosting external events in 2009. Alex Sirota does a lot of events for the New Path Network (which Ushnish belongs to), so I might see if I can use some of those events as models.

• Address book: Ushnish was curious about how I manage my network. I told him about my wonderful addressbook setup (automatically tracks who I send mail to, automatically inserts notes into my mail), and the visualization improvements I'd like to make. I also told him of my plans to try porting some of these ideas to Drupal so that other people can experiment with them.

• Social media and change management: I told him about the spectrum of social media consulting, and that organizational change plays a large part in it.

Page 287: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Rough notes: We ended the conversation with a homework assignment: he's supposed to blog the lecture he was also going to that day, and perhaps the notes from the conversation as well. I reassured him that rough notes are fine, and that he'll make things clearer and clearer as he writes about them again and again.

What did I learn?

• I seem to have learned something about social media consulting after all. =) Hooray! I need to package that into some kind of internal blog post and presentation so that my coworkers can make the most of it.

• I should find a way to package up these social networking tips into a blog post, a presentation, and maybe an event.

• In an alternate future, I could probably keep myself very busy building and selling tools for making all of these things easier...

One of Canada's Most Influential Women in Social Media?

http://sachachua.com/wp/2008/12/02/one-of-canadas-most-influential-women-in-social-media/Tue, 02 Dec 2008 22:03:06 +0000I've been nominated as one of Canada's Most Influential Women in Social Media in a poll run by Dave Forde, whom I know from the Toronto technology scene. It's a little odd thinking about that, because I'm nowhere near the likes of Amber MacArthur (popular geek television / videocasting personality), Leesa Barnes (who made it onto a worldwide list of female social media luminaries), and Sandy Kemsley (prolific Enterprise 2.0 blogger well-known for her comprehensive live-blogged conference notes). Me? I'm a recent hire figuring things out and posting notes along the way. =) I've stumbled across influence by being in the right place at the right time, maybe. My story is now woven into IBM's story about social media, and we're helping other large companies figure things out as well. I've given numerous presentations helping people figure out what Web 2.0 means for them and for their company, facilitated workshops for generating, developing and prioritizing initiatives, and done a fair bit of hand-holding to get people over their concerns. All of that is pretty cool, come to think of it, but what I'd like to do is make it possible for other people to do even cooler things. Thinking about this poll on Canada's most influential women in social media, I realized that I didn't consider myself any way equal to all these role models I have here and around the world. =) I also realized that I had a pretty good idea of a future me that would feel perhaps at home in that list. So here's what I think "influential" looks like for me:

• I would organize regular events that brought together interesting people and helped people connect. These events would include workshops on social networking, storytelling and presentations, quarter-life crises, lifehacking and productivity, happiness, geek growth, personal finance, and other topics I'm interested in or passionate about.

• I would also build a bit of infrastructure that would help transform the networking aspects of these events: sign-up pages with more details, aggregators to bring together people's blog posts, business card prints and other in-person networking aids, active matchmaking both online and offline, and so on.

• I would be one of those people that people mention their projects and ideas to in the off chance that I could recommend people to talk to, books to read, and sites to check out--because I would. =) In order to do this, I'd find ways to more effectively capture information to support a somewhat fuzzy associative memory. (It's _so_ frustrating to know that you've seen something before that people will like, but not be able to find it again!)

• I would help lots of people to figure out what their passion is, deepen their skills, and share the results with lots of people through presentations, new and existing businesses, and other good things. I'd do that by asking people, helping them connect and make things happen, and helping them find a forum or opportunity where they can talk to other people.

Page 288: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• I would have a big archive of things I've thought about and shared with others so that I can pull useful resources out and give them to people.

• I would build systems to make it possible for other people to do this kind of awesomeness as well. =)

So that's what "influential" looks like to me. I'm not there yet, but I think I can get there. =) I can learn how to hold external events, and gradually get into the swing of it. I can keep blogging and summarizing interesting resources, gradually refining my collection of resources. I can keep tweaking my addressbook, and someday I'll build systems to help other people try this out. =) Stay tuned.

Drupal rockitude

http://sachachua.com/wp/2008/12/04/drupal-rockitude/Thu, 04 Dec 2008 22:45:21 +0000

I joined my current Drupal project two weeks ago after documenting and wrapping up my other Drupal-based project (which I'm happy to report is chugging along quite nicely without me). Since then I'd been quickly going through my task list. I've also been poaching other people's tasks, such as the configurable group home pages and the deployment scripts. As I told my cat, I'm having fun rocking Drupal. ;)

Today, one of my project team members demonstrated the site to members of the other consulting team. He wasn't sure if the reception would be neutral or even hostile. He walked through the various features we'd built in two weeks of work, a short period of time that included the numerous issues other people encountered and my ramp-up time as a new member of the team.

One consultant from the other team couldn't help but say, "Wow." And the rest of the team really liked it, too!

So I guess I can count that as my first "melting a tough client" story. =)

What worked well?

• Even though I was new to the team, my team members gave me plenty of latitude in building tools and reorganizing things. There were a couple of changes that we needed to discuss, but usually, the practices I suggested made things a bit easier and the changes weren't difficult to get used to.

• I set up my local development environment (my uber-tricked-out Emacs) to make it easy for me to quickly shift between files in different branches of code, look up definitions of functions, and re-build the site.

• As a lazy programmer, it's in my best interest to automate as much as I can. I kept tweaking the build process until I could get it to work without manual intervention, and I plugged it into the web-based deployment script I'd written for my previous project.

• I reused as much as I could, relying on a combination of grep, var_dump, printf, tags, and asking coworkers what's responsible for what.

• Also, starting work at 5:15 AM turns out to be pretty good for me. I get almost a full day of work into the morning, I can spend a little time in the afternoon attending to things that require less creative energy, and I can even take a short catnap in the afternoon sun (complete with purring cat!).

I'm looking forward to tidying this site up, and I'm sure I'll have lots of fun getting the next site off the ground, too!

Page 289: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Drupal, Makefiles: save time, make awesome

http://sachachua.com/wp/2008/12/04/drupal-whats-in-my-makefile/Thu, 04 Dec 2008 23:05:13 +0000One day I'll post a generalized version of the Makefile that makes my Drupal life so much easier, but in the meantime, here's the general structure I use:

1. Lots of configuration settings:

DB Database name for Drupal site

DB_USER Database user for Drupal site

DB_PASSWORD Database user password for Drupal site

ROOT_DB_PASSWORD Root MySQL password, used to drop and recreate the database, and grant permissions

SVN Subversion branch for source code control

SVN_USER Subversion user name

SVN_PASSWORD Subversion password

SITE_DOMAIN Particularly useful when working with sites that use Domain Access, but handy even with other sites because of BASE_PATH

SRC_DIR Location of source code, needed for Drush

DRUSH Drush command line, just in case I want to fiddle with it

DB_PREFIX Database prefix, for make clearcache

BASE_PATH Base URL

DRUSH_GROUPRE Regular expression to match against simpletests using my modified Drush_simpletest that lets me run all groups of tests matching a regular expression

2. An include statement

-include *.mkThis is really useful. This lets you override the variables using a file like local.mk, dropped into your current directory and kept out of your source code control system. I use this to make my Makefile just Do The Right Thing when it's in different directories or on different servers. Do not forget to tweak your included file (or make sure there is one) if you need different configuration settings.

3. Lots of targets:

backupUses mysqldump to back up the database.

restoreDrops the database and restores it from the backup.

clean

Page 290: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Drops the database install

Calls the site's install.php with the appropriate profile. cron

Calls the site's cron.php mysql

Starts a MySQL connection to the Drupal database. I don't have to remember what the database name is or what the connection details are, hooray!

clearcacheClears the {cache}, {cache_menu}, {cache_views}, {cache_content}, {cache_filter}, and {cache_page} tables

revertHits the panic button and reverts my tree. (because svn revert . -R is too long)

tagsRegenerate the TAGS file that lets me find function definitions really quickly

testUse Drush to run all of my simpletest functional tests for this project

Sometimes I'll have an "rsync" target to deploy files to a server and a "doc" target to regenerate my low-level documentation using doxygen, too.

This Makefile is seriously cool and seriously time-saving because it means that no matter which project, branch, directory, or server I'm working on, I have a consistent set of commands for the most common things I need to do. The less time I spend thinking about fiddly administrative tasks, the more time I can enjoy in the coding zone.

This is also one of the reasons why Drupal development is _so_ much easier on Linux or other Unix-ish systems, or even Microsoft Windows with the Cygwin environment. If you see yourself doing a fair bit of Drupal work, it's well worth investing the time in setting up a virtual machine or a second partition, learning a new operating system, and re-setting-up your development environment.

make awesome. =)

What's in your Makefile, or what other tricks do you use to increase your developer happiness?

Let's talk about passion

http://sachachua.com/wp/2008/12/07/lets-talk-about-passion/Mon, 08 Dec 2008 00:51:46 +0000Of all the small-talk questions people usually ask, the one I avoid asking is "What do you do?" I'm not interested in people's job titles, which rarely lead to conversations. You know how it goes: "What do you do?" "I'm an IT consultant." "Oh." If you're particularly diligent, you might ask a number of questions like "What kind of consulting?" "Software." It's like pulling teeth, and it doesn't tell me anything about what lights people up. When people ask me, "What do you do?", I often answer that with something along the lines of "My passion is helping people connect and collaborate," followed by a brief description of what I do and maybe a recent story showing how I work. I picked up that tip from Make Your Contacts Count, where the authors advised people to introduce themselves using the "best-test" structure: teach people what you're best at, and show them a test of that. But I usually like preempting the question of "What do you do?" with a question of my own: "What's your passion?" That makes people stop and think. If I know someone already, I ask, "What have you been excited about lately?" It's much better than "How are you?" because the other person actually thinks about the answer instead of just tossing off the customary "Good. How are you?" Mireille Massue sent me this link to 25 Passion-Finding Questions to Invite Someone to Talk about What

Page 291: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

They Love. The list has lots of variants on the questions I like asking. Pick a couple of those questions and use them in your next conversation, and see how much more interesting things get!

The benefits of writing

http://sachachua.com/wp/2008/12/07/the-benefits-of-writing/Mon, 08 Dec 2008 01:46:34 +0000Jeff Muzzerall sent me this paper on the Benefits of Writing: Health and Productivity. The paper summarizes other research showing, among other things, that people who write about their long-term goals and their best possible selves become happier and more satisfied than people who write about trivial and short-term topics. Might be a good reason to blog about what your ideal life would be like... =) If everything went really, really well, what would life look like five years from now, when I'm 30? Life: I have a wonderful relationship with W- and J- and other members of the family, full of experiences and laughter and deep moments. I'm close to my family and friends back in the Philippines, too, and we regularly chat over the phone, exchange stories and pictures, and visit. I can sew clothes I enjoy wearing, and I can take portraits that people like. I'll have finally finished a book. =) I have plenty of friends that I've brought together so that they can meet my other friends, and they'll also have formed good friendships among themselves. I'm always meeting people and connecting them with other people and ideas for making things happen. Work: Whether I'm working at a large company or a small one, I'm helping people connect and collaborate. I divide my time between helping people connect, creating tools to support that, and teaching lots of people how to do what I do (or even better).

Weekly review: Week ending Dec 7

http://sachachua.com/wp/2008/12/07/weekly-review-week-ending-dec-7/Mon, 08 Dec 2008 02:19:47 +0000Last week:

• Work: Totally rocked with Drupal and Linux. =) • Work: Set up next two conference calls for Web 2.0 for Business community within IBM. • Picked up Philippine police clearance form. • Almost finished vest, but realized the front has some fit problems. • Mindmapped annual letter topics. • Hosted dinner party - yay! Lots of fun. Great conversations. Yummy chili and curry, too.

Next week:

• Work: Testing, cleaning up development • Sketch annual letter, send to my mom. • Catch up on e-mail. • Attend a number of holiday events. • Finish pattern for basic dress.

Library shortcuts

http://sachachua.com/wp/2008/12/07/library-shortcuts/Mon, 08 Dec 2008 02:34:05 +0000Matt Price e-mailed me about this wonderful piece of wizardry he added to YubNub (which is kinda like a command line for the Web). He set up the tpl command, which searches the Toronto Public Library. This

Page 292: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

prompted me to finally make YubNub the default handler for my Mozilla Firefox address bar, which you can also do by going to about:config and setting or creating the keyword.URL option to http://yubnub.org/parser/parse?command= This is good stuff, and one of the many reasons why blogging saves me time and lets me hear about all sorts of interesting things. =) Matt, thanks for sharing!

Crazy business idea: videoconferencing event/party spaces =)

http://sachachua.com/wp/2008/12/07/crazy-business-idea-videoconferencing-eventparty-spaces/Mon, 08 Dec 2008 03:19:58 +0000Yes, videoconferencing should be the kind of thing anyone can get working at home, but technical glitches often come up. I think there's a market for at least one company that can set up an event space with a good screen, a computer, a reliable network connection, and a sound system. It beats having lots of people clustered around one laptop and spending most of the time struggling with technical issues. Market: business meetings during the day, globally dispersed families / friends at night and on weekends. Anyone with that kind of business in Manila, please contact my mom. =)

Notes from today's Drupal hacking

http://sachachua.com/wp/2008/12/08/notes-from-todays-drupal-hacking/Mon, 08 Dec 2008 20:24:20 +0000

• Avatar selection/upload during registration: Oddly enough, avatar_selection doesn't handle this. You need the reg_with_pic module, too.

• Shared and per-site file directories: We're segregating uploaded files by microsite, but we want to share some files as well. Hacking the shared path into file.inc is a kludge, but it works. Like so:

--- file.inc   (revision 1046)+++ file.inc   (revision 1589)@@ -66,6 +66,11 @@else if (file_check_location($file_path . '/' . $dest, $file_path)) {return $file_path . '/' . $dest;}+ // Not found, check by going up one more+ else if (file_check_location($file_path . '/' . $dest, $file_path . '/../')) {+   return $file_path . '/' . $dest;+ }+// File not found.return FALSE;}

• Group names with signed-up events: signup.module doesn't make it easy to theme the list of events, so I created my own block based on the code in signup_list_user_signups. To determine the possible group a node came from, I check for the intersection between $node->og_groups and the array keys of $user->og_groups.

• Fixed panes: I couldn't figure out a way to set a block as fixed in Panels 2, but a workaround is to define a custom layout that includes the block in the right place. Here's an example:

/** * Implements hook_panels_layouts */function mymodule_panels_layouts() { $items['my_panel'] = array(

Page 293: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

'title' => t('My Panel Layout'), 'icon' => 'my_panel.png', 'theme' => 'my_panel', 'css' => 'my_panel.css', 'panels' => array( 'top' => t('Top'), 'left' => t('Left'), 'right' => t('Right'), ), ) return $items}

/** * This function uses heredoc notation to make it easier to convert * to a template. */function theme_my_panel($id, $content) { if ($id) { $idstr = " id='$id'" } // Pull in the Organic Groups - 0 block. $group_details = og_block('view', 0) $group_block = < <<EOT <div class="block block-og" id="block-og-0"> <h2 class="title">$group_details[subject]</h2> <div class="content"> $group_details[content] </div> EOT $output = < <<EOT<div class="panel-2col-stacked clear-block panel-display" $idstr> <div class="panel-col-top panel-panel"> <div class="inside">$content[top]</div> </div> <div class="center-wrapper"> <div class="panel-col-first panel-panel"> <div class="inside"> $content[left] </div> </div> <div class="panel-col-last panel-panel"> <div class="inside"> $group_block $content[right] </div> </div> </div> <div class="panel-col-bottom panel-panel"> <div class="inside">$content[bottom]</div> </div>EOT return $output;}

To limit the choices to just that layout, put this in your installation profile:

panels_load_include('common'); $allowed_layouts = new panels_allowed_layouts(); $allowed_layouts->allow_new = TRUE; $allowed_layouts->module_name = 'panels_common';

Page 294: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

$allowed_layouts->allowed_layout_settings = array( 'threecol_33_34_33_stacked' => 0, 'twocol' => 0, 'flexible' => 0, 'threecol_25_50_25' => 0, 'threecol_25_50_25_stacked' => 0, 'onecol' => 0, 'threecol_33_34_33' => 0, 'twocol_stacked' => 0, 'twocol_bricks' => 0, 'my_panel' => 1 ); $allowed_layouts->api_save();

• Organic Groups RSS feed: There's an og_aggregator module, although it doesn't quite fit in neatly with everything else.

• Organic Groups tag cloud: I was surprised to find that this wasn't built in. I ended up defining my own block using a SQL query like this:

if (($node = og_get_group_context()) && node_access('view', $node)) { $result = db_query( 'SELECT COUNT(*) AS count, d.tid, d.name, d.vid FROM {term_data} d INNER JOIN {term_node} n ON (d.tid=n.tid) INNER JOIN {og_ancestry} og ON (og.nid=n.nid) WHERE og.group_nid=%d AND d.vid=0 GROUP BY d.tid, d.name, d.vid ORDER BY count DESC', $node->nid); $steps = 6; $tags = tagadelic_build_weighted_tags($result, $steps); $tags = tagadelic_sort_tags($tags); $output = theme('og_tagadelic_weighted', $node, $tags); $block['content'] = $output; }

og_tagadelic_weighted was a custom theme function that constructed a link to a faceted_search using the og: and taxonomy: filters. I had to hack faceted_search, too. First I needed to enable the og filter, and then I needed to make taxonomy_facets.module recognize free tags (vid=0). Patch for taxonomy_facets.module:

===================================================================--- taxonomy_facets.module (revision 1046)+++ taxonomy_facets.module (revision 1582)@@ -147,6 +147,7 @@ // and create facets from it. if ($found_text = search_query_extract($arg, 'taxonomy')) { $vocabularies = taxonomy_get_vocabularies();+ $vocabularies[0] = 1; // Extract separate facets $paths = explode(',', $found_text); foreach ($paths as $path_index => $tids) {

It's a good thing I can find my way around sparsely-documented code with few or no examples... <laugh>

DrupalCon 2009 abstract: Totally Rocking Your Development Environment

http://sachachua.com/wp/2008/12/10/drupalcon-2009-abstract-totally-rocking-your-development-environment/Wed, 10 Dec 2008 17:30:31 +0000

Page 295: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

PLEASE VOTE FOR MY SESSION! =) Totally Rocking Your Development Environment

Are you a lazy developer? If you aren't, you should be! Find out about editor tricks for Emacs, Vi, and Eclipse that can save you hours and hours of effort and frustration. Learn about browser tips that make it easy to test your sites with different users, track down elusive bugs, and test things out. Develop the virtue of laziness by automating as much as you can with makefiles, the Drupal Shell, regression tests, and other goodies. Share your best tips during this interactive session. Use your new-found free time to rock even more!

I would really like to make it to DrupalCon 2009. The deadline for session submissions is today, and I would hate to miss an opportunity to share what I've learned, meet all sorts of cool folks, and learn even more.

PLEASE VOTE FOR MY SESSION! =)

Why automation matters to me

http://sachachua.com/wp/2008/12/11/why-automation-matters-to-me/Thu, 11 Dec 2008 18:09:58 +0000The release engineer working on our Drupal project is happy. He manages the deployment of four Drupal projects (each with three multisites), and the project I'm on takes the least time to deploy. In the beginning, it took two hours to deploy one set of Drupal multisite because of many manual configuration steps. The team had gotten it down to fifteen minutes thanks to node imports and other time-savers, but it still required someone to click on buttons, type in text, and upload files from the source code tree. Shortly after I joined the team, I started automating as much as I could. This helped me because I could quickly test my configuration from a clean install. I also wrote a web-based deployment script based on the script I'd written for my previous Drupal project. This script made it easy for any team member to deploy a selected revision to the site and reinstall all the microsites. Any time a manual step entered into the installation process, I ruthlessly automated it. Now deployments take a single click (or three, if you want to select a revision other than the latest one), and the build process has shrunk from fifteen minutes to five minutes, with no manual interaction required. So the release engineer is happy, the team's happy, I'm happy, and we can quickly deploy and test new code. I like automating repetitive tasks. It's not just about showing off a clever shell script or Makefile (although my scripts are clever) or about saving myself time (although I do). It's about freeing people up to do better work. One of my best friends was on an internship at a large computer company. A large part of her work involved copying and pasting data between spreadsheets, a task she detested. However, the cost of getting interns to do the work had been lower than the cost of automating the process, so she was assigned to copy and paste the information. If she were more comfortable with programming, she might have automated it herself, but she wasn't familiar enough with Microsoft Excel to do so. So she did the mind-numbing work. When she left her role, no progress had been made on automating the work, and she knew that the next intern would probably also need to copy and paste information manually. I remember hearing her frustration with the kind of work she was doing. I wished I could do something about it. I couldn't, but at least I can automate whatever routine tasks I come across so that people can work more effectively.

Twitter, Whuffie, and Amazing Connections

http://sachachua.com/wp/2008/12/12/twitter-whuffie-and-amazing-connections/Fri, 12 Dec 2008 14:03:00 +0000Thanks to Don Marti's post about a possible business model for Twitter, I came across Tara Hunt's post about Twitter, whuffie (reputation), and the amazing power of connection. In her blog post, she tells the story of how disappointed she was when she was waiting for UPS delivery (which didn't come during the delivery

Page 296: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

window specified), how another friend of hers helped connect with someone in UPS, and how the ending wasn't just happy, it was spectacular. What I like about her post is that she describes the background story and the timeline, showing how one thing leads to another. Check it out. See, Twitter can be awesome. =)

Drupal: Changing module behavior without changing the source code

http://sachachua.com/wp/2008/12/12/drupal-changing-module-behavior-without-changing-the-source-code/Fri, 12 Dec 2008 14:38:13 +0000For the project I'm currently working on, I'm not allowed to make any changes to third-party source code. Yes, I've pointed them to the GPL and Drupal FAQs about being legally allowed to make modifications to a system that will be hosted but not publicly discributed, without being required to contribute those changes back to the community. As much as I would like to release all the modifications back to the community, I also care about proper interpretation of the GPL. I suspect our project restrictions are a combination of wanting to be able to upgrade modules easily and erring on the safe side when it comes to the legal requirements of open source. Anyway. If you're trying to avoid making changes to third-party source code when you're customizing your Drupal system, here are several ways you can alter the module's behavior:

• Hooks: Drupal has an extensive hook system allowing you to alter forms (hook_form_alter), node behavior (hook_nodeapi), user behavior (hook_user), and do other cool things. Read about the hooks in your version of Drupal, and see if any of those hooks can help you wrap code around what you want to modify.

• Theme functions: Well-written Drupal modules use theme functions to make the HTML output easily customizable. Check the function you want Create a custom theme and override the functions in your template.php. For example, if you're using the PHPTemplate engine, you can override a theme_foo_bar(...) method by defining a phptemplate_foo_bar(...) function in your template.php.

• String overrides: If you want to change a displayed string and it's wrapped in t('...') calls (as it should be), use String Overrides to set up an English-to-English translation for that string. If you use the internationalization and localization features of Drupal, you don't need String Overrides - just set up custom English translation for your site.

• Menu overrides: Use this if the module outputs HTML directly, or if you want to change more of the functionality. In your custom module, you can define a menu item with the same path as a menu item defined by a different module. Copy the menu item definition from the other module, then change the callback function and the arguments to point to customized copies of the functions. If you do this, check the {system} table to make sure that your module has a greater weight than the module it's overriding. You may have to duplicate a number of functions in order to get to the menu item you need to change.

• String replacement: If you're desperate, you can use string replacement on the page before it's sent to the browser. Use this only in emergencies, as it's ugly and it wastes all the processing time spent coming up with the string you're going to replace.

• Module replacement: If you're absolutely desperate, make a copy of the module and change all the names so that you remember this is a customized module instead of something that you can cleanly update.

Your Drupal modifications are also under the GPL, so pay attention to the licensing terms. =)

Drupal and return on sharing

http://sachachua.com/wp/2008/12/12/drupal-and-return-on-sharing/Fri, 12 Dec 2008 17:29:59 +0000Another IBMer sent me an instant message out of the blue and introduced himself as a fellow Drupal developer. I noticed from the chat window that he was based in Atlanta, where a number of my other Drupal

Page 297: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

team members are from. He thanked me for sharing so much on the wiki, the peer-to-peer learning knowledge path, and my blog, and he said that he subscribed to my blog. He was interested in setting up a chat with me so that he could get advice on improving his team's development process, and perhaps also getting a Drupal community started at our company. He also told me that he had voted for my abstract submission for DrupalCon09 (Totally Rocking Your Development Environment), and that he hoped to go to DrupalCon. I'm looking forward to chatting with him next week, and setting up more regular knowledge-sharing sessions around Drupal - we all have plenty of tips to share.

Random connections like that show the power of investing a few minutes to share what you know. It usually takes me fifteen minutes to write up a quick Drupal-related post about something I've tried or something I've learned, and the time helps me reflect on what I've done and make sure I understood what I was doing. As I keep investing these fifteen-minute chunks here and there, I accumulate an archive of useful resources. When people stumble across this archive - by searching, by coming across my digital footprints, by checking out a link - the archive gives them a lot of value without any additional effort from me. This is similar to the way investments earn residual income. You put in the work once, and you keep reaping the benefits.

Share what you know. You'll learn a lot in the process, and you'll meet a lot of people.

The economics of entertaining at home

http://sachachua.com/wp/2008/12/13/the-economics-of-entertaining-at-home/Sat, 13 Dec 2008 16:33:55 +0000Last Saturday, we hosted a dinner party at our house. There were eight people, including me and W-. For starters, we served broccoli and cauliflower crudites with blue cheese dip and home-made hummus. For the main course, we served vegetarian chili and chicken curry, accompanied by naan bread and basmati rice. People brought dessert: halva, chocolates, sesame snacks, buns, and all sorts of assorted goodies. The party went from 7:00 to 11:30 or so, and we had tons of fun chatting about storytelling, university advice, and whatever else came to mind. After the party, we had a week of leftovers to feast on. I estimate that we ate just a third of the food prepared. Ingredients bought for the party: $52.81 total Home ingredients used: Approximately $10 (one pack of chickpeas, half a pack of black beans, half a pack of red beans, three packs of curry paste, assorted spices) Estimated cost of party: ~$63 / 3 (as we only ate a third of the food available) = ~$21 total, or ~$3 each plus the cost of whatever desserts people shared, of which we probably ate a fifth. Maybe a total of $4 each, for the whole meal + desserts? I don't think you can find a restaurant in Toronto where people can eat such a spread for $4, or stay for so long and chat with such ease without the waiters trying to drop hints about freeing up tables. ;) Nor could you find a restaurant with such friendly cats, I think - Luke was _such_ a charmer, immediately identifying the cat fans and climbing onto their laps for a good purr. I traded time for these savings, of course, but not as much time as one might expect. Pre-cooking the beans using a pressure cooker took up most of my Friday evening, which was a good time to relax and unwind. Chopping everything up for all the meals took an hour, and cooking both the chili and the curry took another hour and a half - during which I was learning more about cooking, thinking about what was going on in the week, and planning what I wanted to do next. (And listening to bouncy Japanese pop songs...) Time well spent. And the conversation and company? Priceless. If we had more chairs, or found some way to squeeze more people into the house (in an elegant way that doesn't mean some people are privileged enough to sit at the table while everyone else just stands around ;) ),I can easily scale up. It seems that the time and money I spent on the get-together could scale up to 24 people, and even more if we decided to make it a well-organized pot-luck get-together. What would this house look like with 24 people in it? Where would people sit? How would we deal with the coats and shoes? Someday I'll figure that out. =) Tonight I'm attending a dinner get-together for recent hires in my department. The pre-set menu is $30 per person. Now that I look at that sum, I'm thinking, "I could host a quite a dinner party for that amount!" ;)

Page 298: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Cintiq 12WX, OpenSuse 11.0, and much pain and suffering

http://sachachua.com/wp/2008/12/14/cintiq-12wx-opensuse-110-and-much-pain-and-suffering/Sun, 14 Dec 2008 23:02:20 +0000Let that be a lesson to me: Always blog solutions to problems. The cost of doing so is not just time wasted solving things again, but also the frustration of knowing I'd solved the problem before and if I had just taken a few extra minutes to share what I knew... GRR. When I upgraded to OpenSuse 11 on the desktop at home, I forgot to back up my X11 configuration files: the Nvidia-Twinview-Cintiq12WX configuration I'd laboriously pieced together from fragments on the Internet and lots of troubleshooting. ARGH. Anyway, here it is, so I don't lose it again: my xorg.conf:

Section "ServerLayout" Identifier "Layout[all]" Screen 0 "Screen0" 0 0 InputDevice "Keyboard[0]" "CoreKeyboard" InputDevice "Mouse[1]" "CorePointer" InputDevice "stylus" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents" InputDevice "pad" Option "Clone" "off" Option "Xinerama" "off"EndSection

Section "Files" InputDevices "/dev/gpmdata" InputDevices "/dev/input/mice" InputDevices "/dev/input/wacom" FontPath "/usr/share/fonts/misc:unscaled" FontPath "/usr/share/fonts/local" FontPath "/usr/share/fonts/75dpi:unscaled" FontPath "/usr/share/fonts/100dpi:unscaled" FontPath "/usr/share/fonts/Type1" FontPath "/usr/share/fonts/URW" FontPath "/usr/share/fonts/Speedo" FontPath "/usr/share/fonts/PEX" FontPath "/usr/share/fonts/cyrillic" FontPath "/usr/share/fonts/latin2/misc:unscaled" FontPath "/usr/share/fonts/latin2/75dpi:unscaled" FontPath "/usr/share/fonts/latin2/100dpi:unscaled" FontPath "/usr/share/fonts/latin2/Type1" FontPath "/usr/share/fonts/latin7/75dpi:unscaled" FontPath "/usr/share/fonts/baekmuk:unscaled" FontPath "/usr/share/fonts/japanese:unscaled" FontPath "/usr/share/fonts/kwintv" FontPath "/usr/share/fonts/truetype" FontPath "/usr/share/fonts/uni:unscaled" FontPath "/usr/share/fonts/CID" FontPath "/usr/share/fonts/ucs/misc:unscaled" FontPath "/usr/share/fonts/ucs/75dpi:unscaled" FontPath "/usr/share/fonts/ucs/100dpi:unscaled" FontPath "/usr/share/fonts/hellas/misc:unscaled" FontPath "/usr/share/fonts/hellas/75dpi:unscaled" FontPath "/usr/share/fonts/hellas/100dpi:unscaled" FontPath "/usr/share/fonts/hellas/Type1" FontPath "/usr/share/fonts/misc/sgi:unscaled" FontPath "/usr/share/fonts/xtest" FontPath "/opt/kde3/share/fonts"EndSection

Section "Module"

Page 299: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Load "glx" Load "type1" Load "extmod" Load "dbe" Load "freetype" Load "vbe" Load "ddc" Load "i2c" Load "bitmap"EndSection

Section "ServerFlags" Option "AllowMouseOpenFail" "on" Option "Xinerama" "0" Option "AutoAddDevices" "False"EndSection

Section "InputDevice" Identifier "Keyboard[0]" Driver "kbd" Option "Protocol" "Standard" Option "XkbLayout" "us" Option "XkbModel" "microsoftpro" Option "XkbOptions" "ctrl:nocaps" Option "XkbRules" "xfree86"EndSection

Section "InputDevice" Identifier "Mouse[1]" Driver "mouse" Option "Buttons" "9" Option "Device" "/dev/input/mice" Option "Name" "Razer Diamondback Optical Mouse" Option "Protocol" "explorerps/2" Option "Vendor" "Sysp" Option "ZAxisMapping" "4 5"EndSection

Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Mode" "Absolute" Option "Device" "/dev/input/wacom" Option "Type" "cursor" Option "USB" "on" # USB ONLY Option "ScreenNo" "0" Option "TwinView" "horizontal" Option "TVResolution" "1280x800,1600x1200"EndSectionSection "InputDevice" Driver "wacom" Identifier "stylus" Option "Mode" "Absolute" Option "Device" "/dev/input/wacom" Option "Type" "stylus" Option "USB" "on" # USB ONLY Option "ScreenNo" "0" Option "TwinView" "horizontal" Option "TVResolution" "1280x800,1600x1200"EndSectionSection "InputDevice" Driver "wacom" Identifier "eraser"

Page 300: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Option "Device" "/dev/input/wacom" Option "Type" "eraser" Option "USB" "on" # USB ONLY Option "ScreenNo" "0" Option "TwinView" "horizontal" Option "TVResolution" "1280x800,1600x1200"EndSectionSection "InputDevice" Driver "wacom" Identifier "pad" Option "Device" "/dev/input/wacom" Option "Type" "pad" Option "USB" "on" # USB ONLY Option "ScreenNo" "0" Option "TwinView" "horizontal"EndSection

Section "Monitor" Identifier "Monitor1" VendorName "DELL" ModelName "D1626HT" DisplaySize 388 291 HorizSync 30.0 - 96.0 VertRefresh 50.0 - 160.0 Option "dpms"EndSection

Section "Device" Identifier "VideoCard" Driver "nvidia" VendorName "NVidia" BoardName "GeForce 6800 GT" Option "TwinView" "true" Option "MetaModes" "1600x1200,1280x800" Option "SecondMonitorHorizSync" "31-107" Option "SecondMonitorVertRefresh" "50-75" Option "TwinViewOrientation" "LeftOf"EndSection

Section "Screen" Identifier "Screen0" Device "VideoCard" Monitor "Monitor1" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection Option "SecondMonitorHorizSync" "31-107" Option "SecondMonitorVertRefresh" "50-75" Option "TwinViewOrientation" "LeftOf" Option "MetaModes" "1600x1200,1280x800" Option "TwinView" "on"EndSection

Getting back to the xorg.conf above was a bit of a pain. First I needed to get the nvidia drivers working again, which was a matter of adding the repository and downloading the RPMs. Then I needed to get the dual-monitor setup. I was running into all sorts of problems with it, and I must've tried configuring TwinView from scratch at least five times. Then I noticed I had an xorg.conf.twinview in my home directory, so I copied that and used it as a basis. Progress! The screen on the Cintiq started working as a proper screen again.

Page 301: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I had been having problems with the wacomcpl in OpenSuse 11 (Error: unknown device "stylus" or it is currently a core device), so I recompiled the drivers from the Linux Wacom Project. While trying to recompile the driver, I discovered that the kernel-source installed on my system... didn't have the source files. Pfft.

After much poking around, I threw up my hands and downloaded the kernel source code that matched my system, copied the appropriate config file from /boot as the kernel source code directory's .config, and started "make oldconfig; make".

After make had set up the directory tree, I switched back to the linuxwacom drivers and ran "./configure --with-kernel= --enable-wacom --enable-hid --enable-evdev --enable-usbmouse --enable-modver --enable-xsetwacom > log". Fortunately, make and make install proceeded without incident. (After all the false starts I've had today, I was glad at least something worked.)

Then it was a matter of more TwinView poking around to get the tablet confined to just one screen instead of being mapped to two. With a lot of fiddling, I finally got it to work.

Now it's Sunday evening and I'm grumpy from an entire afternoon spent dealing with hardware issues, so I'm in no mood to write our annual updates. I'll probably feel much better after the Chicken Maryland we've planned for dinner, though. =) And after some cat cuddling. Cats are nice and warm.

All that griping aside, I'd still rather use Linux than Microsoft Windows for stuff like this. =)

Weekly report: Week ending Dec 14

http://sachachua.com/wp/2008/12/16/weekly-report-week-ending-dec-14/Tue, 16 Dec 2008 14:57:07 +0000Last week's activities:

• Work: Site moved into user acceptance testing, hooray! Lots of stuff to work on. • Reviewed pictures. Got tablet to work again. Will do annual letter this week. • Caught up on e-mail, a bit. • Attended holiday events. • Did first fitting of basic sloper dress pattern. • Balanced books.

This week:

• Drupal: Clean up development for site. • Attend #hohoto and other holiday events. • Lay out pictures and some text for annual letter. • Get more sleep (maybe cut back on events)... • Get a massage! =D

The Return on Mistakes

http://sachachua.com/wp/2008/12/16/the-return-on-mistakes/Wed, 17 Dec 2008 02:37:23 +0000I still remember the round-eyed awe on a first-year computer science student's face when I walked past the monitor set into his desk, scanned his screen (upside down), pointed out the error, and nudged him in the

Page 302: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

direction of the solution. He had been trying to solve the problem by making small, random changes to his program, and he was amazed at how quickly I identified what was going on. Many of the students in the class were new to programming, and still had a long way to go before they could become comfortable with it. And there I was, figuring things out just by looking at them. It would have been easy for the new students to feel as if they could never do what I do, so I made sure to save some time during that class session for a secret I wanted to share with them. That secret was: If I can figure out a programming problem quickly, it's because I've made so many mistakes before. The more you program, the more intimate you become with error messages. This quote is attributed to Maurice Wilkes:

As soon as we started programming, we found out to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.

M. Wilkes

I like reading, trying things out, and making things up, so I've run into all sorts of errors. I also enjoy helping other people, so I've run into all sorts of other people's errors, too. I haven't encountered every single error yet (my printer has never been on fire). But I've hung out in IRC channels where people help other people troubleshoot in real-time, I've read countless mailing list posts in the process of troubleshooting something I'm working on, and I don't mind rolling up my sleeves and getting my hands into the source code. In the process, I've learned some of the techniques for finding out where problems might lurk.

So that's it. That's the magic, really. Learn. Make mistakes. Figure things out. Help other people figure things out. Then, when weird problems come up, you can say, "Hmm. Hang on. Let me poke around... hmm... ah, there it is, the doohickey was kerfluzzled and a quick xyzzy fixed it." Or something like that.

=)

See, all those hours hanging out on mailing lists, #linuxhelp, and #emacs in university are paying off...

#hohoto conversations

http://sachachua.com/wp/2008/12/17/hohoto-conversations/Wed, 17 Dec 2008 13:04:10 +0000

• I put "Sacha Chua, @sachac, livinganawesomelife.com" on my nametag because putting "Sacha Chua, @sachac, sachachua.com" felt a bit repetitive. It made a number of people smile, although some people asked me if I was no longer working with IBM. I told them I'd gotten an alternate domain name for my blog because it's a bit easier to spell.

• Kristan Uccello pointed me to the red glowsticks near the stage. I stuck one in my hair. That and my white blazer made me slightly easier to spot in the club, although it was still quite, quite packed.

• Ian Irving told me about some Twitter data analysis and visualization he'd like to do. I promised to send him some information about Many Eyes, Wordle, and other visualizations.

• I introduced Elena Yusunov to Patrick Dinnen, who regularly spends some time at the Center for Social Innovation. Elena is interested in social media for nonprofits, and would like to check CSI out. I should get Elena and Jane Zhang together for coffee next week. Also, I should check out those capoeira lessons.

• I told James Walker about the Drupal hacking I'm having a lot of fun with at IBM. =) I also told him about hacklab.to after he mentioned that he occasionally drops by the Center for Social Innovation to hang out and print stuff.

• Saleem Khan mentioned spampoetry.com.

Page 303: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

• Eva Amsen mentioned that she'd heard about me from Jen Dodd and Michael Nielsen, and that she was one of the organizers of SciBarCamp. I think she'd have a great conversation with Elena Yusunov about organizing events and about social media for nonprofits. She also explained the meaning of her Twitter ID, easternblot - it's a biochemist secret handshake thing.

• Sunir Shah asked me if I'd been to Toastmasters lately. I haven't, but I might try exploring some of the downtown clubs with him after he's done with house-hunting.

• James Woods said he'd been to Mauritius, and he found it interesting to hear unexpected people fluently speak French. Gabriel Mansour mentioned that Sameer Vasta had been to Mauritius recently.

• Gabriel Mansour told me about http://cupcakecamp.ca, which looks interesting. I promised to e-mail the details to Greg Frank, who is interested in cooking but doesn't bake much.

• David Crow's 15-month-old daughter is getting quite good at sign language, and tends to string signs together like sentences.

• Adam Schwabe turned out to be the guy doing my usability test this week. We talked about the challenge of finding out what other people are doing when it comes to Web 2.0 at IBM. I promised to send him info about our upcoming Web 2.0 for Business community call, and to connect him with a few people. (I actually talked shop at a party; meep!)

• Brent Ashley's on his third ultra-mobile PC. He handed down the rest to his two daughters. Reminds me of the way my dad goes through Swiss knives...

• Kieran Huggins should definitely look into getting one or two external flashes. They're portable and they really make a difference in pictures. For photography awesomeness, buy glass (lenses) and light (flashes). And practice, of course, which he obligingly let me do.

• Mike Miner runs into all sorts of interesting stories as a producer. He wants to go to Africa or South America.

• Pete Forde's planning a dinner party. I'm looking forward to it! • Bryan Watson can dance swing! That was lots of fun. I may have accidentally stepped on someone's

foot while finding this out, though. • I promised to e-mail David Crow and Jay Goldman about volunteering to help out with events so that

I can learn how to organize external events. • I caught up with or met a whole bunch of other interesting people. =) (Hooray! I've been in Canada

long enough to have old friends!)

... I feel like a gossip columnist with all these names in my blog post. Odd!

Also, I need to port my BBDB-auto-hyperlink-to-people's-blogs-or-websites code over to Org mode. Ah, Emacs...

Leavin' well enough alone

http://sachachua.com/wp/2008/12/17/leavin-well-enough-alone/Thu, 18 Dec 2008 02:00:13 +0000So I've gotten my Linux partition mostly back into working order. I had run out of hard disk space on my main partition. I tried to move files to the other partition. I must've done something terribly wrong, because things started failing. My mail server. My graphical user environment. And - oh no! - my VPN connection back to the IBM network. So I booted into Microsoft Windows to take care of some of the things they wanted for the project and to stick around on instant messaging just in case people started panicking, but let me tell you - it's no fun developing without my tools. Someday I'm going to learn to leave well enough alone. Or make my partitions large enough in the first place. Or look into properly resizing partitions. Actually, nix that leaving well enough alone bit, because if I left well enough alone all the time, I'd never get anywhere. So maybe it's just about being able to dig myself out of problems. I know how to deal with this: I can still work on Windows, and I'll fix my system tomorrow morning when I get into the office.

Page 304: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

Hosting a teleconference call

http://sachachua.com/wp/2008/12/18/hosting-a-teleconference-call/Fri, 19 Dec 2008 00:54:33 +0000Last Wednesday, I hosted a teleconference call for the first time. It was the December community call for IBM's Web 2.0 for Business Community, and I wanted to bring people together and talk about the interesting things people had done over the last year. Before the event, I set up an event post on Beehive (one of our internal social networking platforms), figured out how to send out a Lotus Notes message with a button to add the event to people's calendars (thank you, Bernie Michalik!), and borrowed a teleconference line from Ian McNairn. I also reviewed the comments and updates people had shared on the event post, copying it into a list so that I could summarize things briefly. I was so nervous before the call started. What if I couldn't figure out how to start the teleconference call? What if I couldn't get into the Sametime Unyte session that we were using to provide an e-meeting backchannel? What if I'd made a dreadful mistake on the teleconference invitation? Fortunately, I kept enough of my wits about me to upload the material I'd prepared and start recording the session. When I got everything set up and I saw people joining, I felt so relieved. A number of people joined the call early. We waited for five minutes for more people to call in, but I didn't want to leave that time as dead air, so I kept repeating the call details and adding some notes about Web 2.0 resources I'd heard about. I had a slide with all the call-in information and the (very short) agenda, and I invited people to start introducing themselves in the backchannel. We started the agenda at 11:05 AM EST. I welcomed everyone again (sixth time, perhaps?). I summarized the updates that people posted. People jumped in with more details, questions, and other topics for discussion. What worked well?

• I liked having the call-in information posted on the first slide, to help people orient themselves and reconnect in case they were lost.

• I remembered to repeat the questions from the e-meeting on the phone, because some people weren't connected to the chat room.

• I liked the way that the event post allowed us to start the conversation and get lots of material for the call.

• I really enjoyed connecting the dots during the call, recommending that people check out various resources or talk to other people. I also appreciated how lots of people shared their thoughts, too. It reminded me a little of talk shows with call-in questions. =)

How can I make this even better?

• I can start the session with lots of useful tips on the first slide, to reward people who come in early. • I can show people's pictures so that they get a sense of who else is in the community. • I can ask people to type the interesting bits into the chat, creating instant minutes.

Good stuff!

Emacs, Org, and BBDB: Hyperlinking names to blogs

http://sachachua.com/wp/2008/12/18/emacs-org-and-bbdb-hyperlinking-names-to-blogs/Fri, 19 Dec 2008 02:48:44 +0000

Back when I used Planner for Emacs, I coded some shortcuts to make it easier to write about the people I met and the conversations I had. I used the hippie-expand module to complete names from my Big Brother Database addressbook, and I wrote a function that converted those names into links to people's blogs or websites whenever I published my blog posts as HTML.

I switched to Wordpress for my blog because I got tired of trying to figure out a way to enable comments

Page 305: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

without getting mired in spam-fighting. That meant I could explore other Emacs personal information managers like Org, which I turned into my main task manager. I often used the Wordpress interface to write blog posts. I sometimes used Windows Live Writer to write posts about books (there's a good book review plugin that makes this easy). I also sometimes used Emacs and Org to draft blog posts using Org's friendlier markup, exporting snippets to HTML that I then pasted into my blog posts.

Reading the posts on Planet Emacsen reminded me that my customized configuration was pretty darn sweet. That and the conversation notes I've been blogging lately encouraged me to dust off my configuration files and get them to work under Org. So here's the code:

(defun sacha/org-bbdb-get (path) "Return BBDB record for PATH." (car (bbdb-search (bbdb-records) path path path))) (defun sacha/org-bbdb-export (path desc format) "Create the export version of a BBDB link specified by PATH or DESC. If exporting to HTML, it will be linked to the person's blog, www, or web address. If exporting to LaTeX FORMAT the link will be italicised. In all other cases, it is left unchanged." (cond ((eq format 'html) (let* ((record (sacha/org-bbdb-get path)) url) (setq url (and record (or (bbdb-record-getprop record 'blog) (bbdb-record-getprop record 'www) (bbdb-record-getprop record 'web)))) (if url (format "<a href=\"%s\">%s</a>" url (or desc path)) (format "<em>%s</em>" (or desc path))))) ((eq format 'latex) (format "\\textit{%s}" (or desc path))) (t (or desc path)))) (defadvice org-bbdb-export (around sacha activate) "Override org-bbdb-export." (setq ad-return-value (sacha/org-bbdb-export path desc format))) ;;;_+ Hippie expansion for BBDB; map M-/ to hippie-expand for most fun (add-to-list 'hippie-expand-try-functions-list 'sacha/try-expand-bbdb-annotation) (defun sacha/try-expand-bbdb-annotation (old) "Expand from BBDB. If OLD is non-nil, cycle through other possibilities." (unless old ;; First time, so search through BBDB records for the name (he-init-string (he-dabbrev-beg) (point)) (when (> (length he-search-string) 0) (setq he-expand-list nil) (mapcar (lambda (item) (let ((name (bbdb-record-name item))) (when name (setq he-expand-list (cons (org-make-link-string (org-make-link "bbdb:" name) name) he-expand-list))))) (bbdb-search (bbdb-records) he-search-string he-search-string

Page 306: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

he-search-string nil nil)))) (while (and he-expand-list (or (not (car he-expand-list)) (he-string-member (car he-expand-list) he-tried-table t))) (setq he-expand-list (cdr he-expand-list))) (if (null he-expand-list) (progn (if old (he-reset-string)) nil) (progn (he-substitute-string (car he-expand-list) t) (setq he-expand-list (cdr he-expand-list)) t)))

If you've got Org and BBDB, drop this into your ~/.emacs and fiddle with it. =)

Emacs: Working with multiple source trees

http://sachachua.com/wp/2008/12/19/emacs-working-with-multiple-source-trees/Fri, 19 Dec 2008 20:00:33 +0000

As a developer, I often find myself working with multiple trees of source code. Sometimes, I'm comparing the trunk and the branches. Sometimes, I'm copying ideas from one place to another. Sometimes, I'm working on one project and an urgent defect comes in for a different project. With good development environments such as Eclipse, I'd still need to click on the project or directory in order to change my context, and then use a keyboard shortcut to find the resource in that tree.

With an awesome development environment like my customized Emacs, however, I can easily juggle multiple source trees. Here's the macro I wrote to make setting this up much easier:

(defmacro sacha/file-cache-setup-tree (prefix shortcut directories) "Set up the file-cache tree for PREFIX using the keyboard SHORTCUT.DIRECTORIES should be a list of directory names." `(let ((file-cache-alist nil) (directories ,directories)) (file-cache-clear-cache) (while directories (file-cache-add-directory-using-find (car directories)) (setq directories (cdr directories))) (setq ,(intern (concat "sacha/file-cache-" prefix "-alist")) file-cache-alist) (defun ,(intern (concat "sacha/file-cache-ido-find-" prefix)) () (interactive) (let ((file-cache-alist ,(intern (concat "sacha/file-cache-" prefix "-alist")))) (call-interactively 'file-cache-ido-find-file))) (global-set-key (kbd ,shortcut) (quote ,(intern (concat "sacha/file-cache-ido-find-" prefix))))))

With that, I can use the following to map C-c p to finding files in my personal directories:

(sacha/file-cache-setup-tree "personal" "C-c p" '("/var/www/html/drupal" "~/elisp" "~/personal"))

Page 307: Table of Contents - Sacha Chua · Table of Contents January 2008 ... Blogging Your Way Out of a Job... and into a Career".....37 Mike Moran: Writer, Search Marketing Expert, Distinguished

I've also set up keyboard shortcuts for the other trees I'm working on.

You'll need file-cache, ido, and probably something like this:

(require 'filecache)(require 'ido)(defun file-cache-ido-find-file (file) "Using ido, interactively open file from file cache'.First select a file, matched using ido-switch-buffer against the contentsin `file-cache-alist'. If the file exist in more than onedirectory, select directory. Lastly the file is opened." (interactive (list (file-cache-ido-read "File: " (mapcar (lambda (x) (car x)) file-cache-alist)))) (let* ((record (assoc file file-cache-alist))) (find-file (expand-file-name file (if (= (length record) 2) (car (cdr record)) (file-cache-ido-read (format "Find %s in dir: " file) (cdr record)))))))

(defun file-cache-ido-read (prompt choices) (let ((ido-make-buffer-list-hook (lambda () (setq ido-temp-list choices)))) (ido-read-buffer prompt)))(add-to-list 'file-cache-filter-regexps "docs/html")(add-to-list 'file-cache-filter-regexps "\\.svn-base$")(add-to-list 'file-cache-filter-regexps "\\.dump$")