December 2010

Sometimes you have to work at being happy

December 1, 2010 - Categories: happy

Here’s one of the secrets to happiness: Sometimes you have to work at being happy. This is normal. Preparing makes it easier.

When I find myself getting frustrated or annoyed about something, I make lists. What do I like about it? What can I do to make things better? What alternatives would I consider, and in which situations would those alternatives be better? These things keep me firmly focused on moving forward.

I particularly like the practice of listing what I like. This is a good exercise in gratitude, and it makes it even easier to deal with future hiccups.

For example, before I married W-, I wrote a long list of things I appreciated about him. It’s an incomplete list, but I’m sure it will help us get through future disagreements. I haven’t needed it yet. Ditto for work. Yes, I’ve written down a list of reasons why I like IBM. When I feel like sticking my tongue out at a frustrating problem or process, I review my list–and often find myself adding a few more reasons why.

I like focusing on what I can do to make things better, too. It’s fun. Sometimes I need to ask other people for help, and that’s good practice as well.

It’s easy to forget your reasons when you’re tired or frustrated or annoyed or angry. No point in getting sucked into that spiral, though. Work around your limitations by writing things down before you get into that situation, and focus on productive thoughts when you need to deal with something.

Quantified Self Toronto: Second Meetup

December 2, 2010 - Categories: android, geek, life, quantified, sketches, sketchnotes

I went to last night’s Quantified Self Toronto meetup, a get-together for people who are interested in tracking data about their lives. It was good to hear about people’s projects and questions. I shared what I’d been doing with my new Android phone, too. Here are my notes:

For me, the most interesting point was that of analyzing the data you already have in order to understand your patterns.

Correction: I haven’t just had my phone for three days, I’ve had it for a week. (Ah, time flies when you’re having fun.) I’ve only been tracking activities for three days, though, so I guess that’s why that number got stuck in my brain. =)

What do I track, why do I track it, and how do I track it?

I want to experiment with getting up earlier, and to see if I still get enough sleep. I knew that tracking would help me stick to my alarm clock, like the way that tracking time helps me stay focused. I’ve written about tracking my sleep, so you can check out the detailed screenshots there. So far, I’ve been waking up within a few minutes of 5 AM, getting an average of seven hours of sleep, and feeling reasonably awake and energetic.

I want to capture and share as much as possible. On my computer, Org-mode is working well for me – big text files that I dump notes into, with a bit of structure along the way. I’d like to have a structured way to capture notes on my Android, particularly if I can pull those notes into my Org-mode text files. I haven’t settled on any one application yet, although I’m working on tweaking MobileOrg to fit me better. I’m also playing around with mindmapping (Thinking Space supports Freemind maps), and I’m looking for a good way to keep outlined lists.

I want to track how much time I spend on different activities. This will be useful for calibrating my time estimates, comparing my time with my priorities, and identifying opportunities to improve. This definitely has to be a mobile app, as I do things away from the computer too. Time Recording has been working well for me so far.

I want to track my finances. I do this on my laptop so that I can take advantage of all the wonderful reporting tools that the ledger command-line tool gives me. I’ve figured out a virtual envelope-based system that works for me, and I enjoy balancing my books. I don’t particularly feel the need to use my Android to capture this data, as I try to keep my transactions electronic. The occasional note about cash expenses can be handy, though.

I eventually want to get better at tracking my contacts. I like the way Gist gives me a dashboard sorted by importance or filtered by tags. I want to get to the point of deliberately reaching out to people on a regular schedule.

Hmm…

Monthly review: October 2010

More thoughts on week beginnings: it’s about being proactive

December 3, 2010 - Categories: life, productivity, reflection, sketches

One of the great things about reflecting out loud is that other people share their own insights and make things even clearer. Here’s what Mel said about my post on week beginnings:

I think I’d like to try weekends as week-beginnings this weekend. It’s treating Saturday and Sunday as time to set up for the week ahead, rather than time to recover from whatever the week did to you – it’s a decision to happen to life rather than let life happen to you. And that’s the way I want my week to be. Proactive rather than reactive.

Mel Chua, “Brain-clearing on equilibrium”

That’s it. It’s about taking responsibility for how you want your week to unfold, and investing the time into making it happen. To combine that with another point Mel makes in her post:

So maybe it’s something like this:

  1. Figure out what you want to do.
  2. Figure out what doing that thing is like when you’re good at it, and it’s easy – the ease that comes from skill and practice, the ease that comes with awareness and control.
  3. Figure out how you’re going to get yourself in shape so that the thing you want to do is easy.

… it’s about figuring out what a good week feels like, and setting things up so that you can enjoy that kind of week. What does the difference feel like?

image

For me, a good week involves:

What did I do to prepare for that?

On a bigger scale, the same principle applies. It’s not about escape, it’s about preparation. The two-week staycation W- and I took in August 2009 is a good example. We thought about we wanted life to be like, and we invested time into getting a little bit closer to that vision. We use our long weekends the same way. It’s relaxing and productive. I take breaks so that I can have focused time to step back, reflect, and work on the foundation of my life, the moments of truth, the systems that will pay off a lot over time… and maybe enjoy a new experience or two along the way.

This reflection reminds me of a discussion from my university theology classes: the difference between freedom from and freedom for. Many people think about breaks as freedom from work. I like thinking about them as freedom for awesomeness. =)

Happy holidays, eh!

December 4, 2010 - Categories: sketches

I sent my first batch of Christmas cards two weeks ago, raiding my stash of Philippine-themed Christmas cards. Good thing, too. My sister had apparently been planning to send the exact same design of cards, so she scrambled to find a Dutch card instead.

Ever the geek, W- suggested a Christmas card protocol to eliminate collisions. We’ll focus on Canadian cards, Kathy can do Philippine or Dutch cards, and Ching can do Singaporean cards if she wants.

What does a Canadian Christmas card look like? I was thinking about it, and an idea got stuck in my head. I had fun drawing this:

holidays-hires2

© 2010 Sacha Chua – Creative Commons Attribution Noncommercial License

I’ve just ordered a set of 30 custom Christmas cards from VistaPrint. They’ll arrive too late to send to family and friends in the Philippines, but I can use them for people here. It’s a good experiment in creativity. If they work out, I might make or order more next year.

If you want to print your own set, I could share the hi-res file. =) Disclaimer: I haven’t seen what this looks like as a printed greeting card yet!

Weekly review: Week ending December 3, 2010

December 5, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [X] Drupal: Get project S in shape for Iteration 2 review
    • [X] Drupal: Take on more development responsibilities for project M – now tech lead
    • [-] Prepare standalone presentation on collaboration in the enterprise for Dec 10 launch – Partial; will share my social media in telecoms or social media in retail presentation instead
    • [X] Go through open source process so that I can contribute MobileOrg patches back to community – asked my manager
    • Helped John Conrad with the community toolkit
    • Helped Violanda de Man find Innovation Discovery resources
    • Started working on PDFA for level 4
  • Relationships
    • [X] Prepare food for the week: curry, pasta sauce
    • [X] Take care of things while W- is in crunch mode
    • [X] Set up regular schedule of Skype chats with family
    • [-] Write and send more cards – made Christmas card design, so will wait for Vistaprint to deliver
    • Today: Cook with the Hattoris
  • Life
    • [-] Android: Tweak MobileOrg some more
    • [X] Android: Think about that grocery/inventory app I want to build (like GTracker, but with tweaks)
    • Drafted blog posts for pre-conference kit
    • Experimented with tracking activity
    • Experimented with GTracker for grocery list management
    • Bought more winter things

Plans for next week

  • Work
    • [ ] Drupal: More Drupal work – build tricky parts of project M
    • [ ] Finish blog post for Dec 10 launch
    • [ ] Help with Slideshare IBM network
    • [ ] Write more posts for conference toolkit
    • [ ] Work on PDFA for level 4 IT specialist
    • [ ] Discuss social media and telecoms over lunch
  • Relationships
    • [ ] Help with homework
    • [ ] Buy fleece for making throw
  • Life
    • [ ] Design my own grocery list / tracking app for the Android

Monthly review: November 2010

December 6, 2010 - Categories: monthly

In last month’s review, I wrote:

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

November was great. We got back into the swing of work. I’ve been up to my ears in Drupal, and lovin’ it. We’ve also been tweaking our household routines, and have taken to cooking all of our dinners during the weekend. With lunch portions in the freezer and dinner portions in the fridge, we hardly have to do any cooking during the week – freeing up time to help with homework or take on personal projects. We’re going to keep up with that experiment in December, and then see if we can expand it to two weeks of dinners (some in the freezer) once we free up more freezer space.

It was fun working on my annual review together with my manager, and the notes that I kept helped me flesh things out in detail. He encouraged me to apply for the next level of professional qualifications, too, so I’m going to spend some time working on that.

