Python, Javascript and UNIX hacker, open source advocate, IRC addict, general badass and traveler
420 stories
·
7 followers

Two Americas, one bank branch, and $50,000 cash

1 Share
Two Americas, one bank branch, and $50,000 cash

In the sciences they call it the file drawer problem: studies that fail to achieve significance or reach the "wrong" conclusion end up hidden away, creating a distorted picture of reality. 

And so here's me rescuing something from the file drawer of banking procedure: a tale of two Americas, one bank branch, and $50,000 in cash.

A style magazine published an account of a large cash withdrawal that didn't match my understanding of banking reality. I burned several thousand dollars and a year investigating. I now doubt that account less, because I understand the context better.

Suppose you ask a bank to withdraw $50,000 in cash

There exist thousands of banks in the United States, each one independently operated with their own procedures, work forces, and circumstances. They are, broadly, similarly constrained by regulation, industry practice, culture, and perception of the threat environment. There is no such thing as a perfectly typical bank, banker, or banking client. But if we were to ignore the messiness of the real world, for the purpose of making a larger point, here is what is supposed to happen when a customer comes in and asks to withdraw $50,000.

A bank doesn’t expect its CEO or Head of Compliance to individually make decisions on every withdrawal. It has designed procedures to achieve the outcomes it (and its regulators, and other stakeholders) desire, and trained staff in how to implement those procedures. Those procedures happen to very explicitly contemplate this transaction.

The teller or personal banker, junior though they may be, is supposed to ascertain the identity of the customer, and ask themselves whether this is a typical transaction for this customer. Do they, perhaps, run a cash-heavy business which, every few weeks, takes out $50,000 to e.g. stock the ATM fleet they operate? If yes, either the staff knows that to be true personally, or this fact is noted on their account. (That note was written after the bank got extremely familiar with their cash management needs, for reasons.)

Very few customers routinely withdraw $50,000 in cash. We move to the next step on the flow chart. Here, the bank staff will begin to deploy some mix of truths, half-truths, and white lies.

One statement, which may be anywhere along that spectrum, is that the bank branch does not have $50,000 cash on hand. Across all bank branches in America, this is frequently actually, mathematically true. A true-ish variant of it is that the branch does actually have a bit more than $50,000 cash on hand. The branch needs it to service customers with routine cash needs, and the instant customer cannot be allowed to wipe out the bank’s on-hand cash reserves, because that will cause them to disappoint dozens or hundreds of customers between now and the rebalancing shipment of cash they will swiftly order. And then there is a false variant, where at some branches this is factually as operationally straightforward as exchanging a $20 bill for two rolls of quarters, but where the lie is institutionally excusable to save this customer from themselves.

Many people who have never withdrawn $50,000 in cash do not have great reasons for suddenly wanting to withdraw $50,000 in cash. It is quite likely they are being scammed or otherwise victimized. The bank, in consideration of its legal and ethical duties to its customer, would prefer to not facilitate this, even unknowingly. Over the universe of all people with this request, the bank knows, in its soul of corporate personhood, that it has actual knowledge of what is likely happening here.

And so, the staff will likely say that the bank has a rule, procedure, or request that the customer call them a day or two in advance of making large cash withdrawals. This will “allow us to get the cash together.” Now, in point of fact, there is a number that the branch manager could call to ask for an extraordinary shipment of physical currency, but this is mostly intended as a speedbump. Scams and other forms of exploitation rely on isolating the victim and pressuring them into making poor choices. Mandating a cooling-off period causes some scams to effervesce like dew in the morning sun.

Perhaps, as happens in many non-routine requests in banking, the customer will call in third-party professionals. Perhaps the customer, annoyed that the $50,000 they need to consummate a real estate transaction isn’t trivially on offer, might phone their real estate lawyer. This is music to the bank’s ears. Not every voice on a telephone is actually a lawyer, and not every member of the bar upholds its strict standards of professionalism and moral uprightness, but lawyers are so much easier to work with than civilians. And, should the matter be reviewed later, the bank will be able to document its reasonable reliance on representations made by a lawyer.

Fraudsters have frequently targeted real estate transactions in recent years. Banks are acutely aware of this; it’s covered extensively in their professional journals and in circulars from regulators. But banks, who have extensive experience with real estate deals, know that a few hiccups on closing are stressful for customers, but very rarely actually blow up transactions, certainly not like scams blow up bank customers.

The bank is unlikely to reach confidence, in this circumstance, in just a minute or two in the teller line. Many well-off people, with great relationships with their banks, with extensively paperworked transactions, will go through more than a half-hour of hoop jumping to get approval for anomalous transactions.

But suppose, for some reason, the calls do not happen and the extended due diligence is not performed. What is supposed to happen next? Well, typically at large money center banks (and here I cite both general industry knowledge and also sources familiar with banking procedure), the staff dealing directly with the customer will summon a second individual. Sometimes this is the branch manager, sometimes it is a peer. Sometimes the next action takes place verbally. Sometimes it happens in specifically built software which keeps an audit log of both staff signing off.

The bank invokes the Two Man Rule. (Yes, this has been renamed in many—but not all—formal documents recording procedural controls. Regulators have, generally, reviewed and approved those documents.)

If both individuals are satisfied that the anomalous transaction is not sufficiently hinky to refuse, it goes forward. This will generally require asking the customer about what they intend to do with $50,000 cash. Banks very rarely ask this question at $50 or $5,000.

Bankers, by law and custom, holistically review these situations. Elements considered include the account records, the experience of branch staff with this particular customer, and a host of context cues which the financial industry would prefer to dissimulate about.

If you are, for example, a lanky thirtysomething who waltzes into a branch in San Francisco and asks for a six figure wire to fund an investment, helpfully mentioning that you have the KYC/KYB information in a clear plastic folder, neither of the Two Men are likely to actually ask to read that folder. If you walk with a cane, if you speak with an accent, if you present as not really understanding the rituals you are engaged in, the bank and its staff will pay radically more attention to you, frequently not in ways you will enjoy.

Let us assume that a $50,000 withdrawal happens, through some pathway. It will have one more mechanical consequence. Very soon after the withdrawal, the bank will be obligated to file a Currency Transaction Report (CTR) with the Financial Crimes Enforcement Network (FinCEN), unless the customer has had a previously-approved status as someone who routinely needs to do this sort of thing, which almost no customers have. The CTR is a write-once read-probably-never document which mostly serves to get the customer’s banking information into a trivially searchable database for law enforcement.

And then what happens to the $50,000? Whatever the customer wants, really. If they want to put it in a shoebox and give it to a courier, it is, at that point, no longer the bank’s problem.

Style magazines sometimes publish hard-hitting journalism

In February 2024, the style publication The Cut published on its site, and concurrently in the print edition of New York Magazine, an article titled “The day I put $50,000 in a shoe box and handed it to a stranger I never thought I was the kind of person to fall for a scam.” It was written, in the first person, by a financial advice columnist who previously wrote for the New York Times business section.

The Cut and New York Magazine are owned by Vox Media, a private equity firm with material investments in advertising platforms (“We Create Premium Advertising Solutions”, “We Enable Media Companies To Build Modern Media Businesses”). Vox also publishes an eponymous website, notable for popularizing the term-of-art “explainer” and for publishing, about covid, analysis that aged more poorly than perhaps anything in the history of the written word. (It subsequently unpublished it.)

Many of Vox’s publications are good at what they do. The shoebox piece successfully achieved virality and follow-on coverage by several media orgs. A media critic could point to reasons why, such as the specificity and viscerality, the it-could-happen-to-anyone framing, and the complicated mix of schadenfreude, voyeurism, and self-protective reassurance which make so-called “true crime” explorations so explosively popular.

Vox Media sell ads with rate cards justified by the storied legacy of New York Magazine, which has won Pulitzers before, against articles of the caliber produced by The Cut. The print edition of the piece is immediately preceded by a fashion spread for “TOM FORD Halter-neck Jumpsuit and Black Stamped Croc Bar Belt, at tomford.com” A similar item, U0269-FAX1105, on the site bears the price tag $5,790, which is capitalism’s surest signal as to who it thinks is reading a publication.

