a couple things 1: this looks like a really cool podcast i will def be following and watching all the older ones 2: i know quite a few large scale systems use that system for example the nintendo 3ds has a mcu that does all the leds and the power button. the recently released pi 500 uses a pi pico chip for the keyboard controller
@valshapedКүн бұрын
Framework laptops (and loads of others!) have SODIMM slots (that accept DDR5-5600)
@capability-snobКүн бұрын
As excited as I am for a mixed-criticality software future, a dedicated processor sure is easy to reason about at this scale.
@Runningr0seКүн бұрын
In my last project I tried to do the opposite: all in one big microcontroller. I didn’t want to deal with developing multiple firmware and dealing with updating them and communication etc. I ended up regretting it. The big microcontroller is running out of pins as we needed more functionality and the firmware is really complex because it interfaces with 20 different hardware devices. I ended up begrudgingly adding another microcontroller just to read a photodiode because I couldn’t find a standalone ADC chip which had a programmable interrupt pin which met my requirements. But using an stm32 as a glorified ADC worked just fine. A few hundred lines of code and I never had to worry about it again.
@EmbeddedSorceryКүн бұрын
I use mcu's for products that have either extreme low power requirements or very hard real time requirements regarding motor controls, so I've never actually had the opportunity yet in my career to use embedded linux. Would be fun to try something without such restrictions. And I'm not sure I'd use rust for the mcu side... Zig does seem to treat embedded as more of a first class citizen, but it's of course way too early and unstable.
@dunkylКүн бұрын
I settled on a buddy system approach to my last embedded project, and it was a great decision!
@ColorfirePlumaКүн бұрын
A lot of the links in the description include the closing parenthesis which are leading them to 404 pages
@sdr_podКүн бұрын
Thanks for the catch! Removed all parentheses, they should all work now :)
@GormHornboriКүн бұрын
In the car example: run the brakes, speedometer and engine tuning on the small mcus. Run the entertainment system, GPS and system updates on the big Linux chip. (For system updates and debugging let the Linux system check the versions of the small mcu's and flash them needed, when parked and after user confirmation.) Keys is a funny thing. I may want the key fob or your cellphone "key" to interface with the Linux system, because it's an over the air protocol to the outside...
@trapfethen16 сағат бұрын
I agree with all of this. I would add that the small MCUs should have two flash partitions with a bootloader just in case your linux systems crashes in the midst of flashing.
@ReedoTV2 күн бұрын
It's pronounced "meerdee"
@TheLucanicLord6 күн бұрын
There would be a slope up thing on the e if it was serdAY.
@SebastianRampe7 күн бұрын
check merde version oh it is at version 10
@TheFerdi2657 күн бұрын
around 34:00: this sounds a lot like coroutines! I like that trick!
@macroscalequantumsys8 күн бұрын
39:00 postcard-ebpf when? :D
@MrXankiller8 күн бұрын
Big up to all french speakers
@DanielSantanaBjj8 күн бұрын
😂
@leocomerford8 күн бұрын
It’s a bit on the nose …
@Wyvernnnn8 күн бұрын
Yessai le bon gros CACA
@clementdato63288 күн бұрын
mdr
@MrXankiller8 күн бұрын
@@Wyvernnnn et pas oublier qu'on a aussi la librairie libcaca disponible
@LDVSoft8 күн бұрын
Amos says that he doesn't know how to grow stack, makes a guess that it works by allocating a new stack region and going there (that's actually pretty easy to do), and then explains how he did exactly the same with asyncs (since Rust asyncs are basically partial stack coroutines). Nice!
@LDVSoft8 күн бұрын
Also, yeah, Drop bombs are a thing in C++ too. They are fun.
@AlJohri10 күн бұрын
22:29 I think the original term “splat” comes from ruby/perl.
@jamestjw9714 күн бұрын
I wonder what tool/app he used to make this presentation, its pretty
@sdr_pod14 күн бұрын
It's just regular Keynote on MacOS!
@jamestjw9713 күн бұрын
@@sdr_pod cool! I loved the look of the presentation btw :)
@MattHudsonAtx15 күн бұрын
Interesting. I was looking at CBOR for this.
@sdr_pod14 күн бұрын
We talk about CBOR (and self-describing vs non-self-describing formats) in general here: kzbin.info/www/bejne/bnq3fJyCoZyAaZY
@skeleton_craftGaming15 күн бұрын
casting any type to char* is well defined C++ ... And everyone uses x86-64 right? [N]RVO isnt guaranteed by LLVM? Thats odd given that the c++ standard does and LLVM is a C[++] [and swift can't forget swift or Tim Cook will personally come after me] compiler first and foremost
@hemerythrin14 күн бұрын
RVO changes the behavior of your program, by optimizing out a constructor call, *even* if that constructor has side effects! That's not something the LLVM backend could (or should) do.
@bianchialex15 күн бұрын
I’m not convinced this isn’t an AI conversation
@MattHudsonAtx15 күн бұрын
It's missing the shite pronunciations, weird pauses, and other diction errors
@sdr_pod15 күн бұрын
Man, that would make all the time and effort we spend writing, recording, and editing these podcasts seem kinda silly, huh?
@funkdefied114 күн бұрын
@@sdr_podtake it as a compliment. Your voices and audio quality have a professional sound. The content clearly isn’t vapid gibberish like an AI conversation would be.
@justapotota433012 күн бұрын
@@funkdefied1every AI-dubbed video I’ve heard has awful audio quality
@YeahImRose15 күн бұрын
Wanted to watch but morally cant if yall are calling twitter x 😢
@mateusvmv15 күн бұрын
memcpy is still the best serializer 😛
@theevilcottonball14 күн бұрын
Nope its mmap :-)
@Dygear15 күн бұрын
I pronounce it serde, not serde *flips table*. LOL
@theevilcottonball15 күн бұрын
Sir D. using serde on a serious saturday.
@LDVSoft15 күн бұрын
Oooh, nice! It also somewhat mirrors the reflection research.
@remrevo394415 күн бұрын
13:40 There is not only a deserialize in_place method (about which I hadn't heard before), but there also is DeserializeSeed thingy, which might allow directly serializing into a `&mut [_]`. (Though IIRC that is a bit more annoying to set up and might need a manual implementation.)
@sdr_pod15 күн бұрын
👀
@remrevo394415 күн бұрын
@@sdr_pod I actually learned about it in a still work-in-progress attempt to implement an async-await compatible serde-Deserializer. It works the same like the standard `Deserialize` trait, just that it lets you seed the deserialization process with a custom piece of data, which then can be used to construct the visitor. For my usecase that can be used for keeping datatype specific state even after the deserializer errors out with Err::Pending.
@macroscalequantumsys16 күн бұрын
On "Siri shut down everything!" my siri kindly asked "What exactly, like really EVERYTHING?"
@sdr_pod16 күн бұрын
🤭
@schtormm19 күн бұрын
16:06 That's because technically it's just Philipses Lighting division spun off under a different name
@schtormm19 күн бұрын
8:49 The fact i can immediately see this is some Tuya contraption probably isnt good is it
@zureao20 күн бұрын
That's the story of my life!
@hmmmyessssssss727021 күн бұрын
how does putting your iot and your phone on different wifi networks even work? won't you have to switch networks every time?
@oserodal270219 күн бұрын
That's more sane than connecting your IOT to the internet.
@benpenkacik388317 күн бұрын
You need to have managed network equipment that can handle multiple vlans and access points that can do multiple SSIDs on different vlans. You set up rules on your router to allow traffic from your main network to pass to your IoT network and for devices on your IoT network to be able to respond to traffic from your main network. Most prosumer equipment can do this. I'm not sure what the state of normal consumer equipment is currently. If you just use an access point provided by your ISP, you probably can't do this without buying new equipment.
@Dygear22 күн бұрын
*Sees the title: Immediately says:* “Oh, no.”
@Dygear22 күн бұрын
Yep, that was the correct reaction.
@raskr813725 күн бұрын
I hate that const limitations were one of the first things that stumped me in rust and I couldn't figure them out and when I showed my attempts to my friends, yes, they joked about never touching rust, but now 2 years later I look at this and I find it kind of genius
@SoapSoapCrayon28 күн бұрын
23:59 this is exactly what happened to me when i started trying to use compile time rust. I really like the language, i like a lot of the features, and I think learning it has made be better, but I switched back to C++ for my day-to-day because of garbage like this. It felt like the Rust STL and compile time stuff is extremely not-fit for production quite yet, and I'll be following the changes, but I'm still not switching over to it for large projects just yet.
@rez18828 күн бұрын
Important clarification: zig currently does not allow allocations in comptime
@sdr_pod28 күн бұрын
Oh, good to know! Neither of us are Zig programmers, so we were definitely guessing.
@MarekKnapek28 күн бұрын
Why using the O(n^2) loop if you could use sort instead. Implementing merge sort is easy. After you sorted your array, it is easy to extract unique values into result array. Easy in C++14 constexpr.
@sebschrader28 күн бұрын
What about the dead simple approach Ethernet takes: 8b10 or 64b66 for newest faster variants
@KabukiStarship28 күн бұрын
Interesting. I made the Serial Chinese Room, Interproces, and Telemetry Script, AKA Script2 and the SCRIPT Protocol for RPC, which is hybrid byte encoded and human readable based on contiguous data types.
@beyondcatastrophe_29 күн бұрын
16:25 I know this is not very rust-like, but do you even need the maybe-uninit? Just initialize everything with zero, you already unwrap everything that is below the current output index, so you don't even use the fact that it's an Option (you also return the number of `Some` values, so it doesn't even help on the consumer side)
@sdr_pod28 күн бұрын
For this example, no! For the slightly more complex data types in the real code (or for the general case), it would be nice to have!
@RichardPringle928 күн бұрын
@@sdr_pod can we get a link to the real code put in the show notes?
@sdr_pod28 күн бұрын
Sure! We'll add it there soon. For now, this is most of the code that inspired this episode: github.com/jamesmunns/postcard-rpc/blob/main/source/postcard-rpc/src/uniques.rs
@Bobbias29 күн бұрын
"It's O(n^2) but that's the compiler's problem" its not even a problem if your n is small anyway.
@duvallj29 күн бұрын
20:32 oh no typo on the slides, second loop needs an increment... very good episode tho! I'm in the midst of some compile-time crimes myself, w/ a proc_macro tho, neat to see const fn crimes too :)
@ChlorieHCl29 күн бұрын
Wow this is just like C++ constexpr but more painful. I thought C++ is already too restrictive for when you use vectors in constexpr code but not being able to even use for loops seems annoying as hell to me. Props to you for getting it working.
@Jplaysterraria29 күн бұрын
It is helpfully getting better
@oserodal270229 күн бұрын
C++ 🤮
@stefanalecu953229 күн бұрын
@@oserodal2702 such insightful critique, you clown
@oserodal270229 күн бұрын
@@stefanalecu9532 C++ 🥰
@KabukiStarship28 күн бұрын
I don't have this problem. For my C++ API Script2 I replaced the C++ std lib and unicode engine with modern data driven design and I found that it was easiest for me to remember and avoid abstract argument collisions if I prefix the function with T if it's a template, and C if it's constexpr. constexpr actually works on non-const data too, it's an optional compile implementation. Search for constexpr in Script2 and you'll see where it comes in useful. For my API I don't define the print code until the top layer using operator overloads, which allows me to print to any destination like ring buffers, blocks of RAM, streams, etc. It might not be the nicest to look at but it doesn't take much thought.
@humanbeing2730Ай бұрын
I dont think most people in my life would und erstand why someone would watch this for and reason but I enjoeyed it nonetheless :)
@alextalker5979Ай бұрын
I'd say, while having async allocator for general purpose might be questionable(since if you plan to schedule other work.while waiting for the allocation, the work might need an allocation too and it all turns onto itself perpetually), you can have a niche applIcation where you want to use Huge Pages but say implement your own allocation on top of them with whatever guarantees yoh like, since bigger page means lesser virtual page table(trivially speaking) and while Linux kernel for example can us free huge pages for general purpose also, if you really want you can and then the global allocator can still do most of the general purpose lifting while you have a clear interface to cooperatively manage "the new thing"
@alextalker5979Ай бұрын
The same, more for kernel level, actially goes for stuff like CMA(continious memory allocation) reserved of predetermined size of memory at the system startup, which you could request as a big chunk at once and then cooperatively navigate arounds its usage for the data structures you require, as well as care for address alignmemt & all
@capability-snobАй бұрын
The reason aaui for the file uri is the os-x capability sandbox. Sandboxed applications can't just enumerate the filesystem, instead, to gain access to a file at the user's request they need to perform an NSLookup on the request. This prevents applications from gaining access to files not explicitly shared with the app by the user.
@capability-snobАй бұрын
This was super fun! On FP registers: besides the fact that these are sometimes different sizes to gp registers, another reason they are often separate is that adding additional ports to a register file is very costly in space. There's additional circuitry per-register-per-port. Add to that, many implementations duplicate register files to get more fast read ports, but you still need to write to all of the register files whenever you update. Separating out the FP path, then, makes sense for FP heavy workloads. Also, I think POWER predates PowerPC, but I could be misremembering. The thinking was that when IBM, Apple, and Motarola came together to design the RISC they could all standardise on, they ended up starting from IBMs ISA and pruning out COBOL-specific instructions.
@dunkylАй бұрын
This episode had all so many little details that give great perspective on what I was already familiar with. Thanks!
@pinealservoАй бұрын
There are a bunch of Power architecture CPU cores with a variable length encoding extension (VLE) in the automotive embedded space. These are like the thumb-only ARM cores, except based on PPC rather than Arm. When I started using them, you couldn't even get an upstream GCC release that supported them. There's also an arch named Coldfire which is the name under which the 68k arch lives on.
@DygearАй бұрын
6:18 - Saying Siri turned on all of the lights in my house for some reason. LOL. Thanks Amos!
@IgnoreMyChanАй бұрын
That's quite a lot of advertisement in the first minutes for such a small channel. 👋