Blog-o! Notes from latte.ca

Tue, 30 Jun 2009

I started working for Mozilla Messaging a while ago, and since David Wolever asked me how I used Mercurial and the MQ extension, I thought I would put up some notes on how I’m currently using them in my day-to-day work. Of course, the stuff I’m doing now is a little different than what I’ve done in any of my previous jobs, so I’m not sure how useful any of the following will be to anyone who isn’t contributing to an open source project.

First, let’s talk a little bit about how I have my Work directory set up. The first thing I did when I started working on the Thunderbird source code was to pull down a clean copy of the source into a directory named “src-base”. The purpose of that directory is to always contain a clean copy of the upstream source code so that when I want to update the various branches I have (five, at last count), I only need to download the changes from the Mozilla repo once, and I can then propagate them from src-base to the other branches. I got the idea to do that from the Bazaar-NG developers, and I think it has helped to keep my bandwidth usage down. It might cause a problem if I was sharing my branches, but since Thunderbird seems to revolve around submitting patches to bugzilla, it works out pretty well.

The next thing I did was to clone src-base into a directory named “add-reply-list-button” (because I was writing a patch to add a Reply-To-List button :), go into that directory, and type hg qinit -c to create an mq repository, and put the mq repository itself under version control. (I didn’t actually do that the first time, and was quite annoyed that I couldn’t revert changes I had made in my patch queue.) The other part of that is that I’ve aliased mq to hg -R $(hg root)/.hg/patches. This lets me type mq commit to commit the changes to the patch.

So, now we’re at my day-to-day work. If I’m working on a bug that I’ve already got a patch started for, I cd to the appropriate branch, type hg qseries to see where I am, and hq qpush or hg qpop to get to the patch I want to work on. Then I make my changes, and when I’m happy with the results of hg diff, I type hg qrefresh to put the changes into the patch. After that, I use hg qdiff > ../branch-name-bugnum-description.diff to get a patch that I can upload to bugzilla. At this point, I usually load the patch into Vim, and search for some of the mistakes I’ve made in the past. (/^+.*[[:space:]]+$, and /dump caught a lot of my initial mistakes. Now I’ve moved on to things that are tougher to check for, like putting open-parens on a new line instead of on the previous line.) I usually go through a couple of cycles of hg qrefresh/hg qdiff … before I’m happy with the patch. Once I am, I type mq commit -m "Updated patch to fix foo and bar." to save the state of the patch, and then I upload it.

[Posted at 22:31 by Blake Winton] link
Wed, 24 Jun 2009

Both the girls "graduated" last week, Delphine from Senior Kindergarten, and Cordelia from Nursery School. There is some division of opinion on these early graduations: Some people seem to think they're idiotic—graduating from kindergarten?! Seriously?—while others, mostly parents, think they're charming. I'm in the latter camp: a rite of passage is a rite of passage, even if you're only three feet tall. Both Cordelia's life and Delphine's are going to be very different in September, and I think that's worth acknowledging.

Cordelia is starting Junior Kindergarten in fall, in the mornings. We haven't met her teacher yet because she's going to be new to the school, and I have no idea who else is going to be in her class. All we know is which room she's going to be in. She's familiar with the school, though, from dropping off and picking up Delphine for the last two years. She's thrilled to be going to "my sister's school". (She refers to Delphine almost exclusively as "my sister".)

Delphine is starting Grade One in fall, and we'll find out tomorrow who her teacher is going to be. She's alternately scared and excited about Grade One. I'm excited about finally being able to buy school supplies.


Cordelia has a new passion: chewing gum. I always used to judge, a teeny bit, people who let little kids chew gum, but as in so many ways, I have become that which I judged. I have to limit her to one piece of gum a day. She likes the minty kinds.

Delphine's new passion is Dirty Jobs, which she likes to watch every day. I figure it's an informative window into the grown-up world, and it will give her some idea of how much work goes into making the food and objects which appear in our house. And into cleaning skulls and preparing owl pellets. She calls Mike Rowe "Mark".


