I’d love to tell you that I’m never wrong, but I’ve been wrong a lot. Remember the Arduino? When it was brand new, I thought it was some silly collection of libraries and a drop-down menu for people who are too lazy to just type out their own #include
statements. Needless to say, it launched about a million hacks and brought microcontroller programming into the mainstream. Oops.
Similarly, about fifteen years ago, I saw an educational project out of MIT’s Media Lab. It consisted of a bunch of blocks that had LCD screens on them and would interact with each other when put together. The real hook, though, was that each block had an accelerometer inside, so you could “pour water” out of one block into another, for instance.
At that time, accelerometers were expensive, even in quantities. Even one of these cubes must have cost $100 at the time, much less a whole set. Accelerometers were so expensive that I wouldn’t have thought about incorporating one into a project, much less a dozen, so I ignored them for hacker purposes. Then came the cellphone and economies of scale. Today, even in chip shortage times, they’re readily available for around $2 each, making them useful for exactly this kind of “frivolous” use.
From the Arduino experience, I learned to never underestimate the impact of what seem to me to be “small” conveniences. (And maybe more so, the value of the tremendous common effort from the community.) From the MIT accelerometer story, the moral is that some parts will get drastically cheaper in the future, so you shouldn’t necessarily exclude the cool new sensor from your design repertoire. After all, ten years ago, nobody would have thought that we’d have laser time-of-flight rangefinders for less than a hamburger.
What new components are fantastically useful, or full of potential, that might be cheap enough in the future to make them also worth looking into? Swing by Hackaday tomorrow morning and join in the conversation!
I dream about linux device with working time a mont on one charge
Those already exist. The problem lies in how people use them. When you use RF, you use a HUGE amount of power which is why it won’t be a smartphone.
Just ask Tesla, Nikola that is. Schemes to send power around the world.
Which Linux device you are thinking about? I don’t need any RF – just display, keyboard and reasonable computing power (beagle bone black power would be enough) and USB.
How about an ebook reader? Kobo devices run Linux and are quite hackable.
(Trying to post this comment again now that I seem to have gotten my replies to show up in the right place—oh, it looks like it fixed the ‘remember me’ feature too!)
Fair enough but once we make some more use of CPU (running apps) and speed up refresh rate (texting and navigating spreadsheets) declared “weeks” will drop down very fast. But thanks anyway – I forgot about those.
kobo have ugly screen, nobody can working on e-ink and… sory not working a week
@Gravis Those already exist.
sorry not. I cant find any device, phone etc. with working time a week. Non -stop typing, compiling, ssh, perl etc.
I no need a x11,wayland i no need internet. and NO! no any device today
FPGA
Well, if everything goes to plan (the research finally pans out) then in the next 20 years we can expect that…
* Rechargeable batteries are going to be crazy inexpensive. The thing that changes is that the chemistry will be designed for a production process that is more akin to making steel than it is to making ICs. They will be the new backbone of our power grid with renewable energy finally hit it’s stride.
* High density lightweight solid state battery manufacturing finally matures so that electric airplanes become a real thing.
* Thorium fuel rods are developed which replaces the uranium as a primary fuel for nuclear reactors because thorium is super cheap.
* Climate change is really going to suck for a lots of poor nations while rich nations continue to only make token contributions to slowing climate change.
* A GHG emission tax will finally get passed in the US… with lots of exemptions.
* Semiconductor fabrication finally comes to the DIY/maker market and it’s about as good as how 3D printing started off.
You can’t just replace uranium with thorium, you’d need a different reactor for that, as thorium fission releases less “excess” neutrons. Simply replacing the fuel rods would cause the reactor to no longer be able to reach criticality.
Yeah, while Oak Ridge built a working LFTR way back when,
and as much as I’d like to see it succeed,
I don’t know if enough experience has been gained to know if it really would be a viable alternative.
No, I don’t mean replacement rods for existing reactors.
Just as it took us decades (and still learning from our mistakes) to make uranium truly safe to use, we may need just as much time to implement LFTRs.
I think I heard a few months ago that China is, right now, working on a thorium reactor for power generation, to be connected to the grid and used long-term, not just as an experiment.
My dream few years ago was that the fpga world was finally mainstream and there was open source tools and ip cores like in the Arduino world with partial reconfiguration interchangeable a on the fly for each ip core.
But time pass and the companies seems don’t are looking for that.
It is slowly coming there.
next-pnr
I dream of an edit button for Hackaday comments so I can correct my worms.
Right up there with flying cars and cold fusion.
Fusion power or edit button, what will happen first?
Some people say the implementation of an edit button is not feasible and fusion power will always be 10 years away…or was it the other way around?
Zing!
FWIW: Mike put in a lot of time/effort on finding just the right comments plugin early this year, and it had all sorts of great features, among them temporary comment editing without forcing login accounts. Up/downvoting. Hiding threads of a given depth. All the stuff we want. We tested it, and he even styled up some of the elements.
It didn’t pass security review. We’ve sent our feedback to the authors, but until it’s all fixed up, we can’t run it.
We feel your pain.
Cut twice, measure once. Or was it the other way around?
Worms it is then. What’s wrong with worms anyway?
Wow! HackaDay staff wasn’t just sitting around and ignoring our pleas (Please!) For an Edit button?
B^)
This sounds intriguing! Might I also suggest Slashcode, as used by Slashdot. It has all the features you listed, and is open source. No edit button, but with collapsible nested commenting, corrections are easy and don’t get in the way.
I know it’s easy to say “open source” as if that somehow makes it trivial to adapt, but Slashcode HAS been adapted for at least one other news site – Soylent News.
The Arduino has been a terrible thing for would-be new programmers and hackers. Yes they are convenient, but the IDE is also almost defiantly designed to prevent learning anything except how to stick modules together. Yes you can get the instant gratification of blinken de light or turning it off from your web browser, but as soon as you want to do anything even slightly different from what the people did who built the module, you are SOL. There is no documentation, there are no comments, and even finding the module code is a treasure hunt — and if you do find it it’s often laden with a lot of C++ crud that’s hard to work out even if you’ve been programming for 30 years, much less a n00b. Important shit like overloaded functions are not documented. (Like, how do you send data to the TCP socket from a null terminated C-style string instead of one byte at a time? I had to guess. There is literally no example code online.) You are warned that using the String object is dangerous, not because there is anything wrong with the String object itself, but because it churns the heap and other objects which aren’t quite as well written don’t deal well with their buffers getting de- and re-allocated. There is no guidance anywhere as to how binary math works. I have met people who have been programming with Arduino IDE for 5+ years who had no idea how two’s complement math works. This is something you learn before you put down your first opcode in ASM on a microprocessor trainer, but you can be trying to fly quadcopters without understanding it? That this became the standard intro to small scale computing is a terrible, stupid, ridiculous thing. I use it because it turns out to be the easiest path to programming ESP8266/ESP32 on Windows (yeah, I know, it’s business and other stuff blah blah blah) and it is a constant source of frustration.
i am pretty critical of arduino stuff. i’ve never used it directly outside of the atmega 2560(?) board under the RAMPS on my 3d printer, but that board *really* underwhelmed me. from my limited exposure, i can tell that your criticisms of its library approach are well-founded. personally, i would never use arduino in one of my projects. i’m pretty comfortable programming something like stm32 or pic –i’m biased against atmel :) — directly, and i simply don’t want a library of any sort in the way when i’m actually aiming at an embedded goal. usually i really care about timing, battery use, code size, or all three!
and a lot of arduino projects really are just blinkies, really they should be 555s!
but one thing that did impress me is that the Marlin firmware for my 3d printer was originally developed for arduino. and someone had just commited a Makefile into the repository that (mostly) worked with whatever non-arduino atmel build environment debian installed by default. i’m not sure if the debian packages were derived from arduino or not, but it was nice that i haven’t once been forced into their crappy ide (i hate all ides so don’t take it personal). that’s pretty neat!
the Marlin software itself was awful, obviously cobbled together by a long sequence of novice programmers, probably exactly representative of how you say Arduino is a poor starting point for becoming a good programmer. i would go so far as to say Marlin was garbage. but on the other hand, it works! and i use it to this day! so it did successfully get valuable work out of a bunch of novices. kind of a weird strength.
and then you mentioned ESP development. one of the reasons i haven’t gotten into ESP is that there isn’t (wasn’t?) a good datasheet, you can’t get started in a serious way close to the metal as easily as with like an STM32 that is fairly well-documented. i assume it’s a path-well-traveled by now and i wouldn’t find it so hard today. but it is still kind of neat that arduino is one of the projects that has helped pave that path.
so, i think it’s crappy too, but it is also pretty neat. and honestly i’d say it’s better than pi at getting people and projects into a position for growth. :)
This is a major problem, especially in education, you know, the target audience of all this makey stuff. Not sure arduino is too blame here though, there simply is no space and time to dive deeper in a lot of courses, im talking primary/secundary schools but also most art schools here. On the other hand, most kids here have the opportunity to attend a technical university (with some form of loan/debt) and learn how to draw silicon dies and have them delivered a few weeks later. Meanwhile still looking for a less abstract (at least a bit more verbose), less slow, but crossplatform alternative to the aforementioned IDE. Webbased or platformio/vs code is just not working, but maybe we just need a change of environment.. governmental that is?
Ardunio isn’t really any different to nearly all programming languages, if not all in that respect… Library and copy paste that ‘works’ is just a fact of life now, along with looping round and round trying to actually find the bits you need in any documentation/comments/sourcecode… Which is what happens when you have something like the internet letting anybody learn just enough to be incompetent but functional easily, but where it is rather hard to really learn to do things correctly, while never keeping up with the current versions…
As for not knowing how ASM does things, ‘odd’ numerical representations etc, that is kind of the point of the higher level languages, you deal in human(ish) logic and arithmetic and it does the rest underneath – and really beyond being interested for most there is no reason to delve deeper…
This is not a black and white issue.
I pioneered embedded micros back in he 70s. When I needed a floating point library I had to write my own. There was no C or any other HLL for micros back than.
Later in my career I was a small company owner and architected a programmable controller system that non-expert OEM machine makers had at least a hope of using in their “sausage machines”. It has intrinsic multitasking and “safe” features like built in contact debounce, just to mention a couple.
In the 90s we were competing with products like Basic Stamp, which was devoid of “industrial” features. Then along came Arduino. They hit high production volumes very quickly, which made it very difficult for us to compete with our batches of 2-300 boards. Not to mention that we had at least some hardware protections like high voltage tolerant inputs and 500mA capable outputs, which all cost money, and would not dream of releasing a controller that didn’t have a watchdog timer (in our first product that was an extra $1.50 chip!)
Now, retired, I have embraced Arduino and ESP32 for my hobby uses because it offers easy access to a staggering range of peripherals with ready to roll libraries. It’s also really easy to get started on, with a lot of the housekeeping detail hidden under the hood. However, I would be very hesitant to use Arduino in a professional grade project and rely on those libraries – I don’t know who wrote them, I don’t know how safe they are, and in many cases the documentation is skimpy. Some of them are rudely and unapologetically blocking, which to me is anathema.
I see an awful lot of what I’d call “ignorant use” of Arduino. That’s nothing to do with how Arduino is implemented but IMO all to do with a lack of education in the users. Arduino allows you to bypass a lot of the learning steps that were previously necessary. But it has made microcontrollers accessible to millions of hobbyists who would otherwise not be able to play with robotics and flashing lights and automatic sanitiser dispensers.
But Arduino can be used well. Last weekend I spent a day with my grandson, just turned 13. He has done some “coding” before (I hate that term because it implies an absence of design and planning), mainly with drag and drop graphics but also on Arduino. But I decided to teach him some “proper practices”. In a few hours he had written, with me leading from behind, a non-blocking program with superloop multitasking and a Finite State Machine, and understood it all. He had also learned about variable types, scope, and static variables, and a bit of binary arithmetic so he understand how millis() overflows after 43 days. At a guess that puts him ahead of 95% of hobbyist Arduino users. It is perfectly possible to write good programs on the Arduino. It is perfectly possible to learn good programming practice on the Arduino. Next time I’ll probably do structs and maybe classes.
His program is at https://www.youtube.com/watch?v=ncIe61SZF1s
Disclosure: I programmed bare metal assembler all my working life. I’ve only taken up C++ since I retired, so I am not yet qualified to comment on Arduino memory management. I still have a lot to learn, but I do appreciate the accessibility of Arduino. Oh, and the grunt of ESP32 :-)
It’s perfectly possible, as long as you toss the Arduino environment out and address the chip itself. Otherwise you’re just dodging a lot of underwater icebergs, or rather, spending three or four times as much effort running into inexplicable bugs.
The benefit of Arduino is that they offer economies of scale on the hardware, but then again some of the hardware is also crud – like a GSM board designed to run on batteries constantly drawing tens of milliamps even when powered down. You have to chip components off the board to make it last a day.
What a great comment!
You started out with very little in the early days of microprocessing. Built up a business in an area where almost nothing of the sort existed. Got hit by new technologies (e.g. Basic Stamp]. Stayed in the game long enough to retire.
And now you’ve embraced new technology and teaching its proper use to new generation!
I tip my hat to you!
I hope you chronicle your life experiences in greater depth to inspire others.
The point of the Arduino project is to get kids a few ‘woah’ moments that excite them enough to pursue further education. 90% of Arduino users are kids being pushed through some STEM initiative. If it lights a fire in 10% of that 90% then it has succeeded at an enormous scale. A ‘terrible thing for would-be programmers’? You’ve missed the mark, entirely.
Hear, hear! It is so important in teaching stuff like this that the student (of any age!) gets a win early on. A few year ago I developed a robot for a planned training course. I used a MicroMite processor, which is programmed in interpreted BASIC. I selected it for the very reason you can type “PRINT 5 + 7” and it will come straight back with “12”.
MicroPython fills a similar position today.
Unfortunately, on a balance I will today still go Arduino, because of the enormous ecosystem around it. Maybe in a few years microPython will have a similar amount of support.
The point of Arduino, as any business, is to get people to buy stuff.
The original point was to sell microcontroller boards to people who want to control digital stuff but don’t have engineering education. If they fail to teach you anything beyond copy/pasting code from the web and plugging in ready-made shields and modules, all the better for their business.
The documentation for Arduino C/C++ is on their website, just like any other language. Anyone who wants to learn the basics without modules hand-holding can do so quite easily.
The Arduino Project isn’t a self contained pipeline for a paint by number EE phd education. It’s an educational tool which is also useful for hobbyists, prototypers and lab benches. It’s a good first step for the uninitiated. Those who are interested in the underlying principles will find their own way after discovering the limitations. Until you have an actionable plan to put an embedded systems tutor in every middle school in the world the Arduino starter kits remains a bargain for evangelizing STEM.
My first step for the unitiated was a HaD article about how you can wire up an ATMega168 to a parallel port and program it by notepad. I got the blink program working in 15 minutes and completely surprised at how easy it was.
The irony is that using the AVR family chips by themselves is just as simple as using Arduino – besides having to connect the wires – and you got far better programming references in the datasheets and online, because a) they’re standard C/C++ and b) they don’t try to be “helpful” by hiding the details.
I find the Arduino to be a case of helping too much. They didn’t really have to do anything more than a cheap programmer/breakout board, and then a bunch of examples, but they chose to “expand” from the concept with a bootloader, an “IDE”, and a programming “language” so you didn’t have to look at the datasheet or other programming reference and find out which register turns on the ADC. In other words, to keep you from actually learning how to control the chip you’re using.
Found the grumpy old timer. Your anti-Arduino rant reads like this to me: “LEGO has been a terrible thing for new would-be civil engineers. Yes they are convenient, but the interface is also almost definitely designed to prevent learning anything except how to stick modules together. Yes you can get the instant gratification of building the model shown on the box, but as soon as you want to do anything even slightly different from what the people did who built the module, you are SOL.”
I mean, everything you said about Arduino is probably true, aside from the value judgments of being “terrible” simply because it possesses these qualities. However, these facts seem as irrelevant to serious work in embedded systems as being a good Lego builder is to civil engineering. You sure learn some of the principles in playing with these toy systems, and they’re fun, but that’s all they need to be, and I don’t think anyone really thinks they make you a real engineer.
LEGO doesn’t try to be anything more than a toy. You’d have a better point with meccano.
https://commons.wikimedia.org/wiki/File:DA_Cambridge_c1937.jpg
Is Arduino more than a toy? Is Meccano really used for more than toys? Lego mindstorms have been used in swarms research at the very least.
I don’t think these distinctions are as clear cut as you imply, but I think the ultimate point is the same: Arduino has a useful niche and complaining about the existence of this niche because it doesn’t and wasn’t intended encompass the wider scope of what’s possible seems silly.
1+
Arduino exists in a niche where it displaces already easy-to-use developer boards with something that assumes the user is more or less stupid. Its main advantage is that it’s relatively cheap, although it could be cheaper and better if you removed all the Arduino fluff from it.
It has a similar effect as how modern scientific calculators with symbolic solvers have ruined math for kids. People just skip over learning the basics because they’ve got the calculator, and then they come to engineering classes unable to solve a simple differential equation or check whether the calculator’s answer is even correct. Not everything that claims to help, does.
I quite agree.
In fact, I think high level languages are an affectation that distance Real Programmers from the hardware and stop them learning good habits. Ban compilers, I say! Real Programmers program bare metal in assembler, like I did on my first big embedded microprocessor project in the 70’s. And we write our own floating point routines, like I did in the 70s.
Come to think of it assemblers are for weaklings. Give me hex codes and a keypad, like I used when I was head hunted because I was microprocessor hotdog, only to discover they wouldn’t invest 2 years’ salary in a proper development system.
On a deeper point, the problem is about what paradigm a thing like Arduino teaches.
Imagine a medieval alchemist who knows the formula for making a rudimentary antibiotic drug – only, they’re describing the method in terms of “an eye of a newt” and other nonsense because they don’t actually know chemistry. Their paradigm over the subject is based on magic: even though they can do something useful with it, they are also hopelessly ignorant until they ditch the magic and swap in the philosophy of science. It’s more tedious and requires more thinking than just pulling myths and ill logic out of a pointy hat, but it actually works.
The same thing happens with Arduino: it is “magic” that makes things work, but it’s a different paradigm and a way of thinking, and this leads people in the wrong direction. It retards them from learning what they really need. You’re not explaining things in terms of what they are, but giving unnecessary abstractions that are mistaken for fundamentals by people who don’t yet know what they’re really doing. You should be getting straight to the point.
This is a real problem with people who think too much about how to teach stuff rather than thinking about what they need to get across. It’s like “new math” that teaches set theory before it teaches how to add and subtract, so your kids end up having to first learning the symbols and notations of set theory, then the set theory, and then by the time they’re three years behind “regular math”, they get to the point of putting two and two together.
I would love for fancy sensors like LIDAR to be made cheap and available by the economies-of-scale of self-driving cars and other robot platforms.
There is one thing you can be sure of, if the tech lets you be truly autonomous and maintain your privacy then “the man” isn’t ever going to let you have it. The point being that Moore’s law is very real but so are other phenomena that push back against it as far as the civilian context is concerned.
Depressing, but true.
But I do have hope that all of the machinations being foisted on “everyman” today by the few that control 90 % of the wealth, will collapse upon them in the same way that one more straw will break the camel’s back.
Back when I worked I kept a few things on my desk. One of which is a really early HP200D audio oscillator. Something to remind you that big things can come from very humble beginnings. One of the others was a pretty heat sink with an itanium processor on it, just to remind me that even huge corporations can make really dumb mistakes. Even funnier is the younger folks asking what an itanium even is. Like it should plug into rotary phone or Edison cylinder player or something.
B^)
‘Scuse me, but where exactly do I plug this in to my edison player?
High resolution, fast refreshing e-paper to replace flashy screens at least on smart watches. Not to mention tablets and laptops. Sure watching movie could be strange but spreadsheets, documents and any other actual work would be much less pain than it is now.
meybe mirasol not e-ink
How about an ebook reader? Kobo devices run Linux and are quite hackable.
My previous comment was supposed to be a reply to PPJ (and tyjtyjty) up at the top. Let’s see if this one works (replying to myself) after unblocking s0.wp.com.
https://assets.amuniversal.com/7fada35026ca01393d3d005056a9545d
“silly collection of libraries and a drop-down menu”?
Or a much better priced rip-off of Wiring with an asinine pin spacing bug that makes use with breadboards, perfboard, stripboards or any other kind of standard boards impossible?
I’d like to see some smart home automation controllers (looking at you Home Assistant) that are able to act on voice commands without any internet connection.
I’d like to see the home automation market move towards not just convenience, but privacy as well as convenience. I do understand most of the motivation in the home automation internet connected stuff is to be able to sell your data, but I’m not willing to give up my personal data for a “wow factor” of lights that turn on as I walk into a room, and turn off as I leave it.
I’d also like to see more silent notification options, I like that I can turn on a smart bulb when my 3D printer finishes a print.
It would be great if I could have a way to wake me in my sleep if a security camera recognizes a certain license plate is near my house (this is good for people who need to be alerted because of domestic abuse situations or other safety concerns) without waking up my spouse or turning on lights. I haven’t seen this idea of silent notifications explored as much as many other notification options.
The macro keyboards that people sometimes make, it would be great to see those adapted to work for people who read Braille as well.