the further adventures of

Mike Pirnat

a leaf on the wind

Next Page »

Girls Rock

Yesterday, my daughter asked me, "Daddy, would you make me a CD of rock and roll music with girls singing?"

First off, I'm pretty sure that this is awesome, because:

  1. She's interested in music
  2. She's already tapped in to the whole gender empowerment thing
  3. She's trusting me to help her find good stuff

There are a few obvious things that are favorites of mine that immediately come to mind, but I'd love to take suggestions as well. Keep in mind that she's four, so at least some level of taste is necessary (I'd probably be okay with the Letters to Cleo cover of "I Want You to Want Me", but not with anything off of Liz Phair's Exile in Guyville, for example.)

So, what awesome girls rock your music world? Comment away!

Read and Post Comments

Introducing "How Old is My Kid?"

Between books, magazines, websites, and your friendly neighborhood pediatrician, there are tons of resources to help guide new parents through the development of their new bundles of joy. You can track your kiddo's progress toward various typical milestones and even predict periods of increased fussiness and sleep regression, as long as you know how many days, weeks, or months old your little darling is. But with a new kid in the house, you're sleep deprived out of your mind and barely know which way is up, and it's not like any of us are really used to measuring age at that level of granularity.

Once upon a time I came up with a solution that worked for me--I wrote a little program that would drop an RSS feed every day with my daughter's age in it. I got a couple of suggestions that it would make a useful web service, and though I agreed, it took me a long time to finally get around to it.

Lucky for you, the wait is over! is live and ready to help you keep track of exactly how long your munchkin has been around. Just plug in your kid's name and birthdate, hit the button, and optionally subscribe to the RSS feed so that you'll get daily updates--and then it's a quick trip to being Parent of the Year.

I hope you enjoy it--please let me know what you think!

