10 interesting stories served every morning and every evening.
This article was featured in the One Story to Read Today newsletter. Sign up for it here.
Until recently, I resisted using the F-word to describe President Trump. For one thing, there were too many elements of classical fascism that didn’t seem to fit. For another, the term has been overused to the point of meaninglessness, especially by left-leaning types who call you a fascist if you oppose abortion or affirmative action. For yet another, the term is hazily defined, even by its adherents. From the beginning, fascism has been an incoherent doctrine, and even today scholars can’t agree on its definition. Italy’s original version differed from Germany’s, which differed from Spain’s, which differed from Japan’s.
I accepted President Biden’s characterization of the MAGA movement as “semi-fascist” because some parallels were glaringly apparent. Trump was definitely an authoritarian, and unquestionably a patrimonialist. Beyond that, though, the best description seemed to be a psychological one propounded by John Bolton, Trump’s first-term national security adviser: “He listens to Putin, he listens to Xi, he listens to how they talk about governing unburdened by uncooperative legislatures, unconcerned with what the judiciary may do, and he thinks to himself, Why can’t I do that? This doesn’t amount to being a fascist, in my view, [or] having a theory of how you want to govern. It’s just Why can’t I have the same fun they have?”
Writing a year ago, I argued that Trump’s governing regime is a version of patrimonialism, in which the state is treated as the personal property and family business of the leader. That is still true. But, as I also noted then, patrimonialism is a style of governing, not a formal ideology or system. It can be layered atop all kinds of organizational structures, including not just national governments but also urban political machines such as Tammany Hall, criminal gangs such as the Mafia, and even religious cults. Because its only firm principle is personal loyalty to the boss, it has no specific agenda. Fascism, in contrast, is ideological, aggressive, and, at least in its early stages, revolutionary. It seeks to dominate politics, to crush resistance, and to rewrite the social contract.
Over Trump’s past year, what originally looked like an effort to make the government his personal plaything has drifted distinctly toward doctrinal and operational fascism. Trump’s appetite for lebensraum, his claim of unlimited power, his support for the global far right, his politicization of the justice system, his deployment of performative brutality, his ostentatious violation of rights, his creation of a national paramilitary police—all of those developments bespeak something more purposeful and sinister than run-of-the-mill greed or gangsterism.
When the facts change, I change my mind. Recent events have brought Trump’s governing style into sharper focus. Fascist best describes it, and reluctance to use the term has now become perverse. That is not because of any one or two things he and his administration have done but because of the totality. Fascism is not a territory with clearly marked boundaries but a constellation of characteristics. When you view the stars together, the constellation plainly appears.
Demolition of norms. From the beginning of his first presidential run in 2015, Trump deliberately crashed through every boundary of civility; he mocked Senator John McCain’s war heroism, mocked fellow candidate Carly Fiorina’s face, seemingly mocked the Fox News host Megyn Kelly’s menstruation, slurred immigrants, and much more. Today he still does it, recently making an obscene gesture to a factory worker and calling a journalist “piggy.” This is a feature of the fascist governing style, not a bug. Fascists know that what the American Founders called the “republican virtues” impede their political agenda, and so they gleefully trash liberal pieties such as reason and reasonableness, civility and civic spirit, toleration and forbearance. By mocking decency and saying the unsayable, they open the way for what William Galston has called the “dark passions” of fear, resentment, and especially domination—the kind of politics that shifts the public discourse to ground on which liberals cannot compete.
Glorification of violence. Every state uses violence to enforce its laws, but liberal states use it reluctantly, whereas fascism embraces and flaunts it. Trump thus praises a violent mob; endorses torture; muses fondly about punching, body-slamming, and shooting protesters and journalists; and reportedly suggests shooting protesters and migrants. His recruitment ads for ICE glamorize military-style raids of homes and neighborhoods; his propaganda takes childish delight in the killing of civilians; and we have all seen videos of agents dragging people out of cars and homes—partly because the government films them. Like the demolition of civic decency, the valorization of violence is not incidental to fascism; it is part and parcel.
Might is right. Also characteristic of fascism is what George Orwell called “bully-worship”: the principle that, as Thucydides famously put it, “the strong do what they can and the weak suffer what they must.” This view came across in Trump’s notorious Oval Office meeting with Ukrainian President Volodymyr Zelensky, in which Trump showed open contempt for what he regarded as Ukraine’s weakness; it came across explicitly, and chillingly, when Stephen Miller, the president’s most powerful aide, told CNN’s Jake Tapper: “We live in a world, in the real world, that is governed by strength, that is governed by force, that is governed by power. These are the iron laws of the world that have existed since the beginning of time.” Those words, though alien to the traditions of American and Christian morality, could have come from the lips of any fascist dictator.
Politicized law enforcement. Liberals follow the law whether they like it or not; fascists, only when they like it. Nazism featured a “dual state,” where, at any moment, the protections of ordinary law could cease to apply. Trump makes no secret of despising due process of law; he has demanded countless times that his opponents be jailed (“Lock her up!” chants, with his endorsement, were a prominent feature of his 2016 campaign), and he has suggested the Constitution’s “termination” and said “I don’t know” when asked if he is required to uphold it. His single most dangerous second-term innovation is the repurposing of federal law enforcement to persecute his enemies (and shield his friends). No prior president has produced anything like Trump’s direct and public order for the Justice Department to investigate two former officials, or like his blatantly retaliatory prosecutions of James Comey and Letitia James. “At least 470 people, organizations and institutions have been targeted for retribution since Trump took office—an average of more than one a day,” Reuters reported in November (and today one can add others to the list, beginning with Federal Reserve Chair Jerome Powell). Had Trump done nothing else, his demolition of independent and apolitical law enforcement would still have moved the U. S. government closer than ever before to a fascistic model.
Dehumanization. Fascism draws its legitimacy from its claims of defending the people from enemies who are animals, criminals, brutes. Trump characterizes (for instance) political opponents as “vermin” and immigrants as “garbage” who are “poisoning the blood of our country” (language straight out of the Third Reich). Vice President Vance, as a senator, endorsed a book called Unhumans (a title that refers to the left). And who can forget his false claim that Haitians abduct and eat pet cats and dogs?
Police-state tactics. Trump has turned ICE into a sprawling paramilitary that roves the country at will, searches and detains noncitizens and citizens without warrants, uses force ostentatiously, operates behind masks, receives skimpy training, lies about its activities, and has been told that it enjoys “absolute immunity.” He more than doubled the agency’s size in 2025, and its budget is now larger than those of all other federal law-enforcement agencies combined, and larger than the entire military budgets of all but 15 countries. “This is going to affect every community, every city,” the Cato Institute scholar David Bier recently observed. “Really almost everyone in our country is going to come in contact with this, one way or the other.” In Minneapolis and elsewhere, the agency has behaved provocatively, sometimes brutally, and arguably illegally—behaviors that Trump and his staff have encouraged, shielded, and sent camera crews to publicize, perhaps in the hope of eliciting violent resistance that would justify further crackdowns, a standard fascist stratagem. Homeland Security Secretary Kristi Noem’s recent appearance with a sign reading One of ours, all of yours seemed to nod toward another fascist standby, collective punishment—as did the administration’s decision to flood Minneapolis with thousands of officers after residents there began protesting federal tactics, a prioritization that was explicitly retributive.
Undermining elections. Trump’s recent musing that there should be no 2026 election may or may not have been jocular (as the White House has maintained), but he and his MAGA supporters believe they never lose an election, period. They went to great lengths to overturn the 2020 election, as the prosecutor Jack Smith’s indictment of Trump and subsequent report detail ad nauseam. Rigging, stealing, or outright canceling elections is, of course, job one for fascists. Although Trump is term-limited, we must not expect that he and his MAGA loyalists will voluntarily turn over the White House to a Democrat in 2029, regardless of what the voters say—and the second insurrection will be far better organized than the first.
What’s private is public. Classical fascism rejects the fundamental liberal distinction between the government and the private sector, per Mussolini’s dictum: “No individuals or groups outside the State.” Among Trump’s most audacious (if only intermittently successful) initiatives are his efforts to commandeer private entities, including law firms, universities, and corporations. One of his first acts as president last year was to brazenly defy a newly enacted law by taking the ownership of TikTok into his own hands. Bolton understood this mentality when he said, “He can’t tell the difference between his own personal interest and the national interest, if he even understands what the national interest is.”
Attacks on news media. Shortly after taking office in 2017, Trump denounced the news media as “the enemy of the American people,” a phrase familiar from dictatorships abroad. His hostility never relented, but in his second term, it has reached new heights. Trump has threatened broadcast licenses, abused his regulatory authority, manipulated ownership deals, filed exorbitant lawsuits, played favorites with journalistic access, searched a reporter’s home, and vilified news outlets and journalists. Although Trump cannot dominate news media in the United States in the way that Prime Minister Viktor Orbán has done in Hungary, he is running the Orbán playbook. No other president, not even Richard Nixon (no friend of the media), has used such blatantly illiberal tactics against the press.
Territorial and military aggression. One reason I held out against identifying Trumpism with fascism in his first term was Trump’s apparent lack of interest in aggression against other states; if anything, he had seemed shy about using force abroad. Well, that was then. In his second term, he has used military force promiscuously. Of course, many presidents have deployed force, but Trump’s explicitly predatory use of it to grab Venezuela’s oil and his gangster-style threat to take Greenland from Denmark “the easy way” or “the hard way” were 1930s-style authoritarian moves. The same goes for his contempt for international law, binding alliances, and transnational organizations such as the European Union—all of which impede the state’s unconstrained exercise of its will, a central fascist tenet. (Mussolini: “Equally foreign to the spirit of Fascism … are all internationalistic or League superstructures which, as history shows, crumble to the ground whenever the heart of nations is deeply stirred by sentimental, idealistic or practical considerations.”)
Transnational reach. Like authoritarians generally, fascists love company; the world is safer for them if there are more of them. In his second term, Trump has broken with long-standing U. S. policy by dialing back support for human rights while praising and supporting authoritarian populists and illiberal nationalists in Serbia, Poland, Hungary, Germany, Turkey, El Salvador, and Slovakia, among other places—and by being weirdly deferential to the strongman Russian President Vladimir Putin. Even more striking is his de facto alignment against America’s liberal allies and their parties in Europe, which he holds in contempt.
Blood-and-soil nationalism. A fascist trademark is its insistence that the country is not just a collection of individuals but a people, a Volk: a mystically defined and ethnically pure group bound together by shared blood, culture, and destiny. In keeping with that idea, Trump has repudiated birthright citizenship, and Vance has called to “redefine the meaning of American citizenship in the 21st century” so that priority goes to Americans with longer historical ties: “the people whose ancestors fought in the Civil War,” as he put it, or people whom others on the MAGA right call “heritage Americans.” In other words, some Americans are more volkish than others.
White and Christian nationalism. While Vance, Trump, and MAGA do not propound an explicit ideology of racial hierarchy, they make no secret of pining for a whiter, more Christian America. Trump has found many ways to communicate this: for example, by making clear his disdain for “shithole” countries and his preference for white Christian immigrants; by pointedly accepting white South Africans as political refugees (while closing the door to most other asylum seekers); by renaming military bases to share the names of Confederate generals (after Congress ordered their names removed); by saying that civil-rights laws led to whites’ being “very badly treated.” In his National Security Strategy, he castigates Europe for allowing immigration to undermine “civilizational self-confidence” and proclaims, “We want Europe to remain European,” a rallying cry of white Christian nationalists across the continent. Taking his cue, the Department of Homeland Security has propagated unashamedly white-nationalist themes, and national parks and museums have scrubbed their exhibits of references to slavery.
Mobs and street thugs. The use of militias and mobs to harass, rough up, and otherwise intimidate opponents is a standard fascist stratagem (the textbook example being Hitler’s Kristallnacht pogrom in 1938). As few will need reminding, the Trump-MAGA parallel is the mob and militia violence against the U. S. Capitol on January 6, 2021. Trump knowingly laid groundwork for this operation, calling on militia forces to “stand back and stand by” in September 2020 and later dog-whistling “Be there, will be wild!” to his supporters. His pardon of all of the Capitol attackers—more than 1,500, including the most violent—only proved what we knew, which is that they had his blessing. While Trump has found state violence adequate to his purposes so far in his second term, street violence is self-evidently in his repertoire.
Leader aggrandizement. Since 2016, when he declared that “I alone can fix it” and bragged that his supporters would remain loyal if he shot someone on Fifth Avenue, Trump has cultivated a personality cult. Although some of his efforts at self-aggrandizement can seem comical (the gilding of the Oval Office, the renaming of the Kennedy Center, the proposed triumphal arch), he understands the centrality of leader worship in a fascist-style regime. In sharp contradistinction to the American presidential tradition since George Washington, he makes no pretense of serving the people or the Constitution. His mindset, his symbolism, and his rhetoric all underscore the point he made to The New York Times this month: His own mind and morality are the only limits on his global power. This is Fascism 101.
Alternative facts. As Orwell, Hannah Arendt, and practically every other scholar of authoritarianism have emphasized, creating a reality-distortion field is the first thing a fascistic government will do, the better to drive its own twisted narrative, confuse the citizenry, demoralize political opponents, and justify every manner of corruption and abuse. While other presidents (including some good ones) have lied, none have come close to Trump’s deployment of Russian-style mass disinformation, as I detail in my book The Constitution of Knowledge. From the start of his first term, Trump has made “alternative facts” a hallmark of his governing style, issuing lies, exaggerations, and half-truths at a rate of 20 a day. Predictably, his second term has brought more of the same. Following his lead, a MAGA-fied postmodern right gleefully trashes objectivity as elitism and truth as a mask for power.
Politics as war. A distinctive mark of fascism is its conception of politics, best captured by Carl Schmitt, an early-20th-century German political theorist whose doctrines legitimized Nazism. Schmitt rejected the Madisonian view of politics as a social negotiation in which different factions, interests, and ideology come to agreement, the core idea of our Constitution. Rather, he saw politics as a state of war between enemies, neither of which can understand the other and both of which feel existentially threatened—and only one of which can win. The aim of Schmittian politics is not to share the country but to dominate or destroy the other side. This conception has been evident in MAGA politics since Michael Anton (now a Trump-administration official) published his famous article arguing that the 2016 election was a life-and-death battle to save the country from the left (a “Flight 93” election: “charge the cockpit or you die”). In the speech given by Stephen Miller at Charlie Kirk’s memorial service, MAGA’s embrace of Schmittian totalism found its apotheosis: “We are the storm. And our enemies cannot comprehend our strength, our determination, our resolve, our passion … You are nothing. You are wickedness.”
Governing as revolution. Although born in revolution, the American liberal tradition, especially its conservative branch, prizes continuity, stability, and incremental change guided by reason. Fascism, by contrast, “is not reactionary but revolutionary,” as Mussolini insisted. It seeks to uproot and replace the old order and embraces bold, exhilarating action unshackled to rational deliberation. MAGA embraces its own revolutionary ethos, what Russell Vought, the administration’s Office of Management and Budget director and probably its most formidable intellect, has called “radical constitutionalism,” a doctrine that would vitiate many checks on presidential power. In pursuit of this vision, Vought told Tucker Carlson in a November 2024 interview, “The president has to move executively as fast and as aggressively as possible, with a radical constitutional perspective, to be able to dismantle that [federal] bureaucracy and their power centers” because “the bureaucracies hate the American people.” He predicted, “If you have a radical constitutionalism, it’s going to be destabilizing … But it’s also exhilarating.” He said he would put federal agencies “in trauma,” an idea echoed by Christopher Rufo, an architect of Trump’s attack on universities, which Rufo described as a “counterrevolution blueprint” to put universities “in an existential terror.” As Trump shuttered a congressionally mandated agency, renamed an international body of water, arrested an op-ed writer, deported immigrants to a foreign gulag, terrorized American cities, threatened an ally, and more, he showed how it looks when a radicalized state abandons rational deliberation and goes to war against itself.
One can object that there are elements of classical European fascism that are not found in Trumpism (mass rallies and public rituals, for example)—or that there are additional elements of Trumpism that belong on the list (MAGA’s hypermasculinity, misogyny, and co-option of Christianity all resemble fascist patterns). The exercise of comparing fascism’s various forms is not precise. If historians object that Trump is not a copy of Mussolini or Hitler or Franco, the reply is yes—but so what? Trump is building something new on old principles. He is showing us in real time what 21st-century American fascism looks like.
If, however, Trump is a fascist president, that does not mean that America is a fascist country. The courts, the states, and the media remain independent of him, and his efforts to browbeat them will likely fail. He may lose his grip on Congress in November. He has not succeeded in molding public opinion, except against himself. He has outrun the mandate of his voters, his coalition is fracturing, and he has neglected tools that allow presidents to make enduring change. He and his party may defy the Constitution, but they cannot rewrite it, thank goodness.
Read: How to tell if your president is a dictator
So the United States, once the world’s exemplary liberal democracy, is now a hybrid state combining a fascist leader and a liberal Constitution; but no, it has not fallen to fascism. And it will not.
In which case, is there any point in calling Trump a fascist, even if true? Doesn’t that alienate his voters? Wouldn’t it be better just to describe his actions without labeling him controversially?
Until recently, I thought so. No longer. The resemblances are too many and too strong to deny. Americans who support liberal democracy need to recognize what we’re dealing with in order to cope with it, and to recognize something, one must name it. Trump has revealed himself, and we must name what we see.
...
Read the original on www.theatlantic.com »
Most people’s journey with AI coding starts the same: you give it a simple task. You’re impressed. So you give it a large task. You’re even more impressed.
You open X and draft up a rant on job displacement.
If you’ve persisted past this point: congratulations, you understand AI coding better than 99% of people.
Serious engineers using AI to do real work and not just weekend projects largely also follow a predictable development arc.
Still amazed at the big task you gave it, you wonder if you can keep giving it bigger and bigger tasks. Maybe even that haunting refactor no one wants to take on?
But here’s where the curtain starts to crinkle.
On the one hand, you’re amazed at how well it seems to understand you. On the other hand, it makes frustrating errors and decisions that clearly go against the shared understanding you’ve developed.
You quickly learn that being angry at the model serves no purpose, so you begin to internalize any unsatisfactory output.
“It’s me. My prompt sucked. It was under-specified.”
“If I can specify it, it can build it. The sky’s the limit,” you think.
So you open Obsidian and begin drafting beefy spec docs that describe the feature in your head with impressive detail. Maybe you’ve put together a full page of a prompt, and spent half an hour doing so.
But you find that spec-driven development doesn’t work either. In real life, design docs and specs are living documents that evolve in a volatile manner through discovery and implementation. Imagine if in a real company you wrote a design doc in 1 hour for a complex architecture, handed it off to a mid-level engineer (and told him not to discuss the doc with anyone), and took off on vacation.
Not only does an agent not have the ability to evolve a specification over a multi-week period as it builds out its lower components, it also makes decisions upfront that it later doesn’t deviate from. And most agents simply surrender once they feel the problem and solution has gotten away from them (though this rarely happens anymore, since agents will just force themselves through the walls of the maze.)
What’s worse is code that agents write looks plausible and impressive while it’s being written and presented to you. It even looks good in pull requests (as both you and the agent are well trained in what a “good” pull request looks like).
It’s not until I opened up the full codebase and read its latest state cover to cover that I began to see what we theorized and hoped was only a diminishing artifact of earlier models: slop.
It was pure, unadulterated slop. I was bewildered. Had I not reviewed every line of code before admitting it? Where did all this…gunk..come from?
In retrospect, it made sense. Agents write units of changes that look good in isolation. They are consistent with themselves and your prompt. But respect for the whole, there is not. Respect for structural integrity there is not. Respect even for neighboring patterns there was not.
The AI had simply told me a good story. Like vibewriting a novel, the agent showed me a good couple paragraphs that sure enough made sense and were structurally and syntactically correct. Hell, it even picked up on the idiosyncrasies of the various characters. But for whatever reason, when you read the whole chapter, it’s a mess. It makes no sense in the overall context of the book and the preceding and proceeding chapters.
After reading months of cumulative highly-specified agentic code, I said to myself: I’m not shipping this shit. I’m not gonna charge users for this. And I’m not going to promise users to protect their data with this.
I’m not going to lie to my users with this.
So I’m back to writing by hand for most things. Amazingly, I’m faster, more accurate, more creative, more productive, and more efficient than AI, when you price everything in, and not just code tokens per hour.
You can follow me on X @atmoio, where I post a few times a week about agentic coding.
You can watch the video counterpart to this essay on YouTube:
...
Read the original on atmoio.substack.com »
...
Read the original on consumerrights.wiki »
It’s been a while since my boss told me I needed to start hiring for my team. While I was at it, I should also handle onboarding… Since I knew the roadmap, I could take ownership of that… And because I knew the people, I could coach them in their careers.
I didn’t realize at the time, but he was dooming me to be an engineering manager.
Since then, I’ve worked across four companies as a manager, one as a founder, and another as a manager of managers. I will skip the standard advice and lessons on Engineering Management and focus on the non-obvious ones.
There is no standard definition for an Engineering Manager. If you pick two random managers, they can do very different things, even if they are at the same company.
In every company I’ve worked at, my role has never been the same. The only constant is that it’s defined by the team’s needs, requiring you to balance across four pillars: Product, Process, People, and Programming.
* Large team? Say goodbye to programming. You’ll focus on building careers, coordinating efforts, and navigating the organization to get resources for your team.
* Small team? You’ll manage scope to match reality, and with less communication overhead, you might actually do some coding.
* No PM? You own the product completely: validating features, prioritizing the roadmap, and talking to clients. This takes up most of your time because shipping features that don’t offer user value makes everything else pointless.
* Reporting to the CEO? You’re now the link to sales, operations, and client communications.
The key is to identify where your team’s bottleneck lies in your software development lifecycle. You’ll probably shift between pillars as circumstances change, and that’s the point: the role requires flexibility.
Tip: Never ask the interviewer what they expect from a manager. Some managers assume their experience is industry standard and might find that question odd. Instead, ask about their daily life and the challenges that take up most of their time.
A few times in my career as a developer, I wondered, “Who is this feature even for? Who will use it?” No one on my team knew. We were doing it because we were told to. Morale was low. We felt we were working on things that didn’t matter - and we were. Eventually, our team disbanded, and engineers scattered across other projects.
The most common reason companies fail is creating products that don’t deliver value to users, causing them not to pay.
“Oh, but I have a PM for that,” you might say. But having a PM is not enough. Everyone needs to care about the product. Your team isn’t paid to just deliver code but to use it to solve problems.
Code is valuable only when it benefits the end user. Sometimes, a no-code integration can outperform a custom solution. At times, it’s better not to create a new feature at all to avoid maintaining a system. Teams that understand the problem, not just the spec, can pivot when necessary.
Every process trades time and attention for reliability or quality. The problem occurs when teams stop questioning if the trade is still worth it. Ceremonies become rituals. Metrics turn into goals. No one remembers why we spend an hour of our lives on this meeting.
Process bloat creeps in slowly. An engineer ships a broken UI to production. Designers complain, managers panic, and suddenly every PR requires designer approval. The whole team bears the cost of a single isolated incident.
Good process serves you so you can serve customers. But if you’re not watchful, the process can become the thing. You stop looking at outcomes and just make sure you’re doing the process right. The process is not the thing. It’s always worth asking, do we own the process or does the process own us?
The right process varies based on context: team size, experience levels, and deadline pressure. What works for a mature team might not work for a new one. Keep questioning and iterating. If a process isn’t improving delivery, cut it.
Your direct reports are the people who interact with you the most. They look to you for leadership and clarity, and trust that you’ll tell them what they need to know.
That’s why lying or withholding information that affects them causes irreversible damage. They might not leave immediately, but they will resent you.
I have a friend who still resents a manager for a lie told three years ago. They found another company, but they’re still angry about it.
“Trust arrives on foot and leaves by horseback.”
I’ve seen some managers describe the role as “a shield that blocks everything from above,” and I disagree. A good manager is more like a transparent umbrella. They protect the team from unnecessary stress and pressure, but don’t hide reality from them.
Telling the team: “Our users aren’t thrilled so far. We need to find ways to better serve them. The project risks cancellation if we don’t.” That’s fair game. They deserve to know.
When you do deliver hard news, state it clearly and focus on how the team will do about it. If you act scared, they’ll be scared too. Your goal is to get them thinking about the next steps.
I see managers walk into executive meetings saying, “We’re not sure what to do - maybe A, maybe B?” and then leave with orders to do Z, which doesn’t benefit the team or the project.
Executives can’t think of every possibility in detail - that responsibility lies with you and the person who owns the product (which, as we saw, could be you too). When a problem reaches the executives, it’s because a decision is needed, and they will make one.
People above you have limited time to focus on your specific issues. You can’t info dump on them. If they take a misguided action based on what you tell them, it will be your fault.
If you believe in something, clearly state your case, including the advantages and disadvantages. Don’t expect higher-ups to think for you. It’s okay to bounce rough ideas off your direct manager, but beyond that, refine your thoughts - no one will think harder about your problems than you and your team.
If you need a guideline, a document should be: context → problem → plan / alternatives → what support you need.
Player (10%): Yes, only 10%. You might take on work your team isn’t excited about, but that matters: CI/CD improvements, flaky tests, process tooling. However, you need to stay off the critical path. As soon as you start handling essential tickets, you’ll block your team when managerial work pulls you away.
Coach (30%): Your performance as a manager is the sum of your team’s output. Coaching involves preventing problematic behaviors from becoming normalized, such as toxicity, repeated mistakes, and consistent underperformance.
It also means supporting engineers’ growth by challenging them appropriately, providing the right feedback, and helping them develop skills they’ll carry forward.
Cheerleader (60%): Praise people more than you think you should. Validation is important. Most engineers prefer feeling appreciated over having a ping-pong table.
But give praise genuinely, not automatically. I once joined a team where retrospectives included 30 minutes of mutual praise - n-squared compliments every week. It felt hollow. Not every week has something extraordinary, and when praise becomes expected, it loses its impact. The hedonic treadmill is real.
Make your engineers’ wins visible beyond your team. Encourage them to pursue impact outside the team, and celebrate their achievements when they do.
Every team operates like a small company within the larger organization. I find that its morale also exists independently of the company’s overall morale.
Most managers don’t plan to become bottlenecks. It happens gradually. A critical tool needs an owner, and you think, “I’ll handle this for now.” Someone needs to be the point of contact for another team, and it’s easiest if it’s you. Technical decisions keep landing on your desk because you’re the one with context. Before you know it, work stops without you.
If you can’t take a month off and return to a well-functioning team, you need to work toward making that possible.
You’re too busy to be the bottleneck. If people keep reaching out to you for recurring tasks, delegate by teaching someone else to handle them. Point team members directly to each other or, even better, create group chats to facilitate natural discussions.
Don’t become the bus factor of 1. Train others so work continues smoothly even when you’re overwhelmed or unavailable.
Avoid making people feel they need your permission for small, reversible decisions. Empower them with agency. Request to stay informed about their decisions, but let them handle the technical side.
The reason you will do this is that managerial work can, and will, appear at the worst time. If you are the bus factor, you will be screwing your team when it happens. There are many engineers, but only one manager. Stay accessible for tasks that only you can handle.
Ask yourself: can you trust every engineer on your team to do their best without you constantly watching? If not, something needs to change—either in you or in them.
Trust isn’t about just technical skill. If I asked my current engineers (mobile and web developers) to build a Game Boy emulator from scratch, they wouldn’t know where to begin. They’d probably take months (some just weeks). But I’m sure they’d try their best to figure out how to run Pokémon Gold.
You need to trust both their abilities and their honesty:
* If you can’t trust their skills at their level of experience, it’s your job to help them get better.
* If you can’t trust their honesty, and you have good reasons not to, then you need to part ways.
Even great engineers get stuck without realizing it. Watching progress helps you spot when they need support before others see them as underperforming.
Processes like sprints and OKRs mainly focus on the “verify” stage (see, your manager does this too). They serve as a shared interface to ensure work gets done. This isn’t about lack of trust but accountability.
Verification involves using metrics and evidence. There are two types: quantitative and qualitative.
Quantitative is simple: PRs merged, points completed, code reviewed. You can glance at these, but decisions shouldn’t be based on them alone. If you could gauge engineer performance from numbers, managers wouldn’t be needed.
Knowing the Qualitative metrics shows a manager’s worth. “This engineer has fewer PRs, but they’re always watching Slack and hopping into calls to help others.” “This engineer always discusses tickets with product first - their output ends up far better than our original specs.” “This engineer explains complex concepts in ways everyone can understand and makes other teams use our tool better.”
These insights depend on truly knowing your team. That’s why most “management AI tools” are doomed to fail. They only focus on quantitative metrics. They don’t attend your standups, don’t conduct 1:1s for you, and don’t know who’s quietly holding the team together. A good manager does.
Stop having pet projects; that’s a Staff Engineer’s domain. For a manager, every project is cattle: it needs to be completed, automated, delegated, or cancelled.
Managers hold on to projects for many reasons. Sometimes it’s comfort - you know this system, you built it, and it feels good to stay close to it. Sometimes it’s identity - you want to stay “technical” and not lose your edge. Sometimes it’s fear - you don’t trust it’ll be done right without you. None of these is a good reason to hold on.
The “I can do it faster myself” mindset might be accurate, but in the long run, it’s not sustainable. Every time you do it yourself, you rob someone else from learning and ensure you’ll be doing it forever.
Be risk-averse, not risk-paranoid. You can’t account for every variable. Some things can’t be anticipated, and overcorrecting may be worse than the original issue.
Hiring is where I see this most often. After a bad hire, managers start requiring referrals, but almost anyone, no matter how unskilled or dishonest, can find someone to vouch for them. Others add more interviewers to the panel, thinking more eyes means better vetting.
The opposite happens: each interviewer becomes more lax, expecting someone else to be “the bad guy.” Responsibility gets diluted. Three great interviews beat seven mediocre ones.
Think about second-order effects too: while you’re scheduling that seventh round, good candidates are accepting offers elsewhere. The best talent moves quickly. A slow, risk-averse process filters out exactly the people you wanted to hire.
If any of this resonated, my free online work-in-progress book goes deeper. If you’re a manager too, I’d love to hear what you’ve learned. Drop it in the comments!
...
Read the original on www.jampa.dev »
Regime insiders use “white SIM cards” for unrestricted access, while 85 million citizens remain cut off. Irancell’s CEO was fired for delaying the shutdown.
Iran’s near-total communications blackout has entered its 16th day, but that’s just a live test.
Following a repressive crackdown on protests, the government is now building a system that grants web access only to security-vetted elites, while locking 90 million citizens inside an intranet.
Government spokesperson Fatemeh Mohajerani confirmed international access will not be restored until at least late March. Filterwatch, which monitors Iranian internet censorship from Texas, cited government sources, including Mohajerani, saying access will “never return to its previous form.”
This is what makes Iran’s attempt unique: Other authoritarian states built walls before their populations went online. Iran is trying to seal off a connected economy already in freefall.
The system is called Barracks Internet, according to confidential planning documents obtained by Filterwatch. Under this architecture, access to the global web will be granted only through a strict security whitelist.
“The regime is terrified of one thing: Iranians being heard telling their own truth and having crimes documented,” Mahsa Alimardani, a digital rights researcher at U. S.-based Witness, which trains activists to use video for advocacy, told Rest of World. “The question becomes: How do we give Iranians an unbreakable voice?”
The idea of tiered internet access is not new in Iran. Since at least 2013, the regime has quietly issued “white SIM cards,” giving unrestricted global internet access to approximately 16,000 people. The system gained public attention in November 2025 when X’s location feature revealed that certain accounts, including the communications minister, were connecting directly from inside Iran, despite X being blocked since 2009.
What is different now is scale and permanence. The current blackout tests infrastructure designed to make two-tier access the default, not a temporary crackdown.
Only a handful of nations have attempted to wall off their citizens from the global internet. North Korea’s Kwangmyong intranet was built from scratch for a population that never had connectivity. China constructed its Great Firewall over two decades while nurturing domestic alternatives such as WeChat and Alibaba. Iran is attempting to do both in weeks, with no domestic alternatives.
The economic costs of the blackout are staggering. Iran’s deputy communications minister pegged the daily losses at as much as $4.3 million. NetBlocks estimates the true cost exceeds $37 million daily. More than 10 million Iranians depend directly on digital platforms for their livelihoods.
Tipax, one of Iran’s largest private delivery companies handling about 320,000 daily shipments before the protests, now processes fewer than a few hundred, according to Filterwatch. The company operates a nationwide logistics network comparable to FedEx in the U. S. market.
The government fired Irancell’s CEO for failing to comply with shutdown orders. Irancell, the country’s second-largest mobile operator with 66 million subscribers, is partly owned by South Africa’s MTN Group. Alireza Rafiei was removed for disobeying orders on “restriction of internet access in crisis situations,” according to Fars news agency.
Foreign telecom partners have left Iran in recent days under security escort, without media coverage, according to Filterwatch. This may signal the end of international cooperation in critical infrastructure, replaced by the Revolutionary Guard’s construction arm or limited cooperation with Huawei.
Technical experts doubt the regime can sustain Barracks Internet without crippling the economy. Georgia Tech’s Internet Intelligence Lab, which has tracked Iran’s shutdowns since the Arab Spring, called the blackout “the most sophisticated and most severe in Iran’s history.” Its measurements show about 3% connectivity persists, likely government officials and state services.
Kaveh Ranjbar, former chief technology officer at RIPE NCC, the body managing European internet infrastructure, calls the plan a “digital airlock” that can’t fully seal a modern economy. No country has hermetically sealed a functioning digital economy, he told The New Arab.
Activists have smuggled an estimated 50,000 Starlink satellite terminals into Iran since 2022, when the Biden administration exempted the service from sanctions. SpaceX has made the service free for Iranian users.
The government claims it cut off 40,000 Starlink connections and jammed some terminals during the blackout, though others remain operational after firmware updates to bypass government blocking. Still, the technology remains vulnerable to signal jamming, meaning the regime holds ultimate leverage.
“We need to revolutionize access to the internet,” said Alimardani. “And move beyond the limiting structures and norms of ‘internet sovereignty.’”
...
Read the original on restofworld.org »
Clawdbot is a personal AI assistant you run on your own devices. It answers you on the channels you already use (WhatsApp, Telegram, Slack, Discord, Google Chat, Signal, iMessage, Microsoft Teams, WebChat), plus extension channels like BlueBubbles, Matrix, Zalo, and Zalo Personal. It can speak and listen on macOS/iOS/Android, and can render a live Canvas you control. The Gateway is just the control plane — the product is the assistant.
If you want a personal, single-user assistant that feels local, fast, and always-on, this is it.
Preferred setup: run the onboarding wizard (clawdbot onboard). It walks through gateway, workspace, channels, and skills. The CLI wizard is the recommended path and works on macOS, Linux, and Windows (via WSL2; strongly recommended). Works with npm, pnpm, or bun. New install? Start here: Getting started
Model note: while any model is supported, I strongly recommend Anthropic Pro/Max (100/200) + Opus 4.5 for long‑context strength and better prompt‑injection resistance. See Onboarding.
npm install -g clawdbot@latest
# or: pnpm add -g clawdbot@latest
clawdbot onboard –install-daemon
The wizard installs the Gateway daemon (launchd/systemd user service) so it stays running.
clawdbot onboard –install-daemon
clawdbot gateway –port 18789 –verbose
# Send a message
clawdbot message send –to +1234567890 –message “Hello from Clawdbot”
# Talk to the assistant (optionally deliver back to any connected channel: WhatsApp/Telegram/Slack/Discord/Google Chat/Signal/iMessage/BlueBubbles/Microsoft Teams/Matrix/Zalo/Zalo Personal/WebChat)
clawdbot agent –message “Ship checklist” –thinking high
Prefer pnpm for builds from source. Bun is optional for running TypeScript directly.
git clone https://github.com/clawdbot/clawdbot.git
cd clawdbot
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
pnpm clawdbot onboard –install-daemon
# Dev loop (auto-reload on TS changes)
pnpm gateway:watch
Note: pnpm clawdbot … runs TypeScript directly (via tsx). pnpm build produces dist/ for running via Node / the packaged clawdbot binary.
* DM pairing (dmPolicy=“pairing” / channels.discord.dm.policy=“pairing” / channels.slack.dm.policy=“pairing”): unknown senders receive a short pairing code and the bot does not process their message.
* Approve with: clawdbot pairing approve (then the sender is added to a local allowlist store).
* Public inbound DMs require an explicit opt-in: set dmPolicy=“open” and include “*” in the channel allowlist (allowFrom / channels.discord.dm.allowFrom / channels.slack.dm.allowFrom).
Clawdbot can auto-configure Tailscale Serve (tailnet-only) or Funnel (public) while the Gateway stays bound to loopback. Configure gateway.tailscale.mode:
* serve: tailnet-only HTTPS via tailscale serve (uses Tailscale identity headers by default).
* gateway.bind must stay loopback when Serve/Funnel is enabled (Clawdbot enforces this).
* Serve can be forced to require a password by setting gateway.auth.mode: “password” or gateway.auth.allowTailscale: false.
* Funnel refuses to start unless gateway.auth.mode: “password” is set.
It’s perfectly fine to run the Gateway on a small Linux instance. Clients (macOS app, CLI, WebChat) can connect over Tailscale Serve/Funnel or SSH tunnels, and you can still pair device nodes (macOS/iOS/Android) to execute device‑local actions when needed.
* Gateway host runs the exec tool and channel connections by default.
* Device nodes run device‑local actions (system.run, camera, screen recording, notifications) via node.invoke.
In short: exec runs where the Gateway lives; device actions run where the device lives.
The macOS app can run in node mode and advertises its capabilities + permission map over the Gateway WebSocket (node.list / node.describe). Clients can then execute local actions via node.invoke:
* system.run runs a local command and returns stdout/stderr/exit code; set needsScreenRecording: true to require screen-recording permission (otherwise you’ll get PERMISSION_MISSING).
* system.notify posts a user notification and fails if notifications are denied.
* canvas.*, camera.*, screen.record, and location.get are also routed via node.invoke and follow TCC permission status.
* Use /elevated on|off to toggle per‑session elevated access when enabled + allowlisted.
* Gateway persists the per‑session toggle via sessions.patch (WS method) alongside thinkingLevel, verboseLevel, model, sendPolicy, and groupActivation.
* Use these to coordinate work across sessions without jumping between chat surfaces.
ClawdHub is a minimal skill registry. With ClawdHub enabled, the agent can search for skills automatically and pull in new ones as needed.
Send these in WhatsApp/Telegram/Slack/Google Chat/Microsoft Teams/WebChat (group commands are owner-only):
* /new or /reset — reset the session
The Gateway alone delivers a great experience. All apps are optional and add extra features.
If you plan to build/run companion apps, follow the platform runbooks below.
* Menu bar control for the Gateway and health.
Note: signed builds required for macOS permissions to stick across rebuilds (see docs/mac/permissions.md).
* Pairs as a node via the Bridge.
* Pairs via the same Bridge + pairing flow as iOS.
agent: {
model: “anthropic/claude-opus-4-5”
* Default: tools run on the host for the main session, so the agent has full access when it’s just you.
* Group/channel safety: set agents.defaults.sandbox.mode: “non-main” to run non‑main sessions (groups/channels) inside per‑session Docker sandboxes; bash then runs in Docker for those sessions.
* Allowlist who can talk to the assistant via channels.whatsapp.allowFrom.
* If channels.whatsapp.groups is set, it becomes a group allowlist; include “*” to allow all.
* Optional: set channels.telegram.groups (with channels.telegram.groups.“*”.requireMention); when set, it is a group allowlist (include “*” to allow all). Also channels.telegram.allowFrom or channels.telegram.webhookUrl as needed.
channels: {
telegram: {
botToken: “123456:ABCDEF”
* Optional: set commands.native, commands.text, or commands.useAccessGroups, plus channels.discord.dm.allowFrom, channels.discord.guilds, or channels.discord.mediaMaxMb as needed.
channels: {
discord: {
token: “1234abcd”
* macOS only; Messages must be signed in.
* If channels.imessage.groups is set, it becomes a group allowlist; include “*” to allow all.
* Allowlist who can talk via msteams.allowFrom; group access via msteams.groupAllowFrom or msteams.groupPolicy: “open”.
browser: {
enabled: true,
controlUrl: “http://127.0.0.1:18791”,
color: “#FF4500”
Use these when you’re past the onboarding flow and want the deeper reference.
Clawdbot was built for Clawd, a space lobster AI assistant. 🦞 by Peter Steinberger and the community.
See CONTRIBUTING.md for guidelines, maintainers, and how to submit PRs. AI/vibe-coded PRs welcome! 🤖
Special thanks to Mario Zechner for his support and for
pi-mono.
Thanks to all clawtributors:
...
Read the original on github.com »
Today we are happy to announce MapLibre Tile (MLT), a new modern and efficient vector tile format.
MapLibre Tile (MLT) is a succesor to Mapbox Vector Tile (MVT). It has been redesigned from the ground up to address the challenges of rapidly growing geospatial data volumes and complex next-generation geospatial source formats, as well as to leverage the capabilities of modern hardware and APIs.
MLT is specifically designed for modern and next-generation graphics APIs to enable high-performance processing and rendering of large (planet-scale) 2D and 2.5 basemaps. This current implementation offers feature parity with MVT1 while delivering on the following:
* Improved compression ratio: up to 6x on large tiles, based on a column-oriented layout with recursively applied (custom)
lightweight encodings. This leads to reduced latency, storage, and egress costs and, in particular, improved cache utilization.
* Better decoding performance: fast, lightweight encodings that can be used in combination with SIMD/vectorization instructions.
In addition, MLT was designed to support the following use cases in the future:
* Improved processing performance, based on storage and in-memory formats that are specifically designed for modern graphics APIs,
allowing for efficient processing on both CPU and GPU. The formats are designed to be loaded into GPU buffers with little or no additional processing.
* Support for linear referencing and m-values to efficiently support the upcoming next-generation source formats such as Overture Maps (GeoParquet).
As with any MapLibre project, the future of MLT is decided by the needs of the community. There are a lot of exciting ideas for other future extensions and we welcome contributions to the project.
For a more in-depth exploration of MLT have a look at the following slides, watch
this talk or read this publication by MLT inventor Markus Tremmel.
For the adventurous, the answer is: today. Both MapLibre GL JS and MapLibre Native now support MLT sources. You can use the new encoding property on sources in your style JSON with a value of mlt for MLT vector tile sources.
To try out MLT, you have the following options:
* The easiest way to try out MLT is to use the MLT-based demotiles style.
* You can also try out the encoding server that converts existing (MVT-based) styles and vector tile sources to MLT on the fly. This is mostly a tool for development.
* To create tiles for production, you could use Planetiler, as the upcoming version will support generating MLTs.
Refer to this page for a complete and up-to-date list of integrations and implementations. If you are an integrator working on supporting MLT, feel free to add your own project there.
We would love to hear your experience with using MLT! Join the #maplibre-tile-format channel on our Slack or create an Issue or Discussion on the tile spec repo.
MapLibre Tile came to be thanks to a multi-year collaboration between academia, open source and enterprise. Thank you to everyone who was involved! We are very proud that our community can innovate like this.
Special thanks go to Markus Tremmel for inventing the format, Yuri Astrakhan for spearheading the project, Tim Sylvester for the C++ implementation, Harel Mazor, Benedikt Vogl and Niklas Greindl for working on the JavaScript implementation.
Also thanks to Microsoft and AWS for financing work on MLT.
...
Read the original on maplibre.org »
the browser is the sandbox. Paul Kinlan is a web platform developer advocate at Google and recently turned his attention to coding agents. He quickly identified the importance of a robust sandbox for agents to operate in and put together these detailed notes on how the web browser can help:
This got me thinking about the browser. Over the last 30 years, we have built a sandbox specifically designed to run incredibly hostile, untrusted code from anywhere on the web, the instant a user taps a URL. […]
Could you build something like Cowork in the browser? Maybe. To find out, I built a demo called Co-do that tests this hypothesis. In this post I want to discuss the research I’ve done to see how far we can get, and determine if the browser’s ability to run untrusted code is useful (and good enough) for enabling software to do more for us directly on our computer.
Paul then describes how the three key aspects of a sandbox - filesystem, network access and safe code execution - can be handled by browser technologies: the File System Access API (still Chrome-only as far as I can tell), CSP headers with and WebAssembly in Web Workers.
Co-do is a very interesting demo that illustrates all of these ideas in a single application:
You select a folder full of files and configure an LLM provider and set an API key, Co-do then uses CSP-approved API calls to interact with that provider and provides a chat interface with tools for interacting with those files. It does indeed feel similar to Claude Cowork but without running a multi-GB local container to provide the sandbox.
My biggest complaint about remains how thinly documented it is, especially across different browsers. Paul’s post has all sorts of useful details on that which I’ve not encountered elsewhere, including a complex double-iframe technique to help apply network rules to the inner of the two frames.
Thanks to this post I also learned about the tag which turns out to work on Firefox, Safari and Chrome and allows a browser read-only access to a full directory of files at once. I had Claude knock up a webkitdirectory demo to try it out and I’ll certainly be using it for projects in the future.
...
Read the original on simonwillison.net »
At what point do “you” end and the outside world begins?
It might feel like a weird question with an obvious answer, but your brain has to work surprisingly hard to judge that boundary. Now, scientists have linked a specific set of brain waves in a certain part of the brain to a sense of body ownership.
In a series of new experiments, researchers from Sweden and France put 106 participants through what’s called the rubber hand illusion, monitoring and stimulating their brain activity to see what effect it had.
Related: Octopuses Fall For The Classic Fake Arm Trick — Just Like We Do
This classic illusion involves hiding one of a participant’s hands from their view and replacing it with a rubber one instead. When both their real and fake hands are repeatedly touched at the same time, it can evoke the eerie sensation that the rubber hand is part of the person’s body.
The tests, which in one experiment involved EEG (electroencephalography) readings of brain activity, revealed that a sense of body ownership seems to arise from the frequency of alpha waves in the parietal cortex, a brain region responsible for mapping the body, processing sensory input and building a sense of self.
“We have identified a fundamental brain process that shapes our continuous experience of being embodied,” says lead author Mariano D’Angelo, a neuroscientist at Karolinska Institute in Sweden.
“The findings may provide new insights into psychiatric conditions such as schizophrenia, where the sense of self is disturbed.”
In the first batch of experiments, participants had a robotic arm tap the index finger of their real and fake hands, either at the exact same time or with a delay of up to 500 milliseconds between each tap.
As expected, participants reported feeling that the fake hand was part of their body more strongly if the taps were synchronized, and the feeling steadily weakened as the gap widened between what they felt and what they saw.
The EEG readings from the second experiment added more detail to the story. The frequency of alpha waves in the parietal cortex seemed to correlate with how well participants could detect the time delay between taps.
Those with faster alpha waves appeared to rule out fake hands even with a tiny gap in taps, while those with slower waves were more likely to feel the fake hand as their own, even if the taps were farther apart.
Finally, the researchers investigated whether the frequency of these brain waves actually controls the sensation of body ownership, or if they were perhaps both effects of some other factor.
With a third group of participants, they used a non-invasive technique called transcranial alternating current stimulation to speed up or slow down the frequency of a person’s alpha waves. And sure enough, this seemed to correlate with how real a fake hand felt.
Speeding up someone’s alpha waves gave them a tighter sense of body ownership, making them more sensitive to small timing discrepancies. Slowing down the waves had the opposite effect, making it harder for people to tell the difference between their own body and the outside world.
“Our findings help explain how the brain solves the challenge of integrating signals from the body to create a coherent sense of self,” says Henrik Ehrsson, neuroscientist at Karolinska.
The researchers say that the findings could lead to new understanding of or treatments for conditions where the brain’s body maps have gone askew, such as schizophrenia or the sensation of ‘phantom limbs’ experienced by amputees.
It could also help make for more realistic prosthetic limbs or even virtual reality tools.
The research was published in the journal Nature Communications.
...
Read the original on www.sciencealert.com »
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.