Jay Carlson writes in-depth articles on embedded systems, including cheap microcontrollers and building embedded Linux systems.
HN commenters call his embedded Linux and $1 microcontroller articles excellent and an impressive individual effort, though one notes the microcontroller article is dated.
I actually appreciate domain-specific programming languages. It's fine (for me) that JS is the native front-end language. It's fine that Rust targets systems and embedded. I love that Python is a middle ground, and really great backends are built on it. I'm great with C being a really low level language that forces me to think about the machine.
Taking "I'm productive in it so it is great" to an extreme, we end up seeing precisely the kind of domain crossover TFA hints at. Somehow, since Rust is cool, it should be the future of web / in-browser[1]. Somehow, since JS is popular and easy to use, it should be on the james web space telescope[2]. Somehow, since browsers are well accepted, node.js is a reasonable benchmark for embedded systems performance [3]
GTFO with that. That is how we get language bloat and the many overlapping frameworks that creep into the language and make it unrecognizable. I'm looking at you, Tokio and D3.
1. https://leerob.io/blog/rust
2. https://old.reddit.com/r/programming/comments/bglvey/the_9bn_james_webb_space_telescope_will_run/
3. https://jaycarlson.net/embedded-linux/
I've been working at home for years before the pandemic. My current space is approximately the same dimensions as yours. I have a floating desk I built with dimensional lumber and plywood. It's floating so I don't have to jockey my chair around legs. I trimmed it with pine boards for aesthetics and topped it with some decent mdf so I could write on it.
Its a single corner desk 24" deep that's along two walls. To one side is paperwork and typical office supplies. The other acts as my bench and lab. On the bench side i have an 18" floating shelf a few feet above the desk.
My monitors and keyboard are mounted on arms in the corner so I can switch between the two quickly.
I like Jay Carlson's approach. Think about your workflow, not just pros and cons.
https://jaycarlson.net/2021/09/18/juggle-embedded-projects-home-office-workspace-tour/
This is a good article but it's a few years old, and out of date now. I can't see its date with my current adblock settings. It would be great if someone could find it and put it in the title.
There are stupendously powerful $1 microcontrollers now, including the RP2040 (dual core cortex m0+ with 264KB ram on the chip), ESP32-S2 (Espressif core with 400k of ram and wifi), and ESP32-C3 with wifi and RISC-V core and again something like 400k of ram.
Jay Carlson also has a series about microcontrollers as cheap as THREE CENTS, i.e. the famous Padauk 3 cent MCU:
https://jaycarlson.net/2019/09/06/whats-up-with-these-3-cent-microcontrollers/
This might be a good time to mention Jay Carlson's excellent "So you want to build an embedded Linux system?" article:
https://jaycarlson.net/embedded-linux/
It's been discussed here before, but it's an impressive reminder of what an individual can accomplish with modern small-batch PCB manufacturing.
It also goes a long way to make large-pitch BGA devices and high-speed signal design seem less intimidating to newcomers. Definitely worth a read if you're interested in these kinds of devices.
Also, the Lichee Nano is one of the only freely-available English-language reference designs for the Allwinner FIC100s processor, which is nice.
There was a great primer on embedded Linux boards by Jay Carlson a couple weeks ago that touched on the network limitations and various tradeoffs that devices in this class need to make:
https://jaycarlson.net/embedded-linux/
In summary, if you can't have your IoT device plugged into the wall, or connected by a "crazy" 802.15.4 low-power serial wireless network to a hub device that is, and especially if you have BOM cost constraints, battery life requirements, or processing needs that mean you can't use Linux or lwIP, you're going to have a bad time.
> You not only had to figure out the program logic, but you had to work within very tight hardware constraints.
Try programming microcontrollers and you can enjoy that feeling today! Get comfy with the relatively powerful ARM Cortex-M variants, which typically sports 10s of kB of RAM. Then if you feel frisky, try your hand at some 8-bit uC's with less than 64 bytes of RAM (spend your bits wisely).
https://jaycarlson.net/microcontrollers/