April 2011

Running the Selenium IDE testing plugin with Firefox 4

April 1, 2011 - Categories: development, geek

Selenium is a web testing framework that allows you to test web applications involving HTML and Javascript. The plugin hasn’t been updated to indicate that it works with Firefox 4, so you can’t install it directly.

You can use the Firefox Add-on Compatibility Reporter to install Selenium and other Mozilla Firefox plugins that have not yet been marked as compatible. After you install the compatibility reporter and restart your browser, you should be able to install the official version of the Selenium plugin.

Props to the Mozilla support forum for the tip!

2011-04-01 Fri 12:21

Weekly review: Week ending April 1, 2011

April 2, 2011 - Categories: weekly

From last week’s plans

  • Work
    • [X] Work on Rails questionnaire project for client C
    • [X] Talk to client U regarding Drupal
    • [X] Finish administration guide for project I
    • Wrote up descriptions of ongoing projects and shared them with other people who may be able to help
    • Helped with mail merge and Idea Labs
    • Connected with project manager for project M
  • Relationships
    • [X] Plant lots of yummy vegetables
    • [X] Chat with David Singer
    • Started learning Latin
  • Life
    • [X] Learn how to cook dal
    • [X] Bake another batch of buns
    • [X] Get through busy week
    • [X] Order laptop battery

Plans for next week

  • Work
    • [ ] Finish first phase prototype for client C
    • [ ] Host Idea Lab for Japan
    • [ ] Make presentation “The Busy Person’s Guide to Learning from the Network” (for IBM internal conference)
  • Relationships
    • [ ] Prepare garden
    • [ ] Learn more Latin
  • Life
    • [ ] Take a look at my time budget
    • [ ] Sketch more plans
    • [ ] Practice drawing

Time analysis

Category This week Last week Delta Notes
Break 11.2 17.6 -6.4 LEGO Star Wars!
Drawing 0.9 11.7 -10.8
Exercise 6.8 1.9 4.9
Personal 1.2 -1.2
Preparation 0.5 0.6 -0.1
Routines – cooking 2.0 -2.0
Routines – general 8.1 6.7 1.4
Routines – tidying 1.5 5.5 -4.0
Sleep 54.9 60.8 -5.9
Social 12.8 11.0 1.8 Study group, catching up
Travel 4.5 7.1 -2.6
Work 56.9 40.1 16.8
Writing 6.8 1.7 5.1

Starting up our garden

April 3, 2011 - Categories: gardening

One of my gardening role models is the woman down the street who grows all sorts of vegetables in the front yard of an apartment building. I walk past her garden on the way to the library and the supermarket, and I’ve often admired how productive it is: rows of bok choi between the walkways, beans and peas trellised with twigs, even the occasional squash peeking out through the foliage. I regularly see her tending the garden, watering it by hand with a dipper and a bucket, transplanting seedlings and pulling up weeds. She knows I like her garden, and even waves hi to me when we encounter each other on the street.

The woman down the street has started her outdoor garden, turning the soil over, forming it into neat raised beds, adding planks for walkways to avoid crushing the aerated soil. She has more than 100′ square feet to play with, almost all in full sun. Our backyard garden is shadier because of all the trees, but we’ve got about 70′ square feet, plus the pathway sides that I used for cat grass and parsley last year.

I’ve started our garden, too. Yesterday, I turned the compost over, consolidating the winter’s collection of leaves, kitchen scraps, and soil from three half-full bins to one and a half bins, appropriately layered (brown, green, brown, green) and liberally sprinkled with compost accelerator.

We’re giving compost accelerator another try this year. W- brought it up because he was impressed by how quickly last year’s organic material turned into rich, dark, compost. Then again, that was also the year I started turning the material regularly, so I’d like to take some of the credit. (It’s good exercise!) We found it at Home Depot for $8–much better than the ~$20 we’d paid at Plant World as part of last year’s experiment. It’s worth a try. If we get enough organic material, I might do one bin with compost accelerator and one without.

I also started a 5′ double-row of peas yesterday, and about 1.5 square feet each of bok choi and rocket lettuce. The seeds I started indoors still haven’t sprouted, although the cat grass from three weeks ago is now ready for consumption. It’ll be okay. Worst-case scenario is that we buy basil and tomato plants from the store. I do hope our bitter melon plants come up, though, as we can’t find those grown in nurseries here.

“Do you remember the sugar peas? It was a lot of fun eating them off the vine,” said J-.

“And the tomatoes!” W- added.

“My friends are so excited.” said J- as she helped tidy up the garden yesterday.

“Excited about our tomatoes?” W- asked.

“I guess we’d better plan a summer tomato party, then.” I said. (Although that might be like counting your tomatoes before they’ve set.)

That’s a great sign that gardening is paying off. One doesn’t get quite as excited about the plump sugar peas one can get from the supermarket, or the cherry tomatoes in plastic packaging that we pass by because of their premium pricing. But the thrill of checking for fresh strawberries, peas, tomatoes; the convenience of dashing out for some dill or some cilantro; the abundance of pesto picked from dozens of plants; the satisfaction of tasting the fruits (and vegetables and herbs) of your work–you can’t buy these things from the supermarket. And this summer we’ll get to enjoy it from the comforts of the Muskoka chairs we finished last fall!

I’m so lucky. To be 27 and live in circumstances like this – a good-size backyard, walking distance to the supermarket, the library, and the subway station, biking distance to the Home Depot whose garden centre I will undoubtedly frequent (last year some of the staff said “Welcome back!”)… Life is good.

2011-04-03 Sun 08:54

The Busy Person’s Guide to Learning from the Network (a guide for IBMers)

April 4, 2011 - Categories: ibm, learning, presentation, tips, work

I promised to put together a talk on learning for an IBM virtual conference for new hires. Here’s a rough draft, just to get it out of my head and into a form I can work with. I’ll add URLs internally. The next steps I want people to take are:

  • Find a mentor, or even several mentors.
  • Bookmark Lotus Connections so that they can easily search it in the future.
  • Learn to find people based on documents and other shared information.

One of my mentors told me that at IBM, it’s okay if you don’t know something. If you don’t ask for help and things get messed up, though, that’s when you get into trouble. So I want to share with you some tips I’ve picked up on how to learn as quickly as you can, from as many people as you can.

