I posted this as a comment over at Hollie's blog and thought I should put it here too.

We were at the grocery store today and Blake and Cordelia were having conversations on the pretend phone – you know the one you make with your little finger and thumb outstretched?

Well, Cordelia called Blake and said, “Is Mummy there?” Actually, what she said was “Give it to Mummy”, but she meant “Is Mummy there?”

So Blake held his pretend phone up to my face, and I said, “Hello?”

Cordelia paused, giggled, and said, “Bye!”

That’s right, she prank-called me on the pretend phone.

How to (not quite) fix a bug.

I’ve run into a bug. It’s a really annoying bug, because it prevents me from changing folders when I try to test any of my Thunderbird changes.

I tried putting dump statements everywhere, to see if I could figure out what was going on, but they were to no avail. Then, I thought about looking for the error code.

So the error lookup page says that the error that’s reported is:

Module          Severity        Number
CONTENT (25)    Failure (1)     6

And DXR says that Content Error 6 is: NS_ERROR_CONTENT_BLOCKED

Which occurs, among other places, here

But when I set a breakpoint there, it didn’t hit it. So instead of trusting mxr or dxr, I did a grep (well, an ack, but same thing), and started setting breakpoints on a few of the hits.

The one that hit my breakpoint ended up being this one which, weirdly enough, isn’t even listed in the mxr results of this search

Now that I’m at the breakpoint, we’re halfway there, I hope. ;)

How I got there was:

(gdb) bt
#0  nsDocShell::InternalLoad (…) at …/mozilla/docshell/base/nsDocShell.cpp:7643
#1  0x152d9daa in nsDocShell::LoadURI (…) at …/mozilla/docshell/base/nsDocShell.cpp:1369
#2  0x13dc7581 in nsLocation::SetURI (…) at …/mozilla/dom/base/nsLocation.cpp:316
#3  0x13dc8af3 in nsLocation::SetHrefWithBase (…) at …/mozilla/dom/base/nsLocation.cpp:595
#4  0x13dc8cf9 in nsLocation::SetHrefWithContext (…) at …/mozilla/dom/base/nsLocation.cpp:542
#5  0x13dc9120 in nsLocation::SetHref (…) at …/mozilla/dom/base/nsLocation.cpp:510
#6  0x003fa28e in NS_InvokeByIndex_P (…) at …/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp:179
#7  0x120f88bb in XPCWrappedNative::CallMethod (…) at …/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp:2727
#8  0x1210c0c6 in XPCWrappedNative::SetAttribute (…) at xpcprivate.h:2550
#9  0x12105530 in XPC_WN_GetterSetter (…) at …/mozilla/js/src/xpconnect/src/xpcwrappednativejsops.cpp:1792
#10 0x001141a7 in js_Invoke (…) at jsinterp.cpp:1388

And it looks like we get there because the return value of NS_CheckContentLoadPolicy is 0x80004003, or NS_ERROR_INVALID_POINTER.

Then, after dinner, I tracked it down a little further, and if you place a breakpoint on the “\n\nAAAAAA\nrv5=%x\n” line in this patch, you can see that it’s the folder = do_QueryInterface(subFolder, &rv); line which is causing the failure, because the subFolder’s mRawPtr is null.

But I have no idea why that’s happening, so I posted what I had, and hoped that someone else could take it and run with it. And Bienvenu did, and now it’s much less of a problem for me, and I can go work on other things.

Books for the Beginning of 2010

Twelve Books That Changed the World by Melvyn Bragg is a book that introduces itself. I believe it's a tie-in book to a TV series, the kind of TV series that could only be produced in England. The books range from the St James Bible to Mary Woolstonecraft's A Vindication of the Rights of Woman and, curiously, Rules of Association Football. Each book is described, put into context, and Bragg makes his arguments for why it belongs in this list. This is a great introduction to some seminal written works, but also a brisk and effective overview of some high points of our society's history.

Further Under the Duvet by Marian Keyes was recommended to me by someone on Twitter (I think it was FlossieTeacake) after a discussion of villa-itis, or the fear that you are going to run out of bread while staying at a French villa. (I have a chronic case of villa-itis which is villa-independent.) The book is a collection of personal essays and short stories. Keyes is an Irish writer with an extraordinary Cinderella story of going from abject alcoholism to fame and riches as a writer. The story is told in the book, along with essays on various topics including the joy of writing a makeup column (free samples!), air-guitar championships, shopping and plenty of chocolate. Funny and sweet.

