on topic:
melvang, do you literally only want to do firmware in C?
otherwise, I find lego mindstorms quite entertaining. there's probably a cheaper alternative somewhere. lego mindstorms was java only when I used it though.
offtopic:
My recommendation, start with some Python/Ruby tutorial and write scripts that actually help you, like rename some files for you or visualize some data, maybe write a game in PyGame. Once you feel confident, leave the comfort zone and start with C. Maybe with some hardware kit.
please for the love of god, let's stop with the use of whitespace sensitive languages (python).
What's wrong with Python?
Leaving out indentation is easier to spot than missing a } somewhere.
And you probably indent your source already, right?
1. because it's an -ism
just like phpism with form inputs
like JS ASIism
adding language specific styles just to look like 'not C' is terribad.
2. you GREATLY punish developers with visual impairment.
I personally know a dev who prefers to add 3 tabs just to make it easier to read indentations. if they tried to pull that off here, they would have to unformat/reformat EVERY time they ran their code. this leads to LESS testing and more time wasted going through the testing cycle (no, a testing framework really doesn't solve this problem - not everything is a library).
basically, run time failure on whitespace causes problems, doesn't actually solve the problem it's trying to fix, and makes the problem it's trying to fix even harder to fix.
something is wrong with your codebase if you can't match up curlys. having them there if anything is a GOOD thing, it's one of the most obvious code smells.
the issue isn't just with python, but rather the concept of whitespace sensitive languages in general. just because you can be a hippy doesn't mean you should.