I think it’s more useful to look at the tasks models haven’t gotten better at over time, and the tasks that are hard for them get better at in principle. The two best examples of these are:

  1. Deep familiarity with the codebase
  2. Technical communication
  • moonpiedumplings@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    19 days ago

    Skill issue. I have to constantly convince the models that what I want to do is in fact possible, and that the “alternate paths” they give are things I already considered but discarded because of various reasons.

    It’s gotten to the point where I would ask them to search for blogs directly, but they still try to give me hallucinated slop that isn’t actually what I want instead of following my instructions of being a search engine that filters out all the SEO slopspam that’s so prevalent nowadays.

    I currently am doing:

    https://blogsearch.io/

    https://marginalia-search.com/

    To find blogs directly.

    Although I do almost exclusively Linux/Kubernetes stuff, and very little programming atm, that might be why I have a different experience.

    Back when chatgpt wasn’t as broad (and people hadn’t posted blogs on as many things) I used to assign students things that chatgpt would find impossible do solve, and I got great glee from watching them spend a day trying to get chatgpt to do it entirely for them, before they gave up and had to actually learn. They can learn from chatgpt ofc, idrc, but it wouldn’t be able to do ut for them.

    Nowadays, things like “set up nextcloud with caddy instead of apache” have 10 thousand (real, non hallucinated) blogposts about them, which have been fed into chatgpt so it can do that without much difficulty.

    It is getting harder to find things that beginners can do that chatgpt can’t, but as soon as you move beyond the level of advanced beginner (also called being stuck in tutorial hell) in linux, you quickly find the LLM can’t do everything for you.

    • hirihit640@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      0
      ·
      19 days ago

      Got any examples of some of the issues LLMs can’t solve? I still feel like an “advanced beginner” and want to know what’s beyond

      • Test_Tickles@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        18 days ago

        One of the biggest issues I see is the overcomplication of minor things. OP’s link has examples. It wants to write every piece of code as if it is a user facing API. It will try to triple check every piece of memory that enters a function, even if the function that called it had it hard coded. It’s really insane when it decides that due to all the error checking, it should create a helper function just to hold all of the error checking code for something that was spun up with the class default values.

      • moonpiedumplings@programming.dev
        link
        fedilink
        English
        arrow-up
        0
        ·
        17 days ago

        The current thing I was working on was figuring out if I can do this: https://github.com/NilsIrl/dockerc . This project, compiles a docker image, and runtime to a single container. The interesting thing I find about it, is that it brings the docker container runtime and sandbox along. If I replace a user’s login shell with it, the user is now placed inside a sandboxed environment and can’t do anything.

        My usecase is I want to replace people’s login shells with a container in a defensive cybersecurity competition. But, containers are not a sandbox, and full network access, and so on.

        So my improvement, was to:

        • Use the gvisor/runsc runtime instead of a normal container. Gvisor is a reimplementation of the Linux kernel in Go, and it is as secure as a virtual machine, way more secure than a normal container, BUT I can’t guarantee nested virtaulization is enabled
        • Rip out dependencies on user namespaces or fuse for sandboxing or the container runtime, and entirely rely on Gvisor for isolation, just in case machines are old/misconfigured and those components don’t work
        • Use Nix to build images and all in one executables instead: Nix has ways to package static programs that avoid pitfalls of above

        I am having trouble meeting all of these requirements, so I suspect one or a few will go, or I will have multiple versions of the project with tradeoffs.

        All of my projects, often involve doing something standard, but with extra constraints, or some kind of “twist”. Like a very common thing I find myself doing, is to do something normal, but then rip out one of the underlying components of the system, replacing it with something else.

        I’ve found that I’ve learned a lot about how these systems work, without having to spend time building them entirely from scratch. You learn way more about Linux by reconfiguring your init system to enable encryption, than copy pasting from the Arch Linux Installation Guide the whole time, doing the standard setup. And then ignoring the partition layout so that my kernels are restored by BTRFS snapshots, which is not the default configuration.

        That’s the way to break out of tutorial hell. You have to not follow the tutorial. You can still follow them most of the way, but you have to pick a few steps, and do something different. I pick something that I think will benefit or make my setup better in some way.

        It is kind of difficult, since I feel like Linux has gotten more popular, and people know write more blog posts, and something that was previously a cool twist, is now something I can find a tutorial for. But with some care, you can ensure you still are learning, and it’s made easier by picking projects with twists.

    • Solumbran@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      19 days ago

      You try to convince a mindless slop-machine to not produce slop? And then wonder why you still get slop?

      • FizzyOrange@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        19 days ago

        They can be guided. For example I asked Claude to benchmark some SystemVerilog.

        First it just did time ./run.sh and I was like “no, idiot. That’s going to include the compilation/startup overhead.”

        So then it said “I’ll just increase the simulation time to amortise the startup cost.” Again I told it that was bad and to actually measure the time in SV.

        So since SV has no wall-time functions, it used $system("date") or some bollocks like that. No! I said - use DPI-C.

        Finally it did the right thing. Would it have been quicker to do it myself? Absolutely not.

        Current AI is at lazy junior engineer level (but sped up 10000 times). You just have to make sure they don’t make lazy dumb decisions. E.g. they’re going to do everything in Bash if give half a chance.

        Tbf to AI I think they’ve learned a lot of this from humans. I bet if you searched for $system in SV you will find a lot of hand crafted horrors. I’ve seen human-written C code that found an ELF symbol by system("nm ... | grep ... | awk ..."). I shit you not.

        • Solumbran@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          19 days ago

          You’re just asking for more slop until the slop machine spits out slop vaguely shaped like what you want, and you attribute the machine an understanding of your instructions.

          AI doesn’t learn, it doesn’t understand, it doesn’t correct, it doesn’t reply. It just spits out words in an order that maximizes your engagement.

          People thinking that AIs can produce code are on the edge of AI psychosis.

          • FizzyOrange@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            18 days ago

            Ah the classic “it’s just maths therefore it can’t really think” nonsense. You’re just dirty water so you definitely can’t think.

          • Nighed@feddit.uk
            link
            fedilink
            English
            arrow-up
            0
            ·
            19 days ago

            It spits out characters that match what statistically should follow. You can make the desired outcome more likely.

            If you think AI isn’t useful for coding you are delusional. (Oh boy is it going to cause problems though)

            • Solumbran@lemmy.world
              link
              fedilink
              arrow-up
              0
              ·
              19 days ago

              Al studies that demonstrate the lack of use, and actually the negative impact of slop machines for coding are also delusional I guess.

              • ATS1312@lemmy.dbzer0.com
                link
                fedilink
                arrow-up
                0
                ·
                18 days ago

                Not delusional at all. I’d rather phrase them as describing an ill-fitting or maladapted usecase or use method. Strange how Capitalism keeps demanding we use those.

                Maybe we should look into that. Or like… Ask ourselves how to hose the Capitalism off of the sometimes-useful number-cruncher. Or what literacy looks like with this tool, instead of asking it to think for us.

                • Solumbran@lemmy.world
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  18 days ago

                  What are you talking about? A study showing that code made with the “help” of slop machines is worse in quality and contains more issues is unrelated to capitalism.

                  If anything, people defending slop coding are the ones brainwashed by capitalism, with a cult of the “faster/more efficient” that makes them believe that code produced fast is good code no matter what.

                  Hallucinatory slop has no place in the making of software, or anything else.