On February 9, 2021, a U.S. Customs and Border Protection (CBP) helicopter encountered what was described as a “highly modified drone” hovering in controlled airspace above Tucson, Arizona. A Tucson Police Department (TPD) helicopter was called in to aid the CBP aircraft in its pursuit of the small aircraft, but the drone, or whatever it was, was able to outrun both of them as it flew through military airspace, deftly maneuvered around both helicopters with bizarre agility, and ultimately disappeared into cloud cover above the altitude the helicopters could safely fly. A police report previously obtained by The War Zone showed that the TPD crew described the drone as “very sophisticated/specialized” and “able to perform like no other UAS” they had previously encountered. Now we have the actual audio from the CBP helicopter’s interactions with air traffic controllers in Tucson during the incident, as well as audio from an after-action call between the TPD crew and the air traffic control tower.
From the conversations heard on the recordings, which The War Zone obtained from the Federal Aviation Administration (FAA) through the Freedom of Information Act (FOIA), it’s clear that all parties involved with the incident were baffled by the drone’s performance, noting that it appeared “super sophisticated” and possibly satellite-controlled. If you haven’t yet caught up on the Tucson mystery drone saga, be sure to read our most recent reporting.
When learning Rust, understanding the difference between statically and dynamically sized types seems critical. There are some good discussions out there already (e.g. here and here). Whilst these explain the mechanics, they didn’t tell me why its done like this in Rust. The articles made sense, but I was still confused! Eventually I had my “eureka” moment, so I figured I should share that.
The way npm audit works is broken. Its rollout as a default after every npm install was rushed, inconsiderate, and inadequate for the front-end tooling.
Have you heard the story about the boy who cried wolf? Spoiler alert: the wolf eats the sheep. If we don’t want our sheep to be eaten, we need better tools.
As of today, npm audit is a stain on the entire npm ecosystem. The best time to fix it was before rolling it out as a default. The next best time to fix it is now.
This blog post has two goals:
Giving you a feeling for how Temporal works
Helping you get started with it
However, it is not an exhaustive documentation: For many details, you will have to consult the (excellent) documentation for Temporal.
Disasters evoke a search for who to blame. Mishandled disasters make that search vital for anyone whose actions or inactions may have amplified the catastrophe’s damage. As the official United States COVID death toll reaches 600,000, those two dynamics have revitalized a claim first made early in the pandemic: that SARS-CoV-2, the virus that causes the disease, was released, possibly as an engineered organism, in a lab accident at the Wuhan Institute of Virology.
This “lab-leak” hypothesis was first promoted in 2020, often as a deflection of criticism of Trump’s and other Republicans’ failures in the face of the American epidemic. If Chinese scientists had committed the original sin that sparked that catastrophe, the argument seemed to go, surely any subsequent errors would be irrelevant.
American statesman John Adams, who served as president from 1797 to 1801, famously said, “There are two ways to conquer and enslave a country: One is by the sword; the other is by debt.” China, choosing the second path, has embraced colonial-era practices and rapidly emerged as the world’s biggest official creditor.
With its international loans surpassing more than 5 percent of the global GDP, China has now eclipsed traditional lenders, including the World Bank, the International Monetary Fund and all the creditor nations of the Organization for Economic Cooperation and Development (OECD) put together. By extending huge loans with strings attached to financially vulnerable states, it has not only boosted its leverage over them but also ensnared some in sovereignty-eroding debt traps.
Boredom, a common experience typically associated with low arousal, is not well understood.
According to new research by Moynihan and colleagues, boredom might serve as a meaning and existential threat, thus encouraging escape into behaviors requiring little self-awareness (e.g., drinking, computer gaming, sexual compulsions, overeating). This research, published in the latest issue of the European Review of Social Psychology, is summarized below.
The emerging norm for web development is to build a React single-page application, with server rendering. The two key elements of this architecture are something like:
The backend is an API that that application makes requests against.
This idea has really swept the internet. It started with a few major popular websites and has crept into corners like marketing sites and blogs.
I’m increasingly skeptical of it.
But tools and processes are absolutely not the only thing. Even if I have amazing tools and QA systems and the best deploy tools and well-testing code, I’m still going to make mistakes sometimes. And what happens when I make a mistake is really critical.
Etsy and Google and Stripe (where I work) all have blameless postmortems. This means that if you make a change and that change breaks something, people talk about what happened by focusing on the change and the facts, not on blaming you. (“what about that change caused a problem?” instead of “how did Julia break it?”)
I also realized that this goes much further than programming, and Marc linked me to this amazing site about restorative justice, which you should also go read.
So if you blame people for breaking things, they’ll be more scared to make changes in the future, and you’ll end up with worse programs. Huh.
IN JANUARY OF 2021, A New Jersey teenager brought a piece of an antique Fiestaware plate to a high-school science class. The student had received a Geiger counter, an instrument used to measure radiation, for Christmas, and wanted to do an experiment. When the plate registered as radioactive, someone at the school panicked and called in a hazmat team. The entire school was evacuated, and those in the nuclear science field were aghast.
But thousands of similarly radioactive plates and cups can be found in antique stores, thrift shops, and possibly your own kitchen cabinets. Radioactive antiques have a long history, as well as a certain glow that is highly desired by some collectors today.
Over the past several weeks I have been attempting to reimplement the API of an existing python library as a wrapper for an equivalent library in Rust.
tl;dr: this ended up being much harder than I expected it to be, partly because of important differences in the behaviour of the two languages, and partly because of the (self-imposed) obligation to match an existing (idiomatic) python API.