I’ve been with IBM for almost four years. I know what it’s like to feel overwhelmed by all the different things there are to learn: working with Lotus Notes and other applications, dealing with technologies, working with team members and clients… It can be really intimidating. Fortunately, at IBM, there are plenty of people who can help – but sometimes you need to step up and ask.

  • Mentors

    If you don’t have a mentor yet, find one. Even better, find several mentors. Mentors can help you figure things out: the specific technology you’re learning, the tools you need to work with, the processes in your team or business unit, even your career plans.

    How can you find a mentor? Share your questions with your manager and ask your manager to refer you to some people who might be good mentors for you. Look for people on Bluepages or Lotus Connections. Take advantage of the speed mentoring events that IBM Learning sometimes organizes and see if you can connect with anyone. Attend presentations and connect with speakers or other participants. Once you have a mentor, ask him or her for introductions to other people who might be able to help.

    Maybe you’re feeling shy. Maybe you think, “Well, I’m new to IBM. Why would anyone mentor me?” I found it hard to ask people to mentor me, too, but I was amazed by how generous people were when it came to helping new people. Many mentors help others because other people mentored them. Others mentor people because they learn a lot in the process. Mentors have lots of reasons for helping, so don’t be afraid to ask.

    Social networking tip: Look for mentors and role models who blog or post updates in Lotus Connections or on the Internet. That way, you can easily learn from people in between your meetings. You can even learn from people around the world, and people whom you might be too shy to reach to right now. For example, if you’re curious about what IBM Fellows do (they have the highest technical rank in IBM), or what vice presidents are like, or so on, you can learn from their blogs, tweets, and other posts. Maybe you’ll find something you can comment on or ask about!

    How to work with mentors: Talk to your mentors about your goals and figure out how they can help you. Take the lead in setting up meetings and asking questions. Show your appreciation through thank-you notes – and even better, show your appreciation through the results that come from taking your mentors’ advice.

    Okay. You’ve got mentors. But you can’t go to your mentors for every little thing you need to learn, so you still need to figure out things on your own.

  • Documentation, assets, and other sources of information

    You’re probably already used to searching the Internet for information when you’re trying to learn something new. It can be harder to find just the right document within IBM. If you’re new to a topic, it can be difficult to find beginner-level resources, or even to know what and where to search.

    If you’re stuck, ask your coworkers or your manager for help in getting started. Take notes! Make a list of the resources you find useful as a beginner, and you’ll be able to share that list with other people who join the project. It’s a quick way to create value – and people are more likely to invest time into helping you if they know that your notes will help them and other people save time in the future.

    Don’t stop with the documents you find, too. One of the best things you can learn from a document or an asset is where you can go to find more information. Are there related communities? Can you look up other things the author has written? When you come across a useful document, look for any author information or lists of related experts. If you need help finding the right resources or you have a question that’s not answered by the document, you might be able to ask those people for help. (Look for communities or forums first, though – this helps avoid e-mail overload, and you can ask more people for help. We’ll talk more about communities later.)

    Okay. Formal documentation is great, but there’s often very little of it, especially for new tools and technologies. What do you do when you need to learn about something that doesn’t have a lot of articles or manuals yet?

  • Files, bookmarks, wikis, and blog posts

    When I need to find out about something new, informal, or obscure, I often check people’s files, bookmarks, wikis, or blog posts. This is where Lotus Connections really shines. You can search people’s public files and presentations for new information, search bookmarks for information other people have found useful, check out wikis to see what people have collaborated on, and read blog posts for people’s notes and articles.

    What if you still can’t find what you need, and the people you ask don’t know of any resources, either? This is where you might need to ask more people.

  • More questions and answers

    Have a short question? Try posting it on IBM Answers. You’ll get an e-mail notification if anyone replies. While you’re there, see if you can answer any of the pending questions.

    Tip: Don’t just post your question on IBM Answers and walk away. Reach out to specific people to see if they can share anything. If you use Profile status updates, post your question with a link to the answer page.

    Regarding experts: If you have a question that needs deep expertise, you might want to give Expertise Locator a try. You don’t want to waste experts’ time, though, so if your request is non-urgent, it’s probably better to start at a lower level. People can escalate your request if needed.

    Sometimes it helps to ask many people instead of focusing on just a few. This is where Lotus Connections Communities and IBM forums come in.

  • Lotus Connections Communities

    Whatever you’re looking for, there’s probably a community or forum related to it. Search Lotus Connections Communities to find groups related to the topic. IBM Forums has older groups, too.

    Many communities have discussion forums. You’ll need to join the community in order to ask a question. Look at other posts to see how people ask for help. Provide as much information as you can in your message, but don’t post any confidential information. Show that you’ve “done your homework” – describe how you’ve tried to solve the problem or where you’ve looked for information. That way, people might be more encouraged to help you.

    Important: Ask the community owners (see the Members tab) Some communities use the “Mail community” feature to handle questions, before mailing the community. Many communities have thousands of members, and too much community e-mail can make the community useless.

  • Building your network

    What about all those questions that people haven’t answered before, and for which there are no active communities? This is where your personal network becomes important. When you’re faced with questions that need much broader or deeper experience than you have, or you have no idea where to even start learning, your network is essential.

    If you can’t think of anyone who would know the answers you need, try thinking of people who might know people who would know the answer. Ask them for referrals. You can also look for people in Lotus Connections Profiles or Bluepages and try reaching out to them.

    Social networking tip: Lotus Connections Profiles is a great way to ask questions and get quick responses from whoever’s available in your network at the time. You need to build your network before you can use this effectively, though. Look at the main Profiles page to see who’s been participating, and invite them to your network. If they agree, you’ll be able to see their updates in your timeline, and they can see yours. That means that if you post questions in Lotus Connections, people might see it and answer it.

    Why would people spend time checking out Lotus Connections and possibly answering questions? For many people, it’s like a quick break by the virtual office watercooler, a way to catch up with lots of people and to help out people if they can. Try it – spend a little time each day or each week building your relationships by reading people’s profile updates, answering other people’s questions, sharing useful resources, and posting notes of thanks or encouragement.

  • Wrapping up

    You’ll need to learn a lot at IBM, and you’ll need to learn it quickly. Not everything will be written down, and you might not find everything you need using w3 or an Internet search engine. You’ll need to learn from the network.

    • Learn from managers, coworkers, mentors, and role models about things you might not even know to ask about
    • Follow the clues from people’s files and assets to find related communities and experts.
    • Search people’s files, bookmarks, blog posts, and profile updates to see the latest.
    • Check out Q&A sites for additional resources.
    • Reach out to communities and forums if you need help from more people.
    • Gradually build your network so that you can easily ask for people’s help when you have new questions.

    Good luck!

    2011-04-02 Sat 21:42

Setting up Ruby on Rails on a Redhat Enterprise Linux Rackspace Cloud Server

April 4, 2011 - Categories: development, geek, rails, ruby, work

1. Compile Ruby from source.

First, install all the libraries you’ll need to compile Ruby.

yum install gcc zlib libxml2-devel 
yum install gcc
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel

My particular application has problems with Ruby 1.9.2, so I compiled Ruby 1.8.7 instead. This can be downloaded from ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz

Unpack the source code for Ruby. Configure and install it with:

make install

Add /usr/local/bin to the beginning of your PATH.

2. Install Ruby Gems.

Downloadcd the latest Ruby Gems package and unpack it. I got mine from http://production.cf.rubygems.org/rubygems/rubygems-1.7.1.tgz . Change to the directory and run:

ruby setup.rb

3. Install Rails and rake

gem install rails rake

If all goes well, you should now have Rails and rake.


*builder-2.1.2 has an invalid value for @cert_chain*

Downgrade Rubygems to version 1.6.2 with the following command.

gem update --system 1.6.2

(Stack Overflow)

sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!

Compile sqlite from source:

wget http://www.sqlite.org/sqlite-amalgamation-
tar zxvf sqlite-amalgamation-
cd sqlite-amalgamation-
make install
gem install sqlite3

LoadError: no such file to load – openssl

  1. Install openssl and openssl-devel.
    yum install openssl openssl-devel
  2. Go to your Ruby source directory and run the following commands:
    cd ext/openssl
    ruby extconf.rb
    make install

LoadError: no such file to load – readline

yum install readline-devel

Change to your Ruby source directory and run the following:

cd ext/readline
ruby extconf.rb
make install

(Code snippets)

You can’t access port 80 from another computer.

Port 80 (the web server port) is blocked by default on Redhat Enterprise Linux 5.5. Edit /etc/sysconfig/iptables to allow it, adding a line like:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

Make sure you put it above the REJECT all line.

Load your changes with

/etc/init.d/iptables restart


2011-04-04 Mon 11:06

Helping kids learn algebra

April 5, 2011 - Categories: learning, life, teaching

In the math study groups we organize at home, we’ve moved past fractions and percentages into the wild and wonderful world of algebra. Translating a problem into an algebraic equations is somewhat familiar to J-, but the process of solving algebraic equations confuses all the kids. I have a feeling that we’re either taking up the topic before the teachers have had a chance to adequately explain things, or the real-life situation (“Town”) leaves the students little time to focus on other lessons. Well, it is what it is (this is becoming one of my mantras these days), so we just have to do our best.

The small-group format is still working well. We’re going to try it with four kids to see if pairing them up to help each other will help the kids learn more effectively and build more confidence. W- has also checked out an armful of books from the library. I’ve been paging through “Real-World Algebra” and similar books to find some ideas for exercises the kids can relate to.

We try to liven things up with energy and amusing examples. They have to eventually become comfortable with abstract exercises such as 5n + 30 = 180, and it’s difficult to make that more interesting. I don’t want to just repeat the fake word problems of standard algebra textbooks, so I’m keeping an eye out for real-life situations in which I’ve used algebra myself. It can be hard to notice when you take math for granted, but math is everywhere, so I should be able to collect examples.

In the meantime, there are small things we can do to help them keep their attention on math or to remember the concepts more vividly. I tried this example for distribution:

2 * (number of lions + number of tigers + number of bears) = 2 * number of lions + 2 * number of tigers + 2 * number of bears.

I drew a lion, a tiger, and a bear instead of writing the corresponding phrases. =) Then J- said, “Oh my!” and everyone laughed.

The kids often forget that whatever they do to one side of the equation, they need to do to the other. As a result, J- once ended up with the interesting equation 2 = 4. Looks like we need to review how to use the equals sign. ;) We might try the see-saw metaphor. If you have a balanced see-saw, you can keep it balanced by adding or removing the same amount from both sides. You can keep it balanced by multiplying and dividing from both sides. If you add, subtract, multiply, or divide one side without doing the same to the other, you end up with an imbalanced seesaw. We’ll see if that helps them remember.

Because we’re discussing new material for them, we have to walk through the exercises together before they can try things on their own. When they try things out, progress can be slow and frustrating. We’re seeing if we can take advantage of group dynamics by posing a question and encouraging the kids to talk out loud about the strategies they might use. They help each other out, too. The group format definitely pays off – seeing other kids struggle or succeed helps a great deal.

Do you have any favourite middle school group study resources or tips? =)

Why we use more than math textbooks and general-purpose resources

April 6, 2011 - Categories: learning, teaching

For last Sunday’s study group, we focused on algebraic expressions. The kids were a little out of sorts at the beginning. “Math is boring,” one said.

“The way it’s taught in school, maybe. But math is really useful in life, so it’s good to learn it,” I said. I shared a few examples of saving money with math, enjoying life with math.

The group warmed up using a matching exercise, matching the word problems on the left side with the algebraic expressions on the right. Then we worked through some of the problems I’d prepared. In one afternoon, we talked about:

  • cats and how much food they eat (1/4 cup, twice a day, 365 days, n cats…)
  • T-shirts, sleeping cat toys, and chopsticks that look like lightsabers
  • how much it might cost to eat onigiri for every meal, every day, for a year
  • how long you might be able to eat onigiri given a particular budget
  • Scott Pilgrim, Wallace, and Knives Chau
  • more cats, including Neko on my head

There are several types of exercises. Completely abstract ones (here’s an equation, solve for n) get lots of confusion and little engagement. Practical exercises (how much would this cost after tax?) get some interest. Outlandish exercises drawing on the kids’ interests get lots of laughs – and solutions. So we mix practical exercises and outlandish ones, one to show math in real life and the other to get the kids involved. It’s like improv comedy, but for education.

This is where parents and tutors really need to step in and mix things up. Textbooks are written for everyone. They can’t take individual interests into account, and they can’t be revised each month to take advantage of pop culture references. When you make up your own exercises, though, you can do whatever you want.

