Sigh... I think it’s time to address some recent controversy.
For the past few months, I've been experimenting with AI coding agents to familiarize myself with this new programming paradigm. The result of that experiment is the samloader-rs project.
I chose "Samsung firmware downloading and flashing" because the problem space is small and self-contained compared to something like Magisk. It’s also genuinely useful to me; none of the existing tools fit my exact needs.
Regardless of what you think of the codebase, actual engineering work went into this. I reverse-engineered the LZ4 data transmission by myself because I didn’t know the brokkr-flash project existed at the time. With no code or docs to reference, I pulled out Ghidra for the first time. I’m the first to admit I’m an assembly noob, so my approach definitely has flaws.
And yes—99% of the code in samloader-rs was written by AI. I have never tried to hide this! But every single commit was reviewed, tested, and tightly guided by me. I drove the development and purposely delegated only the "coding" part to the agents.
The Samsung firmware scene is new to me, and I used AI to catch up to speed so I could make tangible progress. It’s not perfect; AI cannot replace years of human research.
However, seeing people use my learning curve and my use of AI to completely discredit my contribution to this project—and worse, use it to discredit my legacy on Magisk—is incredibly disheartening. I’m just trying to learn, build, and share in an area completely new to me.
I built Magisk on the shoulders of many existing open-source efforts, and today, forks and derivative projects stemming from it are flourishing. To me, open source has always been about learning. It’s deeply saddening to feel discouraged from doing exactly that, simply because I used AI as a tool.
Balancing a full-time job and starting a new family in a foreign country means real life takes a toll, and free time is incredibly sparse. Without these new AI tools, dedicating the time and effort required to dive into a brand-new area of interest would be nearly impossible.
To be honest, I kinda regret open-sourcing samloader-rs. It exposed my lack of knowledge on a new topic and thrust me right into the middle of the AI coding controversy. 🫤
I GOT THE DOMAIN! I FINALLY GOT IT!!!!!!!!!!1 🥳🎉
Paint.NET is now at https://t.co/ZJTUII4bVG!
Well, it will be just as soon as I push all the buttons to migrate content and set up redirects from getpaint.net etc. For now it's just a "hey go here" redirect page.
A fresh Brave install in 2026: sponsored ad wallpapers on new tab page by default (opt out). Brave VPN, News, Talk, Leo (AI), Rewards and other revenue-milking bloat is advertised/pinned by default. Analytics and "phoning home" by default. Google as default search engine in most regions by default. Sponsored search engines like Russian Yandex in CIS countries by default: https://t.co/nCK7ZErytG
Brave has an ad branch that handles advertising within the browser: https://t.co/EwJwKKgWxq. Brave does on-device ad targeting based on cohorts and interests, just like what Chrome used to do and what Google was largely hated for (remember FLoC?). This applies to additional (opt-in) rewarded ads, shipped as part of Brave.
Brave has injected referral IDs to crypto-related URLs entered into the omnibox in the past, intentionally, by design:
https://t.co/hovGMDz8Et
https://t.co/3wdWDEV85H
https://t.co/fo1mD75vAF
Brave also uses dark patterns to drive users away from turning off ads in their browser. For example, an article linked from the "opt out" button in the browser has a wall of text making excuses for ads before the actual steps needed to be taken to disable them: https://t.co/dka1EIMtbw
kind of hypocritical for brave to judge firefox for lesser bullshit, don't you think?
Last year, miHoYo copied my puzzle game Ouros in Zenless Zone Zero.
Because they are a recognized, billion-dollar studio and my game isn't well known, some people are now assuming that their version is the original, and mine is the clone.
I hope this video clears that up.
Unfortunately, I don't use Zig now. Every 1.5-5x human DX productivity boost from Zig features is eclipsed by the 100x boost from coding agents writing Rust:
Allocator interface:
This is my favorite Zig feature, you feel so galaxy brain using a specialized allocator to optimize a code path (e.g. arena, stack fallback etc). The problem in Rust used to be that there was no Allocator interface equivalent and if you wanted a Vec<T> that used a custom allocator you literally had to copy+paste the std version and modify it to use it (this is what Bumpalo did, look at the source). For a long while now there has been an Allocator trait in nightly, and it seems to be good now. Because it is a trait it is static dispatch, vs Zig's which is based on a vtable. Unlike Zig there isn't a community-wide convention of designing data structures to be parametric based on the allocator, but AI changes the game and makes it trivially to copy paste code and change that. I find it works well enough for my use-case.
Arbitrary bit width integers + packed structs:
Another beloved Zig feature of mine. It makes it so easy to do DOD-style CPU cache optimizations and stuff like tagged pointers, NaN boxing, etc. and even made bitflags really easy to make. You could always do this in Rust or any systems programming language but it was really ugly/unergonomic. The least worst option was using some crate like bitfield/bitflags which both rely on proc macro magic to work. Now, with coding agents I literally do not care how annoying it is to write the code by hand.
Comptime:
This is Zig's flashiest feature, no other programming language except maybe for obscure dependent-types langs have compile time evaluation as nice as Zig's. I thought I would miss it a lot, but I actually don't. For me, 95% of comptime usage is to create Zig's version of generic data structures with parametric types. Rust has a better designed type system IMO (see next section). In the remaining 5% of cases, not having comptime sucks. The only reliable way to reach an equivalent is through codegen. I'm making a game right now, and I have hardcoded hitbox geometry data generated from a tool that I want to bake into a data structure. Without comptime, I have to get Claude to write a script that generates the Rust file. However, I don't find myself needing compile time evaluation that much anyway.
Rust's type system:
I think I'd rather trade having comptime for Rust's better-designed type system, especially for bounded polymorphism (traits/typeclasses). Trying to do the equivalent in Zig is a nightmare. Also, I think that Rust's type system allows you to enforce more variants and prevent coding agents from making common mistakes. In my game I use the euclid crate which essentially allows you to not mix up coordinate spaces (very common problem in graphics programming) by creating specialized types for each coordinate space (e.g. Point<Screen> or Point<World>)
Not having to deal with memory issues:
With coding agents allowing 100x more code to be written, this also means you need to scrutinize 100x more Zig code for memory issues. Without formal verification, the surface area of the search space to enumerate to find bugs is just so much larger now. With the magnitude of code being generated now, Rust is even more attractive. Rust's tradeoff was always that it hinders developer productivity especially if you are unfamiliar with borrow checker, but this simply does not matter with coding agents anymore. And if you do use unsafe in Rust there's tools like miri which you can have the coding agent run the code against to make sure it doesn't cause UB or isn't violating Rust's aliasing rules when it comes to unsafe.
I still miss writing Zig and find it to be a great language but I like Rust more and coding agents work with better with it.
I’m looking for the first full-time developer for https://t.co/nprGVKUWBn!
You’d work with me on making new web projects and games for the site. Preferably in nyc
If anyone is interested or has leads dm me or email [email protected]!
YOOO WIRE TENSION LFG
it was a lot simpler than I wanted to make it, but it's working. Last technical hurdle verified.
Let's cut 4-axis WEDM on desktop!!
Tech companies are basically lying to you:
- They compare their new products to ones released MANY years ago (to make it as confusing as possible to figure out how much has actually changed this time)
- They invent new specs that mean absolutely nothing (like how much zoom their phone cameras can do)
- They write “up to” just before telling you how much their new product has improved by (so you can’t sue them when you don’t get those numbers)
And a LOT more
So, I decided it was time to break it down with @MKBHD on YouTube - video live now