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.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.
This will backfire tremendously.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.
![]()
Jack Dorsey's Block Cuts Nearly Half of Its Staff In AI Gamble - Slashdot
Jack Dorsey's Block is cutting more than 4,000 jobs, or nearly half its workforce, as part of a deliberate shift toward becoming a smaller, "intelligence-native" company built around AI. The Verge reports: "We're not making this decision because we're in trouble," Dorsey says. "Our business is...slashdot.org
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
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.

managers will be forced to do coding nowAfter 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
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.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.
// 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;
}
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.
// 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 have not, but that is something I'd like to try and may end up doing with my current tasking.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?
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.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
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.”
electrek.co