Some new toys

There have been a couple of things I’ve noticed myself doing over and over again recently, and because I’m a developer whenever I do something over and over again, I try to find a way to automate it.

So I did some playing around with Mozilla’s Add-on Builder and came up with a couple of Jetpacks that solved my problems. Maybe you’ll find them useful, too.

The First Sign of Trouble

The first sign of trouble was the brown spot on the dining room ceiling. The dining room, as it turns out, is directly under the bathroom. I called Drainworks and they sent a guy—earring, shirt unbuttoned one button more than is conventional, small medallion—to have a look. He determined that the bathtub drain has a really slow leak, and he said the same thing the last guy who came in to look at the last brown spot on the ceiling said: the pipes are old. They're as old as this house, and as Chris the sexy plumber put it, they don't owe me anything. His thought was that the moment anyone puts a wrench to any part of the plumbing, all those eighty-year-old lead pipes will crumble and make a giant sloppy mess. He suggested we talk amongst ourselves and decide whether we want to do a patch job, just replace the pipes, or reno the whole damn bathroom.

So we talked, and decided to get a quote on renovating the bathroom. We'll probably go ahead with the reno: the bathroom is really old, and we would all love a new bathroom with a new tub and some storage space. We're also planning to put in a cheap and tiny powder room in the basement, which will add a whole new dimension of happiness to our mornings.

In the main bathroom we're replacing the ancient and not particularly fancy clawfoot tub with a deep rectangular tub, and we'll replace the newish, expensive faux-Victorian faucet with something sleek, modern and easy to clean, with a handle up high so you don't have to bend over to adjust it, and a handheld shower for rinsing little girls.

We're keeping the toilet (we bought it when we moved in) and putting a wall between the tub and the toilet so you can't see the toilet when the bathroom door is open.

