Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I have a theory, that the reason older engineers are into embedded development, is that the scale of technology is similar to what they were using ~30 years prior. It's very different, of course, and there are many new things; but the kids these days consume terawatts of cloud compute to apply deep learning to cryptocurrencies, and it takes a very different mindset to "squeeze" code into 1MB flash and 256kB RAM. I'm happier down there, I'd rather twiddle bits than learn a new front-end framework every other month.


Another reason is that "embedded" roles encompass tools and products spanning all sorts of different fields, many which require extensive domain knowledge and experience. A new CS graduate might be fine at the software side of things, but they wouldn't have all of the non-CS expertise which other people might have picked up over the years.


Im down there with you and want to take a peek upstairs. Im tired of being stuck in 1985. You've banged one bit, you've banged a billion.


It's an ugly place. Immensely bloated libraries and frameworks, frequent churn of technologies based on what's the hot new buzzword of the moment, and everything feels like it's pretty much half-baked. "Memory efficiency? Need heard of it. What's that?" "CPU cycles? Just burn as much as you want because they're free!"


Change is good though, change is the only constant. Better to be in a state of flux than a static, dead-end field where time stands still.


Change for the sake of improvement (whether successful or not) is good. Change for the sake of change is just a waste of time and energy. I see far too much of the latter in the web world.


The key is balance between chaos and order. Too much change all the time and things are too chaotic for anything good to stick. Too little and nothing ever changes (orderly but pointless). Just right and things continually improve.


Like the difference between A.I. and I.


Fwiw, cryptocurrencies need that kind of engineering approach. They are resource-constrained in a different way than embedded systems.

In embedded systems the resource constraints are known more or less exactly, and you work within those constraints to fit in as much capability as possible.

With cryptocurrencies operating in a heterogenous open network, it's never clear exactly what resources are available, only that there's a tradeoff between resource consumption and security (eg, tamper resistance of the shared ledger/datastore).

The more resources consumed by the protocol/client, the fewer are the users with the hardware capable of running it, the more clients and miners migrate to data centers and larger professional operations. Centralization increases the odds that a single entity/cartel/attacker can disrupt the network.

Cryptocurrencies that are extremely efficient can run on a wider variety of hardware, resulting in greater inclusiveness, participation and tamper resistance via decentralization. A major area of research is how to reduce resource consumption in these systems and keep them decentralized and tamper resistant.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: