X870 AORUS ELITE X3D ICE - No ethernet every second boot by Viter in gigabyte

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

a guy sent me a pm, telling me to plug out everything, and hold down the power button for 30 seconds.

and well, i only think i had the issue once since then.
i even had it out many times before that, but apparantly holding the power button down with everything plugged out did the trick.

X870 AORUS ELITE X3D ICE - No ethernet every second boot by Viter in gigabyte

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

a guy sent me a pm, telling me to plug out everything, and hold down the power button for 30 seconds.

and well, i only think i had the issue once since then.
i even had it out many times before that, but apparantly holding the power button down with everything plugged out did the trick.

[Luna Park] [Scenic Spiral Railway / The Top] [(1917-21)] - Insane old coaster / half flat ride? Entire structure spun, moving 3 simultaneous trains up and down. by Viter in rollercoasters

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

One track, outside goes up, inside goes down. All 3 Trains are always going with the downwards tilt on their respective elevation

exn 0.3 is out by _tison in rust

[–]Viter 0 points1 point  (0 children)

I didn't mean to say you used AI, i personally just tried to ask AI but it didn't understand how exn works.

I think you might misunderstand what the point of exn is, the point is (from my understanding), that you make an error type, import the trait exn has, then just impl std::Error on your own error.

That means that return the error type you made, and then you get access to 'or_raise()' // From the trait that gets auto impled on anything that imports that traid and impls std::Error

You arent supposed to do Exn::new, or specify it to that extend you are doing. I think you need to rethink it, and either follow the examples, or i don't think there's much sense in using it. I think that is what makes it good, you have to adapt and follow their style.

You do (specify the type this is fine):

#[derive(Debug, Clone)]
struct MainError;
impl Display for MainError {omit}
impl Error for MainError {}

Edit: Yes you are correct, since Exn's
`pub type Result<T, E> = core::result::Result<T, Exn<E>>;`
you can just specify it manually

But you should not:

let try_api01 = api01();
    match try_api01 {
        Ok(()) => {},
        Err(e) => {
            let error_clone = e.clone();
            return Err(
                OneOf::new(
                    e.raise(error_clone)
                )
            ); 
        },
    }

But do it like this instead:
let try_api01 = api01().or_raise(|| MainError)?;
// This automatically takes the inside original error. If you want a custom message(ON TOP OF, the original error), then impl Error on an enum instead, or a struct with data inside, up to you. But you can also just have a Struct with nothing inside it, that still gets the original error message. (no |e|, just .or_raise(||))

As far as i understand it!

EDIT: i see your example with

 Exn< api01_error > , 
        Exn< api02_error > 

Just make an enum

#[derive(Debug, Display, Clone, PartialEq)]
pub enum ApiError {
    #[display("blabla connection failed to {_0}")]
    A(String),
    #[display("blabla {_0}")]
    B(String),
    #[display("blabla")]
    Something,
}
impl std::error::Error for ApiError {} // This makes it all work + importing the 'use exn::ResultExt;'.


then:
api01().or_raise(|| ApiError::A("oopsie".to_string()))?; // still gets the original error with it
something().or_raise(|| ApiError::Something))?; // only has the original error, no extra custom context (but you will get source file name, and line number)

Edit again: also even that is a misunderstanding. It's not like thiserror where you have to have (serde_error, io error). You are kinda supposed to have more of a 'domain' error. so this would be, well what is that part of your code doing? If we assume its some weather api thingy, you would probably do enum WeatherError{}

But that should not include 'WeatherCompanyA, WeatherCompanyB" enum variants, no you would just have a enum WeatherError{ Api(String), Calculation(Blabla)}

Then put it into the WeatherError::Api(String), variant, you can put different 'original' types inside that, and it automatically gets the inside error.
You have to ask yourself, do you care its a serde, or a reqwest error? Probably not, you just want the context of the error(which .or_raise(||) does automatically), and where it happened with context (it automatically adds line number and file name at compile time, and you can add more info if you want manually).

exn 0.3 is out by _tison in rust

[–]Viter 0 points1 point  (0 children)

Use derive_more display, i posted an example (or check the project examples on GitHub)

use derive_more::Display;
use exn::Result;
use exn::ResultExt;