I took lots of sketchnotes during a virtual conference I attended, and people liked the sketchnotes. =) It was fun drawing them!

I bought an Android phone and learned how to program for it, so I’m looking forward to all sorts of geeking around. I downloaded a few tracking apps, too, and have been experimenting with logging the time I spend on activities.

Social: Progress on this front! We sent out our first batch of Christmas cards as a married couple, yay. I’ve also been better at organizing or attending get-togethers with friends. =) I still haven’t sorted out the rest of the wedding pictures. I’m thinking of just burning a copy and mailing the disc home to my parents. <laugh>

Oh, and we watched Wicked again! =)

What will December look like? Lots of good work, more productivity experiments, maybe some Android hacking, a few social get-togethers, and onwards to another great year.

Reviews:

Writing and blogging:

Work

Sketches

Productivity:

Android:

Other stuff:

Taho

December 7, 2010 - Categories: filipino, philippines

From Sunday:

When I was growing up, we often had taho for breakfast. Manila had many magtataho who roamed the streets each morning, with two aluminum buckets hanging in balance from a pole. One bucket had tofu, and the other had compartments for tapioca pearls and sugar syrup. Yaya would have glasses filled and brought upstairs, where they would wait under crocheted glass-covers for us. Sometimes I lucked out and had two glasses of taho, like when I knew other people had finished breakfast already. Sometimes we had taho for afternoon snacks, too. It was fun watching the vendors work: swiftly scooping the tofu into a glass, spooning tapioca pearls in, swirling the syrup and mixing everything together.

C360_2010-12-05%2011-16-45[1]

There are no taho vendors in this part of Toronto – or perhaps anywhere in Canada. But we can get silken tofu and tapioca pearls at the Lawrence Supermarket on Black Creek Drive. After five years of only having taho on my trips home, I found a recipe on the Internet and made taho for the first time. It’s simple: a syrup of brown sugar and water, tapioca pearls, and warm silken tofu.

It tasted like the quiet mornings of childhood.

Writing about lots of different kinds of things

December 8, 2010 - Categories: blogging, writing
This entry is part 11 of 19 in the series A No-Excuses Guide to Blogging

The first change off the bat is to just start writing more varied material and see what sticks, an approach that I used when I first started blogging back in 2005 but discarded when the broad patterns became more clear, and found myself niched into “personal development”. If I can find a way to write on broad topics but remain topically interesting to a broad audience, that would rock.

David Seah, A restatement of purpose

(See, even people who’ve been blogging since 2004 are working on figuring this out. =) )

How do you balance varied interests and focused niches?

Some people write tightly-focused blogs. They might have many blogs, one blog per niche, each almost a silo of content. This is good for advertising, but it’s harder to keep track of everything and make sure all the blogs are active.

This is my personal blog. I write about lots of different topics. I use categories to help people sift through the entries for what they want to learn more about, and I make it easy for people to view or subscribe to a few categories I tend to write about a lot. Blog aggregators like Planet Drupal and Planet Emacsen pick up categorized entries from my blog, so I don’t have to worry about being off-topic.

The diversity of topics might result in fewer subscribers than, say, a consistent focus on productivity (or code, or whatever) might, but it has also led to all sorts of wonderfully serendipitous conversations from the intersections of interests. I like this. I like being a real person with many facets, not just a focused and filtered personal brand.

So, what’s my workflow like? I write as much as I can in my personal notes – anything I want, even things I probably won’t post for decades. I might write about a topic several times, as there’s always more to understand. I publish one post a day – an experiment in limits that has been working well for me. When I want to organize a category more clearly, like all of my tips on connecting, I make linking posts, knowledge maps, presentations, or documents. (Maybe an e-book someday!)

That’s how I’m currently working. If you write, how do you balance variety and focus? And as a reader, what would make it easier for you to browse this blog and find things you want?

Series Navigation« Personal blog? Don’t worry about your strategyDealing with feeling scattered as a writer »

Making the most of the conference hallway track

December 9, 2010 - Categories: conference, connecting, tips

The informal conversations you have in conference corridors in between sessions can help you learn a lot more and connect with more people than the planned sessions do. Here are some tips to help you make the most of the hallway track.

Sketchnotes: The Science of Blogging: Dan Zarrella (Hubspot)

December 9, 2010 - Categories: blogging, sketchnotes

 

Awesome stuff. Key actions for most blogs: by-lines should list real people, you should have  Facebook and Retweet buttons that indicate # of shares, and you should really, really, really get your analytics going.

science-of-blogging-dan-zarrella[1]

What if sharing knowledge could make a difference between life and death?

December 10, 2010 - Categories: blogging

Are there types of organizations where knowledge sharing is a matter of life and death, and what can we learn from them?

Travis Cord and Harold Jarche write about the social components of military training. Travis shares:

The formal pilot training course consists mainly of an instructor and student flying a specific lesson which the student learned as much as he could in the 1 hour flight.  It is expected that you take the lessons you learned in the air and share it with all your classmates, because there is no way to learn everything in the 1 hour flight.  It was never a good thing if one student knew a critical piece of information and the rest of the class didn’t.  The saying was always “Cooperate and graduate”.

This kind of knowledge sharing is critical in the field, too. It may be a struggle to get people in conservative organizations to share, but there are clear situations where sharing helps others and helps you.

Medicine is similar. Sharing knowledge and effective practices can save lives. In The Checklist Manifesto, Atul Gawande writes :

… the volume and complexity of knowledge today has exceeded our ability as individuals to properly deliver it to people—consistently, correctly, safely.

He describes how distilling shared knowledge into checklists (that include quick conversations between the surgeon, nurses, and anaesthetists!) can prevent missed steps and coordination errors that might have fatal results.

You might think that if you share what you know through a presentation or blog post, you still won’t save a life or make a big difference.

I think of it this way: sharing can help me make a bigger difference than I can on my own. Sharing also helps me helps other people make a bigger difference than they can on their own. Who knows, maybe through the magic of compounding knowledge, I can fit two or more “lives” into this one life that I have. Not as dramatic as saving a life, but it can still help build a better world.

So my question is: what if sharing knowledge could make a difference between a bigger life and a smaller life? My answer is yes, so I do.

Understanding analytics for personal blogs

December 10, 2010 - Categories: blogging

Dan Zarrella’s talk on the science of blogging (#blogsci; my sketchnotes) was an interesting data-backed analysis of what kinds of behaviour were correlated with views, comments, Facebook shares, and Twitter retweets. It inspired me to take a look at my Google Analytics. Here are some highlights, what I think about them, and what you might look at when you’re reviewing your own statistics.

Browser Visits Percentage Worldwide usage share (Nov 2010)
1. Firefox 5,812 44% 23%
2. Chrome 3,396 26% 9%
3. Safari 1,620 12% 6%
4. Internet Explorer 1,414 11% 58%

Browsers and operating systems can give you a clue about what people are like. For the top four browsers people use, non-mainstream browsers are twice as popular as they would be considering the whole Internet. We’re definitely geeky over here.  I used to see a lot of browsing from Emacs w3m, which is why I looked into source-ordered stylesheets and I minimized the need for Javascript. Looks like people have shifted (or have changed their user agents).

49% of visits came from people on Microsoft Windows, 24% from Linux, and 19% from Macs. Hi to the iPhone, iPad, Android, iPod, SunOS (really? cool!), Blackberry, *BSD, UNIX, and Symbian, and Playstation users, too!

Take a look at your visitor statistics to see what people are using. Then you can decide if the average screen resolution will let you play with a wider layout, if you can take advantage of Flash, and so on.

Looking at your most popular pages can tell you what people want to read about. The most popular pages in November were my blog homepage, a blog post from 2008 on outlining your notes with Org, my Emacs-related posts, and a post on recording ledger entries with org-capture. Orgmode.org is the top referring site, beating Twitter, Facebook, EmacsWiki, and Drupal.org. Emacs rules. ;)

Use your popular pages list to learn more about what you’re currently doing well, and do even better at it. If you’re surprised by the results because your favourite pages aren’t on it, look for ways to make it easier for people to find and link to your content.

Your traffic sources tell you if you should focus on links, searches, or direct traffic. On my blog people come in fairly evenly from referring sites, search engines, and direct traffic (28-31% each). Aside from my name, other keyword searches tend to be fairly technical: error messages I’ve written about, and Emacs and Drupal-related questions. Some people come looking for visual notes, though, so that’s fun. =) Other people might get different results.

If you see more searches, you might consider writing more about that topic and working on being easier to link to. If you don’t see a lot of direct traffic to your blog homepage, think about whether your domain is easy to spell. I registered LivingAnAwesomeLife.com and sashachua.com to make it easier for people to get to me, as my name is hard to spell. Domain names are not free, but I think of it as an investment in potential conversations.