Positive Discipline by Dr. Jane Nelsen is yet another positive/democratic/whatever parenting book. I don't know why I keep reading them, since I more-or-less know what I'm doing by now, but it's good to be reminded, and I do pick up different ideas from the various books. This particular book reminded me of the importance of family meetings, and reassured me that some problems (namely chores) will have to be revisited at regular intervals but are still worth handling democratically. I wouldn't call this my favourite democratic parenting book—it's just not funny enough. But it's worth a look if you need a refresher (or an introduction to positive parenting) or if you want a new angle.

The Gargoyle by Andrew Davidson is our first book club book of the year, and already this year's book club roster is looking better than last year's. The Gargoyle is about a man who gets terribly burned in a car crash, then meets a mysterious woman with a bizarre past while he's recovering. It's about love and redemption and all that good stuff, with a big dose of history. It's beautifully written and I didn't want it to end.

The Checklist Manifesto: How to Get Things Right by Atul Gawande. I have long been a fan of the checklist. I like to-do lists to keep my days focused, I like lists of things to take places, I like to record our daily routines in list form so nothing is forgotten. This book is the validation for my checklist habit: Gawande writes about how checklists can improve the outcome of extremely complex projects, such as construction projects, and surgeries. Checklists are already in use in construction and aviation, and the book centres on Gawande and his team's attempt to create a checklist to reduce the number of fatalities as a result of surgeries. It's not a smooth path, but along the way we learn the kinds of checklists (DO-CONFIRM and READ-DO), what makes a good checklist (not too much information, easy to read), what makes a bad checklist (too long), and the mind-boggling difference that a checklist can make in a process that everyone involved feels is already going pretty well. (Gawande uses his own checklist, and at first he thought it wouldn't make much difference to his outcomes. As it turns out, not a week goes by that the checklist doesn't catch something he would have missed, and it has even saved at least one life on his watch).

As usual, Gawande is engaging and convincing. This was a great read as well as a confirmation (and refinement) of my love for checklists.

Delphine Is Nearly Seven

Delphine loves to read. We've recently been reading time travel books: we read The Root Cellar by Janet Lunn, and now we're reading A Handful of Time by Kit Pearson. She also loves mysteries (like her mother, her aunt, her great-aunt, her grandmother, her other grandmother...) and is working on a Trixie Belden novel by herself.

Delphine also loves to watch TV. She loves WordGirl but she loves Kim Possible more, which I'm kind of bummed about. Blake introduced her to Kim Possible because she liked WordGirl and y'know, female superhero. But Kim Possible is a teenage character, and well into that "kids are cool and parents are lame" stage, and I wish Delphine wasn't being exposed to that already. Unfortunately the horse is out of the barn now; failing another hard disk crash (hmmmm) we're going to be watching Kim Possible until Delphine goes onto another thing or I ban TV altogether.

Delphine is no great fan of hard work. At school she goes to great pains to make sure she's not at the beginning of the line, so she doesn't have to hold the door. She loves the idea of having lots of responsibilities, but she hates the reality of dropping whatever fun activity she's doing in order to do the job.

She has a few jobs lately: she cleans the cat litter every other time (I alternate with her); she helps clear the table; she's in charge of her own morning routine and I'm trying to get her to help Cordelia, too; she is in charge of her own bedroom, including putting away laundry (which in effect means her room is a mess and her laundry stays on her desk). The doing of all these jobs is prefaced by a great deal of moaning and whining. I feel somehow responsible for that because I hated housework and it took me years to understand that if I wanted my house to be nice I had to do the work of making it so. I also have trouble understanding that things that are worth doing take effort and time, and aren't always fun. I would like Delphine to learn that before she's, like, twenty-five. Maybe then she won't be a big old quitter like I was.

Delphine is in gymnastics, trampoline and swimming this term. I didn't mean for her to be an overscheduled child, but I happened to check the city swimming classes and there were classes available at the right time and the right level, which never happens, so I had to pounce. She likes the classes in this order: swimming first, then trampoline, then gymnastics. This is interesting because swimming is, like, $90, trampoline is $35 and gymnastics is $225.

