• 0 Posts
  • 83 Comments
Joined 11 months ago
cake
Cake day: September 24th, 2023

help-circle
  • I never did a CS degree but recently I’ve been doing some things that make me wish I had. But it isn’t any of this stuff which seems mostly programming things that you can easily learn outside academia.

    The stuff I would like to understand which I haven’t yet been able to learn on my own is the hard computer sciency stuff: lambda calculus, type inference (how do you read that weird judgement syntax?), how SAT/SMT solvers work, dependent typing systems… Does anyone have any good resources for those sorts of things?


  • I haven’t used one, but my guess would be they’re fine if you’re a “web browsing and email” sort, but most of us here probably aren’t, and then you’re going to have pain when you need to install some tool that expects to be installed globally, because so many pieces of open source software assume the “spew files all over /usr” installation method.

    Feels like you’d be spending a lot of time fighting expectations in the same way that Nix has to.




  • Would be cool to have more people on Linux finding and fixing these little details.

    Unlikely to happen. This is very complicated low level stuff that’s often completely undocumented. Often the hardware is buggy but it works with Windows/Mac because that’s what it’s been tested with, so you’re not even implementing a spec, you’re implementing Windows’ implementation.

    Also the few people that have the knowledge to do this a) don’t want to spend a ton of money buying every model of monitor or whatever for testing, and b) don’t want to spend all their time doing boring difficult debugging.

    I actually speak from experience here. I wrote a semi-popular FOSS program for a type of peripheral. Actually it only supports devices from a single company, but… I have one now. It cost about £200. The other models are more expensive and I’m not going to spend like £3k buying all the other models so I can test it properly. The protocol is reverse engineered too so… yeah I’ll probably break it for other people, sorry.

    This sort of thing really only works commercially IMO. It’s too expensive, boring and time consuming for the scratch-an-itch developers.


  • Yeah there’s no way I trust their methodology has stayed that stable over 15 years. Hell if you just look in the last year supposedly 3% of global users jumped from Mac to Windows in a single month (Nov 2023).

    There are also loads of new Linux device classes that may have Linux in their user agent but aren’t really “the year of the Linux desktop” that you’re thinking of. It seems they try to count ChromeOS (though badly - seems like “Unknown” contains a lot of ChromeOS depending on the month), and obviously Android, but what about Steam Deck? Smart devices with web browsers built in? Is your Tesla desktop Linux?

    I’d buy it’s gone up; not to 4% though. I would be moderately surprised if 4% of web users had even heard of Linux.



  • It doesn’t sound like it’s difficult, just extra work that they don’t want to do.

    For example they might want to use native USB instead of libusb which is LGPL. I’ve done that in the past because libusb was lacking some features. It means you have to implement your USB code for each platform and doing that work for Linux probably isn’t worth it, even if it isn’t difficult.

    FOSS is the only answer. Fuck capitalism. Fuck paid software.

    Grow up. FOSS is great but it obviously isn’t the only answer.






  • There are use cases like monorepos where vdm won’t work.

    Erm yeah because the whole point of monorepos is that you don’t use submodules. What?

    Git does track submodule history unlike vdm.

    The history of submodules is tracked in the submodule repo. VDM doesn’t change that.

    It uses them.

    It doesn’t use them any differently to if you had just checked out the submodule standalone. I’m not exactly sure what VDM does (haven’t used it) but that doesn’t seem like a big thing.

    This is not how git submodules or subtrees work.

    No?. Actually that’s not all you need to manage for git submodules - there’s additional hidden state so you can’t just edit that file; you need to use git add/rm. Which is fundamentally the same but worse - this is one of the selling points of the alternatives like VDM. It’s way less confusing.

    Git submodules and subtrees don’t support anything other than git remotes.

    So? Alternatives to git submodules don’t need to restrict themselves to its features.





  • Git is all about tracking changes over time which is meaningless with binary files.

    Utter codswallop. You can see the changes to a PNG over time. Lots of different UIs will even show you diffs for images.

    Git can track changes to binary files perfectly well. It might not be great at dealing with conflicts in them but that’s another matter.

    The only issue is that binary files tend to be large, and often don’t compress very well with Git’s delta compression. It’s large files that are the issue, not binary files. If you have a 20 kB binary file it’s going to be absolutely fine in Git. Likewise a 10 GB CSV file is not going to be such a good idea.



  • Nix being an expression based functional language, it doesn’t really make sense to have something like let x=y; since this looks to most people like a statement

    I know of several languages that just have let x=y; <expr> as an expression. It works fine, it’s just more obvious syntax.

    The fact that it looks like a statement is kind of the point.

    it follows the traditions of other functional languages such as the ML

    OCaml at least supports both forms. They didn’t have to pick the weird one.