I know J- likes Scott Pilgrim, Fruits Basket, and cats, so they turn up in math exercises. It’s not hard to pick up some standard forms of exercises from textbooks and translate them into more interesting situations.

Helping someone learn? Make up exercises based on their interests and see what happens.

Spousonomics: Using economics to master love, marriage, and dirty dishes

April 7, 2011 - Categories: analysis, book, love, reading, research

I love research-backed books that help us understand why we do what we do. Paula Szuchman and Jenny Anderson’s Spousonomics: Using Economics to Master Love, Marriage, and Dirty Dishes was no exception. The book takes a look at common marital conflicts and situations, showing the underlying economic principles that influence our actions. For example:

  • Division of labour: Splitting chores equally may not result in the most efficient or the happiest of marriages. Specialize, remembering that payoffs can change over time.
  • Loss aversion: People hate to lose, which can result in really drawn-out fights. The advice to “never go to bed angry” can backfire. It’s okay to have time-outs.
  • Supply and demand: If you want something to happen more often, don’t make it costly or risky.
  • Moral hazard: It’s easy to take good things for granted. It’s also easy to end up trying to avoid any sort of conflict. The sweet spot is in the middle, where you’re not taking your relationship for granted, but you’re not paranoid about your spouse quitting.
  • Incentives: Think about the incentives you use and if they’re really effective. Trust can be much more useful than nagging.
  • Trade-offs: Think at the margin: consider the costs and benefits of small changes. Ignore sunk costs when making decisions. Get over the “it’s not fair” fixation.
  • Asymmetric information: Communicate clearly. Don’t play games by hiding or withholding information. Figure out the essentials of what you need to share so that you don’t overload your spouse.
  • Intertemporal choice: It’s easy to make good decisions for the future, but hard to stick with those decisions in the present. Use commitment devices to help you stick with your resolutions or good ideas.
  • Bubbles: Non-bubbly married life is normal, so don’t stress out if you’re no longer infatuated. Beware of being unduly influenced by groups – just because everyone else seems to be doing something doesn’t mean it’s right for you, too. Don’t get overconfident.
  • Game theory: Don’t let the urge to retaliate or overcompensate lead to you to wildly polarized positions. Work together to get optimal results, not just individually-optimal results, and use commitment devices to help you stick with it.

The book goes into far more depth, and is an excellent read. It’s illustrated with case studies (problem couples who usually end up patching things up) and lots of research.

Here are some thoughts I particularly like:

If there are areas you care about but you feel helpless in, put in the time and effort to develop the comparative advantage in at least one of them. The authors tell the story of one economist who put the time into at least learning how to bathe an infant so that his wife wouldn’t end up with all the child-rearing tasks – and so that he wouldn’t get tempted to take advantage of that kind of a division.

Looking for things to read? In terms of marriage research, I’d recommend “Spousonomics” and Susan Page’s “The 8 Essential Traits of Couples who Thrive”. What do you like?

Decision review: Battery

April 8, 2011 - Categories: geek

After several days of accidentally unplugging my battery-dead laptop (knocking away the power cord, unplugging the wrong cable, etc.), I ordered a new battery. My laptop is still usable without a battery. I just have to put it into hibernation before moving it around. Power interruptions could result in hard disk corruption, though, and I’d rather not have to deal with two broken components.

I decided to order an official battery from Lenovo.com instead of taking a risk on a third-party battery. It wasn’t cheap, but I figured that investing in tools is worth it. I regularly set aside money for tools and opportunities, so I used that.

I ordered the new battery for full price. When I remembered that IBM has an employee purchase program with Lenovo, I crossed my fingers and sent Lenovo an e-mail to ask if I could cancel my previous order. They cancelled it for me, and I reordered it for about $30 less. Never hurts to ask!

I was thinking about the new Lenovo X220 tablet, too. I really like my X61 tablet. The X220 promises a faster processor, higher resolution, and a much longer battery life. I think I can get away without that for now, though. Waiting for used X220s to turn up on Craigslist or similar sites could really reduce my costs. (Hmm, maybe I can ask work about my laptop refresh cycle…)

My battery arrived today. I’m really glad I can unplug my laptop and move it from room to room now. Yay! =)

2011-04-03 Sun 08:32

Writing more about life

April 9, 2011 - Categories: blogging, decision, writing

I am going to write more about life.

It took me a while to get used to this idea. I started blogging as a way of taking notes – source code, class lectures, and so on. That makes sense to write down. It’s useful. It might even be useful to other people. I’m comfortable with writing through decisions and sharing what I’m learning from life, particularly if I can geek out. But everyday stories? Should I write about those when I could, say, write tips or draft presentations instead?

Reviewing my print-outs of past blog posts, though, I find myself coming back to the memories. The tips I’ve written up for other people (or for myself) are handy. They’ll be the nucleus of a book someday. The technical notes I keep help me save time re-solving problems. The memories are the entries that improve with age, becoming richer and more layered over time.

The friends I’ve made through writing about Emacs, Drupal, and other technical topics also have plenty of insights on life, education, crafts, and other things. The experiences and perspectives I bring to life turn everyday experiences into geek explorations. I think it will all work out.

What it comes down to is this realization: These everyday moments are worth writing about, learning from, and sharing. I might think they’re ordinary now, but they anchor my experiences and make it easier to remember whole chunks of life, fleeting sensations, elusive thoughts. Like the way that even rough drawings help me see and remember more clearly, words will be the white pebbles dropped by this Gretel to find her way back. And who knows? Memories trigger other memories. I’m sure I’ll learn from other people, and I might help other people along the way.

2011-04-09 Sat 22:09

Weekly review: Week ending April 8, 2011

April 10, 2011 - Categories: weekly

From last week’s plans

  • Work
    • [-] Finish first phase prototype for client C – lots of good progress!
    • [X] Host Idea Lab for Japan
    • [X] Make presentation “The Busy Person’s Guide to Learning from the Network” (for IBM internal conference)
    • Helped plan for project M
    • Assisted with Get Social, Do Business event at work
    • Put together Idea Lab description, sent to manager
    • Helped Archie Trajano think about personal branding
  • Relationships
    • [X] Prepare garden
    • [X] Learn more Latin
    • Helped with math study group: positive and negative numbers, algebra
  • Life
    • [X] Take a look at my time budget
    • [X] Sketch more plans
    • [X] Practise drawing

Plans for next week

  • Work
    • [ ] Doublecheck mail, implement feedback for project C
    • [ ] Follow up on Idea Labs
    • [ ] Finish paperwork for project M
  • Relationships
    • [X] Make bagels and buns
    • [ ] Plan get-together
    • [ ] Make fresh cranberry bagels for J-
    • [ ] Make big batch of lunches
    • [ ] Write about math group study sessions
    • [ ]
    • Biked up to Dufferin/St. Clair library with W-
    • Started more dill and cilantro
  • Life
    • [ ] Post book notes
    • [ ]

Time analysis

Category This week Last week Delta Notes
Break 10.2 11.2 -1.0
Drawing 0.7 0.9 -0.2
Exercise 3.3 6.8 -3.5
Learning 1.0 1.0
Personal 5.5 5.5 Gardening
Preparation 8.6 0.5 8.1 Lots of planning
Routines – cooking 1.7 1.7
Routines – general 6.7 8.1 -1.4
Routines – tidying 2.0 1.5 0.5
Sleep 60.6 54.9 5.7
Social 17.1 12.8 4.3
Travel 1.3 4.5 -3.2
Work 45.9 56.9 -11.0
Writing 3.4 6.8 -3.4 Tried batch-writing posts


On developing a reputation for project work

April 11, 2011 - Categories: ibm, mentoring, work

Over lunch, Archie and I talked about one of his business goals for this year. He wanted to work on his personal brand.

I asked him what he meant by his personal brand. “What would success look like?” I asked.

Archie said that he’d like to be known more for troubleshooting, and that he would consider himself successful if more project managers asked him to troubleshoot their projects – both technical and non-technical issues. He’s been working at the company for 12 years, and he had plenty of war stories and lessons learned to share with me. He told me that his peers know about his skills, but he wanted to hear about more projects, expand the kinds of roles he took on projects, and go into projects with more authority and leverage.

Now that was a much more useful vision than “improve personal brand.” We could work with that. It might not even have anything to do with wikis, blogs, or Twitter.

So: How can one build a reputation for project work?

We figured that the best ways to reach the people Archie was interested in would be through managers and resource deployment managers. There are a couple of ways to do that: e-mail and presentations.

In terms of e-mail, one of the best things Archie can do is to make sure that the results that he’s getting turn up in the right people’s e-mail inboxes. As it can sometimes be difficult to get recognition or documentation of results from busy project managers, I suggested that Archie write up the problems he solves, the results, and tips for avoiding such problems in the future. If he sends this e-mail to the project manager and to our manager, they can forward it to other people as needed – if they hear of a project that has a similar problem, if someone asks them who can help with a troubled project, and so on. It’s important to keep one’s manager up to date on the kinds of things one is good at or interested in, because managers talk to other managers and can refer you to opportunities.

In terms of presentations, Archie can summarize key tips from his experiences into a short presentation – maybe a top 10 list, or focused on a topic such as performance. This gives him plenty of opportunities to use and reuse the material. Speaking at a lunch-and-learn is one way to do it, and he’ll get extra exposure from the invitations going around. Speaking at one of our internal education events will let him reach even more people. The presentation can be shared internally, included with newsletters, forwarded to other people.

What else would you recommend?

2011-04-08 Fri 20:40

