Now I just use plain old avr-gcc or gcc-arm-none-eabi and my favorite text editor, and my embedded development experience with Arduino-compatible products has never been better (despite not using anything from the Arduino project).
After about 5 hours of work and making a lot of progress I was happy with, my Mac crashed and rebooted, which is extremely rare (except when working with something connected via the USB CDCACM driver... sigh).
I then discovered that all the changes from the past 5 hours were gone, the project files were in the exact state they had been when I woke up that day.
Despite compiling and uploading new code to the Teensy 100+ times, the IDE saved nothing new to disk in the process (which on a side note, is weird. Where is the external toolchain getting the changed files from?). I never explicitly hit the save button, so it all disappeared. I spend a good percentage of my life in Xcode, I know it doesn't behave that way. I can't say I remember Netbeans, or Eclipse, or any other IDE that I've used, ever losing work because I only clicked build rather than a separate step for saving to disk.
Apparently that behavior has caused a lot of people to lose a lot of work over the last few years judging from a quick google search.
And yeah, Teensy is great, but their USB code is a bit... out of spec sometimes. Also, the Teensy 3 in the Arduino IDE is (was?) kind of a nightmare. They have a gigantic C++ object that emulates all the registers on an AVR, and translates operations on those "registers" into operations on ARM MMIO.
One big wish I have is to find a way to write automated tests for my Arduino libraries. Or even for pure C/C++ classes used by my libraries, but I havent' yet invested into setting up Eclipse to build/run tests with an Arduino type project. Curious to know if anyone has a solution to automated testing of Arduino and pure C/C++ libs that are used by their Arduino code?
Regarding the other remark below – nobody is doing it wrong as long as they are doing it. The post is a personal opinion, and should be taken as such. If Qt Creator works better for you, great! Write a blog post about it ;)
That said, I have found ST + the Stino plugin[1] to be great for my arduino projects. A good linter setup and gdb gives most of what I am looking for. The convenience of debugging with an IDE that auto-populates watches based on context is nice, but rarely are these projects sizeable enough (for me) to need serious debugging.
Using Stino + ST (and turning off the Arduino code munging) gives a typical GCC compilation which requires everything you'd expect of a GCC compilation (proper declarations, prototypes, scoping, etc).
I can understand why forsaking function prototypes and adding type aliases (such as 'boolean' usable for declarations in addition to 'bool') might make it easier for newcomers to learn to write 'sketches. But I am not sure it's great in the long run. So much of the Arduino code out there is poorly written, including some of the libraries I commonly see floating around. And coming from me (who is far from part of the greybeard C/C++ master engineer cohort), that says a lot.
I think that the Arduino platform would likely benefit from a more natively supported 'second step' development environment that encouraged better program organization and DRYness. I can't even count the number of arduino 'sketches' I have seen out there that are a mess of static global const variables declared in 2000+ lines of completely spaghetti'd code.
Of course, I think it's great Arduino is becoming so popular, I just wouldn't mind seeing some nicer tools/educational resources for those new to it.
For setting up your computer, you don't need to install any special heavy development kit except Codebender's plugin. I remember that after completing a getting started guide in 5 minutes I was able to program my Arduino board!
Cheers