For a quick vibe check on editorial standards of any publication, by their fruits shall you know them: just read the headlines. I checked them the morning of a presentation on this investigation, and they were “The high stakes of the group family vacation”, “George Clooney didn’t appreciate Biden criticizing his wife”, “The film exec distracted by her crushes at Cannes”, and “Madam Clairevoyant: Horoscopes for the week of June 9-15. Mars, planet of action, moves into steadfast Taurus. Time to knuckle down.”

Time to knuckle down… on hard-hitting journalism about banking procedures.

When I reached the bank, I told the guard I needed to make a large cash withdrawal and she sent me upstairs. Michael [a member of the scamming team] was on speakerphone in my pocket. I asked the teller for $50,000. The woman behind the thick glass window raised her eyebrows, disappeared into a back room, came back with a large metal box of $100 bills, and counted them out with a machine. Then she pushed the stacks of bills through the slot along with a sheet of paper warning me against scams. I thanked her and left. 

As the piece went quite viral on Twitter, a number of people reached out to me. One specific question asked was “Are high-value withdrawal rooms a thing?”, which I answered, somewhat confusedly, “I could believe that there is, somewhere among 76,000 bank branches in the United States, a room designed to make $50,000 withdrawals. But no, the standard branch layout has no such room designed or designated.” 

If a customer needs privacy, the branch has several rooms with doors, behind which banking business is routinely conducted. Those rooms are not fortresses. The branch is not a fortress. It's primarily a sales office for financial services that happens to handle some cash.

Then, I read the article, with a particular attention to the paragraph quoted above. I felt that several elements of this paragraph were inconsistent with the standard practice of banking.

I have an immense regard for journalism, generally, but the institution has been duped before. Stephen Glass comes to mind. One of the earliest bits of hard evidence against him was that he confabulated evocative details about the built reality of buildings he claimed to have visited. The shoebox piece contained much evocative detail, including some details I felt were, unbeknownst to almost all readers, likely to be checkable… and unlikely to have been checked.

Thus began an investigative journalism project, which ended up taking almost a year.

Reaching out to Vox Media

Having once worked for a Communications department, which very definitely does not endorse anything I say in this piece, I am aware of a social ritual of reporters and PR teams. You can send PR an email and ask them for a reply. By convention this is called a comment or a statement to pretend it is something vastly different in character than an excerpt from an email.

If one defects from this social ritual, many responsible professionals will conclude that one has something to hide. This is part of the reason why e.g. the largest banks in the world will swiftly answer questions asked by reporters working for, for example, a low-circulation weekly in Topeka, Kansas. This produces immense social utility, including by acting as an escalation pathway into the bank regarding, e.g., “Does the bank have a comment on why it is foreclosing on Ms. Mildred, who has shown this reporter a carefully maintained collection of checks that appear, to this reporter, to have been deposited?”

On February 22nd, 2024, I sent an email to Vox Media and asked for a comment. You don’t need to be bitten by a radioactive spider to do this. By custom, PR departments publish contact details widely, in part to avoid hostile journalists construing a lack of contact information as a refusal to comment.

There is, however, a performance of class that is helpful in getting PR departments to take you seriously. Mentioning that you are an avid Factorio player might not counsel an immediate reply to one’s questions. The following introduction is designed to compel one.

My name is Patrick McKenzie. I write a column titled Bits about Money, which frequently covers financial fraud and operational mechanics of banking infrastructure. I have previously appeared on Bloomberg and in the New York Times.

I read with interest the article about $50k in a shoebox, which was also published in the print edition of New York Magazine. I may reference it in future writing.

All claims in those paragraphs are true. Some people resent that one can assert authority simply because of implicit blessing of high-status institutions. I leave anyone to their aesthetic preferences, but will mention that this is a very important lesson for how halls of power in New York and Washington, D.C. work. 

When the New York Times attempts to commission a piece from you, they will say apologetically that they can’t pay that well for it, but almost nobody writes for the Times for the money. You are paid in a different coin. Flash it, John Wick style, at a PR department, and it immediately takes you seriously, or it is quickly brought to task by New York’s hidden-in-plain-sight subculture of character assassins.

My email to the press contact asked a few questions and avoided explicitly broaching the question I was most curious about: Did the editorial process understand this piece to be an exercise in… creative writing? This felt unlikely, but magazines publish a spectrum of artifacts. Some pieces are roman à clefs, some are pastiches, some are based in a true story, and some are the more traditional understanding of journalism. On the text of it, the piece reads like it is reporting a true event, but it is in a style magazine and does run next to a piece titled Tweencore (“What the 13-and-under set is shopping for.”) and, you know, one may be forgiven some doubts.

A spokesperson for New York Magazine replied with a statement for publication which removed all doubt about how it perceived this story.

The story was thoroughly fact-checked prior to publication, and as part of this process, we reviewed the writer's bank withdrawal, recordings of phone calls and text messages with their scammer, and their statement to the police.

Since I had publicly expressed doubt that there was any fact checking process, I corrected the record.

Published statements or comments routinely occur in the context of a larger conversation. This is rarely mentioned, and I am promoting this subtext to text. There may have been any combination of on the record, on background, or off the record statements between myself and Vox Media. The world may never know.

But generally speaking, careful titration of how much information passes between PR and reporters, including restrictions (which are closer to handshake agreements than contracts) on what can be used where and when, enables a brisk favor-swapping economy. That economy has failed to function recently in the tech industry, as I discussed previously with Kelsey Piper. (Kelsey works in a different part of the Vocis machinae.) 

When it does function, society gets the usual benefits of journalism, PR departments grumble a bit but play the game, the Bat Phone to mortgage servicing gets answered on the first ring, and advertisers sell their wares to willing customers to pay for it all.

Sources of doubt

So Vox Media’s statement through a spokesperson effectively definitively resolved my doubts about editorial processes… but this did not resolve my doubts about banking procedure. 

Fraud investigators, law enforcement, and journalists alike frequently start with intuition then backfill with objective facts. My intuitions were screaming.

The article does not actually name the bank or the bank branch, despite a scene unambiguously set within it, despite the centrality of its failure to the narrative, despite repeated identification of firms that were utterly uninvolved. The transaction does not proceed as what a bank expects to happen if someone asks for the entirety of their savings account in cash. Physical details provided for flavor purposes are very rare in the universe you live in.

The claimed fact checking process struck me as… other than robust, in worlds where parts of the article were not factually accurate.

For example, there are many ways to “review a bank withdrawal.” That review can involve five or more parties, and I’ve been on almost all ends of it at various times. Some “reviews” are low-friction but low-robustness, such as e.g. asking someone to see a screenshot of their mobile phone or a printout of a bank statement.

As I once told a colleague in an unrelated context: a printed bank statement is of limited probative value because it could be forged by a bright high school student.

The financial industry has a variety of ways to resolve this, depending on how much time and toil it wants to expend on the investigation. For example, you can call the financial institution which issued the statement in question, announce that you are in a room with their customer, and then ask their customer to ask them to read the financial institution’s copy of the statement into the open line. Many people I have told about this ritual assume that, due to security concerns, no bank will engage in it. Nope! This is extremely routine and will happen tens of thousands of times next Tuesday. It is obviously more trustworthy than a copy of the statement whose chain of custody includes a non-bank actor.

Anyhow, some years after cracking wise about bright high school students, I chanced upon an infelicity which happened to New York Magazine. It published that a Stuyvesant high school student had made $72 million trading stocks and was shortly to open a hedge fund.

This is obvious nonsense and would be detected within seconds of conversation by anyone professionally involved in hedge funds, but we have a ritual in our society which blesses some writers as being owed the benefit of the doubt when they publish obvious nonsense. If it ran in the pages of New York Magazine, and New York Magazine engaged its standard fact checking process by sending someone to Stuyvesant to review a bank statement, and that piece of paper said Chase at the top and an eight figure number at the bottom, then the clearly the story is defensible, right.