Math study group: Positive and negative numbers

April 12, 2011 - Categories: education, learning, life, teaching

It was Friday, so J- and her friends were singing the Friday song as they hung up their coats and got ready for our math study group. It turned out that they had been so excited about coming home (to a math study group!) that they’d forgotten to arrange things with their parents, and V-‘s dad had been waiting for her at school. Once everyone had called around and sorted things out with their parents, and everyone was well-fed, we got back to math.

One of the benefits of hosting multiple kids in a study group is that you get more information about what people are learning in school. V- said she needed help with positive and negative numbers, so that’s what we started off reviewing.

A quick review: 2 – (-3) = ? . Boggles all around.

Okay. A step down: -2 – 4 = ?. Still boggles and some guesses.

I drew a number line and labelled it with the numbers. “Imagine a cat standing on -2. Which direction does the cat go if you’re subtracting 4?”

“Left!” chorused the kids. “-6!”

I drew the cat ending up on -6. We did a couple of other exercises along those lines. Nods all around. Okay.

“What about -2 + 3?” I drew another numberline. “Right! +1.”

“What about 2 – (-3)?” I drew the cat on the numberline. “Okay, we’re starting on 2. And we’re subtracting, so we would normally move to the left, but we’re moving -3 steps… so the cat walks backward three steps.”

“5!” said the kids. One of them asked, “Do your cats really walk backwards?”

“They do more of this hopping backward thing, yes, but cats can walk backwards if they want to.”

So we did a few more of those exercises, including things like -4 – (-5) and -(-(-2)). We also reviewed multiplying and dividing positive and negative numbers. The kids seemed comfortable with that, and answered our exercises with little prompting.

As we wrapped up our review of positive and negative numbers, A- arrived. She’s in grade 6, a grade behind the other kids, so we modified our exercises. She said she was taking up decimals in class. I asked her how she felt about the multiplication table. “Bad,” she confessed, at which the other kids begged (begged!) to do multiplication practice.

“But first, we’re going to talk about algebra very quickly,” W- said. He briefly reviewed what an algebraic equation really means, and the different parts of the equation: the constants, the variables, the operators, the assertion, and so on. We hope this will help them remember to keep their equations balanced, always doing operations on both sides of the equals sign.

“All right, multiplication,” I said, and we headed outside to practise multiplication. The way we do it is good for building confidence and a sense of numbers: we go through sets of five multiples until the kids can rattle them off smoothly. For example: 6, 12, 18, 24, 30. 6, 12, 18, 24, 30. And so on, around the circle. It’s really more of an audio recall task than a calculation task, and it gets them used to what the numbers feel like. They catch themselves now, when they make a mistake. And they’re enthusiastic and run ahead of themselves, doing sets of ten instead of sets of five, or challenging themselves further by doing jumping jacks while saying the numbers.

After multiplication practice, one of the kids piped up and asked, “Can we solve the equation in the breadbox?” Ah. Yes. Those. I’d spent some time the night before writing up simple equations and hiding them around the first floor of the house – possible exercises for J- or the study group, depending on how things went. So we agreed that they could look for the five Post-It notes I’d hidden IF they solved the equations as well. I settled in to review decimal multiplication and division with A- to help her catch up, and W- reviewed the other kids’ work on the algebraic equations.

Our Friday afternoon math study groups are a great ritual. Glad we stumbled into organizing them! I hope other parents can host study groups as well – it would be good for all the kids to see active involvement – but it’s probably easiest for us, logistically speaking, because we can often work from home and we both enjoy teaching. If you can, try it!

2011-04-10 Sun 12:05

Still cold? Wear a hat to bed

April 13, 2011 - Categories: life, tips

I remember teasing W- about how he wears a toque to bed. (It’s a small, brimless hat also known as a beanie.) Several winter months later, I’m a convert to the cause.

Wearing a hat to bed is an excellent way to keep your ears warm. This means less work tucking yourself in and fewer late-night struggles with blankets.

A hat also doubles as a handy sleep mask that keeps the light out if someone else wants to stay up late reading. Just pull your hat down over your eyes. A little bit of light may come in on either side of your nose, but the reduction in light may be enough to let you sleep easily.

A warm hat, fuzzy socks, flannel pajamas, and microfleece sheets – that should see me through the last gasps of winter and into spring. Slowly getting the hang of this!

2011-04-03 Sun 10:24

Using behavioural economics to motivate yourself when working on risky projects

April 14, 2011 - Categories: analysis, career, work

We’re scrambling to respond to a request for a proposal (RFP). We’re not sure if the RFP is a formality and the client is already planning to choose a different vendor, or if it’s a real request, but the powers that be say it’s worth exploring. My manager thinks it’s a good opportunity to develop architecture skills. I like working above my pay grade, so I’m doing this even if it means stretching quite a bit.

It’s interesting to see the applications of the behavioural economics principles I’ve been reading about in “The Upside of Irrationality.” For example, there’s a chapter on finding meaning in work. The perceived meaning of work greatly influences our motivation to do it. If you know there’s a chance your work will come to nothing (cancelled projects and so on), you might be less motivated to work on it, and more drawn to projects where you think you’ll make a difference. Makes sense, right? (Ah, that’s why school projects bored me…)

Recognizing this bias means that I can understand my motivations and tweak them. It’s natural for me to want to spend more time on my other project. I experience flow on it – meaningful engagement. Although this proposal is riskier and I more often run into the limits of my understanding, it needs to be worked on.   Here are some possible approaches for motivating yourself when working on risky, uncertain projects: 

Break it down into small wins and celebrate those. Don’t wait for that all-or-nothing decision. You might not even reach it. Instead, work in stages so that you can successfully complete and celebrate each step. Share as much as you can during the process, too, while you’re excited about what you’re accomplishing. It’s much harder to harvest assets when you feel like a failure. 

Exaggerate the odds of winning. Irrational optimism can be useful. Imagine that you’ve got a great chance of succeeding, and you just might. You’ll still want to have a backup plan in case you lose, of course.  

Focus on additional benefits. For example, whether or not you succeed on a stretch assignment, you’ll still learn a lot. Can you find meaning in the skills and relationships you’re building and the experiences you’re collecting? 

Balance speculative or uncertain work with solid contributions. Spend some time working on things that make you feel happy and fulfilled. You’ll have the energy and confidence to tackle new challenges. 

How do you keep yourself motivated and focused when you’re not sure of results?

Three cat life

April 15, 2011 - Categories: cat, kaizen, life

We have three cats, which works out just right. Three laps, three cats, and two of them can play with each other if the third one’s hissy. So when it came time for their annual checkups, I figured I’d see what I could negotiate.

The vet had an appointment slot open for a checkup, so I scheduled one. While I was on the phone with the receptionist, I asked if I could bring two cats. “Yes, you can,” the receptionist said. So I asked if I could bring three. All right by them. Okay! No multi-pet discount, though. (I had to check. ;) )

We rounded up the cats, put them into their carriers, and put the carriers into the car. Leia and Neko were quiet, but Luke was doing his scared-cat meow. He’s usually the most easy-going of the three, but I guess he’s not used to travelling. At the vet, we shuffled the cats into the lobby and settled in for the wait.

The vet saw us after about fifteen minutes. We decided to put Luke up first, as he was the most likely to behave. It was a straightforward examination for him – a cat in beautiful health, although with some tartar building up on his teeth. Luke didn’t give the vet any trouble when it came to the vaccine shots.

Leia went next. She got all huffy when the vet was prodding her, but didn’t make a big issue of the vaccine.

Neko turned out to have gained two pounds in the year that she’s been in Canada (when this is about 28% of your previous weight, that’s something!). She’s a little more than half Luke’s size and will probably never get to that weight, but she’s been filling out nicely – going from a square to a trapezoid, we joke. Neko’s been snoring and making strange noises while breathing in, but the vet didn’t find anything obviously wrong with her, so he said it might just be a respiratory virus she picked up that’s not life-threatening. Okay.

Now time for Neko’s shots. The vet called in an assistant with thick work gloves that went past his wrists. “Just to make sure,” he said. We laughed knowingly, as we went through similar precautions whenever grooming Neko’s claws: leather gloves and long sleeves for W-, although I could generally get away with handling Neko with bare hands.

On the way home, with the three cats lined up on the back seat, I turned to W- and asked, “Do you feel like a soccer dad yet?”

Total time going to the vet and back: 2 hours. Definitely worth bringing the cats together.

Weekly review: Week ending April 15, 2011

April 16, 2011 - Categories: weekly

From last week’s plans

  • Work
    • [X] Doublecheck mail, implement feedback for project C
    • [X] Follow up on Idea Labs
    • [X] Finish paperwork for project M
    • Followed up on migration plans for project I
    • Applied theme for project C
    • Learned tons about preparing use cases and responding to proposals
    • Learned tons about testing Rails: Capybara, Cucumber, and other awesomeness
    • Fielded many requests for Idea Labs
    • Put together instructions for external Idea Labs
    • Wrapped up Idea Lab for Japan recovery
    • Assisted Linux Jam community with exporting forum discussions
  • Relationships
    • [X] Make bagels and buns
    • [X] Plan get-together
    • [X] Make fresh cranberry bagels for J-
    • [X] Make big batch of lunches
    • [X] Write about math group study sessions
    • Biked up to Dufferin/St. Clair library with W-
    • Started more dill and cilantro
    • Had fun hosting study group
  • Life
    • [-] Post book notes

