• 0 Posts
  • 78 Comments
Joined 6 个月前
cake
Cake day: 2024年7月8日

help-circle
  • 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

    1. this tool[1] is just a proof of concept/prototype
    2. it costs less to maintain our tool than to write a more appropriate solution from scratch
    3. our infrastructure is now the tool

    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”.



  • 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:

    1. multiple config files (I think mpv already supports this)
    2. semver style config (idk if this would be practical)
    3. a config-editing tool (i.e., what the overwhelming majority of applications do, by hiding the implementation details from the user)

    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












  • 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.






  • 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