In carpentry you measure twice and cut once. In software development you never measure and make cuts until you run out of time.
Things that are impossible just take longer.
The first step of any project is to grossly underestimate its complexity and difficulty.
Later equals never.
Le Blanc's law
Features, quality, time: pick two.
The sooner you start to code, the longer the program will take.
Estimate always goes wrong. That too in one way.
After you finish the first 90% of a project, you have to finish the other 90%.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.
Source code available @ githubpull requests are more than welcome ;-)