• 0 Posts
  • 22 Comments
Joined 1 year ago
cake
Cake day: July 9th, 2023

help-circle




  • It is pretty neat. They’ve made a lot of really interesting design decisions that make for a pretty unique language.

    One of its main selling points is how it guarantees memory safety without using a garbage collector. That, plus the fact that it does a shit-ton of compile-time optimizations, actually makes it pretty fast. Like, 80%-90% as fast as C (which is much faster than all the other high-level languages like Java, Go, etc, partly because they do in fact use garbage collectors).

    If you want to check it out, I recommend this playlist as a solid intro.




  • What might compel someone to make their own language? Typically, it’s because they’ve already used some languages, they have some criticisms of it, and they want to make something better. Now, for languages that are open source and accept community contributions, that is an option. However, keep in mind that each language already has its own core maintainer(s), with their own vision, as well as a whole host of other people who would have to be convinced that your idea (whatever improvements you want to make) are a good fit for that language. Some changes can be quite drastic — especially if you want to improve one language by bringing in insights you’ve gained from another. So sometimes (not often, but sometimes), people say “fuck it, I’m making my own language, with blackjack and hookers”.

    The thing about software is, it’s really easy to play around with. You don’t need a workshop or parts or anything — you just need your computer. As a result, you have lots of people tinkering with stuff like making their own programming language, whether just for fun or more tangible reasons.

    And we’ve been in this cycle of innovation for decades, and it’s how we’ve gone from punch cards to assembly to C, Python, and all the rest.

    But surely we don’t need any more innovation? Like, why can’t we all just use one language for everything?

    Well, it’s true that nowadays we have a whole bunch of general-purpose, multi-paradigm languages. The analogy people like to make is “different tools in your toolbox”. But, to clarify, it’s not that some of them are hammers and others are screwdrivers; they’re all the same kind of tool (“programming language”), so really it’s more like different screwdrivers, of varying sizes, with differently shaped bits at the end.

    With screwdrivers it’s clear why you might need one with this shape or the other: Otherwise it won’t match the screw. With languages it’s a little more subtle. You see, when you design a language (or almost anything else, ever), you inevitably make a series of tradeoffs. Is the language compiled or interpreted? Does it have a garbage collector? Does it have a strict type system? How does it do async? Does it support higher-order functions? There’s a million questions, and you’re going to get a different combination of answers for each language you look at. And that’s before you evaluate other (potentially very important) things, like “is this language fast enough for my use case?”, or “I need a library for such-and-such, has someone made that in this language?”, or “does the language have a solid enough community that I can reliably search the answers to my questions?”.

    Technically, any of the major languages — Java, Python, C, C++, C#, Javascript, Go, Rust, etc etc — can be used as a one-size-fits-all, universal programming language. There’s actually a joke “law” that goes “anything that can be written in Javascript, will eventually be written in Javascript”. But they each have their own unique combination of design decisions, so in practice different ones will be easier to use for this kind of project or that (one major factor is third-party libraries, like python’s numpy or pandas, that may not have equivalents in other languages). There are also situations where, for a given platform, you have to use that language. For example, for Microsoft’s .NET stuff, I don’t think you can substitute C# for something like C++ (someone correct me if I’m wrong please). Or, if you’re working on the Linux kernel, you’re pretty much just using C (I think they were considering adopting Rust, but idk if that’s still going on). And, of course, the dominant programming language for anything on the internet is Javascript (although WebAssembly has made huge strides in roughly the past decade, so you can actually use other languages as long as they can compile to WebAssembly).

    Finally, to wrap up this already way-too-long comment: a lot of these languages are very similar to one another. They’re all procedural, heavily inspired by C, and for the most part they’re either compiled and statically typed, or they’re interpreted and dynamically typed. There are also a whole bunch of other languages, called functional languages, that are designed based on entirely different principles (the principles aren’t harder to learn than what you’re having to learn for Java, they’re just different). But if you are looking for a universal programming language, I think the closest you’re going to get is either C, C++, Python, or Javascript. In addition to Java, I would strongly recommend you learn C and Python (C has a bit more of a learning curve, but it teaches you a lot about memory management, which is a lesson you’ll carry with you to any other language).



  • I think most of the games I’ve liked lately are roguelites:

    • Bullets Per Minute
    • Crypt of the Necrodancer
    • Plate-Up
    • Unrailed
    • Noita
    • Risk of Rain 2

    Except for BPM and Noita, I’d recommend all of these as excellent coop games too. Here are some summary descriptions:

    Bullets Per Minute:

    • first-person shooter dungeon crawler
    • awesome rock soundtrack with a steady beat
    • you have to shoot and reload to the beat

    Crypt of the Necrodancer:

    • top-down 2d dungeon crawler
    • awesome electronic soundtrack with a steady beat
    • you have to attack and move to the beat

    Plate-Up:

    • top-down 2d restaurant simulator
    • episodic gameplay where you try to make it through each day by serving all the customers
    • if any customer waits too long, you lose
    • inevitably gets crazy and chaotic, perfect for a group looking for a hectic and fun coop game
    • devs are based, epic mod support

    Unrailed:

    • top-down 2d rail-building game
    • you start with a train on some rails, with the train always moving forwards
    • the goal is to continuously place rails in front of the train, otherwise you lose
    • similarly to Plate-Up, incredibly chaotic energy, very fun

    Noita:

    • sidescrolling dungeon crawler
    • you mainly fight enemies using wands and spells
    • wands on their own are effectively just a bunch of empty slots; you decide which spells go in them, and in which order
    • this may or may not eventually result in game-breaking shenanigans (or suicidal shenanigans, or both)
    • there are a lot of secrets. like the entire game is a meta-narrative about discovering secrets. question everything.
    • you will die. a lot. half the time to your own wacky spells. this is the way.

    Risk of Rain 2:

    • 3rd-person shooter (some characters are primarily melee, but whatever lol)
    • game consists of a series of stages, each of which has a bunch of enemies, a bunch of chests with items, and a boss you must defeat to progress further
    • also has a decent few secrets. Not on the same scale as Noita, but still quite a few

  • Their proposal is that, when you visit a website using WEI, it doesn’t let you see it right away. Instead, it first asks a third party if you’re “legit”, as opposed to maybe a bot or something.

    The problem is, it would be really tricky to tell if you’re “legit”, because people get very, very tricky and clever with their bots (not to mention things like content farms, which aren’t even bots, they’re real humans, just doing the same job as a bot would). So, in order to try to do their jobs at all, these kind of third parties would have to try to find out a whole bunch of stuff about you.

    Now, websites already try to do that, but for now the arms race is actually on our side; the end user has more or less full control over what code a website can run on their browser (which is how extensions like u-block and privacy badger work).

    But if the end user could just block data collection, the third-party is back to square one. How can they possibly verify (“attest”) that you aren’t sus, if you’re preventing all attempts at collecting data about yourself, or your device / operating system / browser / etc?

    The answer is, they can’t. So, to do a proper attestation, they have to have a whole bunch of information about you. And if they can’t, they logically have no way of knowing if you’re a bot. And if that’s the case, when the third-party reports that back to the website you’re trying to visit, they’ll assume you’re a bot, and block you. Obviously.

    That’s pretty much my understanding of the situation. In order to actually implement this proposal, it would require unprecedented invasive measures for data collection; and for people who try to block it, they might just end up being classified as “bots” and basically frozen out of major parts of the internet. Especially because, when you consider how people can essentially just use whatever hardware and software they want, it would be in these big companies’ interests to restrict consumer choice to only the hardware and software they deem acceptable. Basically, it’s a conflict of interest, especially because the one trying to push this on everyone is Google themselves.

    Now, Google obviously denies all that. They assure us it won’t be used for invasive data collection, that people will be able to opt out without losing access to websites, that there won’t be any discrimination against anyone’s personal choice of browser/OS/device/etc.

    But it’s bullshit. They’re lying. It’s that shrimple.


  • What they should do — what we should force all corporations to do, and governments for that matter — is to respect the fundamental human right to privacy. And in the meantime, they should stop getting in people’s way when it comes to repairing their devices at the repair shop of their own choosing, and getting in people’s way when they want to get literally any software on their device not expressly approved by Apple.

    The choice isn’t “either they do what they do now, or they just let everyone collect data”. Big tech corporations like Apple, Google, and all the rest have, from a privacy perspective, been fucking us up the ass for years and years now. Apple’s entire “we care about your privacy” thing was, aside from a big PR success, pretty much just a giant middle finger to Facebook, and its other data collecting competitors. Fuck Apple, fuck Facebook, fuck Google, fuck them all.




  • Well, if you host a server, you can either host it on the cloud (which costs $$$), or you can host it by yourself (if you have a spare computer that you can just use as a server). If you host it yourself, all you’re really paying is the same stuff you already pay — internet and electricity.

    Hosting a server for something like mumble, matrix, or lemmy only has the costs I mentioned above.





  • While it’s true people don’t say “I’ve joined ActivityPub”, isn’t that synonymous with “I’ve joined the Fediverse”? Besides, the organization behind it does market it that way — they themselves refer to it as “joining Matrix, using one of these clients” (Element, Fluffychat, etc). Like, that’s what their website is called, and so is the Matrix server they host.

    Their centralization is, I think, a little more advanced than Mastodon’s. The organization that maintains the protocol regularly adds features to it, and then of course immediately updates their own client and server implementations to have those same, recently added features, meaning the other client and server implementations are always behind on at least a few features. It’s becoming reminiscent of how the web browser spec is so bloated, and gets new stuff added to it with such regularity, that new browsers are basically impractical.


  • complacent_jerboa@lemmy.worldtoTechnology@lemmy.world*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    88
    arrow-down
    4
    ·
    1 year ago
    • matrix isn’t a fediverse thing, it’s its own thing. it does happen to be decentralized, like the fediverse.

    • matrix isn’t an alternative to discord. it’s an alternative to whatsapp/signal/telegram/etc.

    • matrix is nice (I use it with my friend group), but it’s not perfect. we’re looking for something better.

    • if you’re looking for a decentralized, self-hosted, open-source, secure alternative for discord, my friends and I use Mumble. It works great for VoIP (and its noise cancellation software actually seems to work noticeably better than Discord’s), but it doesn’t really have the advanced text chat features that Discord does. We make do with Matrix.