Plans for next week

  • Work
    • [ ] Work on more items for project C – Rails is so awesome!
    • [ ] Assist with proposal
    • [ ] Follow up on migration plans for project I
    • [ ] Prepare for code turnover for project I
    • [ ] Plan travel
  • Relationships
    • [ ] Pick up gifts for Kathy and John
    • [ ] Make gifts for Kathy, John, and Dan
    • [ ] Plan gifts for Linda
    • [ ] Host another study group
    • [ ] Plan cherry-blossom get-together
  • Life
    • [ ] Work on red dress
    • [ ] Read ahead: Latin homework

Time analysis

Category This week Last week Delta Notes
Break 7.5 10.2 -2.7
Drawing 1.3 0.7 0.6
Exercise 3.8 3.3 0.5
Learning 0.5 1.0 -0.5
Personal 0.9 5.5 -4.6
Preparation 0.4 8.6 -8.2
Routines – cooking 5.4 1.7 3.7
Routines – general 6.4 6.7 -0.3
Routines – tidying 9.6 2.0 7.6
Sleep 61.0 60.6 0.4
Social 6.2 17.1 -10.9
Travel 7.3 1.3 6.0
Work 48.7 45.9 2.8
Writing 7.4 3.4 4.0

Lots of work: juggling two projects plus lots of queries. Should scale back a little, perhaps?


Study group update: negative numbers, exponents, and awesomeness

April 17, 2011 - Categories: learning, life, teaching

W- started the kids on a review of positive and negative numbers. They got the hang of those quickly, so they worked on fractions, exponents, scientific notation, and engineering notation. They multiplied numbers with exponents, divided numbers with exponents, dealt with negative exponents, figured out the two answers to x2 = 1… Whee!

J- really wanted to review the Greek alphabet. We introduced it so that they can easily work with θ, α, β, and other characters when they encounter the letters in science and math. J- picked them up really quickly thanks to the flashcards we made. She used the same techniques to teach the other kids more of the letters, repeatedly cycling over small sets of letters, sharing original mnemonics (λ reminds her of “Mary had a little lambda” and a hill).

Watching the kids teach themselves Greek letters – and have fun doing so! – I wondered what on earth we were doing correctly, and if we could help other people do it too. Maybe it’s really just providing a space where the kids can get together and learn, and some guidance and exercises to help them grow.

J- says she learns more – and enjoys learning more – in our study groups than she does in school, because the study group is more fun, more focused, and easier to understand. It’s a happy middle between the intense focus and isolation of a one-on-one tutoring session, and the anonymity of a large class. I’m glad we’re doing it, and I’m amazed at how the kids are doing.

And they begged for more brainteasers! So now I get to dust off my collection of logic puzzles and go through them. Turnabout’s fair play, though, so they have free license to stump me with whatever they can throw at me. =)

2011-04-15 Fri 18:43

Learning from my mood data

April 18, 2011 - Categories: geek, quantified

One of the unexpected benefits of switching my phone plan to something that includes unlimited international texting is that I can participate in nifty things like Experimonth, which is a month-long study about moods. I get regular text messages prompting me to rate my happiness on a scale of 1-10, and it graphs it for me. I can probably come up with similar graphs using KeepTrack and a bit of spreadsheet magic, but the convenience and the social data make this fun and interesting.

Here’s how my mood data stacks up so far:


I stay on a fairly even keel, with awesome happy experiences possibly any day of the week. Hmm, maybe I should track text notes too, so I can get a better handle on what causes the 10s or the 6s. It might also be interesting to combine the happiness ratings with my time analyses to see if there any correlations.

Here are the results they’ve collected so far:

Making better use of travel time

April 19, 2011 - Categories: kaizen, life, time, travel

I’m going to be in the office a lot more as I help with proposals or coach new hours. Time to think about how I can make the most of the time!

As it turns out, I’m not a particularly audio kind of person. I’ve carried podcasts and audiobooks before, but I rarely listen to them unless I’m listening with another person. I might listen to instrumental music while writing, avoiding songs due to the verbal interference.

If I’m going to the downtown office, I take my bike whenever I can. It’s good exercise, and takes about as much time as the walk and subway trip would’ve taken. With the subway’s occasional delays, biking is faster and more reliable.

If I need to take transit, how can I make the most of that time?

I like writing and mindmapping. I do a lot of both when I manage to find a seat on the subway. I almost always use my Android, as a full laptop feels out of place in the subway. The smartphone works well for one- and two-hand use, maybe even better than a tablet might. The small display forces me to be more concise – good! The 1.5 hour commute up to 3600 Steeles is enough time to flesh out a mind map and draft a few blog posts. Writing is my favourite travel activity. I think I get the most value from it.  

I nap sometimes, but this isn’t particularly restful. Maybe if I try using the nap timer so that I don’t get anxious about missing my stop….  

Reading is fun. I can go through two, three books a day, especially if I get a seat. Carrying books is less fun, though. I’ve read books on my Android and on my tablet, but if I’m going to be using either, I’d rather spend the time writing instead of reading. So I tend to save reading for when I’m eating, walking around the house, or going to bed.  

Sometimes I draw. This is a bit harder, and definitely requires a seat. I don’t want to stare at people on the subway, so I tend to draw from imagination or memory. Index cards and small notebooks are useful here.  

I think it would be interesting to track the specific results of my commuting time. Seeing X hours of travel in my weekly time analysis is one thing. Tallying up Y posts or Z books is another. It’ll be fun!  

How do you use your commuting time?

Compost magic and happiness

April 20, 2011 - Categories: gardening, life

The compost heap steamed in the afternoon sun. “I’d never seen it do that before,” said W-. Neither had I. The compost heap was merrily breaking down organic matter. We knew the theory, but it was incredibly satisfying to see it in practice.

I’d turned the compost last week, layering carbon-rich and nitrogen-rich material and liberally sprinkling the compost accelerator W- had wanted to try out. The compost had been unremarkable last week, but now there were earthworms squirming through it – good-sized ones too, not just the baby earthworms I’d seen the other day. The compost pile smelled earthy but clean, even citrus-y, thanks to the grapefruit peels from our kitchen. It was a good pile, and it would be a great amendment to the sandy soil of our back yard.

I probably don’t need to turn the compost heaps weekly, but I enjoy doing it when the weather is mild. It’s exercise, it gets me out in the garden, and it’s part of the cycle of life. It’s good to see our kitchen scraps return to the soil, and to know that the compost will support this season’s plants. But there’s more to it than that – there’s more value to it than simply the physical or horticultural benefits.

It feels like such an improbable joy. It’s this awareness, I think, that makes it easy to be happy. Everyday activities become special because of the stories along the way. This compost heap has memories from kitchen, garden, and love, and it will take all of that and make something new.

Mr. Fluffers: Stray or not stray?

April 21, 2011 - Categories: analysis, cat, decision, life

I have a soft spot for cats. Our cats are all indoor cats, never allowed out except on a leash. There are a number of neighborhood cats who turn up on our deck for food or company. Some of them are definitely housecats let loose to run outdoors. Others, we’re less sure about. Housecat or stray? It can be hard to tell. We feed them some food, set out water, pet them if they’re amenable. Sometimes they even get dishes of warm milk.

Of the cats who visit us, we think one cat is either stray or somewhat neglected. Mr. Fluffers (as J- has named him) is a collarless gray tuxedo medium-hair domestic cat and a regular visitor. Medium-hair cats need a lot of brushing to keep their coats unmatted, and Mr. Fluffers obviously hadn’t been brushed in a while. W- combed away many of the mats in his fur, and even trimmed the most stubborn ones. But if Mr. Fluffers is a stray or neglected cat, it would be good to have that situation sorted out.

We’ve been thinking of taking Mr. Fluffers to the vet or to Animal services to have him scanned for a microchip, but we need to think through the decision tree first.

  • If Mr. Fluffers has a microchip
    • If the registered owners are reachable
      • Hooray! Cat reunion, or at least clarity on the situation
    • If the registered owners are not reachale
      • See decision tree for no-microchip case.
  • If Mr. Fluffers does not have a microchip
    • Take him to Animal Services as a lost pet?
      • Owners who lost him may not claim him there, considering impounding fee
    • Check for spay/neuter and then release him back into the neighbourhood?

For Mr. Fluffers and other potentially stray cats, I’m tempted to try the first step of attaching a safety collar with a tag that says: Not a stray cat? Please call us at XXX-XXX-XXXX… =)

2011-04-10 Sun 11:18

Back in the garden, the perennials are coming back

April 22, 2011 - Categories: gardening, life

While raking the pine needles and fallen leaves to prepare the garden, I found new sprigs of oregano and parsley growing by the path. The straggly bit of thyme I’d given up for lost had a few green leaves it didn’t have before. The sage that withered in winter is starting to perk up, too.

Watching the perennials reestablish themselves in our garden will help me pass the time it takes for the annuals to sprout.

Isn’t that like life? Sometimes things take a long time. You can’t rush them. You have to fight the urge to tweak things, because you might make things worse. Give yourself something else to focus on. Find some quick wins to encourage you. What you’re waiting for might be ready before you notice.

2011-04-03 Sun 16:23

Weekly review: Week ending April 22, 2011

April 23, 2011 - Categories: weekly

