If I had a cent every time an artist on patron had their computer die on them and lost works in progress or all their old stuff... I'd afford a few coffees.
BehindTheBarrier
I think Destiny is a good argument. If D1 ends, then playing starting D2 won't be the full experience. And new players can start many years into a game. D1 is also stuck on a console, while D2 is so big they removed content from it. You literally can't play the base campaign in D2, a huge part of the story is no longer there. A great game that "you had to be there" to play.
It's the extreme case but leaving games to die instead of having at least the chance for private servers is sad and a loss for everyone long term that don't get a chance to play it.
If Reddit back in the day had asked a few dollars for me to stick with using 3rd party apps using the API I would have. But they did the opposite, so here I am. First time actually donating to something, a measily $2 dollars a month, but hopefully a start to fund some of the free stuff I use.
I still find it amazing people believe the same constant child like lying.
Everyone says... A close friend of mine said... A professor said... Everyone knows...
...That I have the bestest (health/speech/IQ/humbleness/big hands)
I largely agree with this nodding along to many of the pitfalls presented. Except numbers 2s good refactor. I hope I won't sound too harsh/picky for an example that perhaps skipped renaming for clarity on the other parts, but I wanted to mention it.
While I don't use javascript and may be missing some of the norms and context of the lanugage, creating lamda functions (i don't know the js term) and then hardcoding them into a function is barely an improvement. It's fine because they work well with map
and filter
, but it didn't address the vague naming. Renaming is refactoring too!
isAdult
is a simple function with a clear name, but formatUser
and processUsers
are surprisingly vague. formatUser
gives only adult FormattedUser
s, and that should probably be highlighted in the name of formatUser
now that it is a resuable function. To me, it seems ripe for mistaken use given that it is the filter that at a glance handles removing non-adult users before the formatting, while formatUser
doesn't appear to exepct only adult users from it's naming or even use! Ideally, formatUser
should have checked the age on it's own and set isAdult true/false accordingly, instead of assuming it will be used only on adult User
s.
Likewise, the main function is called processUsers
but could easily have been something more descriptive like GetAdultFormattedUsers
or something similar depending on naming standards in js and the context it is used in. It may make more sense in the actual context, but in the example a FormattedUser
doesn't have to be an adult, so a function processing users should clarify that it only actually creates adult formatted users since there is a case where a FormattedUser
is not an adult.
He may have used the wrong word, but maintaining the same function signature across two files (while made easier by IDE tools) sucks ass to do. It was one of the major pain points for me doing a C++ course (along with the abyssmal compilation error messages). Not that I have tried Zig, but I do not see a reason to involve header files in my life if I can avoid it.
It's not the fart (speed) that kills you it's the smell (crash). A Norwegian English joke.
Looks very Norwegian, and there seems to be a crossing on the road used to prevent sheep from leaving the area (while cars still can drive over it) which is also something we have in Norway.
Late here, but if you want the easy route then there is always Unity (C#) if it fits for your use case in game dev and the license isn't a problem for you.
If you use it frequently, I suggest getting a GUI that have profiles or remember options so you don't have to mess with commands all the time. I wrote my own little command line wrspper which is Windows only since I don't have Linux to test on. Though it shouldn't take much effort to add support.
Makes it much more convenient when you don't have to specify things like archive (ignore duplicates), filename to be "artist - title" (where possible), download destination, etc. Just alt-tab, Ctrl-v, Enter. And the download is running. And mine also has parallel downloads and queue for when you got many slow downloads.
It can be pretty convenient to throw an error and be done with it. I think for some languages like Python, that is pretty much a prefered way to deal with things.
But the entire point of Rust and Result is as you say, to handle the places were things go wrong. To force you to make a choice of what should happen in the error path. It both forces you to see problems you may not be aware of, and handle issues in ways that may not stop the entire execution of your function. And after handling the Result in those cases, you know that beyond that point you are always in a good state. Like most things in Rust, that may involve making decisions about using Result and Option in your structs/functions, and designing your program in ways that force correct use... but that a now problem instead of a later problem when it comes up during runtime.