Crazazy [hey hi! :D]

  • 1 Post
  • 30 Comments
Joined 1 year ago
cake
Cake day: June 19th, 2023

help-circle




  • For me it’s not the time spent at the checkout that matters, it’s the time spent waiting at the checkout. Also over here cashiers don’t bag your items for you, so you have to do that anyway

    Also also, they have these really handy hand scanners over here so I can already bag my items while I’m walking through the store, and then the only thing I have to do at self-checkout is hand in the scanner and pay for the groceries. That is genuinely a lot faster than normal cash register shenanigans.






  • What are you on about? The open letter was specifically advocating against sponsorships and advertisements of the Military Industrial Complex. I.E. private companies who specifically try to turn a profit from countries going to war. Companies that literally earn money over people’s dead bodies. I think the people that wrote the open letter were very aware that being sponsored by the military was something that is hard to avoid. However there is a clear difference between being sponsored by a military and being sponsored by, like, literal death merchants



  • Would you happen to know to what that is attributable?

    Not sure but I suspect it’s 2 things:

    • the default editor is kinda shit
    • but it is really good at editing it’s configuration language: elisp

    So people have a need to change their editor, and a good configuration language to do it in. Moreover, emacs secretly comes with a bunch of built-in features, not enabled by default. It also helps that emacs is not terminal-based, allowing users to do stuff in emacs that you aren’t able to do in a normal terminal (like viewing images, or searching for images on the web. Did I already say that emacs has a built-in (primitive) web browser?) and generally means that emacs users “live” in emacs, as they already have access to so many features.

    If you compare this to vim

    • good text editing experience by default
    • vimscript wasn’t all that great (lua is better but neovim is still a very good editor so the drive to fix all it’s warts isn’t quite there)
    • it is terminal based, so you can’t do some of the funny stuff that emacs allows you to do

    Did I understand you correct in that customizing Spacemacs is a completely different beast?

    Correct.

    So knowledge acquired related to it doesn’t translate well to Vanilla/Doom Emacs and vice versa?

    I wouldn’t quite say that. It is more that you are probably going to need some prerequisite emacs knowledge to make the best use out of spacemacs’ layer system. To figure out how spacemacs works, you first need to have a basic idea of how emacs works. Doom is a bit closer to the metal, so you need to know less in order to properly customize it


  • Oh! Emacs fanboy here!

    I think that one of emacs’ surprising great points is that there is a plugin for a lot of smaller languages. If you’re working with a language that has no special text editor love at all you’re likely better off using vim but if the language authors made a plugin for their language, it’s likely either going to be for emacs or vscode.

    As for distribution vanilla emacs Doom emacs. Spacemacs has a bespoke customization system involving layers that is not all that friendly towards copy & pasting code from the internet. Doom emacs customization leans more to the vanilla side which can help if you need to solve a problem in your workflow.

    (Obviously vanilla emacs works best in that regard, but I can understand not wanting to start with default emacs straight away)





  • ah I think that’s where I’m at odds with a lot of lemmy NixOS users then 😅, since I am and have always been pretty hesitant to recommend NixOS to anyone in particular. I find the upfront costs of NixOS too big for me to recommend the OS to anyone who wasn’t already looking into it and knows its downsides and upsides.

    I do agree however on the fact that using nix is purely beneficial. It doesn’t hurt if you just add a .nix file to your project, since it doesn’t do any harm to an already existing project. It can just install your build tools and then consider itself done, and if you don’t happen to like nix after all, the new installer makes uninstalling easier than ever. There is pretty much no downside to downloading the package manager, something I can’t say about the OS.

    Having said that, I don’t think nix should be the end-all be-all standard in package management. I’m sure there will be other package managers that will be better than “nix but with yaml sprinkled in”, and are capable of improving the state of the art. At least, that’s something I hope to happen. For example, I have reservations about using a full-blown programming language for doing my project configuration (see people’s problems with Gradle for why you might not want that). I think a maven-style approach (where you’d have just limited config options, but can expand the package manager’s capabilities by telling it to install certain plugins (in the same config file!)), could be worth looking into, and I’d be lying if I said I wasn’t on the look out for a potential better nix alternative



  • Alright as someone who likes Haskell and has dabbled in unison before, I believe I can answer all these questions for you:

    • Why is helloWorld there twice?

    It is common in languages like haskell and ocaml to first mention the type of a function, so in this case:

    • the type of helloWorld is '{IO, Exception} (). That is it’s type signature (important for later)
    • the implementation of helloWorld is \_ -> println "Hello, World!"
    • What’s the ' for?
    • What are the () for?

    Here is where I have to get into the nitty gritty of how unison actually works. Unison has what programming language researchers call an effect system. The type signature of helloWorld indicates that it can perform the IO and Exception types of side effects, and these need to be handled. (in this case, they are handled by the compiler, but other types of side effects can be handled by the programmer themselves)
    However, for reasons Unison does not like dealing with eagerly evaluated non-function values with side effects. For this reason, there is '. Essentially, what it does is turn a value into a function that accepts () as it’s argument. We could therefore say that the type signature of helloWorld is also () -> {IO, Exception} (). The last () indicates that, next to it’s IO and Exception side effects, it also returns () as a value. This is because, in functional programming languages, all functions need to return values (or run infinitely, but that is for another topic)

    Now I’ve been used to functional programming for quite a while now, so things that seem natural to me can be absolutely woozy for anyone not used to this paradigm. So if anything still feels vague to you feel free to comment