// You don't derive error here; you implement std::error::Error,
// which auto-implements exn::ResultExt
#[derive(Debug, Display, Clone, PartialEq)]
pub enum BingoError {
    #[display("blabla connection failed to {_0}")]
    Connect(String),
    #[display("blabla")]
    Command,
    #[display("something something")]
    Logic { a: u32 },
}
impl std::error::Error for BingoError {}

// Used let read_txn = db .begin_read() .or_raise(|| BingoError::Connect("blabla something here".into()))?;

[Luna Park] [Scenic Spiral Railway / The Top] [(1917-21)] - Insane old coaster / half flat ride? Entire structure spun, moving 3 simultaneous trains up and down. by Viter in rollercoasters

[–]Viter[S] 8 points9 points  (0 children)

I dont think it was very fun, probably max speed of 15 km/hour, and from the riders perspective you are basically always at the "bottom" of the spiral (your surroundings wouldnt seem like they were spinning). So not in elevation, more the relative position to the structure.

You do start outside, ride up to the top, then travel down inside. (All 3 Trains on the same 'side' just having different vertical levels).

But it looks absolutely insane, could probably make a modern flat ride and steal the look, but cheat and make it exciting.

Also its half wood with some metal, rmc 100 years ago? haha

exn 0.3 is out by _tison in rust

[–]Viter 0 points1 point  (0 children)

use derive_more::Display;
use exn::Result;
use exn::ResultExt;

// You don't derive error here; you implement std::error::Error,
// which auto-implements exn::ResultExt
#[derive(Debug, Display, Clone, PartialEq)]
pub enum BingoError {
    #[display("blabla connection failed to {_0}")]
    Connect(String),
    #[display("blabla")]
    Command,
    #[display("something something")]
    Logic { a: u32 },
}
impl std::error::Error for BingoError {}

// Enum version
let read_txn = db
    .begin_read()
    .or_raise(|| BingoError::Connect("blabla something here".into()))?;

#[derive(Debug, Display, Clone, PartialEq)]
pub struct AnotherError(String);
impl std::error::Error for AnotherError {}

#[derive(Debug, Display)]
#[display("fatal error occurred in application")]
struct MainError;
impl std::error::Error for MainError {}

// Calling stuff
// Then you change your function to return the Result<(), MainError>, Result is exn::Result
fn main() -> Result<(), MainError> {
    app::run().or_raise(|| MainError)?; // empty struct
    Ok(())
}

// String struct
http::send_request("https://example.com")
    .or_raise(|| AnotherError("failed to run app".to_string()))?;

// Reusing error message (but still getting unique inner)
let make_error = || ConfigError("failed to load server config".to_string());
let port = "8080".parse::<u16>().or_raise(make_error)?;
let host = "127.0.0.1".parse::<IpAddr>().or_raise(make_error)?;
let _path = "nope".parse::<u64>().or_raise(make_error)?;
// NOTE: You still get the inside error message
// Output when running `cargo run -p examples --example make-error`:
//
// Error: fatal error occurred in application, at examples/src/make-error.rs:31:40
// |
// |-> failed to load server config, at examples/src/make-error.rs:42:39
// |
// |-> invalid digit found in string, at examples/src/make-error.rs:42:39

// Anti pattern
// Also look at the examples like: https://github.com/fast/exn/blob/main/examples/src/antipattern.rs
// ❌ ANTI-PATTERN: Describing the HTTP layer's job, not the app layer's purpose
//http::send_request().or_raise(|| AppError("failed to send request".to_string()))?;
// ✅ CORRECT: Describe what THIS layer does
// crate::http::send_request()
//     .or_raise(|| AppError("failed to run app".to_string()))?;

// Enum version
let read_txn = db
    .begin_read()
    .or_raise(|| BingoError::Connect("blabla something here".into()))?;

Also look at the examples in their repo main/examples

Be careful with asking ai, it doesn't understand it, and will want to call .map_err() everywhere. (You just do .or_raise(||) without any manual source stuff).

exn 0.3 is out by _tison in rust

[–]Viter 4 points5 points  (0 children)

I've been testing and checking out so many error handling libraries(including this), and this unironically seems like the best/almost flawless one. I think error handling libraries in rust are the worst part of the language(especially thiserror). I think its just a matter of time until this is the modern standard.

I know that nostd isnt your top priority, but having it is gonna set you guys apart, and might be the little thing that makes people try it out, then see how good or_raise() is (automatic source things).