No! Of course not! New York Magazine got punked by a teenager. 

And so, reading New York Magazine’s newest written statement about thoroughly fact checking a bank withdrawal, I thought “After ten years memories fade. Vox is currently wearing New York Magazine as a skin-suit, so who knows if anyone involved in that fracas is still around. Perhaps current staff reviewed the newest issue’s most important transaction in an other-than-robust fashion.”

Texts from the scammer? Voice recordings? A statement to the police? All of these struck me as highly correlated rather than being independent evidence: all reliable if one trusts the writer, and all unreliable if one does not trust the writer.

Never having employed or encountered this writer myself, before she wrote things I believed to be improbable about banking procedure, I reflected on what I do trust. 

I trust the physical reality of the world. I trust that it is very difficult to corrupt the archives of societal institutions.

The physical reality of bank branches

Vanishingly few bank branches put teller windows on the second floor. Many people have not ever had reason to deeply consider this true fact about the world. Relatively few people have ever made real estate decisions about siting bank branches or sketched layouts for them.

By coincidence, my father has. And, as someone who listened attentively at the dinner table and on car rides as he geeked out with his eldest son about the relative merits of various corners in Chicago, when I read that there was a bank branch in New York City with thick glass on the second floor, I thought “If that unicorn exists, I can probably narrow it down to a single physical location.” 

New York City, ye capital of the world, ye center of global finance, ye city which never sleeps: poets say you contain stories beyond numbering, but bike messengers can count your bank branches. A few hundred. Done. A diligent person could walk into every last one. (Of course the public can just walk into bank branches. That is what they are for.)

I started by attempting to narrow the set, to save some shoe leather. One gets a free 90%+ reduction by narrowing it to one bank in particular. Bank regulators keenly track deposit share concentration (and, therefore, bank branch concentration) in major markets, and NYC, the majorest market, is gardened with an exactitude that makes the feng shui look effortless.

Who knows the bank? Well, Vox (by implication of their statement) must know the bank, and the writer certainly knows the bank, and perhaps one of these would give an on the record comment naming the bank.

The writer engages in freelance journalism, has a professional website which lists her email address, and swiftly answered a question from another writer, on the record.

Bank of America.

Now we are getting somewhere.

Bank of America will trivially give you a list of all Bank of America locations in Brooklyn, for many reasons, including “We would certainly hope you find our financial centers for your financial services needs. We didn’t build this branch footprint and lease out desirable locations for a half century and sweat the details about curb cuts for the sheer joy of it all.

One can, if one is unusually punctilious, cross reference their list against public records.

One useful sort of public record is the Office of the Comptroller of the Currency’s weekly bulletin, which includes all bank branch closings for nationally chartered institutions in the United States. Why would one care about those bulletins? An investigation, conducted in February 2024, about branches open on October 31st, 2023, might otherwise miss some which closed in the interim. And so I told my research assistant to read a few months of bulletins. (He surprised me by saying there is a search engine these days. Well, this wire transfer compliance influencer learned a new trick in 2024.)

And so we had twenty two Bank of America branches in Brooklyn to look at.

I’m in Chicago, and flying to Brooklyn to spend three days walking into branches seems like an obviously irrational use of my time. So, in the finest tradition of publications assigning scutwork to junior employees, I sent Sammy to Brooklyn instead.

We excluded any buildings which physically didn’t have a second floor. We used sophisticated techniques taught in journalism school, like the fact you can press ten buttons on an iPhone and then someone at a bank in Brooklyn will immediately answer questions like “Does your branch have a second floor?”

We kept a detailed spreadsheet, in the expectation we might eventually have to show New York media outlets that we had done our homework. A timestamped call here, a Street View there, our search area narrowed precipitously.

The final round of investigation involved Sammy physically entering bank branches, walking to the second floor, and looking for physical details consistent with the story as published.

This is a long way to say: I am very confident indeed that the only place in the world the described bank transaction could possibly have taken place at is 1 Flatbush Avenue, at the teller window, on the second floor. Right here.

Two Americas, one bank branch, and $50,000 cash
Samuel Cottrell, conducting banking business at 1 Flatbush Avenue, March 18th, 2024

We took this photo in March 2024, only weeks after publication of the original article.

And then we entered a long, long holding pattern, trying to find one trusted institution to say that, as of earlier than February 2024, they understood the transaction to either a) definitely have taken place at 1 Flatbush Avenue or b) definitely not have taken place at 1 Flatbush Avenue.

In which we became acquainted with brisk walks across Brooklyn

If the incident took place in the physical world, then the geospatial reality of the world imposes some constraints on the narrative. The writer unambiguously locates their narrative in Brooklyn. But Brooklyn is large.

Could we narrow it down? Could we do that using only independent, trustworthy information?

I trust, for example, that the city of New York keeps mostly accurate records about who owns property. These are quite useful for e.g. facilitating the orderly operation of the country's largest real estate market. The records are publicly available through the Automated City Register Information System (ACRIS).

I learned two things from ACRIS in early 2024.

One was an address on a mortgage. That address is, factually, a thoroughly doable walk from 1 Flatbush Avenue.

The other: this outsider, trusting at face value representations made by a news publication about the socioeconomic status of the subject of a story, did not successfully predict other facts present on that mortgage.

Socioeconomic class, unfortunately, has a great deal of bearing on how a bank would choose to interact with an individual. This is particularly true as one approaches either end of the socioeconomic spectrum, away from the mass market that most people assume banks must be serving at all times. We have often discussed discontinuities in service at the lower end of the spectrum in Bits about Money. There exist… other discontinuities.

I realize that commenting on the socioeconomic status of a crime victim is uncouth, particularly in ways they might not choose to describe themselves. Class is unfortunately essential to understanding what actually happened at 1 Flatbush Avenue on October 31st, 2023. Permit me a brief recital of the source of my confusion.

This outsider perceived a through-line of the Cut piece as being that the writer made other-than-rational decisions about $50,000 because their financial life was on the line. Here are some select non-consecutive paragraphs reproduced verbatim, with bolding added to highlight statements this outsider apparently read incorrectly.

Calvin [a member of the scamming team] wanted to know how much money I currently had in my bank accounts. I told him that I had two — checking and savings — with a combined balance of a little over $80,000. As a freelancer in a volatile industry, I keep a sizable emergency fund, and I also set aside cash to pay my taxes at the end of the year, since they aren’t withheld from my paychecks.
I almost laughed. I told him I was quite sure that my husband, who works for an affordable- housing nonprofit and makes meticulous spreadsheets for our child-care expenses, was not a secret drug smuggler. “I believe you, but even so, your communications are probably under surveillance,” Calvin said. “You cannot talk to him about this.” I quickly deleted the text messages I had sent my husband a few minutes earlier. “These are sophisticated criminals with a lot of money at stake,” he continued. “You should assume you are in danger and being watched. You cannot take any chances.” 
Fifty thousand dollars is a lot of money. It took me years to save, stashing away a few thousand every time I got paid for a big project. Part of it was money I had received from my grandfather, an inheritance he took great pains to set up for his grandchildren before his death. Sometimes I imagine how I would have spent it if I had to get rid of it in a day. I could have paid for over a year’s worth of child care up front. I could have put it toward the master’s degree I’ve always wanted. I could have housed multiple families for months. Perhaps, inadvertently, I am; I occasionally wonder what the scammers did with it.
Because I had set it aside for emergencies and taxes, it was money I tried to pretend I didn’t have — it wasn’t for spending. Initially, I was afraid that I wouldn’t be able to afford my taxes this year, but then my accountant told me I could write off losses due to theft. So from a financial standpoint, I’ll survive, as long as I don’t have another emergency — a real one — anytime soon.

These statements, and others throughout the article, conjured a particular image for me. It was that the writer was upper middle class, dealt with a bit of financial anxiety common to many individuals in precarious or not-particularly-remunerative employment circumstances, and was abused by professional con artists in a calculated fashion to prey upon this financial insecurity.