From last week’s plans

  • Work
    • [X] Work on more items for project C – Rails is so awesome! Wrote tests, added a CMS using RichCMS
    • [X] Assist with proposal
    • [X] Follow up on migration plans for project I
    • [X] Prepare for code turnover for project I
    • [-] Plan travel
    • Handled more Idea Lab requests
  • Relationships
    • [-] Pick up gifts for Kathy and John
    • [X] Make gifts for Kathy, John, and Dan
    • [X] Plan gifts for Linda
    • [-] Host another study group: Good Friday break
    • [X] Plan cherry-blossom get-together
  • Life
    • [X] Work on red dress
    • [X] Read ahead: Latin homework

Plans for next week

  • Work
    • [ ] Get Vijay up to speed on project C
    • [ ] Review code for project I
    • [ ] Make travel plans
  • Relationships
    • [ ] Host tea party – home-made buns and bagels
    • [ ] Prepare for trip
    • [ ] Host study group
    • [ ] Withdraw USD, maybe convert some euros
  • Life
    • [ ] Finish hem for red dress
    • [ ] Write some more! =) Maybe braindump marriage stories?

Time analysis

Category This week Last week Delta Notes
Break 8.3 7.5 0.8
Drawing 0.6 1.3 -0.7
Exercise 1.8 3.8 -2.0
Learning 0.5 -0.5
Personal 14.7 0.9 13.8 8.4 hours sewing
Preparation 0.7 0.4 0.3
Routines – cooking 5.4 -5.4
Routines – general 6.8 6.4 0.4
Routines – tidying 1.9 9.6 -7.7
Sleep 60.4 61.0 -0.6
Social 18.2 6.2 12.0
Travel 4.5 7.3 -2.8
Work 37.1 48.7 -11.6 About 5 hours over, considering holiday
Writing 5.02 7.4 -2.38

Ruby on Rails is too much fun. I got carried away and spent Saturday working on it. That was a decent way to spend a rainy Saturday, particularly as I got as far as I could get in my sewing project. Tracking my time and noticing how much I’m over my targets does make me ask, though: where is that time coming from? What could I focus the extra time on instead? Can I be more awesome at work with just the target amount of time? Yes, probably, and more safely too – less risk of negative productivity.

Friday was a holiday, so I spent the day sewing. I finished most of my red dress, and I might sew the hem in today or tomorrow. I also worked on simple gifts for my sister and for W-‘s friend Dan. I think I’m starting to get the hang of sewing – hooray!


Monthly review: March 2011

April 24, 2011 - Categories: monthly

I found this in my draft folder. Might as well post it!

Plans for March:

Ah, March. Wrapping up the first quarter with several projects on the go and even more proposals underway. I’m starting to get the hang of this. I wish the paperwork was smoother, and that we had more people in IBM with whom I could share Drupal and Rails projects! =)

Warmer weather means it’s time to get the garden going. We still get a bit of snowfall, but the forecast is looking up. Plenty of rain means free watering and no fussing about with hoses that could still freeze.

From last month’s plans


  • [X] Shepherd more projects to signing and work
  • [X] Learn how to implement web services on Websphere Application Server
  • [X] Create and deliver more presentations
  • [X] Finish blog series on blogging


  • [X] Host another get-together
  • [-] Build a set of people to call once a week
  • [X] Check out Toastmasters again
  • [X] Practise driving


  • [X] Refine my plans
  • [X] Start seedlings

Plans for next month


  • [ ] Get a good prototype together for project C
  • [ ] Get the paperwork in place for project M
  • [ ] Prepare for training on project I
  • [ ] Help with other work
  • [ ] Assist with “Get Social, Do Business”


  • [ ] Put together more study group resources
  • [ ] Practise driving
  • [ ] Prepare for May trip


  • [ ] Start garden
  • [ ] Write and draw a lot
  • [ ] Focus discretionary time on plans and experiments

Writing macrons in Linux for Latin pronunciation

April 25, 2011 - Categories: emacs, geek, learning

Frustrated with the inability to search the scanned images of the 1822 Latin textbook we’re using (Albert Harkness’ An Easy Method for Beginners in Latin – get the PDF, the full-text version is badly OCRed), W- has taken it upon himself to recreate the public-domain textbook as a fully searchable TiddlyWiki (sans illustrations). This meant that he needed to type in a great number of macrons in the words, and that meant finding a better way than copying and pasting from KDE’s character map.

Macrons turn up in many languages. In Japanese, you use them to indicate that vowels are doubled. 大阪(おおさか)can be romanized as Oosaka or Ōsaka. In Latin, beginner textbooks often use macrons (macra) to indicate pronunciation. (Why do we care about pronunciation for a dead language used mostly in church hymns? W- and I actually want to be able to use this conversationally, at least with each other. After all, if you don’t use it, you lose it.)

I suggested Emacs. In Emacs, it’s just a matter of using M-x set-input-method to choose latin-alt-postfix. With that input method, you can add macrons to letters by typing – after them. For example, typing “a -” will result in ā. Not only that, dynamic abbreviations (M-/) make it easier to retype words you’ve already written before.

W- wouldn’t hear of using Emacs, being almost as firmly wedded to vi as he is to me. ;)

Instead, we spent some time figuring out how to set up KDE and gvim to make it easier for him to type in macrons. HTML character sequences were out of the question, of course. W- used KDE’s settings to map his unused Windows key and menu key to compose keys. That made it easier to produce ē, ī, ō, and ū using the key sequence “Compose + hyphen + vowel”. However, “Compose + hyphen + a” produced ã, not ā. This was probably a bug based on some issue reports we found on the Net, but the suggested fix didn’t work (im-switch -c to change to default-xim). I found a page describing an .XCompose fix, customizing the key sequences. He copied the relevant key sequences from en-US’s locale settings for Compose in /usr/share/X11, restarted X, and it worked.

Now he’s off and typing!

2011-04-24 Sun 23:21

Stuff or experiences

April 26, 2011 - Categories: analysis, decision, finance, life, reflection

Soha wanted to know what I thought about the differences between spending on stuff and experiences. This took me several drafts to figure out, and I don’t think I’m all the way to a clear understanding yet, but I’m trying to say something I haven’t really found in the personal finance books and blogs I read.

Stuff or experiences? Neither. It’s a false dichotomy, and one that often starts with the wrong question: “What will make me happy?” If you aren’t happy, it’s very difficult to buy happiness. Probably impossible.

What will make me happier than I am now?” – is that a better question? Not really. What’s “happier”, anyway, but something that draws an ever-moving line between you and some ideal?

I like this question instead: “What do I want to learn more about?” No guarantee of happiness, no pursuit of happiness, just curiosity. Happiness doesn’t have to be pursued. It just is. Happiness can be a chosen, developed response. So what I decide to spend money or time on is determined more by what I’m curious about.

I confess to having a strong distrust for people trying to sell me ways to happiness. A designer handbag won’t make me happy (or happier). Neither will a three-week vacation of idle relaxation on a pristine beach. Quite possibly even an enlightening weekly course on meditation wouldn’t do the trick. My life will be a good life even if I never stay in the best suite in a five star hotel, see the aurora borealis, or learn to fly a plane (ideas from Richard Horne’s “101 Things to Do Before You Die”, which does have amusing forms). It will simply be different if I do, and that only matters if I can do something with the experiences and ideas I pick up and recombine.

In fact, I’d rather spend on stuff – the raw ingredients of an experience – than on pre-packaged experiences. I’d rather spend on groceries for experiments than on a fancy meal at a restaurant or a cooking class with a famous chef. I’d rather spend on lumber and tools to build a chair, than spend on a cottage rental. Turns out this is based on sound psychological principles: we value what we work on more than what we buy. (For more on this, read Dan Ariely’s “The Upside of Irrationality.”)

You can’t untangle good stuff from experiences. The bag of bread flour I buy leads to the experience of making home-made buns, the experience of enjoying them with W-, and the lasting enjoyment of developing skills and relationships. Fabric and thread become simple gifts accompanied by stories.

Besides, it doesn’t have to be the question of what you want to spend money on. That’s just a matter of budgeting. Many things are possible, but you may save up a little longer for things that require more money. What it really comes down to is a question of time: do you want to do this more than other things you could do? (For example: yes to cooking and gardening; a theoretical yes to improv, but it’s not as high as other things on my list, so I focus on other things; no to the massage deals I see on dealradar.com when I wander by.) If yes, then budget appropriately. Don’t get distracted by low-cost, low-value activities or expenses. (Or worse: high-cost, low-value ones.)

If you feel you’ve made a mistake about spending, don’t beat yourself up over it. Learn and make better decisions next time. Not saddling yourself with consumer debt helps, as debt has a way of multiplying regrets. Stuff can be second-guessed more than experiences can, but it’s even better to break the habit of second-guessing yourself. Think of your sunk costs as tuition. You’ve paid for the learning, now go and use it.

Money can be considered in terms of time, too. Is the incremental benefit you might get worth the opportunity cost of enjoying other things earlier, the compounding growth you may give up, or the corresponding days of freedom in the future? (For me: yes to some wedding photography in order to reduce friction, but no need to get the top wedding photographer; yes to a wonderful bicycle I feel comfortable with; no to the latest version of the Lenovo tablet, although I may reconsider in a year or two.)

Stuff or experiences? Start with what you want, not what other people want to sell you. Treat it as an ongoing experiment. Evaluate your purchases and improve your decisions. Think about what you want to spend your time on, not just money. Good luck!

2011-04-24 Sun 16:45

The enemy of your enemy is your friend: mnemonics and negative integers

April 27, 2011 - Categories: education, learning, life, teaching

From April 26, Tuesday: J-‘s studying for Thursday’s “in-class performance assessment” on integers. (In-class performance assessment? What happened to the good old word “quiz?” Too much anxiety?) We’re spreading the review out over the next two evenings.

