Articles
Long-form writing on tech, culture, and the edges of the internet.
A claim, not a control
GrapheneOS rewrote its Messages app under a privacy and security claim, but the enforcing controls are not named or independently verifiable.
Forty lines freeze your Mac
How the Deathray technique lets an untrusted website freeze an entire Mac by overloading WindowServer, why the browser sandbox can't stop it, and what to do.
Google Ads became a malware distribution channel
Malvertising turns Google's top search ad into a malware delivery channel. How the attack works, why review misses it, and the steps that stop it.
HuggingFace serves a disclosure channel, not a control
HuggingFace's security.txt defines a disclosure channel, not a security control. Publishing it expanded the commitment surface, not the platform's defenses.
Keep the two claims apart
Consumer AI trains on your chats by default. How to tell the real consent problem from unprovable 'secret breakthrough' claims - and what you can control.
Microsoft's new default is Rust
Microsoft made Rust a tier-1 language because memory-safety bugs drove ~70% of its yearly security patches. Here is what the shift means.
The model kept no receipts
The "OpenAI stole my proof" fight is really a provenance gap in AI, and that gap is a safety problem, not just a credit dispute.
Turning off training does not protect your data
OpenAI keeps re-enabling 'allow training.' Why a UI toggle is not a data control, and the gateway-and-contract architecture that makes training exposure impossible by design.
Desert Ant Labs puts inference inside the loop
Fast local models turn inference into a near-zero-cost function call - here is the tiered pipeline pattern, a real support-desk example, and where it breaks.
SWE-2 is the wrong model for almost everything
SWE-2 is a code-execution node, not a generalist replacement. How to eval it against your own repos and where it actually fits in production pipelines.
The weaker model matters more than the smarter one
DeepSeek v4.1 Flash cuts token cost, not the need for validation - use it in cascades, verification loops, and long-context pipelines that hold up in production.
Your defenses are now executing for the attacker.
Forgejo 16.0.3 and earlier carry a critical RCE. The vulnerable version is the exposure, and running a build above the range is the only confirmed mitigation.