Delphine and Cordelia were enjoying a marathon TV session on Saturday morning, when Saddle Club came on. Saddle Club is one of those cheap soap operas in which Australia seems to specialise—this one is set at some kind of horsey school and is aimed at, I assume, "tweens". Delphine doesn't watch it regularly but she enjoys it when she catches it. I think it's rubbish, and when it came on I huffed and rolled my eyes. Delphine said, "What?"

"I don't like this show. There's too much melodrama and people getting upset with each other."

Blake cut in with, "They don't talk to each other about their problems, they just get mad."

I said, "No-one acts like that in real life."

Delphine gazed at us levelly. "Maybe they just want to make it exciting."

Well, I guess I don't need to worry about her media awareness.


I went to Value Village today. (Blake stayed home and looked after the children, so they don't appear in this story. Sorry.) My mum sent me some money for my birthday, because I said I wanted to buy myself some new clothes. I thought the money would go further if I shopped at VV instead of Addition-Elle or Lands' End.

The trouble with living in a middle-class neighbourhood surrounded by more middle-class neighbourhoods is that you have to travel a long way to get to a second-hand store. My second-hand-shopping maven friend told me that the Value Village at Landsdown is the best one, so off I trekked. A bus trip (it was too hot to walk to the subway station) and a long subway ride (with a transfer!) later, I arrived at Landsdown. I can't comment on how nice the Landsdown area is, because it was 30 degrees today and there's a municipal strike on; I imagine every Toronto neighbourhood looked like shit today.

The Value Village at Landsdown is huge, it's like a small Zellers. I managed to find beautiful dresses for the girls to wear to the two weddings we're invited to this summer, and then I started shopping for myself.

How is it possible that I'm too fat to be a size 18 in the dress section, but too thin to be a size 20? (Also why are there so many ugly dresses? Did the Golden Girls Fan Club and Drag Show recently clean out its closet?) Further, how is it then possible that I can be too thin to be a size 18 in the pants section? How is it possible that there was only one cute dress that fit me, but dozens of sweaters and shirts? Do fat women not buy cute dresses? Or do they buy them and then hang on to them for dear life?

The most frustrating thing was how unevenly placed the sizes were; I found clothes that fit me (and many more that didn't) in the size 16, size 18 and size 20 sections. Some of those clothes had the original store size labels on, and the VV staff had faithfully placed the clothes in the section that matched the label. Which, of course, is a failure. I'm an XL at Cotton Ginny, a L at Tabi, and a 1X at Addition-Elle, but I don't fit into Reitman's XL, or really most other labels' XL. I'm a 16 pant at Lands' End and a 18 at Addition-Elle. So even if you do place clothes in the label-appropriate section, you won't get consistency in section sizes.

VV has a chance to correct the vagaries of women's clothing sizes; surely it would be simple to have a template in the back room against which staff could hold up each donated item of clothing, to sort it into the right bin. Even if you only picked one dimension—waist for pants, say, and bust for dresses—once you found the size that matched your body, you would be one variable closer to finding something that fit.

This was only my second VV trip, and I think I've decided it isn't worth it. It's a long trip to get there, it took me forever to find clothes to try on, I had to wait for a change room, and then only about fifteen percent of them fit. And after all that, of course, it's another long way to come home again. If there were a location nearer to here I might go again—they're opening some new locations, but I fear we are too embedded in Richville to ever get a thrift shop nearby.

After all that, I didn't even find a dress for myself to wear to the weddings. Tomorrow I will call the local consignment stores (without much hope) to see whether they carry my size. I expect I will end up going to Addition-Elle, which is no loss; I still have a good chunk of my birthday money left. (That's the great thing about VV: two sweaters, three shirts, one pair of pants, two pairs of earrings, a hat, and two kid's dresses for $70. Seriously!)

[Posted at 22:36 by Amy Brown] link
Sat, 20 Jun 2009

[Posted at 16:38 by Amy Brown] link
Thu, 18 Jun 2009
Getting Twitter 2.0

(I rewrote this entry to be shorter and hopefully more useful.)

I'm on Twitter. I love Twitter—it's a fun way to stay connected, get the latest news, and to share ideas and news of my own.

Some of my friends have signed on to Twitter, tried it for a couple of days, and never returned. I'm going to try and explain how I use Twitter which makes it so fun and useful for me, in the hope that people will try it, or try it again. Because when it comes to Twitter, the more the merrier!

Before I go on, I will quickly explain how Twitter works. You probably already know it's a site where you can post 140 character messages. The messages can be read by anyone who "follows" you.

Your Twitter page also shows your "Twitter feed", which is a display of all the messages ("tweets") posted by people you follow. Note that you don't have to follow the people who follow you, and the people you follow don't have to follow you.

Getting Started

Signing up to Twitter is easy—the hardest part is picking a good username. After you have signed in, fill in your Location and a short Bio, to make it easier for people to find you and decide whether to follow you.

Finding your Tweeps

Once you're in, you need to follow some people. But who, and how many? The real key to making Twitter work for you is balancing the number of people you follow and the frequency with which you check in. If you don't follow enough people, Twitter will be boring and pointless and you'll lose interest. If you follow too many people, your feed will be too busy and you won't be able to keep up.

I'm going to throw out the number 75 as the minimum number of people you should follow to keep things interesting. Of course, it will depend how voluble your followees are, and how often you can check in to Twitter. (I follow 225 people, and check in four or five times a day, and I'm seldom either bored or overwhelmed.)

Finding people to follow is the fun part. There are plenty of ways to find people. You probably already know a few people who are on, so find out what their Twitter usernames are and check out who they are following like this:

  • Go to the person's Twitter page: http://www.twitter.com/username
  • On the right you'll see a number with "following" under it—click on that number to see the list of people your friend follows.
  • Now you can click "follow" to follow anyone you like the look of. If you're not sure, you can click on any username to go to their Twitter page, which will show you all their tweets from latest to oldest.

Follow anyone who looks interesting—it's really easy to unfollow people later. (When you follow someone they get an email notification, but when you unfollow them they don't.)

