I wish it was as easy as Kevin says ... unfortunately the life of most programmers does not start at 8:00am and end at 5:00pm.
Technology is ever changing, and in order to make it in the world of technology you have to stay on top of things, or you'll soon be out of a job.
I struggle with this same question ... and I do think it is a legitimate question.
I try to bust ass Monday through Friday. Sometimes that means I am home for dinner, other times I am running late. My wife is a great help, and dinner time is very flexible. As much as I would like things to be structured, say dinner with the family at 6:00pm every night, that is not a real possibility, so dinner time is flexible, try for 6:00pm, might end up being 7:00pm. We just try to have dinner as a family, that is most important.
Kids like to emulate their parents, so take advantage of that. While I do fun things like play lightsabers with my boys, I have three of them, and build legos, when I do have to work the weekend, I usually take them to work with me. I have some stuff there they can play with, as well as, I'll let them get on the computer and work just like dad does.
I try to make Sundays my technology-free day, but that doesn't always work, but it is a goal of mine that I am able to achieve frequently.
It's like I told my wife before we got married, you are marrying a geek ... I love to fiddle on the computer, and if time permits I am going to.
I'm not sure if this is much help, but just wanted to let you know I know and understand what you are going through, and I there is not an easy answer.