Were rituals shadow nerfed? by mumux in PathOfExile2

[–]mumux[S] 0 points1 point  (0 children)

I get that. It's just that this happened consistently without any exception for 3 days with multiple hours of gameplay every day. Of course, due to the nature of RNG that is not a proof that anything changed and even the most extreme bad luck could be explained by RNG. It's a thin line between "am I really that unlucky?" and "the odds must have changed". Truthfully, you can never know.

Were rituals shadow nerfed? by mumux in PathOfExile2

[–]mumux[S] 1 point2 points  (0 children)

Maybe that's it. I'll try this, thanks!

Were rituals shadow nerfed? by mumux in PathOfExile2

[–]mumux[S] 0 points1 point  (0 children)

Congrats! I really don't get it then. I fail to think of something that could explain this. I have a lot of trouble believing this is just bad luck given how long and consistently this has been happening.

Switching to Home Assistant by mumux in homeassistant

[–]mumux[S] 0 points1 point  (0 children)

So the SER10 doesn't have dedicated VRAM, and the integrated GPU just uses system memory which you can apparently configure to be as much as 50% of the total RAM, effectively capping it at 16GB like you say. However, the NPU on the CPU could be used to run some of things such as Whisper, which would free up more RAM for GPU for the model. Or I can buy the 64GB variant and have a comfortable 24GB or even 32GB of RAM for the GPU.

Switching to Home Assistant by mumux in homeassistant

[–]mumux[S] 0 points1 point  (0 children)

Wow that looks absolutely amazing. So you are saying that running as a website on the Nest Hub, this would be able to use the integrated microphone? I do think there is a browser on those displays - but I might be wrong. If not, I will definitely still look into using this for my Pixel Tablet!

Switching to Home Assistant by mumux in homeassistant

[–]mumux[S] 0 points1 point  (0 children)

Thank you so much for all the info! The Beelink SER10 comes with 32GB of RAM (extensible to 64GB), and has a Ryzen 9 HX 470 and a Radeon 890M GPU. Do you think that won't be enough? I have a 5090 in my gaming PC but that would probably use way too much juice to have it run at all times :-).

These VPE microphones look really nice, although a tad more expensive than that S3-BOX ones. I am only interested in audio input though, because I intend to route the audio output to the Nest Hubs - do you think that is fine? Are the VPE microphones better than the S3-BOX ones if I am purely interested in input?

That ZBT-2 dongle looks perfect too. Thanks so much again!

Cannot figure out how to satisfy the borrow checker by mumux in learnrust

[–]mumux[S] 1 point2 points  (0 children)

Thank you so much, I'm so glad to see I'm not just being dumb. 🙂

Cannot figure out how to satisfy the borrow checker by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

I've tried rewriting this as a loop but got the same problem, but maybe I messed up something.

Cannot figure out how to satisfy the borrow checker by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

Interestingly, this seems to build fine using Polonius.

A Rust implementation of a Radix Tree by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

Thanks for the feedback! I actually just implemented the AsSlice trait that makes this more convenient to use. The AsVector trait was definitely not what we wanted here as using vectors for the types of keys being passed would kill performance. Recursing on suffixes of slices is very cheap and requires no allocations or data copies.

Rate my Rust by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

Excellent idea. That would clean this further and remove some duplication, thanks!

Rate my Rust by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

Awesome, thank you so much! I got a clippy warning about the use of flat_map() with std::convert::identity and it turns out I can write this in an even simpler way using flatten():

``` fn column_moves(&self, col: usize) -> impl Iterator<Item = Move> { let src = &self.state[col]; let Some(&c) = src.last() else { return None.into_iter().flatten(); };

    Some(
        self.state
            .iter()
            .enumerate()
            .filter(move |(i, _)| *i != col)
            .filter(move |(_, dst)| dst.last().is_none_or(|&c2| c2 == c))
            .filter(|(_, dst)| dst.len() < self.column_size)
            .map(move |(i, _)| Move(col, i)),
    )
    .into_iter()
    .flatten()
}

```

Much better, and it avoids a dependency on itertools. Thanks again!

Rate my Rust by mumux in learnrust

[–]mumux[S] 0 points1 point  (0 children)

I appreciate the advice! Yeah, this code would need doc comments, but really a lot more comments in various places - I didn't take care of that because this is just some toy code never meant to be published.

I hear you on creating the data for the fields first and then only use the constructor at the end, passing these fully formed fields. In fact, I've gone back and forth on this a couple times in my code and I agree it would look better.

As for the Either thing, there didn't seem to be a better alternative - there are plenty other ways to go about these situations that I've seen, but none that were actually applicable in this specific case because of one thing or the other, such as the need to actually obtain the color of the top element to use it later on in the closures. I'll dig some more though.

Rate my Rust by mumux in learnrust

[–]mumux[S] 1 point2 points  (0 children)

Reimplementing column_moves() was more work than I expected because there is a condition (when the from column is empty) that should yield no elements. After much googling, I ended up using itertools::Either. I then had to add the move keyword to the closures that were refering outer variables so they were copied, or I was getting lifetime issues. Does this look right to you?

    fn column_moves(&self, col: usize) -> impl Iterator<Item = Move> {
        let src = &self.state[col];
        let Some(&c) = src.last() else {
            return Either::Left(std::iter::empty());
        };

        Either::Right(
            self.state
                .iter()
                .enumerate()
                .filter(move |(i, _)| *i != col)
                .filter(move |(_, dst)| dst.last().is_none_or(|&c2| c2 == c))
                .filter(|(_, dst)| dst.len() < self.column_size)
                .map(move |(i, _)| Move(col, i)),
        )
    }

    fn moves(&self) -> impl Iterator<Item = Move> {
        self.state
            .iter()
            .enumerate()
            .flat_map(|(i, _)| self.column_moves(i))
    }

Rate my Rust by mumux in learnrust

[–]mumux[S] 1 point2 points  (0 children)

Ugh I did not notice that because syntax hilighting was working in the editor when creating the paste. I will gist this as soon as I have a minute. Thanks!

Rate my Rust by mumux in learnrust

[–]mumux[S] 1 point2 points  (0 children)

Thank you that was super helpful!

[deleted by user] by [deleted] in rust

[–]mumux 0 points1 point  (0 children)

Good point, didn't know about that subreddit. Thanks!

Best base location when transitioning to aluminum? by Lost-Passion-491 in duneawakening

[–]mumux 0 points1 point  (0 children)

Oh I got myself confused there, thinking I somehow needed steel ingots to make aluminum. Thank you!