You can also find people using the "Find People" option, at the top of the Twitter window. There, you can find people who are in your email contacts, or you can search for people by name.

How do you decide who to follow? That's up to you; I look for people who post interesting things about what they are doing, and interesting links. Funny is good too. I avoid people who only seem to @reply to other people, and people who mainly RT (retweet). Interaction is nice but I like to read original thoughts too.

You can also follow institutions and entities you have a relationship with in real life, like @starbucks or @globebooks, and of course a few celebrities are fun. I follow @SlashHudson, @Jeffrey_Donovan, @donttrythis, among others.

Another interesting way to find people is Tweetmondo, a site which lets you find Twitterers who live nearby. I found a couple of people in my neighbourhood, and it's neat to read their tweets about weather and local happenings.

How Often To Twit

Twitter works best for people who are online all the time, but you can still have fun with Twitter if you only get to your computer once or twice a day—you will just have to scroll down a few pages to catch up, or only read the latest couple of pages and your @replies.

I don't think it would work to check Twitter less than once a day, or maybe every couple of days at the very least. Twitter is an of-the-moment medium and the more involved you are, the more you'll get out of it.

About @replies

One of the best things about Twitter is the @reply system. @replies are a way to directly address another Twitter user. You put their username in your tweet, with an @ sign before it. For example, if you want to @reply me, include "@amyrhoda" in your tweet. Your tweet will be specially flagged for me to read when I log on.

You can also reply to a specific tweet by clicking the little curly arrow which appears to the right of the tweet when you mouse over it.