When recounted these same statements, my friend Byrne Hobart, who has actually lived among this social milieu before, laughed knowingly and said “Ah, family money.”

I will now add three true statements to the above sketch, in the hopes that you understand this transaction the way that a Bank of America teller understood it.

The writer’s positive home equity, trivially available to the bank which wrote their mortgage, is well in excess of ten years of the median household income for New York City. The writer is the president of the family charitable foundation, which per its annual filings with the IRS has in the recent past held approximately $2 million in marketable securities. And the family estate in Connecticut (which the writer’s parents live at) was featured in the local paper, highlighting two hundred years of history.

Discovering these facts radically changed my impression of why, per the writer’s written communication with me, she was not asked for the purpose of a $50,000 withdrawal by any bank staff. It no longer looks like a surprising lapse in procedure, when someone attempted to empty their entire savings account and wasn’t even half-heartedly counseled about caution. It looks like trivial cash management of a well-off, presumptively sophisticated client, whose household, resources, and probable financial future were thoroughly known to the bank.

Would the bank prefer the teller to ask one more question in this circumstance? Perhaps. But it won’t lose sleep over the matter.

Bank of America was asked about this transaction by the New York Times: “‘We have extensive efforts to warn clients about avoiding scams,’ said a Bank of America spokesman, William P. Halldin, via email. The bank declined to comment further.” (The Times, citing policy, refused to confirm the bank branch it understood the transaction to have taken place at.)

And thus we return to our earlier question: can we find an institution which will divulge where this transaction was claimed to have taken place at? Vox Media, the writer, and the New York Times have all been asked, and we do not have an answer yet.

Enter the Financial Crimes Enforcement Network

Bank of America is one of the largest depository institutions in the world, and reliably files Currency Transaction Reports when someone moves $10,000 or more into, or out of, the bank in cash. I thought it would be extremely unlikely that FinCEN would cough one of these up to anyone who asked.

But a recent development in Freedom of Information Act jurisprudence gave me some hope: the FOIA now, per the Ninth Circuit, allows for “statistical aggregate data” to be FOIAed. And I thought there was some hope that FinCEN would, rather than showing me a very private Currency Transaction Report, answer a simple question about statistical aggregates.

So I filed a FOIA request, 2025-FINF-00126, asking for a statistical calculation to be done:

How many currency transaction reports were filed. In Brooklyn. For a withdrawal of between $48,000 and $52,000. On October 31st, 2023. Broken down by branch address.

FinCEN efficiently processed this FOIA request, returning a definitive answer in less than two weeks: hell no. It asserted the same argument rejected by the 9th Circuit, that responding would require creating a new record (the results of the SQL query) and therefore it had no obligation to do so. It also asserted a statutory exemption which very broadly applied to many records kept by FinCEN. On reading the statutes, I thought FinCEN likely had the right of them, even if it was unlikely to prevail on the statistical aggregate issue.

Drats. It was worth a shot.

New York’s Finest foil FOIL for a time

The statement from Vox Media claimed that the writer had filed a police report.

From the perspective of a fact-checker, police reports serve a useful tripwire function. Lying on one is a crime. It is not a particularly serious crime (a class A misdemeanor, which also covers “spilling a drink on someone” and “shoplifting a bottle of Tide”).

One is welcome to one’s guess as to how often New York prosecutors enforce this law, particularly against people in our social class. But it is a useful Schelling point for society: a news publication can gesture in the direction of a police report, and say “Well, everyone knows what a police report means”, and we all pretend that it means a police report necessarily contains no lies.

No police officer need disabuse journalists of their illusions here. Should a publication ever get put to the question, it will immediately pivot into “We didn’t say we agreed with or believed anything on the police report. We simply neutrally reported the demonstrable fact of the police report. Obviously we intended nothing else by bringing up a police report.”

But police reports remain useful even in a world where they sometimes contain lies, because they establish paper trails which are extremely difficult to retrospectively fudge.

I was most interested in two facts on the police report.

One was metadata: when was this report received? (It obviously reads a bit differently if the report was created in response to the fact-checker asking for it, right.) The other: did, prior to the publication of the story, the writer consistently cite 1 Flatbush Avenue, the only location in the physical universe the transaction could have taken place at, as the location the transaction took place at?

I tried to get that police report, by several methods. By June 2024, getting impatient, I was at the point of forcing enthusiastically encouraging the NYPD to follow the law and provide it to me.

Police reports, like many public records, are retrievable under the Freedom of Information Law, New York state’s legislation which mirrors the federal FOIA. The statutory deadlines are five business days to acknowledge a request, and then twenty business days (or such time reasonably required) to release the records or cite an exemption under the law for not disclosing them.

I filed FOIL-2024-056-16750 on June 26th, 2024. On the last possible day, the NYPD updated its timeline to successfully locate a police report: it would need until November. OK, fair enough. I was a bit busy myself, being involved in a house purchase and move, and my one paper copy of a style magazine was hanging out in a box in the basement while we repainted. Perhaps the New York Police Department, annual budget $5.8 billion, was likewise quite busy.

November came. November went.

Eventually, concerned that Santa would not deliver the Christmas present I most wanted, I began to press the NYPD for answers. I did this using a voice and mien which I call Dangerous Professional. Three messages, one phone call, no dice.

And so, in February 2025, after a full six months of waiting on the NYPD, I got out my call log and penned a FOIL appeal. After a brief recitation of the procedural history, that letter did a bit of calculated knife twisting:

This request was filed on June 26th, 2024, more than six months ago. It was originally assigned a Due Date of November 4th, more than two months ago, by the NYPD. Despite three attempts to request an update via the Contact the Agency form online and one telephone message, I have yet to receive any non-automated contact from the NYPD about this request.

The statutory timeframe for production of documents in response to a FOIL request is twenty business days from the acknowledgement of the request. The NYPD's failure to produce this document in more than 100 business days is, accordingly, a constructive denial of the request.

I hereby appeal the NYPD's denial, and require that it produce the documents described in the FOIL request or provide me with its reasoning under the statute why it cannot do so. 

An attorney for the NYPD wrote back, forecasting a response within the statutory timeframe (10 business days for an appeal). The substantive response said that the appeal was moot because… the Records Access Officer had, subsequent to my appeal, made a determination that the NYPD did indeed keep police reports and could indeed release them in response to FOIL requests.

Oh happy day.

The police report contains a statement recorded by the police made on October 31st, 2023. I have lightly rewritten police shorthand and corrected some inconsequential spelling mistakes:

Complainant/victim further states listed perpetrator stated complainant/victim needed to pay in order to avoid being arrested. Complainant/victim states she withdrew $50,000 in U.S. currency from Bank of America, located at 1 Flatbush Avenue, at 3:10 PM.

And there we have it: reliable chain of custody to a claim made about the physical world at a known time, within hours of the alleged incident. This transaction was alleged to have happened at 1 Flatbush Avenue. Months later, in writing of her memories of the day, the writer offered a seemingly inconsequential detail about going up stairs to visit a teller window.

That seemingly inconsequential detail is, if one has a very particular set of interests, and is willing to put an irrational amount of work in, independently verifiable. Of all the bank branches in all the towns in all the world, the only one where a Bank of America teller awaits Brooklyn socialites behind thick glass on the second floor is, indeed, 1 Flatbush Avenue.

This would be a very different piece if that police report, or any other documentation at a trusted institution, named e.g. 266 Broadway instead.  

As for the rest of the shoebox piece? I have no informed point of view on anything in a style magazine, except for the banking.

Read the whole story
miohtama
11 days ago
reply
Helsinki, Finland
Share this story
Delete

Hardware discovery: ACPI & Device Tree

1 Share

If you grew up in the PC scene during the 1980s or early 1990s, you know how painful it was to get hardware to work. And if you did not witness that (lucky you) here is how it went: every piece of hardware in your PC—say a sound card or a network card—had physical switches or jumpers in it. These switches configured the card’s I/O address space, interrupts, and DMA ports, and you had to be careful to select values that did not overlap with other cards.

