Blog-o! Notes from

Mon, 07 Jul 2014

People love heatmaps.

They’re a great way to show how much various UI elements are used in relation to each other, and are much easier to read at a glance than a table of click- counts would be. They can also reveal hidden patterns of usage based on the locations of elements, let us know if we’re focusing our efforts on the correct elements, and tell us how effective our communication about new features is. Because they’re so useful, one of the things I am doing in my new role is setting up the framework to provide our UX team with automatically updating heatmaps for both Desktop and Android Firefox.

Unfortunately, we can’t just wave our wands and have a heatmap magically appear. Creating them takes work, and one of the most tedious processes is figuring out where each element starts and stops. Even worse, we need to repeat the process for each platform we’re planning on displaying. This is one of the primary reasons we haven’t run a heatmap study since 2012.

In order to not spend all my time generating the heatmaps, I had to reduce the effort involved in producing these visualizations.

Being a programmer, my first inclination was to write a program to calculate them, and that sort of worked for the first version of the heatmap, but there were some difficulties. To collect locations for all the elements, we had to display all the elements.

Firefox in the process of being customized

Customize mode (as shown above) was an obvious choice since it shows everything you could click on almost by definition, but it led people to think that we weren’t showing which elements were being clicked the most, but instead which elements people customized the most. So that was out.

Next we tried putting everything in the toolbar, or the menu, but those were a little too cluttered even without leaving room for labels, and too wide (or too tall, in the case of the menu).

A shockingly busy toolbar

Similarly, I couldn’t fit everything into the menu panel either. The only solution was to resort to some Photoshop-trickery to fit all the buttons in, but that ended up breaking the script I was using to locate the various elements in the UI.

A surprisingly tall menu panel

Since I couldn’t automatically figure out where everything was, I figured we might as well use a nicely-laid out, partially generated image, and calculate the positions (mostly-)manually.

The current version of the heatmap (Note: This is not the real data.)

I had foreseen the need for different positions for the widgets when the project started, and so I put the widget locations in their own file from the start. This meant that I could update them without changing the code, which made it a little nicer to see what’s changed between versions, but still required me to reload the whole page every time I changed a position or size, which would just have taken way too long. I needed something that could give me much more immediate feedback.

Fortunately, I had recently finished watching a series of videos from Ian Johnson (@enjalot on twitter) where he used a tool he made called Tributary to do some rapid prototyping of data visualization code. It seemed like a good fit for the quick moving around of elements I was trying to do, and so I copied a bunch of the code and data in, and got to work moving things around.

I did encounter a few problems: Tributary wasn’t functional in Firefox Nightly (but I could use Chrome as a workaround) and occasionally sometimes trying to move the cursor would change the value slider instead. Even with these glitches it only took me an hour or two to get from set-up to having all the numbers for the final result! And the best part is that since it's all open source, you can take a look at the final result, or fork it yourself!

[Posted at 11:53 by Blake Winton] link
Sun, 19 Jan 2014
New Year’s Resolutions

I know. It’s a bit late. I meant to post this earlier, but then life…

(And I realized that the reason you post your New Year’s Resolutions as soon as you can is that it’s embarrassing to post them after you’ve already broken them.)

Here they are:

1. Increase my machine time at the gym from 20 minutes to 30 minutes.

My gym routine is almost literally the least I can do: twenty minutes on a machine, usually the elliptical, and then fifteen minutes or more of stretching. I’m really there for the stretching, because if I don’t do it regularly sooner or later my back goes into spasm.

But I figured another ten minutes can’t be too hard to come by, and a bit more cardio three or four times a week can’t be a bad idea.

2. Double-veg

Another simple one: whenever I have fruit or vegetables, have twice as much. I like fruit and vegetables, and it’s really only habit which stops me from eating more of them.

3. Write more.

This is your classic poorly-planned, doomed-to-fail resolution. There is no plan here, no list of steps, no schedule, just a vague intention to “write more”.

Nothing specific, not a novel or poems or a book on the history of quick breads, but more little things: more book reviews on Goodreads, more blog posts, more letters to family, more entries in my journal.

Needless to say, this one needs more work. I don’t want to give it up, though.

[Posted at 09:28 by Amy Brown] link
Wed, 01 Jan 2014
2013 Year in Review

I'm writing this a little late, as it's already 2014. I suppose this way I can be sure I'm not missing anything, as one never knows if 11:42 pm on December 31 might be the highlight of the year.

Well, it wasn't. But at about that time someone did ask me what the highlight of 2013 was, and I was stumped. I thought of our trip to Buffalo, but that was in December; not even a month prior. So to write this post I'm going to have to look at calendars, to-do lists, photos, old emails... Clearly my own brain won't suffice.

In January I wrapped up work on Shamans Among Us with Joseph Polimeni. I edited and typeset the book, as well as designing the cover and overseeing proofreading and website design. It was a fascinating book to work on; I learned a tremendous amount.

But after Shamans wrapped I set aside my editing work to join Greg Wilson at Software Carpentry. That's a big deal, really. It's my first regular, non-freelance job since Delphine was born. It's so nice to be part of a team, to be useful and wanted for something other than knowing where the clean socks are and what we're having for dinner.

We all did a lot of travelling this year, mostly by ourselves. Delphine went to a few Guide camps and week-long sleepover camp in summer, and Cordelia went to Brownie camp. Blake went to Pittsburgh, London, Brussels, San Francisco and Minneapolis, and I went to Portland OR, Boston, and London (but not at the same time as Blake). The girls and I went to Saskatchewan in June, and in December we all went to Buffalo, which sounds lame but might have been the best trip of all.