(Aside: I'm very happily posting this live from the stage at PyCon--it's been a great conference and I can't recommend it enough!)

Read and Post Comments

1000 Days of Claire

It's almost impossible for me to believe, but Claire's now one thousand days old.

In that time, she's transformed our lives in countless ways, amazed us at every turn, and given me a whole new perspective on the world. It's been simply astounding to watch her develop into her own beautiful little person, by turns loving, funny, and fierce.

When she first arrived and became our focus, the most important rule we had was that any day that ends with all of us still alive was a victory.

So here's to a thousand consecutive victories... and hopefully many, many more to come.

Read and Post Comments

He Who Rocks and Puts Away Lives to Rock Another Day

The kiddo has had a pretty strong musical interest for a while now, but in the last week or so she's gotten really excited by my Rock Band controllers, which have been hanging out in the corner of the family room, right where they're easy for her to get at if she wanted to. I'm content (thrilled, in fact!) to have her noodling around with my original Rock Band 1 controller (of the woefully busted whammy bar), but I'd like to keep my pair of RB2 controllers in good shape for as long as possible.

So, off we went to Guitar Center to pick up a couple of guitar hooks to hang the controllers on the wall, safely out of reach from curious little hands.

I'm not sure if I'm more embarrassed by buying guitar hooks for my fake guitars, or by the fact that we'd worked up an elaborate tale of how I'd recently inherited a (fictional) ukulele collection (to explain my concerns about whether the hook would be narrow enough to hold the guitar head). Sadly, no questions were asked about my purchase, so we never got to try out the story.

So, here you go--photographic evidence that I am, in fact, pretty much a total dork. Enjoy.

Read and Post Comments

Wait, How Old Is My Kid Again?

The thing about being a relatively new parent is that life very quickly becomes a complete blur, and after a certain point you've no sense of what day it is, let alone how many weeks old your little bundle of joy is. This makes life tricky, since there are certain milestone weeks that are usually the harbingers of sudden shifts into higher levels of fussiness and sleep regression.

So what's a frazzled dad to do?

Well, I do have Python, and I seem to have Google Reader open an awful lot, and cron jobs are a lot better at remembering to do things than I am... So here's my fifteen-minute solution that I whipped up the other week in between putting Claire down for her morning nap and getting ready for work. (File names and URLs have been changed to protect the innocent.)

#!/usr/bin/env python

import datetime
from dateutil.rrule import rrule, DAILY, WEEKLY, MONTHLY
import PyRSS2Gen as RSS2

# You'll want to change all of these values, obviously...
KID_NAME = u'Claire'
BIRTHDAY = datetime.datetime(2007, 9, 10, 21, 57)
FEED_URL = 'http://yoursite/kids_age.xml'
FILENAME = 'your_path/kids_age.xml'

def periods_between(freq, start_date, end_date):
    rr = rrule(freq, dtstart=start_date)
    periods = len(rr.between(start_date, end_date))
    return periods

def format_entry_body(months, weeks, days):
    body = """<h1>Today, %(kid_name)s Is...</h1>
        <li>%(months)s months</li>
        <li>%(weeks)s weeks</li>
        <li>%(days)s days</li>;
    <p>They grow up so fast!</p>"""
    kid_name = KID_NAME    # so we can cheat with locals()
    return body % locals()

def make_rss(body):
    now =
    # Add a hash component to the item link so that the RSS reader
    # will recognize this as today's new entry...
    item_url = FEED_URL+'#'+now.strftime('%Y%m%d')
    rss = RSS2.RSS2(
        title=u"How Old Is %s?" % KID_NAME,
        description=u"How old is %s in months, weeks, and days" \
            % KID_NAME,

        items = [
                title=u"How old is %s today?" % KID_NAME,
    return rss

def to_xml(rss):
    xml = rss.to_xml()
    # Make our xml at least a tiny bit human-readable
    xml = xml.replace('><', '>\n<')
    return xml

def main():
    now =
    months = periods_between(MONTHLY, BIRTHDAY, now)
    weeks = periods_between(WEEKLY, BIRTHDAY, now)
    days = periods_between(DAILY, BIRTHDAY, now)
    body = format_entry_body(months, weeks, days)
    rss = make_rss(body)
    xml = to_xml(rss)
    f = open(FILENAME, 'w')

if __name__ == '__main__':

You will, of course, have to install dateutil (via easy_install) and PyRSS2Gen (the old-school tarball way) so that they can do the heavy lifting for you.

Then all that's left is to cron it to run daily, and point your favorite RSS reader at the feed. Voila! You're on top of exactly how old your kid is, and quickly on your way to becoming Parent of the Year.

Read and Post Comments

Hello From the House of the Dead

I was really looking forward to writing some more about our "first Christmas" experiences, or of our post-Christmas road trip to Chicago for a Boyd-side reunion of sorts, or Liz's 30th birthday festivities (oh, the wine!), the exciting new year to come, but instead I've been absolutely annihilated by some sort of mutant cold virus that's busy devastating our house.

I'm sick. Liz is sick. Worst of all, Claire is sick.

Normally I'm content to lie in bed and feel awful until I've kicked whatever I've come down with, but when the baby is sick, that hide-in-the-covers-and-pretend-to-be-dead time evaporates. She wants hands-on attention whenever she's awake, won't sleep for more than an hour at a time, and largely refuses to sleep if she's not being rocked to sleep in one's arms. It's hard to get healthy when you're trying to be a good parent, and hard to be a good parent if you aren't healthy enough to stand up.

So it's a tricky game around here, and not a lot of fun. Hopefully 2008 starts to improve soon...

Read and Post Comments

Did You Get What You Wanted?

As the Christmas Day festivities wound down and we settled into a quiet afternoon together, Liz asked me a question:

"Did you get what you wanted for Christmas?"

My thoughts flickered quickly across the warm and happy morning spent with my beautiful wife and daughter, singing songs, opening presents, cooking breakfast together, playing with the cats. The smiles on the faces of my two favorite ladies. Savoring old memories and making new ones. Being a family.

"Yeah," I said. "I did."

Read and Post Comments

Up for Air

Phew! It's been crazy busy the past couple of weeks. I can't believe I haven't had time to come up for (blog) air since before Halloween.

First of all, I'm happy to announce that after a lot of extra work on the weekends and evenings to get things wrapped up, AG's new custom photo card service is now live and ready to help you with your holiday card needs! I'm honestly very impressed with the product--the card designs are great, and they look fantastic on the high-quality paper they're printed on. Since I'm not AG's usual target demographic, it's rare for me to be this wowed by what we put together, but these are cards I'd want to buy and send. So, major congrats to everyone on my team and who's helped to bring this to life!

Claire's had her first cold, which has thrown the sleep schedule off a little bit during the day, but she's still sleeping through the night like a champ. She's graduated to a new size of diaper, and progressing happily (she's gained almost 40% of her birth weight already!). She's recently discovered that her legs are stronger than she thought; she really enjoys standing up while I steady her torso. And there are several more great photos over at my Flickr stream (again protected for her privacy).

It's hard to believe, but our anniversary's come around again already; it'll be seven years tomorrow. We'll celebrate with Champagne and caviar and a nice relaxing dinner in. Marriage has been quite an adventure so far, and it's just getting more interesting as it continues... One thing that's abundantly clear is that sharing my life with Liz has simply been the best. :-)

Off to check on Claire--it's time to eat and play again!

Read and Post Comments


Between work and Claire, life has been too busy to blog lately. In the office, it's crunch time again, which means weird hours and sometimes some weekend heroics; at home, we've had some rough going with the whole getting-Claire-to-sleep thing.

So we're giving up on the "let the baby figure out when to be asleep and when to be awake" strategy and are putting her onto a firm schedule. Liz picked up Good Night, Sleep Tight from the library, which we used to draw up a rough sleep/wake schedule and a bedtime routine. We had to miss what looks to have been an awesome party last night (alas!), but so far the schedule is working out great, and will probably help us get back to being social sooner. Mom and Dad are finally getting enough rest to feel human, and Claire's demeanor is already greatly improved. We also decided that she's old enough to start sleeping in her crib instead of the bassinet in our bedroom, and she's sleeping like a champ in her new digs. Hooray!

This has allowed me to discover two-hour chunks of time to Get Stuff Done that I hadn't previously had, so I've finally made progress on a bunch of personal projects that were falling by the wayside. I finally upgraded Drinkable Grape to the latest version of Wordpress, registered a domain name for a personal project (hooray for Bust a Name, a very cool way to find available domains), and decommissioned our personal WebDAV app in favor of using Spanning Sync to share our calendars with each other. I've also uploaded some more Claire photos (restricted again to friends and family-only access).

I've been doing the personal unit test thing for just over three weeks now. I've been using a Google Docs spreadsheet to track my results for each day; it works, but it isn't perfect. I like that I have access to it from any computer (good) but dislike how laggy it is, and the charting options aren't quite doing it for me. So while I need to find a better system for tracking my data, overall I like the process; I like seeing the things that need work, and I love seeing and tracking measurable improvements. The net effect of succeeding at lots of little goals feels pretty good.

Read and Post Comments

Next Page »