I have a related question for the author or anyone: How do you keep your energy up to code in the evenings on your own project, after a full day of coding at the office?
1. Get off work at 6 and get home at 6:30.
2. Eat something very simple (no carbs because it will make me sleepy)
3. Start working from 7:00
4. Work till 6:00am (that's 11 hours, which is 3 hours more than my day job)
5. Go to sleep at 6:00 and wake up at 10am and go to work
6. Minimize lunch time and take a nap.
This was possible because I was super motivated. If you're not excited enough about something that you would go through all this trouble, then it's probably not worth investing your time in. That's why I think you're asking the wrong question if you ask "how do you keep your energy?" You don't. You will be always tired and you will not have a balanced life while you do this. But at least you are doing something that means a lot to you, and that's the main factor that helps you keep going.
Of course it is not sustainable to keep going like this for years with no break. So you should take a break once in a while. In my case, at times I would feel very tired or start feeling like burning out. Then I would just take a couple of days off from doing ANY work. Go out and party, watch a movie, do all the "bad" things I would never normally do. I think most people who haven't tried this would say this doesn't work. But from my experience, just a couple of days of doing absolutely nothing is enough to get me back on track--that is, assuming that I am excited enough about the project to begin with.
So if this model doesn't work for you, it probably means you should find another project to work on.