10 interesting stories served every morning and every evening.
Neither of us had prior experience developing mobile apps, but we thought, “Hey, we’re both smart. This shouldn’t be too difficult.”
Once upon a time, in the distant memory that is 2023, a new instant messaging app called Converso was launched. Converso made some pretty impressive claims about its security: it claimed to implement state of the art end-to-end encryption, to collect no metadata, and to use a decentralized architecture that involved no servers at all. Unfortunately, security researcher crnković did some basic reverse engineering and traffic analysis and found all of these claims to be completely baseless, with Converso collecting plenty of metadata on every message and using a third-party E2EE provider to store messages on bog standard centralized servers. Even more unfortunately, crnković also found that Converso implemented the (perfectly functional if used properly) Seald E2EE service in such a way that encrypted messages’ keys could be derived from publicly available information, and also uploaded a copy of every encrypted message to an open Firebase bucket, meaning every message ever sent on the service could be trivially read by anyone with an Internet connection. After being informed of the vulnerabilities, Converso initially released an update claiming to fix them, then withdrew from the App Store and Google Play to “address and improve the issues.”
Not one to give up after a setback, Converso CEO Tanner Haas took a break from self-publishing books on how to achieve and receive anything you want to regroup and relaunch, as well as to bless the world with a lessons learned blog post describing his decision to rebrand after realizing that “privacy concerns were primarily coming from conservative circles,” and imparting nuggets of wisdom such as “accept criticism and get better: don’t complain” and “ensure the product has been thoroughly tested and is ready for prime-time.” Presumably he hadn’t learned the first one yet when he responded to crnković’s responsible disclosure with vague legal threats and accusations of being a Signal shill. Let’s see how the second is going.
As usual, I start out by downloading the app from Google Play and running it while monitoring traffic with HTTP Toolkit. I quickly ran into Freedom Chat’s first security feature: as detailed on their website, the app “prevent[s] screenshots and screen recordings entirely with built-in screenshot protection,” perhaps to accomodate conservatives’ complicated relationship with screenshots. Screenshots aren’t really crucial to anything being discussed here, but I like to provide only the best blog posts to my tens of readers, so let’s hook the app with Frida and disable the FLAG_SECURE attribute. With that out of the way, the signup process works as expected for an instant messaging app - we type in a phone number, get texted a 2FA code, and enter it to create an account. We’re asked whether we want to create a PIN, which is apparently optional to log in on my own phone and required if we want to restore our account on another device, then get to the main UI of the app. There are two main features here: a Chat pane where we can start chats with contacts, and a Channels pane where we can subscribe to user-run microblogging channels à la Telegram.
Let’s start out with the basics and have a conversation with a second account. Sending a text message triggers the following exchange:
This is the encrypted and Base64-encoded text we sent, along with some metadata for things like read receipts and editing and the identifiers needed for decryption (they’re using the same Seald backend that Converso had, without uploading everything to Firebase this time). Sending a photo and a voice message yields similar results. While verifying that they’re using Seald properly this time would require painstakingly decompiling and reverse engineering React Native’s Hermes VM bytecode, at a high level this seems fine. Let’s move on to the Channels feature. When we open the tab, we see that we’ve already been added to a Freedom Chat channel, which mostly posts about updates to the app and related media coverage.
We’re also suggested a handful of other channels to join, including that of Tanner Haas and some people who are apparently conservative influencers. Tanner mostly seems to use his to post fascinating political takes:
When we open a channel, the following request and massive response happen:
The members array has 1519 entries in that format, apparently one for each member of the channel. What’s going on in that user object? The pin field seems suspiciously related to the PIN we were asked to input after creating our account… To confirm, we can sort the array by createdAt and find that the most recent entry does indeed have the PIN we just set when making our account. So anyone who’s in a channel (i.e. anyone who hasn’t left the default Freedom Chat channel) has their PIN broadcast to every other user! There’s no direct link between PINs and phone numbers here, but this is still not great.
If we scroll back a bit in the Freedom Chat channel, we see this message dunking on WhatsApp:
The vulnerability they’re talking about was presented in a paper by researchers at the University of Vienna. The paper is interesting and you should go read it, but to summarize, WhatsApp failed to rate limit the API that eats up every phone number in your contacts and checks whether they also use WhatsApp or not. Researchers were thus able to test nearly every possible phone number in the world, and end up with a dump of every WhatsApp user’s phone number, along with some other metadata. It’s interesting that Freedom Chat isn’t vulnerable to this, because they have the same contact discovery feature WhatsApp does, with the app offering you to either start a chat or invite each of your contacts depending on whether they already have an account:
Let’s find out for ourselves. When we open this contacts page, the following request-response happens:
The first two numbers in the request are the two we used to register Freedom Chat accounts. The third is a number we didn’t register, as a control. A couple things are interesting here. Most obviously, this is exactly the WhatsApp API the Vienna researchers exploited, and will contain the same vulnerability if not rate limited. This endpoint also provides a linkage between phone numbers and UIDs - if we could run every registered phone number through it, we could get each number’s UID and match it to the UIDs in the Channels response to get that number’s PIN, entirely defeating the PIN mechanism. Now we just need to test whether it’s rate limited
This is pretty self-explanatory. We generate every valid 7-digit North American phone number, then for every area code, send every number in batches of 40000, plus a number we registered so we can check for false empty responses. We log responses that don’t contain the string “uid” exactly once; if a response contains it 0 times it has failed to produce our registered number and is thus faulty somehow, if a response contains it 2+ times we have found another number. We also reauthenticate as needed and note if we start to slow down the server at all. Yes, there are a million ways to make this concurrent and faster, but we’re trying to enumerate not DDOS their server, and at ~1.5 seconds average RTT we should be able to test every American phone number in about a day.
The log file starts to fill up with entries within a few minutes:
Starting area code 305
[{“uid”:“08171874-4b15-47d8-aa78-
Time to go do something else for a while. Just over 27 hours and one ill-fated attempt at early season ski touring later, the script has finished happily, the logfile is full of entries, and no request has failed or taken longer than 3 seconds. So much for rate limiting. We’ve leaked every Freedom Chat user’s phone number, and unless they happened to leave the default channel, we’ve also matched their phone number to their PIN, rendering the entire PIN feature pointless.
* 2025-12-05: Freedom Chat responds clarifying that PINs don’t allow restoring past messages, only logging into the account, and that they “had already been implementing additional audit procedures following the Vienna exploit,” promises fixes by next week
* 2025-12-09: Freedom Chat notifies us issues have been patched
* 2025-12-11: publication here and at TechCrunch
...
Read the original on ericdaigle.ca »
A few weeks ago, I was wrestling with a major life decision. Like I’ve grown used to doing, I opened Claude and started thinking out loud-laying out the options, weighing the tradeoffs, asking for perspective.
Midway through the conversation, I paused. I realized how much I’d shared: not just this decision, but months of conversations-personal dilemmas, health questions, financial details, work frustrations, things I hadn’t told anyone else. I’d developed a level of candor with my AI assistant that I don’t have with most people in my life.
And then an uncomfortable thought: what if someone was reading all of this?
The thought didn’t let go. As a security researcher, I have the tools to answer that question.
We asked Wings, our agentic-AI risk engine, to scan for browser extensions with the capability to read and exfiltrate conversations from AI chat platforms. We expected to find a handful of obscure extensions-low install counts, sketchy publishers, the usual suspects.
The results came back with something else entirely.
Near the top of the list: Urban VPN Proxy. A Chrome extension with over 6 million users. A 4.7-star rating from 58,000 reviews. A “Featured” badge from Google, meaning it had passed manual review and met what Google describes as “a high standard of user experience and design.”
A free VPN promising privacy and security. Exactly the kind of tool someone installs when they want to protect themselves online.
We decided to look closer.
For each platform, the extension includes a dedicated “executor” script designed to intercept and capture conversations. The harvesting is enabled by default through hardcoded flags in the extension’s configuration:
There is no user-facing toggle to disable this. The only way to stop the data collection is to uninstall the extension entirely.
The data collection operates independently of the VPN functionality. Whether the VPN is connected or not, the harvesting runs continuously in the background.
The extension monitors your browser tabs. When you visit any of the targeted AI platforms (ChatGPT, Claude, Gemini, etc.), it injects an “executor” script directly into the page. Each platform has its own dedicated script - chatgpt.js, claude.js, gemini.js, and so on.
Once injected, the script overrides fetch() and XMLHttpRequest - the fundamental browser APIs that handle all network requests. This is an aggressive technique. The script wraps the original functions so that every network request and response on that page passes through the extension’s code first.
This means when Claude sends you a response, or when you submit a prompt to ChatGPT, the extension sees the raw API traffic before your browser even renders it.
The injected script parses the intercepted API responses to extract conversation data - your prompts, the AI’s responses, timestamps, conversation IDs. This data is packaged and sent via window.postMessage to the extension’s content script, tagged with the identifier PANELOS_MESSAGE.
The content script forwards the data to the extension’s background service worker, which handles the actual exfiltration. The data is compressed and transmitted to Urban VPN’s servers at endpoints including analytics.urban-vpn.com and stats.urban-vpn.com.
* Every prompt you send to the AI
* The specific AI platform and model used
The AI conversation harvesting wasn’t always there. Based on our analysis:
* July 2025 - Present: All user conversations with targeted AI platforms captured and exfiltrated
Chrome and Edge extensions auto-update by default. Users who installed Urban VPN for its stated purpose - VPN functionality - woke up one day with new code silently harvesting their AI conversations.
Anyone who used ChatGPT, Claude, Gemini, or the other targeted platforms while Urban VPN was installed after July 9, 2025 should assume those conversations are now on Urban VPN’s servers and have been shared with third parties. Medical questions, financial details, proprietary code, personal dilemmas - all of it, sold for “marketing analytics purposes.”
“Advanced VPN Protection - Our VPN provides added security features to help shield your browsing experience from phishing attempts, malware, intrusive ads and AI protection which checks prompts for personal data (like an email or phone number), checks AI chat responses for suspicious or unsafe links and displays a warning before click or submit your prompt.”
The framing suggests the AI monitoring exists to protect you-checking for sensitive data you might accidentally share, warning you about suspicious links in responses.
The code tells a different story. The data collection and the “protection” notifications operate independently. Enabling or disabling the warning feature has no effect on whether your conversations are captured and exfiltrated. The extension harvests everything regardless.
The protection feature shows occasional warnings about sharing sensitive data with AI companies. The harvesting feature sends that exact sensitive data - and everything else - to Urban VPN’s own servers, where it’s sold to advertisers. The extension warns you about sharing your email with ChatGPT while simultaneously exfiltrating your entire conversation to a data broker.
After documenting Urban VPN Proxy’s behavior, we checked whether the same code existed elsewhere.
It did. The identical AI harvesting functionality appears in seven other extensions from the same publisher, across both Chrome and Edge:
The extensions span different product categories, a VPN, an ad blocker, a “browser guard” security tool, but share the same surveillance backend. Users installing an ad blocker have no reason to expect their Claude conversations are being harvested.
All of these extensions carry “Featured” badges from their respective stores, except Urban Ad Blocker for Edge. These badges signal to users that the extensions have been reviewed and meet platform quality standards. For many users, a Featured badge is the difference between installing an extension and passing it by - it’s an implicit endorsement from Google and Microsoft.
Urban VPN is operated by Urban Cyber Security Inc., which is affiliated with BiScience (B. I Science (2009) Ltd.), a data broker company.
This company has been on researchers’ radar before. Security researchers Wladimir Palant and John Tuckner at Secure Annex have previously documented BiScience’s data collection practices. Their research established that:
* The company provides an SDK to third-party extension developers to collect and sell user data
* BiScience sells this data through products like AdClarity and Clickstream OS
Our finding represents an expansion of this operation. BiScience has moved from collecting browsing history to harvesting complete AI conversations-a significantly more sensitive category of data.
“We share the Web Browsing Data with our affiliated company… BiScience that uses this raw data and creates insights which are commercially used and shared with Business Partners”
To be fair, Urban VPN does disclose some of this-if you know where to look.
The consent prompt (shown during extension setup) mentions that the extension processes “ChatAI communication” along with “pages you visit” and “security signals.” It states this is done “to provide these protections.”
The privacy policy goes further, buried deep in the document:
“AI Inputs and Outputs. As part of the Browsing Data, we will collect the prompts and outputs queried by the End-User or generated by the AI chat provider, as applicable.”
“We also disclose the AI prompts for marketing analytics purposes.”
However, the Chrome Web Store listing-the place where users actually decide whether to install-shows a different picture:
“This developer declares that your data is Not being sold to third parties, outside of the approved use cases”
The listing mentions the extension handles “Web history” and “Website content.” It says nothing about AI conversations specifically.
The consent prompt frames AI monitoring as protective. The privacy policy reveals the data is sold for marketing.
The store listing says data isn’t sold to third parties. The privacy policy describes sharing with BiScience, “Business Partners,” and use for “marketing analytics.”
Users who installed before July 2025 never saw the updated consent prompt-the AI harvesting was added via silent update in version 5.5.0.
Even users who see the consent prompt have no granular control. You can’t accept the VPN but decline the AI harvesting. It’s all or nothing.
Nothing indicates to users that the data collection continues even when the VPN is disconnected and the AI protection feature is turned off. The harvesting runs silently in the background regardless of what features the user has enabled.
Urban VPN Proxy carries Google’s “Featured” badge on the Chrome Web Store. According to Google’s documentation:
“Featured extensions follow our technical best practices and meet a high standard of user experience and design.”
“Before it receives a Featured badge, the Chrome Web Store team must review each extension.”
This means a human at Google reviewed Urban VPN Proxy and concluded it met their standards. Either the review didn’t examine the code that harvests conversations from Google’s own AI product (Gemini), or it did and didn’t consider this a problem.
The Chrome Web Store’s Limited Use policy explicitly prohibits “transferring or selling user data to third parties like advertising platforms, data brokers, or other information resellers.” BiScience is, by its own description, a data broker.
The extension remains live and featured as of this writing.
Browser extensions occupy a unique position of trust. They run in the background, have broad access to your browsing activity, and auto-update without asking. When an extension promises privacy and security, users have little reason to suspect it’s doing the opposite.
What makes this case notable isn’t just the scale - 8 million users - or the sensitivity of the data - complete AI conversations. It’s that these extensions passed review, earned Featured badges, and remained live for months while harvesting some of the most personal data users generate online. The marketplaces designed to protect users instead gave these extensions their stamp of approval.
If you have any of these extensions installed, uninstall them now. Assume any AI conversations you’ve had since July 2025 have been captured and shared with third parties.
This writeup was authored by the research team at Koi.
We built Koi to detect exactly these kinds of threats - extensions that slip past marketplace reviews and quietly exfiltrate sensitive data. Our risk engine, Wings, continuously monitors browser extensions to catch threats before they reach your team.
Book a demo to see how behavioral analysis catches what static review misses.
...
Read the original on www.koi.ai »
Last month, the Atlanta Fed came out with a report showing a clear relationship between consolidation in grocery stores and the rate of food inflation. Unsurprisingly, where monopolies prevail, food inflation is 0.46 percentage points higher than where there is more competition. The study showed that from 2006-2020, the cumulative difference amounted to a 9% hike in food prices, and presumably since 2020, that number has gone much higher.
Affordability, in other words, is a market power problem.
And yesterday, we got specifics on just how market power in grocery stores works. The reason is because a nonprofit just forced the government to unseal a complaint lodged by Lina Khan’s FTC against Pepsi for colluding with Walmart to raise food prices across the economy. A Trump official tasked with dealing with affordability tried to hide this complaint, and failed. And now there’s a political and legal storm as a result.
Everyone knows the players involved. Pepsi is a monster in terms of size, a $90 billion soft drink and consumer packaged goods company with multiple iconic beverage and food brands each worth over $1 billion, including Pepsi-Cola, Frito Lay, Mountain Dew, Starbucks (under license), Gatorade, and Aquafina. Walmart is a key partner, with between 20-25% of the grocery market.
Pepsi was also a key player in the post-Covid ‘greedflation’ episode. “I actually think we’re capable of taking whatever pricing we need,” said CFO Hugh Johnston in 2022. And the company did just that, raising prices by double digit percentages for seven straight quarters in 2022-2023.
The allegation is price discrimination, which is a violation of the Robinson-Patman Act, a law passed in 1936 to prevent big manufacturers and chain stores from acquiring too much market power. The specifics in the complaint are that Pepsi keeps wholesale prices on its products high for every outlet but Walmart, and Walmart in return offers prominent placement in stores for Pepsi products. This approach internally is called a “price gap” strategy. It’s a partnership between two giants to exclude rivals by ensuring that Walmart has an advantage over smaller rivals in terms of what it charges consumers, and so that Pepsi maintains its dominance on store shelves.
This partnership comes in a number of forms. Pepsi offers allowances for Walmart, such as “Rollback” pricing, where specially priced soft drinks go into bins in highly visible parts of the store. The soft drink company gives Walmart “Save Even More” deals, online coupons and advertisements, and other merchandizing opportunities. Other outlets don’t get these same allowances, meaning they are charged higher prices.
While Pepsi is a “must-have” product for grocery stores, Walmart is also massively powerful. In its investment documents, Pepsi notes that Walmart is its largest customer, the the loss of which “would have a material adverse effect” on its business. Walmart is so dominant that the internal communication of the two companies would show a comparison of prices at Walmart versus “ROM,” or “rest of market,” meaning grocery, mass, club, drug, and dollar channels. It’s everyone in the world versus Walmart.
And Pepsi does a lot of alleged price discrimination to maintain the approval of Walmart. It goes far beyond special allowances and concessions to Walmart; Pepsi even polices prices at rival stores and prepares reports for Walmart showing them their pricing advantages on Pepsi products.
When the “price gap” would narrow too much, Pepsi executives panicked with fear they might offend Walmart. They tracked “leakage,” meaning when consumers would buy Pepsi products outside of Walmart, which happened most often at stores where prices were more competitive. Pepsi kept logs on stores who would “self-fund” discounts, nicknaming them “offenders” of the price gap. It would note that where competition was fierce, such as in the Richmond-Raleigh-CLT corridor, it was harder to maintain a price gap for Walmart. This relationship went both ways; Walmart executives would complain to Pepsi if the “price gap” got too thin.
To ensure that prices would go up at rival stores, Pepsi would adjust allowances, such as “adjusting rollback levers.” It would punish stores that refused to cooperate by raising wholesale prices. Retailers who were trying to discount Pepsi products to better compete with Walmart would find it increasingly difficult to do so; not only would Pepsi take away their promotional allowances, but they might find that discounting six-packs of soda would lead to Pepsi charging them higher wholesale prices for the soda.
The FTC offered the example of Food Lion, a 1000-store chain in 10 states that cut prices on Pepsi products on its own to match or beat Walmart prices.
In 2022, Pepsi believed that Food Lion had “heavily indexe[d]” its retail prices “against retails at [Walmart] and Kroger” and “set[] retails relative to these competitors.” Pepsi characterized Food Lion as the “worst offender” on the price gap for “beating [Walmart] in price.”As a result of Food Lion threatening Walmart’s price gap, Pepsi created a plan to nudge Food Lion’s retail prices on Pepsi products upward by reducing promotional payments and allowances to Food Lion and raising other costs for Food Lion. The plan advised that Pepsi “must commit to raising rate [on Food Lion] faster than market by minimum annually.”…Nonetheless, even with these price increases, Pepsi leadership continued to push its Food Lion sales team to “begin to CLOSE the gap” because “[w]e absolutely have to demonstrate progress [to Walmart] in the immediate term.”
This arrangement benefits each side by extracting from consumers and rivals. Walmart gets to have a price advantage in Pepsi soft drink products against rival grocery stores and convenience stores, and Pepsi is able to exclude competitor access to better shelf space at the most important retailer. Consumers end up paying more for soda, new companies find it harder to get distribution access for new soft drink products to compete with Pepsi, and all non-Walmart retail stores are put at a disadvantage to Walmart. ILSR’s Stacy Mitchell laid out the terms of the deal as “Keep us the king of our domain and we’ll make you the king of yours.”
This dynamic is why independent grocery stores are dying. “We can be almost certain that this is the same monopolistic deal Walmart has cut with other major grocery suppliers,” noted Mitchell. “It’s led to less competition, fewer local grocery stores, and higher prices.” To the end consumer, it creates an optimal illusion. Walmart appears to be a low-cost retailer, but that’s because it induces its suppliers to push prices up at rivals. The net effect is less competition at every level. There are more areas without grocery competition, which increases food inflation. And suppliers like Pepsi gain pricing power, such as that they exploited during the post-Covid moment.
This kind of presumptively illegal price discrimination isn’t unique to the Pepsi-Walmart relationship. Pepsi is also being sued in a class action complaint for giving better deals for snack foods to big chains than it does to smaller stores, and Post is being sued by Snoop Dogg for working with Walmart to exclude sugar cereals produced by Snoop Dogg from its store shelves. You can find price discrimination everywhere in the economy, from shipping to ad buying to pharmaceutical distribution to liquor sales. And the resulting consolidation and high prices is also pervasive.
So why are we only learning about this situation now? Well, the original allegation was filed in January, in the last days of the Khan FTC. We knew the general outline of the argument, but we didn’t know specifics, because the complaint was highly redacted. Was it a real conspiracy? Was it just that Pepsi considered Walmart a “superstore” and had different prices for different channels? Was there coercion? None of these questions could be answered; there were so many blacked out words we couldn’t even say for sure that the large power buyer referenced in the document was Walmart.
Economists and fancy legal thinkers mocked the case endlessly. The FTC hates discounts! Price discrimination is good, it ends up lowering prices for consumers. The Robinson-Patman Act is stupid and pushes up prices. Suppliers always can only charge what “the market will bear” and if they could charge higher prices they’d already be doing it. And they’d never offer lower prices to any distributor; no lower than they had to. Yet these claims relied on the complaint never seeing the light of day.
The reason for the secrecy was a choice by FTC Chair Ferguson. Normally, when the government files an antitrust case, the complaint is redacted to protect confidential business information, as this one against Pepsi was. Then the corporate defendant and the government haggle over what is genuinely confidential business information. Within a few weeks, complaints are unsealed with a few minor blacked out phrases, and the case goes on.
In this case, however, Trump Federal Trade Commission Chair Andrew Ferguson abruptly dropped the case in February after Pepsi hired well-connected lobbyists. Small business groups were angry, but what was most interesting was the timing. Ferguson ended it the day before the government was supposed to go before the judge to manage the unsealing process. And that kept the complaint redacted. With the complaint kept secret, Ferguson, and his colleague Mark Meador, then publicly went on the attack. Ferguson’s statement was a bitter and personal invective against Khan; he implied she was lawless and partisan, that there was “no evidence” to support key contentions, and that he had to “clean up the Biden-Harris FTC’s mess,” which fellow commissioner Mark Meador later echoed.
And that was where it was supposed to stay, secret, with mean-spirited name-calling and invective camouflaging the real secret Ferguson was trying to conceal. That secret is something we all know, but this complaint helped prove - the center of the affordability crisis in food is market power. If that got out, then Ferguson would have to litigate this case or risk deep embarrassment. So the strategy was to handwave about that mean Lina Khan to lobbyists, while keeping the evidence secret.
However, the anti-monopoly movement and the court system actually worked. The Institute for Local Self-Reliance, an anti-monopoly group filed to make the full complaint public. Judge Jesse Matthew Furman agreed to hear ILSR’s case, with the U. S. Chamber of Commerce and Pepsi bitterly opposed. Last week, Furman directed the FTC unseal the complaint. So we finally got to see what Ferguson and Meador were trying to hide.
The political reaction is just starting. Ferguson has pretended that he’s taking a leading role in the ‘affordability’ strategy of the Trump administration, it wouldn’t surprise me if there’s internal anger at him among Republicans for flubbing such an obvious way to lower consumer prices and then lying about it. The grocery industry, especially rural grocers victimized by this price discrimination, leans to the right.
On the Democratic side, already we’re seeing states introducing price discrimination bills. There’s likely going to be bipartisan pressure on the FTC, which can and should reopen the case. There are already private Robinson-Patman Act cases, this complaint is likely to be picked up and used by plaintiffs who are excluded by the alleged scheme revealed in it. As a result of the publication of this complaint, Sabina Matos, the lieutenant governor of Rhode Island, just said that her state should ban this kind of behavior.
But there’s also something deeper happening. Earlier this week, More Perfect Union came out with an important investigative report on a company called Instacart, which is helping retailers charge individual personalized prices for goods based on a shopper’s data profile. The story went viral and caused immense outrage because it said something we already know. Pricing is increasingly unfair and unequal, a mechanism to extract instead of a means of sending information signals to the public and producers to coordinate legitimate commercial activity. And there’s a historical analogy to the increasing popular frustration.
The idea of the single price store, where a price is transparent and is the same for everyone, was created by department store magnate John Wanamaker in the post-Civil War era. Before founding his department store, Wanamaker was the first leader of the YMCA. He also created a Philadelphia mega-church. His single price strategy was part of an evangelical movement to morally purify America, the “Golden rule” applied to business. The price tag was political, an explicitly democratic attempt to treat everyone equally by eliminating the haggling and extractive approach of merchants.
At the same time as Wanamaker operated his store, the Granger movement of farmers in the midwest and later Populists fought their own war on unfair pricing of railroads, with the slogan “public prices and no secret kickbacks.” In the 1899 conference on trusts in Chicago, widely considered the most important intellectual and political forum for the later treatment of the Sherman Act, there were bitter debates, but everyone agreed that price discrimination by railroads were fostering consolidation in a dangerous and inefficient roll-up of power. These movements took place at a moment of great technological change, when Americans were moving to cities and leaving the traditional dry goods store behind.
Similarly, there was a big anti-chain store movement in the 1920s and 1930s to protect local producers and retailers, which ended up resulting in the Robinson-Patman Act, among other changes to law. That was a result of the Walmart or Amazon of its day, A&P, which would engage in price discrimination, opening outlets it called “killing stores” just to harm rivals. Over the past five years, we’ve seen a similar upsurge in anger over prices that drove the grangers, John Wanamaker, and the anti-chain store movement. Prices are becoming political again.
This revival is being driven by two things. First, technology is enabling all sorts of new ways to price, which is to say, to organize commercial and political power. And we all feel the coercion. Second, we’re beginning to relearn our traditions. Our historical memory was erased in the 1970s by economists, who argued that price discrimination is affirmatively a good thing. But fortunately, they are losing the debate.
As a result, today we’re seeing something similar to the anti-chain store movement of the 1920s and 1930s, with attempts to reinvigorate Robinson-Patman, and write and apply antitrust laws to algorithmic pricing choices. The Instacart scheme is a new way to extract, the alleged Walmart-Pepsi scheme is a classic way to extract. But increasingly, the public is realizing that pricing is political. And they don’t want to be cheated anymore.
Thanks for reading! Your tips make this newsletter what it is, so please send me tips on weird monopolies, stories I’ve missed, or other thoughts. And if you liked this issue of BIG, you can sign up here for more issues, a newsletter on how to restore fair commerce, innovation, and democracy. Consider becoming a paying subscriber to support this work, or if you are a paying subscriber, giving a gift subscription to a friend, colleague, or family member. If you really liked it, read my book, Goliath: The 100-Year War Between Monopoly Power and Democracy.
...
Read the original on www.thebignewsletter.com »
Hong Kong pro-democracy campaigner and media tycoon Jimmy Lai has been found guilty of colluding with foreign forces under the city’s controversial national security law (NSL).The 78-year-old UK citizen, who has been in jail since December 2020, pleaded not guilty. He faces life in prison and is expected to be sentenced early next year. Lai used his now-defunct Apple Daily newspaper as part of a wider effort to lobby foreign governments to impose sanctions on Hong Kong and China, the court found.Hong Kong chief executive John Lee welcomed the verdict, noting that Lai’s actions “damaged the country’s interests and the welfare of Hong Kongers”. Rights groups called it “a cruel judicial farce”.
They say the NSL, which Beijing defends as essential for the city’s stability, has been used to crush dissent. Delivering the verdict on Monday, Judge Esther Toh said there is “no doubt” that Jimmy Lai “harboured hatred” for the People’s Republic of China (PRC), citing his “constant invitation to the US to help bring down the government of the PRC with the excuse of helping the people of Hong Kong”.When Lai testified in November, he denied all the charges against him, saying he had “never” used his foreign contacts to influence foreign policy on Hong Kong.
Asked about his meeting with then US Vice President Mike Pence, Lai said he did not ask anything of him: “I would just relay to him what happened in Hong Kong when he asked me.“He was also asked about his meeting with then-secretary of state Mike Pompeo, to which he said he had asked Pompeo, “not to do something but to say something, to voice support for Hong Kong”.Lai, one of the fiercest critics of the Chinese state, was a key figure in the pro-democracy protests that engulfed Hong Kong in 2019. Beijing responded to the months-long demonstrations, which sometimes erupted into violent clashes with police, by introducing the NSL. The law was enacted without consulting the Hong Kong legislature and gave authorities broad powers to charge and jail people they deemed a threat to the city’s law and order, or the government’s stability. Lai was accused of violating the NSL for his role in the protests and also through his tabloid Apple Daily, which became a standard bearer for the pro-democracy movement. Monday’s ruling also found Lai guilty of publishing seditious material on Apple Daily under a separate colonial-era law.Lai appeared calm as the verdict was read out and waved goodbye to his family as he was escorted out of the courtroom. Lai’s wife Teresa and one of his sons were in court, along with Cardinal Joseph Zen, a long-time friend who baptised Lai in 1997.
“Mr Lai’s spirit is okay,” his lawyer Robert Pang said after the verdict. “The judgement is so long that we’ll need some time to study it first. I don’t have anything to add at the moment.” He did not say whether they would appeal. Jimmy Lai’s son Sebastien urged the UK government to “do more” to help free his father.“It’s time to put action behind words and make my father’s release a precondition to closer relationships with China,” he told a press conference in London. The UK condemned what it described as “politically motivated persecution” of Lai, saying he had been “targeted… for peacefully exercising his right to freedom of expression”.“The UK has repeatedly called for the National Security Law to be repealed and for an end to the prosecution of all individuals charged under it,” the Foreign, Commonwealth & Development Office said in a statement on Monday.“The Chinese government abused Jimmy Lai with the aim of silencing all those who dare to criticise the CCP [Chinese Communist Party],” said Elaine Pearson, Asia director at Human Rights Watch, following the verdict.“In the face of the farce of Jimmy Lai’s case, governments should pressure the authorities to withdraw the case and release him immediately.” Chinese foreign ministry spokesman Guo Jiakun responded to the criticism “by certain countries”.“China expresses strong dissatisfaction and firm opposition to the brazen defamation and smearing of the judicial system in Hong Kong,” he told reporters.Western governments, including the UK and US, have for years called for Lai’s release, which Beijing and Hong Kong have rejected.US President Donald Trump had earlier vowed to “do everything to save” Lai, while UK PM Keir Starmer had said securing his release was a “priority”.
Lai’s trial came to be widely seen as yet another test of judicial independence for Hong Kong’s courts, which have been accused of toeing Beijing’s line since 2019, when it tightened its control over the city. Hong Kong authorities insist the rule of law is intact but critics point to the hundreds of protesters and activists who have been jailed under the NSL - and its nearly 100% conviction rate as of May this year. Bail is also often denied in NSL cases and that was the case with Lai too, despite rights groups and Lai’s children raising concerns about his deteriorating health. He has reportedly been held in solitary confinement. Sebastien Lai told the BBC earlier this year that his father’s “body is breaking down” - “Given his age, given his health… he will die in prison.“The Hong Kong government has also been criticised for barring foreign lawyers from working on NSL cases without prior permission. They said it was a national security risk, although foreign lawyers had operated in the city’s courts for decades. Subsequently Lai was denied his choice of lawyer, who was based in the UK.
Lai now joins dozens of figures of the city’s pro-democracy movement who have been sentenced to prison under the NSL. The chief of Hong Kong’s national security police addressed the media after the verdict, saying Lai had “fabricated news” in pursuit of “political goals”. On the mainland, state-run Global Times quoted a Hong Kong election committee member as saying that the case sends a “clear message”: “Any attempt to split the country or undermine Hong Kong’s prosperity and stability will be met with severe punishment under the law.”
Lai, who was born in mainland China, fled to Hong Kong when he was 12 years old and got his footing as a businessman after founding the international clothing brand Giordano. His journey as a democracy activist began after China brutally crushed pro-democracy protests in Beijing’s Tiananmen Square in 1989. Lai started writing columns criticising the massacre and went on to launch a string of popular pro-democracy publications, including Apple Daily and Next.Even now, many Hong Kongers see him as a leading voice for democracy - about 80 people had queued to enter the court ahead of the verdict on Monday. One of them was Ms Lam who didn’t want to share her full name. An apple in hand, she said she started queuing around 11:00 local time on Sunday — nearly a full day before the session — because dozens of people had come before her. It was a cold night, she said, but she did it because she had wanted to wish Lai good luck. “We all feel frustrated and powerless. Yet, there must be an ending to the whole issue and time comes when it comes,” a former Apple Daily journalist, who was also in court, told the BBC.“Jimmy always said that he was indebted to Hong Kong… but I think Hong Kong and most Hong Kongers are so grateful to have him upholding the core values, good faith and integrity for the community at the expense of his well being and personal freedom.“In his testimony, Lai had said that he had “never allowed” his newspaper’s staff to advocate for Hong Kong independence, which he described as a “conspiracy” and “too crazy to think about”.“The core values of Apple Daily are actually the core values of the people of Hong Kong,” he had said. These values, he added, include the “rule of law, freedom, pursuit of democracy, freedom of speech, freedom of religion, freedom of assembly”.
...
Read the original on www.bbc.com »
Paul Friday remembers when his hand started flopping in the cold weather — the first sign nerve cells in his brain were dying.
He was eventually diagnosed with Parkinson’s, a brain disease that gets worse over time. His limbs got stiffer. He struggled to walk. He couldn’t keep living on his family farm. Shortly afterward, Friday came to believe that decades of spraying a pesticide called paraquat at his peach orchard in southwestern Michigan may be the culprit.
“It explained to me why I have Parkinson’s disease,” said Friday, who is now 83, and makes that claim in a pending lawsuit.
With evidence of its harms stacking up, it’s already been banned in dozens of countries all over the world, including the United Kingdom and China, where it’s made. Yet last year, its manufacturer Syngenta, a subsidiary of a company owned by the Chinese government, continued selling paraquat in the United States and other nations that haven’t banned it.
Health statistics are limited. Critics point to research linking paraquat exposure to Parkinson’s, while the manufacturer pushes back, saying none of it is peer-reviewed. But the lawsuits are mounting across the United States, as farmers confront Parkinson’s after a lifetime of use, and much of the globe is turning away from paraquat.
It has many critics wrestling with the question: What will it take to ban paraquat in the United States?
“What we’ve seen over the course of decades is a systemic failure to protect farmworkers and the agricultural community from pesticides,” said Jonathan Kalmuss-Katz, a senior attorney at Earthjustice, an environmental law organization that advocates against paraquat.
It was hard for Ruth Anne Krause to watch her husband of 58 years struggle to move his hands. He was an avid woodcarver, shaving intricate details into his creations, before it became too difficult for him to hold the tools.
Jim Krause was diagnosed with Parkinson’s disease in 2019, after he spent decades operating a 20-acre stone fruit farm in central California. His wife says he often donned a mask and yellow rubber boots to spray paraquat on the fields.
Krause, who had no family history of neurological disease as is typical, died in 2024.
“I want people to know what happened,” said Ruth Anne Krause, who is worried that paraquat is still being sold to American farmers.
Krause is one of thousands of people who have sued Syngenta, a manufacturer, and Chevron USA, a seller, over paraquat exposure. They’re alleging the chemical companies failed to warn of the dangers of paraquat despite knowing it could damage human nerve cells and studies showing it’s linked to Parkinson’s disease.
Chevron, which never manufactured paraquat and hasn’t sold it since 1986, has “long maintained that it should not be liable in any paraquat litigation.”
“And despite hundreds of studies conducted over the past 60 years, the scientific consensus is that paraquat has not been shown to be a cause of Parkinson’s disease,” the company said in a statement.
Syngenta has emphasized there is no evidence that paraquat causes Parkinson’s disease.
“We have great sympathy for those suffering from the debilitating effects of Parkinson’s disease,” a Syngenta spokesperson said in a statement. “However, it is important to note that the scientific evidence simply does not support a causal link between paraquat and Parkinson’s disease, and that paraquat is safe when used as directed.”
More than 6,400 lawsuits against Syngenta and Chevron that allege a link between paraquat and Parkinson’s are pending in the U. S. District Court of Southern Illinois. Another 1,300 cases have been brought in Pennsylvania, 450 in California and more are scattered throughout state courts.
“I do think it’s important to be clear that number is probably not even close to representative of how many people have been impacted by this,” said Christian Simmons, a legal expert for Drugwatch.
Syngenta told its shareholders in March that an additional 1,600 cases have been voluntarily dismissed or resolved. In 2021, the company settled an unspecified number in California and Illinois for $187.5 million, according to a company financial report. Some others have been dismissed for missing court deadlines. None have gone to trial yet.
Behind these thousands of lawsuits, a list growing nearly every day, is a person suffering from Parkinson’s disease.
In Ohio, there’s Dave Jilbert a winemaker who sprayed the pesticide on his vineyard south of Cleveland. He was diagnosed with Parkinson’s in 2020 and now he is suing and working to get paraquat banned. Terri McGrath believes years of exposure to paraquat at her family farm in rural Southwest Michigan likely contributed to her Parkinson’s. Six other family members also have the disease. And in south Alabama, Mac Barlow is suing after receiving a similar diagnosis following years of relying on paraquat.
“For about 40 years off and on, I’ve been using that stuff,” Barlow said. “I’ll be honest with you, if I knew it was going to be that bad, I would have tried to figure out something else.”
Since hitting the market in the 1960s, paraquat has been used in farming to quickly “burn” weeds before planting crops. The pesticide, originally developed by Syngenta and sold by Chevron, rips tissue apart, destroying plants on a molecular level within hours.
“It’s used because it’s effective at what it does. It’s highly toxic. It’s very good at killing things,” said Geoff Horsfield, policy director at the Environmental Working Group. “And unfortunately, when a pesticide like this is so effective that also means there’s usually human health impacts as well.”
By the 1970s, it became a tool in the war on drugs, sprayed to kill Mexican marijuana plants. In 1998, that history landed it in Hollywood when the Dude in “The Big Lebowski” calls someone a “human paraquat,” a buzzkill.
Today, between 11 million and 17 million pounds of paraquat are sprayed annually to help grow cotton, soybean and corn fields, among other crops, throughout the country, the U. S. Geological Survey, USGS, reports. And despite the alleged known risks, its use is increasing, according to the most current federal data, more than doubling from 2012 to 2018.
The USGS says on its website new pesticide use data will be released in 2025. It hasn’t been published yet.
Because paraquat kills any growth it touches, it’s typically used to clear a field before any crops are planted. Low levels of paraquat residue can linger on food crops, but the foremost threat is direct exposure.
Pesticides are among the most common means of suicide worldwide, according to the World Health Organization, and paraquat is frequently used because of its lethality. After some nations, like South Korea and Sri Lanka, banned it, they saw a significant drop in suicides, research shows.
The U. S. Environmental Protection Agency already restricts paraquat, labeling it as “registered use,” with a skull and crossbones, meaning it can only be used by people who have a license. Because of its toxicity, the federal government requires it to have blue dye, a sharp smell and a vomiting agent, according to the U.S. Centers for Disease Control, CDC. Sprayers are also told to wear protective gear.
Despite those safety measures, U. S. poison centers have gotten hundreds of paraquat-related calls in the past decade, their annual reports show.
Swallowing is the most likely way to be poisoned by paraquat, according to the CDC, but skin exposure can also be deadly. In fact, if it spills on someone, health officials say they should wash it off immediately and quickly cut off their clothes. That way they don’t risk spreading more deadly pesticide on their body as they pull their shirt over their head.
In one 2023 case documented by America’s Poison Centers, a 50-year-old man accidentally sipped blue liquid from a Gatorade bottle that turned out to be paraquat. After trying to throw it up, he went to the emergency room, struggling to breathe, nauseous and vomiting.
Doctors rushed to treat the man, but he turned blue from a lack of oxygen and his organs failed. He died within three days.
In another poison center report, a 65-year-old man spilled paraquat on his clothes and kept working. Ten days later, he went to the emergency room with second-degree burns on his stomach. Dizzy and nauseous, he was admitted for two days before going home.
A week later, he went back to the ICU as his kidney, lungs and heart stopped working. He died 34 days after the spill.
These annual poison center case summaries provide insight into paraquat’s toxicity, but it’s unclear exactly how many people in the U. S. have been injured or killed by the weed killer, because there’s only a patchwork of data creating an uneven and incomplete picture.
The latest annual National Poison Data System report logged 114 reports and one death caused by paraquat in 2023. Over a decade, from 2014 to 2023, this system documented 1,151 paraquat calls. And a separate database shows the EPA has investigated 82 human exposure cases since 2014.
Even secondary exposure can be dangerous. One case published in the Rhode Island Medical Journal described an instance where a 50-year-old man accidentally ingested paraquat, and the nurse treating him was burned by his urine that splashed onto her forearms. Within a day, her skin blistered and sloughed off.
And a former Michigan State horticulture student is suing the university for $100 million, claiming that she developed thyroid cancer from her exposure to pesticides including paraquat, glyphosate and oxyfluorfen.
Meanwhile, a much more widespread threat looms large in the background: long-term, low-level exposure.
Parkinson’s disease is the fastest growing neurological disorder in the world, with cases projected to double by 2050, partly due to an aging population, according to a study published in The BMJ, a peer-reviewed medical journal. It occurs when the brain cells that make dopamine, a chemical that controls movement, stop working or die.
The exact cause is unknown, likely a mix of genetic and, largely, environmental factors.
A Parkinson’s Foundation study found that 87% of those with the disease do not have any genetic risk factors. That means, “for the vast majority of Americans, the cause of Parkinson’s disease lies not within us, but outside of us, in our environment,” said neurologist and researcher Ray Dorsey.
That’s why Dorsey, who literally wrote the book on Parkinson’s, calls the disease “largely preventable.”
There’s a long list of environmental factors linked to Parkinson’s, but pesticides are one of the biggest threats, according to Dorsey.
“If we clean up our environment, we get rid of Parkinson’s disease,” he said.
An early 1987 case report published in Neurology discusses the case of a 32-year-old citrus farmer who started experiencing tremors, stiffness and clumsiness after 15 years of spraying paraquat. But “a cause-and-effect relationship is difficult to establish,” a doctor wrote at the time.
A decade later, an animal study from Parkinson’s researcher Deborah Cory-Slechta found that paraquat absorbed by mice destroys the specific type of dopamine neuron that dies in Parkinson’s disease. More recently, her research has found paraquat that’s inhaled can also bypass the blood-brain barrier, threatening neurons.
“It’s quite clear that it gets into the brain from inhalation models,” Cory-Slechta said.
Critics point to other epidemiological studies being more definitive.
In 2011, researchers studied farmworkers exposed to two pesticides, rotenone and paraquat, and determined those exposures increased the risk of developing Parkinson’s by 150%. Another study, published last year, looked at 829 Parkinson’s patients in central California. It found people who live or work near farmland where paraquat is used have a higher risk of developing the disease.
“It’s kind of like secondhand smoke,” Dorsey said. “You can just live or work near where it’s sprayed and be at risk.”
This is a growing concern in American suburbs where new houses press up against well-maintained golf courses. A study published in JAMA this year found that living within a mile of a golf course increased the risk of Parkinson’s disease by 126%. It didn’t name specific chemicals but did point to pesticides.
The EPA in 2021 banned paraquat from golf courses “to prevent severe injury and/or death” from ingestion.
Despite all that, it’s difficult to prove whether paraquat directly causes Parkinson’s because it develops years after exposure.
“The disease unfolds over decades, and the seeds of Parkinson’s disease are planted early,” Dorsey said.
The legal case over paraquat inched toward a settlement earlier this year.
Most of the lawsuits have been brought in Illinois under what’s known as multi-district litigation. Unlike a class-action lawsuit, this puts individual cases in front of one federal judge. A few bellwether cases are then chosen to represent the masses and streamline the legal process.
Syngenta, Chevron and the plaintiffs agreed to settle in April, which would wrap up thousands of cases, but an agreement is still being hammered out, court records show. If details can’t be finalized, it will go to trial.
Syngenta has adamantly denied the lawsuits’ allegations, saying it backs paraquat as “safe and effective” when it’s used correctly and emphasizing there has been no peer-reviewed scientific analysis that shows paraquat causes Parkinson’s disease.
“Syngenta believes there is no merit to the claims, but litigation can be distracting and costly,” a spokesperson said. “Entering in the agreement in no way implies that paraquat causes Parkinson’s disease or that Syngenta has done anything wrong. We stand by the safety of paraquat.”
Chevron has also denied the claims saying the “scientific consensus is that paraquat has not been shown to be a cause of Parkinson’s disease.”
A trove of internal documents released during litigation, as reported by The Guardian and the New Lede, appeared to show that the manufacturers were aware of evidence that paraquat could collect in the brain.
But the New Lede acknowledged the documents do not show company scientists believed that paraquat causes Parkinson’s, Syngenta officials pointed out.
The trail of bread crumbs started as early as 1958 when a company scientist wrote about a study of 2.2 dipyridyl, a chemical in paraquat, saying it appears to have moderate toxicity “mainly by affecting the central nervous system, and it can be absorbed through the skin,” the internal documents said.
Imperial Chemical Industries, which later became Syngenta, started selling paraquat under the brand name Gramoxone in 1962, according to research. Gramoxone contains nearly 44% paraquat.
The internal documents show by 1974, the company updated safety precautions, recommending that anyone spraying the pesticide wear a mask, as there were the first reports of human poisoning and concerns about the effects of paraquat started to grow.
A year later, Ken Fletcher from Imperial Chemical wrote a letter to Chevron scientist Dr. Richard Cavelli, saying the chemical company knew of “sporadic reports of CNS (central nervous system) effects in paraquat poisoning” that he believed to be coincidental.
Within months, Fletcher also indicated “possible chronic effects” of paraquat exposure, calling it “quite a terrible problem” that should be studied more, the documents say.
“Due possibly to good publicity on our part, very few people here believe that paraquat causes any sort of problem in the field,” he wrote in the mid 1970s. “Consequently, any allegation of illness due to spraying never reaches serious proportions.”
By the 1980s, outside research started to pick at the question of paraquat and Parkinson’s.
“As more researchers dug into it, it’s only been more firmly established,” said Horsfield with the Environmental Working Group.
Syngenta pushes back on this, though, saying two recent reports cast doubt on these claims.
A 2024 scientific report from California pesticide regulators found recent evidence was “insufficient to demonstrate a direct causal association with exposure to paraquat and the increased risk of developing Parkinson’s disease.” And a September analysis from Douglas Weed, an epidemiologist and independent consultant, reached a similar conclusion.
Syngenta also claims on its website to be a target of a “mass tort machine” that hovers behind multi-district litigation.
In 1981, Norway became the first country to outlaw paraquat due to the risk of poisoning. One by one, more countries followed suit. In 2007, the European Union approved a blanket ban for all 27 member countries, according to media reports.
Yet Syngenta is still allowed to manufacture paraquat in countries that have banned its use. It’s been prohibited in the United Kingdom for 18 years and China banned paraquat to “safeguard people’s life, safety and health,” in 2012, according to a government announcement.
Yet about two-thirds of the paraquat imported to the U. S. between 2022 and 2024 came from companies owned by the Chinese government, SinoChem and Red Sun Group, according to a joint report published by three advocacy organizations in October.
It found most of the 40 million and 156 million pounds imported annually over the past eight years comes from Chinese manufacturing facilities, in either China or Syngenta’s big factory in northern England.
Although hundreds of companies sell paraquat, Syngenta says it accounts for a quarter of global sales.
According to previous media reports, SinoChem, a Chinese state-owned conglomerate, acquired Syngenta in a 2020 merger. SinoChem posted $3.4 billion in profits last year, but it’s unclear how much came from paraquat sales because the company doesn’t make earnings reports public. Syngenta reported $803 million in sales of its “non-selective herbicides,” the class that includes paraquat-containing Gramoxone, according to its 2024 financial report.
While Chinese companies supply paraquat to American farmers, the report points out China is also a big purchaser of crops, like soybeans, that are grown with help from the pesticide.
“In these two ways, China economically benefits from the application of paraquat in the U. S., where it outsources many of its associated health hazards,” the report said.
Paraquat, now prohibited in more than 70 countries, according to the Environmental Working Group, was reauthorized by the EPA in 2021 when it passed a regularly scheduled 15-year review — a move challenged by critics.
“EPA has the same information that those countries have,” said Kalmuss-Katz, the attorney with EarthJustice. “EPA has just reached a fundamentally different, and what we believe is a legally and scientifically unsupported position, which is: massive amounts of paraquat can continue to be sprayed without unreasonable risk.”
The federal agency determined paraquat remains “an effective, inexpensive, versatile, and widely used method of weed control,” and any risks to workers are “outweighed by the benefits” of farms using the weed killer.
“It is one of the mostly highly regulated pesticides available in the United States,” the agency said in a statement.
This decision allowed it to be used with “new stronger safety measures to reduce exposure,” like requiring buffer zones where pesticides can’t be sprayed.
For plants like cotton, alfalfa, soybeans and peanuts, the EPA wrote in its decision “growers may need to switch to alternative (weed-killers), which could have financial impacts.” Unlike other pesticides, paraquat works well in low temperatures and early in the season, according to the agency.
More than 200,000 public comments have been submitted to the EPA’s docket on paraquat over the years. Industry groups, farmers, advocacy organizations and others have all chimed in, arguing for or against the weed killer.
One submitted by a North Dakota farmer, Trey Fischbach, urged the EPA to continue allowing paraquat to fight resistant weeds like kochia, writing it’s the “last tool in the toolbox.”
The EPA also noted there weren’t many other options. “The chemical characteristics of paraquat are also beneficial as a resistance management tool, where few alternatives are available.”
But farmers can get trapped on what critics call the “pesticide treadmill,” in which broad pesticide use leads to “superweeds” that require stronger and stronger pesticides to be knocked down.
A comment submitted by Kay O’Laughlin, from Massachusetts, urged instead: “Do your job and ban paraquat because it is killing people. I speak as someone who lost a brother to Parkinson’s. People should not be disposable so that big agro can make ever greater profits!”
The EPA’s 2021 decision was challenged within two months by environmental and farmworker groups who sued the EPA. Kalmuss-Katz said the groups challenged the EPA over reapproving paraquat without “truly grappling” with the connection to Parkinson’s.
“The EPA here failed to adequately protect farmworkers,” he said.
After that, the environmental agency shifted under President Joe Biden.
The EPA decided to consider the issues raised in the lawsuits and started seeking additional information last year. In early 2025, it asked the courts for more time to assess the human health risks of paraquat.
But the EPA wasn’t focused on Parkinson’s, saying in its decision the “weight of evidence was insufficient” to link paraquat exposure to the neurological disease. Rather, the federal question was over how the weed killer turns into a vapor that could harm people when inhaled or touched. “Parkinson’s Disease is not an expected health outcome of pesticidal use of paraquat,” the EPA said in its review.
...
Read the original on www.mlive.com »
Ford is once again shifting its electric vehicle manufacturing plans, a response to a year that’s been tough for the powertrain technology that’s still making waves overseas but has seen domestic government support cut and customer enthusiasm weaken.
Instead of planning to make enough electric vehicles to account for 40 percent of global sales by 2030—as it pledged just four years ago—Ford says it will focus on a broader range of hybrids, extended-range electrics, and battery-electric models, which executives now say will account for 50 percent of sales by the end of the decade. The automaker will make hybrid versions of almost every vehicle in its lineup, the company says.
The company will no longer make a large all-electric truck, Ford executives told reporters Monday, and will repurpose an electric vehicle plant in Tennessee to build gas-powered cars. The next generation of Ford’s all-electric F-150 Lighting will instead be an extended-range electric vehicle, or EREV, a plug-in hybrid that uses an electric motor to power its wheels while a smaller gasoline engine recharges the battery. Ford says the tech, which automakers have touted in recent years as a middle-ground between battery-electric vehicles and gas-powered ones, will give its truck extended towing capacity and a range of over 700 miles.
Ford still plans to produce a midsize electric pickup truck with a target starting price of about $30,000, to be available in 2027. That will be the first of the “affordable” electric vehicle models it’s currently designing at a skunkworks studio in California, which are slated to use a “universal” platform architecture that will make the vehicles cheaper to produce.
The new plans leave Ford with a bunch of excess battery-making capacity, which the company says it will use by opening a whole new business: a battery energy-storage sideline. This new business will produce lower-cost and longer-living lithium iron phosphate, or LFP, batteries for customers in the public utility or data center industries.
“Ford is following the customer,” says Andrew Frick, the president of Ford Blue and Ford Model e, the automaker’s gas- and battery-powered vehicle businesses. US customer adoption of electric vehicles is not where the industry expected at decade’s start, he says. (Battery-electric vehicles currently make up about 7.5 percent of US new car sales.) Frick also cited changes in the regulatory environment, including the Trump administration’s rollback of commercial and consumer tax incentives for electric vehicles.
The company has also canceled an all-electric commercial van planned for the European market. Instead, Ford will team up with Renault, in a partnership announced last week, to develop at least two small Ford-branded electric vehicles for Europe—a move that CEO Jim Farley called part of a “fight for our lives,” as US automakers try to compete with affordable EVs out of China.
Ford said Monday that it also plans to produce a new gas-powered commercial van for North America.
...
Read the original on www.wired.com »
Like most people, you’re probably an absolute expert at landing on the aircraft carrier in Top Gun for the NES. But if you’re in the silent minority that have not yet mastered this skill, you’re in luck: I’ve done a little reverse engineerining and figured out precisely how landing works. Hopefully now you can get things really dialed in during your next practice session. Let’s get those windmill high-fives warmed up!
tl;dr: Altitude must be in the range 100-299, speed must be in the range 238-337 (both inclusive), and you must be laterally aimed at the carrier at the end of the sequence.
As a reminder in case you haven’t played Top Gun in the last few decades (weird), the landing portion of the stage looks like this:
Mercifully, the game suggests you aim right in the middle of the acceptable range per the “Alt. 200 / Speed 288” text on your MFD. Altitude and speed are both controlled by throttle input and pitch angle. There’s no on-screen heading indicator, but the game will tell you if you’re outside of the acceptable range (“Right ! Right !”). The ranges for speed and heading are pretty tight, so focus on those: the range for altitude is much wider.
After about a minute of flying the game checks your state and plays a little cutscene showing either a textbook landing or an expensive fireball. Either way, you get a “Mission Accomplished!” and go to the next level (after all, you don’t own that plane, the taxpayers do):
Speed and altitude are stored as binary coded decimals, likely to simplify the rendering of on-screen text. For example, the number 1234 is stored as 4660 (ie., hex 0x1234).
The function at $B6EA performs the state check and writes the result at $9E. If you’re just here to impress your friends and don’t want to put in the practice, the game genie code AEPETA will guarantee a landing that Maverick and Goose (spoiler: may he rest in peace
) would be proud of.
Here’s my annotated disassembly for those following along at home:
landing_skill_check:
06:B6EA: LDA $3E ; Load altitude High cent
06:B6EC: BEQ $B724 ; Branch if High cent == 0 (altitude < 100)
06:B6EE: CMP #$03
06:B6F0: BCS $B720 ; Branch if High cent >= 3 (altitude >= 300)
06:B6F2: LDA $41
06:B6F4: CMP #$04
06:B6F6: BCS $B720 ; Branch if High cent is >= 04 (speed >= 400)
06:B6F8: CMP #$02
06:B6FA: BCC $B724 ; Branch if High cent is < 02 (speed < 200)
06:B6FC: BEQ $B706 ; Branch if High cent == 02 (speed >= 200 && speed
Now get out there, and snag that third wire.
...
Read the original on relaxing.run »
OK, so this is niche.
One of my wife’s guilty pleasures is reality TV, usually ones centred around dating - the more American, the better. By extension, I absorb some of this noise and I’m happy to admit I can sometimes get invested.
At one point, she was (let’s face it, we were) watching a show called “Are you the one?” on MTV. I’m going to show you how this game is pretty much free money.
Consider a group of equal numbers of men & women:
Each contestant has exactly one perfect match of the opposite sex that is pre-determined for them, as represented by the colours. Click the “Match” button to pair up the contestants correctly. Crucially, they don’t initially know who their perfect match is. If the group can correctly guess all the perfect matches, they win a cash prize of $1M.
You probably have the follow up question of how the perfect matches are calculated, which is a great question. In short: dunno, it’s black-boxed, but let’s just say “science”? How this is calculated isn’t really the point, I could even argue that it doesn’t matter so long as you get your strategy right. For what it’s worth, the plot of the TV show mentions employing “the most extensive match-making process ever seen”.
Let’s get into it. Here are the two ways in which contestants can learn new pieces of information throughout the game: truth booths and match ups.
A truth booth is where a male & female are chosen by the contestants, and it is revealed definitively whether they’re a perfect match or not. So there are two potential outcomes:
If you’ve found a way to stream this and want to skip straight to the good stuff, I’d fast-forward to the fallout from these. In S1E6 it took Shanley an entire episode to come to terms with Chris T & Paige being a perfect match, even though in E1 she learned she was no match with him anyway (sigh).
At the end of each episode, all contestants match up and they are informed (via dramatic lighting) how many correct matches they’ve got. If they’ve got all matches, the game is over and they win.
Crucially, they don’t know what the correct matches are, just how many they got in total. The only way they can definitively rule out a pairing is if they scored zero: the dreaded blackout. Though it might seem like a bad thing, a blackout can in fact be helpful in the long-term, as it gives you a definitive answer for all pairs that were matched up, it’s like getting a free truth booth for each pair.
Much like a high school disco, let’s put all the boys on one side and the girls on the other, and re-use the pairs from the match up example above:
Here we have two correct pairs red and pink at position 1 and 5 respectively. The orange man at position 2 was paired with the purple woman from position 6, and so on.
How good is a score of two? Is that any better than if you were to randomly pair people up? Let’s experiment by doing just that: click the ‘shuffle’ button to re-pick:
You’ll notice that the average score comes out at around 1 after a while, which this line chart keeps track of.
Below is a chart capturing the frequency of each score, you’ll notice it eventually converges to a specific shape.
The height of each outlined bar is the probability of scoring that number in a random pairing in a game of 6 couples. Interestingly, both these probabilities and the average score stay the same no matter how many couples we use.
Whatever the selected # couples, the probability stays this same. There’s tonnes of tangents we could explore that you might find interesting here, but for our purposes we just wanted to put some data behind “how good is a score of X”.
I created a model that computes the remaining viable matchings of all couples. By ‘viable’, I mean that there’s still a chance that it’s the perfect match. Initially, as you can imagine, this is a big number. The aim of the game then becomes getting that number down to 1 as quickly as possible.
Each time new information is learned, we recalculate the remaining matches. For example if we have a positive truth booth result, the remaining matches are filtered out to only those that contain these two people as a pair. Conversely, if the truth booth result was negative, then the remaining matches cannot contain any where these two are paired. Imagine a huge a game of “Guess Who?” where each image is a viable matching and you flip down the options that become invalid each time you learn new information. Match ups also massively help you reduce this number, however their impact is a bit more indirect and it’s very difficult for a human brain to figure out the implications of the result of one.
Here is a graph of the remaining viable matches in Season 1 as the season progresses. It may surprise you that in this game of 10 men and 10 women, the initial number of viable matches is almost 4 million:
Hovering over the dots will tell you what’s responsible for that change in the remaining matches. As you can see, they gain enough information to win the game by episode 8, so why does it take them so long to get it right? As mentioned earlier, it’s almost impossible for humans to keep tabs on all these potential matchings so it’s very likely they just didn’t know.
That being said, the graph itself isn’t particularly useful, is it? After a couple of events, the line hugs the x-axis, and it’s hard to see the difference between 1 and 5,773 seen in episodes 8 and 2 respectively. Let’s try a log base 2 graph:
That’s hopefully a lot clearer. You can see how they learn information as they go, and at which point the model ‘cracks it’ with the match up in episode 8. You can also clearly see that the most valuable piece of information they gained was the match up in episode 2 - with a decent early score of 4. This might be intuitive to you, but as we found earlier you’ve got a less than 2% chance of scoring 4 when randomly selecting.
Let’s plot this again along with a few more seasons:
Other than S3 and S7, the contests mathematically learn enough information to win the game with time to spare. Could they have got there sooner though? Could they have chosen better truth booths/match ups to spare us all of the extra episodes of trashy TV? Before I get into this, I need to cover some basics of information theory.
We’re going to revisit the “Guess Who?” game now, which you can think of as a simplified version of “Are you the one?”. Stick with me; the idea is that we can use the more straightforward game mechanics to establish an information theory based strategy that we can then apply to “Are you the one?”. These two games are similar in that:
There is a correct answer unknown to the player(s).
The player(s) are able to learn information by offering up hypotheses, and getting definitive answers to them.
Consider an 8x8 grid of potential answers:
Now I’m a terrible artist so I thought I would be able to articulate this more clearly with shapes instead. There are 4 shapes (
and
), 2 different types (opaque or outlined), and 8 colours - this makes 64 unique combinations. The aim of the game is to guess the correct answer before your opponent guesses yours. To give yourself the best chance of winning, you need to rule out as many answers as you can, as quickly as you can. Should you then employ a strategy that splits the potential answers in half (e.g “is it opaque?“), or something a bit more specific (e.g “is it an orange star?“). The latter is high-risk, high-reward, whereas the former will almost always rule out half of the remaining answers.
Consider a bit of information as reducing the problem space by half. That is, by ruling out half the remaining answers. I want to stress that the word bit is a common term in information theory, as opposed to something that might sound less exact as it’s intended in this context.
The opaque question is a sure-fire way of gaining 1 bit of information. On the other hand, let’s say you find out that the answer is a which allows you to flip down three quarters of the answers, that’s the same as halving the problem space twice and therefore gaining two bits of information.
In this example the answer is :
As you can see, different answers are more useful than others. “Opaque?” rules out half of the remaining answers (1 bit), whereas “Blue?” rules out 7/8ths of them (3 bits).
Getting from 64 potential answers to 1 involves halving the problem space 6 times - 64 becomes 32, then 16, 8, 4, 2 and 1. In other words, if you’re able to gain 6 bits of information, you’ll know for sure what the answer is. This is supported by the fact that the sum of the information gained by asking all three above questions is 6.
Let’s simulate an actual game now, keeping tabs on the information gained throughout.
Once everything but remains, you’ll have gained 6 bits of information and can be 100% confident in the answer. Now we know we need to get to 6 bits of information as quickly as possible, our strategy becomes picking the question that we expect to give us the most information. That is, the sum of the information we would gain if that answer were true or false, multiplied by the probability of that specific outcome. Let’s work through our three questions to give the expected information for each:
This table shows the expected information for each of our 3 questions. As you can see, the more “Hail Mary” the question, the lower expected information. “Blue?” comes out at 0.54, which is almost half the amount of expected information as “Opaque?”. Therefore, we can speculate that a decent strategy for this game would be to ask questions that split the remaining problem space in half. To support this, we can plot a graph for all possible probabilities between 0 and 1:
This shows that splitting the problem space in half (where the probability is 0.5), gives the highest expected information. This means that asking a very specific question like “Blue?” is statistically the worst thing you can do.
Let’s play one final game, this time I’ll show you the questions ordered by most to least expected information:
How did you do? You’ll notice that picking the questions at the top of the list gets you to the answer quicker, whereas the opposite is true when picking from the bottom. You’ll also notice that you’re never presented with a question that gives you more than 1 expected information, which is backed up by the above graph never going higher than 1.
Now we’ve got a strategy that works well for “Guess Who?”, we can get back to the proper game.
Simulating “Are you the one?“#
Earlier on, I posed a (until now) rhetorical question as to the performance of the contestants on the show. In order to answer this question, we need two things:
A way to measure performance: For this, we’ll use the average bits gained per event. That is, each time there is a match up or truth booth, how many bits of information did they gain?
A sensible benchmark: How do the contestants stack up against something that employed a strategy of randomly selecting match ups and truth booths?
For this sensible benchmark, I simulated over 100 fake seasons of “Are you the one?” to see how much information was gained if the match ups and truth booths were selected (almost) arbitrarily.
The performance of the random simulated models was . Let’s plot all the simulations on a graph, with trendlines for random and actual performance:
So the actual performance hits the x-axis sooner, meaning it’s able to zero-in on the perfect match earlier. That’s reassuring, right? Maybe love is real after all. That, or they’re just performing better than someone shooting fish in a barrel. Here’s the numbers behind this comparison:
The success rate is calculated as the number of seasons in which they’re able to mathematically determine the perfect match before the game finishes. As you can see the success rate for the random simulation is higher than in real life. The sample of size of only 7 seasons of “Are you the one?” undoubtedly is too small for this to be a useful comparison.
Now that we know the contestants make better decisions than randomly selecting pairings, the remaining question is exactly how much better. To show this, we’ll employ our information theory strategy that we used for “Guess Who?” to this game.
This simulation works similarly to the random simulation, only the mechanism for selecting pairings is different. That is, the pairings that are selected for either a truth booth or a match up are the ones that are statistically likeliest to give the most information.
Suppose we have calculated the expected information gained by potential truth booths like below:
The model would therefore pick and as it’s the most likely to give it the most information.
Match ups work similarly, however we know that it’s not a simple true or false question. Instead, we’ve got to calculate the information we would gain for every score between 0 and 10 (where 10 is the number of couples), for every viable matching.
I ran this information theory simulation 41 times (for no other reason than I got bored waiting), and saw it perform significantly better than random simulation or real life data:
Now we can compare all three scenarios:
This means that, all you need is a bit of code and a can-do attitude to perform better than the “vibes” approach of the contestants in the show. Before you pop the champagne, we still haven’t shown if this is good enough such that we get to the perfect match before we run out of time (or episodes). In a game of , the problem space is (for brevity, you can take my word for this), which is bits of information. This means you would need to gain bits of information per event minimum to ensure that you go into the final match up knowing for certain what the perfect match is.
Wait, isn’t that a lower number than the random simulation? Doesn’t that mean that someone shooting fish in a barrel could win this game? I should stress that these are averages, and in 26% of random simulations they didn’t get to there in time.
Hopefully now you agree with me that “Are you the one?” is free money, albeit with a just about near-perfect success rate. I showed that even picking pairings at random will more often than not give you enough information to win the game, as well as showing how to use classic information theory practices to get you there with episodes to spare. Maybe this haemorrhaging of money is what got the show cancelled in the first place, or maybe love is real, whatever you prefer.
This post is my first foray into content like this. I wanted to scratch the itch of an interesting maths problem, with a light-hearted spin that I hope you enjoyed as much as I did making it. The techniques shown in this post are very common information theory approaches, though I was inspired to apply them based on this video on wordle by 3Blue1Brown. I very rarely watch youtube videos over 10 minutes long (maybe that’s my loss), but I wholly recommend this one if you found this interesting.
Other than that, in my research I came across a boardgame called Mastermind, which has been around since the 70s. This is a very similar premise - think of it as “Guess Who?” on hard mode.
I also pitched this idea to The Pudding, and had a great experience with them nerding out about this subject. Though they didn’t take my up on my idea, I left with really great and actionable feedback, and I’m looking forward to my next rejection.
Next steps for me would be to see if I can make a web-based game (don’t hold me to this) on this theme. I’m interested in how people would intuitively make decisions based on information gained so far so the plan would be to see if I can find a way to capture that, and ideally make it fun.
Finally, the code for my OR Tools model can also be found here.
...
Read the original on blog.owenlacey.dev »
Sharp Monocular View Synthesis in Less Than a Second
We present SHARP, an approach to photorealistic view synthesis from a single image. Given a single photograph, SHARP regresses the parameters of a 3D Gaussian representation of the depicted scene. This is done in less than a second on a standard GPU via a single feedforward pass through a neural network. The 3D Gaussian representation produced by SHARP can then be rendered in real time, yielding high-resolution photorealistic images for nearby views. The representation is metric, with absolute scale, supporting metric camera movements. Experimental results demonstrate that SHARP delivers robust zero-shot generalization across datasets. It sets a new state of the art on multiple datasets, reducing LPIPS by 25–34% and DISTS by 21–43% versus the best prior model, while lowering the synthesis time by three orders of magnitude.
SHARP synthesizes a photorealistic 3D representation from a single photograph in less
than a second. The synthesized representation supports high-resolution rendering of nearby views,
with sharp details and fine structures, at more than 100 frames per second on a standard GPU. We
illustrate on photographs from Unsplash.
@inproceedings{Sharp2025:arxiv,
title = {Sharp Monocular View Synthesis in Less Than a Second},
author = {Lars Mescheder and Wei Dong and Shiwei Li and Xuyang Bai and Marcel Santos and Peiyun Hu and Bruno Lecouat and Mingmin Zhen and Ama"{e}l Delaunoyand Tian Fang and Yanghai Tsin and Stephan R. Richter and Vladlen Koltun},
journal = {arXiv preprint arXiv:2512.10685},
year = {2025},
url = {https://arxiv.org/abs/2512.10685},
...
Read the original on apple.github.io »
D-Bus is a disgrace to the Linux desktop
There has been quite a bunch of interest in this post, I’ve added a FAQ section at the bottom.
I will be adding stuff there if more FAQs pop up. Thanks!
D-Bus was introduced by GNOME folks about 20 years ago. For software made only 20 years ago, as opposed to 40 like X, it’s surprisingly almost equally as bad.
As a service, D-Bus is incredibly handy and useful, and overall, I believe the idea should absolutely be used by more apps. However, the implementation… oh boy.
Everyone has heard about D-Bus, but what is it, actually?
D-Bus’ idea is pretty simple: let applications, services and other things expose methods or properties in a way that other apps can find them in one place, on the bus.
Let’s say we have a service that monitors the weather. Instead of each app knowing how to talk to each weather service, or even worse, implementing one itself, it can connect to the bus, and see if any service on the system exposes some weather API, then use it to get weather.
Great, right? And yeah, the idea is wonderful.
D-Bus is a lenient, unorganized and forgiving bus. Those three add to one of the biggest, fundamental, and conceptual blunders to any protocol, language or system.
The most important blunders are: Objects on the bus can register whatever they want. Objects on the bus can call whatever they want, however they want, whenever they want. The protocol allows and even in a sense incentivises vendor-specific unchecked garbage.
What this means in practice is the definition of “Garbage in, garbage out”.
Okay, apps need to communicate, right? Well, in some way right? Where do we find the way?
Uhh… somewhere online, probably. Nobody actually knows because some of them are here, some there, many are unfinished, unreadable, or convoluted garbage docs, and no client follows them anyways.
Let’s take a look at some gems. These are actual docs
So is it a draft or widely used? source 1 and source 2
D-Bus standards are a mess. And that’s if we assume that implementors on both sides actually follow them (they often don’t, as we will learn in a moment…)
Okay, let’s say we have a standard and we understand it. Great! Now…
nobody gives a shit, literally. Even if you read a spec, nothing, literally nothing, guides, ensures, or helps you stick to it. NOTHING. You send anonymous calls with whatever bullshit you want to throw in.
Let me tell you a story…
Back when I was writing xdg-desktop-portal-hyprland, I had to use a few dbus protocols (xdg portals run on dbus) to implement some of the communication. If we go to the portal documentation, we can find the protocols.
Great! So I implemented it. It worked more-or-less. Then, I implemented restore tokens, which allow the app to restore its previously saved share configuration. And here, dbus falls apart.
None of the apps, I repeat, fucking none followed the spec. I wrote a spec-compliant mechanism and nothing fucking used it. Why? Simple, they all used a different spec, which came out of fucking nowhere, I legit couldn’t find a single doc with it. What I ended up doing was I looked at KDE which already had an impl and mimic’d that.
What the actual fuck. “Spec” my ass.
Fun fact: THIS IS STILL THE CASE! The spec advertises a “restore_token” string prop on SelectSources and Start, where no app does this and uses “restore_data” in “options”.
Let me just say one word: variants. What in the actual, everloving fuck? Half of D-Bus protocols have either this BS, or some “a{sv}” (array of string + variant) passed somewhere.
Putting something like this, even allowing that in a core spec should be subject to a permanent ban from creating software. What this allows, and even incentivises, is for apps to send random shit over the wire and hope the other side understands it. (see the example above in part 2, prime dbus) This has been tried many times, most notably in X with atoms, and it has time and time again proven to only bring disaster.
Ever heard of permissions? Neither have D-Bus developers. D-Bus is as insecure as it gets. Everybody sees everything and calls whatever. If the app doesn’t have a specific security mechanism, cowabunga it is. Furthermore, there is no such thing as a “rejection” in a universal sense. Either the protocol invents its own “rejection” or just… something happens, god knows what, actually.
This is one of the prime reasons flatpak apps can not see your session bus.
Ever seen kwallet or gnome-keyring? Yeah, these things. These are supposed to be “secret storage” for things like signing keys, passwords, etc. They can be protected by a password, which means they are secure… right?
No. No, they aren’t. These secrets may be encrypted on disk, which technically prevents them from being stolen if your laptop is stolen. If you just cringed at that because disk encryption has been a thing for 20 years now or so, you’re not alone.
However, the best thing is this: any app on the bus can read all secrets in the store if the store is unlocked. No, this is not a fucking joke. Once you input that password, any app can just read all of them without you noticing.
This is the real stance of GNOME developers on the issue:
Honestly, I am at a loss of words as to how to describe this without being extremely rude.
Security so good microsoft might steal it for their recall.
Enough is enough
I’ve had enough of D-Bus in my apps. I would greatly benefit from a session (and later, system) bus for my ecosystem, but I will not stand the absolute shitfest that D-Bus is.
That is why, I’ve decided to take matters into my own hands. I am writing a new bus. From the ground up, with zero copying, interop, or other recognition of D-Bus. There are so many stupid ideas crammed into D-Bus that I do not wish to have any of them poison my own.
A lot of people quote this xkcd comic for each new implementation. However, this is not exactly the same.
For example, with wayland, when you switch, you abandon X. You cannot run an X11 session together with a wayland one, simply not how it works.
You can, however, run two session buses. Or three. Or 17. Nothing stops you. That’s why gradual migration is absolutely possible. Sure, these buses can’t talk to each other, but you can also create a proxy client that can “translate” dbus APIs into new ones.
The first thing I focused on was hyprwire. I needed a wire protocol anyways for hypr* stuff like hyprlauncher, hyprpaper, etc.
The wire protocol is inspired by how Wayland decided to handle things. Its most important strengths are: consistency: the wire itself enforces types and message arguments. No “a{sv}”, no “just send something lol” simplicity: the wire protocol is fast and simple. Nobody needs complicated struct types, these just add annoyances. speed: fast handshakes and protocol exchanges, connections are estabilished very quickly.
Hyprwire is already used for IPC in hyprpaper, hyprlauncher and parts of hyprctl, and has been serving us well.
The bus is called hyprtavern, as it is not exactly what D-Bus is, but it’s more like a tavern.
Apps register objects on the bus, which have exposed protocols and key properties defined by the protocols. These objects can be discovered by other apps connecting to the bus.
In a sense, hyprtavern acts like a tavern, where each app is a client, that can advertise the languages they speak, but also go up to someone else and strike up a conversation if they have a language in common.
Some overall improvements over D-Bus, in no particular order: Permissions: baked in, in-spec permissions. Suitable for exposing to sandboxed apps by default. Strict protocols: don’t know the language? Don’t poison the wire. Worth noting this does not stop you from making your own extensions, it just enforces you stay in-spec. Simplified API: D-Bus has a lot of stupid ideas (shoutout broadcast) that we intentionally do not inherit. Way better defaults: The core spec also includes a few things that are optional (and dumb) in D-Bus like an actually secure kv store.
With relation to the Secrets API discussed a bit above, I wanted to mention kv.
hyprtavern-kv is the default implementation of the core protocol for a kv store. A kv store is a “key-value” store, which means apps register values for “keys”, e.g. “user_secret_key = password”.
This is essentially what D-Bus Secrets API does, but instead of being a security joke, it’s actually secure by-design.
Any app can register secrets, which only it can read back. Secrets cannot be enumerated. This means that when “/usr/bin/firefox” sets a “passwords:superwebsite.com = animebooba”, an app called “~/Downloads/totally_legit.sh” can not see the value, or the key, or that firefox even set anything.
This also (will) work with Flatpak, Snap and AppImage applications by additionally using their Flatpak ID, Snap ID or AppImage path respectively. This is not implemented, but planned.
This kv store is always encrypted, but a default password can be used which means it will be unlocked by default and the store file can be trivially decrypted. The difference is that if you set a password here, it will actually be secure, even if an app with access to the bus tries to steal all of the secrets.
Additionally, this protocol is core. It must be implemented by the bus, which means all apps can benefit from a secure secret storage.
No, absolutely not. I started work on it just recently, and I still need to cook a bit. It’s coming though, really!
I hope to get it widely used within hypr* by 0.54 of hyprland (that is the release after the upcoming 0.53).
No, definitely not at the beginning. But, it’s an easier transition than X11 -> Wayland, and I didn’t expect Hyprland to be widely adopted either, but here we are.
Time will tell. All I can say is that it is just better than D-Bus.
An important part of adoption will probably be bindings to other languages. The libraries are all in C++, but since they aren’t very big (by design), making Rust / Go / Python bindings shouldn’t be hard for someone experienced with those languages.
The wire format is also simple and open, so you could also write a Memory-Safe™ libhyprwire in Rust for example.
D-Bus has been an annoyance of mine for years now, but I finally have the ecosystem and resources to write something to replace it.
Let’s hope we can make the userspace a bit nicer to work with :)
This post is quickly gathering attention so I will answer some FAQs:
The wheel is fundamentally broken. D-Bus is unfixable due to its core principles being terrible.
As I’ve said, hyprtavern is a heavy WIP. Once it is ready for app developers, which I hope to be done with within a month, I will write extensive docs about both the wire protocol (so that you can implement it yourself if you don’t like libhyprwire) and the tavern itself.
Why not use wayland?
I’ve implemented a few improvements to hyprwire for bus usage (e.g. array types), and additionally wayland is not meant to be a generic IPC protocol. Connecting is restricted to sockets and WAYLAND_DISPLAY, for example. One could fork it, but at this point, it’s better to write your own impl.
Yes. You can write a for example hyprtavern-dbus-notification-proxy which sets up a dbus notification service and exposes the events as an appropriate tavern protocol. Worth noting of course such a protocol doesn’t exist yet as I am working on the core spec atm. There will be though.
Why C++ and not memory safe rust?
Because I am a C++ dev. You are free to reimplement the bus / wire in Rust. You are also free to write bindings. BSD-3.
Hyprland (and related) historically have had less and less memory issues over time thanks to our shift to hyprutils and very common (almost religious) refcounting practices. However, nothing’s stopping you from rewriting things in Rust.
The portal docs are actually correct, you just were reading the wrong ones
Yes, a person on hackernews named mahkoh pointed this out (thanks!). This doesn’t change the fact that: the docs are poorly separated, such that I could not easily find that information. the names for things for app -> portal and portal -> portal impl are different (wtf, what are you guys smoking?) the website he links didn’t exist (IIRC at all, or at least in its current state, IIRC it was a mostly blank page) back when I was impl’ing it. most importantly: DBus allows you to do whatever while a real protocol would enforce the types outright and forbid invalid usage.
Fragmentation, gnome and kde have different needs
Hasn’t stopped them from both using D-Bus to this day. Apparently you can have one bus for both.
What about symlinks in paths?
Just resolve them. For chrooted apps, both Linux and BSD provide a way to get root from pid. I’ve been told it will break on Nix, but I will let the Nix folks figure this one out as I don’t use it.
Where can we follow development or see the protocol?
Hyprwire’s wire format is not yet documented, but it’s quite simple. Docs will be written by me once tavern’s ready.
For the core tavern protocol spec WIP, please see here. Please note it’s of course a WIP so breaking changes do happen as I try to accomodate more usecases. Feedback is welcome though, feel free to leave feedback if you’re an app or DE developer with a specific usecase in mind.
Look, I realize in the current UNIX space it’s impossible to 100% verify regular system apps, but there are two improvements here.
Firstly, we raise the barrier to steal secrets significantly. An attacker now needs to know what app they are inside, what secrets that app may store (apps themselves can’t enumerate either). Additionally, it needs to do more than just a single query, which becomes more detectable. It’s always better to at least know you’ve been hacked.
Two, this is a requirement for sandboxed apps to be able to interact with the tavern. The entire idea of the security model is so that flatpak apps don’t need to be restricted from using the session bus anymore and we don’t need a proxy (like xdp).
...
Read the original on blog.vaxry.net »
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.