• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

The anti-AI thread

Page 31 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

I'll raise you:

30189e2c-a66a-4698-a0d8-1183338dfe24.jpg
 
Yeah, I'm not pretending AI in schools is good (presumably it's obvious that's my stance?), I'm just not going to listen to a guy who's talking about AI while misrepresenting data and spreading a faked AI video in his content.
It's a balance. On one hand the students should learn to use it just like calculators, spreadsheets, grammar control etc. But on the other hand we also need to develop the basic fundamental skills, so they themselves can think, understand and reason without the use of AI. As a skill it is useful to get a lot of things done fast, but as a citizen in society you need to be educated to do your own critical thinking based the knowledge we have been building our society on for millenia.
 
welp, Jack Dorsey has decided quick and massive is the best path to profit maximization. Layoffs have percolated throughout big tech these past couple years, but the fair expectation is that they will only accelerate. And most likely cross over into many other industries.


 
welp, Jack Dorsey has decided quick and massive is the best path to profit maximization. Layoffs have percolated throughout big tech these past couple years, but the fair expectation is that they will only accelerate. And most likely cross over into many other industries.


This will backfire tremendously.
 
pure evil. but this is probably the only way that AI can make a sustained "profit". this plus robotic customer service agent that acts as Artificial Gaslighting Intelligence

And, the worst part about it is that fast food restaurants already can't hire and keep enough employees because of how badly they mistreat their employees.

They better hope their AI can also add fries to that.
 
I hate when I need support and turns out the company uses AI instead of humans. If you have an edge case the AI rarely can help. They are trained mostly on the FAQ and other info that you already would have read by the time you got there. I've cancelled financial accounts over this.
 
I hate when I need support and turns out the company uses AI instead of humans. If you have an edge case the AI rarely can help. They are trained mostly on the FAQ and other info that you already would have read by the time you got there. I've cancelled financial accounts over this.

In my experience, it doesn't even necessarily have to be much of an edge case. I don't find them to be of much utility at all in almost any circumstance.
 

I'm torn between a 'womp womp' response and kind of agreeing that if the topic is meant to be Copilot and all people are doing is throwing around pejoratives, then I'd expect some mod action 🙂
 
I am a software developer and I recently had an experience with Claude code for the first time. I didn't use it but the customer I am working with used it in his free time over 2 weeks to come up with something. I had been working on this application for about 6 months for him and it's moving along at a good pace.

Well in 2 weeks, this dude, with Claude, made a version of the application, with like EVERY SINGLE feature he wanted down the road. And it is pretty damn functional and works well.

I will admit when I saw this, I was like oh shit, this is kind of scary. Thankfully I'm a government contractor so this can't just be used without a lot of integration behind the scenes.

I've been tasked with looking at the code and giving an estimate on how long some integrations would take. He developed this in a nice manner where you can develop plugins that are drop in and it'll find them.

After looking at the code for the past few days, I feel safer about my job as a software developer lol. The code it generates is not very human maintainable, at least not the way he did it. The UI is just one big HTML, JS, and CSS file. It's using raw JS. I am not the most experienced python developer but the backend also had quite a bit of problems as far as making it human maintainable.

I ran into some bugs as well that were very random and tracking down bugs like that would be a chore.

This is a very odd time as a developer lol.
 
After looking at the code for the past few days, I feel safer about my job as a software developer lol. The code it generates is not very human maintainable, at least not the way he did it. The UI is just one big HTML, JS, and CSS file. It's using raw JS. I am not the most experienced python developer but the backend also had quite a bit of problems as far as making it human maintainable.

I ran into some bugs as well that were very random and tracking down bugs like that would be a chore.
managers will be forced to do coding now
 
managers will be forced to do coding now
The way I see it right now, again from this totally anecdotal experience, is that if software is created from the ground up vibe coding by a non developer, it's going to have to stay that way it's life cycle.

The president of my company uses cursor a lot while he develops, and he believes that getting these kinds of tools into actual developers hands is the way of the future, because it makes you that much more efficient. It basically removes all of the time spent on boiler plate stuff and lets you focus on the other parts of the applications. It also is money for writing tests for you cause nobody likes writing tests lol.
 
The way I see it right now, again from this totally anecdotal experience, is that if software is created from the ground up vibe coding by a non developer, it's going to have to stay that way it's life cycle.

The president of my company uses cursor a lot while he develops, and he believes that getting these kinds of tools into actual developers hands is the way of the future, because it makes you that much more efficient. It basically removes all of the time spent on boiler plate stuff and lets you focus on the other parts of the applications. It also is money for writing tests for you cause nobody likes writing tests lol.

