[-] Araozu@lemmy.world 9 points 1 year ago

My main problem with vim is that they use hjkl instead of jkl; , it doesn't make sense to me why they'd do that.

And my second problem is that I use my own custom keyboard layout instead of qwerty, so I'd have to remap all the keys. Why spend hours learning and then rebinding all the keys when I can instead play some Dota? /s

[-] Araozu@lemmy.world 12 points 1 year ago

cries of apple fanbois on the distance

8

While working with a dynamically typed lang, I came across this:

hash(password, algorithm, algorithmOptions)

Where algorithm is a constant signaling which hashing algorithm to use, and algorithmOptions is a dict whose keys depend on algorithm.

So I thought, can we dictate that if a previous parameter has this value, then this parameter has to have this other value?

E.g.

enum HashAlgo {
    Bcrypt,
    Argon2,
}

type BcryptOptions = {
    Int optionA,
    Int optionB,
}

type Argon2Options = {
    String optionC,
    String optionD,
}


// Here I make this type "depend" on an argument of type HashAlgo
type HashOptions = [HashAlgo] => {
    HashAlgo::Bcrypt => BcryptOptions,
    HashAlgo::Argon2 => Argon2Options,
}

fun hash(
    String password,
    HashAlgo algorithm,
    // Here I use HashOptions, passing the prev. argument
    HashOptions[algorithm] options,
)

This way the compiler can ensure the correct dict is used, based on the value of algorithm

Does something like this exist? I now realize that it would be impossible to type check in compile time based on a runtime value, but if it was allowed only for constants? What do you think?

[-] Araozu@lemmy.world 8 points 1 year ago

I think the issue is not with wether the dev collects data, its about the dev using google products, which do collect, store and sell data.

There are alternatives to Firebase, (i think they can even be self hosted), so its something that can be improved without affecting much the development time or other aspects.

[-] Araozu@lemmy.world 10 points 1 year ago

Posted from my LineageOS phone, no gapps, microG, only foss apps.

I hope you felt good and happy writing your comment, unlike the rabid, angry, superior acting, elite hacker, bitches, knobs, baffoons FOSS fanboys.

[-] Araozu@lemmy.world 9 points 1 year ago

Do you know yourself for a fact that no data is being taken by Sync itself?

And its a fact that Google and Firebase are taking your data. Even if Sync itself doesn't collect any data, it uses Google products (as stated in their Privacy Policy which I'm 1000% you did read), and any and all google products will take your data.

That's the point of using a FOSS client, if it collected data people would know, the code is public. And the data collection can be removed, since the code is public.

Even outside of data collection or privacy, which clearly you don't care about, we should avoid giving Google more power. Look at manifest v3 or the web integrity API. That affects not only your privacy, but your security and ability to use the internet. And not only yours, but the whole world

[-] Araozu@lemmy.world 15 points 1 year ago

You have to accept to being tracked by Google, having an advertising id, all the data Firebase collects. Their ToS is large.

Users were asking for it, that's true. I guess users don't really care about being tracked, allowing google into their phone and indirectly supporting them controlling the web, thus enabling them to do things like manifest v3 or the web integrity API.

Ads? understandable, the dev has bills to pay. Not open source? Purists may hate it, but not the end of the world. Tracking? Google? No thanks, the beautiful design is not worth it.

12

When i connect to my jellyfin server to stream/download video/audio the speeds are tied to my internet speed. If my internet speed drops so does the transfer rate from my server. However it seems tied to my internet download speed (which varies from 0.5 to 80 mb/s), not the upload speed(which is usually 2 mb/s), and if i disconect my router from the internet I'm able to react the maximum allowed by my hardware. Is this normal? Or maybe something is wrong, or needs special configuration?

If relevant, I connect to a tp link router, which connects to the router from my isp.

[-] Araozu@lemmy.world 8 points 1 year ago

I think it depends on how you enter, Liftoff and Connect do

[-] Araozu@lemmy.world 11 points 1 year ago

Marketing version (23.04 or just 23) and semver (3.11.3)

Change my mind

[-] Araozu@lemmy.world 16 points 1 year ago

Google silently shipping signed chrome executables soon...

And then people wonder why non chromium browsers are important

[-] Araozu@lemmy.world 9 points 1 year ago

Wouldn't spoofing work? Like, if the browser just sends "yes, no extensions, adblock, blah blah" then how would the attestation server know if that's true? Or does it require signed binaries, or some special hardware?

[-] Araozu@lemmy.world 10 points 1 year ago

Why would you say something so controversial yet so brave?

[-] Araozu@lemmy.world 15 points 1 year ago

How about "php enables me to code like a moron", or even better, "php breaks common conventions and forces me to think about every little detail and special edge case, slowing me down if I don't want to accidentally 'code like a moron' "

Nested ternary operators emerge because of the lack of if/switch expressions (which is C fault), so they are "useful" (they shouldn't be). However, PHP is the only language that treats it as left associative. This has 2 problems:

  • You are forced to use parenthesis. Some (insane) people might do: (cond1) ? "A" : (cond2) ? "B" : "C" And it makes sense. Its ugly af, but it makes sense. But PHP now forces you to use more parethesis. It's making you work more.
  • It breaks convention. If you come from any other language and use ternary operators, you will get unexpected results. After hours of banging your head against the wall, you realize the problem. And now you have to learn a new edge case in the language, and what to do to actually use the language.

"But you shouldn't use ternary operators anyway! Use if/switch/polymorphic dispatch/goto/anything else"

True, but still, the feature is there, and its bad. The fact that there are other alternatives doesn't make the PHP ternary operator worse than other languages' ternary operator.

PHP works against you. That's the problem. The ternary operator is not a good example, since there are alternatives. But look at something so simple, so mundane like strpos.

If strpos doesn't find returns false. Every other language returns -1. And if you then use this value elsewhere, PHP will cast it to 0 for you. Boom, your program is broken, and you have to stare at the screen for hours, looking for the error.

"BuT yOU sHoUlD AlwAyS cHEcK tHe rETurN eRRor!"

And even if that's true, if we all must check the return value, does PHP force you to do so? Like checked exceptions in Java? Or all the Option & Result in Rust? throws, throws, throws... unwrap, unwrap, unwrap... (Many) people hate those features

PHP works against you. And that's why its bad.

view more: next ›

Araozu

joined 1 year ago