The test will cover adding and subtracting positive and negative numbers. J- and her study group are already off multiplying and dividing (which apparently don’t turn up until grade 8 – really?). W- made up a quick worksheet for J- to practise adding, subtracting, multiplying, and dividing integers.

“The enemy of your enemy is your friend,” I heard her say as she solved the exercises, writing down the correct signs for all the products and quotients. I grinned. I’d taught them that mnemonic two weeks ago. It’s a way to remember the results of multiplying or dividing numbers.

As I explained to the kids: you don’t have to stick to this in real life. Pou can certainly be friends with the friends of your enemy. But this might help you remember the signs for multiplication and division:

  • The friend of your friend is your friend. Positive times positive is positive.
  • The friend of your enemy is your enemy. Positive times negative is negative.
  • The enemy of your friend is your enemy. Negative times positive is negative.
  • The enemy of your enemy is your friend. Negative times negative is positive.
A B Result
Friend + Friend + Friend +
Friend + Enemy – Enemy –
Enemy – Friend + Enemy –
Enemy – Enemy – Friend +

2011-04-26 Tue 20:05

Glad to see it stuck in her head! She answered all the exercises correctly (and quickly, too).

Remote training that rocks

April 28, 2011 - Categories: ibm, presentation, speaking

Some IBMers convinced me to share presentation tips with Lotus instructors. Here’s what I’m thinking about:

You know what’s really difficult in training? Staying interesting – and /interested/ – session after session after session. I used to teach university, and I’ve also given lots of presentations as an IBMer. It can be tough to be energetic and engaged when giving a presentation that you’ve given many times before. Even if you’re giving a new presentation, if it’s your umpteenth lunch-and-learn this year, you might feel tired just thinking about it.

I want to share some tips that help me when I’m giving presentations, and I want to hear from you what works for you and what you want to do even better.

First (and probably the most important for people who give presentations a lot): If you’re bored by your own presentations – and admit it, this can happen – it’s very hard to avoid boring others. How can you stay interested?

Let’s take the worst-case scenario: Your job is to present XYZ every week. Same presentation. Same slides. You could do it in your sleep.

Instead of just going through the presentation, look for small ways you can improve each time. Experiment with your timing. Try different examples. Ask questions. Try different questions. See if standing up makes a difference in your voice. Experiment with the capabilities of your web conference. This is a great time to experiment, actually – when you’ve practically memorized the material and can recover confidently from anything Murphy’s Law throws at you.

Would that help you stay interested? Yes. And other people will be interested because you’re interested. And you’ll be a better presenter at the end, too.

So that’s a good start. Let’s say your work is better than that. Let’s say you can improve your training as you learn – make new slides, add more resources, and so on.

Save time and create more value. Record your presentation. Share your slides and your speaker notes. Now you can give yourself a better challenge: How can you improve your training so that it’s really worth attending? What extra value will people get from you that they can’t get from recordings, slides, or speaker notes?

It’s a good idea to build plenty of room for interaction into your presentations. That’s because people can get everything else from the extra resources, but this is where they can really ask and learn. It’s also a great way for you to learn from people: what’s important to them, what else they want to learn, how to make your training better. Teach less, listen more.

Attend other people’s training sessions. See what you like – and what drives you crazy. Take notes.

It’s also a good idea to work on the next actions for your presentation. You should have a clear idea of what you want people to do after your presentation. What changes do you want them to make to the way they work? What resources do you want them to check out or bookmark? As you learn more by teaching people, build up those resources and refine those next steps. This is one of the areas where you can make a real difference as a trainer – you can help people get ready for and commit to change.

You can do lots of things to make your next steps even better. Can you make a checklist that people can save and follow? Can you share recordings and other resources? Can you tell people about other training they’ll find useful? For example, after this presentation, I want you to pick one small, specific way you can improve your next training session, and practise using it until you get the hang of it.

Let’s talk about some of those specifics. Here are three quick presentation tips that might help you make even better use of your web conference (and if you’re not using a web conference for remote training yet, switch to one!).

First: You can use the text chat for Q&A throughout your talk. Why? It’s important to see when people have questions. It’s hard for most people to interrupt speakers on the phone. You can pause for questions, but you’re probably not going to pause for questions often enough, and it breaks the momentum. Some people might use the hand-raising feature in web or phone conferences, which is good, but it’s even better to ask people to type their question into the text chat if possible. Why? You can prioritize questions, you can adjust your presentation on the fly, and you might even find that people are answering each other’s questions. If you find the text chat distracting, have a moderator or buddy keep an eye out for questions, or take a look at it every so often.

Second: Make your summary your Q&A slide. I can’t tell you how many presentations I’ve seen that end on “Thank you!”, “Q&A”, or some other mostly-blank slide. This is probably the slide that will be shown the longest – make it count! Show a one-slide summary that helps people remember what they want to ask questions about and reiterates the next steps you want them to take. Don’t let your session trail off into Q&A, either. 5-10 minutes before the end of your session, summarize the key points and review the next actions so that people can remember them.

Third: Consider adding video. Webcams are inexpensive and you can make your presentation more engaging. If you do use video, make sure your background isn’t distracting, and warn other people who might walk in!

So that’s what I’ve got to share, and I hope you’ve found one or two ideas you can use to improve your presentations. Let’s talk about it! What’s working well for you right now? What do you want to improve?

2011-04-27 Wed 17:56

Giving a presentation using Autodesk Sketchbook Pro and a web conference

April 28, 2011 - Categories: kaizen, presentation, sketches, speaking


I gave a presentation using Autodesk Sketchbook Pro and desktop-sharing in Lotus Live, and it worked out really well. I think I’ll do this for as many presentations as I can get away with. =) I’ll post a link to the recording when it’s up. It was much more fun and much more flexible than annotating in Microsoft Powerpoint. Here’s how I did it.

I pre-drew my one-slide talking points on a single layer so that I wouldn’t have to count on thinking, talking, and drawing all at the same time. I used an idea from children’s activity books: instead of drawing, you can use the eraser to make content appear, like the way you would scratch off black paint to reveal colours. I created a layer on top of my "slide", and I flood-filled this layer with white. I set the opacity of this layer to 90% so that I could see the traces of the images on the layer underneath. That way, I could use an eraser to reveal the sketches below. I selected a large eraser to make it even easier.

I also wanted to be able to draw new sketches or highlight items, so I selected a red ballpoint pen as my primary brush. Red goes well with black and white. Because my Lenovo X61 tablet pen has a pen tip and an eraser tip, I could easily flip between revealing pre-drawn sketches and adding new sketches. I drew on the the white layer that I gradually erased to reveal the underlying sketches. This meant that I could quickly remove accents or new sketches without disturbing my pre-drawn sketches.

Just in case I needed to go into more detail, I added another layer on top, filled it with white, and hid the layer. That way, I could always unhide it (thus blanking out everything else I’d drawn), add a new transparent layer on top, and sketch away.

I hid all the tools I didn’t need, and kept the layers window open on the side so that I could easily switch to another layer. Then it was time to share my screen, turn on the webcam, and give my presentation!

Here’s how you should set up your layers, from top to bottom:

  1. White layer, so that you can easily add layers on top of this for new drawings
  2. Translucent white layer with parts erased
  3. Pre-drawn sketches
  4. White background

The technique should work just as well with any drawing program that supports layers, a web conference that supports screen-sharing, and a tablet or tablet PC that lets you draw or erase easily.

Try it out and share your tips!

Study group: Flashcards and the Leitner method

April 29, 2011 - Categories: education, geek, learning, life, teaching

Flashcards are great for memorizing. They break topics down into learnable chunks, develop random-access knowledge, and turn learning into a game with visual progress. Flashcards also make it easier for people to learn together, testing each other on concepts.

We’ve been teaching the kids in the study group using flashcards for multiplication facts, fractions, and the Greek alphabet. We also teach them how to use cognitive theory to improve learning–well, perhaps not in those words. For example, when J- wants to help her friends learn the Greek alphabet (having handily mastered recognition herself), we encouraged her to cycle through letters in small sets (5 to 7 characters at a time) instead of running through all the letters in one go. It’s the same technique we used when they were learning the multiplication table.

J- also shared the mnemonics she used to remember many of the Greek letters. For example, she described λ as “Lambda, like Mary had a little lamb, going down a hill.” They’re quickly developing in-jokes, too, like the way V- calls α Pisces, they call Μ big mu, and ω makes the kids laugh.

W- and I have our own flashcards: Dutch, in preparation for our upcoming trip, and Latin, because we’re learning that too. Electronic flashcards offer convenience, of course, but paper flashcards are so much more fun.

In this week’s study group, we plan to teach the kids about the Leitner system for flashcard efficiency. I found out about the Leitner system by reading the comments in the Emacs flashcard.el mode years ago, when I was learning Japanese. The Leitner system optimizes learning by reducing the repetitions for cards you know well and increasing the repetitions for cards you answer incorrectly. It works like this:

Start with your flashcards in one group (group 1). Review the cards in a group. If you answer a card correctly, move it to one group higher. If you answer a card incorrectly, move it back to group 1. Repeat with each group of cards. When you answer a card in group 5 correctly, you can archive the card until you want to do a general review again. This weeds out the cards that you can correctly answer five times in a row and lets you focus on the cards that you can’t consistently answer.

I think the Leitner system is really cool. It’s an elegant algorithm with a physical implementation. Neat!

