• 0 Posts
  • 51 Comments
Joined 1 year ago
cake
Cake day: June 11th, 2023

help-circle
  • Every year or two I give Windows a genuine try for around a month. WSL2 is actually pretty decent, it’s a massive improvement on the Windows development experience I had back in 2015 when I tried running Windows full time doing Python/Ruby/Java development. Required cygwin, git bash, power shell, and cmd depending on what I was doing. It was a special kind of nightmare. Lots of native gems couldn’t compile, lots of tooling issues, etc.

    Now you can use exclusively Windows terminal, keep essentially all your development stuff in a Linux subsystem, and pretend you’re in Linux. Integration with things like vscode or intellij is quite decent with the WSL.

    That said, I hate Microsoft, hate the lack of customization, hate the default UI, hate the split between Windows 95-style settings and new Windows 10+, it’s inconsistent as hell. Moving windows across monitors with different scaling still resizes the windows in a very archaic way. You can’t reasonably use multiple desktops because you can’t easily rebind keys to swap desktops without third party software. I’ve changed DEs in Linux for smaller issues than these.


  • Yeah for both Ubuntu and Arch on two separate computers in my house, the process was just install the distro then install steam + Lutris (steam for steam games, Lutris for every other kind of game like League or WoW).

    Installing steam games is identical in Linux and Windows for the vast majority of games. Installing non-steam games is arguably easier since you never have to go to a web browser.

    Honestly the only reason Windows is “easier” is because it’s preinstalled on computers. As someone who has fresh installed Linux and Windows, Linux is miles easier to install. To install Windows 11 I tried following their recommendations (enabling TPM and secure boot in bios), but the W11 installer still didn’t like my 2 year old computer, so had to open up the command prompt, regedit, and add 3 Bypass registry DWord 32 bit values. Then actually installing the O.S you just sit there and wait with an unusable computer. Linux installations have nice GUIs that are far more modern, don’t require weird terminal hacks, and you have a usable computer while it’s installing (you can open up Firefox and browse the web for example).

    \rant




  • Nevoic@lemmy.worldtoProgrammer Humor@programming.devGolang be like
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    11 months ago

    Note: Lemmy code blocks don’t play nice with some symbols, specifically < and & in the following code examples

    This isn’t a language level issue really though, Haskell can be equally ergonomic.

    The weird thing about ?. is that it’s actually overloaded, it can mean:

    • call a function on A? that returns B?
    • call a function on A? that returns B

    you’d end up with B? in either case

    Say you have these functions

    toInt :: String -> Maybe Int
    
    double :: Int -> Int
    
    isValid :: Int -> Maybe Int
    

    and you want to construct the following using these 3 functions

    fn :: Maybe String -> Maybe Int
    

    in a Rust-type syntax, you’d call

    str?.toInt()?.double()?.isValid()
    

    in Haskell you’d have two different operators here

    str >>= toInt &lt;&amp;> double >>= isValid
    

    however you can define this type class

    class Chainable f a b fb where
        (?.) :: f a -> (a -> fb) -> f b
    
    instance Functor f => Chainable f a b b where
        (?.) = (&lt;&amp;>)
    
    instance Monad m => Chainable m a b (m b) where
        (?.) = (>>=)
    

    and then get roughly the same syntax as rust without introducing a new language feature

    str ?. toInt ?. double ?. isValid
    

    though this is more general than just Maybes (it works with any functor/monad), and maybe you wouldn’t want it to be. In that case you’d do this

    class Chainable a b fb where
        (?.) :: Maybe a -> (a -> fb) -> Maybe b
    
    instance Chainable a b b where
        (?.) = (&lt;&amp;>)
    
    instance Chainable a b (Maybe b) where
        (?.) = (>>=)
    

    restricting it to only maybes could also theoretically help type inference.


  • Nevoic@lemmy.worldtoProgrammer Humor@programming.devGolang be like
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    11 months ago

    Here’s an example (first in Haskell then in Go), lets say you have some types/functions:

    • type Possible a = Either String a
    • data User = User { name :: String, age :: Int }
    • validateName :: String -> Possible String
    • validateAge :: Int -> Possible Int

    then you can make

    mkValidUser :: String -> Int -> Possible User
    mkValidUser name age = do
      validatedName ← validateName name
      validatedAge  ← validateAge age
      pure $ User validatedName validatedAge
    

    for some reason <- in lemmy shows up as &lt;- inside code blocks, so I used the left arrow unicode in the above instead

    in Go you’d have these

    • (no Possible type alias, Go can’t do generic type aliases yet, there’s an open issue for it)
    • type User struct { Name string; Age int }
    • func validateName(name string) (string, error)
    • func validateAge(age int) (int, error)

    and with them you’d make:

    func mkValidUser(name string, age int) (*User, error) {
      validatedName, err = validateName(name)
      if err != nil {
        return nil, err
      }
    
      validatedAge, err = validateAge(age)
      if err != nil {
        return nil, err
      }
    
      return User(Name: validatedName, Age: validatedAge), nil
    }
    

    In the Haskell, the fact that Either is a monad is saving you from a lot of boilerplate. You don’t have to explicitly handle the Left/error case, if any of the Eithers end up being a Left value then it’ll correctly “short-circuit” and the function will evaluate to that Left value.

    Without using the fact that it’s a functor/monad (e.g you have no access to fmap/>>=/do syntax), you’d end up with code that has a similar amount of boilerplate to the Go code (notice we have to handle each Left case now):

    mkValidUser :: String -> Int -> Possible User
    mkValidUser name age =
      case (validatedName name, validateAge age) of
        (Left nameErr, _) => Left nameErr
        (_, Left ageErr)  => Left ageErr
        (Right validatedName, Right validatedAge) => 
          Right $ User validatedName validatedAge
    

  • For people unfamiliar with the vim ecosystem (I assume that’s at least part of the down votes), it’s actually much closer than you’d expect. If you’re only familiar with vi/vim, nvim customizations are essentially on feature parity with vscode, with the added benefit of the vim-first bindings.

    What you have to do is install a customized neovim environment. Lunarvim, astrovim, nvchad, etc. Most of them have single line installation options for Linux, and then it comes with a bunch of plugins that will pretty much match whatever you’d find with vscode extensions.


  • Agree on majority of the post, except for “make the choices you feel are right”. Hard disagree on this normatively. If you’re saying it descriptively, sure, but it’s essentially tautological at that point.

    We shouldn’t advocate that people just act in whatever way feels correct to them. Sociopaths feel like it’s okay to do things that are not okay. So do bigots, racists, speciesists, sexists, etc.

    We should instead do what you’re doing with the majority of your post, advocate for correct positions and then come to a rational conclusion with the people we are talking to. Giving them a get out of jail free card, permitting them to do literally anything, is unnecessary.







  • Nevoic@lemmy.worldtoAntiwork@lemmy.worldNo one is forcing you to work
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    11 months ago

    There are a ton of reasons why individuals/corporations would scalp housing units and hold onto them without opening them up to use, from laws requiring fair treatment of renters like in NYC (where 90,000 rent controlled apartments remain vacant), to “unified cartels” actually have incredibly large influence over some areas (there are some companies that hold 10s of thousands of housing units, like blackrock, and these corporations purposefully keep some vacant to inflate the price of all units and control supply).

    But even if you want to just close your eyes and ignore my last paragraph, you can try to rationalize away the data, but the data will still be there. There are 16 million vacant housing units in the U.S. Even if you can’t fathom any reason why these might exist, they still do, and they still impact supply even if you’d like to believe they don’t.




  • Yup. GPU scalpers do the same thing, they buy up an entire stock, and then restrict supply by only letting a couple units go at a time, which inflates the price.

    In housing, capitalists lovingly call this practice “investing”, when you buy up land or housing and don’t rent it out or sell it, you just let it sit and increase in value.


  • Nevoic@lemmy.worldtoAntiwork@lemmy.worldNo one is forcing you to work
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    11 months ago

    A set of doctrines or beliefs that are shared by the members of a social group or that form the basis of a political, economic, or other system.

    Edit: this response was part of a chain, but I posted it when lemmy.world was having issues and I think my lemmy client couldn’t find the comment it was responding to, so it just posted it at the top level, here’s the chain for context: https://lemmy.world/comment/1973311

    Capitalism is an ideology, you have a very weird relationship with definitions, first denying what scalping is and now denying what an ideology is. I don’t know why you choose to live in a world where you just make up your own definitions, but it makes it harder to communicate.

    Demand outstrips supply absolutely, and yeah if we built an infinite number of houses we’d have a fine supply, but also if we didn’t have 16 million vacant homes we’d also have a fine supply. We currently have more vacant housing units than homeless people (by a factor of ~30), and capitalists are purposefully restricting supply to increase cost.

    I don’t know why you choose to live in a world where there is only one possible solution to the housing crisis. I’ve already said building more would obviously help supply, I don’t know why you’re so ideologically motivated that you can’t admit that putting literally millions of housing units on the market would also help supply. You seem to have an inability to even consider that capitalism could have any problems. That’s the epitome of an ideologue.


  • Nevoic@lemmy.worldtoAntiwork@lemmy.worldNo one is forcing you to work
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    11 months ago

    I’m not a liberal, for whatever that’s worth.

    Sure, lets build more affordable housing, that’s fine.

    You ignored my entire point though and went on your own ideological ramble there (one paragraph saying “we don’t need ideology” and the next defending capitalism. Do you read what you write? Lmfao).

    Are you saying you don’t believe supply/demand is a real thing? Or you just choose to ignore the impact that over 10 million housing scalpers would have on a population of 300 million people?

    If it’s neither of those, then I guess we’re in agreement, outlaw housing scalpers and let governments build affordable housing. We could get median housing costs down to a fraction of what they are now, just like other societies have that outlawed scalpers.


  • Nevoic@lemmy.worldtoAntiwork@lemmy.worldNo one is forcing you to work
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    11 months ago

    Is calling me insane an “actual thought”? You expect more from me than from yourself.

    Just because you don’t understand what I’m saying doesn’t mean I’m not saying anything. Not to say it’s not my fault, language is a two way street. But similarly, it’s not only my fault, you shouldn’t just assume that your misunderstanding necessarily means I don’t have a position. Maybe you think you’re infallible and incapable of misunderstanding, but I assure you you’re not, and I hope you understand that.

    When you scalp land, you’re reducing the supply of land. I assume you have an at least rudimentary understanding of supply/demand, so you know that reducing supply increases cost with no changes in demand (fun sidenote, demand for housing is actually increasing as population increases, so this effect is even more pronounced).

    This increased cost in housing/land will be felt by the working class. So as an externality of your profitting off increases in land value (caused in part by this scalping), the working class will have to spend more on housing.

    So owners get more money and workers get less money.

    What we see in societies that don’t have this gross feedback loop is housing costs that remain healthily at 5-10% of median income. Our society is instead at 30-80%, and it’s growing relative to wages (not just inflation).