Portion of a Sound Blaster Pro ISA card focusing on the jumpers to configure its I/O settings.

But that wasn’t all. Once you had configured the physical switches, you had to tell the operating system and/or software which specific cards you had and how you had configured them. Remember SET BLASTER=A220 I5 D1 H5? This DOS environment variable told programs which specific Sound Blaster you had installed and which I/O settings you had selected via its jumpers.

Not really fun. It was common to have hardware conflicts that yielded random lock-ups, and thus ISA “Plug and Play”, or PnP for short, was born in the early 1990s—a protocol for the legacy ISA bus to enumerate its devices and to configure their settings via software. Fast-forward to today’s scene where we just attach devices to external USB connectors and things “magically work”.

But how? How does the kernel know which physical devices exist and how does it know which of the many device drivers it contains can handle each device? Enter the world of hardware discovery.

If this sounds interesting, please consider subscribing to Blog System/5! It’s completely free but you can also choose to donate to keep me writing!

Hardware topology

When you learn about the Von Neumann architecture in school, you are typically told that there is a CPU, a chunk of memory, and… “I/O devices”. The CPU and memory portions are where all the focus is put and the I/O devices portion is always “left to the reader”. However, there is a lot of stuff happening in that nebulous cloud.

The first question that arises is: what’s in that I/O cloud? Well, take a look:

The Windows 2000 Device Manager showing the devices by their connection, not by their type. I've chosen to show you this configuration of a virtual machine instead of what a current Windows 11 system shows because the older view is simpler to digest.

Whoa, that’s a lot of stuff, but we can classify the items in the “nebulous cloud of I/O devices” into two categories:

  • The devices themselves, obviously.

  • The busses that connect those devices to the CPU.

Both are important: you might have a fancy keyboard with extra keys that requires a special driver, and this keyboard might come in PS/2 and USB versions. The driver for the keyboard may be the same for each version, but the “glue” that attaches this keyboard to either bus is different, and the way the kernel can tell whether the keyboard is attached to one port or another also differs.

So how does the kernel know how to find hardware without tons of repeated code for every bus, you ask? It does so via its knowledge of the hardware topology. Just above, I showed you Windows’ view of this, but for the rest of this article, I’ll use the BSD internals (and NetBSD specifically) because that’s what I know best. Don’t let that put you off though: all kernels have to do something similar and the differences among them are likely not meaningful.

Here is a little snippet of the default NetBSD kernel configuration file for the amd64 platform. This snippet lays out the topology of serial ports in the PC and the busses in which they may appear:

pci*    at mainbus? bus ?
pcib*   at pci? dev ? function ?
puc*    at pci? dev ? function ?
com*    at puc? port ?

isa0    at mainbus?
isa0    at pcib?
com0    at isa? port 0x3f8 irq 4
com1    at isa? port 0x2f8 irq 3

acpi0   at mainbus0
com*    at acpi?

Daunting if you have never seen anything like this, I know, but let me translate this to a diagram:

Representation of how the com device is expected to appear under various busses according to the kernel configuration file.

Much clearer in picture form, right? What this chunk of configuration does is tell the kernel the places where the com driver can find serial ports. We have a chunk that says that com0 and com1 can appear on the ISA bus at specific I/O addresses and interrupts, and in turn that the ISA bus may be a directly-addressable physical bus (isa0 at mainbus?) and/or an ISA bus exposed via a PCI bridge (isa0 at pcib?). Then, we have additional entries telling us that the serial ports can also be configured via ACPI (com* at acpi?), and that the serial ports may exist on expansion cards (com* at puc?) providing communication ports via the PCI bus (puc* at pci?).

The problem is: the kernel configuration tells us what may exist, not what actually exists on a machine. In a sense, the configuration file “wires” the code of the device drivers like com so that they can find devices that appear under the isa, pci, or acpi busses. But the kernel must still, at runtime, check and see where the devices actually are. How does that happen?

Hardware auto-configuration

To answer the question of how the kernel discovers which hardware is present and where it is, let’s dissect NetBSD’s autoconf(9) manual page:

Autoconfiguration is the process of matching hardware devices with an appropriate device driver. In its most basic form, autoconfiguration consists of the recursive process of finding and attaching all devices on a bus, including other busses.

From this paragraph, we can extract the following: the kernel contains a collection of device drivers (like the com presented earlier). Device drivers are just code that knows how to interact with specific devices, but the “location” of these devices in the hardware topology may vary (the “bindings” to isa, puc, and acpi in the earlier example). Moving on:

The autoconfiguration framework supports direct configuration where the bus driver can determine the devices present. The autoconfiguration framework also supports indirect configuration where the drivers must probe the bus looking for the presence of a device. Direct configuration is preferred since it can find hardware regardless of the presence of proper drivers.

Direct and indirect configuration. Hmm. This sounds like the PnP story, and it kinda does. See, pay close attention to these two lines from the earlier snippet:

com0    at isa? port 0x3f8 irq 4
com1    at isa? port 0x2f8 irq 3

These are the BSD equivalent of the SET BLASTER=A220 I5 D1 H5 command for DOS I mentioned in the introduction: they tell the kernel which precise addresses and interrupts to use for the two standard PC serial ports if an ISA bus is present.

But what about com* at puc? and com* at acpi?? These lines are neat because they do not tell us, in advance, where to find the serial ports: we expect the kernel to discover those details at runtime so that we don’t have to recompile the kernel when the hardware changes. But even if these two look similar, they are quite different: the com* at puc? is an indirect configuration entry: the puc driver will have to probe the PCI bus for the presence of a communications card and, if one exists, tell the com driver that it can attach to it. On the other hand, the com* at acpi? entry is direct: the kernel will read the ACPI configuration (a static table) to know where the ports are and then use those details to configure the com driver.

Alright, so this raises another question. What is ACPI?

ACPI

ACPI, despite being declared with acpi0 at mainbus0 in a form similar to isa0 at mainbus?, is not a bus: ACPI does not physically connect devices to one another. To understand what ACPI does, we can start by realizing that it stands for Advanced Configuration and Power Interface and then, quoting the Wikipedia article:

Advanced Configuration and Power Interface (ACPI) is an open standard that operating systems can use to discover and configure computer hardware components, to perform power management (e.g. putting unused hardware components to sleep), auto configuration (e.g. Plug and Play and hot swapping), and status monitoring.

ACPI is about configuration, and the kernel uses the ACPI tables, present in any modern PC, to find where devices are. To illustrate how this works, let’s look at the com* at acpi? line. This line says that the serial port can be configured via ACPI if ACPI happens to have an entry for it. And you know, we can peek into the ACPI tables of a running machine to see what that might be:

# acpidump -dt | grep -A15 COM1
Device (COM1)
{
    Name (_HID, EisaId ("PNP0501") /* 16550A-compatible COM Serial Port */)  // _HID: Hardware ID
    Name (_UID, One)  // _UID: Unique ID
    Name (_CRS, ResourceTemplate ()  // _CRS: Current Resource Settings
    {
        IO (Decode16,
            0x03F8,             // Range Minimum
            0x03F8,             // Range Maximum
            0x01,               // Alignment
            0x08,               // Length
            )
        IRQNoFlags ()
            {4}
    })
}
# █

(Pro-tip: you can use acpidump to extract the Windows license key bound to your machine, if any. I’ve needed to do this in the past to install Windows in a VM after replacing the host OS with FreeBSD.)

Voila. The ACPI tables provided by the system tell us a similar story to what the explicit com0 at isa? entry did (and no surprise here because this is a legacy device): there is a serial port at base address 0x3f8 that uses interrupt 4. But also, this table tells us the hardware identifier for this entry: PNP0501. Grepping through the NetBSD kernel code base for this identifier, we land on the dev/acpi/com_acpi.c file:

static const struct device_compatible_entry compat_data[] = {
    // ...

    /* 16550A-compatible COM port */
    { .compat = "PNP0501", .value = COM_TYPE_NORMAL },

    // ...
};

