The attitudes about web programming and system programming made me think for years I didn’t like coding, when what I actually needed was to get closer to the metal and gain a deeper understanding of the theory.
I like the analogy, because fashion also repeats itself, people going away from RPC 20 years back, and now we are coming back to it, same with message passing
It's pretty much the same, concepts and the challenges are very much alike. E.g. multi threading in C++ and module loading in Angular, C++ compilation and assets bundling, GDB and DevTools debugger, once you truly master one side of it the other becomes easy and accessible as well.
compiler message with suggested solution ?! ..great ! I've always thought when a compiler tell me "missing ';' or '"" etc... why don't they just ADD it (still print a warning in case it's really not what the programmer had in mind) and CONTINUE building ! Later the programmer can see ALL the error in once pass.. even like 'accept compiler solution' to automate the trivial fix...
this can be dangerous for real compiler errors since a program that doesnt compile by definition is wrong and therefor cannot be fixed without knowing the intent of the program from outside of the program itself, but… if you are using a rust code linter like clippy, where your program definitely compiles but may be improved for effiency, clarity or brevity reasons, it will give you those suggestions like a compiler would tive you warnings or errors AND you can run “clippy -fix” to make it actually apply some of these suggestions to your code and you can basically trust it did it correctly without altering any behaviour. I believe all clippy automatic fixes follow the rule of not changing program I/O behaviour at all.
Also note that not every clippy suggestion/warning has an automatic fix since those can be pretty complicated at times even though the issue may be obvious. For the areas it works automatically, its wonderful for cleaning up big piles of code while you rummage through it, like forking a small “old” unkept rust library for your own use or improving your own code from before the clippy lints existed/were something you used regularly (new ones are added all the time)!
The server/client terminology is not fitting when replacing master/slave in this case - server/client should be swapped. The controller would be the "client" and the peripheral is "serving".
The "server" (microcontroller), in this paradigm, is both serving and requesting data just like a typical web server (serving data to clients, requesting data/services from dbs/apis etc). It is also running the main loop, always listening for "requests" (interrupts) and handling the execution of those events. It wouldn't be fit to call it a client. Instead of redefining the server, it might be helpful to think of the "clients" (peripherals) as anything that directly communicates with the server, regardless of whether it's sending or receiving information (browser, db, API, terminal, etc).
Yeah which is why the struggle to keep master slave terminology. It works really intuitively unfortunately: a slave cant have 2 master, but a master can have 2 slaves.
It's done to show you what HALs do under the hood in Rust. As you user you don't have to delve into this stuff, like you wouldn't have to delve into this with C you'd use an of the shelf HAL. Embedded programming is so much more than writing to registers.
I2C screams of TCP, at least in this simplified explanation. I got my start in IT provisioning IP networks and now I’m doing web development. It’s cool to see how certain concepts from one domain come into another. Thanks for this talk, definitely makes me feel like I can pick up more systems and embedded programming. 👍
19:36 totally blew my mind... because if you were to press my for my "views" on software development... it would be THAT SLIDE... WORD FOR (expletive deleted) WORD!
The attitudes about web programming and system programming made me think for years I didn’t like coding, when what I actually needed was to get closer to the metal and gain a deeper understanding of the theory.
I like the analogy, because fashion also repeats itself, people going away from RPC 20 years back, and now we are coming back to it, same with message passing
I cannot agree more. Sun RPC / CORBA were dealing the same problem which - say, Protobuf - today does! 😁
we are?
I've dabbled in low-level programming, but never really interfaced directly with actual hardware. This is a great starting point for me. Thanks Steve!
It's pretty much the same, concepts and the challenges are very much alike. E.g. multi threading in C++ and module loading in Angular, C++ compilation and assets bundling, GDB and DevTools debugger, once you truly master one side of it the other becomes easy and accessible as well.
Intro ❤
compiler message with suggested solution ?! ..great ! I've always thought when a compiler tell me "missing ';' or '"" etc... why don't they just ADD it (still print a warning in case it's really not what the programmer had in mind) and CONTINUE building !
Later the programmer can see ALL the error in once pass.. even like 'accept compiler solution' to automate the trivial fix...
this can be dangerous for real compiler errors since a program that doesnt compile by definition is wrong and therefor cannot be fixed without knowing the intent of the program from outside of the program itself, but… if you are using a rust code linter like clippy, where your program definitely compiles but may be improved for effiency, clarity or brevity reasons, it will give you those suggestions like a compiler would tive you warnings or errors AND you can run “clippy -fix” to make it actually apply some of these suggestions to your code and you can basically trust it did it correctly without altering any behaviour. I believe all clippy automatic fixes follow the rule of not changing program I/O behaviour at all.
In this way, the clippy linter is a lot like a more powerful and/or higher concept code formatter (like rustfmt), which I think is really magical.
Also note that not every clippy suggestion/warning has an automatic fix since those can be pretty complicated at times even though the issue may be obvious. For the areas it works automatically, its wonderful for cleaning up big piles of code while you rummage through it, like forking a small “old” unkept rust library for your own use or improving your own code from before the clippy lints existed/were something you used regularly (new ones are added all the time)!
The server/client terminology is not fitting when replacing master/slave in this case - server/client should be swapped. The controller would be the "client" and the peripheral is "serving".
The "server" (microcontroller), in this paradigm, is both serving and requesting data just like a typical web server (serving data to clients, requesting data/services from dbs/apis etc). It is also running the main loop, always listening for "requests" (interrupts) and handling the execution of those events. It wouldn't be fit to call it a client.
Instead of redefining the server, it might be helpful to think of the "clients" (peripherals) as anything that directly communicates with the server, regardless of whether it's sending or receiving information (browser, db, API, terminal, etc).
Yeah which is why the struggle to keep master slave terminology. It works really intuitively unfortunately: a slave cant have 2 master, but a master can have 2 slaves.
28:00 unpopular opinion: I hate this code! WoW. If you tell me this is what Rust has to offer for embedded programming I will stuck to my C lang.
It's done to show you what HALs do under the hood in Rust. As you user you don't have to delve into this stuff, like you wouldn't have to delve into this with C you'd use an of the shelf HAL. Embedded programming is so much more than writing to registers.
I2C screams of TCP, at least in this simplified explanation. I got my start in IT provisioning IP networks and now I’m doing web development. It’s cool to see how certain concepts from one domain come into another. Thanks for this talk, definitely makes me feel like I can pick up more systems and embedded programming. 👍
Master Slave are only words just like proletariat bourgeoisie
19:36 totally blew my mind... because if you were to press my for my "views" on software development... it would be THAT SLIDE... WORD FOR (expletive deleted) WORD!
talk starts at 20:40
Thanks