"But if you are talking about software developers creating applications at a higher level, then a lot of them don’t have a clue about the “nitty gritty” details of programming a microcontroller at the lowest levels and interfacing with real-world input and output devices"
Very sad, but true. While the high level tools available today have the ability to leverage productivity, the isolation from the "iron" (silicon) is creating a huge work force that rarely even bothers to ask, "but does this approach execute efficiently"!
I have always maintained that any programmer worth his salary should be able to describe the assembly language instructions an optimizing compiler will generate for a given block of code. That doesn't mean he has to understand all the details or be able to write it himself but if he has never done cc -a -t he is clueless to what he is really doing
I agree and disagree. I agree that many developers working with high level languages don't understand the low level details. Abstraction of the low level details is the entire point of a high level language. Languages like C have come a long way in their optimization. If the compiler is not generating efficient code, then I would say that the deficiency lies in the compiler and/or hardware rather than the developer. That is not to say that the compiler or hardware are sub par, only that the industry itself is still quite young. I would rather see developers focus on sensors, transducers, and interfacing with the physical world, while relying on the microcontroller (and associated compilers) to Just Work (TM).
"I agree and disagree"
Way to sit on the fence (grin). It's like that Charles Dickens' book that starts "It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair..."
I thought to myself, if he can't make up his mind on the first sentence, what's the rest of the book going to be like?
The SparkFun folks are great. They have a very high level of customer service and a refreshing attitude.
I recently jumped into the Arduino world myself with the same concerns about it's capabilities. My conclusion is that it depends on what you want to use it for. I've found good use in learning how to use new sensors, like my GPS or IMU.
The Arduino has libraries for a huge number of peripherals and getting something like my GPS up and running is very quick. I can get familiar with the ins and outs of the sensor before putting a large investment in software for a lower level MCU.
I'd also put the mbed in this same camp. The mbed is more capable than the Arduino, and not that far off in cost now. The mbed also has quite a few libraries available.
Enjoy your articles. If you're interested in additional resources, I have a book published by Apress on building cool projects with the Arduino titled, Learn Electronics with Arduino. The book doesn't teach basic theory of electronics but the concepts such as Physical Computing, Mechatronics, and little Systems Engineering philosophy using the microcontroller platform as a hands-on teaching tool. Basic electromechanical and electronic components like transistors (BJT and MOSFETs), flyback diodes, relays, 7 segment LED displays, LCDs, and servo motors are discussed in the book. Each chapter has a wealth of projects along with Arudino sketches to explore the cool electronics prototyping platform. Here's an Amazon link to the book. http://www.amazon.com/Learn-Electronics-Arduino-Technology-Action/dp/1430242663/ref=sr_1_1?ie=UTF8&qid=1360357486&sr=8-1&keywords=Learn+Electronics+with+Arduino
Don't peek at my code! Isn't Arduino open-source?
I'm in the same boat, having done programming back in the day for batch jobs in SAS and FORTRAN, and in assembly and BASIC. I'm finding Arduino an easy platform to finally get started on some DIY projects without having to invest megabucks into development tools. Hats off to the Arduino community.
What are the engineering and design challenges in creating successful IoT devices? These devices are usually small, resource-constrained electronics designed to sense, collect, send, and/or interpret data. Some of the devices need to be smart enough to act upon data in real time, 24/7. Specifically the guests will discuss sensors, security, and lessons from IoT deployments.