(Another pro-tip: master ripgrep. Knowing how to find a needle in the haystack of a large code base will grant you super-powers among your coworkers. Being able to pinpoint where specifically to start an investigation based on a “random-looking” string is invaluable.)

Aha! This com_acpi.c file provides the necessary glue to direct the generic serial port com driver to the hardware via whatever the ACPI tables prescribe. From here, the kernel can proceed to attach the driver to the device and connect the dots between the user-space /dev/ttyS0 interface to the physical serial port.

Device Tree

In the world of embedded devices powered by SOCs—"System on a Chip", a term that describes single chips that provide all functions to build a computer, ranging from the CPU to sound and network cards—we don’t have ACPI tables. What we used to have instead was explicit code for every board/chip combination that knew how to address the hardware in each SOC. Linux used to be a mess of half-baked and abandoned forks, each supporting a different board without hopes of unification into mainline due to the lack of generic interfaces.

The Device Tree specification fixed this issue for the most part for architectures like aarch64. With Device Tree, each hardware or OS vendor provides a static table that describes the layout of a board’s hardware separately from the code of the kernel. Then, the kernel peeks into this table to know which devices exist and where they are in the machine layout, much like it does with ACPI.

A big difference with ACPI, however, is that the kernel cannot query the Device Tree from the hardware because… well, the Device Tree is external to the hardware. The kernel expects the Device Tree to “exist in memory” either because the kernel image embeds the Device Tree for the target board or because the boot loader loads the Device Tree from disk and passes it to the kernel.

Once the kernel has the Device Tree though, the hardware discovery process is similar to the one in ACPI: the kernel scans the Device Tree and looks for drivers that can attach to device nodes based on hardware identifiers. From the perspective of the kernel configuration, things look very similar between amd64 and aarch64. See this snippet from the generic kernel of the evbarm port:

armfdt0     at root
simplebus*  at fdt? pass 0
com*        at fdt? pass 4

This configuration snippet tells the aarch64 kernel that a com device may appear on fdt, which stands for “Flat Device Tree”. In turn, armfdt0 at root says that there is a specific driver named armfdt0 that provides access to the fdt loaded by the boot loader on an ARM machine.

We can inspect the Device Tree from the command line as the Device Tree is exposed via the same interface that OpenFirmware used due to its historical roots. For example, to fetch the portion of the Device Tree for the serial port on an aarch64 machine:

# ofctl serial1
[Caching 121 nodes and 781 properties]
clocks                  0000000e 00000000 ........ ........   ........
compatible              6272636d 2c62636d 32383335 2d617578   "brcm,bcm2835-aux
            0010:       2d756172 7400.... ........ ........   -uart"
interrupts              00000001 0000001d ........ ........   ........
name                    73657269 616c00.. ........ ........   "serial"
phandle                 0000004c ........ ........ ........   ...L
pinctrl-0               0000000f ........ ........ ........   ....
pinctrl-names           64656661 756c7400 ........ ........   default.
reg                     7e215040 00000040 ........ ........   ~!P@...@
status                  6f6b6179 00...... ........ ........   okay.
# █

A binary dump. OK, fine, we can intuit something out of this, but it isn’t particularly clear. The problem here is that we are looking at the binary encoding of the Device Tree (the DTB). But the DTB is built from a set of corresponding source files (one or more DTS files), and if we look at the common DTS for Broadcom 283x boards, we find the following more-readable content:

/ {
    aliases {
        /* ... */

        serial1 = "/soc/serial@7e215040";
    };

    soc {
        /* ... */

        serial@7e215040 {
            compatible = "brcm,bcm2835-aux-uart";
            reg = <0x7e215040 0x40>;
            interrupts = <0x01 0x1d>;
            clocks = <0x0e 0x00>;
            status = "okay";
            pinctrl-names = "default";
            pinctrl-0 = <0x0f>;
            phandle = <0x4c>;
        };
    };
};

The detail to highlight here is the brcm,bcm2835-aux-uart identifier. If we search for this in the code base with the ripgrep super-powers you gained earlier, we find the arch/arm/broadcom/bcm2835_com.c file, which contains:

static const struct device_compatible_entry compat_data[] = {
    { .compat = "brcm,bcm2835-aux-uart" },
    DEVICE_COMPAT_EOL
};

Once again: we found the glue that connects a generic com driver to a specific hardware device.

Loading DTBs at boot time

Let’s dig a bit further though. I mentioned earlier that the boot loader is responsible for loading the Device Tree into memory and passing it to the kernel. How is that done? Well, it really depends on the specific machine you are dealing with. In here, I’m just going to very briefly touch upon how the Raspberry Pi does it because that’s the specific non-PC hardware I have access to. And for this, I’ll take you through the investigative journey I took.

The specific problem I faced was that NetBSD was not able to discover the SPI bus even when I had enabled the right SPI driver in the kernel for my Raspberry Pi 3B. By that point, I was aware that DTBs existed and I suspected that something might be wrong with them, so my first instinct was to check and see what the DTB had to say about the SPI.

Digging through the FAT partition of the disk image I was using, I found the dtb/broadcom/bcm2837-rpi-3-b.dtb file—the DTB for my specific board. The way the Raspberry Pi boot loader finds this file is by looking for a file matching the board’s own name (bcm2837-rpi-3-b.dtb) in the location specified by the os_prefix configuration property in the config.txt placed at the root of the FAT partition.

Once I found that file and after learning about the dtc tool (the Device Tree Compiler) which transforms DTS files into DTBs and vice versa, I could decompile the DTS:

$ dtc -I dtb -O dts bcm2837-rpi-3-b.dtb -o bcm2837-rpi-3-b.dts
... various warnings ...
$ █

Then, peeking into the decompiled DTS file, I found:

spi@7e204000 {
    compatible = "brcm,bcm2835-spi";
    reg = <0x7e204000 0x200>;
    interrupts = <0x02 0x16>;
    clocks = <0x06 0x14>;
    #address-cells = <0x01>;
    #size-cells = <0x00>;
    status = "disabled";
    dmas = <0x0b 0x06 0x0b 0x07>;
    dma-names = "tx\0rx";
    phandle = <0x49>;
};

I verified that the SPI kernel driver recognized the brcm,bcm2835-spi identifier just as we did earlier on for the serial port. And it did match, so I was puzzled for a moment.

But then I noticed the innocuous status = "disabled" line. Aha! The SPI device was disabled by default. I modified that line with status = "okay" following what other entries in the DTS did, recompiled the DTS into the DTB:

$ dtc -I dts -O dtb bcm2837-rpi-3-b.dts -o bcm2837-rpi-3-b.dtb
... various warnings ...
$ █

… rebooted the board and… voila!

# dmesg | grep spi
[     1.000003] bcmspi0 at simplebus1: SPI
[     1.000003] bcmspi0: interrupting on icu irq 54
[     1.000003] spi0 at bcmspi0: SPI bus
# █

The kernel successfully attached the SPI driver and the SPI bus started working, which in turn led to a multi-hour debugging session to make the EndBASIC ST7735S driver work—but in the end it did.

Yes, there are nicer ways to do what I did here because the DTBs are provided by upstream and you should not be modifying them. What you should do instead is create a DTB overlay, which is a separate small DTB that “patches” the upstream DTB, and then tell the boot loader to process it via the dtoverlay stanza in the config.txt file. Details left to you, reader. Just beware that the Raspberry Pi boot loader is picky about file paths and the documentation is your friend here.

How do ACPI and Device Tree differ?

Based on everything I told you about here, ACPI and Device Tree look oddly similar—and that’s because they are! From the perspective of describing hardware to the kernel, the two technologies are equivalent, but they differ for historical reasons. ACPI has its roots in APM, a PC technology, whereas Device Tree is based on OpenFirmware, a technology that originated at Sun Microsystems for its SPARC machines and that was later used by Apple on their PowerPC-based Macs.

One difference between the two, though, is that ACPI does more than just describe hardware. ACPI provides a bunch of hardware-specific routines in a bytecode that the operating system can call into to manipulate the hardware. This is often maligned because ACPI introduces non-free and opaque blobs in the interaction between the operating system kernel and the hardware, but Matthew Garret has a great essay on why ACPI is necessary and why it is better than all other alternatives, possibly including Device Tree.