I would expect that the quality and readability of the code might improve over time, once they improve on the right type of model training data.

Out of curiosity, have you ever tried to have it generate a batch of code to do something, and then subsequently selected the generated code and asked it to improve overall readability of its own generated code?

Or, would doing that just make a bigger mess?
 
How about using AI to generate unmaintainable code. Could have fun with that. 😀


Code:
// UltimateEnterpriseHelloWorld v2.1.337 (certified ISO-9001 compliant)
#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <optional>
#include <variant>
#include <any>
#include <functional>
#include <algorithm>
#include <numeric>
#include <execution>
#include <ranges>
#include <format>
#include <print>                    // C++23
#include <span>
#include <source_location>
#include <stacktrace>
#include <expected>                 // C++23
#include <generator>                // C++23
#include <mdspan>                   // C++26 / experimental
#include <bit>
#include <compare>
#include <coroutine>
#include <semaphore>
#include <latch>
#include <barrier>
#include <stop_token>
#include <syncstream>
#include <flat_map>
#include <flat_set>
#include <text_encoding>            // C++26
#include <hazard_pointer>           // utter madness

using namespace std::literals;
using std::cout;
using std::string;
using std::unique_ptr;
using std::make_unique;
using std::optional;
using std::nullopt;
using std::variant;
using std::monostate;
using std::any;
using std::format;
using std::print;
using std::span;
using std::source_location;
using std::stacktrace;

// ──────────────────────────────────────────────────────────────────────────────
// Abstract Factory → Builder → Singleton → CRTP → Visitor → Type Erasure soup
// ──────────────────────────────────────────────────────────────────────────────

template<typename T>
concept Stringy = std::convertible_to<T, std::string_view>;

template<Stringy T>
class [[nodiscard]] HelloMessageBuilder {
private:
    std::vector<std::string> parts;
    std::locale loc{std::locale::classic()};
    
public:
    HelloMessageBuilder& add_greeting(T s) & noexcept {
        parts.emplace_back(std::string(s));
        return *this;
    }

    HelloMessageBuilder&& add_greeting(T s) && noexcept {
        parts.emplace_back(std::string(s));
        return std::move(*this);
    }

    [[nodiscard]] std::string build() const & {
        return std::accumulate(
            parts.begin(), parts.end(), 
            " "s,
            [](const auto& a, const auto& b) { return a + b; }
        ) | std::views::drop(1) | std::ranges::to<std::string>();
    }

    [[nodiscard]] std::string build() && {
        return std::move(*this).build();
    }
};

// Policy-based singleton (because one global isn't enterprise enough)
template<typename T, typename Tag = void>
class Singleton {
    inline static std::unique_ptr<T> instance;
public:
    static T& get() {
        if (!instance) [[unlikely]] {
            instance = std::make_unique<T>();
        }
        return *instance;
    }
    Singleton() = delete;
};

// CRTP message renderer (of course we need this)
template<typename Derived>
struct MessageRenderer {
    void render(std::string_view msg) const {
        static_cast<const Derived*>(this)->do_render(msg);
    }
};

struct FancyCoutRenderer final : MessageRenderer<FancyCoutRenderer> {
    void do_render(std::string_view msg) const {
        std::osyncstream sync_cout{std::cout};
        sync_cout << std::format("[{:%Y-%m-%d %H:%M:%S}] ", 
                                std::chrono::floor<std::chrono::seconds>(
                                    std::chrono::system_clock::now()))
                  << msg << '\n';
    }
};

// Type-erased hellobehavior visitor
class IHelloBehavior {
public:
    virtual ~IHelloBehavior() = default;
    virtual void execute() const = 0;
};

class ClassicHello final : public IHelloBehavior {
    void execute() const override {
        print("Hello, world!\n");
    }
};

class UnicodeHello final : public IHelloBehavior {
    void execute() const override {
        print("こんにちは、世界! 🌍\n");
    }
};

// ──────────────────────────────────────────────────────────────────────────────
// The actual program (only 47 design patterns deep)
// ──────────────────────────────────────────────────────────────────────────────

