How to stay focused?
makecheck: Use a revision control system, force yourself to commit only changes to one feature at a time.  This restriction helps you to avoid wandering into other things, as it would take extra work to manage the unrelated changes."Release" frequently; if you don't have any customers, just pretend that you need to package something up.  For instance, aim for a new build every day, and maintain release notes describing your changes.  If you haven't been doing anything worthy of a new build each day, you quickly realize that you're losing focus and not moving the project forward.