Do people return regularly? 40% of visitors in the last month have been to this site before, and they spend twice as long on the site than new visitors do (3 minutes instead of 1.5 minutes). I think that’s encouraging. 112 people have been to this site more than 200 times. (Hi mom!) 20% of visits were after another visit on the same day, so I might look into increasing my posting frequency from once a day to twice a day.

Do you have regular readers, or do people leave and never come back? Think about whether you meet the promise your site makes. All the search engine optimization tricks in the world don’t matter if people come, get disappointed, and leave. Do people come more often than you post? Consider posting more often, so there’s something fresh for people when they come.

Even if you’re writing a personal blog and not doing it as a business, you can learn interesting things from your statistics. Don’t let the numbers stop you from writing about whatever you’re interested in, though. Get that knowledge out of your head and into a form you can work with. And if you’re just starting out and your numbers are small, don’t worry. Everyone starts somewhere. =) Being boring, making missteps, and experimenting with doing  better are all part of the process. Add analytics to your blog, and then start using the data to help you experiment!

Weekly review: Week ending December 10, 2010

December 11, 2010 - Categories: weekly

I fell off the wagon of early-morning wakeups. Ah, Angry Birds! I’m going to try a few things to make it easier to go to bed, such as using a timer to limit potentially engrossing activities, reminding myself of my reasons for going to bed early and staying up late, and making a list of fun and productive things I could be doing instead of playing. Yes, playing a game that W- and J- are also into is fun for social bonding (“How did you get past that level?”), but there’s so much more awesomeness to be done.

From last week’s plans

  • Work
    • [-] Drupal: More Drupal work – build tricky parts of project M
    • [X] Finish blog post for Dec 10 launch
    • [X] Help with Slideshare IBM network
    • [X] Write more posts for conference toolkit
    • [-] Work on PDFA for level 4 IT Specialist
    • [X] Discuss social media and telecom over lunch
    • Helped Jean get started on project S
    • Wrote project onboarding documents
    • Helped Elena get started on project M
    • Sent ITSC details
  • Relationships
    • [X] Help with homework
    • [-] Buy fleece for making throw
    • Had a wonderful cooking session with the Hattoris
  • Life
    • [-] Design my own grocery list / tracking app for the Android – started sketching, wrote some of it
    • Installed timer on Android
    • Experimented with tracking time

Plans for next week

  • Work
    • [ ] Build tough parts of Project M
    • [ ] Continue to refine Project S
    • [ ] Meet Anna Dreyzin for Lunch
    • [ ] Have PDFA mentoring chat
    • [ ] Illustrate networking tips
  • Relationships
    • [ ] Go to gaming night with Linda and Tim
    • [ ] Send more cards
    • [ ] Buy fleece
  • Life
    • [ ] Work on MobileOrg
    • [ ] Experiment with timing

XKCD, tic-tac-toe, and fractal goodness

December 11, 2010 - Categories: geek

image

I was delighted to see an analysis of Tic-tac-toe on XKCD. Here is a small part of the remarkable graph format XKCD uses to show all the possible outcomes. It shows all the possible moves and the optimal responses for games that start with X in the top left corner and O in the center.

Tic-tac-toe is a good game for computer science. The rules are easy to code. Unlike chess, go, or poker, it’s possible to write a simple program that plays the game perfectly. Games finish in at most nine moves, so it’s easy to test. By considering similar states (starting with X in the top left corner is similar to starting with X in the bottom right corner, and so on), you can learn about the tradeoff between efficiency and complexity. You might start out creating a interface for playing Tic-tac-toe, and then move on to building a system that plays it against you.

A few years ago, W- was active in a LEGO group that organized occasional contests. They were thinking about competing to build a robot that could play tic-tac-toe using a marker and paper. I played with the idea of making a similar graph of all the tic-tac-toe possibilities so that I could encode it into a program, but I never considered anything close to this brilliant format.

The compactness of this graph is amazing. The recursive fractal goodness of it all warms the cockles of my geek heart. And yes, on first look, it seems really complicated and confusing, but if you can figure out enough to find the first few steps, everything will fall into place and you’ll be able to follow it all the way down. I love it like I love iterations of the Peano space-filling curve, the Koch snowflake, and the Sierpinski carpet.

What I like even more is the fact that the community has been debugging the graph, discussing optimal strategies that start with non-corner moves, sharing complete computer-drawn graphs and other sources for similar diagrams (including books). Ahh, geekery…

Image excerpt © 2010 Xkcd – Creative Commons Attribution Noncommercial 2.5 License

Happy Holidays, Eh! First edition greeting card giveaway

December 12, 2010 - Categories: drawing, kaizen, sketches

IMG_20101211_160625[1]

Skip my VistaPrint review and go straight to the giveaway

Last week, I thought: hey, what would a Canadian Christmas card look like? After a few quick sketches, I ordered a set of thirty cards from Vistaprint. It was an inexpensive experiment that complemented our ongoing project to be more social. Even if they arrived late, I could always use them for holiday cards next year. Who knows, the experiment might even help me get into making geeky greeting cards and other things.

After a bit of coupon maximization, the 30-card set was CAD 24.47 (with the picture upload and linen upgrade),  shipping cost CAD 11.62, and HST was CAD 4.69, for a total of CAD 40.78. This worked out to CAD 1.36 per card (including shipping) and an incremental card cost of CAD 0.82.

The box arrived this Saturday, even though I chose the lowest-cost shipping method. Yay! Early Christmas indeed.

The print quality is great. The red scarf is vivid. The lines are crisp and clear. The image is centered, too. Next time, I’ll remember to remove the border line before uploading. The linen is a bit lighter-weight than most cardstock I use, but it isn’t floppy, and the pre-creased paper is easy to fold.

VistaPrint includes a small ad on the back of the card: Exclusively from Vistaprint, www.vistaprint.ca. I think you can pay extra to replace the back with your own design, which presumably includes a blank page.

The free photo Christmas cards I ordered weren’t as awesome, but that could be a combination of low-resolution photo files and me being fascinated by the novelty of seeing my drawings printed in full-colour.

Would I order future designs of greeting cards from Vistaprint? We don’t have a colour printer, so I’m happy to order from them if I have a design that needs colour. Alternatively,  I might look into getting an inkjet printer, or trying local print shops. I want to experiment with printing black-and-white designs onto cardstock with our laser printer first, though, because black-and-write drawings can be quite expressive as well. (And I can always break out the crayons!)

I can’t wait to send these out. I’m resisting the temptation to redo some of the other cards in my outbox, and to send seconds to people I’ve already sent cards to. Although I’m going to send second cards to my family, so that they can show it off to others. ;) Whee!

GIVEAWAY

In fact, let’s share the wealth. I’ll give away five cards so you can use them to send to your other friends. Leave a comment on this post suggesting other geeky greeting cards you’d love to see. I’ll pick a random commenter by next Friday (December 17), get the mailing address through e-mail, and send the cards by express mail. No guarantees on when you might get it, but I hope it’ll be in time to send this year! =)

Conference tips: planning your attendance

December 13, 2010 - Categories: conference, connecting, tips

Make the most of your conference by planning which sessions to attend.

Think about your objectives. What do you want to learn? What will be useful in the long-term? If your organization is sending you to the conference, it’s a good idea to confirm your priorities, objectives, and session selections with your manager, and to be clear on what you should bring back from the conference.

Look speakers up. You can often get a sense of how interesting a speaker might be with a quick web search. Does the speaker blog? You’ll get a sense of their speaking style and depth. Does the speaker share presentations on sites like Slideshare? You may even find presentations similar to the one you’re planning to attend, which will help you make better decisions about whether you want to attend the session in person.

Consider the alternatives. Do you want to attend a presentation, or can you learn just as effectively from blog posts or articles? Depending on your learning style, you might find yourself fidgeting as a presenter explains something that you could’ve just read. Look for sessions on topics that haven’t been written about yet, or topics where you have plenty of questions. Keep an eye out for sessions that promise plenty of discussion time instead of taking up the entire session with a lecture. You’ll get more from your conference experience if you can ask questions and learn from other people’s questions.

Coordinate with others. Do you know other people who are planning to go to the conference? Coordinate your schedule with others so that you can maximize your coverage by exchanging notes. If your coworker is attending a session on one topic, you can attend a different one.

Identify Plan Bs. Plan alternative things to do or backup sessions to attend just in case a session finishes early, is rescheduled, or is a bad fit for you. (See my tips on the hallway track at conferences.)

Share your agenda. If you have a blog, consider posting your session choices and objectives there, omitting sensitive information as needed. This might lead to conversations with other people who are interested in the conference, other people who are planning to attend, and speakers who can help you figure out if a session is the right fit for you. Speakers might even modify their sessions based on what they read.

Android life so far

December 14, 2010 - Categories: android, emacs

It’s been three weeks since I bought my Android phone, and I’m having lots of fun hacking it. Here’s what I’m doing with it now:

