• 14 Posts
  • 29 Comments
Joined 2 years ago
cake
Cake day: August 2nd, 2023

help-circle












  • It would be nice if there was a way to handle instance/user migrations. If an instance gets their domain name taken away, there’s no way AFAIK for the admin to say “Here’s our new location, with a verifiable signature”. Likewise there’s no way for a user AFAIK to move their account with a verifiable signature that the new one is still them. Ideally this could all happen automatically with signatures getting synced automatically and all that.

    I’m sure it would be a lot of work and no idea if ActivityPub would get in the way, but it would give people a lot more assurance that they didn’t pick a server that will screw them over by going down.






  • You’re not getting past this bouncer

    Prompt

    ChatGPT came up with the punny name on its own:

    A large, heavy animal, resembling a buffalo, dressed as a bouncer at a cyberpunk-themed nightclub in an all-animal world. The club, named ‘Byte the Dust’, showcases a grungy, cyberpunk aesthetic, with a neon sign that’s bold and futuristic. The buffalo bouncer is wearing high-tech, neon-lit glasses and a distinctive cyberpunk mohawk. The outfit is a rugged, cybernetic ensemble with metallic accents. It stands imposingly at the club entrance, which features rough textures, rusted metal, and dimly lit neon lights. The buffalo’s expression is tough and unwavering, in harmony with the gritty cyberpunk theme. The artwork should be in a realistic style, highlighting the formidable presence of the buffalo and the intense, neon-tinged atmosphere of ‘Byte the Dust’.




  • If you’re writing code that generic, why wouldn’t you want str to be passed in? For example, Counter('hello') is perfectly valid and useful. OTOH, average_length('hello') would always be 1 and not be useful. OTOOH, maybe there’s a valid reason for someone to do that. If I’ve got a list of items of various types and want to find the highest average length, I’d want to do max(map(average_length, items)) and not have that blow up just because there’s a string in there that I know will have an average length of 1.

    So this all depends on the specifics of the function you’re writing at the time. If you’re really sure that someone shouldn’t be passing in a str, I’d probably raise a ValueError or a warning, but only if you’re really sure. For the most part, I’d just use appropriate type hints and embrace the phrase “we’re all consenting adults here”.


  • The collect’s in the middle aren’t necessary, neither is splitting by ": ". Here’s a simpler version

    fn main() {
        let text = "seeds: 79 14 55 13\nwhatever";
        let seeds: Vec<_> = text
            .lines()
            .next()
            .unwrap()
            .split_whitespace()
            .skip(1)
            .map(|x| x.parse::().unwrap())
            .collect();
        println!("seeds: {:?}", seeds);
    }
    

    It is simpler to bang out a [int(num) for num in text.splitlines()[0].split(' ')[1:]] in Python, but that just shows the happy path with no error handling, and does a bunch of allocations that the Rust version doesn’t. You can also get slightly fancier in the Rust version by collecting into a Result for more succinct error handling if you’d like.

    EDIT: Here’s also a version using anyhow for error handling, and the aforementioned Result collecting:

    use anyhow::{anyhow, Result};
    
    fn main() -> Result<()> {
        let text = "seeds: 79 14 55 13\nwhatever";
        let seeds: Vec = text
            .lines()
            .next()
            .ok_or(anyhow!("No first line!"))?
            .split_whitespace()
            .skip(1)
            .map(str::parse)
            .collect::>()?;
        println!("seeds: {:?}", seeds);
        Ok(())
    }
    












  • Here’s a recent HN thread about the objects: https://news.ycombinator.com/item?id=35937540

    Metalworker status symbol seems compelling, as it explains several facts about them, and the knitting angle could be a chicken vs egg situation. Either knitters found an existing and relatively common object to be useful for their needs, or knitting is older than we think and the need for these tools drove metalworkers to decide that a hard-to-make tool was a good status symbol. Or maybe it’s both/and, with both needs influencing each other. I can easily imagine some metalworking culture deciding that this hard-to-make tool is a good status symbol, and they eventually turn it into something that’s not actually useful for the original purpose, but works great to show off.