xyz i love that book. it opened teenage me to the idea that not everyone capable of stringing words longer than 3 syllables together are always telling the truth..nor are they really that smart. it helped me understand bullshit as what it is.

anyways, i thought about this the moment large language models were explained to me. LLM can only ever be, at best, accidentally correct because it does not care about being right. it's a program. it only cares about spitting out a sentence that its internal maths have decided best reflects the input it's been given. that's it. it's predictive text with a thousand or so extra steps, none of which grant the ability to care about truth, only the objective to give the impression they do.

a month later

I'm just going to leave it here.

TOPR uratował turystów pogubionych przez… sztuczną inteligencję

For those who don't understand Slavic languages:

TOPR rescued tourists lost by... artificial intelligence

AI (artificial intelligence) is increasingly permeating our lives. In many spaces, too much so. This was recently witnessed in the Tatra Mountains, where hikers led by the popular ChatGTP took a very dangerous, at this time of year, shortcut from the Valley of Five Polish Ponds to Hala GÄ…sienicowa.

And this shortcut was the Krzyżne Pass. It is also worth mentioning that the conditions that day were really difficult. Fortunately, TOPR rescuers showed up in time to bring tourists from the area of the famous pass. No one was hurt, although the boundless trust in modern technology could have ended really badly.

  • xyz replied to this.

    Tomcat This is why it's important to explain to common hyped up people what "ai" actually is. And the article I linked above, despite its seemingly provoking (but actually quite accurate) title - strives to do just that.

    I've been learning Flutter, and Gemini has been extremely helpful.

    It's been able to generate working code based on my specifications, and has identified problems with code that I provide and tell me how to correct it. It's provided useful recommendations on alternative ways of doing things.

    It's not always correct, but has saved me a lot of time.

    Example:

    Me:

    How do I generate a Dart list C that contains items that are in list A and not in list B?

    Gemini:

    List<int> listA = [1, 2, 3, 4, 5];
    List<int> listB = [2, 4];
    List<int> listC = listA.toSet().difference(listB.toSet()).toList();

    print(listC); // Output: [1, 3, 5]

    Me:

    Will that work if B contains items that are not in A?

    Gemini:

    Yes, the provided code will still work correctly even if listB contains items that are not in listA.

    listA.toSet().difference(listB.toSet()): This operation focuses on removing elements from listA that are also present in listB.
    Elements in listB that are not in listA have no effect on the result.

    Therefore, the resulting listC will only contain elements that are present in listA but not in listB, regardless of whether listB contains elements that are not in listA.

    Me:

    Will that work for List<T>, where T is an arbitrary Dart type?

    Gemini:

    Yes, the code will work for List<T> where T is any comparable type in Dart.

    Explanation:

    Sets and Comparability: For the difference() method to work correctly, the elements of the lists must be comparable. In Dart, this generally means that the type T must implement the Comparable interface or have a suitable operator== and hashCode implementation.

    Example with Custom Objects:

    class Fruit implements Comparable<Fruit> {
      final String name;
    
      Fruit(this.name);
    
      @override
      int compareTo(Fruit other) => name.compareTo(other.name); 
    }
    
    List<Fruit> fruitsA = [
      Fruit('apple'), 
      Fruit('banana'), 
      Fruit('cherry'), 
      Fruit('date')
    ];
    
    List<Fruit> fruitsB = [
      Fruit('banana'), 
      Fruit('date'), 
      Fruit('fig')
    ];
    
    List<Fruit> fruitsC = fruitsA.toSet().difference(fruitsB.toSet()).toList(); 
    
    print(fruitsC); // Output: [Fruit(name: apple), Fruit(name: cherry)]

    In this example, the Fruit class implements the Comparable interface, allowing the difference() method to work correctly.

    This demonstrates that the toSet().difference().toList() approach is a generic and efficient way to find the elements present in one list but not in another for a wide range of data types in Dart.

    did you see that "the ZUCK" has announced that META will start laying off intermediate level programmers that don't meet "expectations"... and replacing them with the right "people" (spoiler he means AI).

    with the data centers expected to be built... there may be a bit of an AI revolution coming to the workforces never the less

    Facebook is basically just a big, fancy discussion forum. It doesn't need a lot of programmers.

    Of course, i agree, but the employees are being replaced by AI in real time now. It is being orchestrated as a tool by senior devs. that process is going to become much more common place/expand as data centers grow.

    As that happens... the tech will surely be applied in ways previously "never believed". Especially as the new "workforce" becomes fundamental to money production, people inherently will find "better" ways to make money off it, and the funding will REALLY get pumped back into the field.

    We are experiencing a serious change in how "stuff is done" as a whole, in every industry.... i don't think its as doom and gloom as people make it out to be... but it cannot help but indirectly rewire the fundamentals of "societal needs" on earth.

    • Edited

    I know you guys are fascinated by bots seemingly "understanding" you, but can we finally see an example of "ai" writing a solution to a specific unique problem that includes more than 100 loc and more than 1 module? I mean the stuff people who will supposedly lose jobs to "ai" do on a daily basis. 1000s of examples of conway's game of life and bubblesort are starting to lose their wow factor.

    And for umpteenth time: programming is not code typing. It's systems design. If your job is to just type code, I'm all for copypasting machines automating your job away. That job was draining your soul anyway.

    As for zuckbot, its "predictions" are worth diddly-squat. Remember when zuckerverse was to change the way we interact online, two or so years ago? "Any time now". "It's just around the corner". Yeah, just like self driving and flying cars. And rainbow farting unicorns.

      xyz I think people now living on mars according to elon musks plan for his rockets as he stated in his presentations 8 years ago..

      Not sure that we mortals have access to really powerful AI, and this garbage that is available is just for shits and giggles IMO.

      IDK, those people who "lost" jobs to AI probably never contributed to humanity either way. You could say that real life optimization.. why pay someone money for something that machine could do - same principles for automation in factories.. sure "factory" robot cant invent an iphone 25 but it can sure produce it real fast and no breaks or holidays or insurance..

      Looking at nividia how they use AI in their chips and h/w, maybe its the future.. i mean why try to figure out somethig that will give you little gains when you can train AI to seemingly produce something that looks almost the same with more gains?

      I look forward for cheap compute power and lots of funny offensive memes using AI.. Combine s/w with h/w (robotics) and you got yourself NPC's 😃

      I asked Gemini if it participated in continued development of itself. It seemed to find that interesting, but stuck to the position that human developers were in control of that.

        DaveTheCoder that human developers were in control of that.

        How naive these leather bags are. 😹

        Ascribing agency to LLMs is a form of pseudo religious belief... or at least a sure sign of not understanding how they work.

        ALL hail the mighty IF, AND, OR, THEN!!!!
        [thunder, flashing lights, ominous music]

        ChatGPT has been a real accelerator for my learning GD Script learning journey.
        It hasn't really learned 4.0 just yet, but then I can still ask Claude and proceed rather quickly.

        When ChatGPT is down I find myself able to type syntactically correct GD Script and that's a nice experience.

        When I spend the time to properly inform the model about my project and the set-up it will also create workable suggestions in pseudocode for new features across modules.
        When my prompting is bad, the results are outright horrible.

        I guess it's mostly about the effort and expecting intermediate results at best.

        15 days later
        • Edited

        I read it on reddit that if I don't "adapt and embrace ai", I'll soon fall behind and die off. Since I don't want that to happen, I said, heck, don't be a boomer, let the good ai help you. Here's what happened:

        . . .

        xyz: I need a GDScript class or a function that implements marching squares using a compute shader. The input should be a 2d array of samples and the output should be a mesh resource.

        Copilot: Sure, I can help you with that! Here's a basic implementation of the Marching Squares algorithm using GDScript and a compute shader in Godot. This example assumes you have a basic understanding of Godot and GDScript.

        Copilot: First, create a new shader file for the compute shader:

        // marching_squares.compute
        shader_type compute;
        
        layout(local_size_x = 1, local_size_y = 1) in;
        
        uniform sampler2D samples;
        uniform int width;
        uniform int height;
        buffer MeshBuffer {
            vec4 vertices[];
        };
        
        void main() {
            ivec2 pos = ivec2(gl_GlobalInvocationID.xy);
            if (pos.x >= width - 1 || pos.y >= height - 1) return;
        
            float tl = texelFetch(samples, pos, 0).r;
            float tr = texelFetch(samples, pos + ivec2(1, 0), 0).r;
            float bl = texelFetch(samples, pos + ivec2(0, 1), 0).r;
            float br = texelFetch(samples, pos + ivec2(1, 1), 0).r;
        
            int case_index = int(tl > 0.5) | (int(tr > 0.5) << 1) | (int(bl > 0.5) << 2) | (int(br > 0.5) << 3);
        
            // Add vertices based on the case_index
            // This is a simplified example, you need to add the actual vertices based on the case_index
            if (case_index == 1) {
                vertices[pos.x + pos.y * width] = vec4(pos.x, pos.y, 0.0, 1.0);
            }
        }

        Copilot: Next, create a GDScript class to handle the compute shader and generate the mesh:

        # MarchingSquares.gd
        extends Node
        
        var compute_shader : Shader = preload("res://marching_squares.compute")
        var compute_material : ShaderMaterial
        var mesh : ArrayMesh
        
        func _ready():
            compute_material = ShaderMaterial.new()
            compute_material.shader = compute_shader
        
            var width = 100
            var height = 100
            var samples = Image.new()
            samples.create(width, height, false, Image.FORMAT_RF)
            samples.lock()
        
            # Fill the samples with your data
            for x in range(width):
                for y in range(height):
                    samples.set_pixel(x, y, Color(randf(), 0, 0))
        
            samples.unlock()
        
            var image_texture = ImageTexture.new()
            image_texture.create_from_image(samples)
        
            compute_material.set_shader_param("samples", image_texture)
            compute_material.set_shader_param("width", width)
            compute_material.set_shader_param("height", height)
        
            var buffer = MeshDataTool.new()
            buffer.create_from_surface(mesh, 0)
        
            var storage_buffer = StorageBuffer.new()
            storage_buffer.create(buffer.get_vertex_count() * 4 * 4, StorageBuffer.STORAGE_BUFFER)
            compute_material.set_shader_param("MeshBuffer", storage_buffer)
        
            var compute = Compute.new()
            compute.set_shader(compute_shader)
            compute.dispatch(width, height, 1)
        
            # Create the mesh from the buffer
            mesh = ArrayMesh.new()
            var arrays = []
            arrays.resize(ArrayMesh.ARRAY_MAX)
            arrays[ArrayMesh.ARRAY_VERTEX] = buffer.get_vertices()
            mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, arrays)
        
            var mesh_instance = MeshInstance.new()
            mesh_instance.mesh = mesh
            add_child(mesh_instance)

        Copilot: This is a basic example to get you started. You will need to expand the case_index handling in the compute shader to generate the correct vertices for each case. Additionally, you may need to adjust the buffer handling and mesh creation based on your specific requirements.

        Copilot: Feel free to ask if you have any questions or need further assistance!

        Do I need to tell you how ridiculously funny this is on so many levels? 😃

        So what do I do next, fellow prompters? Keep trying? Enroll in a professional prompting course? Or just wait until this time next year?

        its funny how everything i see is getting focussed on AI these days ,
        my youtube algorithm has blown up with AI content since i once watched an AI video doc (how it will kill us, how it will make us better , etc)
        idk what to believe anymore, AI has still not helped me with code nor art.
        i do sometimes think it will replace us tho. but hey what is true and whats not, hard to tell these days.

        • xyz replied to this.
          • Edited

          DJMaesen It's basically useless for any serious production, be it code or art. It's an educational toy for kids at the best. Well, maybe when integrated into a large code base it can serve as a pretty good auto complete.
          There are other fields where it can automate pattern recognition to a large degree, and there it can be pretty useful. However pattern recognition is not what the coding or art are about.

            xyz maybe you need to feed it the correct data? this guy fed the correct blender api calls and it spat out the correct code to run..

            • xyz replied to this.
              • Edited

              kuligs2 How is this useful in any way? This is again an equivalent of writing a bubblesort, with some stupid gui gimmickry on top of it. Let's see how it would deal with an actual problem that is not in the textbook boilerplate domain. Oh wait, the dude in the video tried and it failed and the video abruptly ended with an obligatory "it's not there yet, but imagine..." 😃

              It's just more bullshit and make believe.

              Natural language is one of the worst conceivable human/computer interfaces, once you need to go beyond trivial parametrization. Try to model an original character this way and let us know how it went.