What am I working on being able to do with my Android?

What am I learning?

Looking at my preliminary stats from a little over two weeks of tracking, I’m pleasantly surprised by how much time I spent on social interaction – more than I thought I did, looking back. I also get a decent amount of walking and other exercise into my schedule. It takes me about 13 minutes to walk to the subway station, and the subway ride to work takes an average of 19 minutes – a little over my estimate of 30 minutes travel time. I’ve been putting that time to good use, listening to podcasts while walking, and writing Christmas cards if I can get a seat.

I might shift our preparation routines around so that I can move more non-computer things into weekday evenings. I want to do more blogging and Android development in my personal time. Even though I take frequent typing breaks to avoid those pangs of incipient RSI, a long day of working on the computer is probably still a bad idea. ;) Most of our weekend preparations involve laundry or cooking. Both are more efficiently batched on the weekends – cheaper electricity, too. Tidying up and folding laundry can be done as a break that separates work from evenings. Drawing might exercise different muscles (and different parts of my brain). Investing time into training speech recognition might pay off, too, although I get self-conscious about dictating when other people are around. <laugh>

Definitely like my Android.

Android Tasker: Setting time limits for Angry Birds and other timesucks

December 15, 2010 - Categories: android

angry-birds

Angry Birds is our new household obsession. J- plays it on her iPod Touch. W- plays it on his Nokia N8. Me, I caved in and installed it on my Android phone. It’s a physics-based puzzle game with amusingly Rube Goldberg-ish levels. I tell myself that playing contributes to social bonds with W- and J-.

image

The game is set up as a long series of puzzles much like the screen above. When you finish a puzzle by destroying all the green pigs, you see one to three stars depending on your score, and you can either replay the level or move on to the next one.

Angry Birds is easy to learn and very engaging. I’m often tempted to check out the next puzzle even when I really should be going to bed. I tried using Tea Timer to give myself five-minute limits, but that took too many taps to set up.

Solution: Use Tasker to automatically set up a five-minute time limit for Angry Birds. That way, the timing is built in. I created a quick task that started whenever I launched Angry Birds, waited five minutes, and then returned me to the home screen. It’s enough to snap me out of the timesuck haze and remind me what I should be doing.

Here’s how:

  1. In Tasker, click on New and set up a profile. For the context, choose Application. Choose the application(s) you want to limit, such as Angry Birds. Click on Done.
  2. Click on New Task. You will be prompted for the task name. You can give the task a name if you want, or leave it anonymous. Click OK.
  3. Click on the + sign to add a new action. Choose Tasker > Wait and set it to the duration you want. Click on Done.
  4. Click on the + sign to add another action. Choose App > Go Home. This should keep the applications running, but return you to the home screen so that you can decide what to do next.

Instead of returning to the home screen, you might want to have Tasker bring up your task list, your calendar, or a note from your saner and more productive self.

image

I really like Tasker. =) It takes some getting used to, but it’s powerful. It’s like being able to defadvice Android applications. defadvice is an Emacs-ism that lets you specify code that runs before, after, or around other code, and it’s one of the reasons why Emacs is amazingly programmable. In addition to context-sensitive settings (like the way I automatically turn WiFi when I leave the house), Tasker lets me specify actions and settings that are active before, after, or around other things on my Android. I wish my apps exposed more functionality to Tasker.

Here’s the XML version, if you want to import it. tasker_angry_birds.prf.xml

<class cl="TaskerData" sr="">
  <class cl="Task" sr="task21">
    <id>21</id>
    <class cl="Action" sr="act1">
      <class cl="IntArg" sr="arg0">
      </class>
      <code>25</code>
    </class>
    <class cl="Action" sr="act0">
      <class cl="IntArg" sr="arg4">
      </class>
      <class cl="IntArg" sr="arg3">
      </class>
      <class cl="IntArg" sr="arg2">
        <val>5</val>
      </class>
      <class cl="IntArg" sr="arg1">
      </class>
      <class cl="IntArg" sr="arg0">
      </class>
      <code>30</code>
    </class>
  </class>
  <class cl="Profile" sr="prof15">
    <nme>Angry birds</nme>
    <id>9999</id>
    <class cl="AppContext" sr="con0" ve="2">
      <label0>Angry Birds</label0>
      <cls0>com.rovio.ka3d.App</cls0>
      <pkg0>com.rovio.angrybirds</pkg0>
    </class>
    <mid0>21</mid0>
  </class>
  <tv>1.0.13m</tv>
</class>

More MobileOrg hacking on the Android

December 16, 2010 - Categories: android, emacs, org

I’ve gotten IBM’s permission to contribute my changes back to the MobileOrg project, yay! (Disclaimer: I’m doing this as myself and not as an employee of IBM, and all the usual disclaimers apply.) Code and issue-tracking at https://github.com/sachac/mobileorg-android.

Before and after:

editbefore[1] image

There are still bugs to work out, but whee!

Test-driven development and happiness

December 17, 2010 - Categories: development, drupal, geek

Me: Happiness is a test suite that passes.
@philiph: Do you practice test-driven development for your happiness?
Me: Why, yes, actually, I do. It gives me a tangible sense of accomplishment and minimizes my mouse-clicking. =)

Developers find their own balance of how much project structure works with them. Some people like seat-of-their-pants coding. Others want detailed architecture diagrams. Me, I’m getting the hang of agile development practices, and I really enjoy using them.

Test-driven development, for example. Yes, I could just plunge ahead and write Drupal code, and I could test it by clicking on buttons and typing into forms. I don’t particularly like using the mouse or doing repetitive actions, so I write tests for functionality and occasionally for web interaction. Tests also mean that  I can check small pieces of functionality before I have to build a web interface. And when something breaks – not if, but when – tests help me narrow down the error.

It’s so satisfying to see the tests pass, too.

There are tests that exercise functionality, and tests that set up test data just the way we like it so that we can demonstrate features or try things out using the web interface. One of my team members showed me a wonderful technique for repeatable, well-structured test data by using a spreadsheet to generate PHP code. I’ve been extending the pattern for other things.

Drupal + Simpletest is awesome. It can’t handle everything, but it makes my Drupal life better. Happy developers write happy code!

Weekly review: Week ending December 18, 2010

December 18, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [X] Build tough parts of Project M
    • [X] Continue to refine Project S
    • [X] Meet Anna Dreyzin for Lunch
    • [X] Have PDFA mentoring chat
    • [-] Illustrate networking tips
    • Sketched master plan for world domination with IBM
  • Relationships
    • [X] Go to gaming night with Linda and Tim
    • [X] Send more cards
    • [-] Buy fleece – didn’t find nice black or white fleece at Fabricland
    • Baked lasagna and brownies, mmm
  • Life
    • [X] Work on MobileOrg
    • [X] Experiment with timing
    • Tracked most of my activities
    • Built much of a BBDB importer for the Android

Plans for next week

  • Work
    • [ ] Work on Project M and Project S
    • [ ] Post year-end reflections
    • [ ] Plan Idea Lab?
    • [ ] Work on networking tips
  • Relationships
    • [ ] Bake more
    • [ ] Send cards
    • [ ] Post year-end update
    • [ ] Attend family get-togethers
  • Life
    • [ ] Get MobileOrg Android patches into mergeable state
    • [ ] Review and revise plan

Time analysis

Dec 10 to Dec 16

Sleep 50 hours ~ 7.1 hours per day
Work 47 hours Some overtime handling non-project requests
Personal 17 hours Android hacking, etc.
Preparation 16 hours
Social 14 hours
Writing 9 hours New posts (not cc:world mail)
Travel 8 hours Includes some time wandering around downtown Toronto
Break 2 hours
Exercise 2 hours

~ 4 hours untracked

More time spent on formal work this week than last week. Good work,
but feeling a bit stretched. Lots of Android hacking during weekends
and one of the evenings. I’m happier when I go to bed early and wake
up early than when I go to bed late and end up hitting snooze in the
morning. Might look into mood tracking so that I can quantify this. It
would be a good opportunity to learn more about what I can add or
subtract from my day.

Reflecting on life as an experiment, gender gaps, and privilege

December 19, 2010 - Categories: quantified, women

Is there a gender gap for self-experimentation? Maybe. I’m not sure. But I can tell you about the things I take for granted that might be making it easier for me than for other people, and how some of the barriers might be correlated with gender.

1. I have the privilege of time. It takes time to reflect. It takes time to track. It takes time to analyze. It takes time to be curious. I know lots of other people struggle with work-life balance issues. W- and I share household responsibilities fairly (if anything, he does more work), so we both have the time to hack. Many women bear a disproportionate burden of household and child-rearing responsibilities, which cuts into the time needed to reflect and experiment.

