10 interesting stories served every morning and every evening.
The decades-long battle over lawful access entered a new phase yesterday with the introduction of Bill C-22, the Lawful Access Act. This bill follows the attempt last spring to bury lawful access provisions in Bill C-2, a border measures bill that was the new government’s first piece of substantive legislation. The lawful access elements of the bill faced an immediate backlash given the inclusion of unprecedented rules permitting widespread warrantless access to personal information. Those rules were on very shaky constitutional ground and the government ultimately decided to hit the reset button on lawful access by proceeding with the border measures in a different bill.
Lawful access never dies, however. Bill C-22 cover the two main aspects of lawful access: law enforcement access to personal information held by communication service providers such as ISPs and wireless providers and the development of surveillance and monitoring capabilities within Canadian networks. In fact, the bill is separated into two with the first half dealing with “timely access to data and information” and the second establishing the Supporting Authorized Access to Information Act (SAAIA).
I anticipate providing extensive coverage of the bill on both this blog and my podcast. My initial take is that the access to data and information piece of the bill is much improved. The earlier Bill C-2 iteration of a new information demand power was astonishing in its breadth (covering far more than just communications providers by targeting anyone who provides a service in Canada including physicians and lawyers) and demands for warrantless disclosure of personal information in direct contradiction to recent Supreme Court of Canada jurisprudence.
The government has scrapped that approach by shifting to a new “confirmation of service” demand power. This would allow law enforcement to demand that telecom providers (not any service provider) confirm whether they provide service to a particular person. The other subscriber information would be subject to a new production order reviewed and approved by a judge. This would address the longstanding police complaint that they may do considerable work seeking information about a subscriber at a provider only to learn that the person isn’t a customer and they start over with someone else.
These new rules contain other orders and rules on voluntary disclosure, challenging the requests, exigent circumstances, and foreign orders for the same information. I plan to unpack these rules in the coming weeks. For example, there are concerns about the thresholds that the production orders envision, namely the low “reasonable grounds to suspect” standard. However, the main takeaway here is that the government has significantly limited the scope of warrantless information demand powers, now focusing solely on telecommunications providers and whether they provide service to a particular individual. Access to more personal information will require oversight. That’s a major concession and highlights how Bill C-2 was too broad, dangerous from a privacy perspective, and unlikely to pass constitutional muster.
If that is the good news, the bad news is very bad. The SAAIA, which establishes new requirements for communications providers to actively work with law enforcement on their surveillance and monitoring capabilities are largely unchanged from Bill C-2. In fact, there are elements involving data retention that are even worse. The government will point to increased oversight — ministerial orders must now be approved by the Intelligence Commissioner — but the concerns regarding surveillance capabilities, security vulnerabilities, secrecy, and cross-border data sharing remain.
The SAAIA has huge implications for network providers as they envision providing law enforcement with direct access to provider networks to test capabilities for data access and interception. The bill introduces a new term — “electronic service provider” — that is presumably designed to extend beyond telecom and Internet providers by scoping in Internet platforms (Google, Meta, etc.). Those international services are now key players in electronic communications (think Gmail or WhatsApp), though some may be beyond this form of regulation (eg. Signal if you don’t inadvertently add people to chat groups).
The definition of an ESP is:
a person that, individually or as part of a group, provides an electronic service, including for the purpose of enabling communications, and that (a) provides the service to persons in Canada; or (b) carries on all or part of its business activities in Canada.
“a service, or a feature of a service, that involves the creation, recording, storage, processing, transmission, reception, emission or making available of information in electronic, digital or any other intangible form by an electronic, digital, magnetic, optical, biometric, acoustic or other technological means, or a combination of any such means.”
All electronic service providers are subject to obligations to “provide all reasonable assistance, in any prescribed time and manner, to permit the assessment or testing of any device, equipment or other thing that may enable an authorized person to access information.” Moreover, all are required to keep such requests secret.
But beyond the basic obligations, the government will identify “core providers” who will be subject to additional regulations. These may include:
(a) the development, implementation, assessment, testing and maintenance of operational and technical capabilities, including capabilities related to extracting and organizing information that is authorized to be accessed and to providing access to such information to authorized persons;
(b) the installation, use, operation, management, assessment, testing and maintenance of any device, equipment or other thing that may enable an authorized person to access information;
(c) notices to be given to the Minister or other persons, including with respect to any capability referred to in paragraph (a) and any device, equipment or other thing referred to in paragraph (b); and
(d) the retention of categories of metadata — including transmission data, as defined in section 487.011 of the Criminal Code — for reasonable periods of time not exceeding one year.
Note that the retention of metadata found in (d) is new. It was not in Bill C-2, so this bill actually expands the scope of obligations. The new bill contains some limits on data retention:
4) Paragraph (2)(d) does not authorize the making of regulations that require core providers to retain information that would reveal
(a) the content — that is to say the substance, meaning or purpose — of information transmitted in the course of an electronic service;
(b) a person’s web browsing history; or
(c) a person’s social media activities.
The bill also retains an exception for systemic vulnerabilities, which states:
A core provider is not required to comply with a provision of a regulation made under subsection (2), with respect to an electronic service, if compliance with that provision would require the provider to introduce a systemic vulnerability related to that service or prevent the provider from rectifying such a vulnerability.
There remain concerns that is insufficient and that there are real risks that networks may be made less secure by virtue of these rules with the changes kept secret from the public. Moreover, as Kate Robertson of the Citizen Lab has discussed (including on the Law Bytes podcast), many of these rules appear geared toward global information sharing, including compliance with the Second Additional Protocol to the Budapest Convention (2AP) and the CLOUD Act.
There is much to unpack with this section including the ability to challenge orders, the secrecy associated with the system, oversight, and costs. I plan to cover these as well but for the moment it is sufficient to conclude that Bill C-22’s SAAIA envisions a significant change to how government agencies interact with Canadian communications networks and network providers raising enormous privacy and civil liberties concerns. The government may have taken warrantless access to subscriber information off the table, but there remains serious privacy concerns associated with its lawful access plans.
...
Read the original on www.michaelgeist.ca »
“They pulled me out instead and began jumping on my back,” he said. “Then they took me to a corner and questioned me about who had been in the car. I told them it was my mother and father. They accused me of lying and started beating me.”
...
Read the original on www.bbc.com »
While corruption exists in both democracies and autocracies, its social consequences may differ fundamentally across regime types. Democratic norms of equality and impartiality make trust highly sensitive to institutional failure. We theorize two mechanisms—normative amplification and representative contagion—by which corruption erodes trust more in democracies. In democracies, corruption violates core fairness norms and implicates the citizenry that elected corrupt officials. In autocracies, corruption is expected and elites are seen as separate from ordinary citizens. To test this theory, we perform multilevel analysis of data from 62 countries combining individual-level survey responses with country-level democratic quality indicators.We first demonstrate that perceiving corruption predicts lower generalized trust almost universally across individuals. We then show this individual-level psychological mechanism is considerably stronger in democracies than in autocracies, even controlling for inequality and country-level corruption.These findings reveal an asymmetric vulnerability: the accountability structures that make democracies function also make their social capital fragile. This has important implications for understanding democratic resilience, as corruption threatens the social trust necessary for democratic cooperation differently across regime types.
Democracy may be uniquely sensitive to certain threats. Recent scholarship on democratic backsliding reveals how democracies can erode from within when norms decay and institutions weaken (Levitsky and Ziblatt, 2018). In this article, we identify a specific sensitivity: in democracies, social capital appears to be particularly responsive to corruption. We theorize that this sensitivity arises from democracy’s foundational commitments to equality and impartiality. These commitments may create two psychological mechanisms that amplify corruption’s impact on social trust. First, normative amplification: in democracies, where universalism is the professed ideal, corruption may signal a breach of the social contract. Citizens may infer that if the institutions meant to embody fairness are compromised, the wider society is untrustworthy. In autocracies, by contrast, where particularism is expected, corruption confirms business as usual rather than signaling societal rot. Second, representative contagion: in democracies, corrupt officials are viewed as emanating from “the people” through elections, potentially implicating the citizenry itself. In autocracies, predatory elites are seen as a distinct class, quarantining interpersonal trust from elite malfeasance. If these mechanisms operate as theorized, then the individual-level psychological process linking corruption perceptions to social distrust should be regime-dependent—strong in democracies, weak in autocracies.A study by You (2018) provides suggestive evidence for our thesis. Using country-level data on social trust and corruption, and studying democracies and autocracies separately, he demonstrated that more corruption is strongly associated with weaker social trust among democracies—but not among autocracies. This striking pattern is consistent with our theory. However, as the finding was obtained at the aggregate level, it leaves open whether it reflects genuine differences in how individuals psychologically process corruption, or whether it is an artifact of other phenomena.The present paper aims to provide individual-level evidence for how trust among people in democracies may be especially sensitive to corruption. After replicating You’s country-level findings in more recent data from 62 countries—covering the full spectrum from autocracies like Russia and Iran to stable liberal democracies like New Zealand and Netherlands—we use multilevel modeling to test whether a corresponding individual-level pattern exists. We find that individuals’ perceptions of corruption are associated with lower generalized trust in democracies, while this same individual-level association is substantially weaker or absent in autocracies. These findings suggest an asymmetry in how corruption relates to social trust across regime types. While democracies foster high social trust through their institutions, they may simultaneously make that social capital more vulnerable to perceptions of institutional failure. This may be the price of accountability: the very norms that make democracies function—equality, representation, transparency—may also ensure that institutional failures resonate in citizens’ social worldviews.
We combine individual-level data from the most recent wave (2017–2022) of the World Values Survey (WVS; Haerpfer et al., 2022) with country-level indicators (averaged across the same period) of democratic quality from the Varieties of Democracy (V-Dem) project (Coppedge et al., 2025; Pemstein et al., 2025). Our analysis includes 62 countries for which we have complete data on all variables of interest. We use WVS Wave 7 (2017–2022) because it contains the corruption perception module required for our analysis. Although a Joint EVS/WVS dataset exists with 92 countries, the European Values Survey does not include the corruption perception items, making it unsuitable for our purposes. Our 62 countries therefore represent the full set of countries with complete data on perceived corruption, generalized trust, and democratic quality indicators. The WVS provides our key individual-level measures. Generalized trust is measured by the standard question: “Generally speaking, would you say that most people can be trusted or that you need to be very careful in dealing with people?” Responses are coded 1 for “most people can be trusted” and 0 otherwise. Perceived corruption is measured by asking respondents how widespread they believe corruption to be among public officials, on a scale from 1 (there is no corruption in my country) to 10 (there is abundant corruption in my country). While corruption perceptions may not perfectly align with objective corruption levels (Charron, 2016), perceptions are presumably what directly affect individual trust judgments.We include standard individual-level controls: age (five categories: 18–29, 30–39, 40–49, 50–59, 60+), gender (male/female), education (three levels based on ISCED categories: low, medium, high), household income (three levels based on the WVS 10-point scale: low [1–3], medium [4–7], high [8–10]), and employment status (three categories: employed [full-time, part-time, or self-employed], not in labor force [retired, homemaker, or student], and unemployed/other).From V-Dem, we use two measures of democratic quality: the Regimes of the World (RoW) classification and the Liberal Democracy Index. The RoW (Lührmann et al., 2018) is a categorical measure distinguishing closed autocracies (no multiparty elections), electoral autocracies (multiparty elections that are not free and fair), electoral democracies (free elections but limited liberal protections), and liberal democracies (free elections with strong liberal protections). Following our theoretical framework—which emphasizes that the mechanisms of normative amplification and representative contagion require genuine electoral accountability—we create a binary classification: democracies (electoral and liberal democracies, RoW = 2–3) versus autocracies (closed and electoral autocracies, RoW = 0–1). Electoral autocracies are classified as autocracies because, despite having multiparty elections, these elections lack the competitive integrity necessary for the representative contagion mechanism to operate.In contrast to the categorical RoW measure, the Liberal Democracy Index is a continuous measure, which captures both electoral and liberal dimensions of democracy, including the quality of elections, checks on executive power, equality before the law, and individual liberties. This index ranges from 0 (least democratic) to 1 (most democratic). We use the Liberal Democracy Index rather than the Electoral Democracy Index (also known as Polyarchy) because our theoretical mechanisms—normative amplification and representative contagion—depend on features beyond electoral procedures. The liberal component of the Liberal Democracy Index captures the rule of law, checks on executive power, and equality before the law, which are central to our argument that corruption in democracies violates norms of impartiality. In robustness analyses, we also test whether results hold using the Electoral Democracy Index as an alternative moderator.Our research design tests three progressively refined hypotheses outlined above.To test H1, we calculate country-level aggregates of perceived corruption and generalized trust, then examine whether their correlation differs when calculated separately among democracies and autocracies as defined by the RoW categorization. H1 predicts a strong negative correlation between perceived corruption and generalized trust among democracies but a weaker correlation among autocracies.The above dichotomous analysis matches the original approach of You (2018). As a continuous alternative, we also examine the interaction between perceived corruption and the Liberal Democracy Index in a multiple regression analysis of country-level generalized trust. H1 predicts a negative interaction, representing a stronger negative effect of corruption in more democratic countries.To test whether the aggregate pattern reflects genuine individual-level mechanisms (H2) and whether these mechanisms vary by regime type (H3), we estimate a random-intercept, random-slope multilevel logistic regression model. This approach models the hierarchical structure of the data, with individuals nested within countries. Standard errors appropriately reflect uncertainty at both levels.At Level 1 (individual), generalized trust is modeled as a function of perceived corruption, controlling for demographic characteristics (age, gender, education, income, and employment status). At Level 2 (country), we allow both the intercept and the slope for perceived corruption to vary across countries. Crucially, we include a cross-level interaction between perceived corruption and the Liberal Democracy Index (treated as a continuous variable), which directly tests H3: whether the individual-level corruption-trust relationship varies with democratic quality. In other words, the cross-level interaction estimates whether the psychological mechanism linking corruption perceptions to trust operates differently depending on institutional context.Formally, the model can be expressed as follows:where is the probability of expressing trust for individual i in country j; is perceived corruption (grand-mean centered); is a vector of demographic controls; is the Liberal Democracy Index (grand-mean centered); is the cross-level interaction coefficient testing H3; and , are country-level random effects assumed to follow a bivariate normal distribution.For computational efficiency with large sample sizes (>85,000 individuals), we use an aggregated binomial approach. Observations are grouped by country, corruption level, and demographic categories, and trust incidence is modeled using a binomial distribution. This yields estimates identical to individual-level analysis but with substantially improved computational performance. Both perceived corruption and the Liberal Democracy Index are grand-mean centered to facilitate interpretation of main effects.We also conduct robustness checks including: (1) adding competing cross-level moderators to test whether these factors can account for the democracy moderation; (2) testing press freedom, the Electoral Democracy Index, and state resilience (Travaglino et al., 2025) as alternative moderators in separate models (as their high correlations with liberal democracy, r = 0.90 and 0.78 respectively, preclude simultaneous estimation); and (3) leave-one-out analyses to ensure no single country drives the results.For competing moderators, we include economic inequality (Gini coefficient from SWIID; Solt, 2020), political polarization (from V-Dem), and measures of digital information access. We include both social media use as a self-reported news source (country-level mean from WVS item on frequency of obtaining political information from social media) and internet penetration (percentage of population using the internet; World Bank, 2024).If our theory is correct, we should observe a negative main association between corruption perceptions and trust at the individual level (H2) and a negative cross-level interaction, indicating that the corruption-trust relationship is stronger (more negative) in more democratic countries (H3).
Table 1 presents the 62 countries, ordered by the Liberal Democracy Index, with their results for generalized trust and perceived corruption. Figure 1 tests H1 by showing how country-level generalized trust varies with perceived corruption, separately for democracies and autocracies. In support of H1, the pattern strikingly differs between regime types. Among democracies, there is a strong negative relationship: countries with higher perceived corruption have substantially lower generalized trust. Among autocracies, this relationship is considerably weaker—replicating You’s (2018) finding in more recent data and with a theory-driven operationalization of regime type based on the Regimes of the World classification. The alternative analysis using the continuous Liberal Democracy Index as a moderator of the effect of perceived corruption on generalized trust confirms this pattern: the country-level interaction between perceived corruption and liberal democracy is negative (B = −12.07, 95% CI [−22.36, −1.77], p = 0.022).The country-level association between corruption and trust differs between regime types. Scatter plot of country-level perceived corruption (x-axis) and generalized trust (y-axis). Each point represents a country, with shape and color indicating regime type based on the Regimes of the World classification. Regression lines are shown separately for democracies (electoral and liberal democracies) and autocracies (closed and electoral autocracies). The negative relationship between corruption and trust is strong among democracies and much weaker among autocracies.To test H2 and H3 we now turn to the multilevel analysis, which models how individuals’ corruption perceptions are associated with their trust while allowing this relationship to vary across countries. In support of H2, the main association between perceived corruption and generalized trust is negative (B = −0.12, 95% CI [−0.14, −0.11], p B = 0.79, 95% CI [0.01, 1.56], p = 0.047), indicating that at average levels of perceived corruption, individuals in more democratic countries exhibit higher generalized trust.In support of H3, the cross-level interaction between perceived corruption and liberal democracy is negative (B = −0.16, 95% CI [−0.22, −0.10], p Figure 2 illustrates this pattern by plotting country-specific corruption-trust slopes against democratic quality. The slopes are extracted from a model without the cross-level interaction, showing the empirical variation that the interaction term captures. The blue line represents the predicted slope from the main model’s interaction term. Corruption slopes tend to be strongly negative in countries with high democratic quality while being close to zero in countries with low democratic quality.Liberal democracy and the individual-level corruption-trust relationship. Each point represents one country. The x-axis shows the V-Dem liberal democracy index; the y-axis shows the country-specific corruption slope extracted from a random-slopes model without the cross-level interaction. More negative values indicate stronger negative associations between perceived corruption and trust. The blue line shows the predicted relationship from the main model’s cross-level interaction. The strong negative slope demonstrates that as democratic quality increases, the individual-level psychological mechanism linking corruption perceptions to social distrust becomes substantially stronger.To translate these results into substantive terms, we calculated predicted probabilities of expressing trust at different levels of corruption perception and democracy, illustrated in Figure 3. For a highly democratic country (90th percentile of the Liberal Democracy Index, the solid line in Figure 3), moving from low perceived corruption (4 on the 1–10 scale, which is the 10th percentile of observed values) to high perceived corruption (10 on the scale, 90th percentile) is associated with a decrease in the probability of trusting others from approximately 34 to 14%. The same change in corruption perception is associated with a much smaller decrease, from approximately 17 to 11% in a highly autocratic country (10th percentile of the Liberal Democracy Index, the dashed line in Figure 3).Predicted probability of trusting others by perceived corruption and democratic quality. Lines show model-predicted probabilities at the 10th (low democracy), 50th (medium democracy), and 90th (high democracy) percentiles of the Liberal Democracy Index. The steeper slope for high-democracy countries illustrates the stronger corruption-trust link in democratic contexts.We conducted several robustness checks. First, we added economic inequality (Gini coefficient) as a competing cross-level moderator. The democracy × corruption interaction remains essentially unchanged in this model (B = −0.16, 95% CI [−0.22, −0.1], p B = −0.16, 95% CI [−0.22, −0.09], p B = −0.18, 95% CI [−0.26, −0.11], p Second, we tested whether alternative country-level characteristics could serve as moderators. Press freedom showed the same moderating effect to liberal democracy (B = −0.16, 95% CI [−0.22, −0.1], p B = −0.16, 95% CI [−0.22, −0.1], p B = −0.02, 95% CI [−0.03, −0.01], p = 0), suggesting that democratic institutions rather than state capacity drive the moderation.Third, we conducted leave-one-out analyses, re-estimating the model 62 times, each time excluding one country. The cross-level interaction coefficient ranged from −0.17 to −0.15 across these analyses, with no single country driving the results.
This article provides systematic individual-level evidence that the corruption-trust association differs across regime types. Previous research documented this pattern at the aggregate level (You, 2018) but could not determine whether it reflected genuine differences in individual-level psychological processes or merely compositional effects. By measuring country-specific individual-level coefficients and showing they vary systematically with democratic quality, we provide evidence consistent with the view that regime type shapes how corruption perceptions relate to social trust. Our findings suggest an asymmetry in how corruption relates to trust across regime types. In autocracies, the individual-level association between corruption perceptions and social distrust appears weak or absent, which may help explain how some autocratic regimes combine high corruption with relatively high generalized trust (Figure 1). In democracies, this association is substantially stronger. This pattern suggests that government quality in democracies may matter not merely for administrative efficiency or economic performance, but potentially for the social conditions that support democratic governance. Institutional integrity may affect the social trust that facilitates democratic cooperation—from voluntary tax compliance to electoral participation to civic engagement.These findings speak to contemporary debates about democratic backsliding and resilience. They suggest that corruption scandals in established democracies should perhaps not be viewed merely as criminal justice matters or administrative failures, but as potential threats to social cohesion. This may help explain a puzzling feature of contemporary politics: why relatively minor corruption scandals can generate significant political crises in established democracies, while autocracies weather far more egregious corruption with limited social consequence. The difference may lie not in the severity of the corruption per se, but in how institutional frameworks shape how citizens interpret and respond to corruption.Our results also have potential implications for anti-corruption efforts. Standard approaches focus on technical reforms: strengthening audit institutions, improving procurement transparency, raising civil servant salaries, and enhancing criminal enforcement. While these measures may reduce corruption levels, our findings suggest they may be insufficient to address the social consequences of corruption in democracies. If corruption perceptions are indeed associated with reduced social trust in democratic contexts, then anti-corruption strategies in democracies may need to be accompanied by efforts to rebuild and maintain social trust: swift, visible accountability when corruption is discovered; symbolic reaffirmation of democratic equality norms; and frank public discourse about how corruption relates to democratic values.These findings also suggest that government communication about transparency and anti-corruption efforts may matter for social trust. Because perceptions of corruption, and not merely actual corruption, appear to drive the trust erosion we document, proactive communication about institutional integrity may be valuable. Democratic governments could invest in publicizing accountability measures, successful prosecutions of corrupt officials, and ongoing institutional reforms. Such communication campaigns would not substitute for substantive anti-corruption work but could complement it by ensuring that citizens are aware of their government’s commitment to impartiality. This may be especially important in democracies, where our findings suggest that trust is particularly sensitive to perceived corruption.More broadly, these findings contribute to understanding potential micro-foundations of regime stability. While much scholarship focuses on how institutions shape elite behavior, our results suggest that institutions may also shape mass psychology in ways relevant for regime dynamics. Democratic institutions may create citizens whose social trust is more responsive to perceived institutional failure than citizens in autocracies.We acknowledge several limitations of this study. First, and most importantly, we theorize but do not directly test the specific mechanisms we propose—normative amplification and representative contagion. Our data show that the corruption-trust association varies by regime type, but we cannot observe the psychological processes that produce this variation. Future experimental research could directly manipulate normative frames (e.g., presenting corruption as violating equality norms versus as typical elite behavior) and representative connection (e.g., emphasizing that officials were elected by citizens versus appointed by elites) to test whether these factors moderate how corruption information affects trust. Survey research could also measure perceived norm violation and representative identification as mediators. Until such studies are conducted, our mechanistic account remains theoretical.Second, our cross-sectional individual-level data cannot establish the causal direction from corruption perceptions to trust. The association we observe is consistent with corruption perceptions reducing trust, but reverse causality is also plausible: individuals with generally low trust may be more inclined to perceive corruption. For evidence supporting the corruption-to-trust direction, we rely on the experimental literature (Rothstein and Eek, 2009; Martinangeli et al., 2024), which demonstrates that exposure to information about corruption causally reduces generalized trust. Our contribution is to show that this association varies systematically by regime type, but we cannot rule out that regime type also moderates reverse-causal processes.Third, our cross-sectional design cannot capture within-country change over time. Longitudinal analysis tracking how the within-country corruption-trust relationship shifts after prolonged democratization or backsliding would provide stronger evidence for our theoretical account. Fourth, we focus on liberal democracy as the primary moderator, and do not examine the separate roles of different institutional features such as judicial independence, press freedom, and electoral integrity. These features are highly correlated in our data, making it difficult to isolate their independent contributions.
Eriksson K and Vartanova I (2026) The price of accountability: corruption erodes social trust more in democracies than in autocracies. Front. Polit. Sci. 8:1779810. doi: 10.3389/fpos.2026.1779810This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms. All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article or claim that may be made by its manufacturer is not guaranteed or endorsed by the publisher.
...
Read the original on www.frontiersin.org »
‘It beggars belief’: MoD sources warn Palantir’s role at heart of government is threat to UK’s security ‘It beggars belief’: MoD sources warn Palantir’s role at heart of government is threat to UK’s security Experts say that claims UK data remains under government ownership miss the point that the company has the capability to build its own detailed picture of the British population, and even infer state secrets. Report by Charlie Young and Carole Cadwalladr UK Prime Minister Keir Starmer and Louis Mosley, head of Palantir Technologies UK. Graphic: the NervePalantir, the US AI surveillance and security firm with hundreds of millions of pounds in UK government contracts, poses “a national security threat to the UK”, according to two anonymous high-level sources working with the Ministry of Defence. The insiders, who are senior systems engineers with knowledge of the Palantir software systems the MoD is using, have come forward to speak after the published an investigation in January that revealed Palantir had at least £670m worth of contracts across the UK government, including £15m with the UK nuclear weapons agency. In that investigation, data and security experts claimed that the contracts with the firm, owned by Peter Thiel, are a critical risk to Britain’s national security. At the time, an MoD spokesman told the that “all data remains sovereign and under the ownership of the MoD”. However, the MoD insiders, who have detailed knowledge of the underlying technology, say such statements are “ignorant” and/or misleading. It’s believed to be the first time individuals currently working with the ministry have spoken out about the national security risks Palantir poses. They are doing so because they believe that these are matters of the highest public interest and that parliament needs to act. The first, a senior systems engineer with the MoD who has decades of experience across the defence industry, told the : “Ministers clearly have a lack of understanding of Palantir’s technology. The statements with respect to sovereign data appear to be missing the point entirely. [They’re] missing the realities of data scraping, of aggregation, and the fact that Palantir is building its own rich picture of our nation that they can use for their own ends.“Allowing a single entity, foreign or domestic, to have such far-reaching, pervasive access is inherently dangerous. How our national cybersecurity centre has allowed this beggars belief.”At the heart of the claims is that while the underlying data may remain under the MoD’s control, any insights derived from that data do not. The implications of this, the insiders say, are far-reaching, especially because of the vast quantity of personal and other data the company has access to across UK government departments. One source said: “Palantir does not need to own the data or even have stewardship. They can extract, transform and exploit the metadata to build their own rich picture.”A second source, who has a background in intelligence, said Palantir probably has “a complete profile on the whole UK population. They have visibility into wildly different focus areas, yet their data is all condensed into one foreign supplier’s control/visibility. At the very least I’d call that a security risk.”’We find ourselves hitched to an erratic, dangerous, megalomaniac power in denial of its own limits. If Palantir knows everything, it just gives them huge extra leverage’Further, the sources claim that Palantir can see far more information than the government realises. Palantir can aggregate data from across different government datasets to generate top secret information, the has been told. One source described a hypothetical example where Palantir could combine three pieces of unclassified information to determine the location of a nuclear submarine. They said: “A parcel is sent out by a defence supplier with a Nato part number, an address and an arrival date. Even if the label is a QR code and isn’t human-readable, the data it contains would allow Palantir to know that a nuclear submarine would be in Diego Garcia on 4 April. Those three bits of information — the part number, Diego Garcia and 4 April — are, individually, completely unclassified. Together, they are secret.”Duncan McCann, head of tech and data at the Good Law Project, called the information “potentially explosive”. What the revelations show, he says, is that the UK has “given a private company such detailed access to our national security data that they can themselves infer things that they just aren’t supposed to know. For whose benefit is this?” The MoD did not respond to the press inquiries. However, in January, defence minister Luke Pollard told the House of Commons: “All data used and developed in Palantir’s software deployed across the Ministry of Defence will remain under the ownership of the MoD. We have clear contractual controls in place to ensure this as well as control over the data system that Palantir software sits upon.”The senior systems engineer said this statement was beside the point. He said: “Whether or not the UK technically owns the data is almost irrelevant. That’s like reading a secret love letter and saying the secrets in it are safe, just because you’ve promised never to copy it word for word or take it out of the room.”“When you have that mosaic built from UK sovereign defence, health, roads, power networks, power stations, and our major industrial bases, you have a detailed understanding of virtually every aspect of the sovereign United Kingdom. For an adversary, or even a nation with whom we have a special relationship, that picture is worth more than all the fine art on Earth.” A spokesman for Palantir said: “These entirely false claims have no grounding in fact and no serious media outlet would report them.”Concerns about Palantir’s central role in the UK’s critical infrastructure have heightened since January when President Trump threatened Greenland, a territory of Denmark, a Nato ally. Palantir is also being used in America to profile and target immigrants for removal by Immigration and Customs Enforcement officers. Palantir’s work with the US Department of Government Efficiency (Doge) helped synthesise tax and Homeland Security data to give Palantir access to the US’s first searchable citizen database, sparking cybersecurity concerns. It also underpins the AI systems being used by the US military in Venezuela, Gaza and the current operations in Iran. Martin Wrigley, a Liberal Democrat MP and member of the science, innovation and technology Commons select committee, said: “The UK needs sovereign capabilities in sovereign hands, and we need to remove companies closely associated with foreign political organisations that are a risk.”Upgrade to membership to fund the Nerve Jim Killock, executive director of the Open Rights Group, said:If the US has detailed insights across everything that the MoD does, then in the event of us being recalcitrant about helping the US bomb some country, they can remind us — subtly or unsubtly — what they might do in retaliation. “The Ministry of Defence or the prime minister must have some inkling of the risks, but now we find ourselves hitched to an erratic, dangerous, megalomaniac power in denial of its own limits. If Palantir knows everything, it just gives them huge extra leverage.”In contrast to the MoD, the Swiss army rejected Palantir’s technology, despite numerous pitches that included an approach by the head of Palantir UK, Louis Mosley. A key concern of the army, according to an official report seen by Swiss outlet Republik, was the “possibility that sensitive data could be accessed by the US government and intelligence services”.The has identified a previous case in which Palantir claimed proprietary rights to data insights after its contract was cancelled. In the early 2010s, the New York Police Department contracted Palantir to help find high-profile targets using data scraping and analysis. In 2017, it cancelled the contract, but Palantir claimed its platforms — Gotham and Foundry, the same systems used inside the UK government — created a unique ecosystem that sat on top of NYPD data. That meant any analysis derived from those platforms was, they claimed, Palantir’s intellectual property.As Buzzfeed reported at the time: “The emerging dispute is not over the data that the NYPD has fed into Palantir’s software, but over the analysis that the software has produced — all the insights.” This suggests Palantir could generate insights from UK government data that in turn could be deemed Palantir’s intellectual property. According to McCann, “a hallmark of almost every Palantir engagement is an attempt at secrecy, obfuscation — a real difficulty in finding out what is actually going on.We really don’t have the legal architecture to defend against this kind of big tech. The regulators are asleep at the wheel.”The Nerve is a fearless, independent media title launched by five former Guardian / Observer journalists: investigative journalist Carole Cadwalladr, editors Sarah Donaldson, Jane Ferguson and Imogen Carter and creative director Lynsey Irvine. We cover culture, politics and tech, brought to you in twice weekly newsletters on Tuesdays and Fridays (sign up ). We rely on funding from our community, so please also consider joining us as a paying member. You can read more about our mission
...
Read the original on www.thenerve.news »
On programming and other things.
Tutorials
How to create an internet radio station
How to delete emails on a POP3 server
How to encode your movies
How to keep yourself secure online
How to run Opera off a USB thumb drive
How to use BitTorrent to send files
Various
I don’t care for the joy of programmingLately I’ve gotten heavily back into making stuff, and it’s mostly because of LLMs. I thought that I liked programming, but it turned out that what I like was making things, and programming was just one way to do that. Since LLMs have become good at programming, I’ve been using them to make stuff nonstop, and it’s very exciting that we’re at the beginning of yet another entirely unexplored frontier.
There’s a lot of debate about LLMs at the moment, but a few friends have asked me about my specific workflow, so I decided to write it up in detail, in the hopes that it helps them (and you) make things more easily, quickly, and with higher quality than before.
I’ve also included a real (annotated) coding session at the end. You can go there directly if you want to skip the workflow details.
For the first time ever, around the release of Codex 5.2 (which feels like a century ago) and, more recently, Opus 4.6, I was surprised to discover that I can now write software with LLMs with a very low defect rate, probably significantly lower than if I had hand-written the code, without losing the benefit of knowing how the entire system works. Before that, code would quickly devolve into unmaintainability after two or three days of programming, but now I’ve been working on a few projects for weeks non-stop, growing to tens of thousands of useful lines of code, with each change being as reliable as the first one.
I also noticed that my engineering skills haven’t become useless, they’ve just shifted: I no longer need to know how to write code correctly at all, but it’s now massively more important to understand how to architect a system correctly, and how to make the right choices to make something usable.
On projects where I have no understanding of the underlying technology (e.g. mobile apps), the code still quickly becomes a mess of bad choices. However, on projects where I know the technologies used well (e.g. backend apps, though not necessarily in Python), this hasn’t happened yet, even at tens of thousands of SLoC. Most of that must be because the models are getting better, but I think that a lot of it is also because I’ve improved my way of working with the models.
One thing I’ve noticed is that different people get wildly different results with LLMs, so I suspect there’s some element of how you’re talking to them that affects the results. Because of that, I’m going to drill very far down into the weeds in this article, going as far as posting actual sessions, so you can see all the details of how I develop.
Another point that should be mentioned is that I don’t know how models will evolve in the future, but I’ve noticed a trend: In the early days of LLMs (not so much with GPT-2, as that was very limited, but with davinci onwards), I had to review every line of code and make sure that it was correct. With later generations of LLMs, that went up to the level of the function, so I didn’t have to check the code, but did have to check that functions were correct. Now, this is mostly at the level of “general architecture”, and there may be a time (next year) when not even that is necessary. For now, though, you still need a human with good coding skills.
What I’ve built this way
I’ve built quite a few things recently, and I want to list some of them here because a common criticism of LLMs is that people only use them for toy scripts. These projects range from serious daily drivers to art projects, but they’re all real, maintained projects that I use every day:
The largest thing I’ve built lately is an alternative to OpenClaw that focuses on security. I’ve wanted an LLM personal assistant for years, and I finally got one with this. Here, most people say “but you can’t make LLMs secure!”, which is misunderstanding that security is all about tradeoffs, and that what my agent tries to do is maximize security for a given amount of usability. I think it succeeds very well, I’ve been using it for a while now and really like the fact that I can reason exactly about what it can and can’t do.
It manages my calendar and intelligently makes decisions about my availability or any clashes, does research for me, extends itself by writing code, reminds me of all the things I used to forget and manages chores autonomously, etc. Assistants are something that you can’t really explain the benefit of, because they don’t have one killer feature, but they alleviate a thousand small paper cuts, paper cuts which are different for each person. So, trying to explain to someone what’s so good about having an assistant ends up getting a reaction of “but I don’t need any of the things you need” and misses the point that everyone needs different things, and an agent with access to tools and the ability to make intelligent decisions to solve problems is a great help for anyone.
I’m planning to write this up in more detail soon, as there were some very interesting challenges when designing it, and I like the way I solved them.
Maybe my naming recently hasn’t been stellar, but this is a small pendant that records voice notes, transcribes them, and optionally POSTs them to a webhook of your choice. I have it send the voice notes to my LLM, and it feels great to just take the thing out of my pocket at any time, press a button, and record a thought or ask a question into it, and know that the answer or todo will be there next time I check my assistant’s messages.
It’s a simple thing, but the usefulness comes not so much from what it does, but from the way it does it. It’s always available, always reliable, and with zero friction to use.
I’m planning to write something about this too, but this one is more of an art piece: It’s a ticking wall clock that ticks seconds irregularly, but is always accurate to the minute (with its time getting synced over the internet). It has various modes, one mode has variable tick timing, from 500 ms to 1500 ms, which is delightfully infuriating. Another mode ticks imperceptibly more quickly than a second, but then pauses for a second randomly, making the unsuspecting observer question their sanity. Another one races to :59 at double speed and then waits there for thirty seconds, and the last one is simply a normal clock, because all the irregular ticking drives me crazy.
Pine Town is a whimsical infinite multiplayer canvas of a meadow, where you get your own little plot of land to draw on. Most people draw… questionable content, but once in a while an adult will visit and draw something nice. Some drawings are real gems, and it’s generally fun scrolling around to see what people have made.
I’ve made all these projects with LLMs, and have never even read most of their code, but I’m still intimately familiar with each project’s architecture and inner workings. This is how:
For the harness, I use OpenCode. I really like its features, but obviously there are many choices for this, and I’ve had a good experience with Pi as well, but whatever harness you use, it needs to let you:
Use multiple models from different companies.
Most first-party harnesses (Claude Code, Codex CLI, Gemini CLI) will fail this, as companies only want you to use their models, but this is necessary.
Define custom agents that can autonomously call each other.
There are various other nice-to-haves, such as session support, worktree management, etc, that you might want to have depending on your project and tech stack, but those are up to you. I’ll explain the two requirements above, and why they’re necessary.
You can consider a specific model (e.g. Claude Opus) as a person. Sure, you can start again with a clean context, but the model will mostly have the same opinions/strengths/weaknesses as it did before, and it’s very likely to agree with itself. This means that it’s fairly useless to ask a model to review the code it just wrote, as it tends to mostly agree with itself, but it also means that getting a different model to review the code will lead to a big improvement. Essentially, you’re getting a review from a second set of eyes.
Different models will have different strengths and weaknesses here. For example (and this is very specific to today’s models), I find Codex 5.4 pretty nitpicky and pedantic. This isn’t something I want when I want to get code written, but it definitely is something I want for a review. The decisions Opus 4.6 makes correlate quite well with the decisions I would have made, and Gemini 3 Flash (yes, Flash!) has even been very good at coming up with solutions that other models didn’t see.
Everyone has a different opinion on what model suits them for which job, and models tend to alternate (e.g. I used Codex as my main model back in November, switching back to Opus later). To get the best results, you need a mix of all of them.
Agents that call each other
The workflow I use consists of different agents, and if the harness doesn’t have the ability to let agents talk to each other, you’ll be doing a lot of annoying ferrying of information between LLMs. You probably want to cut down on that, so this is a very useful feature.
My workflow consists of an architect, a developer, and one to three reviewers, depending on the importance of the project. These agents are configured as OpenCode agents (basically skill files, files with instructions for how I want each agent to behave).
I use multiple agents (rather than using just one for everything) for three reasons:
It allows me to use an expensive model (Opus) for planning and generating a detailed plan but a cheap one (Sonnet) for the actual writing of the code.
That just saves on tokens versus having Opus do the whole thing.
It lets me use different models to review the code, which does increase quality because different models will catch different things when reviewing.
It lets me use agents with different capabilities (e.g. one might have read-only access to the code, whereas the other might have write access to).
I don’t think using two agents with the same model and the same capabilities makes much sense, as I think it’s something like one person pretending to wear different hats, but I haven’t studied this extensively.
I also tend to write the skill files by hand, as I find it doesn’t really help if you ask the LLM to write a skill. It would be like asking someone to write up instructions on how to be a great engineer and then gave them their own instructions and said “here’s how to be a great engineer, now be one”. It obviously won’t really make them better, so I try to write the instructions myself.
If you want to try this yourself, you can download my agent files.
The architect (Claude Opus 4.6, currently) is the only agent I interact with. This needs to be a very strong model, typically the strongest model I have access to. This step doesn’t consume too many tokens, as it’s mostly chat, but you want this to be very well-reasoned.
I’ll tell the LLM my main goal (which will be a very specific feature or bugfix e.g. “I want to add retries with exponential backoff to Stavrobot so that it can retry if the LLM provider is down”), and talk to it until I’m sure it understands what I want. This step takes the most time, sometimes even up to half an hour of back-and-forth until we finalize all the goals, limitations, and tradeoffs of the approach, and agree on what the end architecture should look like. It results in a reasonably low-level plan, with a level of detail of individual files and functions. For example, tasks might be “I’ll add exponential backoff to these three codepaths of these two components in this file, as no other component talks to the LLM provider”.
I know that some people in this step prefer to have the LLM write out the plan to a file, and then they add their feedback to that file instead of talking to the LLM. This is a matter of personal preference, as I can see both approaches working equally well, so feel free to do the reviews that way if it suits you more. Personally, I prefer chatting to the LLM.
To clarify, in this step I’m not just prompting, I’m shaping the plan with the help of the LLM. I still have to correct the LLM a lot, either because it’s wrong or simply because it’s not doing things the way I’d do them, and that’s a big part of my contribution, as well as the part I get joy from. This direction is what lets me call projects mine, because someone else using the same LLM would have come up with a different thing.
When I’m satisfied that we’ve ironed out all the kinks (the LLM is very helpful at this, asking questions for what it doesn’t know yet and giving me options), I can finally approve the plan. I’ve asked the architect to not start anything until I actually say the word “approved”, as a few models tend to be overeager and go off to start the implementation when they feel like they understood, whereas I want to make sure I’m confident it understood.
Then, the architect will split the work into tasks, and write each task out into a plan file, usually in more detail (and at a lower level) than our chat, and call the developer to start work. This gives the developer concrete direction, and minimizes the high-level choices the developer can make, as the choices have already been made for it.
The developer can be a weaker, more token-efficient model (I use Sonnet 4.6). The plan shouldn’t give it much leeway into what it can do, and its job is strictly to implement the changes in the plan. When it’s done, it calls the reviewers to review its work.
Each reviewer will independently look at the plan and diff of the feature that was just implemented, and critique it. For this step, I will always use at least Codex, sometimes I’ll add Gemini, and on important projects I’ll add Opus as well.
This feedback goes back to the developer, which either integrates it, if the reviewers agree, or it escalates to the architect when the reviewers disagree. I’ve found that Opus is very good at choosing the right feedback to implement, sometimes ignoring feedback because it’s too pedantic (i.e. hard to implement and unlikely to be a problem in practice). Obviously, when I use objective assessments like “very good”, I really mean “I agree with it a lot”.
This way of working means that I still know every choice that was made above the function level, and can use that knowledge in subsequent runs. I often notice the LLM recommend things that might be good in another codebase, but either won’t work or are suboptimal in my codebase, which shows that the LLM has some blind spots when researching the code. I will often say “no, you should do this using Y”, at which point the LLM realizes that Y actually exists in the code and is a better way than the one it recommended.
On the flip side, when I’m not familiar enough with the technology to be on top of the architecture, I tend to not catch bad decisions that the LLM makes. This leads to the LLM building more and more on top of those bad decisions, eventually getting in a state where it can’t untangle the mess. You know this happens when you keep telling the LLM the code doesn’t work, it says “I know why! Let me fix it” and keeps breaking things more and more.
That’s a real failure mode that has happened to me too many times now, which is why I ended up with this workflow. For this reason, I try to understand things as much as I can while planning, even if I’m unfamiliar with the specific technology. If I manage to steer the LLM well, it saves a lot of trouble later on.
Here’s an annotated transcript from a real session where I add email support to Stavrobot. I’ve trimmed the tool calls and verbose bits, but the conversation and decision-making process is exactly as it happened.
I start by telling the LLM what I’d like to implement, at a very high level. Sometimes I’ll give it more detail, especially if I already have an idea of how I want the implementation done.
Me: I’d like to add email support to this bot. Let’s think through
how we would do this.
The bot reads the code and finds all the relevant bits, and asks some questions.
LLM: Good overview acquired. Here’s what I see and the questions we
need to resolve:
## Current pattern
All channels follow the same flow: inbound webhook/listener →
enqueueMessage(message, source, sender, attachments) → LLM
processes → LLM calls send_*_message tool to reply. Channels are
either in-process (Telegram webhooks, WhatsApp via Baileys) or
separate containers (Signal bridge). Email would be a new channel
following this same pattern.
## Key design questions
1. Inbound — how does email arrive?
- IMAP polling (simplest — poll a mailbox on a timer, works
with any provider)
- Webhook from a transactional email service (SendGrid/Mailgun
inbound parse — requires that service)
- Run an SMTP server (most complex, requires DNS/MX setup)
2. Outbound — how do we send?
- SMTP client (works with any provider — Gmail, Fastmail,
self-hosted)
- Transactional email API (SendGrid/Mailgun API)
3. What’s your actual use case? This affects several decisions:
- Full bidirectional conversation (reply to emails, maintain
threads)?
- One-way notifications from the bot?
- Processing incoming emails (e.g., forwarded emails,
digests)?
4. Architecture — separate container or in-process?
Signal uses a bridge container because signal-cli is a heavy
Java process. Email libraries are lightweight, so in-process
(like Telegram) is viable. But the AGENTS.md rule about not
adding runtimes to the app container doesn’t apply here since
it’s just TypeScript/Node.
5. Email-specific concerns:
- How to handle HTML emails? Strip to plain text? Pass a
markdown conversion to the LLM?
- Thread tracking — match replies to conversations by
In-Reply-To/References headers, or treat each email
...
Read the original on www.stavros.io »
Disclaimer: The following article is for informational purposes only and represents the opinion of the author. It should not be construed as investment or any other kind of advice. All information is based on publicly available data believed to be accurate as of the date of publication, but the author makes no representations or warranties as to its completeness or accuracy. Readers should conduct their own research and due diligence and don’t rely on anonymous goofballs on the internet for anything. Thank you for your attention to this matter.
“When buying and selling are controlled by legislation, the first things to be bought and sold are legislators.” - P. J. O’Rourke
I’m generally a fan of index investing for most people. Historically, indexing was a brilliant, low-cost way for investors to free-ride on the price discovery done by active managers (longs and the occasional evil ladder-attacking short seller). The market did the hard work of figuring out what a company was worth, and the index fund simply bought a representative slice of the market. The index was the tail; price discovery was the dog.
Today, the tail is violently wagging the dog. And the dog has the shits. Trillions of dollars are blindly sloshing around in passive funds, and index inclusion dictates market structure rather than reflecting it.
Nasdaq recently circulated a Nasdaq-100 Index “Consultation” (located here). They are officially seeking feedback from investors on proposed updates to their index methodology. But let’s be real: this “consultation” is Nasdaq-speak for letting us know what they are going to force feed us, like a baggy foie gras duck. A thinly-veiled blueprint for how to forcefully transfer wealth from the retirement accounts of passive retail investors directly into the pockets of corporate insiders and early investors.
Source: Google (not a shitco) Gemini Nano Banana 2
Why the sudden urge to rewrite the rulebook? Because Elon Musk’s SpaceX is gearing up for an IPO with a reported target valuation of around $1.75 trillion. To win this lucrative listing over the NYSE, they appear to be shamelessly bending the knee to a specific demand by SpaceX (per Reuters) for near-immediate index inclusion. This rule change will also give Nasdaq a leg up over the NYSE on subsequent large IPOs (think OpenAI, or Anthropic as examples).
Let’s look at the actual proposed rules in this consultation document, because it is an absolute masterclass in structural market manipulation.
Currently, large companies newly listed via IPO aren’t added to the index in a timely manner. Nasdaq wants to “fix” this supposed problem that just mysteriously cropped up the moment SpaceX announced its IPO plans, with a “Fast Entry” rule. Under this rule, any newly listed company whose entire market capitalization ranks within the top 40 current constituents gets announced with at least five days’ notice and added to the index after just fifteen trading days.
Crucially, the company will be entirely exempt from the standard seasoning and liquidity requirements.
Here is the smoking gavage gun. In the exact same document, Nasdaq proposes a new approach for including and weighting “low-float” securities, defined as those below 20% free float.
For context, a saner index like the S&P 500 is strictly “free-float adjusted,” meaning it only weights a company based on the shares actually available for the public to trade. Nasdaq, on the other hand, uses a methodology that factors in all shares, including locked-up insider shares that aren’t even for sale—and their proposed “fix” for this low-float problem is where the math gets truly diabolical.
Under this new proposal, each low-float security’s weight will be mechanically adjusted to five times its free float percentage, capped at 100%.
Source: Nasdaq
Let’s see how this actually works.
Assume SpaceX IPOs at a $1.75 trillion valuation. To keep things simple, assume the company floats 5% of the shares to the public ($87.5 billion worth of tradable stock). The other 95% is subject to a standard lock-up period and cannot be traded.
Under Nasdaq’s proposed 5x multiplier rule, the company’s index weight would be calculated at 25% of its total market cap (5% float x 5), even though only 5% is available for trading. If they float only 5% of the shares, the weighting would be 25% (about $438 Billion). 15% would be $1.3 Trillion.
So, on Day 15, passive Nasdaq-100 ETFs (like the QQQ) and mutual funds are mathematically forced to buy allocations of this stock as if it were, in the 5% example, a $438 billion company.
And here is the real kicker: those figures assume the stock stays flat from the IPO price. It won’t. Active traders and hedge funds will aggressively front-run this guaranteed, price-insensitive bid. If the stock rallies 40% in those first two weeks, passive funds aren’t buying based on the IPO price—they are buying based on the Day 15 market price. They will be forced to blindly allocate capital at whatever insane price it trades up to.
The index is applying a phantom, mega-dollar weighting to a restricted, tightly-held float. Tens of billions of dollars of price-insensitive, passive capital are legally mandated to aggressively bid for the stock over a matter of days. You are effectively forcing a firehose of mega-cap index capital through a garden hose of actual liquidity. It is a recipe for a massive, artificial supply-and-demand squeeze.
Some may argue “But the lock-up period is 180 days! The initial index squeeze happens on Day 15. The market will have months to find real price discovery before the insiders can actually sell!”
Yes, the initial Day 15 squeeze will inevitably cool off. But by waiving the seasoning period and jamming this low-float behemoth into the index immediately, you have completely corrupted the baseline. You’ve forced passive indexers to buy at the absolute top of an engineered liquidity squeeze. You have established a manipulated, artificially elevated price floor fueled by forced buying.
For the next five months, the stock will be based on a highly distorted market structure, driven in part by continued passive inflows (barring a market meltdown). And here is where the math gets truly sadistic.
Nasdaq’s proposed rules explicitly state that float figures are only updated during scheduled quarterly rebalances. And what happens when a company’s float goes above 20%? The 5x multiplier is dropped, and the company is upgraded to a full, 100% index weighting.
So, if you are His Nibs, how do you play this? You time your lock-up expiration right before a quarterly index rebalance.
The moment the lock-up expires, the physical float jumps from 5% to 15% (in our examples) to 100%. At the very next rebalance, Nasdaq updates the math, and the passive funds are mechanically forced to increase their allocation from that artificial 25-75% (again, in our examples) weighting up to the full 100%.
They are legally mandated to aggressively buy billions of dollars more of the stock the exact moment the insiders are able to flood the market with their unlocked shares. Can you feel your baggy liver turning to foie gras yet?
I’m not alleging any particular wrongdoing by SpaceX and Nasdaq here. Why wouldn’t SpaceX use its (legal) leverage to push Nasdaq around? And Nasdaq is perfectly entitled to feed what’s left of its credibility into the Cathiewoodchipper.
I don’t think the company is focused on (legally) extorting Nasdaq for early index inclusion because of the initial 15 days. I believe they are focused on the lockup expiry and ensuring that it coincides with a massive forced bid. The smaller the initial IPO float, the more powerful the rebalance will be.
To hit the December 18, 2026 quarterly rebalance date for the Nasdaq 100, SpaceX needs to IPO around mid-June. You will no doubt be shocked to learn that, indeed, SpaceX is targeting, ahem, mid-June for its IPO.
Source: New York Post, referencing The Financial Times
To seemingly throw prospective baggies off the scent, “people familiar with the matter” have apparently leaked the purported reason for a mid-June IPO: The alignment of Jupiter and Venus.
Source: New York Post
Can’t make this shit up. Jupiter and Venus. F*ck me.
I would not at all be surprised to see the company issue additional shares into the forced index buying, potentially competing with its own investors to soak up that demand.
Nasdaq has promised to publish a “summary” of comments that it received during the comment period. Perhaps Nasdaq will, in its final determination, conclude that the integrity of its indexes is paramount, and not implement this change. Perhaps the SEC will step in and attempt to block it, to protect investors, right?
“If you’re playing a poker game and you look around the table and can’t tell who the sucker is, it’s you.” - Paul Newman
I wrote this article myself, and it expresses my own personal opinions only. I am not receiving compensation for it. I have no business relationship with any company whose stock is mentioned in this article. It is not a recommendation to buy, sell, short, hold, or avoid any security. It should not be relied upon for any purpose other than entertainment. Numbers and analysis presented have not been proof-read or independently verified. Assume I am a goofball. I’ve been called worse by better than you. Despite my best efforts I make mistakes. I do get it wrong sometimes.
...
Read the original on keubiko.substack.com »
This is a research tool that visualizes 342 occupations from the Bureau of Labor Statistics Occupational Outlook Handbook, covering 143M jobs across the US economy. Each rectangle’s area is proportional to total employment. Color shows the selected metric — toggle between BLS projected growth outlook, median pay, education requirements, and AI exposure. Click any tile to view its full BLS page. This is not a report, a paper, or a serious economic publication — it is a development tool for exploring BLS data visually.
LLM-powered coloring: The source code includes scrapers, parsers, and a pipeline for writing custom LLM prompts to score and color occupations by any criteria. You write a prompt, the LLM scores each occupation, and the treemap colors accordingly. The “Digital AI Exposure” option is one example — it estimates how much current AI (which is primarily digital) will reshape each occupation. But you could write a different prompt for any question — e.g. exposure to humanoid robotics, offshoring risk, climate impact — and re-run the pipeline to get a different coloring.
You are an expert analyst evaluating how exposed different occupations are to AI. You will be given a detailed description of an occupation from the Bureau of Labor Statistics.
Rate the occupation’s overall AI Exposure on a scale from 0 to 10.
AI Exposure measures: how much will AI reshape this occupation? Consider both direct effects (AI automating tasks currently done by humans) and indirect effects (AI making each worker so productive that fewer are needed).
A key signal is whether the job’s work product is fundamentally digital. If the job can be done entirely from a home office on a computer — writing, coding, analyzing, communicating — then AI exposure is inherently high (7+), because AI capabilities in digital domains are advancing rapidly. Even if today’s AI can’t handle every aspect of such a job, the trajectory is steep and the ceiling is very high. Conversely, jobs requiring physical presence, manual skill, or real-time human interaction in the physical world have a natural barrier to AI exposure.
Use these anchors to calibrate your score:
- 0–1: Minimal exposure. The work is almost entirely physical, hands-on, or requires real-time human presence in unpredictable environments. AI has essentially no impact on daily work. Examples: roofer, landscaper, commercial diver.
- 2–3: Low exposure. Mostly physical or interpersonal work. AI might help with minor peripheral tasks (scheduling, paperwork) but doesn’t touch the core job. Examples: electrician, plumber, firefighter, dental hygienist.
- 4–5: Moderate exposure. A mix of physical/interpersonal work and knowledge work. AI can meaningfully assist with the information-processing parts but a substantial share of the job still requires human presence. Examples: registered nurse, police officer, veterinarian.
- 6–7: High exposure. Predominantly knowledge work with some need for human judgment, relationships, or physical presence. AI tools are already useful and workers using AI may be substantially more productive. Examples: teacher, manager, accountant, journalist.
- 8–9: Very high exposure. The job is almost entirely done on a computer. All core tasks — writing, coding, analyzing, designing, communicating — are in domains where AI is rapidly improving. The occupation faces major restructuring. Examples: software developer, graphic designer, translator, data analyst, paralegal, copywriter.
- 10: Maximum exposure. Routine information processing, fully digital, with no physical component. AI can already do most of it today. Examples: data entry clerk, telemarketer.
Respond with ONLY a JSON object in this exact format, no other text:
{“exposure”: <0-10>, “rationale”: “<2-3 sentences explaining the key factors>“}
Caveat on Digital AI Exposure scores: These are rough LLM estimates, not rigorous predictions. A high score does not predict the job will disappear. Software developers score 9/10 because AI is transforming their work — but demand for software could easily grow as each developer becomes more productive. The score does not account for demand elasticity, latent demand, regulatory barriers, or social preferences for human workers. Many high-exposure jobs will be reshaped, not replaced.
...
Read the original on karpathy.ai »
Some days I get in bed after a tortuous 4-5 hour session working with Claude or Codex wondering what the heck happened. It’s easy to blame the model - there’s so many options to choose from:
They’re dumbing down the model to save money.
It’s not uncommon for me to come back to the problem the next day, my own context window cleared from rest, and find a fast and fulfilling path forward with the help of the LLM. What’s going on?
This one seems pretty obvious. If I am becoming mentally fatigued, I will write worse prompts, and because of that, the AI will do a worse job. Here’s an example of what happens when I’m really tired: Kick off a somewhat meaty prompt (after 30% of context was used to align with the AI on the problem), realize right after submitting that I missed some key context, interrupt the LLM, provide the context, and then have it proceed. Without a doubt, interrupting Claude Code or “steering” in Codex leads to worse outcomes.
Some of the work I’m doing right now requires parsing some large files. There’s bugs in that parsing logic that I’m trying to work through with the LLM. The problem is, every tweak requires re-parsing and it’s a slow process. I liken it to a slot machine that takes 10 minutes to spin. To add insult to injury, some of these tasks take quite a bit of context to get rolling on a new experiment, and by the end of the parsing job, the LLM is 2% away from compaction. That then leads to either a very dumb AI or an AI that is pretending to know what’s going on with the recent experiment once it’s complete.
If I reach the point where I am not getting joy out of writing a great prompt, then it’s time to throw in the towel. That has to be the first signal. If I’m half-assing it, being short, interrupting, and getting frustrated, then time to take a break.
There’s some metacognition that needs to take place here. Am I being less descriptive because I haven’t actually thought through this problem and I’m hoping the AI will just fill the gaps? That can be a very seductive trap to fall into. AIs are getting quite good at filling in undefined requirements, something that I remember having to do as a software engineer myself, but they’re not good enough yet.
There’s times I write a prompt with so much clarity in my desired end-state that I’m already celebrating the end-result when I submit the prompt because I know the AI is going to CRUSH IT. That’s the feeling I need to look for in every prompt. If it’s more the feeling of unsureness or impatience, it’s just not going to pan out.
In the case of my parsing problem I mentioned above, it was too slow and the feedback loop was painful. I want my slot machine to take seconds/minutes to spin, not 15/20/30 minutes. In these cases, I’ve started to spin up a new session with the LLM, lay out my problem with feedback loop speed, express my desire to get to a sub 5-minute loop, give it an example of a failure case, and ask it to reproduce that failure case as quickly as possible. This is starting to sound familiar … TDD anyone?
I was always the scrappy engineer. Sure I wrote tests, but I was never one to stop and create elaborate test cases or integration tests for bespoke problems. That was too time consuming, and also, I was getting paid even if my feedback loop wasn’t perfect.
It’s been quite the journey to fight that feeling that writing elaborate tests is time-consuming when working with AI. If you give an LLM clear success criteria: “Reproduce this specific failure case and make sure the clock time is less than 5 minutes to do it. Feel free to experiment with ways to optimize the code path or omit certain pieces that are unnecessary to reproduce” - the AI will not only reproduce the problem (maybe slowly the first time), but it will create levers for a faster feedback cycle. With that fast feedback cycle, it will consume less context and be SMARTER. This can seriously save hours of debugging time.
When I am exhausted from working with an LLM - it might actually be a “skill issue”. I need to recognize when I’m tired and entering the doom-loop psychosis. Cognitive outsourcing of requirements is seductive, but it’s a trap. If I’m not enjoying the act of writing the perfect prompt and absolutely confident I will return to a result I’m 95% happy with, I need to either take a break or ponder if I’ve really thought through the problem. If things are moving slow and it feels as though context is filling up too quickly - I need to make that the problem to solve. Find a path, with the help of the LLM, to iterate faster and use up less context.
You can subscribe to my blog here or via RSS feed.
...
Read the original on tomjohnell.com »
When I first laid eyes on the FreeBSD Handbook, back in 2002, I couldn’t believe what I was seeing. Six years of Linux, a relationship I’ve written about elsewhere, across various distributions, had trained me to hunt for documentation in fragments: often incomplete, often outdated, sometimes already stale after barely a year. Here was an operating system that came with a complete, accurate, up-to-date (as much as possible), detailed manual. I was already a convinced believer in Open Source, but I found myself reasoning in very practical terms: if the team behind this OS puts this much care into its documentation, imagine how solid the system itself must be. And so I decided to give it a try. I had a Sony Vaio with no room for a dual boot. I synced everything to a desktop machine with more space, took a breath, and made a decision: I’d install FreeBSD on that laptop and reinstall Linux when the experiment was over.
At the time I had no idea that this experiment would shape the way I design and run systems for the next twenty years.
I realized almost immediately that GNU/Linux and FreeBSD were so similar they were completely different.
The Unix inspiration was the same, but everything worked differently - and the impression was that FreeBSD was distinctly more mature, less chaotic, more focused. A magnificent cathedral - a form then widely criticized in the circles I moved in - but one that had certain undeniable virtues. Back then I compiled the entire system from source, and I noticed right away that performance was better on that hardware than Linux had ever been. Not only that: Linux would overheat and produce unpredictable results - errors, sudden shutdowns, fans screaming even after compilation finished. My Linux friends continued to insist it was a “hardware problem”, but FreeBSD handled the load far more gracefully. I could read my email in mutt while compiling, something that was practically impossible on Linux, which would slow to a crawl. The fans would settle within seconds of the load ending, and the system felt genuinely more responsive. I never experienced a crash. I was running KDE on all my systems at the time, and the experience on FreeBSD was noticeably superior - more consistent and steady performance, none of the micro-freezes I’d come to accept on Linux, greater overall stability. The one drawback: I compiled everything, including KDE. I was a university student and couldn’t leave my laptop in another room - the risk of an “incident” involving one of my flatmates was too real - so I kept it within arm’s reach, night after night, fans spinning as KDE and all its applications compiled. At some point I figured out exactly how long the KDE build took, and started using it as a clock: fans running meant it was before four in the morning. Fans silent meant I’d made it past.
The Handbook taught me an enormous amount - more than many of my university courses - including things that had nothing to do with FreeBSD specifically. It taught me the right approach: understand first, act second. The more I read, the more I wanted a printed copy to keep at my desk. So I convinced my parents that I needed a laser printer “for university work”. And the first thing I printed, of course, was the Handbook. That Handbook still contains relevant information today. There have been significant changes over the past twenty-four years, but the foundations are still the same. Many tools still work exactly as they did. Features have been added, but the originals still operate on the same principles. Evolution, not revolution. And when you’re building something meant to last, that is - in my view - exactly the right philosophy. Change is good. Innovation is good. On my own machines I’ve broken and rebuilt things thousands of times. But production environments must be stable and predictable. That, still today, is one of the qualities I value most in every BSD.
Over the years, FreeBSD has served me well. At a certain point it stepped down as my primary desktop - partly because I switched to Mac, partly because of unsupported hardware - but it never stopped being one of my first choices for servers and any serious workload. As I often say: I only have one workstation, and I use it to access hundreds of servers. It’s far easier to replace a workstation - I can reconfigure everything in a couple of hours - than to deal with a production server gone sideways, with anxious clients waiting or operations ground to a halt.
FreeBSD has never chased innovation for its own sake. It has never chased hype at the expense of its core purpose. Its motto is “The Power to Serve” - and to do that effectively, efficiently, securely. That is what FreeBSD has been for me.
I love FreeBSD because it has served me for decades without surprises. I love FreeBSD because it innovates while making sure my 2009 servers keep running correctly, requiring only small adjustments at each major update rather than a complete overhaul.
I love FreeBSD because it doesn’t rename my network interfaces after a reboot or an upgrade.
And because its jails - around since 2000 - are an effective, efficient, secure, simple, and fully native mechanism: you can manage everything without installing a single external package. I love FreeBSD because ZFS is native, and with it I get native boot environments, which means safe, reversible upgrades. Or, if you’re running UFS, you change a single character in fstab and the entire filesystem becomes read-only - cleanly, with no kludges. I love FreeBSD because bhyve is an efficient, lightweight, reliable hypervisor. I love it for its performance, for its features, for everything it has given me.
But I love FreeBSD also - and above all - for its community. Around the BSDs, in general, you find people driven by genuine passion, curiosity, and competence. Over the past twenty years the tech world has attracted many people who appear to be interested in technology. In reality, they are often just looking for something to monetize quickly, even at the cost of destroying it. In the BSD community, that is far less common. At conferences I’ve had the chance to meet developers in person - to understand their spirit, their skill, and yes, their passion. Not just in the volunteers who contribute for the joy of it, but in those funded by the Foundation as well. And then there are the engineers from companies that rely heavily on FreeBSD - Netflix among them - and they bring the same quality: that engagement, that enthusiasm, that tells you FreeBSD isn’t a job for them. It’s a pleasure. Which is one of the reasons why every time I attend a BSD conference, I come home even more in love with the project: the vibe of the community, the dedication of the developers, the presence of a Foundation that is strong and effective without being domineering or self-important - which, compared to the foundations of other major Open Source projects, makes it genuinely remarkable. Faces that have been part of this project for over twenty years, and still light up the moment they find their friends and start talking about what they’ve been working on. That positivity is contagious - and it flows directly into the code, the project, the vision for what comes next. Because that’s the heart of it. FreeBSD has always been an operating system written by humans, for humans: built to serve and to be useful, with a consistency, documentation, pragmatism, and craftsmanship that most other projects - particularly mainstream Linux distributions - simply don’t have. The Foundation wants to hear from ordinary users. It actively promotes the kind of engagement that brings more people to FreeBSD. Not because big tech companies are pushing to create dependency, but because it believes in the project.
So thank you, FreeBSD, for helping me stay passionate for so many years, for keeping my projects running, for keeping my clients’ servers up and my data safe. Thank you, FreeBSD, for never wasting time chasing the trend of the moment, and instead focusing on doing things right. Thank you, FreeBSD, for all the extraordinary people - from across the entire BSD community - you’ve brought into my life. Friends, not colleagues. Real people. The genuine kind. And when the people running something still believe in it - truly believe in it, after all these years - and the project keeps succeeding, that tells you there is real substance underneath. In the code. In the people. In the community.
FreeBSD doesn’t want to be “the best and greatest”. It wants to serve.
...
Read the original on it-notes.dragas.net »
I have been watching HomeAssistant’s progress with assist for some time. We previously used Google Home via Nest Minis, and have switched to using fully local assist backed by local first + llama.cpp (previously Ollama). In this post I will share the steps I took to get to where I am today, the decisions I made and why they were the best for my use case specifically.
Here are links to additional improvements posted about in this thread.
I have tested a wide variety of hardware from a 3050 to a 3090, most modern discrete GPUs can be used for local assist effectively, it just depends on your expectations of capability and speed for what hardware is required.
I am running HomeAssistant on my UnRaid NAS, specs are not really important as it has nothing to do with HA Voice.
* 1 Pixel 7a used as a satellite/ hub with View Assist
* Beelink MiniPC with USB4 (the exact model isn’t important as long as it has USB4)
The below table shows GPUs that I have tested with this setup. Response time will vary based on the model that is used.
The below table shows the models I have tested using this setup with various features and their performance.
All models below are good for basic tool calling. Advanced features are listed with the models quality at reliably reproducing the desired behavior.
(1) Handles commands like “Turn on the fan and off the lights”
(2) Understands when it is in a particular area and does not ask “which light?” when there is only one light in the area, but does correctly ask when there are multiple of the device type in the given area.
(3) Is able to parse misheard commands (ex: “turn on the pan”) and reliably execute the intended command
(4) Is able to reliably ignore unwanted input without being negatively affected by misheard text that was an intended command.
llama.cpp is recommended for optimal performance, see my reply below for details.
The following are Speech to Text options that I have tested:
* LLM Conversation Provides improvements to the base conversation to improve default experience talking with Assist
My point in posting this is not to suggest that what I have done is “the right way” or even something others should replicate. But I learned a lot throughout this process and I figured it would be worth sharing so others could get a better idea of what to expect, pitfalls, etc.
Throughout the last year or two we have noticed that Google Assistant through these Nest Minis has gotten progressively dumber / worse while also not bringing any new features. This is generally fine as the WAF was still much higher than not having voice, but it became increasingly annoying as we were met with more and more “Sorry, I can’t help with that” or “I don’t know the answer to that, but according to XYZ source here is the answer”. It generally worked, but not reliably and was often a fuss to get answers to arbitrary questions.
Then there is the usual privacy concern of having online microphones throughout your home, and the annoyance that every time AWS or something else went down you couldn’t use voice to control lights in the house.
I started by playing with one of Ollama’s included models. Every few weeks I would connect Ollama to HA, spin up assist and try to use it. Every time I was disappointed and surprised by its lack of abilities and most of the time basic tool calls would not work. I do believe HA has made things better, but I think the biggest issue was my understanding.
Ollama models that you see on Ollama are not even close to exhaustive in terms of the models that can be run. And worse yet, the default :4b models for example are often low quantization (Q4_K) which can cause a lot of problems. Once I learned about the ability to use HuggingFace to find GGUF models with higher quantizations, assist was immediately performing much better with no problems with tool calling.
After getting to the point where the fundamental basics were possible, I ordered a Voice Preview Edition to use for testing so I could get a better idea of the end-to-end experience. It took me some time to get things working well, originally I had WiFi reception issues where the ping was very inconsistent on the VPE (despite being next to the router) and this led to the speech output being stuttery and having a lot of mid-word pauses. After adjusting piper to use streaming and creating a new dedicated IoT network, the performance has been much better.
Controlling device is great, and Ollama’s ability to adjust devices when the local processing missed a command was helpful. But to replace our speakers, Assist had to be capable of the following things:
* Ability to ask about a specific business to get opening / closing times
* Ability to do general knowledge lookup to answer arbitrary questions
* Ability to play music with search abilities entirely with voice
At first I was under the impression these would have to be built out separately, but I eventually found the brilliant llm-intents integration which provides a number of these services to Assist (and by extension, Ollama). Once setting these up, the results were mediocre.
For those that want to see it, here is my prompt.
This is when I learned that the prompt will make or break your voice experience. The default HA prompt won’t get you very far, as LLMs need a lot of guidance to know what to do and when.
I generally improved my prompt by taking my current prompt and putting it into ChatGPT along with a description of the current behavior and desired behavior of the LLM. Then back-and-forth attempts until I consistently got the desired result. After a few cycles of this, I started to get a feel of how to make these improvements myself.
I started by trying to get weather working, the first challenge was getting the LLM to even call the weather service. I have found that having dedicated # sections for each service that is important along with a bulleted list of details / instructions works best.
Then I needed to make the weather response formatted in a way that was desirable without extra information. At first, the response would include extra commentary such as “sounds like a nice summery day!” or other things that detracted from the conciseness of the response. Once this was solved, a specific example of the output worked best to get the exact response format that was desired.
For places and search, the problem was much the same, it did not want to call the tool and instead insisted that it did not know the user’s location or the answer to specific questions. This mostly just needed some specific instructions to always call the specific tool when certain types of questions were asked, and that has worked well.
The final problem I had to solve was emojis, most responses would end with a smiley face or something, which is not good to TTS. This took a lot of sections in the prompt, but overall has completely removed it without adverse affects.
NOTE: Not sure if a recent Home Assistant or Music Assistant update improved things, but the LLM is now able to naturally search and play music without the automation. I am leaving this section in as an example, as I still believe automations can be a good way to solve some problems when there is not an easy way to give the LLM access to a certain feature.
It is certainly the most desirable outcome that every function would be executed perfectly by the LLM without intervention, but at least in my case with the model I am using that is not true. But there are cases where that really is not a bad thing.
In my case, music was one of this case. I believe this is an area that improvements are currently be made, but for me the automatic case was not working well. I started by getting music assistant setup. I found various LLM blueprints to create a script that allows the LLM to start playing music automatically, but it did not work well for me.
That is when I realized the power of the sentence automation trigger and the beauty of music assistant. I create an automation that triggers on Play {music}. The automation has a map of assist_satellite to media_player in the automation, so it will play music on the correct media player based on which satellite makes the request. Then it passes {music} (which can be a song, album, artist, whatever) to music assistant’s play service which performs the searching and starts playing.
The next problem to solve was the wakeword. For WAF the default included options weren’t going to work. After some back and forth we decided on Hey Robot. I use this repo to train a custom microwakeword which is usable on the VPE and Satellite1. This only took ~30 minutes to run on my GPU and the results have been quite good. There are some false positives, but overall the rate is similar to the Google Homes that have been replaced and with the ability to automate muting it is possible we can solve that problem with that until the training / options become better.
I definitely would not recommend this for the average Home Assistant user, IMO a lot of patience and research is needed to understand particular problems and work towards a solution, and I imagine we will run into more problems as we continue to use these. I am certainly not done, but that is the beauty of this solution - most aspects of it can be tuned.
The goal has been met though, overall we have a more enjoyable voice assistant that runs locally without privacy concerns, and our core tasks are handled reliably.
Let me know what you think! I am happy to answer any questions.
...
Read the original on community.home-assistant.io »
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.