
Lead Rust Engineer @krakenpro 🦀 | Maintainer https://xitter.gq/t.co/BwGOa5BpKB | MComp @sheffielduni | Rust Bus Driver
London, UK
Joined February 2011
- Tweets4.5K
- Following512
- Followers1.1K
- Likes5.4K
Rob Ede retweeted
It is insane to me that there are still devs using terminals to prompt their agents
⚠️ Heads-up, maintainers
Hurl repo has been targeted by bad dudes: they create GitHub issues with shell payloads hidden in HTML comments (invisible in the browser).
They were hoping our GH actions run command as-it. It didn't work ou our repo!
Check your projects (use zizmor)
Rob Ede retweeted
Turns out the friction of having to learn photoshop was a crucial firewall protecting society from the terrible taste of small business owners
Rob Ede retweeted
All code will converge on Rust
@marcoow explains why when the cost of building systems in Rust goes down and the end result remains superior to what other stacks produce, all code that can be Rust will eventually be Rust.
→ mainmatter.com/blog/2026/10/…
#rustlang #ai
Rob Ede retweeted
I just want you to know that I used Rust before it was cool. Thank your your attention on this matter.
Rob Ede retweeted
Rust has one serialization library that is Serde. Over the years I collected a bucket list of all the things that I do not enjoy about it. Finally did something about it and finished Deser. Here is a small summary of the why, what and how: lucumr.pocoo.org/2026/9/29/d…
Rob Ede retweeted
IT'S HERE!!! HALO CE (XBOX) IN THE BROWSER!
Features:
✅ WORKING Splitscreen Co-op
✅ WORKING Multiplayer up to 128 players (untested)
❌ NO GEARBOX MASTER CHIEF
Rob Ede retweeted
I might be the only person in the world that likes looking at Rust code. I think it's super pretty.
Rob Ede retweeted
Replying to @BorisJohnson
Bitcoin is not a Ponzi scheme. A Ponzi requires a central operator promising returns and paying early investors with funds from later ones. Bitcoin has no issuer, no promoter, and no guaranteed return—just an open, decentralized monetary network driven by code and market demand.
Rob Ede retweeted
Someone found an RCE on my website yesterday.
CVE-2025-55182.
React2Shell.
I don't have a bug bounty program.
I never asked for a security assessment.
I woke up to a DM: "Hey I found a critical vulnerability in your site. I only ran the exploit to verify it worked. Here's my PayPal for the bounty."
Bounty?
I checked my logs.
Forty-seven requests to my RSC endpoint.
Something, something ... Prototype pollution payloads.
They used the GitHub script.
The one with 2,000 stars.
The one that runs id automatically "for verification purposes."
They spawned a shell on my production server.
uid=1001(nextjs) gid=65533(nogroup)
They took a screenshot.
They posted it on Twitter.
"Popped a Shell on a Live Website 🚀💀 #BugBounty #CVE-2025-55182 #YOLO"
They got 84781 likes.
My customers' data was on that server.
I asked them to delete the screenshots.
They said "I removed the domain name, you should be thanking me."
Thanking them.
For unauthorized access to my production infrastructure.
For running arbitrary commands on systems I own.
For posting proof of exploitation for clout.
They called it "responsible disclosure."
I called my lawyer.
They called me "ungrateful."
I called the FBI.
Now they're in my DMs explaining that "this is how the industry works" and I "don't understand pen testing."
A pen what?
I understand it perfectly.
I understand that running react2shell-ultimate.py against random websites isn't research.
I understand that "I removed the identifying info" doesn't undo the unauthorized access.
I understand that #BugBounty doesn't apply when there's no bounty program.
I understand that finding my site on Shodan doesn't constitute authorization.
Their followers are defending them now.
"Presumption of innocence."
"You don't know if it was authorized."
"The screenshots were redacted."
Three hundred people are calling me a bootlicker for reporting a crime.
Someone said I should be grateful they didn't deploy a cryptominer.
The bar is underground.
I just wanted to run a small Next.js app.
I didn't ask to be someone's proof-of-concept.
I didn't consent to being their "first"
I didn't sign up for an unscheduled penetration test from a stranger with a GitHub account.
There is no safe harbor for spraying public exploits at random websites.
There is no legal protection for "I was just verifying the vulnerability."
There is no ethical framework where unauthorized prototype pollution is a favor.
But sure.
Thank you for your service.
You found a CVE that was already public.
Using a tool someone else wrote.
Against a target that never authorized you.
And you posted about it on main.
For likes.
Hero.
Rob Ede retweeted
Not long ago, I used to have a more optimistic impression of Rust users. I would not have guessed that so many otherwise-judicious people would go for blatantly AI-"maintained" Rust libraries.
The `serde_yml` crate is a fork of a high-quality but unmaintained library. In the fork, the AI has taken initiative to add a big heap of stuff that is variously complete nonsense (docs.rs/serde_yml/0.0.11/ser…, docs.rs/serde_yml/0.0.11/src…) or unsound (docs.rs/serde_yml/0.0.11/ser…). On top of this, the crate's documentation has been broken in docs·rs for the last 5 months because AI hallucinated a nonexistent rustdoc flag into the crate's configuration.
And yet 134 other published packages have chosen to adopt this? Including high-profile competently maintained projects like Jiff (for tests only), axodotdev, Wasmer, MiniJinja, and Holochain. This does not bode well.
The bar for someone to do better at a YAML library is so low.
![screenshot of Undefined Behavior in safe code. fn main() { let a = ".".repeat(100); let emitter = { let mut buf = [0u8; 100]; serde_yml::Serializer::new(&mut buf.as_mut_slice()).emitter }; let s = ".".repeat(100); emitter.into_inner().write_all(&[1u8; 100]).unwrap(); println!("{}\n{}", a, s); } Segmentation fault (core dumped)](https://pbs.twimg.com/media/GiT57JpawAA6Vgo.jpg?name=small&format=webp)
ALT screenshot of Undefined Behavior in safe code. fn main() { let a = ".".repeat(100); let emitter = { let mut buf = [0u8; 100]; serde_yml::Serializer::new(&mut buf.as_mut_slice()).emitter }; let s = ".".repeat(100); emitter.into_inner().write_all(&[1u8; 100]).unwrap(); println!("{}\n{}", a, s); } Segmentation fault (core dumped)
Rob Ede retweeted
A little side project I worked on this year was the design of this new flashlight UI in iOS 18.
Rob Ede retweeted
My interview with Rob Ede (the core maintainer of Actix Web) made it into @ThisWeekInRust 558 this-week-in-rust.org/blog/2…
Rob Ede retweeted
Fresh, home baked podcast content coming right up! Featuring open source maintainence, supply chain security, and lots about the Actix Web framework for Rust.
timclicks.dev/podcast/rob-ed…





