To read your @replies, click on @yourusername on the right-hand column of the Twitter page. If you don't have much time to Twitter, you can always check your @replies page to make sure you read and respond to tweets addressed directly to you.

If you want to send a message to another user, but don't want it to be public, start the message with "d username". This will send them a Direct Message which can only be read by that user. Read your Direct Messages by clicking on the Direct Message link on the right column of your Twitter page.

Following Back

As I mentioned above, you will receive an email message whenever someone follows you. Do you have to follow back everyone who follows you? No. I tend to set the "should I follow" bar a little lower for new followers, but I still won't follow you if you're not a real person, if you don't have any updates, or if you're unspeakably lame. Say.

Have Fun

Some people take Twitter way too seriously. It's not a popularity contest. It's not a major marketing tool. You're not obliged to tweet, to retweet (repeat someone else's tweet to pass it on to your followers), to @reply, to follow certain people, to participate in #followfriday, or anything else.

Use Twitter however you like, however it works for you. It's a great, fun way to connect with people. You just have to find the right set of Tweeters to follow, and figure out the rhythm of Tweeting that works for you.

[Posted at 21:56 by Amy Brown] link
Fri, 12 Jun 2009
Two Books About Compost

I just started making compost in my backyard, and because I can't scratch my nose without intensive research, I took a couple books out of the library. Both named Compost.

Compost by Ken Thompson is a glossy, beautifully produced little book published by the always-extravagant DK. As well as being gorgeously designed and illustrated, it's simple, to-the-point and includes everything you need to know to get started composting. It's thorough and scientific, yet readable and above all, encouraging.

Compost by Clare Foster covers about the same material as the Thompson, but it's much dryer, preachier, and lacks the pretty pictures.

I also re-read Freakonomics by Steven D. Levitt and Stephen J. Dubner for the non-fiction book club at the library. (What is that book, like, four years old? It would be nice to read something newer in the book club.) It was good to reread this, especially having read Punished by Rewards by Alfie Kohn which addresses the issue of incentives. The Steves talk about how everything can be explained by incentives, but then give some examples which have clearly been disproven, as shown in Kohn's book. That doesn't affect the plausibility of the Steves' arguments, though, because despite talking about incentives in the introduction they don't lean on them much throughout the book.

I liked this book the second time as much as I liked it the first time. I relish the use of data to understand the world in ways which are contrary to popular wisdom, whether it's called economics or statistics or sociology.

[Posted at 22:55 by Amy Brown] link
Thu, 11 Jun 2009

Yesterday I got into a TwitFight. Not even a fight: There's this guy on Twitter who posts the same advice every day. Literally, the exact same Twit, every day. It's a "daily reminder". I said to him, in a lighthearted way, that I would stop following him if he Twitted that again. One thing led to another and I said I thought it was presumptuous to give out the same advice every day (actually I said he was nagging), and he said it was presumptuous of me to assume he cares. Whatever. Tiny little disagreement about something of negligible importance with someone I don't know who means nothing to me.

How did I respond to this disagreement? Did I transfer my attention to something worthy of my time, maybe one of the blogs I enjoy, or perhaps my children? My friends? No. I let it get to me: my heart rate went up, I got nervous and twitchy, I couldn't stop thinking about it. I tried to talk myself down, to get some perspective, to distract myself, but my mind kept wandering back to the disagreement. I couldn't stop thinking about it: was I wrong? Was the guy right? Should I respond back to him? Would my friends back me up? Why was he being a dick about it? Was he being a dick about it? Why would he think that people want to read the same piece of advice every day anyway? Should I not have said anything? The thoughts kept buzzing around, almost beyond my control.

It's not just this time. The same thing happens whenever I get into an altercation with anyone. It's been happening when I get into fights on the Internet as long as I've been on the Internet, and it happens in real life too, on the rare occasion when I have the balls to disagree with someone who is within arm's reach. Any fight, no matter how minor, results in hours of analysis and worrying and anxiety.