2. I have the privilege of asking my own questions. It means I can ask my own questions. Many people struggle with questions and goals posed from the outside. People are under pressure to ask themselves: "How can I lose weight?" "How can I get out of debt?" "How can I have more time for myself?" "How can I deal with other people’s expectations?" I’m lucky that I’m not under pressure from these questions, so I can ask my own. Women receive a lot of this self-image policing, well-meant or not.

3. I have the privilege of experimenting with and building tools. I’ve saved up an opportunity fund for things like my smartphone. If I have an idea for something I want to track, I can prototype something using spreadsheets, customize my Emacs, or develop an application for
it. Many people aren’t as comfortable with technology as I am, and many women have less exposure to technology for a variety of reasons.

4. I have the privilege of enjoying math. I like tracking my finances and my time. I like analyzing my trends. I like seeing the numbers and the graphs. Many people are uncomfortable with math, and many women haven’t had opportunities to discover how much fun it can be.

5. I have the privilege of a network. I know people (male and female) who geek, who track, who hack. They inspire and encourage me, and sometimes they help me figure things out. Many women aren’t as connected with other technical people.

6. I have the privilege of confidence. It’s not easy being the odd one out, being one of a few women in a room or in an online space. It helps to know I can hold my own, that no one’s going to patronize me because of my gender or perceived inexperience. Many people don’t have
that experience, and women run into those subtleties more often than men do.

7. I have the privilege of understanding the big picture. To an outsider looking in, self-tracking or self-quantification might seem like a lot of work for little benefit. Why would anyone want to track when they wake up, or how much they spend on things, or what their mood is? It really helps to understand the bigger picture. For example, I track my finances because I like knowing when I can afford to grab an opportunity, and because I want to make sure my spending
lines up with my priorities so that I can live a better life. We geeks often talk about the trees without showing people the forest, so many men and women don’t see why it matters.

Knowing the privileges I take for granted, then, I can think about ways to reduce the barriers that other people run into. It’s hard to solve other people’s work-life integration issues for them, but it
might be possible to inspire people to learn more and grow. It’s hard to fight advertising and culture, but I work on counteracting common messages. It’s hard to get everyone into programming or math, but I might be able to help early adopters with tools and blog posts, and
that can ripple out to others. I can’t help everyone get connected or become confident, but I can share stories and help people come in. I’ll periodically lapse into jargon and geeky delight over obscure details, but I can also share my big picture.

What privileges do you take for granted when it comes to experimentation, self-tracking, technology, or other areas? What can you do to reduce the barriers for others?

Yearly review: 2010

December 20, 2010 - Categories: sketches, yearly

What a year for major life changes!

image imageMy cat Neko and I officially moved to Canada this year when I got my permanent residency in January. After wrestling my unhappy and rather pointy cat into the soft-shell carrier, I stowed her under the seat in front of me. Not a single meow or yowl  out of her during the long flight, although there was a moment in airport security when I had a cat on my head.

imageNeko seems to to be getting along quite fine. She has discovered all the warm spots in the house, and has claimed the top cat position at home even though Luke and Leia are both twice her size.

imageMe, I think I’ve figured out the secret to dealing with winter, too. Flannel pajamas, soft and warm sheets, plenty of thermals, and the renaming of winter to "baking season".   Good thing we biked a lot during the warm months.

I got a promotion and a new manager at work. I’m doing a lot of Drupal development again, which is tons of fun. I’m starting to get the hang of this, I think. There are topics that I feel comfortable being "the expert" on in workshops, although really it’s more like doing the background research and being ready to brainstorm and ask questions.

J-’s in grade 7. The alternative school she’s going to now is interesting because the subjects are integrated, so she’s learning about, say, world hunger in mathematics and geography and all her other subjects. She’s hitting that growth spurt, too. Her feet are bigger than mine, and she’ll grow into them soon enough.

image We picked up and deepened a few interests, too. We all learned woodworking this year, building our own Adirondack chairs. (Yes, even J- built one, with our help!) I’m still amazed that I can have a chair that actually fits me, as most lounge chairs are a bit too long.
The chairs were a great vantage point for viewing our garden, which has  imageyielded lots of ampalaya (bitter melon) for pinakbet, plenty of herbs for pasta sauce, and peas and cherry tomatoes for snacking. We’re looking forward to growing even more fruits, vegetables and herbs in next year’s garden! 

image W- and I got married in Toronto City Hall. To keep things sane and introvert-friendly, we celebrated with just family and a few practically-family friends. Everyone flew in, and it was fantastic having family gathered around the kitchen table. The poor photographer was probably intimidated by all these people with better cameras and tons of photography
experience, but he survived. Tita Gay was a force of nature, practically bringing along a wedding in a suitcase. She surprised us with bubbles and image wedding favours. She and my sister Kathy catered the whole thing, and they conspired with Ching and John to spring a wedding
cake on us. We ate pretty much constantly during the week my family spent in Canada, and really good food too. We just finished the very last lumpia from our stash from Tita Gay and are looking forward to making more.

image Inspired by how my mom and dad built these great friendships over time and distance, we’ve been working on being more social: giving home-made kitchen gifts, writing Christmas cards and letters (hi!), and going to and organizing get-togethers. It’s surprisingly fun! We’re looking forward to learning more about building relationships over time.

What a year!

imageimage 2011 promises to be amazing. We’re looking forward to celebrating Kathy and John’s wedding in the Netherlands and the Philippines. We’re also looking  forward to learning more about woodworking and getting even more out of our garden. Me, I can’t wait to do more writing, drawing, and programming, and I’m excited about opportunities to develop my communication and consulting skills.

Please help us with our project of building relationships. =) How was your year? What are you looking forward to in the next one? What are your stories? You can find our past yearly updates at http://sachachua.com/blog/category/yearly . Looking forward to hearing from you!


Updates from last year:

In last year’s learning plan, I said that my key priorities were:

  1. Share as much as I can at work and in life. I want to share as much as possible so that other people can build on that foundation. At work, this means creating enablement material, blogging, organizing the shared content, and helping communities and individuals.
  2. Learn more about drawing, animation, and video. I want to get even better at thinking things through and communicating what I’m learning. The better I get at sharing, the more I can help people learn.
  3. Continue living an awesome life! I can’t wait to explore the experiment opportunities that are sure to come up. I’m looking forward to further building my relationships with W- and J-, family, friends, communities, and the world, too. And I’m definitely looking forward to bringing my cat to Canada as I complete the permanent residency process. I miss her! =)

Although I didn’t get as much into animation and video as I hoped to, I’ve had fun learning about everything else, and I think I’ll continue to focus on writing, drawing, sharing, and connecting in 2011. =)


Links:

Code and consulting

December 21, 2010 - Categories: geek

@bugsbane observed that I seem to be much happier when I’m deep in code.

It’s not as simple as that, and that’s worth exploring.

I’m more confident with code then with consulting. I’m in my element. If I were a fish, code would be water.

Consulting is still intimidating. I’m starting to be able to ask and answer the right questions, but there’s so much more to learn. And I can’tdon’t yet know how to write unit tests for an organizational process to make sure I’ve got things right. (Thanks for the reminder, Torsten!)

I could probably build a life with awesome code and do well. There is much to learn there too, and it’s a great way to make a scalable difference. I have many role models who show that this works.

But I’m curious about what better collaboration looks like, and what people and organizations could do if we experimented with better ways to work together. If I want to work towards that, consulting skills may be a big help.

There are lots of paths to this destination, and many possible journeys are worthwhile. I could focus on development and build apps, letting others focus on consulting. I could learn about consulting and work with people on implementation. I could switch between one or the other, or bring in something completely new.

But on a list of things that I would do if I had all the time, money, and energy I wanted, coding is there, and consulting isn’t. I enjoy learning about systems. I enjoy building tools. I enjoy hacking. I enjoy answering questions and giving people things that they can use to make their lives better. I know that consulting might be more generally useful skill, enabling me to make bigger changes, but coding lets me make a difference on my own, too. With consulting, you need the cooperation of many others. With code, you can learn more and make things happen almost at your convenience.

I’m so tempted to focus on coding, which I enjoy and which I do well, instead of investing the time in developing consulting skills, which seem a lot fuzzier and harder to learn. But consulting is worth a try, particularly if I can alternate it with projects that give me geek happiness.

What’s coming up in Emacs 24

December 21, 2010 - Categories: emacs

UPDATE: Emacs 24 has not yet been released. Developers can get it from the version control system (git/master, for example). Alpha/nightly builds are available for Windows and Mac OSX. This is still a bleeding-edge version. Expect much breakage, even from popular packages like BBDB.

See C-h n (view-emacs-news) for all the details. Some highlights:

Emacs packages

M-x list-packages to browse and install packages, which are enabled by default. If you’ve installed a number of packages but you don’t want them to all load at startup, customize package-load-list. Not that many packages yet, but I’m sure people will add more.

Emacs themes and user-interface changes