int main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
try
{
    using HelloSingleton = Singleton<
        HelloMessageBuilder<std::string_view>,
        struct HelloTag
    >;

    auto& builder = HelloSingleton::get();

    builder
        .add_greeting("Hell"sv)
        .add_greeting("o"sv)
        .add_greeting(","sv)
        .add_greeting(" "sv)
        .add_greeting("wor"sv)
        .add_greeting("ld"sv)
        .add_greeting("!"sv);

    std::variant<
        ClassicHello,
        UnicodeHello
    > behavior = (std::rand() % 2 == 0)
                 ? std::variant<ClassicHello, UnicodeHello>{ClassicHello{}}
                 : UnicodeHello{};

    std::visit([](const auto& b) { b.execute(); }, behavior);

    // mandatory enterprise logging
    FancyCoutRenderer{}.render(
        std::format("Message construction completed. Entropy level: {:.3f}",
                    std::numbers::e_v<float>)
    );

    // completely useless but very C++26-looking range pipeline
    auto result = std::views::iota(0, 1)
                | std::views::transform([](int) { return "done"sv; })
                | std::ranges::to<std::vector>();

    [[unlikely]] if (result.empty()) {
        std::unreachable();
    }

    return EXIT_SUCCESS;
}
catch (const std::exception& e)
{
    std::print(std::cerr, "Critical Hello World subsystem failure: {}\n", e.what());
    return EXIT_FAILURE;
}
catch (...)
{
    std::print(std::cerr, "Non-standard catastrophe in Hello World\n");
    std::print(std::cerr, "Stack trace:\n{}\n", std::stacktrace::current());
    return 42;
}


I couldn't actually get it to compile, think it's because my compiler does not support c++26.
 
How about using AI to generate unmaintainable code. Could have fun with that. 😀


Code:
// UltimateEnterpriseHelloWorld v2.1.337 (certified ISO-9001 compliant)
#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <optional>
#include <variant>
#include <any>
#include <functional>
#include <algorithm>
#include <numeric>
#include <execution>
#include <ranges>
#include <format>
#include <print>                    // C++23
#include <span>
#include <source_location>
#include <stacktrace>
#include <expected>                 // C++23
#include <generator>                // C++23
#include <mdspan>                   // C++26 / experimental
#include <bit>
#include <compare>
#include <coroutine>
#include <semaphore>
#include <latch>
#include <barrier>
#include <stop_token>
#include <syncstream>
#include <flat_map>
#include <flat_set>
#include <text_encoding>            // C++26
#include <hazard_pointer>           // utter madness

using namespace std::literals;
using std::cout;
using std::string;
using std::unique_ptr;
using std::make_unique;
using std::optional;
using std::nullopt;
using std::variant;
using std::monostate;
using std::any;
using std::format;
using std::print;
using std::span;
using std::source_location;
using std::stacktrace;

// ──────────────────────────────────────────────────────────────────────────────
// Abstract Factory → Builder → Singleton → CRTP → Visitor → Type Erasure soup
// ──────────────────────────────────────────────────────────────────────────────

template<typename T>
concept Stringy = std::convertible_to<T, std::string_view>;

template<Stringy T>
class [[nodiscard]] HelloMessageBuilder {
private:
    std::vector<std::string> parts;
    std::locale loc{std::locale::classic()};
   
public:
    HelloMessageBuilder& add_greeting(T s) & noexcept {
        parts.emplace_back(std::string(s));
        return *this;
    }

    HelloMessageBuilder&& add_greeting(T s) && noexcept {
        parts.emplace_back(std::string(s));
        return std::move(*this);
    }

    [[nodiscard]] std::string build() const & {
        return std::accumulate(
            parts.begin(), parts.end(),
            " "s,
            [](const auto& a, const auto& b) { return a + b; }
        ) | std::views::drop(1) | std::ranges::to<std::string>();
    }

    [[nodiscard]] std::string build() && {
        return std::move(*this).build();
    }
};

// Policy-based singleton (because one global isn't enterprise enough)
template<typename T, typename Tag = void>
class Singleton {
    inline static std::unique_ptr<T> instance;
public:
    static T& get() {
        if (!instance) [[unlikely]] {
            instance = std::make_unique<T>();
        }
        return *instance;
    }
    Singleton() = delete;
};

// CRTP message renderer (of course we need this)
template<typename Derived>
struct MessageRenderer {
    void render(std::string_view msg) const {
        static_cast<const Derived*>(this)->do_render(msg);
    }
};

struct FancyCoutRenderer final : MessageRenderer<FancyCoutRenderer> {
    void do_render(std::string_view msg) const {
        std::osyncstream sync_cout{std::cout};
        sync_cout << std::format("[{:%Y-%m-%d %H:%M:%S}] ",
                                std::chrono::floor<std::chrono::seconds>(
                                    std::chrono::system_clock::now()))
                  << msg << '\n';
    }
};

