We are cursed by infinite ideas vs limited time. Applying the law of diminishing returns results in ideas having a negative value. It like going to a bank and asking for a big debt, if you even consider an idea. Its hard to get rid of an idea, once its settled in our brain. Its taking space, and chanting code me,code me, when you prefer to be in flow of a boring big $$$ customer project.

It looks as if you are good in doing lots of small projects. Elance projects pay shitty, and you still claim you can make a living. But they are often small, very constrained, payed by hour. Thats different to coding something big for your own progress.

At first a tip from someone who learned coding with paper tapes: Code for max 4 hours directly after getting up. Do not read any mail, no forums or news sites, before your 2nd breakfast. Relax the remaining day, after replying to mails. Try not to procrastinate to much at a computer. A computer should be your work tool, not an entertainment device. Try to get a balance outside, e.g. a dog can be a great excuse to walk around the neighborhood, and walking around is one of the best ways to focus thoughts.

We all know the moment of the glorious vision at the evening, a small joint to get into flow, and at sunrise you suddenly realize you have written 500-1000 lines of extremely smart and perfectly working code, of a prototype of our vision. But sorry. I'm coding for nearly 40 years. This magical flow in the night shift happens once or twice a year, if lucky. Trying to force yourself into flow in the night shifts, will only lead to procrastination.

Many of my own projects started in such a magical flow. But to execute the prototype into a product requires continuous bring coding work. This means, that after I started to code the idea, I'm taking an even bigger debt to execute it. This is sometimes difficult if big $$$ customer calls with a problem. But I can continue on my own project, once I solved his problem, and wrote my invoice.

Its really easy to get into flow, once you got the habit, to make a coffee and perhaps a toast, and instantly start coding after wakeup. Its important not to code more then 4 hours, but to stop at noon, when you think its a good point to commit work, and to do something different. You'll code more errors, if you become tired, and nobody can sustain long coding sessions every day. Enjoy the real life outside of the computer screen.

About development stack: Less is more. Learn to code without all those framework bloat, and also avoid over sophisticated development environments with tool chains for hyped software development methodologies. You don't learn to play guitar with lots of effects, but on an acoustic for good reason. One can add effects later, but its important that you sound great even without. I'm a bad musician. Adding gimmicks between me and the sound wont improve my music, but instead causes me to play around with those gimmicks instead of making music. I'm a coder, sure I know a lot of music theory. Gimmy a line and I can compose and arrange a song in an evening, and everybody in the band has fun, but if I try to compose a song on computer I end up with nothing but junk.