Regarding the mistakes section, the technical side of that is something I've also experienced. When you're working with smartphone derived hardware and platforms you get a pretty sophisticated platform that can do a lot, but it also takes a lot of effort to get everything working and stable. And you'll need to know how to use everything from linux build tools to an oscilloscope. And then 18 months to 2 years later, a new generation or hardware is out so you get to start again :-/. Very labor intensive.