In any case, that’s all for today. I found this exercise of dealing with the Device Tree pretty fun and I thought I could share something interesting with you all. I intentionally omitted many details because the topic of hardware configuration is vast and tricky, but you can continue building your knowledge from the bits above and from the fabulous OSDev wiki.

And as always, if any of this was interesting, subscribe to Blog System/5 now. You’ll receive more content like this and you’ll support my future writing!

Read the whole story
miohtama
11 days ago
reply
Helsinki, Finland
Share this story
Delete

Introducing The RZE UTD-8000 Digital Watch In UltraHex Titanium

1 Share

Watch enthusiasts admire mechanical complexity, but when it comes to maximum durability, each moving part also represents a potential point of failure. Back when the very first digital watches emerged in the 1970s, the revolutionary timepieces were advertised as being “solid-state” to draw attention to the fact that they relied on no moving components. To […]

The post Introducing The RZE UTD-8000 Digital Watch In UltraHex Titanium appeared first on aBlogtoWatch.

Read the whole story
miohtama
21 days ago
reply
Helsinki, Finland
Share this story
Delete

Trumpism is kakistocracy

1 Share
Gage Skidmore, CC BY-SA 2.0, via Wikimedia Commons

One particularly noteworthy thing about Donald Trump is how almost all of the people who work for him seem to end up hating him. When Trump was in office the first time, he hired a bunch of military and ex-military men (despite being a draft dodger himself). Almost all of these men ended up despising him. Here’s a handy infographic:

(This infographic omits the jobs that these folks did when they worked for Trump; for example, John Kelly was Trump’s White House Chief of Staff, James Mattis and Mark Esper were each Secretary of Defense, H.R. McMaster was Trump’s National Security Advisor, etc.)

Here’s another infographic with some quotes that include more than just military men:

That’s pretty unusual! I can’t think of another public figure in modern America who was so hated by their ex-employees. Can you?

So how do we explain this near-universal rejection of Trump by the people who worked with him most closely? I guess one explanation is that they’ve all been infected with the dreaded Woke Mind Virus. But it’s unclear why working for Donald Trump would cause almost everyone to be exposed to the Woke Mind Virus, when working for, say, JD Vance, or Ron DeSantis, or any other prominent right-wing figure does not seem to produce such an infection.

Of course, not everyone who worked for Trump has abandoned and denounced him. Rudy Giuliani, who is now under indictment in several different states, is still among the faithful. Michael Flynn, who was fired by Obama for insubordination and then removed by Trump for improper personal dealings with the Russian government, is still on board, and is now threatening to unleash the “gates of Hell” on Trump’s political enemies. Peter Navarro, the economist1 who served four months in prison for defying a Congressional subpoena, is still a Trump fan. And so on.

You may perhaps notice a pattern among the relatively few people who are still on board the Trump Train from his first term. They are all very shady people. I don’t think this is a coincidence; I think it’s something systematic about Donald Trump’s personality and his method of rule.

As many people have noted, Trump’s movement is a cult of personality. Since Trump took over the Republican party in 2016, essentially every tenet of modern conservatism has been replaced with belief in a single leader. Trump appointed the judges that killed Roe v. Wade, but he constantly goes back and forth on the topic of abortion rights. Trump didn’t cut entitlement spending, but whether he wants to do that in his second term or not depends on which day you ask him. Trump has flip-flopped on the TikTok bill, on marijuana legalization, on the filibuster, on SALT caps, and so on.

But these flip-flops do not matter to his support at all. His supporters are sure that whichever decision Trump makes, it will be the right one, and if he changes it the following week, that will be the right decision as well. If tomorrow Trump declared that tariffs are terrible and illegal immigration is great, this would immediately become the essence of Trumpism. Trump’s followers put their trust not in principled ideas, but in a man — or, to be more accurate, in the idea of a man. That is what Trumpism requires of its adherents.

This means that anyone with strong principles is likely to eventually be kicked out of Trump’s orbit. Having principles means adhering to an idea instead of to a man, which violates the first and only rule of Trumpism.

This can result in some spectacularly bad personnel decisions. For example, if Trump wins next week’s elections, noted kook RFK Jr. is now slated to have a major role in his administration, overseeing health and food safety:

Robert F. Kennedy Jr. is poised to have significant control over health and food safety in a potential Trump administration, with discussions about some Cabinet and agency officials reporting to him, according to four people familiar with the planning process who spoke on the condition of anonymity to detail private conversations…

“The president has asked me to clean up corruption and conflicts at the agencies and to end the chronic disease epidemic,” Kennedy said in an interview Wednesday. “He wants measurable results in two years and to return those agencies to their long traditions of gold-standard evidence-based science and medicine.”

RFK Jr.’s most notable position on health is his belief that vaccines — not just Covid vaccines, but all vaccines — are harmful. In fact, opposition to vaccination now pervades the Trump team:

CNN’s Kaitlin Collins interviewed Trump transition co-chair Howard Lutnick…Lutnick proceeded to reveal that he had spoken with Kennedy for more than two hours…In the interview, Lutnick calmly repeated a series of vaccine-skeptic talking points. He did not even limit his vaccine skepticism to the COVID-19 vaccine, which is safe and effective, but to all vaccines, which he painted as unregulated, dangerous, and part of a for-profit conspiracy between the pharmaceutical industry and the federal government. The steps he proposed would be to give Kennedy data about vaccines, and if Kennedy decides they are not safe, which he already has, the FDA could pull approval.

Lutnick apparently also endorsed the long-debunked idea that vaccines cause autism.2

This is kakistocracy. Kakistocracy is an old word meaning “a government run by the worst, least qualified, or most unscrupulous citizens.” It is most commonly invoked to describe governments in sub-Saharan Africa. It’s a word I used a lot during Trump’s first term, and which I expect to use again if he wins a second one.

The reason Trump’s government ejects people like James Mattis and John Kelly, and elevates people like RFK Jr. and Peter Navarro, is simply the cult of personality. The kind of people who display unwavering loyalty in defiance of all principle are unlikely to be particularly competent or ethical people — after all, pride in one’s work and adherence to ethical codes are both ideals that could potentially countermand the will of the leader.

There is, of course, Elon Musk, who is nothing if not hyper-competent. Regardless of whether Elon decides to set aside his principles, I predict that Trump will marginalize Elon out of fear of being overshadowed. There’s already a hint of this — Lutnick, Trump’s transition team co-chair, apparently said in his recent interview that “tech entrepreneur Elon Musk would ‘help’ rather than serve in the government if Trump wins.” Principles aren’t the only threat to a cult of personality; another big, popular personality is also a threat.

The next question is: Why? Surely voters can see that Trumpism creates kakistocracy. Why is his support still robust?

The most commonly cited theory is that Trump “owns the libs” — that Republican voters prioritize the culture wars over everything else, and that they love Trump because he makes progressives angrier than anyone else does. I’m sure this theory has some validity to it, but I suspect there’s something deeper going on, and that it has to do with education polarization.

Over the past decade and a half, education has come to be one of the most reliable predictors of voting behavior. The partisan gap between those with the most education and those with the least is bigger than the gender gap, the age gap, or the White/Hispanic race gap:

Source: Pew

This gap grew especially big starting in 2016, when Trump appeared on the scene:

One explanation is that Trump’s ideas and behavior repelled educated people, while his realty-TV-type style and demeanor appealed to the less-educated. Another interpretation, however, is that college-educated Americans had already been trending in a more progressive direction for years, as evidenced by the general upward drift of the dark blue line in the chart above. The shift is even more pronounced at the higher end of the scale — Americans with postgraduate degrees have been trending leftward since at least the mid-1990s:

Source: Pew

Education polarization has done a couple of important and disquieting things to the conservative movement and the Republican party. First, it has shrunk the pool of educated conservatives from which GOP administrations can draw their appointees. Matt Yglesias pointed this out in an excellent post back in August:

