• 0 Posts
  • 532 Comments
Joined 1 year ago
cake
Cake day: June 21st, 2023

help-circle
  • The “‘modern’ development stack” we used at my school when I was in a CS program was C++98 or something, compiled using gcc directly. This was in the last decade. It technically wasn’t C!

    But we did use C in my computer engineering classes so I guess they technically did teach it. I feel very fortunate that I haven’t needed to use it since then.




  • Adding a single unused function should no effect on runtime performance. The compiler removes dead code during compilation, and there’s no concept at runtime anyway of “creating a function” since it’s just a compile-time construct to group reusable code (generally speaking - yes the pedants will be right when they say functions appear in the compiled output, to some extent).

    Anyway, this can all be tested on Godbolt anyway if you want to verify yourself. Make a function with and without a nested unused function and check the output.


  • I can think of a few things I dislike about MTG as a whole (3yr standard and general powercreep of the format comes to mind), but my complaints about specifically Arena would be:

    • Cost. I’d probably play more if sets didn’t cost more than an entire new game on Steam to get the preorder bundles. Why are boosters so damn expensive?
    • Grind. The F2P way to get cards is to grind like a madman to get your daily wins and finish the quests. The problem is I prefer slower decks, and I’m not going to play monored for my daily chore if I can just play a different game entirely.
    • BO1 standard. This is more of a personal opinion, but I wish they’d keep a separate banlist for BO1. They’ve done it in the past with Nexus of Fate, but BO1 is so dense with aggro decks. Unfortunately, the daily wins system incentivizes more quick games rather than fewer interesting games, so I understand why these aggro decks are so popular. Maybe changing the daily wins system would solve this as well without the need for a separate banlist?



  • I was expecting a meme about how few cards actually have “phasing” (and phase in/out automatically in the untap step). Instead it’s a list of cards that make things phase out.

    The list is a little more practical this way, but I’m still disappointed that WOTC dropped “phasing” itself entirely instead of trying to revisit it now that they’ve started printing cards that phase things out. They could have revisited the phasing lands idea with a tapped Ancient Tomb with phasing (and no self damage), or added cards that grant your opponent’s permanents phasing (like [[Teferi’s Curse]]).





  • I think it’s good to document why things are done, but extracting things out into another function is just documenting what is being done with extra steps. This also comes with a number of problems:

    1. Not all languages are readable. Documenting what is being done is important in some C, or when working with some libraries that have confusing usage syntax.
    2. Not all people reading the code know the language or libraries well. Those people need guidance to understand what the code is trying to do. Function names can of course do this, but…
    3. Not all types can be named in all languages. Some languages have a concept of “opaque types”, which explicitly have no name. If parameter and return types must be specified in that language, working around that restriction may result in unnecessarily complicated code.
    4. Longer files (the result of having dozens of single-use functions) are less readable. Related logic is now detached into pointers that go all over the file all because of an allergic reaction to code comments, where a simple // or # would have made the code just as readable.
    5. Function names can be just as outdated as code comments. Both require upkeep. Speaking from personal experience, I’ve seen some truly misleading/incorrect function names.



  • I think accessibility is widely misunderstood. The way I view it, it’s not only about giving people who need them more ways to access something, but also giving people who want/prefer them those methods as well.

    One example of this is wheelchair ramps. Building the ramps benefits those who need them by giving those people a way to go up/down an incline, but many people use the ramps. The ramps are also for those who would prefer to avoid the stairs.

    Digital tools are another example of this, and a great one. Keyboard accessibility is a must for people with visual impairments, but also a preference for many who prefer not to move their hand to the mouse constantly. Keyboard-accessible tools are almost always a better experience to all users as a result.

    Not building for accessibility is honestly just lazy. It shows that you don’t care about your customers, and you don’t want them to have a good experience. At best, you want to force your experience on them and only your experience is allowed (my biggest gripe with Apple products honestly).

    As for digital art, I’ve seen a lot of what you mentioned, and I think it’s honestly been going on for centuries at this point. It’s problematic, especially because not everyone wants to create art in the One True Manner™ and may want to experiment with new ways to create art, or may want the art as a part of a larger project and don’t really care about the means (as long as it’s ethical).



  • While I agree, it makes connecting to localhost as easy as http://0:8080/ (for port 8080, but omit for port 80).

    I worry that changing this will cause more CVEs like the octal IP addresses incident.

    Edit: looks like it’s only being blocked for outgoing requests from websites, which seems like it’ll have a much more reasonable impact.

    Edit 2: skimming through these PRs, at least for WebKit, I don’t see tests for shorthand IPs like 0 (and no Apple device to test with). What are the chances they missed those…?