2011-04-24 Sun 14:16

Weekly review: Week ending April 29, 2011

April 30, 2011 - Categories: weekly

From last week’s plans

  • Work
    • [X] Get Vijay up to speed on project C
    • [X] Review code for project I
    • [X] Make travel plans
    • Got project I- sorted out, hooray!
    • More work on project C – lots of things to fix in user acceptance testing
    • Worked on Idea Lab offering
    • Sorted out my utilization
  • Relationships
    • [X] Host tea party – home-made buns and bagels
    • [X] Prepare for trip
    • [X] Host study group
    • [-] Withdraw USD, maybe convert some euros
    • Made battery-powered USB charger using MintyBoost kit
    • Got a haircut
    • Helped work on typing in “An Easy Method for Beginners in Latin”
  • Life
    • [-] Finish hem for red dress
    • [X] Write some more! =) Maybe braindump marriage stories?
    • Checked out Amazon Mechanical Turk – not worth my time, would rather write =)
    • Wrote future posts

Plans for next week

  • Work
    • [ ] Tidy up project C
  • Relationships
    • [ ] Hang out with my family! Yay!
    • [ ] Celebrate my sister’s wedding!
    • [X] Tidy up the strawberry and blueberry plants in the garden
    • [X] Start some bitter melon
  • Life
    • [ ] Draw! =)

Time analysis

Category This week Last week Delta Notes
Break 1.0 8.3 -7.3
Drawing 0.5 0.6 -0.1
Exercise 2.7 1.8 0.9
Learning 13.5 13.5 Lots of Latin and hacking
Personal 0.9 14.7 -13.8
Preparation 1.5 0.7 0.8
Routines – cooking 0
Routines – general 10.7 6.8 3.9
Routines – tidying 2.6 1.9 0.7
Sleep 57.6 60.4 -2.8
Social 19.3 18.2 1.1 Study group
Travel 2.7 4.5 -1.8
Work 43.9 37.1 6.8
Writing 11.0 5.02 5.98 Saving up posts

Wrapping up loose ends at work. Project I is well-sorted out, project C slightly less so. I let a few embarrassing bugs slip through to user acceptance testing – I really should find a way to make it easier and more fun to do manual testing instead of relying on automated tests! ;)

Looking forward to seeing my family again!


"An Easy Method for Beginners in Latin" and macron-insensitive search for Tiddlywiki

April 30, 2011 - Categories: geek

As previously mentioned, W- and I are re-typing parts of Albert Harkness’ 1822 textbook "An Easy Method for Beginners in Latin", which was digitized and uploaded to Google Books as a PDF of images. The non-searchable book was driving W- mad, so we’re re-typing up lessons. It’s a decent way to review, and I’m sure it will be a great resource for other people too.

Here’s what we have so far: An Easy Method for Beginners in Latin, Lessons 1-9

We’re starting off using Tiddlywiki because it’s a wiki system that W-‘s been using a lot for his personal notes. He’s familiar with the markup. It’s not ideal because Google doesn’t index it, the file size is bigger than it needs to be (0.5MB!), and it’s Javascript-based. It’s a good start, though, and I should be able to convert the file to another format with a little scripting. My first instinct would be to start with Org Mode for Emacs, of course, but we already know what W- thinks of Emacs. ;)

Most of the text was easy to enter. Harkness is quite fond of footnotes, numbered sections, and lots of bold and italic formatting. We’re going to skip the illustrations for now.

Typing all of this in and using it as our own reference, though, we quickly ran into a limitation of the standard TiddlyWiki engine (and really, probably all wiki engines): you had to search for the exact word to find something. In order to find poēta, you had to type poēta, not poeta. That’s because ē and e are two different characters.

We wanted to keep the macrons as pronunciation and grammar guides. We didn’t want to require people to know or type letters with macrons. Hmm. Time to hack Tiddlywiki.

TiddlyWiki plugins use Javascript. I found a sample search plugin that showed me the basics of what I needed.

I considered two approaches:

  1. Changing the search text to a regular expression that included macron versions of each vowel
  2. Replacing all vowels in the Tiddler texts with non-macron vowels when searching

The first approach was cleaner and looked much more efficient, so I chose that route. If the search text contained a macron, I assumed the searcher knew what he or she was doing, so I left the text alone. If the text did not contain a macron, I replaced every vowel with a regular expression matching the macron equivalents. Here’s what that part of the code looked like:

s = s.replace(/(.)/g, "['/]*$1");
if (!s.match(macronPattern)) {
  // Replace the vowels with the corresponding macron matchers
  s = s.replace(/a/, "[aāĀA]");
  s = s.replace(/e/, "[eēĒE]");
  s = s.replace(/i/, "[iīĪI]");
  s = s.replace(/o/, "[oōŌO]");
  s = s.replace(/u/, "[uūŪU]");

That got me almost all the way there. I could search for most of the words using plain text (so poeta would find poēta and regina would find rēgīnae), but some words still couldn’t be found.

A further quirk of the textbook is that the characters in a word might be interrupted by formatting. For example, poēt<strong>am</strong> is written as =poēt”am”= in Tiddlywiki markup. So I also inserted a regular expression matching any number of ‘ or / (bold or italic markers when doubled) between each letter:

s = s.replace(/(.)/g, "['/]*$1");

It’s important to do this before the macron substitution, or you’ll have regexp classes inside other classes.

That’s the core of the macron search. Here’s what it looks like. I was so thrilled when I got all of this lined up! =)


And the source code:

// Macron Search Plugin
// (c) 2011 Sacha Chua - Creative Commons Attribution ShareAlike 3.0 License
// Based on http://devpad.tiddlyspot.com/#SimpleSearchPlugin by FND

if(!version.extensions.MacronSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.MacronSearchPlugin = { installed: true };

if(!config.extensions) { config.extensions = {}; }

config.extensions.MacronSearchPlugin = {
  heading: "Search Results",
  containerId: "searchResults",
  btnCloseLabel: "Close search",
  btnCloseTooltip: "dismiss search results",
  btnCloseId: "search_close",
  btnOpenLabel: "Open all search results",
  btnOpenTooltip: "Open all search results",
  btnOpenId: "search_open",

  displayResults: function(matches, query) {
    story.refreshAllTiddlers(true); // update highlighting within story tiddlers
    var el = document.getElementById(this.containerId);
    query = '"""' + query + '"""'; // prevent WikiLinks
    if(el) {
    } else { //# fallback: use displayArea as parent
      var container = document.getElementById("displayArea");
      el = document.createElement("div");
      el.id = this.containerId;
      el = container.insertBefore(el, container.firstChild);
    var msg = "!" + this.heading + "\n";
    if(matches.length > 0) {
        msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
      this.results = [];
      for(var i = 0 ; i < matches.length; i++) {
        msg += "* [[" + matches[i].title + "]]\n";
    } else {
      msg += "''" + config.macros.search.failureMsg.format([query]) + "''\n"; // XXX: do not use bold here!?
    wikify(msg, el);
    createTiddlyButton(el, "[" + this.btnCloseLabel + "]", this.btnCloseTooltip, config.extensions.MacronSearchPlugin.closeResults, "button", this.btnCloseId);
    if(matches.length > 0) { // XXX: redundant!?
      createTiddlyButton(el, "[" + this.btnOpenLabel + "]", this.btnOpenTooltip, config.extensions.MacronSearchPlugin.openAll, "button", this.btnOpenId);

  closeResults: function() {
    var el = document.getElementById(config.extensions.MacronSearchPlugin.containerId);
    config.extensions.MacronSearchPlugin.results = null;
    highlightHack = null;

  openAll: function(ev) {
    story.displayTiddlers(null, config.extensions.MacronSearchPlugin.results);
    return false;

// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
  var macronPattern = /[āĀēĒīĪōŌūŪ]/;
  var s = text;
  // Deal with bold and italics in the middle of words
  s = s.replace(/(.)/g, "['/]*$1");
  if (!s.match(macronPattern)) {
    // Replace the vowels with the corresponding macron matchers
    s = s.replace(/a/, "[aāĀA]");
    s = s.replace(/e/, "[eēĒE]");
    s = s.replace(/i/, "[iīĪI]");
    s = s.replace(/o/, "[oōŌO]");
    s = s.replace(/u/, "[uūŪU]");
  var searchRegexp = new RegExp(s, "img");
  highlightHack = searchRegexp;
  var matches = store.search(searchRegexp, null, "excludeSearch");
  config.extensions.MacronSearchPlugin.displayResults(matches, text);

// override TiddlyWiki.search() to ignore macrons when searching
TiddlyWiki.prototype.search = function(s, sortField, excludeTag, match) {
    // Find out if the search string s has a macron
    var candidates = this.reverseLookup("tags", excludeTag, !!match);
    var matches = [];
    for(var t = 0; t < candidates.length; t++) {
        if (candidates[t].title.search(s) != -1 ||
            candidates[t].text.search(s) != -1) {
    return matches;

} //# end of "install only once"

To add this to your Tiddlywiki, create a new tiddler. Paste in the source code. Give it the systemConfig tag (the case is important). Save and reload your Tiddlywiki file, and it should be available.

It took me maybe 1.5 hours to research possible ways to do it and hack the search plugin together for Tiddlywiki. I’d never written a plugin for Tiddlywiki before, but I’ve worked with Javascript, and it was easy to pick up. I had a lot of fun coding it with W-, who supplied plenty of ideas and motivation. =) It’s fun geeking out!