Embedded Artistry
embeddedartistry.com · Company blog · on HN since 2018
Embedded Artistry is a consultancy blog on embedded systems, firmware, software practices, and hardware product development.
What HN saysCommenters call it the single best resource on embedded development and cite its post on what happens before main() in C programs.
25HN people shared it
8linked it in comments
26stories submitted
468story points
12 months agolast shared
2018people per year2026
Most-shared posts
- 1A general overview of what happens before main() (2019)4 people · 216 points · first shared 2020 · 42 comments on HN
- 2A Guide to Building Trust with Your Contract Manufacturer2 people · 3 points · first shared 2019 · discussion on HN
- 3Timeless Laws of Software Development (2018)2 people · 2 points · first shared 2019 · 1 comments on HN
- 4-Werror Is Not Your Friend2 people · 1 points · first shared 2022 · discussion on HN
- 5Embedded Rules of Thumb (2018)1 people · 168 points · first shared 2020 · 60 comments on HN
- 6Reclaim Your Data: Freeing a Wi-Fi Sensor from the Cloud1 people · 46 points · first shared 2024 · 16 comments on HN
- 7We Document Software Projects1 people · 4 points · first shared 2021 · discussion on HN
- 8Programmers: Let's Study Source Code Classics1 people · 3 points · first shared 2019 · discussion on HN
- 9Life After Burnout1 people · 2 points · first shared 2025 · discussion on HN
- 10What Is the Proper Balance Between Working and Learning?1 people · 2 points · first shared 2020 · discussion on HN
- 11Debugging: Indispensable Rules for Finding Even the Most Elusive Problems1 people · 2 points · first shared 2022 · discussion on HN
- 12Warnings: -Weverything and the Kitchen Sink1 people · 2 points · first shared 2018 · discussion on HN
- 13Thoughts on Header File Extensions: .h vs. .hpp – Embedded Artistry1 people · 2 points · first shared 2021 · discussion on HN
- 14-Werror Is Not Your Friend1 people · 2 points · first shared 2018 · discussion on HN
- 15Useful Resources for Embedded Systems Developers1 people · 2 points · first shared 2018 · discussion on HN
What HN people wrote when they linked it
auxym · 2022-09-19
Today, probably not.
Historically? Definitely. It wasnt that long ago that bare assembly was still dominant in embedded, long after general computing. Somewhat obviously, assembly programs were closely coupled to the hardware.
Nowadays C is probably still dominant is C++ is starting to get widespread acceptance.
The best way to decouple the HW and SW is still a topic of active discussion from what I can tell. For example, https://embeddedartistry.com/blog/2022/07/11/how-our-approach-to-abstr…
server_bot · 2021-04-28
Nope. But you should check out Embedded Artistry[1], its the single best resource I've seen on a field that's mysterious even to most professional programmers.
Have you spent any time doing Arduino projects? While not representative of real-world firmware work, Arduino is very accessible/cheap and will teach your transferable skills (e.g. C programming for interfacing with HW). I'd encourage you to really put some time in before you commit to anything embedded - because the amount of jobs and the range of companies you can work at is much, much lower than "mainstream" development (say, building web applications).
[1] https://embeddedartistry.com/beginners/
analog31 · 2023-01-11
It's easy to overlook for those who program mostly on higher level systems. There was a recent HN thread that I think pointed to this article on what happens before main() in C programs:
https://embeddedartistry.com/blog/2019/04/08/a-general-overview-of-wha…
On microcontrollers, there are often some preliminaries that are programmed into nonvolatile settings of the hardware, such as the type of clock oscillator. On a microprocessor like the Z80, your circuit was supposed to ensure that things like the clock oscillator and power supplies were stable before releasing the RESET pin.
still_grokking · 2022-12-27
The Therac-25 used a PDP-11 computer. So I assumed the software was written in C. It wasn't?
I would also assume that most embedded software (e.g. in cars, spaceships, weapons, etc.) is written in C. But I see now it's indeed hard to come up with definitive sources.
A few failures can be found here (and it's easy to google some more):
https://embeddedartistry.com/fieldatlas/historical-software-accidents-…
But sadly no reference to the used languages anywhere there.
So I forward the question as I'm now also unsure: Has anybody definitive sources that prove the absence of C code in the known fatal accidents?
hemapani · 2022-09-07
this book is a very good discussion about debugging, "Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems", https://embeddedartistry.com/blog/2017/09/06/debugging-9-indispensable…
nurettin · 2020-07-22
The code to parse and populate commandline arguments comes from the linker, and is part of the generated binary, not the standard library. Here's a much better explanation https://embeddedartistry.com/blog/2019/04/08/a-general-overview-of-wha…
blondin · 2020-01-19
i actually wrote that down as side project idea yesterday! glad to see someone doing it.
i have a different set of documents in mind though. my list is more developer oriented. here's the kind i wanted:
- project readme (from simple to very involved)
- pull requests
- open source licenses (i think GitHub does this right?)
- code of conduct
- code testing template
- benchmarks
i also bookmarked these links:
https://embeddedartistry.com/templates
https://www.sans.org/security-resources/policies (this one is an old one i had not sure how i even stumble upon it...)
turingbook · 2019-02-25
There are some better lists for laws of Software Development:
[1] http://www.globalnerdy.com/2007/07/18/laws-of-software-development/
[2] https://exceptionnotfound.net/fundamental-laws-of-software-development… (not so good but with solid discussions from HN https://news.ycombinator.com/item?id=11574715 )
And more:
[3] https://embeddedartistry.com/blog/2018/8/13/timeless-laws-software-dev… (a whole book titled Timeless Laws of Software Development)
[4] https://www.red-gate.com/simple-talk/opinion/opinion-pieces/some-laws-…
[5] https://www.netobjectives.com/blogs/some-laws-software-development
[6] http://www.methodsandtools.com/archive/softwarelaws.php