M-x customize-themes lets you choose color themes or create your own. There have also been a number of user-interface cleanups (scrollbars on the right, smoother antialiasing, that sort of stuff), but nothing radical.

Bidirectional support

Big one for international support.

Clipboards

x-select-enabled-clipboard is now true by default, which means Emacs newbies in Linux won’t get confused by an inability to copy and paste between applications.

Version control

With the increasing popularity of distributed version control systems such as bzr, we now have a way to pull updates using M-x vc-update (also known as M-x vc-pull). There’s also a M-x vc-merge command. Looking forward to git support for both of these.

Miscellaneous

There is a create-animated-image function. Interesting.

More reflections on code and consulting

December 22, 2010 - Categories: career, geek, reflection, work

I catch myself talking and writing about consulting as if that’s the way for me to help organizations be more collaborative, as opposed to coding, which is productive and fun but which might have limited effect in terms of changing most people’s experiences of a company. In a way, I’m right. Other people are more likely to seek out and listen to consultants for ideas that they wouldn’t ask an IT specialist or web developer about, and the experiences and skills of consulting would help me understand the complexities better.

Sometimes, when I’m frustrated by internal hurdles to organizational flexibility, I envy other people’s roles. For example, Anna Dreyzin, Luis Suarez, and Rawn Shah get to work on improving IBM and sharing insights full-time. Isn’t that awesome? People tell me I help make a difference too, but it feels small compared to the difference I’d like to make.

But then there’s the joy of coding, the rightness of it, the value of it. Who’s to say that I’m not helping improve the organization’s capabilities, even from here? If I connect, collaborate, and share what I’m learning along the way, then I show what a possible future could be for organizations and the people in them. My work might not directly advance the goal of helping people work together better, but my work might be towards another goal I haven’t recognized and articulated, and there’s value in indirect contributions towards collaboration.

Maybe the model I’ve been using to think about the fit of work has been hiding something from me. Seeing fit as the vector projection of the organization’s objectives and of mine, to see what value we can capture and what value we waste, I can see the directness of contribution, but neither the value of indirect contributions nor the multiplicity of goals.

This realization matters to me because it hints at another goal, which might be to help people make a difference from wherever they are in the organization. That’s one of the things social media changes. I have a soapbox that isn’t circumscribed by my role. In the process of reconciling my love of development with my urge to more directly work on organizational culture, I’m learning things that can help me talk to and about the everyday evangelists of collaboration: those whose roles might not directly relate to helping their organizations be more collaborative, but who transform the way they and other people work by experimentation and example.

And as Torsten Wagner pointed out in e-mail (thanks!), bringing the tools and insights of one field to another (say, programming to consulting) can lead to something awesome and even revolutionary.

So I can guiltlessly enjoy building systems and mentoring developers, confident that this also fits into my big picture. =)

Using Simpletest and spreadsheets to populate Drupal with data

December 23, 2010 - Categories: drupal, geek

One of the challenges of testing views or custom Drupal code is generating the right kind of data. Devel can generate hundreds of random nodes, but you might need more custom data than that. For example, on our project, we need to have test users, their content profiles, and nodes that follow a certain node reference structure. By creating a class that extends DrupalWebTestCase and provides convenience functions on top of drupalCreateNode, we can easily create test data as part of our test cases. Copying the code from drupalCreateUser and making our own version that uses roles and content profiles helps us set up the right users, too.

We wanted our tests and changes to use the same database tables used by the web interface, so we overrode the setUp methods to use the actual database. This not only makes the tests faster, it also makes them more useful for the web testing and demos.

Many of our test cases create the data they need. However, some test cases need even more complex structures that are similar from one test to another. Instead of creating and recreating them on each test, I’ve written another test case for populating the data. For example, PopulateTestUsers sets up about 30 users with different characteristics. I can then write other tests that assume PopulateTestUsers has been run and the sample users and nodes are available.

How do we generate the users and nodes without getting tangled in lots of PHP? Here’s a technique I picked up from Stuart Robertson, an IT architect with lots of good ideas. He fills in a spreadsheet with the values he wants test data to have. He then uses other columns to generate PHP that set the individual fields, and another column that generates PHP based on the generated PHP. For example, a formula to set a CCK value might look like this:

=IF(B3<>"",CONCATENATE("'field_widget_doohickey' => array(array('value' => '",B3,"')),"),"")

which turns a value of “foo” in B3 to

'field_widget_doohickey' => array(array('value' => 'foo'))

which is then something you can pass to the node creation function. To figure out the syntax for other node attributes, use var_dump or your favourite debugging tool to look at a node that has the information you want.

You might have the final generation like this:

=CONCATENATE("$this->createWidget('",A3,"',array(",E3,"));")

where createWidget is a function you’ve defined to make things more readable. It would be a wrapper around drupalCreateNode that sets the type and does other things.

This spreadsheet makes it so much easier for us to work with our test data because we can refer to it to find test data matching criteria when designing our tests or trying things out using the web interface. Adding new test items is easy: just fill in the rows, copy the equations, and then copy the generated code and paste it into the test case.

Naming tip: Using a different naming convention makes it easy for me to use our custom-coded Drush testre command (run tests matching a regular expression) to run just the tests that populate data, or just the tests that assume data is there. Likewise, test cases that use SimpleTest’s web client ($this->get, etc.) have a different naming convention so that I can avoid running these slower tests when I just want to do a quick check.

Simpletest is a powerful tool. I’ve used it on every Drupal project I’ve worked on, even when I was the only one writing tests. Combined with a spreadsheet for generating structured test data, it’s a great help for development and demonstration, because we can set up or refresh complicated sets of users and nodes in little time. Well worth investing time to learn and use.

SCHEDULED: 2010-12-23 Thu 08:00

Reflections on mentoring new developers in Drupal

December 24, 2010 - Categories: drupal, geek, mentoring

UPDATE: Fixed formatting. Thanks, Brock!

Two developers recently joined our team. Johnny has worked with Drupal before, and needs a little help getting used to Drupal 6 and Views 2. Elena is an IT architect who is new to both IBM and Drupal. She needs a lot more help getting started, because she doesn’t know what things are called yet and she isn’t yet accustomed to the Drupal way of doing things. For my part, I work on Workflow, node access, and other requirements that require deep Drupal hacking.

I’m learning to check on Elena more frequently and to help her break down tasks. Otherwise, she might get lost or stuck, because she might not yet know where things are or whether she’s getting closer to an answer. I’ve made good progress on the things we’ve planned for this iteration, and I can invest the time into helping our new team members be more productive and learn more effectively.

Both Elena and Johnny have set up their debuggers in Eclipse, so they don’t have to figure out the right places to insert var_dumps. Instead, they can trace through the relevant pieces of code, learning more about the structures and the flow of Drupal websites along the way.

Although I occasionally struggle to explain things I take for granted, I enjoy helping someone who’s new to an area. It helps me remember the things people need to learn. For example, Elena’s work on surveys requires her to learn about nodes, getting values from the $_REQUEST, loading nodes, working with CCK, altering forms, adding new form fields using the Form API, and using Drupal functions for links and text. We broke down the task into the following steps:

  1. Create a CCK node type.
  2. Use hook_form_alter to add some text to the form.
  3. Load a node and fill the information in the form.
  4. Get the extra node ID from the URL.
  5. Adapt form_alter for the case where you’re editing the node.

We’ve managed our planning well, so I don’t feel overcommitted or stretched with the additional mentoring I’ve taken on. The time is an investment that will pay off both in the short-term as well as the long-term. If I can slow down and write more, then the investment can benefit to other people too.

I like this. It’s certainly much better than leaving developers to flounder and work things out on their own, and I learn a lot in the process of helping. Maybe that will be one of my specialties: projects where other people are learning a lot on the fly.

Weekly review: Week ending December 24, 2010

December 25, 2010 - Categories: weekly

From last week’s plans

  • Work
    • [X] Work on Project M and Project S
    • [-] Post year-end reflections
    • [X] Plan Idea Lab?
    • [-] Work on networking tips
    • Helped Johnny Patterson with Calendar and calendar_add>_items>
    • Talked to Pawan Khera about Web 2.0 lecture, referred him to Rawn Shah
  • Relationships
    • [x] Bake more
    • [X] Send cards
    • [X] Post year-end update
    • [X] Attend family get-togethers
    • Made gift for Micah
  • Life
    • [-] Get MobileOrg Android patches into mergeable state
    • [X] Review and revise plan
    • Started on blog analysis (10 years!)

Plans for next week

  • Work
    • [X] Work on Project M: Make sure users have permissions to do things
    • [X] Work on Project S: Clean things up
    • [X] Idea Lab: Process responses
    • [X] Illustrate networking tips
  • Relationships
    • [X] Hike or bike with W-
    • [X] Write more cards
  • Life
    • [X] Get MobileOrg Android patches into mergeable state
    • [X] Review and revise plan, outline 2011
    • [X] Tidy up
    • [X] Tidy up my computer, too: backup, reorganize, clean
    • [X] Plan garden

