10 ms·
Funny that you needed to use microservices as the base analogy for embedded MCUs. It illustrates how large the gaps are between hardware engineering, software e
by SavantIdiot 5y ago
Funny that you needed to use microservices as the base analogy for embedded MCUs. It illustrates how large the gaps are between hardware engineering, software engineering, and programming, compared to when I entered the field in the 80's. It was possible for one person to have principal-level knowledge in all three fields. The 90's broke that.
- Zenbit_UX 5y agoWhat do you believe is the distinction between software engineering and programming?
- kevin_thibedeau 5y agoNowadays peripheral ICs are usually accessed over SPI, I2C, onboard USB, or some other indirect method. It is common for complex devices to have a micro on the other side handling I/O requests rather than spilling their guts to the world. That "other micro" could also be a full blown multi-core processor with an MMU running at hundreds of MHz and beyond. The difference back then is that parallel bus interfaces were king and custom ASICs couldn't necessarily afford the gate overhead of an embedded micro at all.
- b112 5y agoAnd thus we understand the human brain more, a collection of specialized processing regions, with APIs.
- bencollier49 5y agohttps://en.wikipedia.org/wiki/Brodmann_area https://en.wikipedia.org/wiki/Brodmann_area
- ketzo 5y agoI mean, I’m a front end web developer, and I get fucked up about how little I know about backend web development. Embedded programming? Dealing with signals?! God forbid, man. There’s just so much of everything! Terrifying! But fun!
- joezydeco 5y agoThat's funny. I've been doing full-stack embedded development (bootloader assembly all the way to touchscreen UIs) for 30 years but the idea of trying to learn modern web front end scares the hell out of me. React? Angular? Node? What happened to Notepad and Apache?
- xondono 5y agoI would recommend to revisit that with fresh eyes. I’ve found that’s easier to build a simple UI by loading chromium + webapp than having to deal with the intricacies of multitarget crosscompiling.
- joezydeco 5y agoThat ecosystem used to suck heavily as of 3-5 years ago, but I know it's improving. But you still need Node and a bunch of shit running underneath to glue the UI to the drivers. As much as I'm starting to hate Qt, I can still have it up and taking to hardware in a few minutes. And the onscreen touchscreen keyboard is worth the money.
- VRay 5y agoNode is a nightmare I can get a decently functional UI app working in native code with just the SDK for whatever platform it’s on, but try to use React and suddenly I’ve got a web of 200 dependencies, each more shady than the last. And that’s just for “hello, world” Plus the JavaScript engine is single-threaded and insanely slow.. it’s gross. I’m guessing that one of these days app developers are collectively going to snap out of it and throw Node in the trash
- joezydeco 5y agoNo, it's only going to get worse. As single-board devices get faster and cheaper by the week there's a flood of developers that have cut their teeth on Node/JS/React and they get something working on a Raspberry Pi and think "Yeah, embedded development is a piece of cake. I can do this." And maybe they're right, because doing it all by scratch and cobbling together robot parts to make a system work is just really getting to be old. I used to get annoyed at the RPi newbies but now I welcome it as job security because someone still needs to write the bootloader and drivers. And if you read StackOverflow/Reddit you'll see there's nobody teaching that anymore.
- RayVR 5y agoOnly natural that complexity is increasing. When and where that’s warranted will be an eternal debate.
- praptak 5y agoMy friend owns his grandfather's "engineering encyclopedia" from the era before WWI. At that time it was possible (and expected) for a single person to have principal-level knowledge in the whole field of "engineering".
- robflynn 5y agoThat reminds me of a book I had in the early days of the web which contained a list of the websites at the time!
- dmd 5y agoHow about a list of all the email addresses in the world? https://openlibrary.org/books/OL1635233M/%21_a_directory_of_electronic_mail_addressing_and_networks https://openlibrary.org/books/OL1635233M/%21_a_directory_of_...
- aspenmayer 5y agoYahoo was hand curated in the early days. Wildest timeline.
- robflynn 5y agoYup! My best friend growing up used to report typos and would send copy corrections and stuff to them back during those days. So crazy to think about that all being done by hand back then.
- MrDresden 5y agoI remember seeing those address books in my university c.s library back in '07. Many a late night was spent in the library looking up those addresses and seeing if some where still available.
- MrFoof 5y ago“The Internet Yellow Pages.” You weren’t the only one to have it.
- deleted 5y ago[deleted]
- thrashh 5y agoThere’s a huge gap but at the same time, each layer is still very similar to each other. Hardware engineering might be floor 1 of a building and microservices might be floor 19. Yes, they are very far apart, but one day, you realize that every floor has a bathroom. When you go down to floor 1, you might not know where the bathroom is but you know that it exists and how it will probably function. You are already 80% of the way there.
- aprdm 5y agoYes absolutely. I’ve worked from chip design in vhdl to coding microservices and devops. It’s IMO all the same shit with different flavours.
- jeffrallen 5y agoHardly. The shitter of microservices is JSON marshalling. The shitter of hardware is clock jitter.
- desi_ninja 5y agoReally well put analogy
- Cederfjard 5y agoWhere are you drawing the line between software engineering and programming?
- baq 5y agoThere’s no line. Programming a a strict subset of, and is much smaller than, software engineering. Communication, technical writing, customer and stakeholder management, system design, technology awareness and many, many more are what make a software engineer in addition to programming.
- SavantIdiot 5y agoI know a guy that can architect optimizing compilers but writes shit code. That's where I draw the line.
- bayindirh 5y agoSoftware engineering has a higher level view which is more concerned about the architecture of the whole system. Programming is more concerned how it's implemented on the specific hardware/language, and how its limitations and advantages play a role in the implementation. You can know both, they intersect in a lot of places but, programming goes deeper, and software engineering goes higher.
- mek6800d2 5y agoThat's a reasonable way to look at it, but there is a missing component. In the early 1990s, I was a subcontractor at a large firm which had software people who were only interested in designing software, down to a medium-level pseudocode, after which the design was handed off to coders. These designers were great people, but, on this project, none of the firm's designers and coders had hands-on knowledge of and experience with the hardware and operating system (an early version of VxWorks). The coders would gain this knowledge and experience from writing and testing the software, but not so the designers. My missing component was that there was no mind-to-mind feedback loop conveying this knowledge and experience gained by the coders back to the designers, from which it would inform the designers' future designs. (And there was no regular feedback about how well the design fit the problem and if the design required radical changes during coding and testing, although some of that is more an administrative concern than a technical one.) The "coders", by the way, were quite capable of designing their own programs - and did. I don't know why the firm had this subset of design-only'ers; they were smart and maybe the firm wanted to hang on to them and maybe "coding" roles were intended for brand new employees.