// Type-erased hellobehavior visitor
class IHelloBehavior {
public:
    virtual ~IHelloBehavior() = default;
    virtual void execute() const = 0;
};

class ClassicHello final : public IHelloBehavior {
    void execute() const override {
        print("Hello, world!\n");
    }
};

class UnicodeHello final : public IHelloBehavior {
    void execute() const override {
        print("こんにちは、世界! 🌍\n");
    }
};

// ──────────────────────────────────────────────────────────────────────────────
// The actual program (only 47 design patterns deep)
// ──────────────────────────────────────────────────────────────────────────────

int main([[maybe_unused]] int argc, [[maybe_unused]] char* argv[])
try
{
    using HelloSingleton = Singleton<
        HelloMessageBuilder<std::string_view>,
        struct HelloTag
    >;

    auto& builder = HelloSingleton::get();

    builder
        .add_greeting("Hell"sv)
        .add_greeting("o"sv)
        .add_greeting(","sv)
        .add_greeting(" "sv)
        .add_greeting("wor"sv)
        .add_greeting("ld"sv)
        .add_greeting("!"sv);

    std::variant<
        ClassicHello,
        UnicodeHello
    > behavior = (std::rand() % 2 == 0)
                 ? std::variant<ClassicHello, UnicodeHello>{ClassicHello{}}
                 : UnicodeHello{};

    std::visit([](const auto& b) { b.execute(); }, behavior);

    // mandatory enterprise logging
    FancyCoutRenderer{}.render(
        std::format("Message construction completed. Entropy level: {:.3f}",
                    std::numbers::e_v<float>)
    );

    // completely useless but very C++26-looking range pipeline
    auto result = std::views::iota(0, 1)
                | std::views::transform([](int) { return "done"sv; })
                | std::ranges::to<std::vector>();

    [[unlikely]] if (result.empty()) {
        std::unreachable();
    }

    return EXIT_SUCCESS;
}
catch (const std::exception& e)
{
    std::print(std::cerr, "Critical Hello World subsystem failure: {}\n", e.what());
    return EXIT_FAILURE;
}
catch (...)
{
    std::print(std::cerr, "Non-standard catastrophe in Hello World\n");
    std::print(std::cerr, "Stack trace:\n{}\n", std::stacktrace::current());
    return 42;
}


I couldn't actually get it to compile, think it's because my compiler does not support c++26.

Did you try to re-ask the question and specify that it generate the code in an older version of C++ (i.e. the one supported by your compiler) to see what it does?
 
Yeah got it to work when downgraded it to older C++ version.

Code:
// UltimateEnterpriseHelloWorld v1.9.2019 — GCC 9 / C++14 Edition (FIXED)
// Over-engineered Hello World — now with correct CRTP access

#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <mutex>
#include <chrono>
#include <iomanip>
#include <sstream>
#include <cstdlib>   // rand
#include <stdexcept>

using namespace std::literals::string_literals;
using std::cout;
using std::endl;
using std::string;
using std::unique_ptr;
using std::make_unique;
using std::mutex;
using std::lock_guard;

// Policy-based singleton (because plain statics are for peasants)
template<typename T, typename Tag = void>
class Singleton {
    static unique_ptr<T> instance;
    static mutex mtx;
public:
    static T& get() {
        lock_guard<mutex> lk(mtx);
        if (!instance) {
            instance = make_unique<T>();
        }
        return *instance;
    }
    Singleton() = delete;
    ~Singleton() = delete;
};

template<typename T, typename Tag>
unique_ptr<T> Singleton<T, Tag>::instance;

template<typename T, typename Tag>
mutex Singleton<T, Tag>::mtx;

// Builder — because += is not scalable
class HelloMessageBuilder {
private:
    std::vector<string> parts;

public:
    HelloMessageBuilder& append(const string& s) {
        parts.push_back(s);
        return *this;
    }

    string build() const {
        if (parts.empty()) return "";

        string result = parts[0];
        for (size_t i = 1; i < parts.size(); ++i) {
            result += parts[i];
        }
        return result;
    }
};

// CRTP renderer — now with protected access (the actual fix)
template<typename Derived>
struct MessageRenderer {
    void render(const string& message) const {
        static_cast<const Derived*>(this)->do_render(message);
    }
};