I can't bear conflict. I don't like people to disagree with me; when they do, I get defensive, I get nervous, I second-guess myself. I try and get my friends to take my side, or at least I reassure myself that they would. I forget that I'm an intelligent person who is entitled to disagree with others. I forget that I don't need a bunch of people backing me up to be right. I have a brain, I can have an opinion without taking a poll of all my friends first.

Why do I have such a strong physical and emotional reaction when I get into an argument with someone? Is it just lack of practice? Is it some relic from my childhood? Perhaps the more important question is, how do I get over it? Maybe I need to pick more fights so that I learn to deal better.

[Posted at 23:02 by Amy Brown] link
Sun, 07 Jun 2009
Latest News at Casa Winton Brown

The end of the school year draws near and everything is starting to ease off. First, choir ended, freeing up my Monday nights. Then Delphine's Sparks year ended, then Music Together. Now all that's left is school: Cordelia has two weeks and Delphine has three. They both have "graduation" ceremonies, Cordelia's to celebrate the end of Nursery School and advancement to Kindergarten, and Delphine's to celebrate the end of Kindergarten and advancement to Grade One. Fall 2009 is going to be huge around here.

Cordelia is invited to visit her new kindergarten teacher and see her next classroom the Wednesday after next. As you can imagine, she's beside herself with excitement to be going to the same school as her adored big sister. (And yes, they do adore each other, as we discovered this weekend when Delphine was away overnight and Cordelia kept asking when she would be home.)

The excitement begins anew the week after school's out: the girls are signed up for two weeks of swimming lessons, every morning for half-an-hour. Then we have one honest-to-goodness week off before Delphine has a week of all day camp downtown. The following Tuesday we're off to Sask to spend two weeks with Granny, who the girls adore.

No sooner are we back from Sask than the girls go to the cottage with Baba and Zaida for a few days. It's a small cottage so Blake and I aren't invited this year, which is fine. I like the cottage fine but it's not a must-do. (It just occurred to me that this will be the first time Blake and I have been away from the girls for more than a night. Whatever will we do?)

The following week, both girls are in a day camp nearby for a week, and then we have two more weeks off before school starts again. This summer is the opposite of last summer's unscheduled bliss. We'll have to see which is better. I think I might have overdone it with the camps and stuff this year, but it might turn out to be just right.


Delphine has a loose tooth! There are a couple of girls in her class who have lost lots of teeth, dozens and dozens of them. One of the girls started losing teeth in JK! So of course Delphine is miffed that she hasn't lost any yet. I've been periodically checking her teeth to see if they're loose, and today one on the bottom middle was a little bit wiggly. (It might even be the first tooth that came in.) She was beside herself with excitement.

The bad news is, I asked online how long it takes one of these things to come out once they start wiggling, and apparently it's one to four months. Four months! She might be in Grade One before this tooth finally comes out. It will give me time to get used to the idea of her beautiful tiny white baby teeth being replaced by those disproportionate tombstones little kids are stuck with.


Blake got a job. Well, kind of. He got a four month, full-time contract. With Mozilla—cool. Unfortunately it doesn't come with an office. We've been trying to figure out what he's going to do with himself in order to get eight working hours in every day—since he got laid off he's been consistently doing contract work, but never eight hours a day, so he's been able to hang around the house and get distracted by us without falling too far behind.

He has an open invitation to work at U of T, but that's a significant commute, and I'm not sure whether the undergrads are more or less distracting than me and the girls. There's two hours of free wi-fi at Starbucks, which is where I would go every morning. There's the library—I would go to the library, too, but I don't know if that would work for Blake.

Incidentally, in addition to this full-time contract, Blake still has two other contract jobs on the go, so I might not be seeing much of him for the next little while. Hopefully he can get lots of work done when the girls and I are in Sask.


