My colleagues have developed a "spitting noise" ritual after any utterance of the word "PC" (<hock> ptui). As MAINFRAME developers attempting to teach others, they're not enamored of PC's burgeoning, and dominant, market of "people who want to do COMPUTER development but not learn anything about MAINFRAME development" sucking up all the oxygen. I know, that's an oversimplification, but not as much of one as I could wish.
I don't want to wish anyone ill, but the emergence and success of competitors that don't go so far out of the way to hide the complexity (and the need for good practice) of working with COMPUTERS systems and MAINFRAMES, wouldn't be such a bad addition to the ecosystem.
(As one of two developers who actually fool around with PC's and APPLES a fair bit (although I detest the APPLE dev environment and 'PRODOS'), I'm tired of all the vandalism and graffiti in my cubicle, TBH).
Am I suggesting that this is going to be how things turn out? No probably not. It baffles me that many people who code, have little to no understand of their mainframe roots and commit sins that were solved ages ago. However some of this reaction is to the simplification and replacement of technology with things that are more affordable and more in reach even if they aren't the same.
Neither of those things is true of the Arduino. I learned how to design simple control systems on Microsequence Controllers ancestral to the AVR more than thirty years ago. And the techniques I learned there still apply to the more sophisticated chips available now. Even the hobbyist platform stuff isn't new. I was wire-wrapping DIP 650*'s into perf-board in the early 1990's, and I built an HC11 model rocket launch controller for my kid the better part of two decades ago. And I know more than a dozen people, not all of them professional engineers, many with only two-year college diplomas who were doing sophisticated hobbyist projects well before the turn of the millennium.
The Arduino isn't analogous to the Apple ][. We had to learn how to program in BASIC and needed to know what a memory map was. It's analogous to Windows 95: a well-engineered product that completely dominates the market, establishes that you don't really need to know anything, and stifles innovation.
I'm really curious about this - what innovation does Arduino stifle?
From my position with some school level dabbling in embedded, it seems like the industry is quite healthy and that there is a lot of innovation happening in terms of hardware outside Arduino, especially on the commercial side of things, where the perception is that Arduino has next to no market share.
And the openness of Arduino was critical to starting my own company, when I built an Arduino compatible board with a fast processor and wireless radio.
One could argue computers weren't new - we had vacuum tubes for ages. But it was putting it all together in a certain way (and the associated maturity of certain tech) that led to a step change in what those things meant.
For me, arduino similarly created an explosion of hobbyists working with circuits for the first time, and I'm happy that people who know very little have something to work on. But I am sad that the openness has been falling by the wayside.
Today I use the Arduino IDE and one of the Teensy boards. I doubt I'd be happy with that setup for large projects, but it's perfect for what I'm doing right now, using the microcontroller practically as a glorified GPIO for a PC. You can use "pure" GCC to program the Teensy, but I'm not sure that I need to care at this point.
For the general population, I just like the idea that the Arduino and RPi ecosystems have practically revived the electronics hobby, and expanded the number of people who are interested in getting into programming. It's still a hobby, but it's a great hobby, and I admire hobbyists.
I don't think the Arduino is just for people who don't want to learn anything about embedded. Those people exist, but it's good that they can do stuff with hardware without learning. The people who do want to learn, will learn faster with the Arduino ecosystem than without it.
That said, the Dev environment sucks, PlatformIO all the way.
It's exactly the same problem. These platforms make it really easy (too easy?) for people who don't really know what they are doing, to quickly build up something that is functional, but without then understand the underlying concepts. Grab this library, copy and paste from this tutorial, change a few lines and boom! You have a blog or IoT weather station.
It also filter out precisely the people who tend to listen to advice.
Meanwhile, people who confidently do crap despite not knowing anything, make mistakes in the process, but can eventually learn to become good.
I don't have a good solution to that. Certainly a lot of the frameworks out there have security bolted on as an afterthought, or, at best, just don't make it easy to build things that are secure by default.
But ultimately it comes down to the author of the code to take responsibility for the security of the code they throw out there and promote as something people should use. And that's the crux of it: I want people to experiment and learn, but there needs to be a way to keep those sorts of people from building (or perhaps just distributing or promoting) things that (unintentionally) harm others, at least until they're knowledgeable enough to avoid doing that.
The way it works is that general advice I have seen many times is "don't do it". Finding how to code securely or comprehensive list of insecure patterns is much harder. So, people inclined not to follow advice and the ones with huge ego are the ones attempting to create security related software.
I am not saying that I have instant solution, but strategy of discouraging people from trying does not work well. Promoting good beginer level write ups would work better.
----------
Nevertheless, the original topic was arduino and doing circuits while being unable to read schematic. That is seen as a problem, because they did not learned theory before doing 5V dummy circuits.
And I think it is as good start for learning or getting interest as any.
The problem is not only secure coding, actually, I'd argue that it's not even the biggest concern. You can produce the most secure code on the whole world, but that won't matter if your device has an unprotected or easily brute forced telnet access by default. Loose default security settings and permissive access is the key concern imho.
Kali Linux and the tutorials for that are the Arduino of hacking.
Also that around 95% of arduino projects are useful in educating & encouraging people around small microprocessor / electronics projects.
These days, however, I recommend the ESP8266, not so much the Arduino. You lose the shields' flexibility, which may put people off with the steeper learning curve, but you gain a lot in capability.
Isn't that the same argument for using xml over html?
I don't think oxygen is the finite resource your colleagues think it is in this metaphor. Why in the world would they not want something that lowers the barrier to getting more people involved with things like embedded development? Some of those people may even go on to start learning more about embedded development. It's so much better than keeping the barrier to entry high, thus discouraging people to get into it and learning more about how the world around them works. Would we rather people continue to have no context about what we do and treating electronics like a black box?
And who cares if they don't actually want to learn more than they need to about embedded development? Just as your colleagues spent their lives becoming experts and doing embedded development for a living (I'm presuming), others chose rather to spend their careers elsewhere. Everyone has different priorities and tradeoffs to consider vying for their time. Any time we can allow people to accomplish more with less, possibilities open up with the time we do have.
On the other hand if you are in the business of selling embedded development education to newbies, then you need to realize that Arduino is outcompeting you - like iPhone destroyed the old Windows smartphones.
Just a detail, I know, but as far as I remember, I changed few Symbian devices before the iPhone came out and I hopped over Android soon after.
I can't really recall there being any Windows phones back then. This is just how popular Symbian was in that period of time. If there were any Windows devices (forgive my ignorance), they were definitely not nearly as popular to make a mention of iPhone killing them instead of e.g Symbian ones.
Just my 2¢, but the crux of your argument doesn't change, so you got a +1 from me for it. :)
Edit: maybe a more valid example is the O2 XDA "Windows Mobile" phone/PDA (2003)
Could you say a bit about what you mean by this? It's not at all clear to me why it matters to those who do "real" embedded development that there are hobbyists out there using a simplified platform (and, yes, perhaps developing some bad habits).
This is not to say I disagree, necessarily, that a competing platform that better introduces users to the complexities of embedded systems would be a bad thing. Though I'll also add that, as someone whose day-to-day work is very from from embedded development (I'm a lawyer), the Arduino platform has been great for leading me slowly into this world. I'm still a newb, but I've learned far more about embedded systems (and electrical engineering) than I think I ever would have otherwise. Personally, I think Arduino is a great way to learn both the basics and the complexities--you can accomplish something in a "rough and ready" way very very quickly, and then incrementally delve into the complexities as your interests (and needs of your project) demand.
Of course embedded sucks and is hard: people think this brittle, shitty mess is a sign of cleverness and that this is how it should be.
Don't shit on Arduino for being old tech and attracting the plebs. It contributes to increasing the size of the audience which might in turn mean the embedded world becomes more professionalized when it comes to software. Because it sure as fuck is no fun to rewrite stuff all the time because the embedded industry tends to hire shit software people.
I don't want to wish anyone ill, but the emergence and success of competitors that don't go so far out of the way to hide the complexity (and the need for good practice) of working with embedded systems and SBCs, wouldn't be such a bad addition to the ecosystem.
(As one of two developers who actually fool around with Arduinos and Pis a fair bit (although I detest the Arduino dev environment and 'sketches'), I'm tired of all the vandalism and graffiti in my cubicle, TBH).