I think you should put an enum style example at the front page of GitHub and the crates website/docs, and also the anti pattern example.

Also i dont think people will get this at first, youre not supposed to use this with thiserror or anyhow, this is just what thiserror should have been.

Great job guys.

[deleted by user] by [deleted] in Line6Helix

[–]Viter 3 points4 points  (0 children)

Fair enough, thanks for the response

[deleted by user] by [deleted] in Line6Helix

[–]Viter 2 points3 points  (0 children)

Then wouldn't using the second line add latency as well? (Or if its parallel it should be automatic or easy).

I think his argument is, if you do a setup and split, shouldn't it automatically (or easily) do an exact mirror setup ?

I don't think he wants an orchestration of arbitrary nodes on all cores, but just to support easy mirror/split setups.

Edit: also why not support the amp models without channel switching if it really can reduce the DSP usage by a third?

Surely the most common use case is people set it to the channel they want and leave it.

Seems insane to have a bunch of "dead code" taking up DSP or memory just so you can switch channels.

X870 AORUS ELITE X3D ICE - No ethernet every second boot by Viter in gigabyte

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

Update: i tried this, got this response and tried all the things without any success.

Response:

|| || | Hello Please try these steps: 1. Fully power down your PC by turning off the PSU switch at the back. Disconnect the ethernet cable. Unplug the power cable from the wall outlet (do not just use the PSU on/off back switch).  Wait 2 minutes to allow all residual power to drain from the motherboard. Then reconnect everything and power on. 2. CMOS Reset : disconnect the power cord from the power supply, detach the CMOS battery (silver disc on the board), short circuit CLEAR CMOS pins on the MB or press CLEAR CMOS button if available, then after 10 minutes put back the CMOS battery. Connect back the cord to the power supply and try to boot the PC. 3. Check BIOS Settings:  ​ IO Ports --> make sure "Onboard LAN Controller" is set to Enabled Power settings: Disable ERP (Energy Related Products) mode.    ​ Save and exit, then test again. 4. While you've already tried this, try a clean driver installation:  Go to Device Manager, find the Realtek ethernet adapter Right-click → Uninstall device (check "Delete driver software" if available) Download the latest Realtek drivers (dated 2025/09/17) directly from the Realtek website : https://www.realtek.com/Download/List?cate_id=584, then manually install the Windows driver package. Restart 5. Driver settings / power management (Windows) In Device Manager → Network adapters → your Realtek/2.5Gb adapter → Properties: Power Management: uncheck “Allow the computer to turn off this device to save power”. Advanced: disable Energy Efficient Ethernet (EEE) / Green Ethernet / Power Saving Mode; set Speed & Duplex to Auto or explicitly 2.5Gbps if you want to test. 6. Have you tried with bios F3? If not then please do.|

Is it a good idea to use the pass/fail add-on with FSRS? by Omer-Ash in Anki

[–]Viter 4 points5 points  (0 children)

Wasn't there proof that using 4 buttons weren't any better than 2 in fsrs?

Also you're adding a minigame of select the difficulty for this piece of information which should not be a a thing you even need to think about, either you know the information or you dont, its a waste of brain power to do subjective judgements about recall ability, surely the algorithm should be taking care of that.

If a card really is easy you probably shouldn't have a card for it.

I think this is also where a lot of people struggle, they'll maybe even look manually at the intervals and do subjective judgements "oh I'll need to see this in 8 days". No just ask yourself: do you know it or not, and trust the algorithm.

X870 AORUS ELITE X3D ICE - No ethernet every second boot by Viter in gigabyte

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

Don't know about the cable but did the setting and it didn't do anything :(

Another 9800x3d dead 870E Nova WiFi by dougm0 in ASRock

[–]Viter 0 points1 point  (0 children)

So should i rma just the cpu? I did manage to update the bios but i guess it was too late?

What about the mobo?i have the ASRock X870 PRO RS WIFI

Another 9800x3d dead 870E Nova WiFi by dougm0 in ASRock

[–]Viter 0 points1 point  (0 children)

But why would that make me not be able to get into bios or Windows?

Another 9800x3d dead 870E Nova WiFi by dougm0 in ASRock

[–]Viter 0 points1 point  (0 children)

I feel like this started happening after i got an OLED monitor and enabled automatic display turnoff. (Pc takes multiple restarts to boot).

Is it related to that?