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.
On 6 May, Instagram users in India had stories related to COVID-19 relief efforts, volunteer-driven initiatives and political critique taken down without notice or explanation. These pieces of content disappeared from Archives and Highlights in user profiles as well. Users reported that private chats pertaining to COVID-19-related efforts, activism, and political critique had also started disappearing. In a few instances, volunteer-driven COVID-19 relief pages were taken down entirely.
On 7 May, Instagram issued a public statement noting that this is a “widespread global technical issue not related to any topic” and later that day claimed to have “fixed the issue”. In a subsequent public statement from 8 May, the company noted that the problem arose because its “automated systems launched an update intended to better detect whether reshared media in a story was still available” and their systems ended up “treat[ing] all reshared media posted [before the rollout of this automated system] as missing”.
It has never been easy to find a balance between the needs of the public to be safe and the needs of a private individual to preserve their own privacy. But today, in a world where surveillance capitalism has made each of us ever-more-precisely identifiable and trackable, the need for privacy also provides a necessary penumbra of invisibility, the sort of invisibility a woman needs when she’s reaching out to a friend so she can flee her abusive partner. Or the connection to peers a gay teenager needs when they’re feeling very alone and threatened. Or a whistle-blower, gathering their courage to go public.
Privacy isn’t just important: it’s fundamental. Without privacy, we cannot be truly ourselves. All of the fearmongering of all of the policing agencies in the world won’t change that basic truth.