In June my first-cousin-once-removed Emily came to visit with her boyfriend Dan. I never met her before (I don't think? I feel like I should know this) so that was pretty cool, because she's awesome and Dan is too. The girls loved them because Emily is from New Zealand and that's pretty much Middle Earth, and because Dan played Lord of the Rings Risk with them. (Emily was also written up in the Huffington Post, which is more than pretty much anyone else I know can say.)

This is a pretty uneventful year in review, so I guess 2013 was a pretty uneventful year. I'm okay with that! I hope 2014 is also uneventful, and with some interesting trips. And maybe more cats.

[Posted at 23:32 by Amy Brown] link
Sun, 29 Dec 2013
Ice Storm Christmas

On Saturday, December 21 the girls and Blake and I went to a Christmas carolling party at a friend’s house. We sang lots of old-fashioned Christmas carols (the ones they don’t sing at school because there’s too much Christmas in them) and drank wine and talked about the coming storm. “Charge your phones,” I said, “make sure you have milk and bread!”

“Is it going to be all that bad?” My friends moved here from England just over a year ago — they weren’t here for the ice storm in Ottawa and Quebec back in 1998.

“It could be nothing, or it could be a few days without power,” I said.

By the time we left it was raining, cold hard rain which was starting to freeze on the ground. Blake walked us home and went out again to meet some friends at a pub. I plugged my phone in, made sure my computer was charged, tucked the girls in and headed to bed with The Sea-Captain’s Wife.

Sunday, December 22

When we woke up the power was out but the house was still warm. I lit some candles and boiled a saucepan of water for tea. I shuffled to the gym and back, and the power came back on around 10:30. Easy!

The city was covered in ice, part of the subway was shut down and people were being advised not to go out if they didn’t need to, but Delphine and I had tickets for the Sing-Along Messiah. When we heard at around 11:00 that Massey Hall was open and the Sing-Along Messiah was on, we still weren't sure whether to go or not.

My friends who were going to come with us decided not to go --- they told a very long story about a branch in their driveway and ice on their car and the subway might not be running and it would be hard and they’d rather just not bother. That was disappointing and we thought about staying home too, but we decided that an adventure of any kind would be preferable to staying cooped up at home being sullen.

Waiting for the bus, a lady shuffled towards us with unkemped hair and flushed skin, sprinkling rock salt from a gallon jug on the sidewalk ahead of her. “The subway isn’t running from Eglinton to Bloor,” she said. “No trains! They’re running shuttle buses!” Again we thought about giving up, but decided to forge ahead.

At Yonge Street three shuttle buses drove past, each too crammed to pick anyone up. A small CBC TV crew was shooting some B-roll of people giving up; Delphine wanted to be interviewed for TV but they found someone less hopeful.

Finally I decided to work around the Yonge Street problem altogether by catching the number 14 bus over to the University-Spadina line. The number 14 was diverting from its usual route because of branches on the roads, too, but it was only a twenty minute ride to Glencairn

The subway train we caught at Glencairn was the Hobbit train, which pretty much made the whole trip worthwhile. We got to Dundas station ten minutes before show time and didn’t miss a single note. Dame Emma Kirkby sang. (I wonder how she enjoyed it.) There might have been a bit of a trainwreck in the Amen fugue, but we pulled it together with lots of help from Ivars. Delphine had a good time and she’s starting to learn the choruses and sing along. All in all, going was absolutely the right choice.

After the sing-along we wandered the mall with Janet, who had joined us for Messiah, and then met Blake and Cordelia for dinner. We ate at Mr Greenjeans, our favourite mall restaurant. After a lot of food we went home and noticed that it was very dark on our block; the power had just gone off again.

Monday, December 23

The lights were still out Monday morning. I was supposed to go grocery shopping for Christmas dinner ingredients, but the grocery store was closed. I’m actually not sure what we did all day; cooking and washing dishes, tending to candles. I wrapped Blake’s Christmas gifts in the basement by the light of a single candle. I spent a lot of time checking the @TorontoHydro Twitter account. The girls and Blake decorated their gingerbread houses, which they had cleverly baked the day before the power went out.

At 8:45 pm on Monday, after the power had been out for over 24 hours, it was 16.3° Celsius in the house. People kept inviting us over to their house to warm up, and I didn’t realize why until later when I heard that other houses cooled down to 10 degrees and lower within a day. I don’t think there’s any one thing which made our house stay so warm; it’s a combination of factors:

  • really small house (about 1200 square foot)
  • a layer of rigid foam insulation on the inside of every outside wall (making the house even smaller)
  • semi-detached, so one wall of the house is insulated by an entire other house
  • protected on the north side by another house which is about three feet away
  • newish, small windows
  • honeycomb blinds

And finally, we have a gas water heater and a gas stove, so we were able to warm the place up with hot showers and cooking. I'm feeling pretty good about our little house these days.

Tuesday, December 24

On Christmas Eve morning it was 13.4°C when we woke up; it went up to 15.3°C by the end of breakfast. We went out for lunch and to see The Hobbit; when we got home the temperature had gone down to 11.4°C. We lit some candles and made pasta for dinner, and managed to drag the temperature up to 13°C before bed. Blake and I had to stay up later than the girls because of Christmas, but I lit lots of candles and we managed.

Christmas Day

When we woke up on Christmas Day it was 9.3ºC, which is perhaps too cold for comfort. But Christmas, like the show, must go on, so we made tea and breakfast and lit a bunch of candles and opened presents. Lots of books, lots of chocolate and lots of Lego, so satisfactory all ‘round. Oh, and the girls got rubber swords, which they immediately fought over. Of course.

After opening presents we went over to Baba’s house to warm up, do the cryptic, read (me), knit (Delphine), and watch TV (Cordelia). I kept checking Twitter for news about the power, and at around 3:30 I got a text message from a neighbour to say we were back on. Hooray — we could sleep at home!

The biggest conundrum of the no-power Christmas was where, and if, Christmas dinner would happen. Normally I host, and I was thinking about cancelling dinner, but my sister-in-law is the best ever and offered to have it at her place rather than cancel or postpone. So I brought Christmas pudding and cookies, and made Yorkshire puddings to go with the roast beef, and it was delicious and perfect. And the evening ended very satisfactorily, in our own cozy little house.

[Posted at 23:17 by Amy Brown] link
Sun, 17 Nov 2013

Early Thursday morning our sweet Thomas died. He was twenty-one years old.

For the last day or so he'd been wheezing a little bit, and at about three in the morning he was making so much noise with every breath that he woke us both. He was curled up on the foot of the bed, his head bobbing up and down and his abdomen sucking in with with the effort of every breath. There was a puddle of urine on the floor; he had been too weak to go down to the basement, but was still sweet and well-mannered enough to get off the bed to pee.

I realized he would have to go to the vet right away, and I was pretty sure this was it for him. Blake woke up the girls to say goodbye while I got dressed and called a cab.

The receptionist at the vet called the triage nurse who took Thomas into the back straight away. I was asked to wait in a examining room. After a few minutes the vet came out -- she was short, pretty, youngish, a little plump, with a pierced lip.

She said Thomas had fluid around his lungs --- pleural effusion. It might be caused by heart disease, a tumour, or it might be idiopathic --- caused by nothing in particular. Heart disease, after being confirmed by a cardiologist, could be treated (with an unpredictable degree of success) with medicine. A tumour could only be treated with surgery, and the only treatment for idiopathic pleural effusion would be to drain it, keep Thomas in the clinic for twelve hours, and see how long the fluid took to come back.

Surgery was out of the question, and I didn't see much point in putting Thomas on yet more medicine. Draining and waiting would be torture. I asked for a minute to talk to Blake on the phone, and we decided it was time.

The vet agreed that this was a sensible course of action, and the nurses brought Thomas into the little examining room and gave me a few minutes to say goodbye. They brought a tank of oxygen so he wouldn't have to work so hard to breathe, which was wonderful except it made him seem like his old self again; he was breathing so easily, I didn't know if we had made the right choice. It wasn't until he had his face away from the oxygen for a few minutes that he started to wheeze again and I remembered how miserable he'd been.

I gave him lots of scratches, and whispered to him what a good cat he was, what a handsome boy, how much we loved him and how much we would miss him. At first he lay there, but soon he half-stood and start to nose around the examining table. The vet had put in an IV line in his left foreleg, taped with blue tape, and he shook his leg in irritation. I kept wanting to say "It's okay, it will be off soon," but I couldn't. He gently head-butted me one, two, three times. He was never very affectionate, but the awkward head-butt was his quiet way of showing love.

Finally, after a lot of tears, the vet came in and talked a little bit about what would happen. She let me stroke Thomas as she injected the drugs. He didn't die as quickly as Mimi had -- she was gone before the syringe was half-empty, but Thomas took a little longer. Not much, though; within seconds his head came to rest chin-down on the table and he was still. His eyes were open but empty, like the eyes of an Egyptian statue. He was still beautiful.

The vet let me have another moment alone with him; I kissed him on the head and told him again that I loved him, then started to go out the door. I was about to close it behind me but changed my mind and went back in for one more stroke, one more kiss, one more look at my beautiful grey boy.

[Posted at 22:28 by Amy Brown] link
Tue, 15 Oct 2013

I've finally admitted that most of my non-kid-related posts to this blog are about my struggle to use my time wisely, so I created a "time" category. However, I'm not going to move all my old "time" blog posts into it. I just don't have the time.

However, this post is a pleasant change from my usual moaning about not having enough time. I have actually learned two things about time.


A few years ago I read a review of Tom DeMarco's Slack. I'm not sure what the book is actually about (and I don't want to look it up right now lest I lose track of my thought) but what I took away from the review is that piling your employees with the absolute maximum amount of work they can handle is not effective. People and systems need enough available slack to deal with crises as they arise. (Also people, especially people doing creative work, do some of their best work when they have a chance to be idle, to chat with coworkers, to just think. I'm pretty sure that I learned that since, though.)

At the time I thought the slack theory sounded very credible, mostly because it validated my own work-related misery and exhaustion at the time. (In retrospect that's laughable; I hadn't had kids yet and had no idea what being too busy meant; I was miserable and exhausted at work for other reasons.) But it wasn't until a couple of weeks ago that it occurred to me that the principal of incorporating slack applies to individuals as much as it does to companies. When your everyday life is crammed to the brim, you have no recourse when a family member gets sick, a neighbour adopts a baby or a friend loses a parent; you have to either abandon something important or let someone down.

At the moment my schedule is crammed full; between household maintenance and childcare and child management and choir and school choir and friends and working out and, of course, work, I have no slack. And there's nothing I want to give up.

However, I'm trying to let things fall away and not replace them. I have stuck to my resolution to not take up the eco-committee chair position at school; I have stubbornly refused to take on any other major school volunteer jobs; I have even declined to arrange social events.

My plan, and I think it's rather clever, is to fill my slack time with a space-holder hobby: something worth doing but which I don't mind setting aside if I'm needed for something more important. I have a needlework project which my father started as he was beginning to sink into dementia; he abandoned it when he was moved into the nursing home, and I brought it home with this summer. I want to finish it but I don't mind how long it takes. That will be my time-space-holder. Just as soon as I find some time to hold.

Time Panic

In the October 5 issue of New Scientist Debora MacKenzie reviews three books about pursuing happiness. Part of her review is about how scarcity inspires obsession:

...the brain focuses ferociously on what it feels is lacking. This reflex evolved to help us find what we need. The team's real insight is that it applies to all scarcities, not just of money, but of time and even social contact. We "tunnel" in on the scarcity and ignore anything outside.

All that scarcity messes with how we manage the resource in question.

The future looks less menacing than the scarcity we face now. So we borrow money, then borrow more, disregarding future costs as interest mounts, until we are deeply in debt.

This is exactly what I do when I feel overwhelmed with things to do. Instead of taking the time to figure out how to best spend my time, I panic and either avoid everything or just do the first thing I put my hands on, which is sometimes helpful, and often not. At the end of the day I'm exhausted, anxious, and no further ahead.

Uuh, I'm not sure what the takeaway is from this particular clue, apart from that I need to notice when I'm flailing and take a deep breath. It might seem like I don't have time to take a deep breath, but really I don't have time not to.

[Posted at 22:47 by Amy Brown] link
Sat, 12 Oct 2013

I’ve recently been playing a lot of Fez, a 2-D (kinda) platforming/puzzle video game. Many of the puzzles use a series of symbols in squares as a code language. I really liked the way the language looked, and so I decided to write a small single page app in Angular to transliterate English into the Fezish alphabet. The first implementation was written as a filter, and it seemed to work okay, but emitting a bunch of HTML and then forcing the user of the filter to use a sanitizer to get it to render as HTML was kinda strange. That very same day, in an odd twist of fate, I got some email from Packt Publishing asking if I would be interested in featuring their new Angular JS book on my blog. Long story short, I agreed to post a review of it here in exchange for a free copy of the eBook. So on to the review…

The first thing that struck me about Angular JS Directives was the writing. I’ve read a lot of extremely dry technical books which were hard to get through, and I’m happy to say that this is not one of them. I found the writing both engaging and amusing. There are a few times where the author even pokes fun at himself for repeating the same points, which was wonderful to see. The examples were clear to read, and ably demonstrated the points that the accompanying text was making. The overall flow of the book mostly made sense, with simpler concepts leading to more complicated concepts. My only suggestion is that the chapter on Testing could have been introduced sooner, and then used in the rest of the examples to prove things were working the way that the author claimed.

I don’t like to only say positive things about something I’m reviewing, both because I believe that there’s always something that could be done better, and because I don’t want to look like a corporate shill. At least not for $17. ;) So, on to the bad things I’ve run into. It took me a lot longer to read than I would have hoped. This was partially because of a bunch of work stuff taking up all my spare time, but also because after every few pages I wanted to go back and re-write large parts of the projects I’ve done. :) My other concern is that $17 for 87 pages of content might not not be worth it to you. I found the content very useful, and I’ve certainly gotten $17 worth of knowledge out of it, but at my previous job, where I didn’t use any JavaScript much less Angular, it wouldn’t have been money well spent.