We're going to move the old sink down to the basement powder room, but when it's down there we'll replace the newish, expensive faux-Victorian faucet with something cooler, easier to clean, but still kinda old-timey. Upstairs we're going to put in a shallow, wide rectangular trough sink (no picture because I can't find the kind of thing I want anywhere on the whole entire Internet) with two faucets. We're also going to have a proper vanity and a giant mirror, and whatever storage our designer can cram in.

The floor and walls will be white ceramic tile, and we'll put radiant heat under the floor for wintertime post-shower happy toes.

It's all going to be rather awesome (and probably awesomely expensive) and I'm quite excited. It will be nice to have at least one room in the house be slick and modern and cool.

And I'll take lots of pictures.

Talking Marriage with Cordelia

When you read this you have to try and imagine Cordelia's parts in Cordelia's voice, which is squeaky and loud and very enthusiastic. She also still pronounces "th" as "d", so really everything she says sounds hilarious.

Cordelia: I can't decide if I should marry Charlie [her newborn cousin] or Otis!
Me: I think you should marry Otis, because Charlie is already related to you.
Cordelia: (Thinks about it.) But Otis doesn't like kissing, and kissing is how you get married!

Me: We only have three sea monkeys left.
Cordelia: But maybe two of them will get married and have babies!
Me: Do you need to get married to have babies?
Cordelia: No! (Thinks.) But you need to have a house!
Me: Why?
Cordelia: Because you have to do a naked hug to have babies! And if you don't have a house everyone will see you do a bits-bits hug! And bits are private!

A Tale of Three Dinners

I've been in a bit of a dinner rut lately, just cooking the same old things from memory night after night. Fortunately for the whole family, a few good recipes have fallen into my life lately. Here is the story of one dinner which led to another, and then another.

Dinner One: Asian-inspired Salmon Burgers

This first recipe is from Not Your Mother's Weeknight Cooking by Beth Hensperger. The same author co-wrote Not Your Mother's Slow Cooker Cookbook, which is a frequently-used title on my cookbook shelf. The recipe is actually for Tuna Burgers, but of course I messed with it. Here it is:

Wasabi Mayo
3 green onions
one 1½ inch chunk of fresh ginger
2 tsp soy sauce
2 tsp wasabi powder (I used European horseradish)
½ cup mayonnaise

3 green onions
one 1½ inch chunk of fresh ginger
1 to 1¼ pounds tuna steaks (I used frozen salmon fillets because I am so cheap)
¼ cup cold unsalted butter, cut into chunks (OMG genius!!!)
2 tbsp soy sauce
2 tsp sesame oil
few grinds of freshly ground black pepper
4 buns (I actually ended up making eight burgers)
Butter lettuce leaves (hah - I found some old romaine at the back of the fridge)

  1. To make the mayo, blend all the ingredients together. I actually just chopped up the choppable stuff and mixed it together, and it was fine. Stick it all in a bowl and put it in the fridge while you make the burgers.

  2. Chop up or food-process the green onions and ginger. Cut one quarter of the tuna into ¼ inch cubes, and put the rest into the food processor with the butter and the onions and ginger. Pulse to combine. (Pause to marvel at the notion of mixing the butter right into the burger, and how it completely destroys any healthful properties of the fish. Oh, but it's going to be so good.) Put it all in a bowl and mix it with the diced fish and the soy sauce, sesame oil, and pepper. Shape into four equal-size patties. (As I said, I made eight little ones.)

  3. Preheat a large saute pan over medium-high heat. Brown patties for three minutes on the first side and three to four on the other, until done.

  4. Serve patties on buns with wasabi mayo and lettuce.

Yum! We loved them.

Dinner Two: Couscous Salad

My friend Tanya makes couscous salad all the time: couscous, parsley, diced red pepper, cucumber, celery, dried cranberries, sunflower seeds, olive oil, lemon juice, salt and pepper. It's delicious and it keeps and travels well. Inspired by that, I used the leftover mayo to make my own version with couscous, soy beans, broccoli, and grated carrot. Another delicious hit.

Dinner Three: Mini Frittatas

I've been getting ParentsCanada magazine lately—against my will; it comes with Cordelia's Chirp magazine—and while I'm still sitting on the fence as to its usefulness as a parenting magazine, I do seem to clip recipes out of every single issue that shows up in my mailbox. This month they had lunchbox recipes, and one of them was for little frittatas baked in muffin cups. Here's their recipe:

Mini Frittatas

2 cups filling: cooked and chopped vegetables, torn fresh herbs, cooked spaghetti, cooked crumbled sausage, ham or bacon, shredded roast chicken or a combination of any of these
5-6 large eggs
¼ cup milk
½ cup freshly grated Parmesan, cheddar, or other cheese
salt and pepper to taste

  1. Preheat the oven to 375°F
  2. Sauté raw veggies (if you're using them in your filling) so they don't release liquid in the frittatas and make them soggy
  3. In a medium bowl, whisk together eggs, milk and salt and pepper to taste. Add your fillings and if you like, some grated or crumbled cheese.
  4. Divide the mixture among muffin tins that have been sprayed with nonstick spray and sprinkle with grated cheese.
  5. Bake for 15-20 minutes, until puffed and golden. (I actually baked it for ten or fifteen minutes longer—they wouldn't brown for me.) Serve warm for dinner or cool completely before packing up for lunch.

So I followed that recipe, using about 1¾ cups of the couscous salad from the day before as the filling, along with a can of tuna. They turned out awesome. The kids love them and I will totally be making this recipe for lunches.

So there you go: tuna burgers → couscous salad → frittatas. Yum.

Summer's Last Hurrah

As summer draws to an end the girls and I are trying to squeeze the last of the fun out of the season. One of the last things on the list we came up with at the beginning of the year was to go to the Harbourfront, and that is what we did today.

As usual we got off to a late start—between brushing hair and applying sunblock and looking for Playmobil horses and TTC tokens we didn't leave the house until around ten. When we got down to the Harbourfront the first order of business (after saying goodbye to the crowds of people headed for the Ex) was to find money. Unfortunately RBC has a lock on Queen's Quay Terminal, so we wandered westward searching for a TD bank machine. On the way we saw: a camp "canoeing" (more being pushed about) on Natrel pond; Delphine's canoe camp (she showed us the giant canoe they all went out to Centre Island in); the Amsterdam Bridge; the Spadina wave deck; and HtO Park. HtO Park is basically a giant sandbox with big metal umbrellas and Muskoka chairs—we couldn't decide if it was cool or lame, but Delphine liked the shower/footbath.

At that point it was apparent that we wouldn't find a TD bank machine anywhere, so we headed back to Queen's Quay Terminal (via the Simcoe wave deck) where I paid $1.50 for the privilege of taking money out of an RBC machine.

Next on the itinerary was to buy tickets for a boat ride. We went with Mariposa Boat Cruises because they were the first kiosk we came to, and Cordelia rode for free. It was 12:00 so I bought tickets for the 1:30 ride to give us time to get lunch. After pondering Il Fornello and an Irish pub, we decided to economize, and had chicken fingers, fish and chips, and a tuna sandwich at a grill-type place. Then back to Queen's Quay Terminal where we got an ice cream cone just in time to take it on the boat.

We rode on the Oriole (not quite as glamourous, in the harsh light of day, as they make it sound) and made ourselves at home on the lower deck, with only the bartender for company. I love the harbourfront boat tours—you get to go around the island lagoon, see the yachts, the bird sanctuary, the Gibraltar Point Lighthouse, and of course the city from the other side. The girls loved it too, although Delphine had trouble keeping up with the tour guide's descriptions of buildings: "Between the two white buildings you'll see a tall gold building..." "Which one is it, Mama? I can't see it." By the time I described it again, of course, it was out of sight. Cordelia probably just couldn't make sense of it at all and was enjoying the ride on her own terms. It's good to be four.

A few things bothered me about the information given out in the tour. They talked about the TD Centre but they didn't mention it was designed by Mies van der Rohe; they talked about First Canadian Place but they didn't mention it by name (they called it the Bank of Montreal building) and they didn't say why it has scaffolding at the top; they called Canada geese "Canadian geese" which is a neologism which drives me crazy; and finally (is that all?!) they said the CN in CN Tower stands for "Canada's National". Which is just stupid, although according to this Wikipedia page not entirely wrong.

After the tour we visited what Delphine calls the Lemming Ball, for reasons I will leave to her to explain when she has a blog. It's a giant, hollow cement sphere which you can walk into through a wooden ramp. It is surprisingly underdocumented on the Internet (or else I am searching wrong) and you'd have to see it to really understand. The girls thought it was really cool; I was too busy Twittering about two old people sitting on a nearby bench making out like teenagers.

Next we charged over to Yonge Street (in the hot hot sun) in search of the Royal York Hotel. Those of you who are smarter than me will be saying, "Hey, isn't the Royal York on Bay Street?" As it turns out, it is, so we charged over to Yonge Street, walked under the Gardiner (boo, hiss) and then (once I realized my mistake) charged back west on Front Street until we finally reached the elegantly air conditioned Royal York. I thought the girls would be impressed by the shiny old-school, dimly lit, brass-and-Persian-carpets luxury of it, and so they were. They also immediately quieted down and behaved like princesses as soon as we got inside; to the manner born, they are.

We found a fancy hotel restroom and took our time freshening up, and then I impulsively suggested that we go to Epic for drinks. The maitre d' was busy on the phone helping someone plan his (or her) proposal dinner, so we found ourselves a table and ordered lemonade for Cordelia, a Shirley Temple for Delphine and iced tea for me. (That's "drinks" when you travel with a four-year-old and a seven-year-old.) The drinks came with an elegant silver bowl of not-entirely-elegant snack mix: beer nuts, wasabi peas, cheese crackers, and sesame chips. It was delightfully refreshing, all the more so because for some reason they only charged us for my drink. I guess it pays to be really cute.

On the way home we intersected with about a million cranky TDSB teachers TTCing home from Spence-a-palooza with their unwanted green tote bags. It's interesting to see how many teachers live in our neighbourhood—there were at least four on our bus alone.

(I may have inadvertently insulted our French/gym teacher within his earshot. I was talking to an acquaintance, also a teacher, and saying I wished we had a proper gym teacher at our school; the kids either get a non-gym teacher who happens to be free at the right time, or they get M. Landry who is half gym, half French, but his heart is really in the French classroom. However, what I actually said was "M. Landry is just an angry French teacher", which is, I believe, an accurate characterization. As I said it a guy sitting nearby kind of smirked, and when he got off the bus at our stop he was talking to his friend in a French accent. So, oops, maybe.)

Then we were home and I sent the children off to play at a neighbour's house while I took a few minutes to relax. It was a great day—I love exploring the city with my kids, they are such good company. (Even when they pick and snipe at each other all day as they have been lately.)

Tomorrow they're going for back-to-school haircuts and then we'll hit the library and the park, if it isn't raining.

More secure!

As someone who works on an email client, I’m interested in making my communications more secure. So, with the assistance of Ludovic and Gozer, I got a client certificate that would allow me to sign and encrypt my messages. (Check out the envelope and lock in the image below.)

An outgoing message, with an envelope and a

Most of the time, I’ll probably just sign my messages – after all, that’s what I’ve set it up to do by default – but it’s nice to know that if there’s something I need to encrypt, that option is now available to me.

OMG! Zerg Rush!

File this one under stupid Unicode tricks, I think.


So many books

It doesn't seem to matter how much other stuff I have going on, I always have time to read. Don't have time to blog, don't have time to work, definitely don't have time to houseclean—still have time to read.

Science, Sense and Nonsense by Joe Schwarcz is a collection of commentaries on chemistry in everyday life, with a side of fraud-spotting advice. The book covers antioxidants, trans fats, historical alternatives to rubber, and a wealth of other topics serious and amusing.

The Devil's Arithmetic by Jane Yolen is a young adult book about a modern girl who, bored with her family Seder, is transported back in time to 1941 Poland. I guess maybe the only thing worse than being a Jew in Poland in 1941 is being a Jew in Poland in 1941 who knows the future. She and her entire village are sent to a concentration camp where they fight to survive and to retain their humanity. This book has won a heap of awards (and I just found out it was made into a movie with Kirsten Dunst and Brittany Murphy) and it is a wonderful story about the importance of remembering.

I read The Root Cellar by Janet Lunn out loud to Delphine. It's another time travel book, about a girl who is left alone when her grandmother dies. She is packed off to live with relatives in rural Ontario and is lonely and miserable until she discovers that the root cellar takes her back in time to the 1860s, where she makes friends and feels more at home than in the present. Her twin challenges are to track down a friend who doesn't return from the American civil war (in the past) and to find a place for herself in her new family (in the present). I loved this book when I was a child, and Delphine liked it this time around, as did I.

Shakespeare: The World as a Stage by Bill Bryson is a short biography of Shakespeare—short because we don't really know much about the playwright. In addition to what little we do know, Bryson covers disproved (or unlikely) theories and myths. As always, readable and informative.

The History of Love by Nicole Krauss was a book club book. It's about old man who feels like he is disappearing; his long-lost son, a famous novelist; a teenage girl named Alma whose mother is translating a book which turns out was written by... well, you'll have to read it yourself. It's one of those books where the stories go along in parallel and you have to try and figure out how they're connected before the end when the author ties everything together with a big bow. It was a lovely book; I enjoyed reading it, although in book club we decided you have to read it in big chunks or you'll get too confused.

The Unfinished Angel by Sharon Creech is a... young adult? Middle grade? I never know—although I'll have to figure it out pretty soon because I'm helping a friend with her middle-grade novel this fall— Anyway, it's a book about an angel whose quiet life in a tower is interrupted by the arrival of a girl who changes everything in the village. The book is written in the childlike voice of the angel, which sounds a little cringe-y, but Sharon Creech is a phenomenal writer and she makes it work. This is only a short book and it goes quickly, but it's well worth reading.

A handy zsh function (for OS X)

A co-worker of mine was having problems remembering where the makefile puts the binary for Thunderbird when you build it yourself. Now, I type in the path far too often, so I know where it is (on my computer, anyways), but since I type it in far too often, I grabbed someone's zsh function that launched Firefox, and modified it to launch Thunderbird from either the build directory or the source directory, but only on Mac OS X.

Anyways, here it is, I hope some of you find it useful.

thunderbird() {
  local -a currdir;
  for nm in LanikaiDebug ShredderDebug Lanikai Shredder; do
    if [ -d "./mozilla/dist/$" ]; then
      ./mozilla/dist/$ $*
    elif [ -d "../objdir-$currdir/mozilla/dist/$" ]; then
      ../objdir-$currdir/mozilla/dist/$ $*