Swimming is going very well: she does front crawl and jumps in and puts her head under water, all of which she couldn't do at the beginning of the session. With gymnastics she's hit a bit of a roadblock because she doesn't like to be upside down. More than that, she absolutely refuses to be upside down. This rules out such cornerstones of gymnastics as somersaults, cartwheels, and anything interesting on the bars. So either she has to bust through that or I don't think she'll be having any more $200 gymnastics classes.

I think school is going well. It's hard to tell, on account of she's always in a bad mood on the way home, so she regales me with complaints about how boring it is and how she hates everyone. Later in the day, when she's rested and fed, I hear about the interesting things she did and the fun she had. I suppose both angles could be true.

She seems much older lately; she's moody and critical and opinionated and complicated. And she's clever and insightful and interesting and passionate. She's, I think, like me: she's going to have to grow into her personality. It definitely isn't a little girl's personality. She's a tiny grown-up.

Cordelia Reads!

Today Cordelia read a book! She wanted a second bedtime book, and I said she could have another book but she had to read it herself. In the past she has "read" those baby dictionary-type board books with a one-to-one word-to-picture ratio. This time she picked a Clifford easy reader. I stood my ground and got her to read it and she actually read the whole thing with a combination of all the tools she's supposed to use: phonics, word recognition, and context.

She kept saying, "My brain doesn't want to do that!" when I said, "sound it out" or "that's a popcorn word", but eventually her brain stepped up.

(A popcorn word is a word that you recognize on sight, it just "pops" into your head. Delphine taught us that terminology.)

Weekend Matinees

You might know that, until recently, Delphine was just too sensitive to watch movies. Any kind of suspense or peril would send her running for the farthest corner of the house. But lately she's become more blase about everything, and she is much cooler about scary bits in movies. "Actually this is pretty scary," she will say, while holding her ground on the couch. So, we've been watching movies.

We started a while ago with The Sound of Music, which is really quite scary what with the Nazis and all. (Although Delphine was more scared of the stern father.) Then a few weeks ago we rented Cloudy With A Chance of Meatballs, then Nanny McPhee. We decided to have a regular movie night every weekend. After some discussion we've decided to have matinees so as to avoid too much pre-bedtime excitement and bad dreams. I'm excited to introduce the girls to some great movies, and to get back to watching movies myself, even if only PG-rated ones.

Last week we watched Star Wars (the original one). Cordelia was really excited to see it, and Delphine enjoyed it in the end. I think they both liked making sense of all the stuff the boys in their classes jabber about. Although Delphine was very confused as to why Ethan would dress up as a bad guy—Darth Vader—for Halloween. I couldn't help her.