Having said all that, after the fourth chapter, I re-wrote the Fezish Filter as a Directive, and the code became far cleaner. And now that I’m done reading the ninth chapter, I think I might spend the rest of this weekend adding some unit and end-to-end tests. So in the end, would I recommend this book? Yes. Yes I would.

(Monday October 14th edit: I’ve also just been informed that Packt is running a Columbus Day sale, and if you use the discount code "COL50" in the next four days, you’ll get 50% off this, and any other eBook or video, so if you’re thinking of buying it, today would be a great day to do so!)

[Posted at 17:07 by Blake Winton] link
Sat, 05 Oct 2013
Eight is Great

Today was Cordelia's eight birthday party. Blake's away and Tanya, who usually backs me up at birthday parties, was busy with many things, so I was faced with managing by myself. It didn't take much thought to realize that that wasn't going to go well, so I threw up the bat signal to our babysitter from last year, Emma. Against all odds she was available, so I had a helper.

The party was loosely candy themed (because who doesn't like candy?) so we started by making candy sushi. I wasn't sure how it would go, with the stickiness and general potential for chaos, but everyone managed fine and made pretty credible rolls. And didn't even get incredibly sticky.

Next on the agenda was Pin the Cherry on the Ice Cream. It soon became apparent why no-one plays this game any more, because everyone just used their hands to figure out where the cherry went and it wasn't much of a contest. We made a rule that you could only use one hand, but it still wasn't that challenging. The most fun player was the youngest, who got all silly and giggly and fell over a lot, so Emma and I decide that maybe the peak age for "Pin the X on the Y" is a little younger than eight.

Next up was Pass the Parcel. We added a rule that if you already have a prize and the music stops when you have the parcel, you can decide whether to keep what you have, or pass it on to the next person who doesn't have a prize and open the next layer of the parcel. It was a pretty good solution to the problem of matching n prizes to n kids, but of course some of the prizes became inexplicably more valued than others, and there was fighting and unsuccessful attempts at trading. It was quite acrimonious and also rather annoying.

The last planned activity was Cordelia's idea: a few rousing rounds of Murder Handshake. It was okay, but the littlest kids didn't really manage the part where you have to shake two more people's hands; they would just collapse straight away. And when Otis was murderer he shook hands with such vigor that it was pretty clear what he was up to. So it seems the best age for Murder Handshake is a little older than eight.

Lunch was KFC (which seems like an obvious choice for party food but which I've never seen at another kid party) and then we finished with cake and more candy.

It was a pretty good party, but I really hope I'm done with kid parties. I like throwing the kind of parties where I actually get to have fun, not just co-ordinate other people's fun and listen to them whine. But next year Cordelia is nine, and surely that's too old for a games-and-cake party. Maybe we'll go to the Science Center or something. That would be nice.

Cordelia is Eight

So Cordelia is eight. She's not too excited about growing up; in fact she's downright against it. But it's happening anyway. She says she doesn't like school, but she seems to have fun when she's there. She loves ballet and jazz dance and Brownies. She has a couple of good friends and gets along well with most of the kids in her class. And she can manage the rest of them.

The other day we were chatting about her friends and relationships, and she said "I don't tell grown-ups about problems because they don't really help. They say they're going to help but they don't do anything." Last year she had some trouble with a girl who was her best friend a couple of years ago, and who got caught up with a third girl and started excluding her. She didn't come to me for help, and this year (so far) they are all three getting along together. She's also done well managing a couple of difficult boys in her class.

Grown-ups love Cordelia — at least, grown-ups who love kids love Cordelia. Grown-ups who don't love kids love Delphine because she's like a grown-up, but Cordelia's such a kid. She's enthusiastic and noisy and uninhibited. She loves talking to grown-ups and she still has that habit of telling long, involved stories without giving enough context, which is fascinating and occasionally surreal.

She's kind of getting too old for me to blog about her. When the kids were younger I treated them like extensions of myself, and of course it was okay to blog about them. But there's a lot of talk about Internet privacy lately, and what you're entitled to post about other people with or without their consent, and I'm starting to realize (a little belatedly) that even if I don't mind my whole life being online, that's not a decision I should make for the girls. But I guess that's another blog post...

[Posted at 23:46 by Amy Brown] link
Sun, 04 Aug 2013

It's time for another birthday post. I'm not sure if I manage to write one every year, although I always feel I should. It seems as good an opportunity as any to catch up on everything, sitting here on my back deck on a cool summer day, enjoying the dappled shade of the silver maple.

I should be hanging a load of laundry that Blake washed.

I should be working. I think. Should I be working? It's Sunday, but then I don't work full time the rest of the week, so maybe Sunday is a good time to catch up? I worked a couple of hours today already, but there's still plenty to do, and if I don't do it today I will only have to do it tomorrow while facing an onrush of new work as everyone gets to the office.

So, I don't know if I should be working.

Time dismays me. This blog knows that, for one thing because I hardly ever post — I just don't have time — and for another because when I do post it's often about time. I have so much that I have to do, and so much that I'd like to do, and I don't know where to find the time.

This is what I do now:

I work. I have a regular job with an organization now (as opposed to a freelance publishing gig), although only part time. It's supposed to be two hours a day, but my boss keeps casually referring to it as half-time, which it really should be because I have so much to do. This summer, especially, I'm having a hard time keeping up. At least once a week I get a worried email from a workshop host or instructor asking if I've had a chance to put up that website or set up that registration page or process those receipts. Right now I have eleven emails which I have flagged to remind me that they're Urgent and should be Attended To With Haste. Then there are the other forty-four emails which can wait, although if I leave them long enough they may well become the other kind.

I parent. This means that I spend time with the girls, of course. It's summer and they have only been in one two-week day camp, so we've gone on a few adventures and worked on a big jigsaw puzzle. (Conclusion: "I don't really like jigsaw puzzles, Mummy.") They're still good fun, although they're having a fractious summer in each other's company. Neither of them seems to have the social skills to tolerate the other's foibles, or to de-escalate disagreements. Sibling rivalry is supposed to teach this kind of thing, but so far it doesn't seem to be working. Maybe they need to be older. But when they're not fighting they're good friends, and they love each other even if they wouldn't admit it.

The other side of parenting is management. I never realized how much management there is to being a modern parent — I don't think it came up in any of the books or magazine articles I read. Spending hours researching extra-curricular activities and school programs, filling in registration forms, buying clothes and equipment, organizing calendars, emailing babysitters, scheduling playdates — none of that was part of mothering as I understood it.

You may think: But you've been a mother for over ten years, why is this bothering you now? The thing is, the paperwork side of mothering only seems to grow as the children's needs and challenges become more complicated (and expensive). As the nitty-gritty side of diapers and snacks and bloody knees diminishes the administrative side inflates.

But I was relieved to come across a passage in Rumer Godden's Home is the Sailor about the children setting up the mother doll at a desk with piles of paper, where she would spend most of her days ordering things and organizing the children's lives. Even in 1964, apparently, mothers had lots of paperwork to do.

I also look after the house and the finances and the cat.

The house needs the usual upkeep (although I am supported in that by a biweekly house cleaner) as well as identification and resolution of various old-house problems. We're still dealing with the leaky bathroom situation; also a chunk fell off the outside dining room windowsill; also the paint is peeling on the window frames outside. There are problems with chattels, too: the dryer is broken, the couch is ready for the landfill, and the cushions for the deck furniture need new covers. It's true that the more you own, the more it costs, in time and money.

I also do things for myself, a little bit. I read, not as much as I'd like to. I go to the gym most mornings, which isn't fun per se, but it's the only time I let myself read New Scientist, so that part is fun. Also fun is how flexible and energetic and, I admit, smug I feel after the workout is over.

Lately I've been amusing myself with nail colour. My friend Karen D, who used to be into quilting, is now into nail polish, and her thoughtful posts and juicy pictures made me want to paint my nails too. It seems like a fairly harmless pleasure: it's not expensive, it doesn't take much time (okay, I do manicures while I'm working — I can type without smudging wet polish) and it gives me inordinate pleasure.

And I indulge myself with plenty of social time. I don't go on many organized outings with friends, apart from book club and the odd lunch, but I don't begrudge myself a nice chat when I bump into a friend on the street or at the start or end of a playdate. Apart from how good it makes me feel (I'm an extrovert), I know that having rich social connections is as healthy as working out.

I don't think I waste a lot of time. I have a somewhat, I think, precocious sense of my own mortality. It came upon me a couple of years ago when I realized that my to-be-read list was getting longer at a greater rate than I was reading books, leading to the obvious conclusion that I would die before I was done reading. (A slight digression: I don't understand people who "don't know what to read next". Do they not have hundreds of books waiting for them in lists or piles? Why don't they?) This awareness leads me to a somewhat panicked fear of wasting time. I've come to realize that some things which might seem like a waste of time, like walking places or hanging out with friends or just sitting thinking, are not a waste of time but rather essential to happiness and long life. But I'm constantly on guard against time misspent.

I'm somewhat heartened by the fact that life seems to go on for a long time. I'm often surprised to realize that people who were grown-up and doing things when I was a kid are still active and doing things now. The books of Judy Blume were already dated when I read them (Sanitary pads with belts? Wha?) but she's now active on Twitter and overseeing movie versions of her books. Hal Johnson and Joanne McLeod made my childhood miserable with their shame-inducing Body Break segments, and now they're on Amazing Race Canada, still fit and chipper as ever. (I suppose I can be thankful that Slim Goodbody isn't on Survivor.)

What I'm saying is, even though it may seem that being almost-forty and having done basically nothing useful with my life is an unrecoverable failure, the fact is I probably have at least another forty years ahead of me, and I don't have to waste twenty-two of this batch in growing up and going to school.

And now I'd better go hang that laundry while there's still enough daytime for it to dry in.

[Posted at 16:04 by Amy Brown] link
Sat, 29 Jun 2013

(Probably Not Actually Everything)


This week I went to Boston for a two-day work thing, which I will not discuss at length lest this gets linked as some kind of relevant post and too many work people start reading it, which I don't mind but makes me feel weird about posting boring crap about my kids and my hair. Anyway, yeah, Boston. I didn't get to do much interesting touristy stuff but I had fun and would visit again.

(I should point out that I wasn't ever in Boston, except when I was at the airport — I was in Cambridge.)

I got there on Sunday afternoon and right away went to BJ's with my infinitely patient Boston friends to get snacks for the boot camp. After we unloaded the snacks at the B&B we went for dinner at Cambridge Brewing Company, which my friends kept confusingly referring to as CBC. I had the cheese plate (cheeeeese) and I want to say a salad but I don't recognize any of the salads on the menu. It was tasty and satisfying. I also had the HefeWeizen (which I now realize I was pronouncing wrong, for shame, haven't I sung enough Bach?) which hit the spot.

We walked over to Toscanini's Ice Cream where I had Ovaltine, and Peanut Butter and Honey. Ovaltine ice cream is a wonderful and necessary thing. The Tosci's ice cream was good, but I have to say it's no better than the good ice cream places in Toronto. Sorry, I know that's kind of a jerky thing to say.

Then I said goodbye and many thanks to my friends, and oddly enough went back to CBC, where I met up with some boot camp instructors and helpers, and drank more beer (a Saisonniere, which I did pronounce properly).

I worked the next two days. On Monday night we had a catered dinner at the boot camp, so I didn't even eat out. (Catered dinner is good too! Such a treat to have someone turn up and make everything right, with wine!) Tuesday morning I had to go to a supermarket and buy another cartload of snacks because apparently people are way hungrier than I thought.

The boot camp ended on Tuesday afternoon and I went for a drink at Catalyst with a couple of instructors and helpers. The bathrooms were fancy! Then I went walking around Harvard with a new friend before a late dinner at The Kebab Factory (goat curry! gulab jamun!). We talked about the supposed advantages of name-brand universities, and national identity, and immigrant identity, and walkable neighbourhoods. It was one of those great conversations.

The B&B was fabulous — clean and beautiful, and the proprietors and staff were delightful company. If I ever go back to Cambridge I will definitely stay there.

First Day of Summer Vacation Didn't Go Well

Friday — yesterday — was the first day of summer vacation. Well, as a friend kindly pointed out, yesterday was technically a PA day, and Monday is a statutory holiday, so the first day of summer vacation is Tuesday. This is good because it gives me a chance to not foreshadow a terrible summer.

I woke up with a hideous headache and a mild but nagging nausea. Like a hangover without the fun. I took some ibuprofen and drank some tea, but it didn't get better so I gave up and went back to bed while the children did I-don't-know-what. When I woke up at 11:30 I felt mostly okay and what was left of the headache seemed vanquishable by drugs, so I took some and dragged the girls downtown to the office; I needed to talk to Greg about the boot camp and some other stuff.

The office was the best part of the day. We had lunch there and saw some people, and the girls got to play with Post-it notes and the white board.

As we left the office it started raining, and after we went to Winners for a failed attempt to buy socks for the girls everything was quite soggy. On the way into the subway at St Andrew I warned the girls to be very careful because the stairs were slippery. And then I fell down them.

You know the part in Lord of the Rings where Legolas slides down the stairs at Helm's Deep on a shield? It was like that, but instead of a shield, my butt. Apart from that it was the same, with the rain and the orcs. Or maybe those were commuters.

Somehow I righted myself at the bottom of the stairs, accepted sympathy from friendly orcs and limped on. No serious damage, I think, but some nasty bruises, and new pains every time I move. I seem to have done something clever with my left arm on my way down, although I'm not sure what. I was trying very hard to stop falling and apparently my left arm wanted to help. And failed.

The exciting news is that my back is not busted up. So far.


As pointed out above, school's out for summer. I guess we had a pretty good year. C's teacher was fantastic and just right for her: sweet and gentle but insistent and with high standards. C's reading has improved and so has her stick-to-it-iveness and focus, and most importantly she enjoyed school despite her moaning.

D's year was harder, although not catastrophic. Not even terrible. I've already blogged about the problems she had, and the good news is there's a change coming: she's been offered a place at a new gifted program. Well, kind of — she was offered an opportunity to express interest in being offered a place at the new gifted program, supposing that there are enough other kids expressing interest to make it worth starting up said program.

We were only given one evening to decide (though really we had had weeks to think about the idea of going to a gifted program, I didn't want to dwell on it too much until we had a more concrete offer, so we hadn't made a decision yet). D didn't know how to decide, so she sat on the kitchen garbage can with a sheet of paper and we listed the pros and cons of each decision while I made dinner. And finally, tearfully, she said she would go to the program so long as she could have two playdates with her best friend from her old school every week.

I'm pretty excited to be joining a new program. For some reason there has been a surge of applicants to the gifted program this year, and I'm hoping that that means that a) the new program will be mostly filled with new applicants, and b) the new applicants will have a better proportion of girls than the existing gifted population. That's kind of an optimistic assumption, because I have no idea why there have been so many applicants this year. I suppose it could be that there has been a surge in insufferable gifted boys and the teachers want to get rid of them all. Either way, it will be nice to be there for the first year of a new program — at the very least D won't be joining a crowd of kids who already know each other.

I'm a bit sad that she won't be able to walk to school and back with C next year, and that she won't be able to be in the school choir that I volunteer with. Okay, I'm very sad about that. But it didn't seem like enough reason to keep her from this opportunity.

I'm bad at wrapping up blog posts. The End.

[Posted at 23:43 by Amy Brown] link
Fri, 28 Jun 2013
Using Persona in Angular apps.

In my previous blog post, I mentioned a tool I’m writing to make it easy for designers to link mockups to live bugs. But I didn’t mention that I had a reasonably-working version of the tool written in Backbone which I’ve decided to port to Angular. The reasons why are largely beside the point of this blog post, but I’ll try to sum them up by saying that I reached a point where Backbone seemed to be confusing me more than helping me, and Angular got a lot of good press at FluentConf this year.

So this morning’s task in the re-write was to re-hook up the Persona integration. I had read recently that when you had a lot of dom-manipulation functions, you should probably put that code in a directive, and since I hadn’t written an Angular directive yet, I figured this would be a great time to learn how. Writing the html was pretty easy, of course, and most of the code from the existing implementation (which was largely based on the code from the express-persona readme) could be ported over fairly quickly. The only tricky part I ran into was figuring out that I needed to include restrict: 'E' in the Directive Definition Object. After I was done, I noticed that there really wasn’t that much in the code that had anything to do with the tool I’m writing, and thus I pulled it out into a separate repo so that other people can use it.

And with that, I announce Angular-Tools, a repo containing one or more tools which you might find useful if you build Angular apps. As always, pull requests and bug reports welcome!

[Posted at 15:16 by Blake Winton] link
Fri, 14 Jun 2013
Drawing lines with CSS.

One of the things I’m working on as part of my job1 at Mozilla is a tool to make it easy for designers to create mockups that are linked to live bugs, similar to the ones at Are We Pretty Yet. Now, I’ve got the background showing up, and the bugs overlayed on top of it, but as it stands, I’m requiring the designers to draw the lines connecting the bugs to the various areas in the mockup right on the mockup itself! This is obviously a fairly terrible idea, since it makes it much harder than it should to move stuff around after the fact, and requires a ton of up-front planning when creating the initial image. But what are my other options?

I thought for a while about layering a canvas element over the mockup; it would let me draw whatever shapes I wanted to, but passing the click events through to the mockup seemed like it would be fairly annoying, and I don’t think the connecting lines should appear in front of the boxes showing the bug details, which adds another wrinkle. Then, over lunch, I started to wonder what it would look like if a 1px by 1px black square got stretched and rotated with CSS… So I took some time after lunch, and played around a little, and it seems like it just might work! Give it a try, let me know if you have any ideas to make it better, and feel free to take the idea anywhere you think it might be useful!

Update: In the comments, Andrew points out that I could use a 1px by 1px span instead, which would make it much easier to change the colour of the line, so I’ve linked to his jsfiddle instead. :)

  1. Sometimes I still can’t believe how lucky I am to get to do this stuff all day, and get paid for it!  

[Posted at 14:57 by Blake Winton] link
Sat, 20 Apr 2013
Amy Goes to Portland

In order to go to the Write the Docs conference that I wrote about in my last post, you might suppose, correctly, that I had to go to Portland, Oregon. My last adventure was my trip to Japan in 2011, so I was ready to get away.

There are lots of ways to get from Toronto to Portland; I chose to go via Vancouver on Air Canada because I heard from Twitter that, while Air Canada is bad, the American airlines are worse. As usual, I didn't have any trouble with Air Canada and arrived in Vancouver only slightly cramped and squashed.

We flew into a storm on the way from Vancouver to Portland, and when we were almost there the plane got hit by lightning. I wasn't terribly happy about that; I couldn't think of a time I had heard about planes being hit by lightning and it ending well. The pilot didn't seem bothered, though, and apart from some turbulence and the people behind me panicking, we landed without a problem.

Portland was warm and moist and smelled wonderful. I got a ride to the Hotel deLuxe from an Internet friend, and we had a chance to gossip and talk to her little guy about Superman and the fact that he couldn't reach his bits of paper with "S" on them.

The Hotel deLuxe was built in 1912 and recently restored with a vintage movie theme. It's a luxurious old-timey hotel like a smaller King Eddy. My room had floor-to-ceiling velvet drapes, crystal deco-style light fixtures, and white subway tile in the bathroom. The bed was furnished with thick, heavy sheets and more pillows than I knew what to do with. (So, more than two.) There was also a pillow menu, so you could order an even better pillow than the umpteen already there, and a holy book menu so you could request any one of about twelve holy books. I approve of the breaking of the Gideon hegemony.

After I got settled in I decided to go for a walk to wind down after travelling all day. Powell's Book Store was nearby, labelled as an attraction on the hotel map, and open late, so that was my destination.

The area around the hotel was dead at that time of night; there are some offices, a church, a theatre with nothing going on. Obviously I wasn't familiar with the neighbourhood so I didn't know how nervous to be, but there were a few women walking around and biking alone, so I decided not to be nervous. After a couple of blocks I came to Burnside Street, which was a little livelier.

Powells is astonishing. It's a multi-storey used book store which covers an entire block; it's a shrine to books. I could have spent the whole weekend there, but I managed to escape after about an hour and a half with only a few books and a couple of gifts for the girls.

The next day was the conference, which I already talked about over here. I woke up early (still being on EST, three hours earlier than local time), worked out in the hotel's small-but-effective gym, then had a proper cooked breakfast in the hotel restaurant. (I don't know why, but hotel breakfasts are the height of luxury and self-indulgence to me.)

I walked to the conference site in plenty of time, so when I got there the doors weren't open yet. There was a short line of grumpy-looking people waiting to get in (and one person who looked pleased to be there). I was happy and well-rested so I didn't want to stand in a grumpy line, but I wasn't feeling outgoing enough to talk to the one happy person, so I went for a walk around the block instead.

By the time I got back the doors to the Mission Theater were open. It's another old building (Portland doesn't seem to have Toronto's love of knocking old buildings down): a theatre with a balcony and a bar.

As I said in the other post, the conference was great. We were served lunch and there was an open bar (!). The line for lunch was really long, so to pass the time I had a beer; the first day I asked for something "not too bitter" (because I know Americans love really bitter ales); the drink the bartender served me was delicious and indeed not too bitter, so I asked what it was: a Nebraska Bitter. Good thing I let him choose.

I took a break from the conference and walked down a few blocks to get a coffee from Barista — some of the people at the conference suggested it as the best local coffee place. (It was delicious and, after three days I'm officially spoiled for non-awesome coffee.) I also stumbled on Oblation Papers, a paper and print shop with beautiful, quirky handmade cards. Like so many places in Portland, the store is just the front desk for a tiny factory — they actually make the paper right on site. There's also a budgie.

I really like Portland. I don't really understand how the economy of Portland works because there seem to be lots of businesses which employ people to make things by hand, and sell the things for reasonable price. You can get vegan food everywhere, and wherever you can buy coffee, you can also buy beer.

Monday night the conference organizers had some events planned; a night at a video game arcade (with infinite quarters), and a couple of informal gatherings nearby, at a beer place and a coffee place. The video game arcade had dozens, if not hundreds, of video games and pinball games, but nothing that appealed to me (unsurprisingly — I have never liked video games). They had DDR but no-one was playing. I ended up going around the corner to the coffee place — not only coffee, but beer and computers you could rent time on — but there was no-one from the conference there. I was tired and hungry anyway, so I had a plate of nachos, read Twitter and went back to the hotel.

On Tuesday I tried World Cup Coffee, which was better than Starbucks but not as good as good Portland coffee (told you I'm spoiled). They were experiencing a small fire in one of their coffee roaster, but they managed to make me a coffee anyway.

Wednesday morning I woke up even earlier, packed, and had another fancy hotel breakfast. Then I caught the Max train (just around the corner from the hotel) and rode all the way to the airport without a single transfer. So awesome! I wish I lived in a non-world-class city that had decent transit to the airport.

I entirely failed to get any good gifts for my cat-sitters, so I hoped I would be able to get something at the airport. I was lucky; turns out the Portland airport has awesome retail, including a store called Made in Oregon which has a great selection of interesting, actually-local food and gifts. I got hazelnuts, tea, chocolate and saltwater taffy for the folks back home.

[Posted at 22:41 by Blake Winton] link
Sun, 14 Apr 2013

This week I went to the first-ever Write the Docs conference. Write the Docs, as I understand it, intends to create a community of the people who write documentation for open source projects. There are plenty of professional groups for technical writers, and plenty of communities online and off for open source developers, but open source documentarians (a made-up word) exist in an awkward nether-world, neither corporate and well-trained like professional tech writers nor, well, reluctant to write documentation like open source developers.

That awkward nether-world was embodied in Portland last Monday and Tuesday. The geniuses who put the conference together booked an old theatre, gathered a diverse group of speakers of various levels of seasonedness (another made-up word), sold 220 tickets to a yet-more diverse* group of people and put us all together in a room for two days to soak up each other's stories, ideas and passion.

(* Diverse in interests, experience, and gender, but not race; the group in the Mission Theatre was almost as white as Portland itself.)

In a stroke of inspiration, the organizers managed to get enough sponsorship to not only feed us but provide an open bar — that's right, I said an open bar — every afternoon. Which is nice, but I'm sorry to say I can now never go to another conference unless there is free booze every day starting at noon.

There were twenty-seven talks altogether, as well as some ad hoc lightning talks. They will all be available on YouTube but so far they are not sorted or tagged, just listed under the account of the company that did the videoing.

Here is my list of standout talks from the conference:

Matthew Butterick's Typography for Docs (NSFW: swearing) didn't teach me a whole lot (which is good considering typography is one of the many things I charge money for) but Matthew is charismatic, funny, and opinionated. And I love that he didn't have a slideshow, he just clicked around some tabs in a browser window.

Matthew outlined four important decisions in typography:

  1. Font choice (he likes Charis, Charter, and Adobe Source Sans for the web)
  2. Font size (smaller than you think for print; bigger than you think for the web)
  3. Line length (between two and three lowercase alphabets per line)
  4. Line spacing (between 120% and 145% of font height)

(I know, this blog fails terribly at at least two of those. Cmd-shift-=!) Among other things, he warned us to be careful of misuse of emphasis; anything dark catches the eye, so you don't want a lot of darkness in your navigation — save it for headers and other clues to document structure.

Matthew Butterick wrote a book called Typography for Lawyers which I will probably buy.

Kevin Hale's Getting Developers and Engineers to Write the Docs is misleadingly titled; it is really more about customer support and retention than documentation, although documentation plays a part in both those things. The punchline is that at Wufoo they got developers (and everyone else in the company) to answer the tech support phone. My favourite line: "After the second or third ring of that phone, with the exact same problem, the engineer will stop what they're doing, fix the problem, and you don't get phone calls for it anymore." (That's a paraphrase of a Paul English line.)

Marcia Johnston's Write Tight(er) — (no video yet) was about how to write concisely, with the right number of words and no more. She argues that wordiness is bad when paying for translation and when people are reading on small screens, but editors everywhere know that concise writing is easier to read and comprehend.

Marcia provided a list of ways to write tighter. Get rid of:

  • variations on "to be"
  • -ly words and other flabby adjectives
  • "very", "just", "such", "so", and "really"
  • negative constructions
  • "begin to" and "start to"
  • (or be suspicious of) "of"-phrases: "in light of", "in spite of"
  • "proverbial"
  • "different" in "many different" or "three different"-type constructs
  • the passive voice

And of course, with all these guidelines the rule is to apply them, unless it's better that you don't. Oh, English.

Marcia's book, Word Up!, will be available on April 27; I'll probably buy it, too.

Nóirín Plunkett (or Pluincéid on Twitter, but I guess that's just too open to mangling) did a talk called Text Lacks Empathy (also not posted yet). It's about how to put the emotion back into casual written communication.

Nóirín had some lovely metaphors. Being social is, for introverts like her, like working in a virtual machine; she can still do all the usual things, but it takes a little more processing time. Tact is like a filter: some people apply it on their output; some people apply it on input from others. If it's not applied on either end (i.e., if someone assumes the listener will apply tact on input and so doesn't apply it on output), offense can result. Similarly, if tact is applied on output and input, content can be lost.

She also pointed out that in an emotional void we tend to assume negative emotion. That is, if you haven't heard anything specific about someone's emotional state for a while, you tend to assume that they're angry or annoyed at you.

Nóirín had some suggestions:

  • Understand expectations: where is the tact filter generally expected to be applied in your organization or relationship?
  • Zero is not negative: don't assume that no emotional communication implies negative feelings. If in doubt, ask, and always assume good intent.
  • They don't know how you feel: you have add emotional content to your writing in a way you don't have to add it to face-to-face communication. Express your emotional state with words, use emoticons, or change to a more emotion-rich communication channel: email < IRC < voice < video < real life.
  • Perception is reality: if someone feels attacked, it doesn't matter what your intent was, they will react as if they have been attacked. You have to deal with their emotional state first, before you can return to the content of your conversation.
  • Active isn't always better than passive: take advantage of English's passive voice: "You broke the build" is aggressive and causes those emotions that you then have to deal with; "The build broke" allows everyone to save face and get on with fixing the problem.
  • If it doesn't matter, do it their way.

Unfortunately Nóirín ran out of time and didn't get to talk about the last points in her slide show — I'd like to see the whole talk sometime.

It struck me that many of Nóirín's points apply to parenting. When you're dealing with an upset child, you do have to manage their emotions before you can teach, discipline or advise; they literally cannot take in any information while they're upset. (As my nanny told my mother once, "They can't hear you when you shout at them.")

Assuming good intent is vital; it's one of Alfie Kohn's 10 Principles of Unconditional Parenting. And finally, "if it doesn't matter, do it their way" is another way of putting one of parenting's most important mantras, "pick your battles wisely".

I have no idea if Nóirín has written a book, but I'm sure she will eventually.

Finally (for this post, not for the conference), Daniya Kamran's Translating science into poetry was beautiful and thought-provoking. She didn't offer examples or concrete tips, but a series of ideas to consider when writing:

  • Constant vigilance; remember you are writing to impress the reader and earn their continued attention.
  • Immortality: write as if your writing is immortal; write to transcend time.
  • Dilemma: poetry is about conflict and questions; introduce them into your writing.
  • Bias: have a point of view; be the expert.
  • Error: poetry is about things that have gone wrong; treat crises as part of the cycle, not as a negative consequence.
  • Reiteration: poetry uses it liberally; after each complexity, bring your document back to its purpose.
  • Metaphors allow the reader to participate in creating meaning, and so they connect to your writing more deeply.
  • Elegance is important.

Tim Daly's talk on Literate Programming was entertaining; Jennifer Hartnett Hender's talk about sketchnotes was thought-provoking. Heidi Waterhouse did a talk about writing search-first documentation to make your documents findable. Ana Nelson's talk about Dexy was thrilling (even though I was exhausted and understood about 14% of it). There were a couple of good talks about the importance of documentation, and another couple about how to convince your company and colleagues to take documentation seriously, and even to write it themselves.

There were plenty of interesting talks and lots of great people at Write the Docs. I don't know if I will go next year, what with not being a tech writer and all, but I'm glad I went this year and I would recommend it to anyone who creates documentation and works with developers.

Write the Docs is on Twitter, where they have posted links to some write-ups of the talks and will hopefully link to videos when they are up.

[Posted at 00:11 by Amy Brown] link
Sat, 23 Mar 2013

Here's a recipe for Apricot Prune Kugel for Passover. Baba said she isn't making kugel this year because she's making a turkey and stuffing it and the stuffing is just the same as kugel. So I'll make kugel.

I looked for the recipe and couldn't find it, so I asked on Twitter but no-one's suggestion looked quite right. (Kugel means different things to different people.) Then I looked in my cookbook again and realized the recipe was just formatted weird, and I actually do have it. So I'm posting it here for the interest of googlers everywhere.


  • 16 dried apricots
  • 12 prunes
  • 2 heaping cups matzo farfel
  • ¼ cup oil
  • 1 egg
  • 1 cup raisins
  • juice of 1 lemon
  • ½ cup sugar
  • 1 apple, grated fine
  • 1 cup orange juice


  1. Soak the apricots and prunes in hot water (I don't know for how long) and then drain and chop them.

  2. Pour hot water over farfel; drain. Add oil and egg. Mix in fruit and all other ingredients.

  3. Turn into square baking dish. Bake at 350°C for about 1 hour.

[Posted at 15:35 by Amy Brown] link
Sun, 20 Jan 2013

Since my last post on this topic I've met with Andrea, a friend of a friend who is an expert on special education and works at the TDSB. She very kindly allowed me to pick her brain, and I learned plenty. Apart from lots of advice and insight on how gifted education is handled in the TDSB, she had two concrete suggestions: to seriously consider the TDSB gifted program, and to ask Delphine’s teacher specifically how he is differentiating for her.

(Differentiated education is something they ask teachers to do these days, where basically every child gets their own special curriculum. It’s how they justify combining ages and abilities within one classroom: the teacher is supposed to assess the ability of each child in their class and provide each and every one of them with assignments and materials that suit their level. You might infer that I am skeptical as to the practicality of this system.)

We had every intention of getting Delphine assessed for giftedness, because you basically can’t ask for anything without having that rubber stamp. But from talking to other parents I got the impression that the gifted program, which is at a school a few neighbourhoods away, would not be suitable for Delphine. So we had written off the possibility of the gifted program and hoped that the rubber stamp could be put to use some other way. But Andrea urged me to be open-minded and check out the program ourselves. And she’s absolutely right; neither Delphine nor I know what the program is really like nor whether it will suit her in ways that she can’t even articulate. So we’re going to, at least, go and visit.

We met with Delphine’s teacher in November as part of the regular parent-teacher interviews, and I did ask him how he’s differentiating the program for her. He said something like, “I’m not going to offer her anything different until I’ve seen that she can do the assigned work to a better standard.” He doesn’t like the quality of her work — it’s messy and she doesn’t go the extra mile to produce really great work. She meets the requirement of the assignments without adding flair.

Of course this decision on the part of the teacher is deeply unsatisfying to me. An education that is suited to your ability is a not a carrot to be dangled in front of you as a reward for jumping through arbitrary hoops of the teacher's devising: tidy handwriting, sitting still, completing assignments to a level beyond that asked.

I guess it does make a certain, superficial sense; I've mentioned this to a few people and they've said it seems fair. But it isn't really, when you think about it. There's no real connection between being tidy, or putting a great deal of effort into an arbitrary tast, and needing (or deserving) to be challenged intellectually. Both of those are useful skills to have (the first probably more than the second) but neither of them have to do with being smart, and it doesn't make sense to connect one to the other. Just because she's not particularly strong in these areas is no reason to deprive her of stimulation in other areas.

And besides, an education suited to the student’s level is a legal entitlement in Ontario.

(We haven't even considered that she might not be completing the assignments to the teacher's standard because she's not really very interested in them — because they're too easy or because they're on a topic that doesn't interest her, or because she wants to save her limited energy for an endeavor that's of more interest to her. Of course the question of whether she can apply focus and determination and effort to a project which is important to her is another matter, and one which doesn't seem to be resolved within the traditional school system.)

This is one of the reasons we are interested in an IEP; because it's a document which requires that teachers offer her an education that suits her ability level, without having to adhere to the teacher's idea of what's suitable for a gifted child, or what should be required of a child before they get the education that they need. Of course this leads to the question of whether we want to establish an adversarial relationship with our teachers before we've even established any other kind of relationship.

The story continues but this post has been sitting on my hard drive for a while. More to come...

[Posted at 18:05 by Amy Brown] link
Mon, 24 Dec 2012
Cordelia Does Math

Lately Cordelia and I have been going through the folder of completed work her teacher sent home at the end of grade one. (She's four months into grade two at the moment; one day I hope to catch up.)

One of the exercises they did last year was to figure out how you can "make" particular numbers; that is, what two numbers add up to a number.

It took her a little while to catch on:

Make 7
2 + 5 makes 7. A red dancing yeti + 2 purple eggs makes 7?

Make 8
8 + 2 makes... damn. Okay, 5 + 3 makes 8.

Make 9
Ah, now she's got it. 6 + 3 makes 9; 1 + 8 makes 9!

Now it's time for her to do it by herself: choose a number and show how to "make" it two different ways. But Cordelia is Blake's daughter, so her additional challenge is to do that correctly while also doing as little work as possible. I think she nailed it:

Make 1

And here she is, this year:


[Posted at 21:56 by Amy Brown] link
Sat, 24 Nov 2012
Frog sculpture

Sydney's Playground is the new natural(ish) kindergarten playground at Maurice Cody Elementary school. It's named for one of our kindergarteners, who was killed in a traffic crash while we were in the process of planning the playground. (This post isn't about Sydney, but it seemed weird to write about the playground without mentioning her.)

This post is about the process of designing and building a natural playground in a TDSB school. When we embarked on the process of building a natural playground at Maurice Cody there was very little guidance on how to go about building a playground, so I am writing this in the hope that it will help someone else.

The caveat is that your mileage may vary: I am not sure how consistent the TDSB is in terms of policies and processes, and for all I know your experience will be completely different. Even if it is, I hope this post gives you some idea of what's possible and what's likely to happen. But first...

A Little About Natural Playgrounds

A natural playground is a playground built with natural elements instead of artificial play structures. They are desirable for various reasons:

  • Being in a natural environment has been shown to improve concentration and learning

  • Unstructured play elements are better for imaginative play in much the same way that plain Lego blocks are more demanding than Lego kits with funny shaped blocks and instructions

  • Natural elements like logs and rocks are theoretically less expensive than manufactured play structures

What The TDSB Will Do For You

Our school is one of the few in the TDSB that's growing, and a couple of years ago the school board built a second playground for the nine kindergarten classes. When I say "built" I mean they fenced off an area, built some stairs and put down some mulch. You may not realize this — I certainly didn't — but the TDSB is not in the playground-building business. Despite having your 3-, 4- and 5-year-olds in their care for six hours a day, and despite the massive importance of outside play and gross motor activity for early childhood development, the TDSB does not build playgrounds. They do landscaping, hence the fencing and mulch, but they don't do playgrounds.

That's up to you, the parents. You have to decide to build a playground, you have to guide and help manage the consultation and design process and you have to raise the money.

So there we were with the outline of a playground, and since I was eco-committee chair at the time I suggested we should take the opportunity to build a natural playground. The idea was greeted with various degrees of enthusiasm; I think mostly people were just glad someone was doing something about what the kids had named "the nothing playground".

I'm going through the years — literally — of emails on this topic and I think I had better give you the condensed version. (I sent my very first email about the natural playground in January 2010, and we finished the playground in August 2012.)

So here's the compressed, idealized process, with advice.

1. Get Your Ducks (And Your Dollars) In A Row

First you need to decide you're going to do it. You'll have to sell your parents, your administration and your teachers on a natural playground. (I didn't have any trouble with that up front, although there was some pushback later when people realized what a natural playground actually meant, and I had to explain the concepts over and over.)

Next you need to meet with your community — teachers, parents, staff — and talk about what you want from the playground. Both from a high-level, philosophical angle and also about the specifics of what you want: A slide? An outdoor classroom? A sand box? Make sure everyone has been included and that you all roughly agree on what you want. You have to do this before you come to the table with the TDSB playground designers.

This was one of the most frustrating parts for me, because I didn't feel we were in any position to make these decisions: we didn't have either a landscape architect or a playground designer on our team and we had no idea what was possible or desirable. But the TDSB wants you to have met, discussed and agreed before you come to them.

They also want you to have $10 000. Or at least, that's the sum we had to pony up to prove that we were serious about funding a playground.

Once you have expressed your interest in building a playground, there will be a meeting with the TDSB groundskeeping staff, the school administration, and representatives of parents and of teachers. This meeting tripped us up because the kindergarten staff just sent whichever random teacher was available, and that teacher hadn't been to any of our previous meetings. So she had no clue what the concept of a natural playground was and I spent half the meeting explaining it to her and telling her why we didn't actually want those bouncy spring toys or another playhouse. As a result we looked like we hadn't consulted at all, and we got a stern talking-to from the TDSB designer. She didn't want to hear from us again until we had consensus on what we wanted.

Don't make the same mistake. Make sure everyone involved understands what you want.

2. Get To Know Evergreen

You know Evergreen: they're the people behind the Brickworks, where you go for fresh organic produce (or waffles and French fries, if you're me) at their Farmer's Market, to fix your bike, and where your kids can look for turtles and make stuff in their natural playground, Chimney Court.

But Evergreen also works very closely with the TDSB to do schoolyard greening and playground development. I'm not sure exactly how their relationship works, but several people we worked with seemed to be employed by both Evergreen and the TDSB.

Evergreen is also a source of grants, through their Toyota Evergreen Learning Grounds School Ground Greening Grants, which is available to pay for plants and certain playground elements.

3. Be Flexible

Once you have furnished the $10 000 and convinced the TDSB you have some consensus on what you want, they will assign you a landscape architect (no, you don't get to decide who your landscape architect is) and you'll meet with them. By now I think a few schools have attempted to build natural playgrounds, so you shouldn't have to spend too much time explaining what you want and why. But when you're going through the design process, keep in mind what a "natural playground" means to your team, and be prepared to be flexible about what yours will include.

Rope climber

For example, a playground needs a climbing structure, to help develop balance and upper-body strength. Some natural climbing structures are, for example, really large rocks and trees. There is no way we could afford really large rocks, and trees freak out teachers. So we ended up looking for a manufactured climbing structure. At one point during our design meetings we had to choose between an abstract rope climbing structure and a "fort". Neither are natural, but we chose the rope structure because it satisfied our requirement of being abstract and, for want of a better phrase, narratively neutral. It can be a tent, a rocket, a tree... The fort might be a castle or a house but it's always a building — a manufactured simulacrum of a manufactured structure.

Even after we had been working with the concept of a natural playground for a long time, some members of the team didn't get it. At one point the quote for the playground came back much higher than we anticipated, and we had to look at cutting some elements. One of our team members was very put out that we would only have "two pieces of equipment" in the playground, meaning the slide and the climber. Those, of course, were the two manufactured elements. She was overlooking the retaining walls (a.k.a., balance beams, fortresses, tightropes), the log benches (a.k.a., balance beams, dragons, mountains, blast shields), the sand box, the rocks (a.k.a., icebergs, dinner tables, space ships, go-carts), and everything else that didn't come in a big box labelled "fun play equipment".

4. Think Long-Term

One important consideration was the expected lack of maintenance. Basically with a TDSB playground, it gets installed and that's it until it's time to take it down and put up something else. Of course the staff will repair things when they break, but you can't include a cool willow tunnel or anything that needs a lot of attention as it grows, and if you put in planter boxes you'd better be damn sure someone is committed to maintaining them. Bear in mind that even if the current community of parents is committed to maintaining the playground, the next generation may not be. You don't want to install something that's going to become a liability or an eyesore.

5. Try To Keep Your Patience

Working with the TDSB was frustrating at times. It's such a large, cumbersome organization that there doesn't seem to be good communication even within it, let alone with the rest of the world. Three examples of this:

  1. It's hard to figure out which playground equipment suppliers you can use. At one point we tried to get a list of TDSB-approved suppliers, and it seems there is no such list. But you can't purchase equipment from just anyone. What we ended up doing was giving pictures of stuff we liked to the landscape architect, and she sourced similar elements from providers she knew were approved.

  2. We had one really fantastic meeting toward the end of the design process. All the interested parties were there: designer, grounds staff, administration, parents, teachers, and Sydney's father. It was the meeting where we made all the final design decisions, including the specific elements and colours we wanted. We had two design principals: to keep the playground visually natural, and to incorporate pink, which was Sydney's favourite colour. We chose a pink slide and complemented it with a green frog sculpture. We also chose red for the climbing structure (because red is kind of like pink?), and tan for the rubbery safety surfacing around the slide and climber. Lovely, right?

    Red climber, red surface, clashy clashy

    Well, it turns out the TDSB only uses a brick red colour for the safety surfacing, at all their schools. We didn't find that out until they installed it. You can imagine how great brick red looks with a pink slide and red rope climber. If we had known that — if the TDSB staff who was at the meeting had known that — we would have made different choices for the colours.

    (Incidentally, when the frog arrived she wasn't green, she was grey. I don't know where the screw-up was: was she ordered wrong? Was she manufactured wrong?)

  3. I wanted logs. Logs are such an obvious element in a natural playground. But the TDSB Grounds Team Leader didn't like logs. He said they attract carpenter ants and wasps, they're a liability and no-one wants to pay to have them removed when they rot. I had visited a playground which was built 15 years ago and had no problems with their logs, but he was quite adamant that logs were not an option. We ended up looking at fake logs made out of cement.

    Logs, bark still on, not on gravel

    And then suddenly, after months of no logs, logs were an option. I'm not sure what changed, but at that same meeting when we decided on the colours, the Grounds Team leader said that he had a source for nice hardwood logs that wouldn't rot. He said they remove the bark from the logs, and if they install them on gravel so they're well-drained there's no concern about rotting. Great! Let's have logs! I was really happy about the logs.

    And then the logs were installed. As you can see, they do not have the bark stripped from them, and they are not installed on nice, well-drained gravel. I have no idea what went wrong there, but obviously the Grounds Team leader's specifications for logs were either not communicated, or not met. I'm not even sure if the logs were from the same provider he was thinking of.

So did we end up with a natural playground? Kind of half-and-half. The playground has lots of natural elements, including the trees which were already there, some new shrubs we planted, the problematic logs, rocks, wooden landscaping elements like retaining walls, stone seating, and a slide built into a natural slope in the playground. We also have some unnatural elements, like the surfacing, which is required around the slide according to safety regulations (even though the slide is at ground level!) and the climber. And we have the frog, which is kind of emblematic of nature and just really sweet.


Between the safety considerations, the limitations on providers, the lack of maintenance, and the lack of understanding of the concept of natural playgrounds, it would be very hard to have a truly natural playground in the TDSB. But if you communicate the concepts behind a natural playground clearly to your school community and convince them it's a good idea, you can get pretty close, and you can definitely install a playground which provides a rich, natural environment for your children to learn and grow in.

Please feel free to contact me if you want more information about building natural playgrounds or if you would like a tour of Sydney's Playground.

[Posted at 23:42 by Amy Brown] link
Fri, 23 Nov 2012
Cleaning out your Firefox profile.

For a while now, I’ve been having problems with my Firefox profile. To be fair, it’s mostly because of random about:config tweaks I’ve made, but still, not being able to test the new SocialAPI stuff was pretty annoying. So I decided to try resetting my profile, to clear out all the junk, and hopefully even make it a little faster.

But, as the page I linked to just up there mentions, resetting your profile will lose your open tabs, windows and tab groups, which kinda sucks, because I have 57 open tabs, in various groups, and I really don’t want to lose them! Fortunately, I’m a programmer, so I hacked on Firefox to get it to save and restore my tabs, and now I’m a happy camper!

A couple of days later, one of my co-workers had some similar problems, and also wanted to re-set his profile to try and fix them. I hadn’t saved the results of my hacking, so I had to re-create it for him from a combination of memory and the documentation. The new code I came up with looked something like this:

var x = gBrowser.tabs
var rv = "var tabs = [\n"
for (var i = 0; i < x.length; i++) {
  rv += '  "' + x[i].linkedBrowser.contentWindow.location + '",\n';
rv += '];\nfor (var i = 0; i < tabs.length; i++ ) {\n'
rv += '  gBrowser.addTab(tabs[i]);\n}\n'

To run it, first open about:config, and make sure the preference is set to true (double-click it if it isn’t, and it should switch automatically), then go to the Tools » Web Developer » Scratchpad menu item, which should open up a small new window with some javascript comments in it. While that window is focused, click on Environment » Browser, to make sure that you’re running the code in the browser’s chrome (instead of in the page’s content). Paste the code in, and click Execute » Display.

That should result in a bunch of code in grey surrounded by /* and */ that looks like:

var tabs = [
for (var i = 0; i < tabs.length; i++ ) {

Copy that out of the scratchpad into your favourite editor, remove the /* and */, and run the profile reset.

Once you’re done resetting your profile, you’ll need to change the preference to true again, and then re-open the Scratchpad, paste the new code you saved back in to it, click on the Execute » Run menu item, and shazam! All your tabs should be back (although they won’t be in their original tab groups. If anyone needs me to figure out how to do that, just let me know, and I’ll give it a try).

[Posted at 13:42 by Blake Winton] link
Mon, 01 Oct 2012

Here's a letter I wrote to Delphine's teacher about the daily reading log he has asked us to have the children fill out — the children are supposed to read for fifteen minutes a day, and the parents are expected to initial the log on a daily basis.

Mr. F——

Delphine has not been filling in her reading log. I admit I haven't been encouraging her to -- I want her to read for as long as she wants to for pleasure and knowledge, not to a clock because she's been told to. Delphine is a born reader and we have no problem getting her to read or to challenge herself.

I can assure you with a great deal of confidence that she has read for at least fifteen minutes every day this September, and indeed probably every day since she learned to read four years ago. I can also assure you, with almost the same degree of confidence, that she will read for at least fifteen minutes a day for the rest of the school year. I'm so confident of that that I would happily pre-initial a year's worth of reading logs right now. However, I expect that would defeat any other purposes of the reading log that you have in mind.

If the reading log serves to give you some idea of what students are reading, would it be acceptable for Delphine to provide you a list of what she has read? She's also willing to write a report on what she's read once a month or at some other frequency if that would be helpful.

Let me know if you'd like to discuss this in person -- I'm available before and after school most days.

Hopefully he will respond favourably. I think the only eventuality I didn't cover in the above letter is that he wants the kids to fill in the reading log because he wants them to get used to doing bullshit paperwork. This is a defense which comes up frequently when this matter is under debate. "They're going to have to do mindless busywork at some point, better get them used to it!" I don't buy it. They're all going to have to, say, wear glasses at some point (unless they die before middle age), but no-one advocates making all children wear glasses.

And it's not like doing bullshit paperwork is a sophisticated skill you have to start working on in childhood, like playing classical piano or doing gymnastics. You can pretty much pick it up in half an hour.

Anyway, Mr. F—— strikes me as an intelligent and thoughtful teacher, so I don't think he's going to go for the bullshit paperwork angle. We'll see how it turns out.

[Posted at 13:54 by Amy Brown] link