When we were working on our own startup, back in the 90s, I evolved another trick for partitioning the day. I used to program from dinner till about 3 am every day, because at night no one could interrupt me. Then I'd sleep till about 11 am, and come in and work until dinner on what I called "business stuff."
Seven years in, I ended up here: working each day, working ONLY when I feel motivated, studying quite a bit, and not worrying about the hours. I instead focus on deliverables, being happy/healthy, etc. Oddly enough, I end up getting more done than when I forced 10/12 hour days of solid work. When I would force 70+ hour weeks, for years at a time, it was terribly draining. When I only work when I want, I actually still end up working roughly 60 hours (I like it, it is fun). However, each day seems like a vacation. Want to do some open source? Do it. Want to goof off for a while? Do it. Want to get some work done? Do it.
Works for me at least. I'll do the same routine when I am "retired". :)
Usually this means 8-5 with a "go to bed" alarm set 9 hours before I want to wake up.
It's a daily struggle, but I feel like keeping the balance of time on projects is key. It's easy for me to fall into a rut and work on one area and neglect others.