Time analysis

Dec 18 to Dec 24

Sleep 52 hours ~ 7 hours per day
Work 47 hours More overtime working on functionality and preparing my IDE
Personal 18 hours Hacking around
Social 17 hours Includes Christmas party
Travel 7 hours I’ve been using some of this for writing time, too
Routines 5.5 hours
Exercise 5.5 hours
Writing 3 hours

11 trips on the subway.

I should pull back a little on work. This holiday week is a good time to reset that. I really want to be able to deliver a good, working system the client can build on, so it’s easy to get lost in working on this. I’ll shift the time to more writing and more preparation.

Drupal fixes: Modifying the entries in Calendar

December 26, 2010 - Categories: drupal, geek

The Drupal Calendar module is great. You can show view results in a decent-looking calendar easily. However, if you want to show more than what’s provided out of the box, you need to do a bit of undocumented and confusing hacking.

Let’s say that instead of displaying the items, you want to display the number of items. You need to implement hook_calendar_add_items, which, despite its name, actually overrides the items displayed. Your hook_calendar_add_items($view) should return an array of an array of items, which is also confusing, because the receiving function (template_preprocess_calendar in calendar/theme/theme.inc) doesn’t actually do anything with the outermost array, or indeed with multiple entries – it simply takes the last array and sets the items to it.

Each item should be something like this:

$item = new stdClass();
$item->node_title = t('Hello world');
$item->calendar_start_date = $date;
$item->calendar_end_date = $date;
$items[] = $item;

and at the end, you do this:

return array($items);

Your hook_calendar_add_items gets the $view, but not the existing items, so you’ll have to recalculate things using $view->result. Remember: if you return anything, your results will replace the items instead of being added to them.

Because hook_calendar_add_items doesn’t actually do what it advertises, there are probably bugs in this area of code, and this behaviour might change in future releases of Calendar. Be careful when using it. However, it seems to be the easiest way to change Calendar behavior. Caveat developer.

Also useful: http://drupal.org/node/412418

2010-12-24 Fri 10:19

The great washing machine adventure

December 27, 2010 - Categories: life

There’s this odd little holiday called Boxing Day right after Christmas. In Canada, it seems to be primarily celebrated through sales. It’s a mad rush I’ve managed to avoid for the past few years, but this time, we ventured forth. Our washing machine needed fixing, and we thought we’d replace it on our terms instead of waiting for it to give.

W- spent yesterday afternoon taking apart the old washing machine. The bearings were shot and the shaft was pitted, so most of the drum assembly would need to be replaced. After checking for parts online, we calculated that it would cost more to repair the old Frigidaire than to buy a new washer. The dryer had been making weird noises, too, so we figured we’d check out the Boxing Day sales.

With three cats and weekly laundry loads, we knew we wanted a front-loading washing machine that could handle duvets. For front-loading washers with more than 3.5 cubic feet capacity, the washing machine industry had standardized on widths of 27″. Problem: the basement stairs offered 26″ of space – and that was after W- removed the door and knocked all the trim off.

We seriously contemplated removing drywall, but it would only get us a little bit more space. Still not enough. Then we looked at real estate listings. Briefly. (For want of a nail…)

Then we went back to looking at washing machines and figuring out which ones we might be able to disassemble enough to get them downstairs.

It came down to a choice between a Samsung and an LG one. The Samsung washing machine had better features, but we didn’t know if we could disassemble it far enough. We found a service manual for a similar LG washing machine with part diagrams and troubleshooting guides, so we ended up choosing that instead.

Future Shop didn’t have the machines in store and we wanted to get the washing machine before their delivery date of January 8, so we decided to pick up the machines at the delivery center in Caledon.

The machines wouldn’t fit in the Subaru. We looked into renting a van from the nearby Home Depot, but the service clerk gave W- a hard time about renting the van for the plywood he bought as a pretext. So we rented a cargo van from U-Haul, picked up the washer and dryer, and brought them home.

We weren’t sure if we could muscle the machines into the house on our own, so I had baked some thank-you brownies just in case. With a dolly and J-‘s help, though, we managed it. The front door of the washing machine got dinged in the process because we forgot to take the door catch off (and to orient it for possible scratching), but it’s okay. It’s just stuff.

Now we’re disassembling it to see if we can get it to fit down the narrow staircase. I cut myself on one of those razor-sharp internal edges (who knew!), but W- patched me up with a Band-aid. I found the service manual for our model (including disassembly instructions!) so that should help us find out about the screws that are hiding.

This isn’t how I saw myself using the Christmas break (I was thinking about organizing and drawing), but it’s good work, and this is a better time to do it than a hectic weekend. I can always draw after work. Laundry, however, is laundry.

Here’s to hoping that everything will still work when we put it back together again!

2010-12-27 Mon 06:21

Ten lessons learned from disassembling and rebuilding our washing machine

December 28, 2010 - Categories: geek, love

This wasn’t how I thought I’d spend the holidays. I planned to write, draw, and reorganize the house and my digital life. Instead, I found myself deep in washing machine parts, disassembling the LG WM2140CW so that the 27" washer could fit through our 26" staircase. It was the first time I’d disassembled anything brand-new, much less a major appliance. Here’s what I learned.

1. A great relationship transforms hard work into lots of fun. W- and I worked on disassembling and reassembling that washing machine all afternoon and into quite a bit of the evening. Because I was there, he didn’t have to do it alone. Because he was there, I not only discovered more of W-’s amazing skills, but developed my own. We worked more efficiently together than he could have on his own: another pair of hands to keep things steady or pass a screwdriver, another set of eyes to spot the spring holding the gasket in place, another person to find a free online copy service manual for our exact model (you wouldn’t believe how many ad-spam and link-spam sites there are for service manuals)…

W- and I joked that even if our gamble failed and the washing machine didn’t turn back on, it would’ve been worth it as the tuition for skills and the prevention of future couples’ therapy costs. ;)

So it was exercise AND social time AND preparation time, and now I need to find a better time-tracking system that takes into account perfect days like that when everything comes together. Not multitasking, but combination.

Even if you don’t have a significant other who can turn things like this into wonderful bonding moments, you might be able to share your hard work with friends. For example, I once held an IKEA assembly party, which was lots of fun and which resulted in a kitted-out apartment. =)

2. Before you move large things, look for anything that might scratch it, and disassemble more than you think you need. Orient it based on risky areas, too. We forgot to take off the door holder (part 1), and it scraped and dented the front part of the washer instead of the back (part 2). Learning from our mistake, we disassembled it and took the dryer through without any problems. W- hammered the dent out. The scratches can be touched up with paint (yay white washers, no colour-matching like the red ones would’ve required), but it would’ve been nice to avoid that in the first place.

3. Don’t be afraid of taking things apart. Particularly when you’re working with an electrical engineer who gained experience by taking apart the previous washing machine, and when you’ve got enough of an emergency fund so that messing up is annoying but not catastrophic. I now know way more about washing machines than I learned from How It’s Made or from the exploded parts diagrams.

4. Service manuals rock. I can understand why they’re not just part of the package (after all, most consumers won’t need them). I’m glad we found them, though. Although we were willing to pay a little extra for the features of the Samsung washer, we found the LG service manual for free, and that decided it for us. ‘Course, now that I’ve done some more digging, I’ve found a Maytag Technical Institute service manual for a Samsung washing machine we could probably have used, but ah well. =) I like the LG service manual a bit more because it uses clear diagrams, although the photos in the other one are good for general orientation.

Retailers or sales representatives who sell appliances could keep a copy of the service manual so that they can answer questions from people about how far the machines can be disassembled in order to get it through a narrow opening, although I suppose that’s a very niche thing. ;)

The service manual’s disassembly guide pointed out screws we might’ve taken a long time to find, the spring holding the bellows closed, and the sequence in which to take off the panels. It didn’t go as far as removing the drum, but we figured that part out easily.

5. Watch out for sharp bits on the interiors of machines. Yes, the washing machine was all rounded corners and smiles on the outside, but boy, there were some sharp edges on the inside. Move carefully.

6. Keep track of your screws by screwing them into the empty places. Make rebuilding easier by returning screws to the proper location after detaching whatever needs to be detached. It’s hard to label everything correctly or to remember where each type of screws go. Let the machine remember for you. If you don’t rattle things around too much and the screws are fairly secure, you probably won’t lose any screws when you move the machine.

7. Use magnetic screw-holders to keep your other screws together. If you can’t leave the screw in, you can keep it in a magnetic screw-holder. This is generally a good idea, and almost a necessity if you have cats who like chasing loose things around. I’m looking at you, Luke.

