Merde is not Serde
48:21
19 сағат бұрын
A different serde
40:34
14 күн бұрын
My home automation journey
40:52
21 күн бұрын
Compile Time Crimes
36:31
28 күн бұрын
Async Allocators
22:27
Ай бұрын
Frame Synchronization
28:02
2 ай бұрын
Fixing build times with rubicon
23:17
What Are You Syncing About?
30:48
2 ай бұрын
You might not need Arc
25:00
2 ай бұрын
Thread-locals galore
35:42
3 ай бұрын
I Was Wrong About Rust Build Times
27:48
Trailer
1:02
4 ай бұрын
Пікірлер
@terraria9934
@terraria9934 Күн бұрын
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
@valshaped Күн бұрын
Framework laptops (and loads of others!) have SODIMM slots (that accept DDR5-5600)
@capability-snob
@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
@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
@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
@dunkyl Күн бұрын
I settled on a buddy system approach to my last embedded project, and it was a great decision!
@ColorfirePluma
@ColorfirePluma Күн бұрын
A lot of the links in the description include the closing parenthesis which are leading them to 404 pages
@sdr_pod
@sdr_pod Күн бұрын
Thanks for the catch! Removed all parentheses, they should all work now :)
@GormHornbori
@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...
@trapfethen
@trapfethen 16 сағат бұрын
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.
@ReedoTV
@ReedoTV 2 күн бұрын
It's pronounced "meerdee"
@TheLucanicLord
@TheLucanicLord 6 күн бұрын
There would be a slope up thing on the e if it was serdAY.
@SebastianRampe
@SebastianRampe 7 күн бұрын
check merde version oh it is at version 10
@TheFerdi265
@TheFerdi265 7 күн бұрын
around 34:00: this sounds a lot like coroutines! I like that trick!
@macroscalequantumsys
@macroscalequantumsys 8 күн бұрын
39:00 postcard-ebpf when? :D
@MrXankiller
@MrXankiller 8 күн бұрын
Big up to all french speakers
@DanielSantanaBjj
@DanielSantanaBjj 8 күн бұрын
😂
@leocomerford
@leocomerford 8 күн бұрын
It’s a bit on the nose …
@Wyvernnnn
@Wyvernnnn 8 күн бұрын
Yessai le bon gros CACA
@clementdato6328
@clementdato6328 8 күн бұрын
mdr
@MrXankiller
@MrXankiller 8 күн бұрын
@@Wyvernnnn et pas oublier qu'on a aussi la librairie libcaca disponible
@LDVSoft
@LDVSoft 8 күн бұрын
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!
@LDVSoft
@LDVSoft 8 күн бұрын
Also, yeah, Drop bombs are a thing in C++ too. They are fun.
@AlJohri
@AlJohri 10 күн бұрын
22:29 I think the original term “splat” comes from ruby/perl.
@jamestjw97
@jamestjw97 14 күн бұрын
I wonder what tool/app he used to make this presentation, its pretty
@sdr_pod
@sdr_pod 14 күн бұрын
It's just regular Keynote on MacOS!
@jamestjw97
@jamestjw97 13 күн бұрын
@@sdr_pod cool! I loved the look of the presentation btw :)
@MattHudsonAtx
@MattHudsonAtx 15 күн бұрын
Interesting. I was looking at CBOR for this.
@sdr_pod
@sdr_pod 14 күн бұрын
We talk about CBOR (and self-describing vs non-self-describing formats) in general here: kzbin.info/www/bejne/bnq3fJyCoZyAaZY
@skeleton_craftGaming
@skeleton_craftGaming 15 күн бұрын
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
@hemerythrin
@hemerythrin 14 күн бұрын
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.
@bianchialex
@bianchialex 15 күн бұрын
I’m not convinced this isn’t an AI conversation
@MattHudsonAtx
@MattHudsonAtx 15 күн бұрын
It's missing the shite pronunciations, weird pauses, and other diction errors
@sdr_pod
@sdr_pod 15 күн бұрын
Man, that would make all the time and effort we spend writing, recording, and editing these podcasts seem kinda silly, huh?
@funkdefied1
@funkdefied1 14 күн бұрын
@@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.
@justapotota4330
@justapotota4330 12 күн бұрын
@@funkdefied1every AI-dubbed video I’ve heard has awful audio quality
@YeahImRose
@YeahImRose 15 күн бұрын
Wanted to watch but morally cant if yall are calling twitter x 😢
@mateusvmv
@mateusvmv 15 күн бұрын
memcpy is still the best serializer 😛
@theevilcottonball
@theevilcottonball 14 күн бұрын
Nope its mmap :-)
@Dygear
@Dygear 15 күн бұрын
I pronounce it serde, not serde *flips table*. LOL
@theevilcottonball
@theevilcottonball 15 күн бұрын
Sir D. using serde on a serious saturday.
@LDVSoft
@LDVSoft 15 күн бұрын
Oooh, nice! It also somewhat mirrors the reflection research.
@remrevo3944
@remrevo3944 15 күн бұрын
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_pod
@sdr_pod 15 күн бұрын
👀
@remrevo3944
@remrevo3944 15 күн бұрын
@@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.
@macroscalequantumsys
@macroscalequantumsys 16 күн бұрын
On "Siri shut down everything!" my siri kindly asked "What exactly, like really EVERYTHING?"
@sdr_pod
@sdr_pod 16 күн бұрын
🤭
@schtormm
@schtormm 19 күн бұрын
16:06 That's because technically it's just Philipses Lighting division spun off under a different name
@schtormm
@schtormm 19 күн бұрын
8:49 The fact i can immediately see this is some Tuya contraption probably isnt good is it
@zureao
@zureao 20 күн бұрын
That's the story of my life!
@hmmmyessssssss7270
@hmmmyessssssss7270 21 күн бұрын
how does putting your iot and your phone on different wifi networks even work? won't you have to switch networks every time?
@oserodal2702
@oserodal2702 19 күн бұрын
That's more sane than connecting your IOT to the internet.
@benpenkacik3883
@benpenkacik3883 17 күн бұрын
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.
@Dygear
@Dygear 22 күн бұрын
*Sees the title: Immediately says:* “Oh, no.”
@Dygear
@Dygear 22 күн бұрын
Yep, that was the correct reaction.
@raskr8137
@raskr8137 25 күн бұрын
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
@SoapSoapCrayon
@SoapSoapCrayon 28 күн бұрын
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.
@rez188
@rez188 28 күн бұрын
Important clarification: zig currently does not allow allocations in comptime
@sdr_pod
@sdr_pod 28 күн бұрын
Oh, good to know! Neither of us are Zig programmers, so we were definitely guessing.
@MarekKnapek
@MarekKnapek 28 күн бұрын
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.
@sebschrader
@sebschrader 28 күн бұрын
What about the dead simple approach Ethernet takes: 8b10 or 64b66 for newest faster variants
@KabukiStarship
@KabukiStarship 28 күн бұрын
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_
@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_pod
@sdr_pod 28 күн бұрын
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!
@RichardPringle9
@RichardPringle9 28 күн бұрын
​@@sdr_pod can we get a link to the real code put in the show notes?
@sdr_pod
@sdr_pod 28 күн бұрын
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
@Bobbias
@Bobbias 29 күн бұрын
"It's O(n^2) but that's the compiler's problem" its not even a problem if your n is small anyway.
@duvallj
@duvallj 29 күн бұрын
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 :)
@ChlorieHCl
@ChlorieHCl 29 күн бұрын
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.
@Jplaysterraria
@Jplaysterraria 29 күн бұрын
It is helpfully getting better
@oserodal2702
@oserodal2702 29 күн бұрын
C++ 🤮
@stefanalecu9532
@stefanalecu9532 29 күн бұрын
​@@oserodal2702 such insightful critique, you clown
@oserodal2702
@oserodal2702 29 күн бұрын
@@stefanalecu9532 C++ 🥰
@KabukiStarship
@KabukiStarship 28 күн бұрын
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
@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
@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
@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
@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
@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
@dunkyl Ай бұрын
This episode had all so many little details that give great perspective on what I was already familiar with. Thanks!
@pinealservo
@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
@Dygear Ай бұрын
6:18 - Saying Siri turned on all of the lights in my house for some reason. LOL. Thanks Amos!
@IgnoreMyChan
@IgnoreMyChan Ай бұрын
That's quite a lot of advertisement in the first minutes for such a small channel. 👋
@eduardgi7780
@eduardgi7780 Ай бұрын
Seems brilliant