• 3 Posts
  • 130 Comments
Joined 2 years ago
cake
Cake day: September 7th, 2023

help-circle






  • I’ve never had the chance to use a functional language in my work, but I have tried to use principles like these.

    Once I had a particularly badly written Python codebase. It had all kinds of duplicated logic and data all over the place. I was asked to add an algorithm to it. So I just found the point where my algorithm had to go, figured out what input data I needed and what output data I had to return, and then wrote all the algorithm’s logic in one clean, side effect-free module. All the complicated processing and logic was performed internally without side effects, and it did not have to interact at all with the larger codebase as a whole. It made understanding what I had to do much easier and relieved the burden of having to know what was going on outside.

    These are the things functional languages teach you to do: to define boundaries, and do sane things inside those boundaries. Everything else that’s going on outside is someone else’s problem.

    I’m not saying that functional programming is the only way you can learn something like this, but what made it click for me is understanding how Haskell provides the IO monad, but recommends that you keep that functionality at as high of a level as possible while keeping the lower level internals pure and functional.



  • My understanding from what you’re writing (and from this article) is that the phone number is really the account number. That’s all well and fine, but then they force you to verify that the number is yours (or at the very least, one that you have access to because you need to receive a confirmation over SMS), so you can’t use something more private. And sure, it makes it a little harder to find your new contact, but I don’t think it’s really that big of a deal - just exchange your other “account number” via some other channel.

    Besides, don’t think for a second that when this identifying information inevitably falls into the wrong hands that it will benefit you in any way. “What are you hiding, citizen?” and all that bullshit.

    The part of it that bothers me is the sense of entitlement that these companies exhibit. The “Give us your phone number or fuck off” sentiment is something I just refuse to accept. If Google forces us to do the same and we refuse, what makes Signal think that we’ll do it for them when they’re so much smaller by comparison? Especially when you’re trying to claim you’re more secure and private to people that much more tech savvy than average, this just comes off as not understanding your audience very well. I’m sure I’m not the only one that is holding out against using Signal because of this.


  • I’m surprised this hasn’t been said yet… but what I hate most about Signal is its requirement for a phone number. I don’t want to be identified, and I want to be able to create multiple separate accounts with different identities if I want to.

    I also hate the fact that it’s a mobile-first service. Yes, there is a desktop application (and just one really crappy one at that), but it’s clearly designed to revolve first and foremost around your phone and be virtually impossible to use without one. As someone who hates writing on a 3-inch screen, this is a also non-starter for me.

    I understand the arguments about perfectionism, but this is too much. I’ll stick with XMPP, Matrix and IRC, thanks.


  • but I no longer believe that it is possible to build a competitive federated messenger at all.

    The fact that we have a telephone system that works with separate providers contradicts this sentiment. If I want to pick up the phone and talk to my cousin’s puppy in New Zealand, I can do that without creating an account on his provider’s service.

    I don’t understand why we’ve forgotten this as a society. Yes, it was difficult to upgrade the phone systems over the past century, but it’s worth it in my opinion. I really wish we’d start seeing government regulation that says “you should be able to talk to someone on a service without having to create an account on said service.” I thought the DMA would do this, but sadly, Whatsapp still requires an account to talk to people using that service. Very disappointing.



  • Are we claiming now that Activity Pub is the only protocol that we can use for the fediverse? I think XMPP is roughly 30 years old at this point, and I’m pretty sure Activity Pub is much younger than that. I could be wrong though.

    But regardless, I don’t see why Activity Pub has to be the only protocol we accept to be considered a part of the fediverse. It’s not even like different AP implementations talk to each other all that well. My understanding is that Mastodon doesn’t federate that well with Lemmy, and I haven’t seen Loops or Pixelfed on Lemmy yet either.

    I’d be happy to be corrected on any of this though, I haven’t looked too closely into exactly how AP works or how it’s supposed to interoperate with different applications.





  • That’s actually very easy to do and you don’t need any special equipment. Simply use a male-male 3.5mm cable and connect one end from the stereo output of the cassette player and the other end into the microphone jack of any computer you own. Play the cassette - you can test the audio quality by running arecord -f cd - | aplay - - you will have to tune the volume output of the cassette player and the input sensitivity of the microphone.

    From there, if you’re paranoid, you could use arecord to save the output to a .wav file and encode it once the recording is done, but I had no problem just using oggenc directly on the piped audio. The final command looked like this: arecord -f cd - | oggenc -q 5 -o file.ogg - (change to -q 10 if you want lossless encoding).

    I’m not sure if this is the best quality per se, but I would definitely recommend it over using specialized equipment like cassette-mp3 converters. The problem with those devices is that if they use underpowered hardware, you might experience buffering issues where the encoding hardware can’t keep up with the audio stream or something like that. But doing it on a computer ensures that you will have all the processing power you need to make sure that this doesn’t happen.

    Good luck! I found it very easy to do - it took 5-10 minutes of setup.




  • The difference is how you interact with the browser engine. Blink is very easy to embed into a new browser project. I’ve seen it done - if you’re familiar with the tools, you can build a whole new browser built around the Blink engine in a few hours. You can write pretty much whatever you want around it and it doesn’t really change how you interact with the engine, which also makes updates very simple to do.

    With Firefox, it’s practically impossible to build a new browser around Gecko. The “forks” that you see are mostly just reskins that change a few settings here and there. They still follow upstream Firefox very closely and cannot diverge too much from it because it would be a huge maintenance burden.

    Pale Moon and Waterfox are closer to forks of Firefox than Librewolf for example, but they’ve had to maintain the engine themselves and keep up with standards and from what I’ve read, they’re struggling pretty hard to do so. Not a problem that Blink-based browsers have to deal with because it’s pretty easy and straightforward to update and embed the engine without having to rewrite your whole browser.

    Unfortunately, since Google controls the engine, this means that they can control the extensions that are allowed to plug into it. If you don’t have the hooks to properly support an extension (ie. ublock), then you can’t really implement it… unless you want to take on the burden of maintaining that forked engine again.

    That said, Webkit is still open source and developed actively (to the best of my knowledge - I could be completely wrong here). Why don’t forks build around Webkit instead of Blink? Not really sure to be honest.