I am a terrible reader and I'm really ashamed of it. I don't know how people can read that many books, I think in my lifetime I've finished at most 4 books? and two of them were technical books.
I think I suffer from aphantasia which may be related to the impossibility of getting hook to anything by reading. I've tried mangas as well and it's a bit easier, but still find hard to really enjoy.
Of course, most of the books I tried are the ones that I had to read in school, but I also tried a few recommendations from friends and the result was the same.
To build up the habit or hopefully get passionate, try to read with/for your or your relative’s kid(s). Not necessarily together with the same book, just sit beside them on the couch, park, or wherever and see what conversation follows.
Need time to read? I find the best ones are while waiting to board your flight, Uber, and other transport.
I doubt aphantasia is related. I have it, but have been a huge book reader all my life. Have you tried audiobooks? That's been my go to whenever I'm driving, cleaning, brushing teeth, etc.
I recently made the switch as well and used spotify_to_tidal [1] which is the free and open-source alternative to what Tidal recommends and it worked pretty fine! it couldn't find some specific tracks and I bet it does a somewhat similar name match as the one Tidal recommends, but at least this one doesn't have a limitation by the number of tracks, in case it's useful to someone else.
Use the Spotify artist ID[0] to find the Wikidata entry, and then grab the Tidal artist ID from the Wikidata entry to match the correct artist on Tidal. Even better if you use album IDs. (Brain explodes if you could use a song ID.)
Realistically, Wikidata may not have enough of this data populated, but it is nice to dream. And it seems plausible that MusicBrainz or similar might have enough data.
Great, yet another attempt at solving this with yet another standard that not everyone will use. Why did you pick this attempt instead of something more common like Gracenote?
Gracenote is owned by private equity and has limited availability of data. I prefer to encourage the use of more open data. MusicBrainz or Discogs would have been better choices than Wikidata based on quantity of entries. Though in 5 minutes I have been unable to find if Discogs even has external IDs, and I am not sure of the quantity of Spotify IDs that MusicBrainz has.
Great that you want to use open sources, but now, you've just provided more evidence for my case as you've listed 2 new "sources of truth". Even that fact that there are plural truth sources indicates no one source is truth. Why are they different? Same reasons that have already been discussed
So, we really have not made any forward progress here
If If If. This isn't blind pessimism. This is from someone that has dealt with metadata from studios/labels for just under two decades. IMDB was meant to do this for movies/tv, but yet it's an absolute dumpster fire.
So from an outside perspective, it's fun to dream a little dream, but from a gray beard it's just yet another dream.
It could check the album names on both sides, for example. And in case of uncertainty, it could make a list of dubious matches. Stuff like that, I guess.
The point is that it's all just metadata. There's a saying along the lines of "the filename is a really bad place to store metadata". Whether the title is the same and/or the album name as an additional qualifier, it's all subject to data entry which is prone to mistakes.
To some extent yes, but that data is usually sent from record label with the same values for different streaming services. But anyway, don't tell me that they can't at least figure out that there are more than one artists with the same name...
Record labels are actually quite terrible at providing this. You would assume otherwise because it’s in their best interest. However, I work in the industry and can tell you it’s a ridiculous problem because their is no standard and lots of human effort in cleanup and cleanliness.
You'd think that, but not in my experience. It's not like they are getting ID3 tags populated by Gracenote or some such service. You're also assuming that the streaming platforms do not attempt to manipulate the metadata they received for their own internal policies. See my other comment in a sibling thread for specific examples.
Too much inside baseball experience with the data the studios/labels believe is perfect that when received is far from perfect leaving the individual platforms to deal with it.
You say that as if all metadata is the same. I can tell you it is not. Every company that uses metadata will at some point use a field differently from someone else. "The Album" => "Album, The" type of things. "Album" => "Album (YYYY)" types of things. "Track remix by Artist" => "Track" + "Producer" as different fields.
I personally learned a lot by messing in Cheat Engine, it is way more capable than I thought, specially because I mostly used it as a kid and never looked back.
It is a great tool to get started with assembly in my opinion because the disassembler is good enough and you can write what they call 'assembly scripts' which provides the foundation on doing memory patches in x86 asm. Then from that you can start writing your own utils to patch the games at your own will.
You can do crazy cheats by patching the game just with Cheat Engine!
As strange as it is to say, I think avoiding problems like this might be one of the biggest productivity boosts from new languages like Go, Rust, Swift, etc. New ecosystems get a chance to “do over” the standard library and flush all the horrible legacy choices made before we knew better (locales, UTF16, etc).
The standard library in Zig, Go, Rust, and many others is miles ahead of the C standard library or posix api. That is reason enough to use them.
> I'm skeptical that rust magically deals with, for example, character sets in 30 year old subtitle files, in a way that makes C seem inadequate.
It's not just that C is "inadequate" - C and its standard library provide no assistance in that task. As the mpv author explains in profane detail in the linked commit message, POSIX locales are an active hindrance, not a useful form of "legacy compatibility".
Not "magically", but more reasonably and without forcing your entire program into a different state, breaking any ability for libraries to work with a huge range of functionality consistently. C locale handling is basically impossible to work with robustly, even before you get into how it can't be effectively used at all in a thread safe way.
Right. And the rust standard library provides (in my mind) the right API for this. Strings are always internally utf8. But they have constructor methods to create strings from UTF16 bytes, or utf32 or whatever.
Rust isn’t unique. Swift, Go and Python3 all expose more or less the same api. C’s standard library, with the benefit of hindsight, is uniquely terrible here.
Locales are so much more than character sets. E.g. an Arabic locale changes the direction of writing, it also changes the characters used for numbers, and completely changes the way numbers and dates are formatted. This is where the C locale functions are problematic.
> Also for most of those things, you want to be explicit about when to use the locale and when to not.
Right. And that's where the POSIX C API falls down. The locale isn't named explicitly. Its not a function parameter. Its specified via a global variable that gets shared between all your threads.
You might think you can use scanf to parse a string in a JSON file. It might appear to work fine on your local computer. But scanf behaves differently depending on the system locale. You can wrap scanf with a helper function which sets the locale to something sensible, calls scanf, and restores the locale. But because the locale is shared with other threads, which might be depending on the locale in other ways. So this can introduce race conditions.
The whole thing is horribly designed - and it leads to buggy, unreliable code that is hard to reason about. Even in the best case, introducing thread syncronization into a function like sscanf will lead to a dramatic decrease in performance.
A long, informative read, with some profanities. Highly recommended!
25 years ago, Spolsky wrote an article called “everything you wanted to know about Unicode and character sets”. Those of you who only lived in the post Unicode/UTF world might find that one informative as wel.
> Imagine they had done this for certain other things. Like errno, with all the brokenness of the locale API.
They did. See for example time functions like localtime (and localtime_r) and tzset. It is admittedly locale adjacent, since it depends on the locale. But the time zone is also global state, so it is impossible to get the time in a different timezone with standard apis in multi-threaded portable (for posix) c code.
> Both C locales and wchar_t are shitfucked retarded legacy braindeath. If
the C/POSIX standard committee had actually competent members, these
would have been deprecated or removed long ago. (I mean, they managed to
remove gets().) To justify this emotional outbreak potentially insulting
to unknown persons, I will write a lot of text. Those not comfortable
with toxic language should pretend this is a religious text.
Wow that comment is so educating. I guess I'll pay more attention now to standard functions I use in C code.
As for weirdness of C standard, I guess it is because they wanted to make it compatible with obscure proprietary platforms which might not even exist anymore.
> All in all, I believe this proves that software developers as a whole
and as a culture produce worse results than drug addicted butt fucked
monkeys randomly hacking on typewriters while inhaling the fumes of a
radioactive dumpster fire fueled by chinese platsic toys for children
and Elton John/Justin Bieber crossover CDs for all eternity.
Loved the last paragraph of the long, justified rant. Hilarious:
“All in all, I believe this proves that software developers as a whole
and as a culture produce worse results than drug addicted butt fucked
monkeys randomly hacking on typewriters while inhaling the fumes of a
radioactive dumpster fire fueled by chinese platsic toys for children
and Elton John/Justin Bieber crossover CDs for all eternity.”
I actually thought that last paragraph really undermined his case, because rather than substantiating like he did before, here he goes all out and just insults whoever he can think of; people who take it in the ass, greybeards, the Chinese, listeners of bland music...
I get him though. It's one of those writings from a foul mood. There was probably more going on in his life than some trouble dealing with locales.
To be fair, he has other issues than dealing with C locales. The author of that commit used to be the main developer behind mpv, until he decided to delete all support for GNOME in a single commit.
> ...here he goes all out and just insults whoever he can think of...
No, he observes that software devs as a group, and as a culture tend to produce worse results than incredibly-distracted and certainly-fatally-intoxicated simians banging on typewriters.
It's a bit of hyperbole, but the overall state of software is absolutely dire.
> ...the Chinese, listeners of bland music...
In some-to-much of the world, it's pretty well-known that a lot of cheap crap (much of which has historically been made in China) is very shoddily made and fairly quickly finds its way to the landfill. One shouldn't confuse criticism of shoddily-made products for criticism of the citizens of the country of origin of said products.
I'd also expect the referenced (certainly entirely-hypothetical) CD to be something that ends up getting thrown into the dumpster in huge numbers because store inventory managers expect it to be WAY more popular than it actually ends up being. Also, see above about not getting confused about what the target of the insult is. ;)
> There was probably more going on in his life than some trouble dealing with locales.
shrug Not everyone chooses to write in sterile $DAYJOB-approved language when explaining in detail the root of their frustration with the absolutely bullshit garbage pile they have to build upon for their non-corporate side project.
> Nobody looks at an iPhone and says "ugh, Chinese crap".
Well, the really important parts are Taiwanese crap. ;)
But (more seriously), the thing to remember is that the "Chinese crap" stereotype dates back to the days when China didn't have a notable electronics assembly industry... so nearly all the crap hitting US shores was cheap crap. Japan was the big Asian tech producer back then, and we still did a substantial bit of consumer (and industrial) electronics production in-country.
> No, he observes that software devs as a group, and as a culture tend to produce worse results than (...)
Yeah, to that I say "meh". Maybe. In my view, on a different day he would have hacked in a workaround, explained quickly that it is because of the illogical locale system, cited a few sources and moved on with his life. Sure, man-made stuff is a mess. Nothing's ever perfect. But stuff's particularly not perfect when you're in an absolutely foul mood.
It's unconstructive to entertain the thought that software in general is awful. A waste of energy. Reading his rant, I just think "improve it and move on"!
> One shouldn't confuse criticism of shoddily-made products for criticism of the citizens of the country of origin of said products.
Yeah, fair enough. There's different ways to interpret it. Maybe a proud modern Chinese person would be mildly offended by it. No biggie, the point was: in the last paragraph, he's firing a machine gun. A full release of rage.
> Not everyone chooses to write in sterile $DAYJOB-approved language
Of course. It feels great to talk bad when you're in a shit mood. I don't know about you though, but the next day I usually wish I'd just kept my cool. :-)
> In my view, on a different day he would have hacked in a workaround, explained quickly that it is because of the illogical locale system, cited a few sources and moved on with his life.
If you were this guy, sure. I advise you to carefully re-read the ~2,200 word essay contained in that commit message bearing foremost in mind that there exist people who intentionally write messages that make their frustration plain and obvious.
> No biggie, the point was: in the last paragraph, he's firing a machine gun.
No, that's a wrap-up, and it fits the tone of the rest of the essay.
> It feels great to talk bad when you're in a shit mood. I don't know about you though, but the next day I usually wish I'd just kept my cool.
1) I doubt that you're the sort of person to write an angry, in-depth ~2,200 word essay and then regret it the next day. To be clear, I expect that you would not put that much effort into writing something that clearly and frankly expresses your frustration.
2) Did you forget about this statement in the opening paragraph of the essay?
> To justify this emotional outbreak potentially insulting to unknown persons, I will write a lot of text. Those not comfortable with toxic language should pretend this is a religious text.
The tone is deliberate and intentional. Please adjust your worldview to include the existence of people who get angry about stupid bullshit and then write and publish in-depth, angry essays about exactly how stupid that bullshit is.
I've been using sharedrop.io which also is open-source [1] and it works quite nice, I particularly like this one because I don't have to install any third-party app on any of the devices.
I think on mac Safari usually doesn't work as well as in Chrome, but I've been able to transfer from Windows to iOS, Windows to macOS and macOS to iOS without installing a thing.
The way it's phrased it makes me understand a bit that it could be used within FFI, like if you get a pointer from a extern function that returns a *mut T, I could have better semantics by wrapping it with Pin<&mut T>, but then it says
"Another fact about the pinned typestate is that for most types it is completely irrelevant. If the value of type can never contain any self-references, pinning it is useless"
Mind you I'm very new at FFI but I'd like to understand what are the best ways to wrap them into safe Rust.
I have my org's macbook pro, a personal macbook air, and a tablet. I wish the later two could simply be merged. I like how performant and silent the MBA is but there are lots of situation where simply using a tablet is more comfortable, and carrying all three devices is simply not feasible.
The Surface has always been in my eyes but from what I've seen the linux support is not as trivial with newer models.
> a personal macbook air, and a tablet. I wish the latest two could simply be merged
Un-crippling of Apple Silicon iPads with Magic Keyboards, which have a superset of MacBook Air features, can happen via:
- Competition from Linux on Qualcomm Oryon tablets and 2-in-1
- New Apple leadership
- EU regulation to unlock dual-boot of other operating systems, like Linux/BSD
- Future jailbreak
That's also my wish. The Asahi project somehow gives me a bit of hope but I remember the authors saying that porting it to an iPad is simply not possible because of some booting mechanisms, and dev'in on a jailbroken device was not its preference, which is understandable.
Apple removed Hypervisor support from XNU in iOS 16.4. Here is a diff of iOS 16.3.1 and iOS 16.4. What this means is that even if a jailbreak/TrollStore comes out for iOS 16.6.1/17.0, there will not be UTM virtualization support, even on M1/M2 iPads.
I have one of those for work. It's pretty amazing, but I have to run Windows on it. My IdeaPad, though, runs Fedora for three years now, and I am typing this on it: https://taoofmac.com/space/blog/2021/08/26/1400
Only 13.3% of all changesets are from people that are either unemployed or their job is unknown [1].
Even greg k-h said that most of the development is backed by big companies so the argument of 'poor unpaid maintainers' doesn't go too far.
[1] https://lwn.net/Articles/1004998/
reply