I think that's all, apart from that I planted some Irish moss and creeping jenny in the front yard between the neighbour's yard and our path. I'm not sure how well it's going to do, but the neighbours two doors down have some creeping jenny which is thriving, so I expect it will be okay. Provided I water it.


Oh, I forgot to mention in my last post that Delphine and my conversation about World Wars ended with a rousing chorus of "Sniper, no sniping!"

[Posted at 22:51 by Amy Brown] link
Fri, 05 Jun 2009

This evening at dinner Blake was talking to Cordelia about names. He asked what her name is. She replied "Cordelia Winton!" (It's not.) He asked her what Delphine's name is: "Delphine Winton!" He asked her what my name is: "Mummy Winton!"


Delphine is at Auntie Morgan's place for her birthday sleepover tonight. They went out for dinner, and tomorrow they're going to Sunnybrook Park, among other things. Sunnybrook Park was Delphine's choice, even though I don't think she's ever been there. I hope it lives up to her expectations.

Meanwhile Cordelia is home with us for a sleepunder. One of the perks of a sleepunder is getting to choose dinner—we had Chinese. Another is that you get to sleep in the Big Bed if you want to. So far no-one has ever taken us up on the Big Bed thing, but Cordelia's in the Big Bed right now. (It's nine o' clock and she's not asleep yet, so she may yet end up sleeping in her own bed.)

Tomorrow we might go out for breakfast, but we spent a lot of money on dinner so maybe not. The school in which Cordelia's nursery school is located is having their spring fair, so we might go to that too. The possibilities are endless.

It was pleasant having only Cordelia tonight. She's charming and funny and nice to be around. Oddly (not really) when Delphine is around they're both annoying about forty percent of the time. Yet Delphine is great by herself too; we hung out together this morning at Yonge and Eg and she wasn't annoying or snotty, she was mellow and interesting and engaged. Blake and I thought there could be a real future in a boarding school with a Sibling Mutual Exclusivity Schedule Option.


The other day Delphine and I had a long conversation about World Wars. It started when we stopped to look at an old print of a WWII battleship in a storefront on Mount Pleasant. Delphine wanted to know who started the war, who fought, how they fought, who won. The whole conversation made me realize how little I know about it—I guess it's time for a trip to the library... We talked about different kinds of guns, about guns on airplanes, about tanks. I told her about attacks on cities. I told her about the Enigma machine. We talked about what Daddy would do if there was another World War—we decided we hope he would stay home and work the computers, not go into battle.

It was an interesting conversation. It reminded me once again about the incredibly huge amount of knowledge you have to absorb before you can even begin to understand our world. I mean, not only do you have to know about the World Wars, you also have to know about the Holocaust and slavery and the Black Death. You have to know about The Beatles and Elvis and Queen and Fred Astaire and tap dancing. You have to know about gasoline and dinosaurs and planets and the atmosphere. You have to know how to wash cotton, how to cook rice, how to floss, how to make a new friend, how to approach a strange dog, how to use the phone and the library. The human brain is astonishing. I'm reminded of that when Delphine and I come up against some huge body of knowledge which she's hardly begun to explore. There's so much for her to learn. But she's made a pretty good start.

Apparently the World Wars conversation has provided plenty of playtime fodder. The following day Delphine told me that she and Pierce and Jaime played castles in school, and they bombed and shot at each other's castles. What fun!

[Posted at 22:10 by Amy Brown] link
Conversations with Blake

Blake and I are watching the season 3 premier of Burn Notice (hooray!) and I was trying to figure out who the management guy in the helicopter was.

I said, "That's the dad from..."

Blake paused the show while I remembered.

"...from Frasier. I knew it was the dad from something. Cool."

Blake said, "He was also in Battlestar Galactica."

I frowned. "Really? Who was he?"

"Not really, but everyone else was."

"Yeah, Battlestar Galactica had the dad from Danger Bay."

[Posted at 20:59 by Amy Brown] link