Here's our list of movies to see:

  • Bedknobs and Broomsticks
  • Chitty Chitty Bang Bang
  • Seven Brides for Seven Brothers
  • Mary Poppins
  • Fiddler on the Roof
  • Toy Story
  • Beauty and the Beast
  • The Princess and the Frog
  • Alladin
  • The Aristocats? (This is the first movie I saw in a theatre, but I can't remember if I liked it.)
  • Shrek
  • The Lion King
  • The Iron Giant
  • It's a Wonderful Life
  • The Muppet Movie
  • Who Framed Roger Rabbit?
  • Darby O'Gill and the Little People
  • The Incredibles
  • Nightmare Before Christmas
  • Escape from Witch Mountain
  • The Wizard of Oz
  • To Kill a Mockingbird (maybe later)
  • The Princess Bride
  • E.T.
  • Fantasia
  • Babe
  • Ferris Bueller's Day Off
  • Miracle on 34th Street
  • The Parent Trap
  • Swiss Family Robinson
  • My Neighbour Totoro

Any other classic, or great, kid or kid-friendly movies we should see? Dave, what about Miyazaki? What do you like?

(Oh, and Columbine's post about Alice in Wonderland is quite apropos.)

Delphine's Dream Spa

Today Delphine described her dream spa. (I don't know how she knows about spas.) "There would be a really big hot tub, with books and food and drink right by the edge."

Then she thought for a moment.

"It would be a hot tub in a library!"

That's my girl.

Cordelia Brown, Age Four (and Some)

Miss Cordelia is now four years, four months and twenty days old, and she is well settled into being four. Four is a year of experimenting with power, and a year of great emotion.

Cordelia still loves to be with Mummy, but she can be pursuaded away by a sufficiently compelling offer. On Sunday Zaida stopped by to take her out. At first when we asked if she wanted to go with him she said, "Mummy!" and clung to me. But when I rephrased the offer—"Don't you want to go on an adventure with Zaida?"—she perked up. "Adventure?" And off she went.

Tonight I was talking her through the plan for tomorrow, as I do every day, and I said my friend Tanya was going to pick her up at school and take her for lunch. She pulled the "Mummy!" thing again, but I said, "Otis [Tanya's little boy] wants you to come play with him," and then she was fine with it.

Cordelia can get herself dressed to go outside all by herself. She's so good at it, in fact, that her teacher wanted to make a PSA video starring her, to try and pursuade kindergarten parents to teach their kids to dress themselves. I don't get to see this skill, however, because when I go into the class to help with mittens and zippers, she becomes all helpless and I have to zip her up. I don't help with boots and snowpants, though, because it is literally easier for her to do it herself—she's gotten competent enough that when I try and help we end up working at cross-purposes and getting in each other's way. So fortunately that's off my plate.

Cordelia has friends! She is friends with Anna, and Zoey, and Scarlett and Samantha. Anna was her first friend of the year, and neither of them will go into the schoolyard without the other. They walk in together, hand-in-hand. Anna is an SK and a good head taller than Cordelia. She's very quiet; we had her over for a playdate and Cordelia was in charge, telling her what to do and when. She was so proud to be the authority.

Cordelia is in swimming class this term. She and Delphine take half-hour classes, first Delphine then Cordelia, so DeeDee hangs out with me by the pool while Delphine has her class. She makes me draw pictures made of shapes, and then she has to count the shapes. Then I draw her name in bubble writing and she colours it in. (When Cordelia has her class, Delphine and I each read our books.)

Today when I picked Cordelia up from school she was crying. I know enough not to ask what was wrong right up front: she has to get some of her crying out before she can talk to me. But her sobs didn't seem to be slowing down, so I asked anyway, and she said she hurt her head. I tried to figure out how she had hurt her head, presenting various possible scenarios—did you trip and run into the wall? Did someone push you?—until she agreed with one. She said she had slipped and fallen into the wall. I didn't see any bumps or scrapes but I was appropriately sympathetic. We picked up Delphine and headed over to Tanya's place, where we have lunch every day.

But just as we got to Tanya's Cordelia started crying again—sobbing! I knew if she'd only bumped her head it would have been forgotten by now, so I asked if something bad had happened at school. She nodded, and after further questioning I got her to say that someone had hurt her, but she wouldn't specify how. She was really miserable, and eventually (after the retching started) I realized that the problem was actually that she was sick. She was nauseous and had a headache—the whole story about someone hurting her and her bumping her head was just her trying to explain to herself why her head hurt. She's never had a headache before! Nonetheless, she insisted on a bandage, so in addition to acetaminophen inside her, she had a nice big bandage plastered over her forehead.

Incidentally, this was the progression of her illness: headache, cry, nap on mummy, puke, cry, rest on mummy, puke, rest in stroller (with Otis next to her looking very dubious), watch Dora, sleep on bathroom floor, sleep on couch, wake up, take acetaminophen, watch Backyardigans, better! The whole thing took less than five hours.

Cordelia's nicknames: DeeDee, Boo, Cordeliaboo, Cordeli-bum, Bootle, Chuckles, Bubbles. Her teacher calls her Cordie.

What I Learned When Blake Was Away

Blake has been away for two weeks on business. It's the first time he's ever been away for more than a couple of nights, and before he left I was worried that it would be impossible and miserable to manage by myself.

Blake's coming home tonight, and his absence has taught me a few things:

Blake doesn't do much around the house. I've suspected this for a long time, but now I'm sure. I didn't perceive any change in the amount of housework or childcare I do from when he was here to when he wasn't. Obviously this sucks and has to change. I get that he has a job and earns all the money, but I work hard too and I think everyone should help out at home, I don't want my children growing up thinking that housework is women's work, and I can't do any kind of freelance work or self-improvement if I'm spending all my time doing other people's scut work.

Sorry, that turned out to be kind of a rant, didn't it?

Anyway, that led me quite smoothly to realization number two: I don't need him. Obviously I love him, and of course we need his healthy income. What I mean is I don't need him to keep the house and family running: I can manage by myself. This is tremendously empowering. I was honestly worried that somehow everything would fall apart without Blake here. That I would fall apart without him. (Yes, apparently being married has turned me into a jelly.)

This leads, somewhat less directly, to the next realization: I still want him around. We've been married for ten years, and we're attached to each other through this house, through the children, and through habit. Sometimes it seems like all those things are doing the work of keeping us together, and the spark and affection which brought us together in the first place has become irrelevant.

I'm trying to write about this without making it sound like I've been plotting a divorce. I swear I haven't, I love being married to Blake and we're always going to be awesome together. But for a while there it looked like we were together because I didn't have any choice. Now that I know I have a choice, however hypothetical, it makes it much more satisfying to be together. It means we're here because we want to be—because we like each other—not because it's the only option.

Here's another thing I learned: I don't do housework either. I never thought I was doing housework for Blake's benefit, but the house has gotten slightly more disheveled than usual in the last two weeks. It's not so much that I'm cleaning for Blake—I don't think he could care less. It's more that having another adult around adds a level of accountability that keeps me honest. If I can get away with it, I don't clean. Good thing I had company today: at least the main floor and the bathroom are clean.

I noticed is that I'm a lot happier to do the housework I do do when I don't have someone to resent for not doing it instead. I think once we've worked out some kind of respectable chore schedule I'll be much happier to do my jobs, secure in the knowledge that I'm not doing all the jobs.

Last one: it's nice to be the only decision-maker. Not so nice that I'd want to do it all the time, but there is something about not having to discuss everything: meals, plans, jobs, whose turn it is in the shower, all that chatter and negotiation. It's not something that bothers me normally, but it's nice when it's not there, like the silence when the power goes out.

Tonight the silence ends and we get our man back. I wasn't happy to see him go, but I'll be very happy to have him back, with a little wisdom under my belt.

More Mornings

Since last week we've been continuing the pleasantifying of mornings, and with one little hiccup yesterday, I think it's working.

To review, this is how it goes: we get up and have breakfast together, then I go and shower and leave the children the following list:

  1. two trips to the kitchen
  2. pack snack
  3. get dressed
  4. brush teeth
  5. brush hair

To which Delphine inevitably adds a sixth item: Play. I think they're finally understanding that Play can only come after (and if) every other thing is done.

Cathy suggested creating a colourful chart listing the morning routine, but Delphine is text-oriented and a list nerd like me, so the staid to-do list format works for her. I write a new list every day, and she solemnly X'es off the things she's finished. It works for both girls, even though Cordelia doesn't read yet, because Delphine's essentially in charge of Cordelia in the morning, and Cordelia doesn't mind. (Your mileage may vary.)

Yesterday I didn't include "brush hair" on the list, and when I announced "we have to leave in five minutes" Delphine rashly concluded they had time to play because they were "almost done". Cordelia came downstairs with every intention of playing and justly rebelled when I said I had to brush her hair first. She dug her heels in and I lost my temper and hollered at them. I'm not sure why I took it so badly—could be that I didn't get enough sleep, or I was worried that I would miss a 9:00 appointment. Fortunately Delphine stepped up and was the grown-up. She brushed Cordelia's hair and her own, and helped us all get out of the house in good time.

Today our morning went smooth as butter: I didn't leave anything off the list, and the children didn't muck about. We arrived at school in plenty of time, with no shouting. It probably didn't hurt that the kids were in bed early last night.

I should add that one of the keys to this working is that I studiously don't care what their snacks look like (apart from that they have to contain fruit). Today Cordelia took a little container with some pretzel sticks and a dried apricot—no snack bag, no drink. It's certainly not how I would do it, but I expect it will be good enough for her, plus she has the satisfaction of having created and packed her own snack.

Another thing I cultivate a lack of interest in is what the children wear. Today Cordelia wore a black dance leotard with teal leggings, which might just be a little too gorgeous for kindergarten. Delphine has been dressing herself sensibly (but with a certain flair) since forever, and fortunately she's happy to choose Cordelia's clothes too, on the days Cordelia's not interested.

So, for now, mornings are a success story. As the girls grow and the dynamic between them changes, I guess our mornings will change too, and of course the success of mornings will depend on how well-rested we all are, but for now I'm happy that we have laid the groundwork for a functional start to the day.