Are you familiar with driving? Do you know how it works? I don’t mean “Are you licensed to operate a commercial vehicle?” I mean “Have you ever looked at a street for five seconds?” You have, right? You have at least a 3-year-old’s grasp of how drivers are supposed to operate their vehicles? Fabulous. Here’s a question for you: Is it OK for drivers to hit people with their cars?
By “people”—and I can’t believe I’m defining this term, but we live in uneasy times—I just mean regular, unprotected human beings. Your fellow Homo sapiens, standing around on their vulnerable human legs, offering no meaningful resistance to the progress of a high-powered, 4,000-pound luxury sedan. Is it cool to drive right into them?
Think about it. Take all the time you need.
And … you’re correct! OF COURSE IT’S NOT OK TO HIT A PERSON WITH YOUR CAR. Don’t hit a person with your car! There’s zero ambiguity here. “Do not knowingly or by negligent ignorance drive your automobile into another human being” is pretty much driving’s prime directive. Knowing it is more important than knowing how to start your engine. Unless your life was in danger or you genuinely had no way of seeing the person who flung themselves directly into your path, you simply do not have a large fund of valid excuses to justify steering your enormous, unyielding vehicle into a non-enormous, extremely yielding human body.
1. “They were blocking my path.” Not an excuse! 2. “They were touching my car.” Not an excuse! 3. “They disagreed with my politics.” Not an excuse! 4. “They were rude to me.” Not an excuse! 5. “They kept asking me hard questions and filming me with their phones, and I’m a powerful man who’s used to being treated with deference.” Buddy! You cannot ram your Cadillac into a pedestrian just because you’re an easily flustered rich guy! This is so obvious!
At least, I used to think it was obvious. That was before the president of Cornell backed his car into a group of students and got away with it scot-free.
The president of Cornell did what?!
Backed his car into a bunch of students—but hang on, it gets worse.
On April 30, the president of Cornell University, Michael Kotlikoff, delivered an opening statement at a debate on the Israel-Palestine conflict hosted by the Cornell Political Union. After the event, a few members of the free-speech advocacy group Students for a Democratic Cornell walked with Kotlikoff to his car. On the walk, they asked Kotlikoff, whose remarks had emphasized the importance of a free and open exchange of ideas on campus, about the Ivy League university’s recent moves to suppress student speech. If the free exchange of ideas was vital to Cornell, then why had the administration adopted a new policy, in the aftermath of the 2023 protests over Israel’s attack on Gaza, giving it the power to suspend students immediately and indefinitely for protesting? Why was the university allegedly sending employees to take pictures of students at protests? Why had so many students been barred from campus for engaging in the sort of disruptive but nonviolent protest actions—shutting down a career fair, building a pro-Gaza encampment—that have been part of American campus culture for generations?
The students thought they knew: Cornell receives hundreds of millions of dollars in grants from the Department of Defense and major weapons manufacturers and invests the money into endowment funds that include those same military contractors. (Cornell also partners with the Technion-Israel Institute, which has strong ties to the Israeli military and has prompted calls for boycotts in countries from Italy to Korea.) The university’s finances are therefore structurally pro-war: The more money the weapons manufacturers make, the bigger the research grants they can give Cornell. The more their stock prices rise, the more Cornell’s endowment—$11.8 billion at the end of fiscal year 2025, after a 12.3 percent return—increases in value. And because of this system, protests that call for divestment from military companies with ties to Israel have the potential to interfere with Cornell’s money-making operations, and thus can’t be tolerated.
Kotlikoff wasn’t likely to say any of that out loud, and the students who accompanied him to his car weren’t likely to get satisfactory answers to their questions. But confronting him was still a way to make their voices heard, and to emphasize the chasm between the pro-speech principles Kotlikoff supports in public and the anti-speech policies adopted by his administration.
On the walk to the car, the students, who were joined by some recent Cornell graduates, were a little obnoxious, in the way that young, passionate people can be. But they were only a little obnoxious. Extensive video evidence—and don’t worry, we’ll get to the videos—indicates that they didn’t touch Kotlikoff, or crowd him, or threaten him. They didn’t even really raise their voices. They asked him questions in a somewhat hectoring tone; they held up their phones and recorded the encounter. Kotlikoff, in the videos, appears rigid with discomfort. His face is tense, his posture awkward. His answers are clipped and irritated. He looks and sounds like a powerful man who’s unexpectedly found himself outside the environment of lackeys, assistants, and allies in which he normally spends his time—and who absolutely hates it.
Kotlikoff gets into his big black Cadillac. The young people surround the car, still filming. One stands directly behind the vehicle, blocking Kotlikoff’s exit. They don’t touch the car, but they also don’t move. They’re inconveniencing Kotlikoff, not terrorizing him. (In the history of protest movements in the United States, inconvenience has been an extremely potent tool.) Kotlikoff endures this for around 15 seconds before starting to back up—again, with a student standing directly behind his car, inches away from the bumper. The guy behind the car steps back but doesn’t get out of the way; Kotlikoff, driving in a jerky, start-stop manner, keeps backing up. He hits one young person, Hudson Athas, a member of Cornell’s class of 2027, and runs over the foot of another, Aiden Vallecillo, class of 2026.
“Ah! He just ran over my fucking foot!” Vallecillo screams in the video. “Oh my God!”
Wait, the president of Cornell drove a Cadillac over the foot of a member of the class of 2026? He must have immediately jumped out to make sure the guy was OK, right?
Nope! Kotlikoff’s academic background is in medicine—albeit veterinary medicine—but he didn’t even roll down the window. He just drove away.
But surely he at least put out a statement apologizing for his actions?
Oh, he released a statement, all right. The day after the incident, he sent a mass email to the entire Cornell community. The email was titled “Harassment and intimidation incident at Day Hall.” In it, Kotlikoff depicted himself as the victim of an unruly gang of student agitators. His description of the event seemed to spring from the night terrors of all-powerful and insulated people: Having gotten him alone, the students, he wrote, harangued him, “loudly shouting questions”; when he got in the car, he wrote, they started banging on the windows while continuing to shout. “The behavior I experienced last night,” Kotlikoff asserted in the statement, “is not protest. It is harassment and intimidation, with the direct motive of silencing speech. It has no place in an academic community, no place in a democracy, and can have no place at Cornell.”
Amid all this high-toned rhetoric, Kotlikoff didn’t mention the university’s own, far more severe attempts to silence speech on campus. He also left out the whole part where he drove his car into two members of the university community.
Oh, so it’s really Kotlikoff's word versus the students’? He says the incident went down one way, they say it went down another way, who’s to say, we’ll probably never know the truth, blah blah blah. Is that right?
Absolutely not. Remember, several of the students who walked with Kotlikoff to his car were filming on their phones. The incident was recorded from multiple angles. Some of the footage made its way to Cornell’s excellent student newspaper, The Cornell Daily Sun, and the video reveals that Kotlikoff’s email is full of falsities. The students didn’t scream at Kotlikoff. They didn’t bang on his windows, as he claimed. “I waited until I saw space behind my car,” Kotlikoff wrote, “and then, using my car’s rear pedestrian alert and automatic braking system, was able to slowly maneuver my car from the parking space.” The video shows Kotlikoff waiting only a few seconds before backing up, and while there was technically space behind his car when he did so—there’s technically space between two atoms in a molecule—there wasn’t a whole lot.
Kotlikoff, incidentally, later said that he didn’t realize he’d hit the students—or, as he put it, “I did not believe, based on the information I had at the time, that my car had made contact with anyone.” I’ll leave that to you to judge; personally, I don’t believe I could drive over a human foot without feeling a pretty dramatic bump, but my car probably isn’t as smooth as a Cadillac. While it is of course possible that Kotlikoff is telling the truth about not knowing he’d hit anyone, his employment of lawsuit-optimized language like “using my car’s rear pedestrian alert and automatic braking doesn’t inspire much confidence. Nor does the fact that his email is full of so many other statements that look rather suspiciously like lies.
It’s too bad for Cornell that it didn’t have its own video footage to back up Kotlikoff’s account of what happened.
Oh, but it did! After the Sun published its video, Cornell responded by releasing security camera footage that school officials said showed a more complete version of what had happened, “instead of clips to support a narrative.” And, like … it doesn’t contradict the students’ narrative? At all? I truly cannot understand why the university would have chosen to release this recording, because it mostly just makes Kotlikoff look worse. It does so first by highlighting the false claims in his account—I clicked on the video assuming it would show students banging on windows; it doesn’t—and second by highlighting his erratic, panicky driving. I mean, look at this video, think of a college-aged person you know, and tell me if this is the level of regard you would like their college president to show for their safety. Or, since there seems to be some dark magic in the word “college” that makes many American adults lose their minds when they see it, think of high school kids: Would you be OK with their principal if he’d done Would you try to back out with a 5-year-old standing in that spot behind your car?
It wouldn’t really matter, by the way, if the students had screamed at Kotlikoff and banged on his windows, because—see the beginning of this article—you’re not supposed to drive into people even if they’re being rude to you, standing in your way, disagreeing with your politics, or touching your car. But the footage, which shows that they makes it clear that there is only one plainly unreliable party in this controversy. And it’s not the unruly mob of punk youths.
Were any of the students hurt?
Not seriously, thank goodness! It was a low-speed collision. Personally, I’m not all that eager to have an SUV roll over my foot even at low speed. And in any case, speed is not the issue. The issue—I’ll keep repeating it!—is that you shouldn’t hit people with your car.
OK, for a university president to back his car into students, then paint himself as the victim while seemingly lying about what happened, is a pretty awful look. Did whoever’s in charge of a university president (and who is that?) look into the incident?
Yes. On May 7, a week after the incident, the Cornell Board of Trustees announced it was forming a special ad hoc committee to investigate “the events of April 30, 2026, involving Cornell President Michael I. Kotlikoff and a group of individuals.” The board further announced that it was “committed to ensuring a fair and thorough review guided by adherence to university policies and the best interests of the Cornell community.”
Yes. The committee’s statement is, to me, the most quietly deranged part of this entire sordid tale. There is no concern in it—none!—for Cornell students. The entire document, which is full of obfuscation and misleading logic, drips with resentment and suspicion toward the young people Cornell notionally exists to educate. (Why the committee reserves no suspicion for the one person in the incident who made verifiably false claims about what happened, I will again leave to you to decide.) The statement asserts that Vallecillo refused medical treatment at the scene, which the group Students for a Democratic Cornell says is untrue. In any case, who cares? “I was totally justified in running over your foot because you refused medical treatment afterward” is a nonsense argument! The committee also emphasizes that the students refused to provide sworn statements to campus police; if true, that would potentially be a barrier to the progress of an investigation, except that—oh, wait—there is extensive video footage of the incident.
“How can you know what really destroyed Alderaan when no one from Alderaan made a sworn statement?” Because I don’t know what happened to Alderaan from reading a sworn statement. I know what happened to Alderaan because I FUCKING WATCHED STAR WARS, YOU ABSOLUTE CLOWNS.
The statement concludes with a robust defense of free speech that reads suspiciously like a memorandum onhating free speech. “Expressive activity must occur within the bounds of the law and with respect for the rights and safety of all members of our community.” (Unlike driving, I guess?) “Over the course of his decades-long tenure at Cornell, President Kotlikoff has conveyed his strong belief that with freedom, particularly freedom of speech, comes responsibility.” (Gotta admire the choice to reference a line made famous by Spider-Man, a young person who constantly gets in trouble with obtuse and corrupt old people for doing the right thing.)
“We are confident,” the statement continues, “that he will continue to lead with integrity as we work together to carry out our shared mission to discover, preserve, and disseminate knowledge, to educate the next generation of global citizens, and to promote a culture of broad inquiry throughout and beyond the Cornell community.”
This has got to be the most stirring committee report on a guy hitting two young men with a luxury car that’s ever been published. It sounds like something someone said after planting a flag on the moon. I’m sort of amazed the trustees didn’t give Kotlikoff a raise.
Anyway, while I applaud Cornell’s commitment to its shared mission to discover, preserve, and disseminate knowledge, you know what I think would also do wonders for the health of the institution? A SHARED MISSION TO KEEP THE PRESIDENT FROM HITTING STUDENTS WITH HIS FUCKING CAR.
This is absurd! Was the media at least incensed about the report?
Other than The Cornell Daily Sun—and let’s take a moment to appreciate the essential work student journalists are doing around the U.S.—the media has, uh, not exactly covered itself in glory in its reporting on this story.
The New York Post went as New York Post as you’d expect, publishing a deceptive video titled “Radical Students Hold Cornell President HOSTAGE in Car After Israel Debate Clash.” The New York Times—more temperate, more responsible, and historically quite willing to go after university presidents if the right conservative billionaires tell it to—took one hard look at the story and concluded that the villain was … the car.
Media coverage of the event was so bad overall—for one thing, it kept calling the students pro-Palestinian activists, rather than what they are, which is advocates for free speech at —that the students recorded a video explaining their side of the incident. It’s worth a play, partly because it offers a concise explanation of how financial incentives push university administrators to embrace war, partly because it feels several billion times more sincere and human than the statements from the administration and trustees, and partly because … well, how often do you get to watch a video that opens with a young man calmly saying, “The president of Cornell University just ran over my foot”?
At least this was a one-off incident, unrelated to the larger state of American higher education.
I think it was actually a perfect illustration of the state of American higher education.
How so? Surely college presidents aren’t constantly plowing into groups of students with their Audis!
Because of who’s in charge. You’ve read a million pearl-clutching op-eds about woke professors and cancel culture, but for my money, the real crisis facing American higher education is that colleges and universities are increasingly run by people who are hostile to students and professors, and who are frequently hostile to the idea of the university itself.
For much of the 20th century, institutions of higher learning in the U.S. operated under a model of shared governance. Students and staff had means of influencing the direction of university policy, faculty had broad power over day-to-day operations, and boards of trustees acted under advisement from both groups. In the 1970s, however, after postwar investment in higher education started dwindling, trustees moved to take almost all the practical power for themselves. The result is that the people who perform the activities you probably think of when you think of college—teaching, studying, writing books, playing intramural volleyball, eating 2 a.m. Cheetos in the library—exert little influence over what the institution does.
And the people who do exert influence often have little to do with the life of the institution itself. They don’t work or study there; they just call the shots. And you know how sophisticated sports analysts love to say, “The commissioner doesn’t work for the fans, he works for the owners”? Well, college presidents, deans, and administrators don’t work for students, parents, or faculty members. They work for the trustees.
A new paper in the University of Pennsylvania Law Review helps explain why this structure is so flawed. Written by Daniel J. Hemel from the New York University School of Law and David Pozen from the Columbia Law School, “In Search of University Democracy” dives into the surpassing strangeness of this governance model, which is rarely found in prominent universities outside the U.S. “Boards,” Hemel and Pozen write, “are unrepresentative of and unaccountable to the campus community.” Board governance “does not reliably produce better educational or operational outcomes,” and “sits in stark tension with universities’ aspirations to be autonomous intellectual communities.” The authors argue for a stakeholder model of governance that would restore the voice of faculties and students in the university decision-making process.
Who sits on these boards? Well, this is the second problem. As university endowments have grown over time—Harvard’s was $4.7 billion in 1990; it’s now $56.9 billion, a twelvefold increase—the makeup of boards has shifted to include fewer scholars and more business executives, fewer artists and more management consultants, fewer PhDs and more MBAs. At private universities, vacancies on the governing boards are typically filled by the other members of the board, meaning that cultural change is extraordinarily hard to enact: Old board members will keep selecting new board members with similar backgrounds and The result of this shift is that the people governing a university often have very little in common with the people who live, work, teach, and study there.
That doesn’t mean they’re hostile to the university, though! Surely the board members are committed to doing what’s best for the school.
Maybe, but even where that’s true, what’s “best” as conceived by the board members is often massively at odds with the preferences of many people at the university. Board members tend to be more politically conservative than students and faculty, and tend to be far more focused on maintaining and growing the endowment. In the same way that SEC schools sometimes resemble professional football teams with boarding schools attached, Ivy League institutions like Cornell are often run as midsized investment firms with vestigial schools tacked on. When they do turn to the business of education, finance- and career-focused board members can be suspicious of the traditional aims of education. Working to understand the human condition is less important than whatever the new buzzy thing is in tech or banking; art, literature, dance, and philosophy are less valuable than STEM, and STEM is only valuable when it produces immediate economically profitable results.
When you understand that this is how universities work, many things that might have struck you as odd quickly start to make sense. Why did so many institutions of higher education surrender to the Trump administration’s extortion tactics last year when their students, faculties, and alumni were screaming for them to fight back? Because their administrations answer to the boards, and the boards didn’t want to take any risks that could disrupt the steady flow of business. Why are universities spending millions on AI and dubious EdTech systems when their own students are booing AI at graduation ceremonies? Because board members love the tech industry and are often invested in its success. Why are universities cutting vital departments and replacing them with bullshit buzzword alternatives, like Syracuse, which recently obliterated its humanities departments, eliminating French, German, Russian, Middle Eastern studies, and while launching “the nation’s first academic center for the creator economy”? You can fill in the rest yourself. (It’s not because humanities graduates are less desirable on the job market.)
This is how you end up with an elite university where the president can drive his car into a group of students and be lauded by the board. The president and the trustees are on the same team. The students are on the other team. The trustees know Kotlikoff will reliably enforce their agenda, including cracking down on protests that might be bad for cashflow. It almost doesn’t matter what he does; if there’s any conceivable defense, they’ll keep him in place. (If not, they’ll replace him with someone else who can talk about loving free speech while moving to crush it in practice.) Kotlikoff, after all, has already proved his worth: It was on his watch that Cornell agreed to pay $60 million to the U.S. government to get Trump to unfreeze its research grants.
Kotlikoff may be no fun to walk with, and he may not be great in the driver’s seat, but from the trustees’ perspective, he’s mastered the most important posture of all: He knows how not to take a stand.
Brian Phillips is the New York Times bestselling author of ‘Impossible Owls’ and the host of the podcasts ‘Truthless’ and ‘22 Goals.’ A former staff writer for Grantland and senior writer for MTV News, he has written for The New Yorker and The New York Times Magazine, among others.
The bugs, broken apps, and nightmare customer-service bots we can’t escape, presented as a blessed and sacred addendum to Pope Leo XIV’s new encyclical on AI
The bugs, broken apps, and nightmare customer-service bots we can’t escape, presented as a blessed and sacred addendum to Pope Leo XIV’s new encyclical on AI
This week, Pope Leo XIV presented his first papal encyclical, Magnifica Humanitas, which addresses the tremendous moral, spiritual, and political challenges facing the world in the age of AI. It is perhaps the single most profound document ever released by a White Sox fan. Some, to be sure, will continue to champion Mr. T’s epochal “Treat Your Mother Right,” and verily theirs is a valid perspective; the pope’s essay, however, is an at least equally astonishing piece of work. Stretching to over 40,000 words, the encyclical, whose title means “magnificent humanity,” is the most comprehensive, systematic, and insightful analysis I know of the way the concentration of capital and power among a few tech companies threatens to degrade human life on earth. I’m not joking when I say that many professional tech journalists should be shamed by reading it. It raises alarms that they should have been raising for years but that most of them—there are exceptions—preferred to neglect in favor of credulous PR and access journalism. You could say that the mystic saints were access journalists of a sort However, please don’t.
I’m not Catholic, and I have grave disagreements with the pope on issues ranging from trans rights to women’s ordination. Nevertheless, Magnifica Humanitas understands the way tech creates and controls its own climate of reality, and it offers a compelling, if currently unattainable, vision of what a just society that included AI would look like. It’s very clear about its central message, which is: Tech companies must put humanity first. I’m intensely grateful that it exists.
I’m also intensely grateful that this exists:
That’s right. His Holiness is a big Paul Konerko fan. I cannot think of a better way to demonstrate you’re a real one than to be this excited about a jersey from the 40th-best player of his era. I also love that the White Sox put Konerko’s name above the pope’s on the jersey. Like, sure, you’re the pope—that’s great and all—but did you have a career WAR of nearly 30 across 18 seasons? (The answer is no. The pope is anti-war.) Everything about this image speaks of goodness flourishing. Magnificent humanity!
Anyway, the pope’s encyclical is an impressive document, and I strongly suggest you read it, or at least read more about it. But it isn’t perfect. I say this with all due respect to the leader of the world’s largest religious organization: He missed some stuff. To truly teach big tech to put humanity first, it is necessary to catalog all the ways that big tech is currently putting humanity last. And because we are living in a time of historically unprecedented exasperation—a time in which many of us go through the day filled with a sort of half-repressed and unacknowledged fury that threatens to burst out every time the app we’re trying to use sends us to a website to log in, but the website won’t allow us to paste the password from our password manager, and clicking “forgot password” sends us back to the app, which immediately crashes—any account of tech’s antihuman tendencies must necessarily include a detailed breakdown of how its products are truly just a colossal goddamn pain in the ass.
Of course, it’s beneath the pope’s dignity to say, “Truly just a colossal goddamn pain in the ass,” unless maybe he’s talking about Drake LaRoche. It’s definitely not beneath mine. And thus, in a spirit of piety and wise counsel, I do herewith offer the following humble list of the 40 most unbelievably fricking irritating problems in tech It’s pretty long, but there are probably some annoyances I forgot. I never claimed to be infallible, UNLIKE SOME PEOPLE.
40 Ways the Tech Industry Could Stop Being Such a Colossal Goddamn Pain in the Ass, Proffered on This Day as a Righteous and Apostolic Addendum to Pope Leo XIV’s Magnifica Humanitas
1. Actually textme the one-time passcode, rather than saying you sent it to me while instead texting it to the molten core of the earth. Maybe even text it to me within 30 minutes? Did you think I was trying to log into my banking app, like, sometime in the next few weeks, as opposed to right now, while I’m sitting here looking at it?
2. Do not make me scan a QR code and go through an 11-step account activation process just to park my car for seven minutes. This entire transaction is going to cost $1.15. Your kiosk made me download an app, and now the app wants to know my birthday. All I want is to run in and grab a latte. Have mercy on me, please.
3. When I click the “remember this device” box, maybe, I don’t know, try to remember the device? The box says “remember this device,” but it seems like it actually means “instantly forget this device with extreme prejudice.” Similarly, “trust this device” seems to be a code for “absolutely do not trust this device, which has been stolen by terrorists.” This is my phone. I unlocked it with my eyeballs. I’ve used it to access your site 4,600 times in the past two weeks. If Paul Konerko had been this forgetful, he’d never have finished fifth in 2010 AL MVP voting (amen).
4. Please, please stop asking me to verify my humanity by clicking on tiny motorcycles. Five thousand years in the future, anthropologists studying our electronic debris will conclude that our civilization believed the definition of a human was “a creature that can properly identify crosswalks.” In these prompts, some of the crosswalks don’t even look like crosswalks. I lost 90 seconds of my life trying to decide whether a highway overpass qualified as a “bridge.” Stop doing this to us.
5. I want to watch two YouTube videos. I watch one of them. I click the back button. I see the other video’s thumbnail for about one one-hundredth of a second before the page scrambles, all the images change, and the video I wanted to watch is lost forever in the maelstrom of time and space. Isn’t letting me watch the video I want to watch literally your business model??Just let me watch it! I implore you!
6. Stop connecting me to customer service chatbots unequipped to handle even a single conceivable customer service issue. Has anyone ever tried to contact customer service because they wanted an imaginary being named “Phineas” to regurgitate the exact text of the FAQ page that didn’t solve the problem in the first place? Why does Phineas have character art if he doesn’t even know your company’s phone number?
7. Stop thinking you’re better than me just because you know the word “stochastic.” Have you ever noticed how there’s always a tech-guy hype word that they use to make themselves sound smart? For a while it was “heuristic”; then it became “stochastic.” I think it's great that you discovered rationalism via a Slate Star Codex post arguing that white men shouldn’t pay taxes, but come on. Anyone can look up a word in the dictionary. Or at least we could, before we got stuck waiting for a passcode to get into the dictionary app.
8. Don’t make me check in online six separate times for every doctor’s appointment when we both know I’m going to have to answer the same questions when I get there. I need to see a specialist; I have an incurable condition called “just punched a marble receptionist desk.”
9. Keep Elon Musk’s lips out of my field of vision. Why are they so weirdly pursed and shriveled? Why are they plump and withered at the same time? Why does he look like a cartoon baby who just ate a lemon?
Brendan SMIALOWSKI / AFP via Getty Images
In Psalms it is written, “By the word of thy lips I have kept me from the path of the destroyer.” Unto Elon Musk I do verily say, “By the weirdness of thy lips I have closed many tabs with a full-body shudder.” (The pope would love this joke.)
10. Stop doing the thing where the banner at the top of the site auto-hides when I scroll a short way down the page, but then reappears when I scroll back up, hiding the very lines of text I am scrolling up to see. You know that thing? Where the sentence you were looking for suddenly disappears beneath a Javascript-animated link to the About page? It sounds so trivial, right? I want to throw a piano through a wall.
11. For the love of God—ad amorem Dei, as the liturgy would say—please figure out shipping status updates. Congratulations! Your package has shipped. Here’s a tracking code. Oh, clicking the tracking code and going to the shipper’s website suggests your package hasn’t shipped? Well, it has, but here’s the thing—it also hasn’t. Welcome to Schrödinger's UPS Vortex, the quantum rift within which your box is on a truck passing through Memphis, in a warehouse in Topeka, or on the outer rim of the galaxy, where it’s being worshipped as a god by a species of semi-intelligent space protozoa. I once got a text from UPS saying they’d picked up my package the day after the package showed up on my porch. (This technically makes me immortal.)
12. Absolutely forbid drive-through menus from rearranging their content while I am looking at them. Obviously, we all love app-like drive-through menus that display only a small fraction of the menu at any given time. That goes without saying. But respectfully—with the greatest respect—is it really peak UX design for the menus to shuffle their content around while I’m trying to order? What part of ordering a value meal is enhanced by making the value-meal section of the menu flee from my gaze?
13. JESUS EFFING CHRIST (forgive me, Father) GET TOUCH SCREENS OUT OF CARS. Did you know that with physical buttons, it’s actually possible to turn the air conditioner up via muscle memory? You don’t have to take your eyes off the road for 20 seconds to navigate a multilayer options tree that cannot be operated unless you’re staring at it! No one under 30 will believe this!
14. The pregame show is on one app. The game is on a different app. When I get to the end of the pregame show on the first app and switch to the second app to watch the game, the second app auto-plays a commercial, meaning I miss the first 45 seconds of the game so that I can learn about medications that treat moderate to severe ulcerative colitis, a condition I do not currently have. I could assemble a mob of Premier League fans outside NBC headquarters in the next 20 minutes over this. CHANGE YOUR WAYS.
15. Speaking of streaming services, could they perhaps go back to being better than cable? Because they used to be, briefly, before they dug deep and figured out every possible way that they could get so much worse. Right now what I’m looking at is like … cable, only changing channels involves a discovery heuristic (sorry) that operates semi-stochastically (God, I’m so sorry; if I keep this up, I’m going to be appointed CEO of Allbirds before I finish this column). That means I’m basically just guessing which random colored square contains the piece of content I want among the ever-shifting content groupings swirling behind the clusters of apps I sometimes subscribe to and sometimes don’t. Of course, I could just remember which media conglomerate owns the Dynzneef service and whether the same conglomerate also owns the holding company that controls the streaming rights to the Sonic the Hedgehog IP. Can you possibly imagine the transcendent, the radiant, the all-consuming passion with which I don’t want to have to do that??? As Moses says to the graven images, GET THEE HENCE.
16. Make weather apps accurately relay the weather. I know we’re currently nerfing America’s meteorological capacity for some galaxy-brained bullshit reason like “so Jeff Bezos can own a third moon of Saturn.” But I’m standing outside. My weather app says it’s raining. It’s not raining. This seems like a problem? Just a thought!
17. Please stop this man from lecturing about the Antichrist.
Getty Images
This is Peter Thiel, cofounder of beloved corporations like PayPal and Palantir. Lately, he has been traveling the globe delivering secret lectures on the Antichrist. This is weird, and also concerning. The Vatican agrees. Please put him back in his holding pen until further notice. Broadly speaking, it feels like a lot of Silicon Valley is going down this route of deranged, quasi-mystical, apocalyptic, grandiose nonsense, probably because Silicon Valley CEOs read too many chosen-one fantasy novels when they were young and now need to playact scenarios in which humanity can be saved only by successfully deploying AI-powered credit card–processing platforms. It’s creepy to the rest of us. Stop.
18. Fix search!!!! Look, nothing against AI. Assuming you hate yourself, the world, and humanity, AI is tremendous. But I just googled “what’s wrong with Google” and got six ads for print-on-demand hats reading “I LOVE ELON MUSK’S LIPS”—I’m writing this in Google Docs, so that checks out—and an 11-step plan for learning how to hit a buzzer-beater in the NBA playoffs. One of the steps was just a list of Acura minivans? Melior est in vita amor Dei quam Dei cognitio, Saint Thomas Aquinas wrote: In this life it is better to love God than to know Him. I do not believe the same applies to the capital of Bhutan. (If I’m wrong, please disregard.)
19. Speaking of Google, fix formatting in Google Docs. This is a minor one, but as I said, I'm drafting this in Google Docs, and … what the hell is up with this numbered list formatting?!
Google! You are making an industry-standard word processor used by professionals (hopefully not the pope). Have some self-respect.
20. Finance tech friends! It sure seems like it’s easier for companies to charge me than to refund me. Could we look into that? I buy a product at a store. The pending charge appears on my credit card app instantly and is finalized within a day or two. I return a product to the same store. Six hundred years pass. My distant heirs receive a notification that the refund is now pending. Another 11,000 years go by. Old civilizations fall; new ones rise. Deep underground, in a cavern beneath the moon of Saturn formerly controlled by the Bezos clan before it was deposed in a violent uprising in Year 1 of the long-defunct Crystal Spider Calendar, my phone bloops within a pile of moldering historic artifacts. Walgreens has credited my Citi card $6.99 for some expired shampoo.
21. Don’t make me scan a QR code to read a menu. For God’s sake, I am at dinner. I know the QR-code menu trend was a result of a good-faith effort during the early pandemic era to eliminate the leading vector of COVID-19 transmission (menus). But I look at my phone all day. Now I want some peace. Can I just have a nice book, maybe with a spiral binding and a few pictures of pasta, to browse through? Maybe with a nice burgundy fake-leather cover and a wine stain on one page? Doesn’t that sound so nice?
22. Maybe ban QR codes in general. As far as I can tell, “QR” stands for “quite [r]annoying.” (I could be wrong about that. I looked it up on Google, but the top two answers it gave me were “Queen Christina of Sweden” and a link to Old Navy jorts.) Every time I see one of these pixelated black-and-white micro-bastards—they look like s’mores in the Tron universe—I assume I’m about to be taken to an unfathomably janky account-creation screen that will lose my information the second I hit submit. It may seem hard to imagine a world without QR codes in it, but look. If Paul Konerko could become just the 18th player in MLB history to hit a grand slam in the World Series, a feat he accomplished when he took Chad Qualls deep with two outs in the bottom of the seventh in Game 2, I’m confident we can figure this out.
23. Stop burying every website under 40 layers of pop-ups. When I’m browsing the internet, I’m usually performing a specific task. I am focused. I have an intention, and anything that delays or disrupts that intention is intensely frustrating to me. Websites, however, seem to think that when I’m browsing the internet, I’m sort of … drifting aimlessly through an indeterminate haze, soaking passively in the general warmth of their brand space. You know what this guy wants right now? A pop-up inviting him to sign up for our newsletter. Maybe another pop-up informing him that our fall sale is currently active. (It isn’t; it ended yesterday.) Maybe a third pop-up informing him that some features have changed since his last visit. And can we interest sir in an EU privacy law–mandated cookie consent pop-up? What if some of these pop-ups were unclosable and covered up buttons he needed to navigate the site? Wouldn’t that be divine?
24. Since you don’t respect my opinion anyway, quit pestering me to fill out a survey after every single consumer experience. I keep wondering who looks at these surveys. Is the CEO sitting in his wood-paneled office, reading each individual response on an old-timey stock ticker? If so, you can keep doing this. If not, I rate this experience zero stars out of infinity.
25. Fix Sonos. That’s all. That’s the tweet. Just make it … not … like it is. Please?
26. The email is one sentence. Your nonconsensual AI bubble-pest keeps asking me whether I want help summarizing it. Can you summarize the sentence “No”?
27. If NASA can send astronauts 250,000 miles into space, surely the richest industry in human history (probably, not looking that up) can make autocorrect features slightly less irritating. I am a ducking grown-ass adult. Let me use whatever ducking words I want without trying to nicen them up, you arrogant, nannying pieces of shut.
29. Stop requiring me to have an X account to read the emergency updates that my government posts on X. I am in a hurricane. My house is in a swimming pool, and the swimming pool is in a tree. Emergency services are, for reasons I am not presently at leisure to explore, posting vital safety updates on X. When I try to read the relevant thread, the app tells me I can’t do it unless I create an account, something I would gladly do if a Kia Sorento were not flying at my face. I shall die peacefully here in my swimming-pool tree, knowing that at least I never had to talk to Grok.
30. I just unsubscribed from your email updates because I receive too many emails from you. You do not need to send me an additional email confirming my cancellation. I’m sure you mean well (I’m sure you do not mean well), but take a walk, buddy.
31. Also, when I click the unsubscribe button, don’t remove me from one made-up subtype of email update while keeping me subscribed to 17 other made-up subtypes. Let’s be real here. Your “marketing” email list is not any different from your “brand updates” email list, which is not any different from your “news and sales” email list. No one ever sat at their laptop thinking, “Wow, I’m sick of this company’s marketing emails, but I’d be crushed if I stopped receiving their brand updates!” No one is forcing you to act like this. Saint Teresa of Avila famously said, “If this is how you treat your friends, no wonder you have so few of them!” She was talking to God, but she could easily have been talking to the Banana Republic communications department.
32. Stop forcing auto-updates at the worst possible moments. So many of your products are premised on the idea that you know what I want at any given moment. The grocery list is supposed to pop up on my phone when I get to the grocery store. The thermostat is supposed to turn off when I’m away on vacation. Neither of these things happen when they’re supposed to, ever, but you clearly believe you have great context-divining powers. Why, then, can you not stop my work computer from flinging itself headlong into full-takeover auto-update mode at the exact instant when I start a major project? It is 2 p.m. on a Tuesday. Is this really the right moment?
33. Make it possible—oh, dear God, please make it possible—to find privacy settings without a nationwide manhunt involving floodlights and basset hounds. Do you think we don’t know what you’re doing? “Go to Settings ->Preferences->Other->Other Options->Stochastic->Non-Evidentiary->Experimental, then click Advanced, then click Desalination, click Both, then Both again, then No three times, then all you have to do is translate the page from Russian to English and voilà! You can turn off genome mapping.” I believe it was Saint Augustine who said that to have faith is to believe in what you do not see; he was referring to the Facebook privacy settings.
34. Reimagine in-car Bluetooth as something that does not make me yearn for the life of a peasant in the 14th century. You know what peasants in the 14th century never had to deal with? Their car automatically playing the song that comes first in alphabetical order on their downloads list, or their car automatically playing the most recently played audio from any app on their phone, or their car taking over their headphones even if their headphones are currently in use somewhere else, or their car requiring an arcane series of menu dives to change the connection from one phone to another. Admittedly, peasants in the 14th century did have to deal with the Black Death. They also never got to watch Paul Konerko’s SportsCenter commercial. It was called the Dark Ages for a reason.
35. To Mark Zuckerberg, specifically: Shut up about the Roman Empire. You are not the Emperor Augustus. You are a cunning dweeb who took amoral advantage of extremely weird and volatile social conditions to amass a degree of power that allowed you to destabilize a carefully constructed democratic republic that had stood for centuries. OK, when I put it that way, you do kind of sound like the Emperor Augustus. It’s not a compliment when I say it!
36. I’m shopping for shirts. A shirt I like comes in eight colors. I look at all eight. Now, when I click the back button, I discover that each color change counted as a secret page reload, so I have to cycle back through all seven additional colors before I can get back to the main list of shirts. How long would it take to fix this? Eight seconds? Did you use your own platform before you launched it? Again, it sounds trivial, but believe me: Emperor Augustus would have had someone’s head for this.
37-39. Please stop seeing every precious and beautiful aspect of life on earth as a commodity to be controlled and exploited for wealth. Now, see, this is a tough one. It’s so tough that I’m giving it three entries. It’s tough because I know you know you fucked up. You’re aware that much of the world has soured on you. You’ve seen a fleet of headlines like “AI Companies Know They Have an Image Problem” and “AI Has a Message Problem.” You're aware that the loathing people feel for AI is making them look again at the other products you’ve inserted into every corner of their lives and realize with fresh disgust the many, many ways in which those products represent broken promises. They don’t work as they’re supposed to. They make life more frustrating, stressful, competitive, and alienating rather than easier and more connected. You’re using them to spy on your customers, whom you view as vessels of monetizable data more than as people, and whom you hold in increasingly palpable contempt. You see that we see this, and you’re surely hard at work on ways to fix the problem.
But this is where things get tricky, because I don’t think you want to fix the problem, not really. I think that, to you, “fixing the problem” means fixing the image that conceals the problem. I think you want to keep doing all the same stuff while selling us a better story so that we’ll let you get away with it. And that doesn’t fix anything at all.
Because the truth is, tech doesn’t have an image problem. It doesn’t have a message problem. It has an intention problem. What’s wrong with the axe murderer who broke into my house is not that he hasn’t successfully persuaded me to buy into his narrative. What’s wrong is that he’s trying to kill me with an axe. Similarly, when you launch a product that’s designed to put millions of people out of work, block access to sources of verifiable truth, replace human creativity with slop, and lower the barriers to every sort of atrocity, the problem isn’t that you haven’t told the public a good story about those things. The problem is that you are trying to do them.
There are things in the world that are more important than money. The fact that you seem not to believe this, that you seem to think any motive beyond ruthless acquisitiveness is fake, dishonest, or childish, is the heart of your problem. Your attitude is not by any means unique to tech, but the scale of capital concentrated in the tech industry makes the attitude—this confusion of an adolescent will to power for mature, undeluded realism—uniquely treacherous. You can’t build products that serve humanity while viewing every human good other than your own aggrandizement as bullshit. Thus, tech’s internal problems can’t be fixed unless the people running the industry change their outlook on a deep level (unlikely) or are somehow outmaneuvered as wiser heads reform the market to deprioritize perpetual growth (maybe Paul Konerko is working on this?).
Which means that fixing the problem, as usual, falls to us. The tech industry, which has been selling us maddeningly broken products for years, has itself become one of those broken products: another shiny app that doesn’t do what it’s supposed to and that will force us to invent work-arounds if we’re going to get on with our lives. (Meaning, in this case: If we’re going to continue to work, read, learn, listen to music, make movies, write, avert wars, and all the rest of what—apart from ID’ing tiny crosswalks—we think of as verifiably human.) I don't know where the work-arounds start; the oligarchs have so much wealth and power, and so few people who could stand up to them are even willing to try. But this is why the pope’s encyclical is so important. Magnifica Humanitas positions a major world power, the Catholic Church, in moral opposition to big tech as it's currently constituted; maybe more importantly, it serves as a focal point for everyone else, articulating an understanding of what’s happening in the world that we can rally around. Or argue with, or correct, or extend; in any case, it’s a landmark to navigate by. I wish I shared Leo's optimism about the likelihood of real change. But we’re better equipped than a month ago, and that's something.
40. In conclusion: Stop forcing me to download a dang app to use my air fryer! I WOULD THROW MY PHONE INTO THE AIR FRYER OVER THIS IF I HAD ANY WAY TO TURN THE AIR FRYER ON AFTER IT WAS IN THERE.
Misereátur nostri omnípotens Deus et, dimíssis peccátis nostris, perdúcat nos ad vitam ætérnam.
Brian Phillips is the New York Times bestselling author of ‘Impossible Owls’ and the host of the podcasts ‘Truthless’ and ‘22 Goals.’ A former staff writer for Grantland and senior writer for MTV News, he has written for The New Yorker and The New York Times Magazine, among others.
Anthropic says its new AI model is too dangerous to be released to the public. But Mythos’s real danger is not what you think.
Anthropic says its new AI model is too dangerous to be released to the public. But Mythos’s real danger is not what you think.
You don’t hire bouncers in the hope that they’ll smash up your bar, and you don’t hire bank guards in the hope that they’ll break into your vault. But in tech, keeping systems safe starts with attacking them, relentlessly and with all the ingenuity you can muster. Serious software vulnerabilities that make it into products used by the public—browsers, operating systems, login portals, apps—are hard to find, almost by definition: If a grave weakness had been discovered during testing, any responsible developer would have patched the code before the product was released. After release, the best way to find weaknesses is to act like a bad guy. You hack the system, probe for soft spots, find mistakes you can exploit. Then you fix them, before the actual bad guys get there.
The key thing to note is that for most of the tech industry’s history, discovery has been the biggest challenge in cybersecurity. Patching bugs may be what actually improves system safety, in the same way that catching fish is what actually gets you dinner. But you have to find the fish before you catch them, and a code base is a vast and highly opaque ocean. (This is why good hackers make such desirable candidates for IT security jobs.) Security firms that run pentests—penetration tests, where security professionals try to break through a piece of software’s defenses—typically earn $20,000 to $120,000 per test, according to the corporate research firm Forrester. What determines the price a firm can charge within that range is how good it’s perceived to be at finding unknown vulnerabilities.
If we can believe the AI industry—admittedly not the most trustworthy source, as we’ll discuss in a minute—all of that may be about to change. Last month, Anthropic announced that it had developed a new version of its Claude model, code-named Claude Mythos, that is capable of finding zero-day vulnerabilities in code, which is the industry’s term for those serious flaws that an application’s makers haven’t spotted. The term “zero-day” dates back to the early days of computing, when hackers would break into developers’ computers to steal unreleased software that had been out for zero days; today, it’s usually used to refer to either the number of days developers have known about a flaw or the number of days they have to fix it.
Zero-day vulnerabilities are the biggest quarry in cybersecurity because if bad actors find them before developers do, they can be exploited indefinitely without anyone being the wiser. If you know that someone stole your bank password, you can change it and minimize the damage; if you don’t know, whoever has your credentials can watch your transactions for as long as they want and transfer all your money out whenever they feel like it. National governments search for zero-day vulnerabilities and stockpile them to use against their enemies. An AI agent that gave the same power to anyone who had access to it could upend the entire paradigm of cybersecurity. Discovery would no longer be the bottleneck because the agent could analyze seas of code in the blink of an eye. All the zero-day vulnerabilities would, in theory, be exposed almost at once, to be fixed or exploited, depending on who was in control.
Anthropic’s announcement stressed two key points about its new AI agent:
Mythos is too dangerous to be released to the public because if it falls into the wrong hands, it could give malicious actors—cybercriminals, terrorists, hostile governments—access to the back doors and weak points in all the world’s software systems simultaneously. Anthropic released a 244-page report detailing the results of its testing with Mythos but withheld access to the software from regular users.
Anthropic was launching a new initiative to minimize the danger of Mythos, called Project Glasswing,named for a staggeringly lovely species of transparent-winged butterfly. Under Project Glasswing, Anthropic would share an early version of Mythos, named Mythos Preview, with around four dozen organizations, mostly big tech companies and major banks. This, Anthropic said, would allow some of the most critical vulnerabilities to be fixed before anyone else could use Mythos to find them.
How big a deal is Mythos? It depends on whom you ask. Some analysts think it will revolutionize the way software is vetted. “Anthropic is now the most important partner for every cybersecurity company,” the industry analysts at Forrester say. Other analysts think it’s all marketing hype. “Half-assed sub-War of the Worlds … horseshit,” the AI critic Ed Zitron wrote of Anthropic’s announcement. Still other analysts—and these are the ones who’ve gotten the most media attention—think it will bring about “bugmaggedon,” potentially destroying the tech landscape as we know it and taking key pillars of modern society with it. “We could be on the brink of total internet collapse,” the BBC says. The White House is reportedly concerned enough about Mythos that it’s considering giving the government a more active role in AI oversight, potentially even requiring tech companies to put new AI models through a federal review process before they can be released. This would represent a dramatic reversal of the Trump administration’s previously hands-off approach to AI regulation.
So how powerful is this thing, really? Is there actually a chance that it will destroy the internet? Just how hopeful and/or terrified should we be?
Let’s try to separate the facts from the speculation. And because we deserve to look at something nice while we contemplate our powerlessness in the face of the latest threat to civilization, let’s have the glasswing butterfly guide us along our path.
Getty Images
Butterfly no. 1: Why are some people so freaked out about an AI agent that helps identify zero-day vulnerabilities? Isn’t this a giant gift to cybersecurity professionals?
People are freaked out because Anthropic, in its Mythos announcement, went out of its way to freak everyone out. The company didn’t just say that Mythos was dangerous in some abstract way. According to Anthropic, Mythos had discovered thousands of zero-day vulnerabilities in just a few weeks of testing. It had found weaknesses in “every major operating system and every web browser.” Some of the flaws it found were decades old; some were in open-source applications, like the video encoder FFmpeg, that are deployed across hundreds of other software products. The announcement conjured an image of an enormously fragile software ecosystem, cobbled together with old, flawed code and ready to collapse if the wrong people found the flaws.
Mythos, in this vision of the tech universe, is a piece of security software so good that it doubles as the ultimate security threat. Used responsibly, it could help developers fix problems with unprecedented speed and efficiency; used irresponsibly, it could imperil the world’s entire digital infrastructure. The fallout “for economies, public safety, and national security,” Anthropic said, “could be severe.”
Large language models—the complex neural networks, designed to work with natural language, that form the basis for AI chatbots like Claud—are rife with problems and often don’t perform their intended tasks reliably; they struggle, for instance, to answer questions accurately But LLMs, and especially Claude, are better at coding than just about anything else. Now, Anthropic says, AI models “have reached a level of coding capability where they can surpass all but the most skilled humans” at discovering and exploiting security flaws in software. You’ve probably heard about “vibe coding,” which is the practice of using AI to write software based on prompts. Anthropic now seems to be acknowledging the possibility of a vibe apocalypse.
Camilo Freedman/picture alliance via Getty Images
Butterfly no. 2: What do we know about Project Glasswing?
Leaving aside the question of why it was necessary to develop a product that imperils economies, public safety, and national security in the first place, Anthropic’s response to the danger it created was to try to make sure that only the good guys could initially use Mythos. Under Project Glasswing, Anthropic granted access to Mythos Preview to around four dozen organizations, including Apple, Google, Microsoft, the Linux Foundation, Amazon Web Services, NVIDIA, and JPMorganChase. These companies are allowed to use Mythos Preview in their “defensive security work,” bolstering the safeguards of the web while keeping Mythos itself secure for as long as possible. The idea is that if Google, Amazon, et al. have time to tighten up their code before Mythos-enabled attackers go after it, some of the worst consequences can be avoided.
Will it work? Who knows. Anthropic is investigating claims that Mythos has alreadybeen accessed by unauthorized users, which isn’t a great sign. And is it excruciatingly ironic for Anthropic to say that only the good guys get to use its superweapon and then turn that superweapon over to a bunch of tech behemoths and investment banks? You can answer that one yourself
Getty Images
Butterfly no. 3: So wait. Anthropic is being really open about the dangers Mythos poses. Isn’t that a clear sign that Mythos is legit? Why would a company exaggerate the negative potential of its products?
Because the AI industry has been driven from the beginning by wildly overwrought claims, many of them pertaining to the destructive potential of its products. Too dangerous to release to the public is a move the industry has pulled before. In fact, it’s a move Anthropic CEO Dario Amodei has pulled before; when he was an executive at OpenAI, Amodei and other OpenAI leaders released a statement declaring that the ChatGPT model GPT-2 was simply too powerful for the general public to be allowed to use it. That was in 2019; the statement, which generated a wave of media attention and excitement around new breakthroughs in AI, didn’t prevent GPT-2 from being widely released a few months later. The world did not end; seven years later, ChatGPT’s current model, GPT-5, still can’t set a timer.
It may seem like a strange tactic for companies to scaremonger about their own products. When Ford rolls out a new pickup truck, the CEO generally doesn’t go around giving keynote addresses about how much more lethal it will make American highways. But the AI industry is selling a narrative—a mythos, if you will—as much as it’s selling a product, and that narrative is one of revolutionary, transformational power. “Our product can make your life a bit easier, although there are still a lot of kinks to iron out” is not a trillion-dollar sales pitch; “we’ve invented something so powerful that it has the potential to destroy humanity” is. The company that can end the world controls the future, and investors will spend big on that upside bet. After all, if the world ends, an investor’s losses won’t matter anyway.
Think about the way the industry talks about itself. AI isn’t just another tech gizmo. It’s bigger than the internet. It’s bigger than the smartphone. It’s going to reshape human society. It’s going to put millions out of work. It’s going to eliminate money. It’s going to surpass human intelligence. It’s going to replace humans altogether. It’s going to kill all humans. It’s going to be profitable beyond your wildest dreams, at least at some point, although definitely not today.
“It’s just part of this pattern of unsubstantiated claims of power,” according to Emily M. Bender, a technology scholar and the coauthor of The AI Con. Bender points out that companies like OpenAI and Anthropic use the narrative about some far-off, notional apocalypse to distract from the social and environmental damage they’re doing in the present.
I think they also use it to distract from the fact that their products thus far have been largely underwhelming. If the integration of AI into Google Search had been rolled out quietly and evaluated on its merits, it would have gone down as one of the most disastrous tech launches of all time. Your only job is to give me accurate information; you did a decent job of it yesterday, and today you’re telling me to put glue on pizza? But when the same rollout comes slathered in hype—when I’ve been conditioned to experience it as part of a narrative about civilizationally transformative technological innovation—I’m less likely to judge it on its merits, because even its shortcomings can be reframed as marks of the disruptive nature of progress. I can’t see what’s in front of me; I can see only the story I’ve been told.
The tendency of AI companies to talk about the dangers of their products may make people hate the industry (and people really hate the industry). But it also keeps people from saying, “This is kind of neat, I guess? But it’s super buggy and not all that useful.” The Mythos announcement can be understood in that light: It might make people leery of Anthropic, but it makes Mythos seem like a huge deal, which is ultimately what Anthropic wants.
Getty Images
Butterfly no. 4: So Mythos is probably just a big PR campaign? Are there any reasons to think there’s more to it?
There are many reasons to think that Anthropic’s claims about Mythos are exaggerated—for one thing, many of the “thousands” of zero-day vulnerabilities it found are minor, can’t really be exploited, or otherwise aren’t as dangerous as they sound—but there are also reasons to think they’re legitimate, or at least legitimate-ish. For instance, the Mozilla Foundation, the nonprofit organization that develops Firefox, announced that it used Mythos Preview to find 271 bugs in its open-source web browser. That seems like a real thing! While most of the 271 bugs seem to have been relatively low priority, at least three seem to have been given a “high” impact rating. (I’m saying “seem to have been” because it’s not entirely clear from the Firefox changelog which of the most recently fixed vulnerabilities were detected by Mythos.)
Mozilla has been investing heavily in AI startups in an effort to tilt the balance of power in the industry away from the established players, forming a “rebel alliance of sorts,” in the words of Mozilla’s president, Mark Surman, who sees the nexus of established AI powers as “this thing that threatens us.” That is to say: Mozilla doesn’t necessarily love Anthropic; if it’s acknowledging that Mythos has been useful in debugging Firefox, there’s no reason to doubt the endorsement.
Camilo Freedman/picture alliance via Getty Images
Butterfly no. 5: So what’s the truth about this thing? Is Mythos terrifying or not?
The truth is that we can’t say definitively because Mythos, at this point, is barely more than a rumor. So much is still unknown. Hardly anyone in a position to evaluate it disinterestedly has used it. It’s conceivable that the Anthropic announcement is 100 percent accurate, that AI really has surpassed all but the most skilled human coders, and that Mythos really does represent both an existential threat to the internet and a revolutionary hope for cybersecurity. It’s also possible that none of this is true, that Anthropic isn’t releasing Mythos because Mythos is a dud, and that Project Glasswing is a bit of clever PR designed to conceal the slowing pace of LLM development, which would crush Anthropic’s dreams of a $900 billion valuation if it were generally known.
That $900 billion is an important number. It puts Anthropic’s announcement in an important context, one that was weirdly missing from most of the media reports surrounding Mythos. Anthropic has a major funding round coming up in a couple of weeks. It’s hoping to use that round to surpass OpenAI’s valuation and become the biggest AI company in the world. It’s hoping that doing so will set it up for a colossal IPO later this year. Anything Anthropic says now has to be interpreted in light of those plans. And with that in mind—combining the little we know about Mythos with the observable patterns of the AI industry and Anthropic’s current market ambitions—I think the likeliest guess is that Mythos is not nearly as terrifying as we’ve been led to believe.
Remember, Mythos is a version of Claude, a full-scale chatbot, and wasn’t designed solely or even primarily for cybersecurity applications. The company’s decision to focus its announcement so heavily on Mythos’s ability to find zero-day vulnerabilities suggests an attempt to find a plausibly revolutionary new feature to dazzle investors with—to answer the question “What can we sell as a new capability that proves our model is advancing by leaps and bounds and disrupting the industry?” And the decision to portray the new model as too dangerous to release into the wild suggests an attempt to answer a follow-up question: “And how can we maximize the attention we get for it?”
That’s not to say that Mythos can’t do some of what’s been claimed; Project Glasswing may have real utility for organizations like Mozilla. But for Amodei, the overriding point is seemingly to convince investors that Anthropic is central to the future of humanity. He’s used the too dangerous for the public technique before, and now, I suspect, Anthropic is replaying the hits to wring every cent out of its hoped-for IPO.
Again, this is just a guess, but I think it’s a pretty safe one. I suspect the AI analyst Gary Marcus, an industry skeptic, has it right: “The model itself is incrementally better than previous recent models, but certainly not an off-the-chart breakthrough. … To a certain degree, I feel that we were played.”
Camilo Freedman/picture alliance via Getty Images
Butterfly no. 6:What would it look like if Mythos destroyed the internet?
No one knows because no one knows where the vulnerabilities Mythos might uncover are, how numerous they are, or how severe they are. If a Joker-level chaos agent suddenly acquired total power over all digital infrastructure and opted to obliterate it, it would mean that no websites would load, the world’s industries and militaries would be plunged into disarray, banking and insurance would collapse (AI really would bring about the end of money!), hospitals would stop functioning, the power grid would likely fail, and the social order would be pushed to the brink of disintegration. Fascinating premise for a TV show; so unlikely to happen as a result of Mythos that imagining it is mostly a way to give Anthropic free ad space in your brain.
What’s much more likely to happen is some degree of limited, targeted damage. Cybercrime, for instance. Bad actors who gain access to a buffet of tasty zero-day vulnerabilities are not terribly likely to want to annihilate the internet. They’re more likely to want to make some illicit cash by theft, fraud, or some combination of the two. There’s also a chance that nations in conflict could use Mythos to attack each other’s online systems—think Putin trying to bring down Ukrainian banking—although, again, that’s already happening to some degree, using currently available tools.
It’s impossible to predict how much of any of this we’ll see. No one can assess the scale of a threat based on vulnerabilities that haven’t yet been discovered, and no one knows who might gain access to Mythos or when. If I were a crypto exchange, I might be sweating a bit; if I lived in a nation at war—and I do, I think, kind of—the situation might give me some pause. But I’ll put it this way: I’ll be surprised if the harm bad actors cause with Mythos is greater than the harm the AI industry is already causing in the world.
I could be wrong! You’ll never know if I admit it or not, however, because if the worst-case scenario happens, Google Docs will stop functioning and The Ringer will no longer exist.
Getty Images
Butterfly no. 7: What do we think of Anthropic as a whole? It’s supposed to be the good AI company, right?
Let me answer that by repeating the phrases “$900 billion valuation” and “trillion-dollar IPO.” I’m not sure it’s possible for “good” to coexist with those numbers. Anthropic cultivates a reputation as the thoughtful, careful, responsible AI company, the one that’s committed to using AI as a tool to assist human flourishing. (The name Anthropic comes from the Greek word for human, as seen, for instance, in misanthropic, someone who dislikes humanity.) I think this is mostly nonsense. Anthropic does strike me as the best of the new breed of tech giants, but this is less because the company itself is so moral and more because some of its peers are so plainly sociopathic. It doesn’t take a saintly corporation to be better than Palantir. Any company that’s not actively trying to create a techno-fascist police state can do it.
Anthropic does some things that look moderately heroic, such as refusing to let the Pentagon use its AI products to kill people without human involvement. This, it has to be said, is a pretty low moral bar to clear, but it’s more than OpenAI could manage, and it landed Anthropic in some real hot water with the government. On the other hand, every time the company does something laudable, more information follows that seems to make it look worse—its partnership with Palantir to develop military applications, for instance. It’s been reported that Claude was used for “target identification” as part of U.S. Central Command’s recent actions in the Middle East.
My view is that Anthropic is chiefly motivated by money, like most large corporations, and has simply incorporated an aesthetic of conspicuous virtue as a branding element to distinguish it from its competitors In an earlier era of the internet, Google did the same with its old slogan “Don’t be evil.” We saw how that worked out.
Joseph Branston/N-Photo Magazine/Future via Getty Images
Butterfly no. 8: Most important question. Are there really butterflies with transparent wings???
Yes! Aren’t these the most stunning little guys? I had no idea they existed until I looked up Project Glasswing’s name. I’m so excited about them. They’re a species of brush-footed butterfly. Their wings let them blend into their rainforest habitats, and although they look delicate, they’re extremely strong. They can carry 40 times their body weight! (That’s probably the weight of a Kleenex, but still.) They can fly up to 8 miles an hour and sometimes cover 12 miles in a single day. What a splendid thing to have in the world.
I really want to see one in person. They live in South and Central America, but they’ve been spotted as far north as Texas, so maybe I’ll get lucky someday. I’m not saying I’m glad Mythos exists because it led me to the glasswing butterfly, but we’ve got to take joy where we can find it these days. Mythos may or may not end the world, but at least it gave us this much.
Brian Phillips is the New York Times bestselling author of ‘Impossible Owls’ and the host of the podcasts ‘Truthless’ and ‘22 Goals.’ A former staff writer for Grantland and senior writer for MTV News, he has written for The New Yorker and The New York Times Magazine, among others.
I don’t want to talk about Kash Patel’s ass cheeks. He’s the director of the FBI; his ass cheeks are no one’s business but God’s and the NSA’s. But I have to do it. I have to talk about them, because look at this man:
United States Department of Defense
Clenched, right? Clenched so hard his spine is about to squirt out of his body like a submerged pool noodle? Look at his huge, terrified eyes. Look at his distressed lips. Look at his hair, which is quietly going to pieces, like a Hemingway hero on leave from the war. As the head of America’s most storied law enforcement agency, Patel seems to live most of his life at a historically unprecedented pitch of Fuck Around; in photos, he often seems to be Finding Out to a spiritually annihilating degree.
This is a Shakespeare character who understood his tragic flaw the instant he got stabbed in the stomach. This is the dude in your first-year medieval history class who said “totally” when asked if he did the reading and was then invited to summarize Chapter 1. This is a man who just heard the words “state your name and date of birth” after spending the past week googling “how to beat a lie detector test.”
Look at his ears. Even Patel’s ears—in tiny, separate ways—appear to be on the verge of a breakdown.
This is, incredibly, one of Patel’s official government portraits. It was taken in 2020, the year he served as both deputy director of national intelligence and chief of staff to the secretary of defense. Those are two jobs in which you want your face to say, “Hi! I am constipated with panic.”
And it’s not just when he’s posing that he looks like this. Patel gives off this vibe in candid photos, too.
Exhibit A Clench level: 8.7 “I feel well and am personally at ease with my choice of lunch burrito.”
Getty Images
Exhibit B Clench level: 7.9 “Of course I know the answer to your question. I know information every day.”
Getty Images
Exhibit C Clench level: 9.4 “No one can tell what I’m feeling. My poker face is perfect. I’m an enigma, a stone wall.”
Getty Images
FBI directors generally try to convey an air of calm authority, discretion, sobriety, and restraint. That Patel so often conveys the opposite of each of these is only one of the ways in which he’s a trailblazer in his role. Call him controversial if you wish, but this is a man who’s redefining his job description every day of the week, whether by (reportedly) not showing up to work, by (reportedly) engaging in “bouts of excessive drinking,” or by (definitely) giving his 27-year-old girlfriend an FBI SWAT team as her personal security detail. To celebrate the glorious—at least for his glutes—career of a true American original, let’s look at five ways that Patel has transformed the role of the federal government’s top cop.
But first, who is this guy?
Kashyap Pramod “Kash” Patel. Forty-six years old. Lawyer. Born and raised on Long Island, into an Indian Ugandan family who had sought asylum in North America after being expelled from Uganda in 1972, during Idi Amin’s rule. Perhaps this background explains why Patel chose to work for noted friend to asylum seekers Donald Trump. As a teen, spent summers caddying at the local country club, where he was inspired to attend law school by the lawyers who golfed there. (What 18-year-old does not want to emulate lawyers playing golf?) University of Richmond ’02; Pace University Law ’05. As a law student, participated in the American Bar Association’s Judicial Intern Opportunity Program, a diversity initiative. Perhaps this background explains why Patel chose to work for noted friend of diversity initiatives Donald Trump.
Worked as a public defender, then as a prosecutor, then as a congressional aide for the House Permanent Select Committee on Intelligence. Career took off after he wrote most of the infamous Nunes memo, named for Republican committee chair Devin Nunes, which argued that the FBI had relied on politically motivated sources when investigating Russian interference in the 2016 U.S. presidential election. Law enforcement should not be politicized, the memo suggested; that’s one of Patel’s, and also Trump’s, most sincerely held beliefs.
Once in Trump’s orbit, Patel rose quickly through the MAGA ranks: aide, senior aide, senior director, podcast guest. (On that front, I see new fields of glory, or at least fields of smallpox, in his future.) He spread all the right conspiracy theories, parroted all of Trump’s positions (even the ones that are constantly changing), and acquired a reputation for a swaggering ferocity that comes across more clearly in sound bites than in photographs. Wrote three children’s books (????). (More on these in a minute.) Confirmed as FBI director in a 51-49 Senate vote. All the Republicans voted for him, and all the Democrats voted against him, which is exactly the split you expect for a nominee who passionately opposes the politicization of law enforcement.
OK, there’s your background. Now let’s talk about how Patel is revolutionizing the FBI directorship.
1. FBI directors traditionally investigate government corruption. Patel, by contrast, travels with personalized bottles of bourbon that he hands out as gifts.
Let’s go back to the late 1970s, to the directorship of William H. Webster, the only person in U.S. history to run both the FBI and the CIA. During Webster’s tenure, the FBI launched an operation called Abscam, a sprawling anti-corruption sting that involved a professional con artist, agents posing as Arab sheikhs, Atlantic City casinos, art forgeries, and a whole fleet of New Jersey politicians. This list, it goes without saying, raised absolutely no red flags whatsoever
Under Abscam, FBI agents posing as Middle Eastern oligarchs with Atlantic City business interests offered bribes to politicians in return for help obtaining building permits, casino licenses, and immigration clearance for the sheikhs’ fictional associates. The sting led to the arrests and convictions of a U.S. senator (shout-out Harrison A. Williams, Democrat of—you’ll be surprised to hear—New Jersey), six U.S. representatives, the mayor of Camden, and a bunch of other politicians. It also inspired the 2013 David O. Russell movie American Hustle, which I remember being pretty good.
Patel, however, will always zig where his predecessors have zagged. Instead of investigating corruption within the government, his FBI disbanded the team that investigates corruption within the government This has given him much more time to concentrate on a larger priority, namely commissioning personalized bottles of bourbon with his name and the FBI shield on them that he can take on his travels and hand out as gifts.
Patel’s fondness for a drink has been extensively chronicled. He has been arrested twice for alcohol-related incidents, including a minor bout of public urination. (Can anyone truly safeguard America without first getting busted for peeing on it?) While those arrests happened years before his current job, last month, The Atlantic’s Sarah Fitzpatrickpublished a deeply reported account of Patel’s excessive drinking during his tenure as FBI director. Fitzpatrick’s article revealed what an uptight person might call “a highly concerning pattern of irresponsible and erratic behavior,” and what Kid Rock and I will instead choose to call “YOLO, my dog; fuckin’ A, holmes.”
According to that Atlantic report, Patel has:
Been seen drinking heavily at the Poodle Room in Las Vegas, where he frequently travels on weekends
Been unreachable by his team for long periods of time, a fascinating move in what’s usually considered a 24/7 job
Caused recurring headaches for members of his security detail, who have had “difficulty waking Patel because he was seemingly intoxicated”
Been so unresponsive behind locked doors that his detail had to request equipment “normally used by SWAT and hostage-rescue teams to quickly gain entry into buildings,” which sounds to me like a battering ram, though it would be funnier if they were calling for a really slick set of lockpicks
Great leaders aren’t afraid to disrupt the status quo. Only the greatest, however, are capable of disrupting the status quo in their sleep.
2. FBI directors traditionally pursue kidnappers. Patel, by contrast, chugs beers with hockey players on government-funded work trips.
J. Edgar Hoover was the longest-tenured director in FBI history. He led the bureau from 1924, before it was even called the FBI, to 1972, for a total of 48 years in charge Hoover was not what you’d call a good, uncomplicated, or benevolent human being—he kept a private stash of nude photos of celebrities, partly for blackmail and partly for the other reason; he denied the existence of the Mafia because he was scared of it; he ruthlessly spied on the leading figures of the Civil Rights Movement, and also Elvis, who idolized —but he oversaw any number of major cases, including some of the most high-profile kidnappings in American history.
In 1932, for instance, the 20-month-old son of the legendary aviator Charles Lindbergh was kidnapped and then murdered in what was then widely regarded as the most shocking crime of the century. The FBI spent two years painstakingly tracking down leads, many of them wild and implausible, before eventually arresting a man, Bruno Richard Hauptmann, in 1934. And yes, some people think that agents arrested the wrong man, but at least they weren’t too busy trying to get their boss to stop hitting snooze at 11 a.m. to give it their best shot. (Hauptmann was found guilty and sent to the electric chair in 1936.)
The FBI still investigates kidnappings, of course. But Patel hasn’t chosen to make “painstakingly tracking down leads” a major component of his personal branding. He prefers to present himself as a distinguished man of leisure. In that vein, he’s been criticized for partying with his much younger girlfriend, the MAGA-forward country singer Alexis Wilkins during the nationwide manhunt for the kidnapped mother of Today coanchor Savannah Guthrie. He’s been criticized for reveling in the company of famous athletes, partnering with Dana White and the UFC to have MMA fighters train future FBI agents in combat, and gazing adoringly at Wayne Gretzky.
John McDonnell/For The Washington Post via Getty Images
What I think the people who level these criticisms don’t understand, however, is that Patel just really, really loves partying and hanging out with famous people. He loves it. We’re talking about a guy whose preferred spelling of his first name is “Ka$h,” and no, I am not making that up. You know those “FBI—Female Body Inspector” shirts they sell at the worst store in the mall? Patel is what happens when a guy who owns one of those becomes the head of the actual FBI. He was put on this earth to chill at the Poodle Room, gaslight Joe Rogan, and sell his own line of merch at basedapparel.com—I’m not making that up either—and if any of those vocations happen to overshadow a federal racketeering investigation, well, a 46-year-old man who puts a dollar sign in his own name doesn’t need a lecture on priorities.
Would you expect a fish not to swim? Would you expect a bird not to fly? Then you cannot expect the director of Trump’s investigative bureau not to fly to Europe on what his girlfriend says is a work trip and then wind up on film chugging beers in the locker room with America’s gold medal–winning men’s hockey team.
3. FBI directors traditionally work against foreign spies in the United States. Patel, by contrast, writes children’s books about a benevolent monarch named “King Donald.”
J. Edgar Hoover was a hardcore anti-communist; during the Cold War, his version of the FBI worked to expose Soviet spies operating in the U.S. In 1950, the bureau launched an investigation into Julius and Ethel Rosenberg, a married American couple whom it suspected of passing American nuclear secrets to the Soviet Union. Both were arrested; both were found guilty. They were executed in 1953. And sure, many people at the time believed they were innocent, and many continue to believe that Ethel was innocent (Julius was pretty clearly not). Maybe the bureau was a little overzealous in the way it conducted the case, and maybe the history of the FBI isn’t quite as pristine as it looks in the movies. The point is, the people demanded results, and Hoover got them, and sometimes they were even right.
But here’s another place where Patel has chosen to blaze his own trail. Rather than following in the footsteps of his predecessors and trying to root out spies or, say, Russian hackers, Patel has instead concentrated on expanding his line of children’s books. That’s right. Patel writes children’s books. They are … I’m not sure what adjective to use here. What’s a word that implies the largest earthquake ever measured by a seismograph, only it’s happening entirely in your brain? They’re that. They’re a cheerfully illustrated psychotic break. They’re trying to send you to the hospital. They’re going to succeed. The longer you look at them, the more your organs start to fail. Don’t blame your kidneys; they’re trying to look out for you. I am not lying when I say that the world-building of these books is derived from the Steele dossier. Help.
Here is the publisher’s description of Volume 1 in the series:
Kash Patel partners with Beacon of Freedom Publishing House, an imprint of BRAVE Books, to bring a fantastical retelling of Hillary’s horrible plot against Trump to the whole family.
Full of fake heralds and keeper Komey’s spying slugs, this is a story of daring and danger. But never fear! Kash the Distinguished Discoverer will win the day.
“Keeper Komey” is based on former FBI director James Comey. His spying slugs are FBI agents. I’m getting ahead of myself. Patel has written three children’s books so far. They are:
The Plot Against the King
The Plot Against the King 2000 Mules
The Plot Against the King 3: The Return of the King
AP Images/Carolyn Kaster
The series uses what I think is fair to call “not the world’s most complex fantasy allegory”—benevolent King Donald, evildoers named Hillary and Sleepy Joe, “Kash the Distinguished Discoverer”—to indoctrinate young children in MAGA conspiracy theories. (Of course MAGA is working to destroy American education; why would children need to know anything that’s not in Patel’s books?) The first book is an allegorical account of the Russiagate investigation. The second is an allegorical retelling of the Stop the Steal conspiracy. I can’t write much more about this because my spleen is shutting down. We are living in a reality in which there is not merely a Kash Patel–authored children’s book called The Plot Against the King. There is an entire Plot Against the King expanded universe.
2000 Mules includes “a special message from Dinesh D’Souza.” Remember me fondly, all ye who read these words. When the wind rustles in the treetops, whisper my name.
4. FBI directors traditionally work to uphold the integrity of American elections. Patel, by contrast, sues his critics for tens of millions of dollars.
Let’s talk about keeper Komey and his spying slugs. James Comey was the FBI director from 2013 to 2017, a period that included Trump’s first presidential run. Under Comey, the FBI investigated multiple leads involving both Trump (who was alleged to be benefiting from Russian interference in the election, probably because he was) and his opponent, Hillary Clinton (who was found using private email for government communications, which was a very serious matter at the time, though not anymore for some reason). Comey’s predecessor at the FBI, Robert Mueller, also famously led a separate investigation into Trump and Russia.
It’s true that both Comey and Mueller bungled the job. Comey managed to make Clinton’s email server seem more urgent than Putin actively undermining American democracy; the Mueller report was a punch line even before its release. But both men seemed motivated by some feeling of civic responsibility and were at least curious about the real facts. (This is probably why Trump is so determined to fabricate a criminal case against Comey now: because investigators with even a small amount of integrity are a danger to his whole project, which depends on destroying any collective notion of the truth.)
Patel isn’t worried about any of that, though. When someone—say, a reporter—investigates him, he just sues the reporter and their publication for massive amounts of money. He is suing TheAtlantic and Sarah Fitzpatrick for $250 million over the article about his drinking. He sued The New York Times for $44 million and Politico for $25 million in 2019, both for reporting intelligence officials’ concerns that he was feeding Trump anti-Ukraine information while serving on the National Security Council. In 2020, Patel sued CNN for $50 million for saying he spread conspiracy theories about Joe Biden, even though he literally wrote children’s books designed to spread them among 5-year-olds. Last year, he sued an ex–assistant director of the FBI for going on Morning Joe and saying he spent more time in nightclubs than at FBI offices. I don’t know how much that lawsuit was for—probably enough to cover a lap dance and a bottle-service flight of Stoli.
Patel never comes close to winning these cases, which are always legally nonsensical; The New Yorker wrote of his Atlantic lawsuit that it seems “to misunderstand how the law (or logic) works.” But winning isn’t always the point, you know? Firing off a big, angry, bombastic lawsuit feels pretty good, and why would you spend one second not feeling as good as you can?
Besides, Trump loves it when his subordinates say stuff like “I’ll see you in court—bring your checkbook” to the media, even if the media might as well lock its checkbook in a lead box and drop it over the Mariana Trench, for all the use Patel will get out of it. (Honestly, this wouldn’t be a huge loss; the media currently has $13.72 in its checking account.)
5. FBI directors traditionally track down bank robbers. Patel, by contrast, enjoys taking expensive government jets on leisure trips, and you would too if you were staying up all night laboring over the draft of The Plot Against the King 4: The Runaway Price of Brent Crude on the Derivatives Market Is Not a Result of King Donald’s War in Iran.
Remember Bonnie and Clyde? From 1932 to 1934, Bonnie Parker and Clyde Barrow’s gang committed a string of armed robberies and murders across the middle of the country. Hoover’s FBI coordinated with law enforcement agencies across multiple states, tracked down the couple, set up an ambush, and just straight up gunned them down in the road, no due process, no Miranda rights no trial, just blam blam blam. And sure! That’s not really how law enforcement is supposed to treat criminal suspects in a country where “innocent until proven guilty” is a core legal principle. The pre-Patel FBI also had problems! Nevertheless, the point stands. Hoover got results. And sometimes the people executed were guilty!
Our boy Kash, though? Sorry, that’s disrespectful. Let me fix it. Our boy Ka$h, though? He’s not really looking to safeguard the financial system. Bonnie and Clyde were shot down at 9:15 in the morning. Loud noises at that hour? No effing thanks. And suspects can be more trouble than they’re worth—for instance, mere hours after the Charlie Kirk assassination, Patel tweeted that a suspect had been captured. Tyler James Robinson was still at large when Patel posted his tweet, and Robinson turned himself in the next day.
Truly, law enforcement is such a hassle. It’s way nicer to ride in a comfortable, taxpayer-funded jet to calming destinations such as your girlfriend’s place in Nashville, a wrestling show in Pennsylvania where your girlfriend is singing the national anthem, Vegas, and a luxury hunting resort in Texas called the Boondoggle Ranch, owned by the family of the Republican donor C.R. “Bubba” Saulsbury Jr. These are all places where Patel has taken the FBI’s plane, often multiple times. “I’m entitled to a personal life,” Patel said angrily when criticized last year for his travel habits. That’s right, brother. We’re all entitled to spend time with the most important people in our lives, even—no, especially—if some of them are potato-shaped Texas oil scions named Bubba.
Patel, as FBI director, is not legally permitted to take commercial flights; he can’t visit the Poodle Room, or a single luxury hunting resort, unless he takes the FBI jet. However, he’s supposed to reimburse the government for personal trips. His willingness to do so—well, let’s put this in Plot Against the King terms, shall we? Distinguished Discoverer Kash is supposed to put gold pieces in the castle treasure chest when he rides the king’s dragon to visit his ladylove. But Distinguished Discoverer Kash does not like spending his gold on dragon flights when he has so many personalized bottles of mead to commission from the palace brewer. So far, Distinguished Discoverer Kash seems to be keeping his gold to himself. Maybe he’ll be more willing to reimburse the castle treasury when his valiant lawsuit against the wicked town criers from Ye Atlantic ends in triumph!
These are just some of the ways in which Patel has reimagined the role of FBI director for a new American century. If there’s a single lesson to be learned from the course he’s blazing across the firmament of government, it’s this: Being FBI director rocks, but doing things that are no fun sucks, and that’s why the FBI director should only do things that are fun, and if you’re in Congress, it’s also why you should pass a law mandating the death penalty for any jerk who tries to wake the FBI director before 1 p.m. Why? Because of national security, asshole. And also, please pass a law that the FBI director should have way more expensive wine on his plane, because that would be dope as hell, also due to national security. Also, the surviving Beastie Boys should be legally required to play at the FBI director’s birthday bash. As the leader of America’s greatest law enforcement agency, it is his duty and his privilege to fight for your right to party.
Frankly, if the entire job of FBI director cannot be done from a Jet Ski, why did we fight the American Revolution in the first place? Many people are asking this!
In conclusion, I can see absolutely no reason why someone who lives his life in the manner described above would ever look taut-butted to this spectacular an extent.
Brian Phillips is the New York Times bestselling author of ‘Impossible Owls’ and the host of the podcasts ‘Truthless’ and ‘22 Goals.’ A former staff writer for Grantland and senior writer for MTV News, he has written for The New Yorker and The New York Times Magazine, among others.
Even though all decent engineers have their preferences, none would dismiss one technology entirely in favor of another, and the sheer profusion of options available is a testament to that. Each new innovation brings something to the table, and no technology dominates all others in every aspect. After all, GraphQL didn’t kill REST, Cassandra and MongoDB haven’t replaced Postgres, some still prefer Emacs over vi (that one’s debatable, but let’s stay focused 😈), and we still use very similar languages like Python and Ruby that are, most of the time, interchangeable.
Somehow, AI broke that unwritten rule. Now a technology can be crowned king on Monday and publicly executed by Friday.
MCP has a very interesting story. After a few months of intense fame, with companies rushing to slap MCP onto every roadmap, many thought it was time to chop its head off the moment the next trend appeared (after all, beheading royalty is some sort of a French tradition).
As it turns out, MCP isn’t quite ready for the guillotine. The protocol is still strong with plenty of ammunition left and a lot to offer the ecosystem. And in fact, most of the criticism directed at MCP comes from treating it as something it was never meant to be.
To understand why, we first need to go back to what MCP was designed to do in the first place.
MCP stands for Model Context Protocol. It’s basically a specification initiated by Anthropic in November 2024 to provide a standardized and secure way for LLMs to interact with applications, and external services overall.
At the time, this was revolutionary. LLMs were isolated, mildly intelligent tools, able to spit out text but unable to interact with the outside world, and MCP was the most elegant way to make them more capable.
It wasn’t perfect. Like every new technology, it took time to mature. After months of iteration, community contributions, and convincing developers that the approach was worth adopting, the real inflection point came when Cursor embraced it. That gave MCP the visibility it needed to become a de facto standard, and adoption quickly spread across the industry. In that sense, MCP was unusually fortunate. By comparison, it took decades for JavaScript to achieve (almost) consistent support across web browsers.
From that moment on, MCP became the superstar. And with stardom came excess. As with any popular technology, people started reaching for it everywhere. But you don’t need MCP for everything, just as you don’t need Kubernetes to run a personal blog or a blockchain to store your shopping list.
Even worse, as an early protocol in a still-fragile ecosystem that was actively figuring itself out, MCP attracted criticism for things that were either unfinished or never intended use cases in the first place. More often than not, it was the latter.
Interestingly enough, the real coup de grâce came from MCP’s own creator: Anthropic. They introduced something as simple as a Markdown file, cleverly branded as a Skill. In practice, it’s just a set of instructions written in plain English that can describe anything from trivial coding style preferences to something as complex as how to use an API or interact with an external service.
That’s pretty awesome: in theory, anyone can populate their repository with a bunch of MD files to fit their needs without any technical expertise, usually written by the agents themselves (”you’re absolutely right, this should never happen again, let me add this to CLAUDE.md“), which is just a recipe for lazy implementation, messy organization, a lack of prioritization at best, and disaster at worst.
I’m not saying, by any means, that Skills are inherently bad. They’re extremely useful. But like any technology or philosophy, they require discipline and have a well-defined scope where they excel:
Listing a sequence of steps or an order of operations
Defining a tone, style, or set of rules
Suggesting templates for outputs
Enforcing good practices
And so on
That said, Skills are neither omnipotent nor perfect. They rely on LLMs and their probabilistic behavior rather than deterministic, hard-coded logic. As a result, rules will occasionally be ignored, misunderstood, or misapplied, leading to anything from minor mistakes to catastrophic failures.
Still, everyone should be using Skills to make their work more efficient and their prompts less verbose. Instructions such as “please write and run tests on a regular basis”, “stop writing useless fallbacks and remove legacy code whenever possible”, “under no circumstances should you delete the production database” are great examples of the kind of guidance that belongs in a Skill.
On the other hand, MCP is a standardized protocol, not a freestyle playground and not merely an interface. You can’t simply improvise it. It requires a certain level of engineering discipline, but that comes with significant benefits.
If you need secure authentication, governance, transaction handling, or workflows that require deterministic behavior, MCP is the right tool for the job, even if that comes at a token cost (yes, MCPs are still painfully token-hungry). Would you trust a bank to run on a collection of Markdown files?
A Skill might work most of the time, but MCP provides actual safeguards. And when things go south, as they inevitably will because MCP still relies on AI under the hood, you can lean on the things developers have spent decades building: observability, governance, auditing, retries, fallbacks, and operational controls. That’s far preferable to reading an LLM’s heartfelt explanation for why it accidentally deleted your website.
Like any well-designed architecture, MCP also acts as a single source of truth. It can be centrally hosted, versioned, and maintained instead of being scattered across repositories as Markdown files, hidden in personal ~/dotfiles directories, or duplicated with slight variations by every developer on the team. There is, for example, no universally accepted way to distribute and update Skills (tho, that may not stay true for long).
You may argue that this introduces complexity, and you’d be right. But complexity is often the price of reliability. When something breaks, you know where to look, how to reproduce the issue, what to improve, and how to fix it for every user rather than patching individual workarounds.
From Daily Dose of Data Science
Discovery is another major advantage. Markdown files are inherently fragmented and difficult to navigate at scale. MCPs can expose structured capabilities, explicit documentation, and well-defined processes, resulting in a far more predictable and discoverable experience for both developers and agents.
There’s another reason MCP isn’t going anywhere. It helps bridge the gap between the web as we know it (in the web browser) and modern AI assistants. As MCP and its surrounding ecosystem mature, major AI applications such as ChatGPT, Claude, and Gemini are increasingly adopting rich interactive components (following MCP UI guidelines) instead of relying solely on text and occasionally images. Forms, tables, selectors, charts, and other UI elements can now be surfaced directly within the conversational experience.
It’s still early, so most users haven’t fully experienced this shift yet. But this is the next logical step in the evolution of AI assistants.
For many use cases, graphical interfaces remain unmatched in terms of speed, clarity, and usability. Ordering a pizza, booking a flight, comparing hotel options, reviewing a table of results, or filling out a form are all tasks where a GUI is simply more efficient than a back-and-forth conversation.
That said, having a standard, especially one this young, doesn’t mean the path is straightforward.
When you submit an application for review, you’re not merely submitting code as you would when deploying a website. AI assistant providers such as ChatGPT evaluate the entire experience, and reviewers tend to be remarkably strict. They care about the quality of the interaction as much as the underlying implementation.
A clever app with sloppy test cases, vague tool descriptions, misleading UX, dark patterns, or a privacy policy that doesn’t accurately reflect what the tools actually do will likely be rejected. Much like the iOS App Store, these ecosystems care deeply about trust, safety, consistency, and user experience.
When people compare MCPs and Skills, they often frame the discussion as an MCP call versus having a Skill invoke a CLI command directly. This means the real debate is not MCP vs Skills but more MCP vs CLI, since plenty of Skills call MCP servers under the hood anyway. The real question is whether a given task wants a structured protocol call or a quick CLI invocation.
And to be fair, the command line has some obvious advantages. It’s familiar to virtually every developer and has proven itself over decades of use.
It’s also highly token-efficient, which remains one of the most common criticisms of MCP. In today’s environment, where providers such as Anthropic are paying close attention to inference costs, that’s a legitimate concern. At least for now: techniques like “code mode” and “tool search” let the agent load only the servers and tools it actually needs, avoiding bloating the context window. But overall, you could claim the CLI usage is more straightforward, with lower overhead and simpler execution.
So let’s put an end to the pointless debate about which technology is best. Skills can be extremely powerful, easy to iterate on, easy to debug, and a great place to encode local preferences. But they can only provide a fraction of what the MCP can offer.
MCPs address an entirely different class of challenges: standardized integrations, governance, authentication, discoverability, observability, rich user interfaces embedded in AI applications, and shared infrastructure.
Skills and MCPs are not competing technologies. They’re complementary tools, each optimized for a different set of tradeoffs.
You could do it the hard way. MCP is, after all, a well-documented standard. But building and operating a production-grade MCP infrastructure leaves very little room for improvisation if you want to deliver on its promises.
The first one is purely infrastructure management. You could reinvent the wheel, of course (here’s my take), and can spend days implementing OAuth flows, token refresh mechanisms, access control, secret management, configuration management, observability, live debugging, secure log storage, and defending against the endless stream of supply chain attacks that now seem to arrive daily.
The alternative is to rely on platforms that handle this complexity and maintenance for you.
For the same reason you wouldn’t build your own web framework just to serve a website, platforms such as Bump.sh (disclosure, I am an investor) take care of the heavy lifting. Authentication, governance, infrastructure concerns, operational tooling, and protocol evolution become someone else’s problem. More importantly, they continue to be someone else’s problem as the ecosystem evolves, because the specifications will change. They always do.
The second challenge for building an efficient MCP server is design, or more specifically AX (aka Agent Experience).
Sebastien Charrier, founder of Bump.sh, has spent part of his career operating systems that handled billions of API calls at Trainline, Europe’s leading rail travel platform. He has seen all the API tools taking the easy path: translating APIs to MCPs and claiming to be AI-ready, but he never thought that was the right way to do it.
Reducing MCP to a thin API wrapper is one of the biggest mistakes and MCP should be thought - as any user interface - as a comprehensive system for delivering a service. Most likely a series of scenarios that can go from A to B deterministically while still leveraging the abilities of LLMs (generate an invoice, deploy a version, analyze a ticket, you name it), with all the methods, observability, and error messages needed to understand what went wrong.
The goal is not to expose an API. The goal is to deliver a service.
The same rules apply when you want to embed your service within ChatGPT. Building a ChatGPT app is not rocket science at first glance. After all, we’re engineers. But the real difficulty lies in understanding why you keep getting rejected by one AI assistant provider or another, even though all the technical requirements are met (you definitely should read this).
More importantly, even though I believe every service should be present on these platforms, provide the best possible embedded UX, and start learning now before it’s too late (there’s a good chance they will become the future of the web, or at least capture a significant share of the market), that doesn’t mean they should spend their time crafting the engineering side of it.
Just like with managed MCP platforms, you should leave this work to specialists and focus on what matters most instead of struggling with the early quirks and rapid evolution of MCP, and MCP UI requirements.
Alpic is probably the best option on the market. That’s not a “trust me bro“ claim. I'm an investor, so weigh that, but it's also considered as the first option by OpenAI itself.
There are two ways to use Alpic: you can let them handle the heavy lifting for you as a fully managed platform, or, if you’re more of a control freak and want to learn along the way, you can build on top of their open source library, Skybridge (1.6k GitHub ⭐ and counting), and benefit from a polished foundation while retaining full control.
So where does that leave us?
As Sohrab Hosseini, CEO of Orq.ai puts it, “MCP is about access to external systems, tools, and data, while Skills are reusable behaviors, workflows, and prompts.” For developers, combining Orq’s MCP capabilities with Skills works remarkably well.
And the line is already blurring in the right direction, Pierre-Louis Theron, CEO of Alpic, told me. An upcoming MCP release will likely include serving Skills over MCP, giving Skills a trustable, centrally-sourced distribution channel and letting agents pull them in alongside other services, or even chain them together. The two aren’t converging by accident: they were always meant to fit together.
AI evolves at a pace that often leads people to assume that every new technology is destined to replace the previous one. In reality, most innovations add a new layer of abstraction, control, or capability rather than making existing tools obsolete.
The industry also has a tendency toward extreme positions and bold claims, which is part of what makes it so fascinating, entertaining, but also occasionally a little alienating.
The same applies to MCP. Please do not throw the baby out with the bathwater.
The next time you’re unhappy with a company’s MCP, don’t blame the protocol. Blame the fucking implementation.
Letâs be real, there are endless online services and software applications that one can choose from to track and log the books youâve read, are in progress of reading or are going to read. Some are a Software as a Service (SaaS) with fees, some are free and some even hold your data hostage without any means to export your data. No matter if it is a SaaS or an offline application they are often made more complicated than necessary and can end in diaster when the time comes for end of life (discontinued). Iâve used many solutions over the years, and Iâm frankly tired of being treated like a product, my data being held hostage and having my privacy violated. I always prefer to use Free and Open Source Software (FOSS) that respects me as a user and having the freedom to choose to move on with my data. This is why many years ago I decided to come up with my own book log to track my reading journey using a solution that will work until the end of time while staying focused on the activity of reading. Itâs one that is simple, adaptable, offline and portable no matter the device or operating system used.
Reading Journey
It can be beneficial to track ones own reading journey be that books, audiobooks, magazines, comics, etc., but it can get out of hand quite easily. Iâm not interested in the statistics beyond how many Iâve read in a year or month. Keeping it simple allows to track, log and manage the activity quickly and easily without getting caught up in the every little metric or data point. Letâs be reminded that tracking the reading journey is meant to be a simple task and not a complicated one. The primary focus should be reading for enjoyment and learning. The book log itself is a supplement to reading and provides the benefits of recall, reflection, personal growth to track progression and evolving interests while being able to share ones gained insight.
Reading Data
I thought about it for some time and I came to the conclusion that there is only nine data entry points (shown below) to track and log reading activity. Of those nine there is actually only three that should be used at a minimum (Date, Title, Author). Thus far Iâve not found a need to do more than this. This keeps it simple and clean without the unnecessary data.
Date Started/Completed
Title
Hyperlink
Author Name
ISBN
Tag(s)
Star Rating
Notes
Status
Book Log Format
The book log file is written in lightweight markup language called Markdown using a plain-text editor. Each entry is organized into three subheading sections âGoing to Readâ, âReadingâ and âCompletedâ that represents the status of the book. These sections are put into this order for ease of reading progression as the book status changes it moves from âGoing to Readâ to âReadingâ and then finally to âCompletedâ. The first line of the file represents the title of the Markdown document.
Here is an example of what this looks like without book log entries.
# Book Log## Going to Read## Reading## Completed
Each book log entry is a list item and always starts on a new line followed by a dash and a space. The majority of the data is entered into one continuous line. The notes proceed after starting with a blank line then indented by four spaces. After the notes create another blank line.
Here is an example of the log layout and position of each data point.
- DATE TITLE HYPERLINK AUTHOR-NAME ISBN TAGS STAR-RATING
NOTES
When going to save the book log make sure to keep the filename simple as well (book-log.md). I prefer to have all my log entries saved into one file, but for those that read a lot one may want to have multiple book log files such as one per year (book-log-2026.md).
Here is a small example of what the book log would look like with a some entries.
# Book Log## Going to Read
-[Enshittification](https://shop.craphound.com/) by Cory Doctorow
-[SSH Mastery](https://www.tiltedwindmillpress.com/product/ssh-mastery-2nd-edition/) by Micheal W. Lucas #tech
-[Space Rouge: How the Hackers Known as L0pht Changed the World](https://www.spacerogue.net/wordpress/?p=869) by Cris Thomas ISBN: 9798987032428
## Reading
- 2026-05-01 [Ghost Ship (Star Trek: The Next Generation #1)](https://openlibrary.org/works/OL16057007W/Star_Trek_The_Next_Generation_-_Ghost_Ship) by Diane Carey ISBN: 0671746081 #scifi
## Completed
- 2026-04-30 [Caretaker (Star Trek: Voyager, #1)](https://openlibrary.org/works/OL8199368W/Star_Trek_Voyager_-_Caretaker?edition=key%3A/books/OL24202757M) by L.A. Graf ISBN: 067151914X #scifi
- 2024-04-01 [Unredacted Magazine Issue #6](https://inteltechniques.com/magazine.html) by Michael Bazzell #osint #security
This is the notes area for thoughts, quotes and comments.
- 2024-10-01 [Unredacted Magazine Issue #7](https://inteltechniques.com/magazine.html) by Michael Bazzell #osint #security
- 2023-02-03 [Space Team #9: The King of Space Must Die](https://barryjhutchison.com/space-team-9/) by Barry J. Hutchison ISBN: 1912767023 #scifi
Data Definitions and Formats
Below is a list of data definitions and applicable entry formats.
Date
The date represents the period of when a book is started or completed depending on the section (status) the entry is placed into.
Format as YYYY-MM-DD, 4-digit year, 2-digit month and 2-digit day (e.g. 2026-05-14).
Title
The title of the book, audiobook, magazine, comic, etc.
If a hyperlink is present than the title is enclosed within square brackets.
Hyperlink
An external or internal reference hyperlink (e.g. website) associated to the entry.
Format as â[TITLE](LINK)â without double quotes by replacing TITLE with the title of the entry and then placing the LINK within the parentheses.
Author Name
The author name of the entry. If multiple separate by a comma.
Format as âby AUTHOR-NAMEâ without double quotes and replacing âAUTHOR-NAMEâ with the applicable entry value.
ISBN
The International Standard Book Number (ISBN) is a unique numeric identifier.
Format as âISBN: XXXXXXXXXXXXXâ without double quotes. The âXXXXXXXXXXXXXâ is replaced by a 9-digit to 13-digit number.
Tag(s)
A way to organize or mark an entry.
Format a tag starting with the pound or hash symbol followed by the desired tag name (e.g. #comic, #audio).
Star Rating
A rating scale using a star symbol consisting of 1 to 5 stars.
Format as a 1-digit number (1 to 5) followed by a dash and then the word âstarâ without double quotes (e.g. 2-star).
This format was chosen to avoid special meaning of the star character in Markdown (list item, italics, bold).
Notes
A place to write notes, comments, quotes, etc. about the entry.
Must start on its own line indented by four spaces and have a blank line above and below the note.
Status
The state of the entry represented by Markdown subheading sections, âGoing to Readâ, âReadingâ, and âCompletedâ.
Plain Text Editors
The entire book log is entered using a simple plain-text editor. There are endless plain-text editors available no matter the operating system. Therefore, as a starting point Iâve compiled a small list of Free and Open Source Software (FOSS) applications to choose from.
The beauty of all this is that each person has the freedom to choose what is important to them without restrictions. There is monthly fee or no need for an Internet connection. With the data being so portable it can easily be synced/transferred to all devices. In regard to data, I tend to not really use the notes or star rating for a few reasons. Having a note area sounds helpful, but Iâve found it to be only useful if kept brief. Otherwise, Iâve created separate Markdown files for my notes. As for star rating, it is too ambiguous. It only holds value when there is a set system of criteria that determines a rating and even then that is very subjective. On a mass scale a star rating can be somewhat helpful for the average reception, but not definitive. As an individual the Star Rating just has no value to me. Iâve left the notes and star rating to show it is possible if one wish for it. Overall Iâve found this method to be very useful and reliable. I hope you too will enjoy this method of building your own book log.
Support Adamsdesk
Direct support from our audience allows for us to achieve our goal of sustainability. Cast Your Vote of Support.
The Hashemite royal dynasty of Jordan can trace back its ancestry to Hashim ibn ‘Abd Manaf in the sixth century, Prophet Muhammad’s (PBUH) great-grandfather. From the 10th century to 1924 when the House of Saud gained power over Saudi Arabia, the Hashemites ruled Mecca with one from the tribe being selected as the Sharif (religious leader) and Emir of Mecca. When the Ottoman Empire was at its zenith, the Sultan started making the selection of the Emir from amongst the Hashemite tribe. thus, Sharif Hussein ibn Ali was appointed as Sharif and Emir of Mecca by Sultan Abdul Hamid II in 1908 just before World War I. With the waning of the Ottoman Empire’s power and influence, the Emir saw a chance to secure his family’s position as hereditary Emirs; hence, he led the Arab Revolt against the Ottoman Empire, urged on by the British. As a reward, his two sons were made Kings in 1921 by the British. Abdullah was made King of Jordan, while Faisal, who was earlier briefly King of Syria, was compensated with the throne of Iraq. His grandson King Faisal II was subsequently overthrown and murdered in a coup in 1958 when the Baathists took over Iraq, but the Jordanian royal family proved to be more progressive and resilient and have held on to their throne
It is to this family that Prince Hassan bin Talal was born on 20 March 1947 in Amman, the younger son of King Talal and Queen Zein al-Sharaf. His elder brother Hussein was destined for the throne, but Prince Hassan was for 33 years his chosen Crown Prince after the constitution was especially amended for this in 1965. During King Hussein’s absences from the country, Hassan would fill his shoes as Regent. But in a surprising turn of events, the King replaced him with his eldest son just days before he died in January 1999. There was much speculation in the media about this. One theory was that his Pakistani wife Princess Sarvath, considering the royal palace hers a bit prematurely while King Hussein was in the U.S. fighting for his life in a battle against cancer, ordered redecoration of the palace apartments to her liking. The King heard of her maneuverings and scrambling to establish control and finding her haste distasteful, chose to pass on the crown to his son instead. The Princess famously also didn’t get along with American born Queen Noor, King Hussein’s fourth wife who of course wanted her young son Prince Hamzah to inherit the throne. Not capitulating to pressure from external elements, the King wisely chose his eldest son (from his second wife) to replace him. Moderate King Abdullah II and his beautiful, charming and intelligent Palestinian origin wife Queen Rania have proven to be exceptionally popular monarchs. Approximately half of Jordanian citizens have Palestinian roots.
Let’s meet the Prince and Princess, who in this way, were sidestepped by history.
After early schooling in Amman, Prince Hassan attended English public schools, Summer Fields and Harrow. He graduated from Christ Church College at Oxford University with a BA and an MA. He speaks Arabic, English, French, German, Turkish, Spanish and even Hebrew. Known as the thoughtful ‘Philosopher Prince’, he has been awarded an impressive 25 honorary degrees from universities all over the world, including USA, UK, Brazil, Sweden, Hungary, Russia, Indonesia, Germany, Turkey and Pakistan. Additionally, he has worked for world and Middle East peace, which he refers to as “Muddle East†in an interview. Prince Hassan has served as the President Emeritus of the World Conference of Religions for Peace and has defended pluralism, human rights and promotes tolerance and understanding through dialogue between Muslims, Christians and Jews.
At the wedding of Prince Guillaume of Luxembourg & Stephanie de Lannoy
King Hussein replaced Crown Prince Hassan with his eldest son Abdullah just days before he died in January 1999. There was much speculation in the media about this. One theory was that his Pakistani wife Princess Sarvath, considering the royal palace hers a bit prematurely while King Hussein was in the U.S. fighting for his life in a battle against cancer, ordered redecoration of the palace apartments to her liking. King Hussein heard of her maneuverings and scrambling to establish control and finding her haste distasteful, chose to pass on the crown to his eldest son instead
One interviewer writes, “The Prince’s efforts to promote understanding between the Islamic and Western Worlds are crucial at a time when we seem to be drifting apart, with perceived differences appearing to overwhelm the many things we have in common, both culturally and religiously.â€
In recognition of his efforts, he was awarded the 2008 Abraham Geiger Award and the Four Freedoms Award for Freedom of Worship in 2014. He has received 33 awards and prizes in total, including Knight Grand Crosses, Medals, Medallions, and Grand Decoration of Honour with Sash (Austria). He has also served on 15 committees, mostly educational boards or related to academics and is the author of seven books and numerous articles in different languages. On 10 June 2013, he was also appointed as the Chairman of the Advisory Board on Water and sanitation (UNSGAB) by the United Nations Secretary-General Ban Ki-Moon.
A youthful Prince HassanYoung Sarvath at her engagement —Courtesy Getty ImagesAt their wedding celebration in AmmanKarachi wedding —courtesy Historical Images
Princess Sarvath (nee Ikramullah) was born in pre-Partition Calcutta just three months after Hassan. Her Bhopali father Mohammed Ikramullah, was a senior Civil Servant and a member of Muslim League’s Partition Committee. After Pakistan gained independence, he became the country’s first Secretary of State for Foreign Affairs and later Ambassador to Canada, France, Portugal and the UK. His last post was as Chairman of the Commonwealth Economic Committee. Sarvath’s mother, Begum Shaista Suhrawardy Ikramullah, was a Bengali writer, one of Pakistan’s first two female MNAs, Ambassador to Morocco and a delegate to the UN. Her uncles also held high offices in the Subcontinental governments; her paternal uncle Mohammad Hidayatullah was Vice-President of India and her maternal uncle Huseyn ShaheedSuhrawardy was the Prime Minister of Bengal during the British Raj and later the fifth Prime Minister of Pakistan. Her mother’s paternal family traces their lineage back to the 14th-century Persian Sufi philosopher Shaikh Shabuddin Suhrawardy. Sarvath doesn’t belong to a royal, but a respected and educated family. Princess Sarvath has three siblings, including the late Bangladeshi barrister Salma Sobhan and the British-Canadian filmmaker Naz Ikramullah.
At the Lahore Polo Ground for an exhibition match
Though they are said to have met as eleven year olds in London in 1958, Hassan and Sarvath fell in love while studying at Oxford University and got married in Karachi on 28th August 1968. She was not a traditional choice for him. She was neither Jordanian, royal, nor beautiful, but they must have forged a strong connection. The Princess appears to be tenacious and has held on to her position as wife. King Hussein married four times, but Prince Hassan has had only one wife. They live in a lovely historic house in Amman and have four children together. Princess Rahma was born in 1969, Princess Sumaya in 1971, Princess Badiya followed in 1974 and the youngest a son Prince Rashid was born in 1979.
Princess Sarvath has served on many charitable organizations in Jordan, but she has also led a glamorous life accompanying Prince Hassan to royal events around the world, such as the wedding of Crown Princess Victoria of Sweden in 2010 and the inauguration of King Willem-Alexander of the Netherlands in 2013. In a 2013 appearance at Royal Ascot, she rode in pride of place with Queen Elizabeth II in her royal carriage. In fact at Prince Rashid’s wedding, it was observed that there was a greater number of European Royalty present than any other group. At most of these international events, Princess Sarvath chooses to wear silk saris in keeping with her Bengali heritage.
At the 2013 inauguration of King Willem-Alexander of NetherlandsAt a gala dinner on the eve of the abdication of Queen Beatrix of Netherlands and the inauguration of her successor King Willem-Alexander in Amsterdam in 2013Photo courtesy —Getty ImagesWith King Hussein & Queen Noor, with whom Princess Sarvath famously didn’t get along
Hassan and Sarvath fell in love while studying at Oxford University and got married in Karachi on 28th August 1968. She was not a traditional choice for him. She was neither Jordanian, royal, nor beautiful, but they must have forged a strong connection. The Princess appears to be tenacious and has held on to her position as wife. King Hussein married four times, but Prince Hassan has had only one wife
Princess Sarvath is sporty and enjoys skiing holidays, is the honorary President of the Jordanian Badminton Federation and was Jordan’s first female black belt in Taekwondo. She has kept up her connection to Pakistan with periodic visits, ordering outfits from fashion designers here, inviting Rizwan Beyg and others to hold fashion shows in Amman and commissioning interior designer Mian Ahad to do up her palace in Amman. She was also involved with charity fundraising for the Kashmir earthquake along with her son Prince Rashid who, as the President of the Hashemite Charity Organization, made visits here personally to oversee reconstruction of dwellings and rehabilitation of affectees. Princess Sarwat also contacted her friends, the royal families of Belgium, Denmark, England, Luxembourg, Spain, Sweden and Norway and Baden Aid (HRH The Margave of Baden in Germany) to raise funds after the devastating quake.
Hassan and Sarvath’s daughters grew up to be strong and accomplished modern day princesses. Their eldest daughter Princess Rahma received BA and MA degrees from Cambridge University after attending Sherborne School for Girls in Dorset, like her sisters who followed her there. In 2007, she married Alaa Batayneh, former Senator Arif El Batayneh’s son. Alaa is the country’s current Minister of Energy and Mineral Resources. The couple has two children together, Aysha who was born in 2002 and Arif, born in 2006.
Second daughter Sumaya graduated from the Courtauld Institute of Art at the University of London and married Nasser Judeh, former Cabinet Minister Sami Judeh’s son. Nasser also served as Jordan’s Minister of Foreign Affairs. The couple has four children: Tariq, Zein, Ali and Sukayna, but they divorced subsequently in 2007. Princess Sumaya University for Technology, founded in 1991, is named after her. In 2006 she was appointed President of the Royal Scientific Society, Jordan’s leading applied research institute, by Prince Hassan. She also sits as Deputy-Chair of the Higher Council for Science and Technology, advising the State on public policy issues relating to science and technology. In addition, Sumaya founded the El Hassan Science City, inaugurated by King Abdullah II in 2007.
Princess SumayaPrincess Sumaya’s admittance to the Royal Academy of Economic Sciences, SpainPrincess Badiya’s Pakistani style MehndiPrincess Badiya’s 2005 wedding to Khaled Edward Blair in Amman
Princess Badiya attended Christ Church at Oxford, and then got a law diploma from The College of Law in London (where she met her future husband). She qualified as a barrister in 1998, being called to the bar at Lincoln’s Inn, the first member of the Jordanian Royal Family to become a lawyer. Next, she got her LLM in International Law from the London School of Economics. In 2005, she married Britisher Khaled Edward Blair in Amman and they have one son together named Ali. Khaled works as an investment banker in London. Speaking of her husband’s conversion to Islam, she said in an interview, “He became a Muslim before we married, but I was adamant that Ed’s conversion should be out of genuine religious conviction and not because of me. Would Ed have become a Muslim if he had never met me? Maybe not, it may not have occurred to him to look into it. As it was, he studied Islam and found that it was what he believed in already.â€
Part of their wedding festivities in Amman was a Pakistani style mehndi (henna) ceremony at which she dressed up as a traditional Pakistani bride, complete with jhoomar (head ornament) and lehnga (long embroidered bridal skirt). Princess Badiya has been photographed in Pakistani embroidered shalwar kameez on many occasions. In the UK, she works at promoting interfaith and cross-cultural understanding, human rights and the rights of asylum seekers and refugees through the Muslim-led charity Mosaic, a mentoring programme for youth founded by Prince Charles, of which she is the Chairperson.
Princess Badiya & Khaled Blair in LondonPrince Rashid & Zeina Shaban’s grand 2011 wedding at the Basman Palace in AmmanCake-cutting with his ceremonial swordThe groom looking jubilant at the reception
Prince Rashid attended Port Regis and Harrow schools, the Royal Military Academy Sandhurst and got his BA from Cambridge University. He joined the Jordanian Armed Forces as Captain and is currently serving as a Lieutenant Colonel in the Gendarmerie. In 2011, Prince Rashid had a grand royal wedding to Zeina Shaban at Amman’s Basman Palace. Zeina, a statuesque beauty and national table tennis champion, represented Jordan at the 2004 and 2008 Summer Olympics. The national flag bearer in Beijing, she had the whole country’s eyes on her. The Prince, himself a sporting enthusiast, looked jubilant at his wedding to the sporting star. The couple has a son Hassan, 2013. Prince Rashid has been head of the Jordan Amateur Boxing Association, and is the Captain of the Jordanian Polo Team and President of the Jordan Taekwondo Federation.
Rashid & Zeina wedding group with attending royaltyQueen Rania & Princess Sarvath in their royal tiarasPrince Rashid & Princess Zeina
An enlightened thinker that wants to see the Muslim world progress, Prince Rashid wisely said in an interview, “If wealthy Arab nations would develop a communication strategy for public diplomacy whereby such wealth – $1 trillion in bank deposits – actually is seen to be doing something to improve the Muslim world’s lot via empowerment and concern for the poor, then you’d see an evolution. Our concern then would become super-national, whereby the issue wouldn’t be to try to beautify our image in the eyes of others, i.e. the West, rather to promote ourselves not by words but by deeds. But unfortunately at the present time, nobody is taking the initiative toward this super-national thinking. For example, I don’t see why there isn’t an international fund for zakat (alms), even until now.â€
Let’s hope other Arab leaders follow his progressive thinking.
Filtering long lists of output on the command line usually involves taking the list of items – maybe the output of ls, git or find – and doing something with it. If you’re lucky you can mechanically filter the list with pipes and grep. If you’re unlucky and you can’t think of a heuristic, you’ll have to sift through the output with a pager like less and remember the items you want to keep.
fzf filtering output from apt-cache search intended for apt-get
Typically you do this because you want to cherry pick a subset of the items and feed them into another command, like rm, cat or apt-get as the picture above illustrates.
But the manual way is tedious and slow. And that’s the problem fzf tries to solve. The premise is simple: you feed it (via stdin) a list of items, and it displays a curses-like window where you can “fuzzy find” and select the items you care about. It’s designed to slot into command substitutions and pipes — like an interactive grep.
So that got me thinking. There’s no reason why you can’t use Emacs to do this instead of fzf! Emacs has better fuzzy finding and it’s the text editor you’re already using, so why not use Emacs?
ezf filtering output from apt-cache before passing it back to the shell
So the game plan is simple:
Build a shell script
This is the shell-facing part that we feed into pipes and command substitution sub-shells.
It must talk to emacsclient, the client in the Emacs client-server duo. That way it’ll run in your existing Emacs instance and it won’t interrupt your workflow if you also use – as you well should! – Emacs as your shell or terminal emulator.
Write some Elisp glue code
We’ll need a few functions capable of letting you filter and select the match candidates you like. Luckily this is generally very easy.
Return the picked candidates
After matching and selecting the candidates we want to keep, we must return them from whence they came. We’ll need to be mindful of annoying bagatelles like proper quoting.
Make it easy to extend
It should be easy to extend or modify to suit individual tastes.
We’ll add a few command switches to ezf to highlight how easy it is to pass customizable switches through bash into Emacs.
Sending to Emacs’s standard input
Let’s start with the shell script. I’ve done it in bash. There’s a number of little gotchas and workarounds required for this to work well. So the script’s freighted with one or two annoying hacks.
Chiefly, it’s not possible to ask emacsclient or even emacs to read directly from a file descriptor device. So process substitution with <(ls ...) is out. I don’t know why, as Emacs is absolutely 100% capable of doing it inside Emacs. So I’m chalking it up to oversight.
That means we have to work around that problem with real files. I’m using mktemp to cat standard input to a temporary file. To avoid clobbering your tmpfs with junk files, there’s a trap to clean up when the script exits.
Now all we need to do is add a little command argument parsing: I want -c to let us choose the completion tool to invoke in Emacs; and -f is there to pick the field offset to return. The latter is particularly useful if you have a line of text and you want just the first word, for example.
After that, there’s a little bit of house keeping in case you exit out of the selection process without picking anything. Oh, when you tell emacsclient to evaluate elisp it’ll use prin1 to emit the representation of the Lisp object to standard output, and that forces quote symbols around strings, even if we don’t really want that. Sieving the output from Emacs through a pipe to xargs cunningly strips the quotes.
#!/usr/bin/env bashset-o nounset -o errexit -o pipefail
field=nil
# the elisp function to use for completing readcandidate_fn=ezf-default
whilegetopts c:f: OPT;docase$OPT in
c)candidate_fn=$OPTARG;;
f)field=$OPTARG;;
*)echo"usage: ${0##*/} [-f field] [-c candidate-fn]"exit 2
esacdoneshift$(( OPTIND - 1 ))OPTIND=1
ezftmp="$(mktemp)"trap'rm -f -- "$ezftmp"' EXIT
>"$ezftmp"cat -
# xargs is there to strip the "" from the beginning and end of the output from Emacs.selection=$(emacsclient -e "(ezf \"$ezftmp\"$field #'$candidate_fn)"|xargs)if [["$selection"=="nil" ]]; thenexit 1
elseecho"$selection"fi
I’ve named it ezf.sh (symlinked to ezf) so all you need to do is put it somewhere on your PATH.
Filtering in Emacs
Completion in Emacs is a complex subject matter and one soused in bike shedding and personal opinion. So I’ve kept things open and made it work with completing-read – well, specifically completing-read-multiple so you can pick multiple items.
If you’re unsure how that fits into your completion framework, then my article on understanding Minibuffer Completion is a good place to start. If you want IDO to work with it, you’ll have to tweak the code yourself. Luckily I have an example here to get you started.
I’ve also made it work out of the box with Helm which, as we all know, is awesome. Helm in particular is perfect for this as it comes with great fuzzy matching, multiple selection and it’s easy to add custom actions like returning matches to the shell and opening them as files in Emacs, for example.
There’s three parts: two completion mechanisms and a generic wrapper that turns lists of candidates into usable output.
(defun ezf-default (filename)
"EZF completion with your default completion system."
(completing-read-multiple
"Pick a Candidate: "
(with-temp-buffer
(insert-file-contents-literally filename nil)
(string-lines (buffer-string) t))))
completing-read-multiple takes a prompt and a list of strings. And that’s all you need to get Emacs’s completion system to work. I create a temporary buffer to hold the file contents before it’s split up into lines. If you want NULL-separated output, this is the place to change it.
If you’re wondering why I’m using a buffer, you should read my article Why Emacs has Buffers.
(defun ezf-helm (filename)
"EZF completion with `helm'.";; Uncomment if you want Helm to full screen.;; (helm-set-local-variable 'helm-full-frame t)
(helm :sources
(helm-build-in-file-source "EZF Completion" filename
:action (lambda (_) (helm-marked-candidates)))))
For Helm the solution is similar. I’m using Helm’s ability to build candidates directly from a file. If you want to add more than one action then I recommend you use helm-make-actions to build the alist.
Now for the generic wrapper. Its job is to take a list of strings you picked from a candidate function and turn it into something the shell can properly read. If you specified -f to ezf then it’ll also split the string and only use the field index you chose.
;; If you start Emacs's server some other way, you can remove this.
(server-start)
(defvar ezf-separators " ""Regexp of separators `ezf' should use to split a line.")
(defun ezf (filename &optional field completing-fn)
"Wrapper that calls COMPLETION-FN with FILENAME.Optionally split each line of string by `ezf-separators' if FIELDis non-nil and return FIELD.If COMPLETING-FN is nil default to `ezf-default'."
(when-let (candidates (funcall (or completing-fn 'ezf-default) filename))
(mapconcat (lambda (candidate)
(shell-quote-argument
(if field
(nth (1- field) (split-string candidate ezf-separators t" "))
candidate)))
candidates
" ")))
Here the goal is simply to take a filename containing our candidates; an optional completing-fn, as set by passing -c to ezf; and an optional field index.
ezf-separators is a regular expression to split each line by. So if you want NULL-delimited support then you can easily add that and a switch to go along with it.
Because we’re taking unsanitized candidates and passing them through our completion system, it’s good form to ensure the filtered candidates are properly escaped when we hand them back to the shell. That’s what shell-quote-argument does. mapconcat merely ensures the quoted candidates are space-separated as that’s what shells expect. (And if you want NULL separation you should change this also.)
Because the last value is by convention the value that is returned from a function in Lisp, we know that the output of emacsclient is the result of the mapconcat form if we selected any matches, and nil otherwise.
With all this in place it’s time to test it:
Fuzzy matching dictionary words with Emacs and ezf
Yep. Looks good.
This tool is able to do most of the things you’d use fzf for, and all from within the comfort of your Emacs. It’ll work just fine in Eshell also if you don’t push it too hard. Eshell’s support for pipes and redirection is not as good as regular shells, but with a little bit of work it could be made to work there too, with or without the bash script. And of course you can use it from Terminals also: the ones you run from inside Emacs, and external ones also.
Example Use Cases
Here’s a few examples of how you can use the tool. It goes without saying that it’s a bit threadbare compared to fzf, but I think it’s easy enough to extend to suit your own needs. This is also a great way to get your hands dirty with elisp if you have never done any before.
I’m going to point out that M-x helm-locate already does this, but you can use GNU locate to track down files matching a regex pattern and then open them in emacsclient:
$ emacsclient$(locate -r '[.]py$'|ezf)
GNU locate works by querying a database that updates whenever you call updatedb. It’s probably the one of fastest cached file searchers available today. You can have multiple databases with different configurations (one for your home directory and another for the whole file system) to further speed it up. I highly recommend you look into using it if you regularly sweep your file system looking for files.
Finding and installing packages with apt-get and apt-cache:
Change directories. Try playing around with the arguments to find, or use something simpler like ls:
$ cd$(find . -maxdepth 3 -type d |ezf)
Next Steps
I think this is a pretty good example of how you can combine the power of Emacs and a little bit of gnarly shell script magic. And this is really just the beginning. You can take the shell script and hook it up to all manner of crazy Emacs stuff: M-x dired; sending stuff to a buffer for editing; and more.
Eshell is a shell written entirely in Emacs Lisp, and it replicates most of the features and commands from GNU CoreUtils and the Bourne-like shells. So by re-writing common commands like ls and cp in Emacs-Lisp, Eshell will function identically on any environment Emacs itself runs on.
Unlike a terminal emulator, Eshell is more like bash, zsh or the python shells. That means it has its own idiosyncrasies, rules, modes of operation, advantages and disadvantages.
Eshell in action. Using Tramp you can cd into remote systems. Here it's a docker container running locally.
The main advantage is that you’re just talking to Emacs. The downside, of course, is that it’s not a shell you’re probably familiar with: it’ll bear many similarities to the likes of bash or zsh, but it’s distinctly none of those things also.
So why use it? Well…
Native Tramp Support
So you can cd into docker containers; remote SSH servers; Android phones using the Android Debug Bridge; talk to anything rclone works with, like S3; su and sudo; and much more. And you can combine them all – SSH to this host, then sudo to this user – all from within Emacs and Eshell.
All of this, of course, is also available to Emacs writ large.
Write Elisp instead of sh
It’s got the full power of Emacs behind it.
Want to open a file? Type find-file and Emacs opens it.
Need a M-x dired buffer? Just type dired ..
Worried about the next full moon? Try lunar-phases.
Piping and Redirection is through Emacs
So you can redirect the output of a command straight into an Emacs buffer or its kill ring.
It’s all Emacs
For better or worse! You gain tight integration with your Emacs environment, and extending Eshell is relatively easy, as it’s all elisp.
Command Interception
Type grep and instead of printing out the results like a normal shell would, Emacs instead refers the query to its own grep machinery, as if you’d called M-x grep.
Plan9 Smart Display
Instead of your screen tailing the output of a command, you can tell Eshell to page top-to-bottom automatically when the output exceeds what fits on your screen.
Excellent when you want to digest the output one page at a time.
… and much more!
Alas, there is also a small problem: Eshell is only partially documented – a rare sight in GNU Emacs – so I’ve compiled this guide to help people make full use of what Eshell has to offer. The documentation is better today than it’s been before, but there’s still a lot of “tribal knowledge” out there you should know about.
Overview
Unlike the other shells in Emacs, Eshell does not inherit from comint-mode, the default mode for interacting with inferior processes in Emacs. But because Eshell is not an inferior process, it does not have to use comint; but while that may seem like a good thing, it does mean that hooks and routines written for comint-mode won’t work with Eshell. That also means any key bindings and commands you may know and use elsewhere may not work well in Eshell, or at all.
Nevertheless, Eshell does reproduce a selection of key bindings you might know from comint-mode, and it does a reasonable job of mirroring the semantics of some of the commands. One example of where Eshell lags behind is that its history search, M-r in comint-mode derivatives and Eshell, does not search-as-you-type.
Eshell works well on any platform Emacs itself runs on, as Eshell interacts with a common middleware (namely Emacs, and Emacs in turn talks to your operating system) and that opens up a number of benefits if you’re stuck running Emacs on a platform that does not support common Linux paradigms. So you’re likely to get a consistent user experience when you use Eshell, and that’s one of its strengths. Another is that you get to benefit from native Tramp support, which is another feather in its cap.
In fact, Eshell also works well with Windows-specific concepts, like disk drives. So it’s easy-peasy to just cd D: to change drives in Windows. No need for any POSIX-style abstractions, like /cygdrive/c in Cygwin.
Despite all the advantages offered by Eshell, there are some disadvantages or gotchas you should keep in mind:
It’s still not a terminal emulator
As I mentioned earlier, Eshell is not a terminal emulator. It is, in actual fact, utterly incapable of handling anything but line-based programs. Instead, it’ll outsource the running of interactive – visual in Eshell terminology – programs to a dedicated terminal emulator, like M-x ansi-term or VTerm.
Eshell is Emacs
That means you’re hidebound by the limitations of Emacs. You’re not farming out the work of running programs to an external tool like bash. So if Eshell hangs, your Emacs hangs.
Emacs is also responsible for reading and writing from programs. That means it has to buffer text, and that is generally slower than a program written in plain C.
Although it is a reasonable facsimile of particularly bash and zsh, it does not implement their scripting languages or all the piping and redirection concepts you may know and love from bash.
In fact, unless you’re really talented at distinguishing GNU Coreutils from bash, you’re likely to assume Eshell can (or cannot) do something simply because that distinction is blurred to most users.
Commands
Eshell is Emacs. And the command line is wired to talk directly to the large library of Elisp commands at your disposal. That means it’s not only easy to write your own commands – just write a normal elisp function and call it – but Eshell is also able to call them, with or without arguments.
You’re therefore free to type find-file hello.txt and have Emacs open up hello.txt. No need to call emacsclient; though of course that also works!
It’s a cool feature and highlights the benefits of tightly coupling a shell to Emacs.
Technical Details
All commands evaluated by Eshell have an evaluation order, which is an ordered list your command must pass through to determine what part of Eshell handles it. If there is nothing on the list that wants to evaluate your command, then Eshell will reject it.
Assuming you want to execute the command cp, the evaluation order is:
Look for a shell-defined alias (alias command)
A full filepath (e.g. /bin/cp) runs cp in /bin
Look for the command prefix, eshell-explicit-command-char (default is *), and if it is found then look for the command in the search path.
Look for cp in the search path, $PATH (or eshell-path-env)
Look for a Lisp function named cp or the elisp function eshell/cp
The variable eshell-prefer-lisp-functions alters the evaluation order. What that means is when it’s set to t Eshell swaps the search order of #4 and #5. If the command prefix is specified, though, this directive is ignored.
Built-In Commands
Eshell has a handful of commands written in elisp that closely emulate a large subset of GNU Coreutils. Those commands are called “Alias functions.”
Eshell only implements a subset of the functionality provided by the real commands, but if you pass an unknown argument to Eshell it will defer to the real commandline tool (if it is installed) automatically.
Here’s what Eshell currently re-implements in elisp:
There is a big emphasis on adhering to the original GNU functionality, so the fact they are emulated is only a problem if you don’t have the underlying tool installed on your system.
Command Interception
Eshell has a cool mechanism where certain commands are intercepted and passed on to Emacs proper. It’s a bit like the ability to call elisp directly in Eshell, but instead of just doing that, the command is instead reinterpreted as the equivalent feature in Emacs.
For instance, Emacs has a large selection of grep-style commands (like M-x grep) that it can run internally and enrich with clickable hyperlinks to each match. Instead of typing M-x grep you can type grep in Eshell and Emacs takes it from there.
But you can see a full list with C-u C-h a ^eshell/.
The commands su, sudo and whoami are Tramp-aware commands, so if you are connected to a remote shell they work as expected.
Subshells
There are two types of Emacs subshells. The first one is $( ... ) (also ( ... )) that evaluates Lisp.
You can use $() to in-line an elisp form and use its output in much the same way as you would in bash:
$ echo $(+123)
6
The only caveat here is you cannot use the backquote (backtick) to spawn a subshell, but that syntax was never universally supported anyway.
It’s also possible (though I would not recommend it, for there are cases where it does not work) to use a standard elisp form like this:
$ echo (+123)
6
But it does not work everywhere, so exercise caution.
The other is more like an actual subshell: ${ ... }. Note that it’s not as versatile as a regular subshell that you may know from bash and the like.
$ echo ${echo $(+123)}
6
Useful Elisp Commands
There are a number of useful Eshell commands that you should know about. You’re of course not limited to these commands, but they’re either really useful and general, or made specifically to plug a hole in Eshell’s feature set.
listify ARGS
Parses an argument string into elisp list notation and prints it to the screen. It’s clever enough to handle both MS-DOS/Windows and POSIX-style argument syntax.
$ listify 123
(123)
addpath PATH
Adds the argument, which must be a path, to the $PATH environment variable. If no argument is specified the existing paths are pretty-printed to the screen.
Diffs FILE1 and FILE2 using ediff, one of Emacs’s diff engines.
find-name-dired DIR PATTERN
Calls out to the external program find and asks it to find all PATTERN in DIR.
Don’t forget to escape the glob patterns you pass to PATTERN. Single quotes work well.
Note that most commands work well over Tramp (more on that below) so you can definitely cd to a remote Tramp directory; invoke magit and get a magit status screen for a remote directory.
Aliasing
alias ALIAS-NAME DEFINITION
Aliasing in Eshell works in much the same way as it does in other mainstream shells, except you can freely mix elisp and Eshell commands. The command alias takes an ALIAS-NAME and a DEFINITION. You must enclose DEFINITION with single quotes.
You can environment variable-style notation known from other shells: $1 for the first argument, $2 for the second, and so on. You can also use $* to use all arguments, or omit them entirely as Eshell will magically append them on to the end of a command if they weren’t referenced in the definition.
To delete an alias, simply leave out the DEFINITION argument. To list all the aliases, leave out both arguments.
Eshell will write the alias definitions to eshell-aliases-file, which in turn is governed by the eshell-directory-name
By default that location is ~/.emacs.d/.eshell/alias. Emacs commits all alias changes to that file immediately.
Another useful thing to know is the auto-correcting aliasing. If you repeatedly fumble the spelling of a command (governed by eshell-bad-command-tolerance, which is 3 by default) Eshell pops up a prompt asking you to alias it to another command.
If you don’t like that, you can bump up the aforementioned variable to a large number.
Useful Examples
Let’s map the cumbersome command find-file to the more manageable ff:
alias ff 'find-file $1'
And let’s map dired to d:
alias d 'dired $1'
This calls find without arguments on the present working directory. Great for getting a recursive listing of all files and directories in your current buffer in a M-x dired buffer.
alias fd 'find-dired $PWD ""'
Visual Commands
Some commands are too complex to be displayed by Eshell directly, and require special handling. To most programs, tools like M-x shell and M-x eshell are dumb terminals: they are not capable of advanced cursor movement required for programs like emacs or top to work.
Eshell works well with line-based programs but not interactive programs. For the latter you need a proper terminal emulator. Because interactive (visual in Eshell speak) programs are common, you can tell Eshell to open up visual commands in a dedicated terminal emulator.
To modify the list of visual commands, you can alter eshell-visual-commands. You can even put in commands that work fine in Eshell if you’d rather they run from a dedicated terminal emulator.
If a program requires a full-blown terminal emulator for only some of its subcommands – git being one such example – you can customize eshell-visual-subcommands and eshell-visual-options and selectively enable visual command support:
Invocations to git that include either one of --help or --paginate as an option, or log, diff or show as a subcommand, are now invoked through a terminal emulator.
Command History and Prompt Key Bindings
Eshell comes with a feature-rich command history facility. Because Eshell does not use comint-mode it does not have all the history features available to it, but most of the common ones do exist.
M-r / M-s
Search backwards or forwards for a command by regexp
M-p / M-n
Goes backwards or forwards in the command history list
C-c C-p / C-c C-n
Jump to the previous or next command prompt in Eshell
C-c M-r / C-c M-s
Jumps to the previous or next command that shares the command currently used as input. So it jumps to other instances of the command foo if that is the current input.
C-c C-o
Kills the output of the previous command.
C-a / C-e
Move to the beginning or end of line.
Unfortunately, the search-as-you-type history search in M-x shell (bound to M-r) is not implemented in Eshell.
Because I program a lot, I tend to use M-m instead of C-a to move to the beginning of the line. M-m skips indentation and moves to the first non-whitespace char, unlike C-a.
That command does not work in Eshell, for obvious reasons, but you can rebind it to the same key as C-a:
You can rewrite previous commands found in Eshell’s history. The syntax is similar to what you find in bash, but it’s just a subset of the most common features. It’s probably easier to refer you to the bash info manual for detailed information on how the history interaction works. I’ve included a small table below that describes most of the history syntax Eshell supports.
You may also want to read my article on Shell & Comint Secrets: History commands. Although it concerns comint-mode-derived things, it’s useful to know about anyway.
!!
Repeats the last command
!ls
Repeats the last command beginning with ls
!?ls
Repeats the last command containingls
!ls:n
Extract the nth argument from the last command beginning with ls
!ls<tab>
Using pcomplete, show completion results matches ls
^old^new
Quick substitution. Using the last command, replaceold with new and run it again. Appears to be buggy.
$_
Returns the last parameter in the last executed command.
Eshell also has some support for bash history modifiers (like !!:s/old/new/) and the bash reference on history interaction would be a good place to brush up on that.
Commandline Interaction
The Eshell Prompt
You can customize the Eshell prompt by modifying eshell-prompt-function, a variable that takes a function that defines what the prompt should contain. By relegating prompt configuration to elisp you can do just about anything you like with it. The only problem is, of course, that Eshell will need to be told what the prompt “looks” like, so you must also edit the variable eshell-prompt-regexp so Eshell knows what the prompt is.
Instead of going to the trouble of changing it yourself, you can give the package Eshell prompt extras a try.
The Command Line
You can use \ to escape newlines and it supports rudimentary multi-line input that way.
Another way of doing multi-line literal strings is with single quotes: begin a single quote and hit enter, and you are free to enter text until the closing quote delimiter is encountered. If you use double quotes Eshell will expand subshell commands and do variable expansion. In this sense it’s quite similar to bash, though without the support for bashheredocs.
Due to the way Eshell works, you can even go back and modify the text you entered, in quotes.
Useful Keybindings
Eshell comes equipped with a couple of quality-of-life improvements that make interacting with Emacs and Eshell a lot easier.
C-c M-b
Inserts the printed buffer name at point
C-c M-i
Inserts the printed process name at point
C-c M-v
Inserts an environment variable name at point
C-c M-d
Toggles between direct input and delayed input (send on RET).
Useful for some programs that don’t work correctly with buffered input.
Argument Predicates
Argument predicates are a cool way of quickly filtering lists of files or even elisp lists. The predicate syntax is based on the one used in zsh.
Unlike most other areas of Eshell, argument predicates are documented in Eshell itself.
You can access the help files by typing eshell-display-predicate-help or eshell-display-modifier-help in Eshell or M-x. If you frequently use them, you should consider creating an Eshell alias.
Filtering globbed lists of files is very useful, as it saves you the hassle of using tools like find to cut down on matches.
The help file is fairly spartan and only serves as a simple reference, so I’ve included a small guide here. But actually, the only real way to learn something as flexible as argument predication istrial and error.
Syntax Reference
I’ve opted not to reprint the sizeable list of predicates and modifiers, as the Eshell popup help (see the commands above) do a good enough job of explaining how they work.
Globbing
Globbing in Eshell follow the same rules as it does in most other common shells: it is the shell that does the expansion of globs and it passes the expanded list of matches on to commands like ls. That’s why when you use find and xargs together it’s critical that you pass -print0 to find, and -0 to xargs. If you don’t, filenames with obscure characters or spaces in them may trip up xargs. Using the NUL character as a separator ensures tokenization takes place correctly.
Elisp Lists
Eshell’s “lists” are actually elisp lists in their printed form as well as internally. That makes life a lot simpler if you think about it, as Eshell can paw off list handling to elisp, which is something Lisp does well.
Like most shells everywhere, * is a wildcard glob pattern. Because – as I just mentioned above – wildcard expansion takes place inline, I can modify the output of a glob pattern like *.
Notice how I used () immediately following the glob pattern. Modifiers are things that modify (big surprise!) the resulting list. Modifier commands always begin with :, and filtering predicates do not.
Another example, but this time I filter directories using a predicate:
$ echo *(^/)
("bar""foo")
The circumflex, ^, in this case, like in regular expressions, is negation. The / means “directories” only.
But I don’t have to use globs to apply modifiers or predicates to lists:
This time I replaced all occurrences of foo with blarg. Observe that the syntax is identical, except instead of using globs to get a list of files, I used a list of my own choosing.
The advantages provided by argument predicates and modifiers will greatly reduce commandline clutter as the predicates cover permissions, ownership, file attributes, and much more.
Adding New Modifiers and Predicates
You can even add your own predicates (eshell-predicate-alist) or modifiers (eshell-modifier-alist):
Here I’ve bound X to rot13, the substitution cipher:
$ echo ("foo""bar""baz")(:X)
("sbb""one""onm")
Plan 9 Smart Shell
Eshell comes with a pared-down facsimile of Plan 9’s terminal, called the Eshell smart display. The smart display is meant to improve the write-run-revise cycle all command line hackers suffer through. It works by not letting the point follow the output of a command you execute, like a normal shell would. Instead, the point is kept on the line of the command you executed, letting you revise it easily without having to use M-p and M-n or the history modification commands.
Additionally, you can ‘peek’ at long-running commands using SPC to move down a page and BACKSPACE to move up a page while you wait for the command to finish. Any other key press jumps to the end of the buffer.
Essentially, if Eshell detects that you want to review the last executed command, it will help you do so; if, on the other hand, you do not then Eshell will jump to the end of the buffer instead. It’s pretty clever about it, and there are switches you can toggle to fine-tune the behavior.
Where the smart display really shines is that it lets you modify the command you just executed by using the movement keys – like you normally would – to change the command, say to fix a typo or tweak an argument.
You can also disable smart display so it won’t activate if the command you executed exited with code 0 (indicating success) and if it finished without emitting any output.
To enable it put this in your init file:
(require 'eshell)
(require 'em-smart)
(setq eshell-where-to-jump 'begin)
(setq eshell-review-quick-commands nil)
(setq eshell-smart-space-goes-to-end t)
;; If the above does not work, try uncommenting this.;; (add-to-list 'eshell-modules-list 'eshell-smart)
If Eshell is already initialized (that is, you’ve already launched an instance of Eshell in Emacs) then evaluating the changes above will not work. You must switch to the Eshell buffer and type M-: (eshell-smart-initialize) (or restart Emacs.) You might see some garbled output appear in your echo area. Just ignore it.
Some report that they must
So remember: SPC to page through the output; BACKSPACE to move back a page; and any other keys jumps to the end of the buffer.
Redirection
Redirection in Eshell works in much the same way as it does in other shells. The key difference is that Eshell has to emulate the pseudo-devices as they may not be present (or may not be present in the same form) on platforms such as Windows where /dev/null is actually NUL.
Another caveat is that Eshell does not support input redirection, though it does support output redirection. To skirt around the lack of input redirection you should use pipes instead.
Redirection to stdout, stdin and stderr work as you would expect, and you can send things to multiple targets as well, which is very nice.
Redirecting Pipes to a Buffer
Because Eshell has to reimplement pseudo-devices internally it is not at the mercy of dealing with just UNIX device files – it is actually capable of implementing its own pseudo-devices.
A good example would be redirection to a buffer of your choosing, and that can be done with the following syntax:
$ cat mylog.log >> #<buffer *scratch*>
This is where the ability to insert the printed format of a buffer comes in handy. The command C-c M-b from before does the job. There is another shorthand: #<*scratch*> that achieves the same outcome.
You can also output straight to an elisp variable (but be careful you don’t fry the wrong settings):
$ echo foo bar baz > #'myvar
$ echo $(cadr myvar)
bar
If you set eshell-buffer-shorthand to t you can use the shorthand #'*scratch* instead, but it means you will not be able to redirect straight to elisp symbols. I recommend you use C-c M-b and #<buffer-name-here> instead.
To Pseudo-Devices
Eshell reimplements the following pseudo-devices:
/dev/eshell
Prints the output interactively to Eshell.
/dev/null
Sends the output to the NULL device.
/dev/clip
Sends the output to the clipboard.
/dev/kill
Sends the output to the kill ring.
The usual redirection rules like overwrite (>) and append (>>) apply here.
To Custom Virtual Targets
You can design your own virtual targets by modifying eshell-virtual-targets, an alist that takes the name of the pseudo-device you want to create, and a function that takes one parameter, mode, that determines if it’s overwrite, append or insert.
Remote Access with Tramp
Tramp (Transparent Remote Access, Multiple Protocol) is a framework for communicating across different user accounts, servers, docker containers, and much more.
It’s handy, and works well. Tramp works – keeping it simple, here – by intercepting how Emacs interacts with files, directories and processes. Because it’s generic, it works with a huge range of Emacs’s features — features that are almost never coded explicitly with Tramp in mind.
Eshell works well with Tramp. Provided you follow Tramp’s connection notation, you can connect to any backend Tramp supports and interface with it using Eshell.
Here’s an example that changes directory to a remote server using SSH:
cd /ssh:bob@initech:/srv/tps-reports/
That incantation connects as user bob to the server initech and switches to its /srv/tps-reports/ directory. From that moment on, all interactions in Eshell take place through the lens of the remote connection you established through Tramp.
Tramp is not perfect; nor is Eshell. But a wide range of commands work beautifully well remotely. Note that unlike an ordinary SSH connection Tramp does, in actual fact, make distinct calls via SSH every time you carry out an action.
It’s not a longer-running session like you might expect, and although you can configure all of this, it’s worth bearing in mind that you’re reaching out and executing standalone actions, one at a time.
If you install the third-party package docker-tramp you can also cd straight into docker containers and act on them.
Using that method, you can combine it with multi-hopping, so you can SSH to a remote server then su to a different user; connect with docker; or something else entirely:
$ cd /ssh:initech|su:root@localhost:/
Startup Scripts
Like most shells, Eshell supports both login and profile/rc shell scripts. The full filepaths for both are stored in the variables eshell-login-script and eshell-rc-script, but by default the files login and profile are stored in ~/.emacs.d/.eshell/.
The comment syntax is #.
More Customization…
Eshell has hundreds of options you can tweak to your liking. To configure Eshell, type M-x customize-group RET eshell RET.
Third-Party Extensions
There’s a large body of third-party packages and snippets of code available. Check your local package manager with M-x list-packages. Use M-s o or / n to filter by package name.
Bookmarks & Project Integration
Emacs’s extensive bookmarking facility also works with Eshell as of Emacs 28. Create a bookmark with C-x r m and you can recall it at will with C-x r l and friends.
I like this feature because you can bookmark directories and Emacs can open up an Eshell at the exact place you bookmarked.
Likewise, Emacs’s project management facility C-x p can open an Eshell in your project root with C-x p e.
TAB Completion
Eshell has its own completion system called pcomplete. Although newer versions of Emacs invoke the generic completion-at-point command, it internally still uses pcomplete for much of the command completion.
I have an article where I talk about PComplete: Context-Sensitive Completion in Emacs. If you ever want to extend Emacs’s shell completion – in newer Emacsen shell-mode also uses pcomplete behind the scenes – or understand how it works, then that article’s a good place to start.
The completion system is not fool-proof, and unlike your favorite external shell it does not come with an abundance of completion libraries for every conceivable binary.
Nevertheless, both TAB and C-M-i offer completion at point.
And don’t forget, Emacs has both M-x man and M-x woman for manual page lookup.
Conclusion
I think I’ve covered all major areas of Eshell, and I hope it paints it in a good light. Eshell is a versatile shell replacement thanks to its tight integration with Emacs. It’s not a drop-in replacement for bash and your favorite terminal emulator, but it’ll do most of the command line stuff we all inevitably end up doing.
Eshell has Tramp support; custom pseudo-devices; a pocket-sized elisp REPL; lots of useful utility commands like being able to find-file or dired any directory or file you’re in; and the ability to redirect output from commands straight into a buffer.
All in all, it’s a clever take on shells, and a tool I would encourage you to experiment with.