8. Keep screws from old projects. If you have left-over screws from other projects (say, reassembled items that mysteriously had more screws than you started with, or optional parts you didn’t use), keep them organized. You never know when you’ll need to replace a screw after searching under the couch and all the other usual Bermuda triangles for cat toys.

9. Resist the urge to snap the plastic bits. If connectors appear to be stuck together, it could be some kind of latch you can find and open instead of snapping various plastic bits until the connectors can be eased apart. ;) Patience.

10. Celebrate. If you can’t celebrate successfully rebuilding a washing machine and hearing the sweet, sweet sounds of it turning on without any leaks or explosions, what can you celebrate? Even though we had lots of food in the fridge (such as a turkey we’ve been chipping away at since Friday), we headed out to Pho Hung for some delicious bowls of pho. Perfect wrap-up for a perfect day.

See pictures on Picasa

Blogging and conference networking tips

December 29, 2010 - Categories: blogging, conference, connecting, tips

I promised to put together tips for networking at conferences. While sketching out my ideas, I realized that my conference experiences have probably been very different from other people’s. I had a blog before I started going to conferences, and it was perfectly natural for me to use that blog to share my conference notes. I’ve also spoken at most conferences I’ve attended, which really makes it easier to connect with other conference attendees. All the other tips I can share (custom nametags, easy-to-spot outfits, business cards, notebooks, etc.) are icing on the cake. If I can get people to make the big change to writing or speaking (or both!), that will do far more for the value they get from conferences than any little tip I can share about where to wear the nametag. (On your upper right, if possible, near your shoulder, so that people can see it when shaking hands; barring that, close to your neck, even if it looks a little weird, so that people can see it in their peripheral vision instead of having to obviously glance down.)

Blogging and speaking are probably the two most intimidating things I can ask people to do in this context. Speaking seems like the harder one. There are only so many slots, and people have such hang-ups around public speaking. But we’ve also terrified most people out of posting on the Internet because of all this fuss about personal branding and the infinite memory of search engines. I’m very annoyed about this, because I think so many “social media experts” have done us all a disservice by telling people they have to present a perfect image.

But this is what I have to work with. People might like a few connecting tips (conference conversation openers: don’t go for the dead-end “what do you do?” that requires creativity or coincidence to get the conversation going; instead, use conversations as a chance to learn about other sessions and other people’s experiences, and create excuses to follow up by promising to share notes or follow up on ideas). How do I get people to the point where they can make more radical changes, such as starting a blog – even if it’s only for conference-related things?

Here is a list of conference-related blog post ideas:

Before the conference:

During the conference:

After the conference:

See, there are tons of things to write about that don’t involve trivial things.

I can’t think of anything that’s a better fit than a blog. Twitter and tumblelogs are a start, but they’re not going to cut it. Too short, too dispersed. Facebook updates are too protected. You want these notes to be picked up by search engines so that you can connect with attendees, speakers, organizers, people from your organization, people who are interested in the topic, and so on. A blog is an excellent way to do this, and it’s easy to start one on a site like WordPress.com.

You might have two sets of notes: a fuller set of notes for personal or internal use, and a set of notes without confidential information that you can share on your blog.

Bonus: If you share your notes through blog posts, you’ve got an instant excuse for following up with anyone you met at the conference. Something like “Hi! Just a quick note to say that it was great to see you at CONFERENCE NAME. In case you find these useful, here are my notes from the conference: LINK.”

And if they like what you’ve written and they want to keep in touch, you don’t have to rely on the fragility of e-mail communications that can stop if one person forgets or doesn’t reply. People can subscribe to your blog and keep up with your future updates, even if the next post is only when you share your plans for attending another conference.

See? Blogging and conferences make perfect sense.

But I still have to figure out how to get people past that instant reaction of “Oh, I could never do that, I’m not a blogger, I’m not a public sort of person, I don’t have the time to do this,” and it’s hard because I’ve never had to get over that hump myself. Yes, there was a point in my life when I wasn’t a blogger, and I’m still not a very extroverted sort of person. But because conferences are a weird combination of energizing and draining for me, and because I can’t bear to waste all that time listening without doing and learning and sharing, and because I hate imposing on conference contacts by trying to build the relationship through personalized e-mails instead of just starting it off with a gift of notes and a low-key way to stay in touch if they want to… I can’t help blogging and sharing.

I’ve promised to put together this collection of tips on connecting at conferences. I’m going to keep trying to figure out how to explain this blogging thing, because I want people to learn a lot from conferences and make great connections. Onward!

Thinking about time tracking

December 30, 2010 - Categories: geek, quantified

One of the insights I liked from “The 7 Habits of Highly Effective People” was on getting more out of your time by combining different needs or goals. Instead of keeping exercise and socializing separate, for example, you can combine them by jogging with a friend. It’s like the way the negotiation book “Getting to Yes” reminds me to focus on interests rather than positions, opening up creative possibilities that combine different aspects.

A lot of what I do is like that: interests that support more than one goal, activities that build on each other. The straightforward time tracking I did with Time Recording (Android) allows me to capture one category for each time segment, but it doesn’t capture those subtleties.

Time to take a step back and think:

Here are some things I’m working on learning:

OPTIONS:

  1. Continue to use Time Recording. Use the tasks to track the primary category and the notes to track any secondary or tertiary categories. Use fancy spreadsheet wizardry to generate reports.
  2. Find another time tracker that keeps separate category timers and exports data as CSV. Possibly write my own numbercrunching program.
  3. Track only one thing at time.

I like the first option the most, because it works with my existing system and it’s flexible. I may write a short program for doing a little bit more analysis once my reporting settles down, because I’d like to see how often I get to creatively combine goals. Option 2 is more work, and option 3 won’t let me easily see other shifts while I’m tracking. So Time Recording it is, but with a slightly different way to use it.

Thinking about housework

December 31, 2010 - Categories: life, productivity

I’ve been thinking about the ideas in the book “168 Hours”, which strongly recommends personal outsourcing as a way of freeing up time that you could spend on goals or core competencies.

On one hand, I agree with it: delegation can help a lot. On the other hand, there’s something here I need to explore further. I’m not sold on the idea that maximizing life is the way to go, or that this is the best fit for us.

It helps that I can compare the experiences. I grew up with maids and a cook. Laundry was whisked away, ironed and folded. There was a hot buffet at lunch in the company dining room, and dinner was sometimes business, sometimes family-style. My mom cooked a bit, and she taught us how to wash dishes.

In the Philippines, having household staff isn’t that big a deal, and it really helped my parents with their business. In Canada, W- and I do all the work of maintaining the house. It’s not that bad, actually. Fifteen minutes of exercise bringing the laundry down and sorting it; half an hour to fold the laundry, which is really social time + movie time; a good weekend afternoon’s work preparing a month of lunches and a week of dinners, also social time; half an hour of tidying up each day and more organization during the weekends, which is really a working meditation.

We could trim our “preparation time” further by ordering groceries and household goods online instead of heading out, I suppose, or hiring out laundry or cooking. I’ll try keeping a more detailed time diary to see if I can identify big chunks of time that I can recover.

What would I spend the extra time on? Writing and coding, probably. Spending more time with W-. Learning how to drive, draw, or play the piano. Sewing, so I can learn how to make things. Cooking. (Yes, I return to that; it’s fun.)

But it’s not a straightforward money-for-time swap. It’s not just a matter of paying ~$25/hour to reclaim time for personal use. It’s really a time-for-time swap, because money is time, too. I’d be trading time now for time later, considering after-tax expenses now versus the compounding growth of investments that might enable early retirement or more opportunities.

The things I’d want to do with that time – writing, for example – mature with age and experience. Squeezing out more discretionary time to work on writing might result in improvements, but a lot of it is really just a matter of living more and learning more so that I can share more.

Doing things ourselves isn’t drudgework, either. We can save, learn, exercise, and build our relationship, all at the same time. If I ever run into tasks I truly despise, I might outsource those, but W- and I are easy-going and have so far managed well. (In fact, cooking all that food leaves me with a warm glow of accomplishment and productivity, and I learn a lot along the way.) I don’t feel starved for time. I feel that there’s enough time to do the things I want to do – perhaps not all of them, but that teaches me to prioritize and be efficient.

And of course, there’s my resistance to lifestyle inflation. ;) The longer I can live a simple life, the more I can resist the hedonic treadmill and sock away savings I won’t even miss.

I might dust off my experiments with virtual assistance and try out cooking and cleaning services. Some frugal bloggers I read have said wonderful things about housekeeping. We might see if it’s a good fit.

Shifting time around to have more discretionary time would be nice, but am I close to the point of diminishing returns considering the other factors, or are there other things I might discover if I keep at the experiment? Hmm….

Have you experimented with this? What have you done with your newly-freed-up time? Or how have you made household work even more productive?

2010-12-31 Fri 08:26