struct ThreadSafeConsoleRenderer : MessageRenderer<ThreadSafeConsoleRenderer> {
private:
    mutable mutex mtx;

public:   // ← This is the important change
    void do_render(const string& msg) const {
        lock_guard<mutex> lk(mtx);

        auto now = std::chrono::system_clock::now();
        auto time_t = std::chrono::system_clock::to_time_t(now);
        std::tm local_tm = *std::localtime(&time_t);

        cout << "["
             << std::put_time(&local_tm, "%Y-%m-%d %H:%M:%S")
             << "] " << msg << '\n';
    }
};

// Strategy pattern (because switch statements are so 1998)
class IHelloStrategy {
public:
    virtual ~IHelloStrategy() {}
    virtual void execute() const = 0;
};

class ClassicHello : public IHelloStrategy {
public:
    void execute() const {
        cout << "Hello, world!\n";
    }
};

class UnicodeHello : public IHelloStrategy {
public:
    void execute() const {
        cout << "こんにちは、世界!  🌍\n";
    }
};

// ──────────────────────────────────────────────
// MAIN — where all the unnecessary abstraction lives
// ──────────────────────────────────────────────

int main(int /*argc*/, char* /*argv*/[]) {
    try {
        typedef Singleton<HelloMessageBuilder, struct HelloTag> HelloBuilderSingleton;

        HelloMessageBuilder& builder = HelloBuilderSingleton::get();

        builder
            .append("Hell")
            .append("o")
            .append(",")
            .append(" ")
            .append("wor")
            .append("ld")
            .append("!");

        string message = builder.build();

        // Random strategy — because business value
        IHelloStrategy* strategy = nullptr;
        if (std::rand() % 2 == 0) {
            static ClassicHello classic;
            strategy = &classic;
        } else {
            static UnicodeHello unicode;
            strategy = &unicode;
        }

        strategy->execute();

        // Mandatory enterprise logging
        ThreadSafeConsoleRenderer renderer;
        std::ostringstream oss;
        oss << "Message assembly pipeline completed. "
            << "Fragment count: " << message.size() << ". "
            << "Approximate entropy: 2.7183";
        renderer.render(oss.str());

        return EXIT_SUCCESS;
    }
    catch (const std::exception& ex) {
        cout << "CRITICAL FAILURE in Hello World core subsystem: "
             << ex.what() << '\n';
        return EXIT_FAILURE;
    }
    catch (...) {
        cout << "Non-recoverable catastrophe in Hello World process\n";
        return 42;
    }
}
 
I would expect that the quality and readability of the code might improve over time, once they improve on the right type of model training data.

Out of curiosity, have you ever tried to have it generate a batch of code to do something, and then subsequently selected the generated code and asked it to improve overall readability of its own generated code?

Or, would doing that just make a bigger mess?
I have not, but that is something I'd like to try and may end up doing with my current tasking.

I'd be curious to see what happens if you just give it a simple prompt like "hey convert all this to React" and see how it goes.

Because it could super powerful to be able to prototype stuff up like that, and then hand it off to developers to start tweaking and integrating it.

But that is simply not possible with my example where you have these huge ass html and js files.
 
I was having a little too much fun with this and created code that locked up my whole machine. The AI has a sense of humour. Seriously though, that last code will crash your machine if you try it lol.

The whole convo: https://x.com/i/grok/share/7568f4fedd8445e295b32acac96dc63a

View attachment 139188
Gosh, how impressive that Herr Musk's tailored anti-woke AI picked up on what you were putting down and diligently performed the role of sycophant, such unexpected, many wow.
 
You know, another thing the AI sycophants aren't talking about is what happens when everything is finally made dependent on AI to operate. AI datacenters will then become THE prime high-priority targets for anyone wanting to disrupt an economy (such as by things like targeted drone attacks). Even more so than some military targets.

And, it isn't like you can hide the fracking things.


Granted, this was just an AWS site, but it is definitely foreshadowing the future.
 
Groooooooooooooooss


Groooooooooooooooss


Grooooooooooooooossssssssssssssssssssss

The reality can be messy. Meta contractors based in Nairobi, Kenya, told Swedish newspapers Svenska Dagbladet and Göteborgs-Posten in a recently published joint investigation that they’re being told to review highly sensitive and intimate data.

“In some videos you can see someone going to the toilet, or getting undressed,” one contractor for a company called Sama said. “I don’t think they know, because if they knew they wouldn’t be recording.”

This happened with Tesla in the past too:


Personally:

1. I run non-cloud security cameras

2. I use Tailscale private mesh VPN

3. I even disconnect my Webcam when not in use (USB hub with physical power switches per USB port)
 
Back
Top