Slow Boring
The crank realignment is bad for everyone
Robert F. Kennedy Jr.’s transition from semi-prominent Democrat to third party spoiler to Donald Trump endorser is emblematic of a broader, decade-long “crank realignment” in American politics…
Read more

In addition, as Yglesias also notes, education polarization has resulted in the domination of many American institutions by progressives. These include universities, the media, nonprofits, government agencies, and many businesses, all of which rely heavily on education to select their membership.

This is naturally very frustrating for conservatives. And I think for some, it creates a desire to kick out forcefully against those institutions. For example, conservatives have come to distrust almost all mainstream media sources:

Source: Pew

In recent years, conservatives have lost trust in the scientific establishment as well:

Education polarization is not the only reason for Americans’ falling trust in their institutions, but it’s probably part of the story.

I’m not going to tell conservatives that their mistrust is entirely unfounded. I can certainly think of times when progressive politics has eroded the credibility of important elite institutions in America, especially in the last few years. Public health officials’ call to ignore the dangers of Covid during the Floyd protests, on the grounds that “White supremacy is a lethal public health issue”, comes to mind. A rash of sloppy or even fabricated results in social science in recent years has been defended on progressive ideological grounds. Calls in Nature and other top scientific journals for “weaving indigenous knowledge into the scientific method” are not exactly confidence-inspiring.

That’s all quite bad, in my opinion, and I think pushback against this stuff has been growing among centrists and normie liberals during the Biden years. But kakistocracy is not a solution to the problem. For one thing, An advanced country needs functioning public institutions. Smashing those institutions’ power by appointing antivaxxers and other cranks will simply result in a lot of sick American children, and many other negative consequences.

But on top of that, appointing antivax cranks is not going to make the medical establishment less likely to embrace woke pseudoscience; on the contrary, it will give ideologues within the medical establishment cover to seize even more dominance within their fields. When the public’s choice is between A) their kids getting measles, and B) tolerating more guff about “indigenous knowledge” in Nature magazine, people will end up choosing the latter.

There are actually ways for conservatives to rebuild their influence in American institutions without destroying those institutions. The most obvious is cartelization — consider the Federalist Society, which has succeeded in getting plenty of conservative judges into the judiciary, including a majority of the Supreme Court, simply by having conservatives support each other. The same could be done in academia and government as well. Whatever your opinion of the Federalist society and conservative jurisprudence, they have not destroyed competence.

But those efforts exist at the elite level; the average voter has no idea what the Federalist Society even is. A lot of GOP voters see progressives taking over the commanding heights of American institutions, and probably wants to react by whacking those institutions with whatever tools are available. If that tool is a personality cult centered around a man with a terrible personality, then so be it. If that tool is a bunch of cranks and kooks who want to send your kid to school with kids infected with measles, then so be it.

That’s a terrible way to run a country. Eventually, countries that run themselves that way stop being great entirely — there is only so much kakistocracy we can endure.

Update: Speaking of kakistocracy, I saw the following headline right after I published this post:

When I say Trump attracts the worst people, I really mean the worst.


Subscribe now

Share

1

I use the term loosely, given Navarro’s lack of understanding of basic economics.

2

Note that this is yet another Trump flip-flop; Trump long touted the efficacy of Covid vaccines, because of his own role in accelerating the development of those vaccines during the pandemic. Interestingly, this is a case in which Trump’s ideas followed those of his supporters instead of vice-versa. Had he remained in power after 2020, it seems unlikely his movement would have turned against the Trump Vaccine.

Read the whole story
miohtama
149 days ago
reply
Helsinki, Finland
Share this story
Delete

European lit primary activity drops to record low in May and June, Liquidnet report finds

1 Share

Lit primary activity settled at 30% of average daily principal in Europe in both May and June for the first time, Liquidnet’s latest liquidity landscape report has found, highlighting a need to source liquidity from outside of intraday continuous trading.

“As liquidity shifts away from the continuous sessions, transacting in block and in size can help mitigate market impact and avoid potential volatility in the lit sessions,” said Liquidnet.

Lit volumes saw record lows in Q2, accounting for 41% of overall activity in June – in stark contrast to the 50-60% average between 2018 and 2021, whilst dark activity also declined in Q2, falling from $4.6 billion in Q1 to $3.83 billion.

However, overall the dark level was comparatively high compared to results from the past three years, which have ranged from 9-11%. The activity peaked at 11% in April, whilst the large-in-scale segment peaked in June at 39% of the dark market.

According to Liquidnet, dark volumes are set to remain static, due to the ability to execute in thin liquidity, rather than the price improvement in the dark.

Block trading has been a principal consideration during the regulatory debate in Europe and the UK post-Brexit. For blocks in European SMEs, investment has been limited thus far – in part due to a lack of research – exacerbated to a degree by unbundling rules brought in under Mifid II. 

Speaking in April, Charles-Henri Berbain, managing director at TP ICAP Midcap, said: “The lack of research limits investment in SMEs but for many asset managers it is first of all the lack of secondary market liquidity that is the real problem. There is a need to improve secondary market liquidity as a means of boosting investment in SMEs.”

The report emphasised how long timeframes and price sensitivity contribute to the difficulties when executing a small-cap on the lit market, with one medium-sized UK asset manager asserting that daily liquidity is simply not suitable.

The report also highlighted how trading volumes on both the dark and lit markets are becoming more and more reactionary to geopolitical issues, with central banks recently having warned of an increase in monetary tightening in the face of global instability as the threat of recession continues to loom.

However, “interest in ChatGPT and AI drove significant capital flows into the technology and semiconductor sectors, providing some respite for investors,” said Liquidnet.

Going forward, the report confirmed that proactive manufacture of liquidity is set to grow in importance and added that in the face of increasingly challenging markets, the technological advancements must focus on tools that help traders generate liquidity – not just access it.

Closing auction activity saw a notable increase in the quarter, reaching 28% of overall lit activity in May, and 30% in June. The shift in volume towards the close comes as activity in the continuous session fell: “Liquidity in continuous markets remained light, continuing to challenge participants’ ability to execute in volatile markets.” 

Periodic auctions maintained a 6% lit market share over the three months, and it remains to be seen if there will come a continued acceleration in auction activity, said the report, which warned: “If they underweight the auction, market participants risk missing out on such an important segment of price discovery.”

Additionally, the continuation of this trend and volumes continuing to shift towards auctions, and away from the continuous sessions, could result in an increased benefit of transacting in the large-in-scale market, claimed the report.

Elsewhere, Liquidnet reported that large caps stocks continued to dominate SI activity, with small and medium enterprise activity in the space “significantly and consistently” lower than mid- and large- cap names.

In June, SIs represented: 16% of total small cap activity, 23% among mid-caps, 26% among large cap. 

These percentages underscored challenges faced by traders in sourcing liquidity in already difficult to trade SME names.

Overall, SI volumes rose in this quarter to higher than the average over the past few years, reaching an average of around 24% of overall activity. In June it reached 25%, the highest since early 2019.

“In terms of total principal, SI activity in the second quarter remained in line with previous second quarters, indicating it is capturing market share at the expense of other segments like the lit continuous sessions,” said Liquidnet.

The post European lit primary activity drops to record low in May and June, Liquidnet report finds appeared first on The TRADE.

Read the whole story
miohtama
620 days ago
reply
Helsinki, Finland
Share this story
Delete

Chainlink historical price for AggregatorV3Interface

1 Share

Similar to this question How to get all the historical data from chainlink price feeds? I would like to retrieve the historical data of a particular price feed to be used off-chain for a large number of consecutive updates. However, according to the docs it seems like the round IDs are no longer incremental (i.e. you can't just call getRoundData(latest_round-_step) for steps in a certain range).

Is the solution to simply do a linear search backwards and try all entries smaller than the latest roundID, or is there a recursive way to achieve this right now (is the previous round ID saved somewhere)?

Read the whole story
miohtama
716 days ago
reply
Helsinki, Finland
Share this story
Delete
Next Page of Stories