I need an excuse to learn Rust and have wanted to do a “parse, don’t validate / make invalid states unrepresentable” project for a while. I will definitely share it if I get anything done.
I need an excuse to learn Rust and have wanted to do a “parse, don’t validate / make invalid states unrepresentable” project for a while. I will definitely share it if I get anything done.
At the end of the day you shouldn’t have to maintain anything in order to use a program, in my opinion (at least ideally). I think a “everything must be present in the file” type of config would require less no extra maintenance (assuming devs don’t do anything too silly). Additionally, while noting that my primary programming language is TeX and also that I am a dipshit, this just strikes me as an API-design problem. Alternative solutions could be:
I have thought about doing #3 for Sway (a sort of Sway-config editor). This does give me an idea, though: define a meta-format for specifying the variables, default values, allowed values, etc., for an arbitrary[0] program’s config file, and create a program that reads a meta-format file and presents a GUI for editing the config.
tbh i just lost my config file, forgot what i changed, and now i have to read documentation (and figure out which file the mpv flatpak uses for config)
[0]: maybe not too arbitrary
I personally disagree. I think in the era of “a megabyte is big,” this made sense, but in my opinion after parsing a config file with missing config data, we should print something indicating they are missing then error out. The existence of a reference config file with all options included would definitely help, but I think it’s no coincidence that there is no such config for mpv — why bother creating and maintaining one if the program will use the default value anyway?
tl;dr explicit is better than implicit
What’s great is even the very best “just use valgrind lol, lmao” folks make these errors all the time. It’s basically impossible to write correct C code generally — the best we can do is verify subsets of code (c.f. Rust’s unsafe
keyword). The memory-safety CVEs in EXT3/4 are proof of this, IMO, as if there were anyone able to write correct C code today, it would be Ted Ts’o.
Surely it’s better to specify those defaults in the config file and have the system just fail if the necessary flags aren’t present.
Completely agree. I think this may just be an extension of the “you gotta know what you’re doing to code correctly in C” old school bullshit.
Does anyone else get tired of “read documentation and edit this text file to configure your app” Unix shit? I have no problem with the underlying configuration being a text-file (makes for a straightforward API), but do I really need to navigate to https://mpv.io/manual/master/#configuration-files and go through the rigamarole of figuring out which options I need to edit/include[0] because I misplaced (read: sudo rm -rf /
) my config file?
[0]: And there is always so much implicit bullshit. “By default, we summon Cthulhu on Tuesdays and Thursdays if the variable summon_octopus_guy
is unset.” It’s a fucking config file, my friends, can we just be explicit?
me frantically changing my downvote
It’s actually super easy to increase the accuracy of LLMs.
import pytorch # or ollama or however you fucking dorks use this nonsense
from decimal import Decimal
I left out all the other details because it’s pretty intuitive why it works if you understand why floats have precision issues.
I’d suggest learning more things before sharing your thoughts.
fair, there are cranks still trying to trisect an arbitrary angle with an unmarked straight-edge and compass, so i shouldn’t be surprised. there are probably cranks still trying to solve the halting problem
I think cryptography is the only part of CS which really attracts cranks
every once in a while we get a “here is a compression scheme that works on all data, fuck you and your pidgins” but yeah i think this is right
One time I tried explaining to a colleague that a particular paper using an ML model to determine sexual orientation based on selfies was stupid as shit. Sexual orientation is not something you can confirm (gender is a social construct and sexual orientation is self-reported), nor it it encoded in a person’s face, so hello ontological error[1].
This colleague’s response was “that’s how science works.” Assuming that he knew that computer science isn’t really a science[2], I told him it suggested a fundamental misunderstanding of science, which resulted in the following exchange:
Colleague: Well, I have a PhD in Computer Science
Me: I basically do too[3] and Computer Science is not a science. You could argue that it’s a branch of math
Colleague: OK, but my undergrad was in Physics
It’s like these dorks saw this one amusing xckd comic, missed the point entirely, and then decided they wanted to be the physicist in the panel?
[1]: The model is also less accurate than
def sexual_orientation(person):
return "straight"
ignoring the ontological error.
[2]: I have never once heard a single part of the scientific method brought up since I started computer science. When I was hanging out with the pure mathematicians, they seemed to generally get this: A formal system alone is not fucking science, even if you’re using it to model the real world.
[3]: I was at the “all but dissertation” stage of my PhD. Now I’m at the “starting from scratch” phase.
I tried forging justice once but couldn’t find any chaos fire. I gave up and watched Monkey Man instead.
I have landed on a “you can get fucked if you make this annoying for me, I don’t need your product anyway” response to everything. The silver lining is that I will be dealing with way more bullshit while being just as angry all the time at everything.
Yeah I stopped using it after switching to Proton.
I have a subscription for Private Internet Access that I was using before subscribing to Proton Mail (which comes with Proton VPN). I figured it was all the same (they all have a slightly skeezy feel to me).
Then I checked out Mullvad’s website and it’s really quite awesome. Everything about their service has a “we want to make this accessible to everyone” vibe, which I appreciate. I am going to try it out. <3
That is a good rule. The GPU programmers seem to think this is good code and that it’s well-documented. I am still pretty out of my depth in this field, but it feels so silly to me. There is this historical bullshit about fortran only allowing 5 characters for a function name, and that (combined with some appeal to domain-specific knowledge) is used to justify stupid, freshman level shit like
if uplo == 'U':
# manually fill in this part with the version of the algorithm that is for upper triangular matrices
else: # just assume it's always U or L without checking, god forbid you use something modern like an enum, or even just a boolean
# manually fill in this part with the version of the algorithm that is for lower triangular matrices
edit: if memory serves, booleans were first discovered in 2011 by John T. Boole, which is why they don’t show up in fortran
I’m sorry
me too, also i lied/forgot to mention that my particular PhD situation is so fucked up that i went from pure mathematics to cuda
After reading some of the counterpoints here, I began thinking about how I considered Excel a hyperkludge if you qualify it enough. I realized the qualifications apply to every programming language (good ol’ Turing Completeness). I think, in my case, the common scenario of
had me erroneously criticizing the tool instead of its application[2]. In the case of Excel, I worked a few jobs where the spreadsheets used when the company was small led to an absolute nightmare after the company grew.
I appreciate the thoughtful responses from everyone. <3
1: Usually a spreadsheet, in my experience.
2: Noting that, while “it’s not the tool, it’s the application” is a common refrain from people using tools in shitty ways, there is a distinction between “this is the wrong tool for the job” and “this tool will hurt people”.