First: Find easier comprehensible input material. The whole point is to learn new words by guessing their meaning based on context. It aint gonna work if you don’t know enough words to even understand the context. So, content meant for natives will be quite far along your journey. Start first with comprehensible input content meant for learners. And if even that is too difficult, go back to studying the words and grammatical structures that your textbook tells you to.
Second: At least in my experience, there’s no easy way around doing a shitton of flashcard/sentence mining. Set aside time in your weekly (preferably daily) routine to just spam the fuck out of Anki / q*izlet / whatever other app you use and commit to it religiously. Practice makes perfect. Don’t slack off and tell yourself that you’re “not motivated”. Force yourself to study even if you don’t want to. Motivation is a finite resource, Discipline is renewable. Soon enough, you will find that it gets easier and easier to stay motivated. That is the essence of discipline. And, as a bonus, discipline is a universal skill: if you get better at motivating yourself in the context of learning a new language, you will also notice improvements in other areas of your life. Many people start learning a foreign language specifically to train their discipline.
Third: Only do n+1 sentence mining. That means, only make flash cards out of sentences that have only one word or construct that you don’t already know. And if most of the sentences you encounter have more than that, it’s a sign that you have to take a step back and learn the basic vocab sets that your textbook gives you before moving on to comprehensible input and sentence mining.
Fourth: As Stephen Covey said, take time to sharpen the saw. That means put some effort into researching different learning techniques that work for you. Otherwise, you’ll just be wasting time on ineffective strategies. The previous advice I gave may not apply to you specifically, so it’s best to do your own research.
I recently wanted to run tegaki, and my experience is pretty much summed up by the meme. I consider myself fairly tech-savvy, but I just couldn’t figure out how to compile it. So I just gave up, downloaded the .exe and put it into a fresh wine prefix. After installing CJK fonts, everything ran fine. Now I’m trying to get...
isn’t there a way for Linux users to automatically install every missing dependency for a program?
Great question! There is. What you’re describing is a package manager. Overall, they are a great idea. It means devs can create smaller “dynamically linked” executables that rely on libraries installed by the package manager. The w*ndows equivalent of this is using DLL’s. Another advantage is that urgent security updates can be propagated much faster, since you don’t have to wait for each app that uses a vulnerable library to update it on their own. Also, dynamically linked executables can help save on ram usage. With statically linked executables, everyone brings their own versions of some library, all off them off by a few minor revisions (which all have to be loaded into ram separately), whereas a bunch of dynamically linked executables can all pointed to the same version (only needs to be loaded once), which is what package maintainers often do. Finally, package managers eradicate the need for apps to include their own auto-updaters, which benefits both developers and users.
This model goes wrong when software depends on an outdated library. Even if the package maintainers still provide support for that outdated version, often it’s difficult to install two wildly different versions of a library at the same time. And apart from libraries, there are other things that a program can depend on, such as executables and daemons (aka background processes aka services), old versions of which are often even more difficult to get running along with their modern counterparts.
So when you say that the “W*ndows way kind of looks superior here”, you are right about the specific edge case of running legacy apps. It just happens that the Linux crowd has historically decided that the other benefits of package managers outweigh this disadvantage.
There are tools for developers to bundle dependencies. Statically linked binaries, “portable” apps, AppImage, and so on… It’s just that package managers are so widespread (because of the aforementioned benefits), few developers bother with these. The general attitude is “if you want a statically linked executable, go compile it yourself”. And by the time it’s time to make an “archiveable” version of an app because it’s abandoned… nobody bothers, because it’s, well, abandoned.
However, as disk capacity and ram size steadily increase, people are starting to question whether the benefits of traditional package managers really outweigh the added maintenance cost. This, combined with the recent development of a linux kernel feature called “namespaces”, has spawned various new containerization tools. The ones I am familiar with are Docker (more suited for developer tools and web services), and Flatpak (more suitable for end-user desktop apps). I personally use both (flatpak as a user, and docker as both a user and a developer), and it makes my life a whole lot easier.
As for what makes it easier for users to get old apps working (which is what you’re asking), well… that’s sort of what we are discussing in this thread. Again, these tools aren’t very widespread, because there is rarely a practical reason for running legacy programs, other than archivism or nostalgia. More often than not, modern and maintained alternatives are available. And when their is a practical reason, it is often in the context of development tools, where the user is probably skilled enough to just Dockerize the legacy program themselves (I did this a couple times at a job I used to have).
Wine tends to work better for Wndows programs that already have a Linux port, because they depend on fewer mcrosoft-specific libraries… which is not very helpful most of the time, but it is the subject matter of the meme.
False alarm! I’m on Void Linux too, gtk2 is alive and well! I was just being an idiot and searching for gtk2 while the real package is called gtk+2. I absolutely agree about gtk3 and gtk4. With gtk4 its like they didn’t even bother. Client-side window shadows?!? seriously???. I personally prefer CLI and TUI for my apps, but gtk2 would be my second pick if I ever need to develop a GUI app. Partly because if my app ever gets popular, it would piss off a lot of those updooter types. I would love to use something even more minimalist like nuklear but sadly that’s missing a lot of actually useful desktop integration like IME support (as far as I understand).
I’m not even sure thinness was something consumers ever would have demanded
I am entirely convinced that most “features” on modern devices are not “something consumers would have demanded”. Sure, different lenses is nice if you’re a hobbyist photographer, but do most people really need more than a single back-facing camera? Do most people want to have wireless earbuds at the cost of not having a headphone jack? Do most people want glass backs and other such gimmicks that make their device more fragile? I’ve been told for decades that the modern economic system is great because competition forces manufacturers to prioritize what is best for the consumers. But in the context of smartphones, it feels like the roles are completely reversed. Manufacturers come up with some bullshit and then mount psy-ops (ad campaigns, online astroturfing) to convince the population that it’s worth their money
Context: Even though Chromium has native support for AVIF, a very nice image format, Microsoft goes out of their way to remove it from Edge, which is a chromium fork. Jpeg XL (JXL) (not to be confused with Jpeg (JPG) or Jpeg 2000 (jpg2k) ) is another nice image format, which, IIRC, is only supported in Firefox.
I said it in another comment, but I’m actually working on a website right now, which happens to lazy-load a lot of images with Javascript. I think I’ll store all the images in webp, avif, and JXL formats, and have the javascript code automatically load the one which is supported by the browser. Hopefully if it takes off, it can promote support for modern image formats!
I thought about adding a new branch for this, but honestly having more than one “non” is kind of boring. Like, non-stick non-spray cooking: pretty much most kinds of cooking. Non-cooking non-spray stick: any random stick you found on the ground. non-cooking non-stick spray being wd40 is the only kind of funny one of the three imo
Is “literally” an adverb? I always though that adverbs were like adjectives but used for verbs (actions). Like “quickly” or “slowly”. Where is the action in a sentence like “It’s literally the same browser”? Is it an adverb for the “is” (to be) auxiliary verb? srry english not my first language
Does anybody know why dbus exists? I’ve been wracking my brain trying to come up with a usecase for dbus that isn’t already covered by Unix sockets....
Wouldn’t this also be possible with plain sockets tho? To continue with your example of music players, the current standard is MPRIS, which uses dbus. But in an alternate universe, the people behind MPRIS could just have decided that music players shall create sockets at /run/user/1000/mpris/[player name] that all speak the same standardized protocol. If a player wanted to add functionality beyond MPRIS, it could accept nonstandard requests on its socket, or create a new socket altogether for extended control.
I just don’t see how this would require any more coordination between developers than the current solution. And I don’t see how dbus can save you from having to “understanding every single […] app out there”. If anything, it adds the overhead of learning how dbus itself works, on top of how a specific app’s dbus interface works.
In either case you still need to read the documentation of whatever daemon you’re trying to interface with to understand how it actually works. Dbus just adds the extra overhead of also needing to understand how dbus itself works. Meanwhile sockets can be explained in sixteen words: “It’s like a TCP server, but listening on a path instead of an ip and port”.
There’s nothing about dbus that makes decoupling easier, you can do it just as well with sockets. Pipewire and pulse both speak the same protocol, and they both rely on sockets, not dbus. The vast majority of the apps on my system don’t know or care that they’re speaking with pipewire instead of pulse. Read my comment here lemmy.world/comment/6284859
A message bus won’t magically remove the need for developers to sit down together and agree on how some API would work. And not having a message bus also doesn’t magically prevent you from allowing for alternative implementations. Pipewire is an alternative implementation of pulseaudio, and neither of those rely on dbus (pulse can optionally use dbus, but not for its core features). When using dbus, developers have to agree on which path the service owns and which methods it exposes. When using unix sockets, they have to agree where the socket lives and what data format it uses. It’s all the same.
It can even start the receiving daemon if it is not yet running.
We have a tool for that, it’s called an init system. Init systems offer a large degree of control over daemons (centralized logging? making sure things are started in the correct order? letting the user disable and enable different daemons?). Dbus’ autostart mechanism is a poor substitute. Want to run daemons per-user instead of as root? Many init systems let you do that too (I know systemd and runit do).
Sentence mining so hard the OSMRE had to send an inspector into my Anki decks (lemmy.world)
Aint no way I'm giving some website my real phone number (lemmy.world)
Arch BTW (lemmy.dbzer0.com)
What do you guys do when you want to run unmaintained programs? (lemmy.world)
I recently wanted to run tegaki, and my experience is pretty much summed up by the meme. I consider myself fairly tech-savvy, but I just couldn’t figure out how to compile it. So I just gave up, downloaded the .exe and put it into a fresh wine prefix. After installing CJK fonts, everything ran fine. Now I’m trying to get...
AMA (sh.itjust.works)
Why the hell did that stop (lemmy.world)
But hey, at least everyone supports webp now. (lemmy.world)
Context: Even though Chromium has native support for AVIF, a very nice image format, Microsoft goes out of their way to remove it from Edge, which is a chromium fork. Jpeg XL (JXL) (not to be confused with Jpeg (JPG) or Jpeg 2000 (jpg2k) ) is another nice image format, which, IIRC, is only supported in Firefox.
You do know you can just click the "reject all" button, right? (lemmy.world)
Context: www.youtube.com/watch?v=fqhPUmyrfGI...
I organized the non-stick cooking spray meme into a flowchart and made it open-source (lemmy.world)
/*...
"Piracy is a service issue.." (Image is a real story btw, link in post) (lemmy.ml)
Image comes from the monstrous work the Asahi Linux team did to get Netflix working on Linux on ARM Macbooks: asahilinux.org/2024/01/fedora-asahi-new/
Gonna need a bigger bowl! (lemmy.world)
Context: medium.com/…/new-study-at-least-15-of-all-reddit-…...
I guess it's the pretty colors? (lemmy.world)
What is the point of dbus? (lemmy.world)
Does anybody know why dbus exists? I’ve been wracking my brain trying to come up with a usecase for dbus that isn’t already covered by Unix sockets....